From 32ad26e4682a1492b94aa75f5cb97b6ea7524d6d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 10:28:40 +0100 Subject: [PATCH 001/456] Delete estimated GNSS position value --- data/sample/initialize_files/sample_gnss.ini | 38 -------------- src/environment/global/gnss_satellites.cpp | 49 ++++--------------- src/environment/global/gnss_satellites.hpp | 31 ++++-------- .../global/initialize_gnss_satellites.cpp | 33 +------------ 4 files changed, 20 insertions(+), 131 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 12eba4b07..66474bfc4 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -27,41 +27,3 @@ true_clock_first = igs21610.clk_30s true_clock_last = igs21613.clk_30s // The method is fixed with Lagrange interpolation, 3 (quadratic) recommended true_clock_interpolation_number = 3 - -// -// Estimated value -// -// choose from IGS, IGR, IGU, -// CODE_Final, CODE_Rapid -// JAXA_Final, JAXA_Rapid, JAXA_Ultra_rapid, madocaRT, -// QZSS_Final, QZSS_Rapid, QZSS_Ultra_rapid -estimate_position_file_sort = madocaRT - -// As small as possible within the range. -estimate_position_first = madoca21610.sp3 -estimate_position_last = madoca21613.sp3 - -// choose from 0: Lagrange, 1: Trigonometric : temporarily, only Trigonometric is valid, Lagrange is not yet implemented. -estimate_position_interpolation_method = 1 - -// if you chose Trigonometric as interpolation method, you must choose odds number here. -estimate_position_interpolation_number = 9 - -// choose from IGS, IGR, IGU, -// CODE_Final, CODE_Rapid -// JAXA_Final, JAXA_Rapid, JAXA_Ultra_rapid, madocaRT, -// QZSS_Final, QZSS_Rapid, QZSS_Ultra_rapid -estimate_clock_file_sort = madocaRT - -// choose frome .sp3, .clk_30s or .clk -estimate_clock_file_extension = .sp3 - -// As small as possible within the range. -estimate_clock_first = madoca21610.sp3 -estimate_clock_last = madoca21613.sp3 - -// The method is fixed with Lagrange interpolation, 3 (quadratic) recommended -estimate_clock_interpolation_number = 3 - -// when you use Ultra Rapid Product, you can choose "observe" or "predict" -estimate_ur_observe_or_predict = observe diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 8f6eef65c..9cb78995f 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -866,25 +866,11 @@ GnssSatellites::GnssSatellites(bool is_calc_enabled) bool GnssSatellites::IsCalcEnabled() const { return is_calc_enabled_; } void GnssSatellites::Initialize(vector>& true_position_file, int true_position_interpolation_method, - int true_position_interpolation_number, UltraRapidMode true_position_ur_flag, - - vector>& true_clock_file, string true_clock_file_extension, int true_clock_interpolation_number, - UltraRapidMode true_clock_ur_flag, - - vector>& estimate_position_file, int estimate_position_interpolation_method, - int estimate_position_interpolation_number, UltraRapidMode estimate_position_ur_flag, - - vector>& estimate_clock_file, string estimate_clock_file_extension, - int estimate_clock_interpolation_number, UltraRapidMode estimate_clock_ur_flag) { + int true_position_interpolation_number, UltraRapidMode true_position_ur_flag, vector>& true_clock_file, + string true_clock_file_extension, int true_clock_interpolation_number, UltraRapidMode true_clock_ur_flag) { true_info_.Initialize(true_position_file, true_position_interpolation_method, true_position_interpolation_number, true_position_ur_flag, true_clock_file, true_clock_file_extension, true_clock_interpolation_number, true_clock_ur_flag); - - estimate_info_.Initialize(estimate_position_file, estimate_position_interpolation_method, estimate_position_interpolation_number, - estimate_position_ur_flag, - - estimate_clock_file, estimate_clock_file_extension, estimate_clock_interpolation_number, estimate_clock_ur_flag); - return; } @@ -902,7 +888,6 @@ void GnssSatellites::SetUp(const SimulationTime* simulation_time) { double unix_time = (double)mktime(start_tm) + start_sec - floor(start_sec); std::free(start_tm); true_info_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); - estimate_info_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); start_unix_time_ = unix_time; @@ -915,7 +900,6 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { double elapsed_sec = simulation_time->GetElapsedTime_s(); true_info_.Update(elapsed_sec + start_unix_time_); - estimate_info_.Update(elapsed_sec + start_unix_time_); #ifdef GNSS_SATELLITES_DEBUG_OUTPUT DebugOutput(); @@ -924,16 +908,16 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { return; } -int GnssSatellites::GetNumberOfSatellites() const { return estimate_info_.GetNumberOfSatellites(); } +int GnssSatellites::GetNumberOfSatellites() const { return true_info_.GetNumberOfSatellites(); } -string GnssSatellites::GetIdFromIndex(int index) const { return estimate_info_.GetGnssSatPos().GetIdFromIndex(index); } +string GnssSatellites::GetIdFromIndex(int index) const { return true_info_.GetGnssSatPos().GetIdFromIndex(index); } -int GnssSatellites::GetIndexFromId(string sat_num) const { return estimate_info_.GetGnssSatPos().GetIndexFromId(sat_num); } +int GnssSatellites::GetIndexFromId(string sat_num) const { return true_info_.GetGnssSatPos().GetIndexFromId(sat_num); } bool GnssSatellites::GetWhetherValid(int gnss_satellite_id) const { if (gnss_satellite_id >= GetNumberOfSatellites()) return false; - if (true_info_.GetWhetherValid(gnss_satellite_id) && estimate_info_.GetWhetherValid(gnss_satellite_id)) + if (true_info_.GetWhetherValid(gnss_satellite_id) && true_info_.GetWhetherValid(gnss_satellite_id)) return true; else return false; @@ -946,7 +930,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const int gnss_satelli return res; } - return estimate_info_.GetSatellitePositionEcef(gnss_satellite_id); + return true_info_.GetSatellitePositionEcef(gnss_satellite_id); } libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellite_id) const { @@ -956,7 +940,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellit return res; } - return estimate_info_.GetSatellitePositionEci(gnss_satellite_id); + return true_info_.GetSatellitePositionEci(gnss_satellite_id); } double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { @@ -964,7 +948,7 @@ double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { return 0.0; } - return estimate_info_.GetSatelliteClock(gnss_satellite_id); + return true_info_.GetSatelliteClock(gnss_satellite_id); } double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, @@ -1142,24 +1126,9 @@ void GnssSatellites::DebugOutput() { } } - if (estimate_info_.GetWhetherValid(gnss_satellite_id)) { - auto estimation_pos = estimate_info_.GetSatellitePositionEcef(gnss_satellite_id); - for (int i = 0; i < 3; ++i) { - ofs_estimation << fixed << setprecision(10) << estimation_pos[i] << ","; - } - auto estimation_clock = estimate_info_.GetSatelliteClock(gnss_satellite_id); - ofs_estimation << estimation_clock << ","; - } else { - for (int i = 0; i < 4; ++i) { - ofs_estimation << 0.0 << ","; - } - } - if (GetWhetherValid(gnss_satellite_id)) { auto true_pos = true_info_.GetSatellitePositionEcef(gnss_satellite_id); auto true_clock = true_info_.GetSatelliteClock(gnss_satellite_id); - auto estimation_pos = estimate_info_.GetSatellitePositionEcef(gnss_satellite_id); - auto estimation_clock = estimate_info_.GetSatelliteClock(gnss_satellite_id); for (int i = 0; i < 3; ++i) { ofs_sa << fixed << setprecision(10) << estimation_pos[i] - true_pos[i] << ","; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 2777150e9..c024776db 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -333,15 +333,12 @@ class GnssSatellites : public ILoggable { /** * @fn Initialize * @brief Initialize function - * @note Parameters are defined in GNSSSat_Info for true and estimated information + * @note Parameters are defined in GNSSSat_Info for true information */ void Initialize(std::vector>& true_position_file, int true_position_interpolation_method, int true_position_interpolation_number, UltraRapidMode true_position_ur_flag, std::vector>& true_clock_file, std::string true_clock_file_extension, int true_clock_interpolation_number, - UltraRapidMode true_clock_ur_flag, std::vector>& estimate_position_file, - int estimate_position_interpolation_method, int estimate_position_interpolation_number, UltraRapidMode estimate_position_ur_flag, - std::vector>& estimate_clock_file, std::string estimate_clock_file_extension, - int estimate_clock_interpolation_number, UltraRapidMode estimate_clock_ur_flag); + UltraRapidMode true_clock_ur_flag); /** * @fn IsCalcEnabled * @brief Return calculated enabled flag @@ -350,13 +347,13 @@ class GnssSatellites : public ILoggable { /** * @fn SetUp - * @brief Setup both true and estimated GNSS satellite information + * @brief Setup both true GNSS satellite information * @param [in] simulation_time: Simulation time information */ void SetUp(const SimulationTime* simulation_time); /** * @fn Update - * @brief Update both true and estimated GNSS satellite information + * @brief Update both true GNSS satellite information * @param [in] simulation_time: Simulation time information */ void Update(const SimulationTime* simulation_time); @@ -377,13 +374,13 @@ class GnssSatellites : public ILoggable { std::string GetIdFromIndex(int index) const; /** * @fn GetNumberOfSatellites - * @brief Return total number of GNSS satellite for estimated information + * @brief Return total number of GNSS satellite for true information * @note TODO: Is this function really needed? This is just called other accessible function. */ int GetNumberOfSatellites() const; /** * @fn GetWhetherValid - * @brief Return true the GNSS satellite information is available for both position and clock for both true and estimated value + * @brief Return true the GNSS satellite information is available for both position and clock for both true value * @param [in] gnss_satellite_id: Index of GNSS satellite */ bool GetWhetherValid(int gnss_satellite_id) const; @@ -397,11 +394,6 @@ class GnssSatellites : public ILoggable { * @brief Return GNSS satellite information class for true value system */ inline const GnssSatelliteInformation& GetTrueInformation() const { return true_info_; } - /** - * @fn GetEstimationInformation - * @brief Return GNSS satellite information class for estimated value system - */ - inline const GnssSatelliteInformation& GetEstimationInformation() const { return estimate_info_; } /** * @fn GetSatellitePositionEcef @@ -503,15 +495,12 @@ class GnssSatellites : public ILoggable { double AddIonosphericDelay(const int gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, const GnssFrameDefinition flag) const; - bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation - GnssSatelliteInformation true_info_; //!< True information of GNSS satellites - GnssSatelliteInformation estimate_info_; //!< Estimated information of GNSS satellites TODO: should be move out from GlobalEnvironment - double start_unix_time_; //!< Start unix time + bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation + GnssSatelliteInformation true_info_; //!< True information of GNSS satellites + double start_unix_time_; //!< Start unix time #ifdef GNSS_SATELLITES_DEBUG_OUTPUT - ofstream ofs_true; //!< Debug output for true value - ofstream ofs_estimation; //!< Debug output for estimated value - ofstream ofs_sa; //!< Debug output for difference between true and estimated value + ofstream ofs_true; //!< Debug output for true value #endif }; diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index 23e98467c..f44995f53 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -318,40 +318,9 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { } int true_clock_interpolation_number = ini_file.ReadInt(section, "true_clock_interpolation_number"); - // Estimated position - std::vector> estimate_position_file; - UltraRapidMode estimate_position_ur_flag = kNotUse; - ReadSp3Files(directory_path, ini_file.ReadString(section, "estimate_position_file_sort"), ini_file.ReadString(section, "estimate_position_first"), - ini_file.ReadString(section, "estimate_position_last"), estimate_position_file, estimate_position_ur_flag); - int estimate_position_interpolation_method = ini_file.ReadInt(section, "estimate_position_interpolation_method"); - int estimate_position_interpolation_number = ini_file.ReadInt(section, "estimate_position_interpolation_number"); - if (estimate_position_ur_flag != kNotUse) { - std::string ur_flag = ini_file.ReadString(section, "estimate_ur_observe_or_predict"); - if (ur_flag.find("observe") != std::string::npos) { - estimate_position_ur_flag = (UltraRapidMode)((int)kObserve1 + (ur_flag.back() - '1')); - } else { - estimate_position_ur_flag = (UltraRapidMode)((int)kPredict1 + (ur_flag.back() - '1')); - } - } - - // Estimated clock - std::vector> estimate_clock_file; - UltraRapidMode estimate_clock_ur_flag = estimate_position_ur_flag; - std::string estimate_clock_file_extension = ini_file.ReadString(section, "estimate_clock_file_extension"); - if (estimate_clock_file_extension == ".sp3") { - ReadSp3Files(directory_path, ini_file.ReadString(section, "estimate_clock_file_sort"), ini_file.ReadString(section, "estimate_clock_first"), - ini_file.ReadString(section, "estimate_clock_last"), estimate_clock_file, estimate_clock_ur_flag); - } else { - ReadClockFiles(directory_path, estimate_clock_file_extension, ini_file.ReadString(section, "estimate_clock_file_sort"), - ini_file.ReadString(section, "estimate_clock_first"), ini_file.ReadString(section, "estimate_clock_last"), estimate_clock_file); - } - int estimate_clock_interpolation_number = ini_file.ReadInt(section, "estimate_clock_interpolation_number"); - // Initialize GNSS satellites gnss_satellites->Initialize(true_position_file, true_position_interpolation_method, true_position_interpolation_number, true_position_ur_flag, - true_clock_file, true_clock_file_extension, true_clock_interpolation_number, true_clock_ur_flag, estimate_position_file, - estimate_position_interpolation_method, estimate_position_interpolation_number, estimate_position_ur_flag, - estimate_clock_file, estimate_clock_file_extension, estimate_clock_interpolation_number, estimate_clock_ur_flag); + true_clock_file, true_clock_file_extension, true_clock_interpolation_number, true_clock_ur_flag); return gnss_satellites; } From 8a34119364757e339fb2a67c8492de7fd7375a2b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 10:37:09 +0100 Subject: [PATCH 002/456] Delete debug output --- src/environment/global/gnss_satellites.cpp | 50 +--------------------- src/environment/global/gnss_satellites.hpp | 12 ------ 2 files changed, 1 insertion(+), 61 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 9cb78995f..cc7a2350d 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -847,13 +847,7 @@ libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEci(int gnss_sate double GnssSatelliteInformation::GetSatelliteClock(int gnss_satellite_id) const { return clock_.GetSatClock(gnss_satellite_id); } // GnssSatellites -GnssSatellites::GnssSatellites(bool is_calc_enabled) -#ifdef GNSS_SATELLITES_DEBUG_OUTPUT - : ofs_true("true.csv"), - ofs_estimation("estimation.csv"), - ofs_sa("sa.csv") -#endif -{ +GnssSatellites::GnssSatellites(bool is_calc_enabled) { // TODO: Add log enable flag in ini file is_calc_enabled_ = is_calc_enabled; if (is_calc_enabled_) { @@ -901,10 +895,6 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { true_info_.Update(elapsed_sec + start_unix_time_); -#ifdef GNSS_SATELLITES_DEBUG_OUTPUT - DebugOutput(); -#endif - return; } @@ -1109,41 +1099,3 @@ std::string GnssSatellites::GetLogValue() const { return str_tmp; } - -void GnssSatellites::DebugOutput() { -#ifdef GNSS_SATELLITES_DEBUG_OUTPUT - for (int gnss_satellite_id = 0; gnss_satellite_id < gps_sat_num_; ++gnss_satellite_id) { - if (true_info_.GetWhetherValid(gnss_satellite_id)) { - auto true_pos = true_info_.GetSatellitePositionEcef(gnss_satellite_id); - for (int i = 0; i < 3; ++i) { - ofs_true << fixed << setprecision(10) << true_pos[i] << ","; - } - auto true_clock = true_info_.GetSatelliteClock(gnss_satellite_id); - ofs_true << true_clock << ","; - } else { - for (int i = 0; i < 4; ++i) { - ofs_true << 0.0 << ","; - } - } - - if (GetWhetherValid(gnss_satellite_id)) { - auto true_pos = true_info_.GetSatellitePositionEcef(gnss_satellite_id); - auto true_clock = true_info_.GetSatelliteClock(gnss_satellite_id); - - for (int i = 0; i < 3; ++i) { - ofs_sa << fixed << setprecision(10) << estimation_pos[i] - true_pos[i] << ","; - } - ofs_sa << fixed << setprecision(10) << estimation_clock - true_clock << ","; - } else { - for (int i = 0; i < 4; ++i) { - ofs_sa << 0.0 << ","; - } - } - } - - ofs_true << endl; - ofs_estimation << endl; - ofs_sa << endl; -#endif - return; -} diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index c024776db..49bdec474 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -24,8 +24,6 @@ enum class GnssFrameDefinition { kEci = 1 //!< Use ECI frame for GNSS satellite position frame in Add_IonosphericDelay }; -// #define GNSS_SATELLITES_DEBUG_OUTPUT //!< For debug output, uncomment this - /** * @enum UltraRapidMode * @brief Ultra Rapid mode @@ -469,12 +467,6 @@ class GnssSatellites : public ILoggable { */ std::string GetLogValue() const override; - /** - * @fn DebugOutput - * @brief Debug output - */ - void DebugOutput(void); - private: /** * @fn TrigonometricInterpolation @@ -498,10 +490,6 @@ class GnssSatellites : public ILoggable { bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation GnssSatelliteInformation true_info_; //!< True information of GNSS satellites double start_unix_time_; //!< Start unix time - -#ifdef GNSS_SATELLITES_DEBUG_OUTPUT - ofstream ofs_true; //!< Debug output for true value -#endif }; #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ From 3c128caf958fff83ba3a164bb6d0ef235ef17401 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 10:57:11 +0100 Subject: [PATCH 003/456] Remove true prefix --- data/sample/initialize_files/sample_gnss.ini | 20 +++---- src/environment/global/gnss_satellites.cpp | 53 +++++++++---------- src/environment/global/gnss_satellites.hpp | 25 +++++---- .../global/initialize_gnss_satellites.cpp | 40 +++++++------- 4 files changed, 68 insertions(+), 70 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 66474bfc4..8072899d4 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -3,27 +3,27 @@ directory_path = EXT_LIB_DIR_FROM_EXE/sp3/ calculation = DISABLE // Choose from IGS, CODE_Final, JAXA_Final, QZSS_Final -true_position_file_sort = IGS +position_file_sort = IGS // As small as possible within the range. -true_position_first = igs21610.sp3 -true_position_last = igs21613.sp3 +position_first = igs21610.sp3 +position_last = igs21613.sp3 // Choose from 0: Lagrange, 1: Trigonometric : temporarily, only Trigonometric is valid, Lagrange is not yet implemented. -true_position_interpolation_method = 1 +position_interpolation_method = 1 // If you chose Trigonometric as interpolation method, you must choose odds number here. -true_position_interpolation_number = 9 +position_interpolation_number = 9 // Choose frome .sp3, .clk_30s or .clk -true_clock_file_extension = .clk_30s +clock_file_extension = .clk_30s // Choose from IGS, CODE_Final, JAXA_Final, QZSS_Final // If you choose clk_30s, should choose the one equivalent to final, if you choose clk should choose the one equivalent to rapid. -true_clock_file_sort = IGS +clock_file_sort = IGS // As small as possible within the range. -true_clock_first = igs21610.clk_30s -true_clock_last = igs21613.clk_30s +clock_first = igs21610.clk_30s +clock_last = igs21613.clk_30s // The method is fixed with Lagrange interpolation, 3 (quadratic) recommended -true_clock_interpolation_number = 3 +clock_interpolation_number = 3 diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index cc7a2350d..249d980e8 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -859,12 +859,11 @@ GnssSatellites::GnssSatellites(bool is_calc_enabled) { bool GnssSatellites::IsCalcEnabled() const { return is_calc_enabled_; } -void GnssSatellites::Initialize(vector>& true_position_file, int true_position_interpolation_method, - int true_position_interpolation_number, UltraRapidMode true_position_ur_flag, vector>& true_clock_file, - string true_clock_file_extension, int true_clock_interpolation_number, UltraRapidMode true_clock_ur_flag) { - true_info_.Initialize(true_position_file, true_position_interpolation_method, true_position_interpolation_number, true_position_ur_flag, - - true_clock_file, true_clock_file_extension, true_clock_interpolation_number, true_clock_ur_flag); +void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, + UltraRapidMode position_ur_flag, vector>& clock_file, string clock_file_extension, + int clock_interpolation_number, UltraRapidMode clock_ur_flag) { + gnss_info_.Initialize(position_file, position_interpolation_method, position_interpolation_number, position_ur_flag, clock_file, + clock_file_extension, clock_interpolation_number, clock_ur_flag); return; } @@ -881,7 +880,7 @@ void GnssSatellites::SetUp(const SimulationTime* simulation_time) { start_tm->tm_sec = (int)start_sec; double unix_time = (double)mktime(start_tm) + start_sec - floor(start_sec); std::free(start_tm); - true_info_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); + gnss_info_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); start_unix_time_ = unix_time; @@ -893,21 +892,21 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { double elapsed_sec = simulation_time->GetElapsedTime_s(); - true_info_.Update(elapsed_sec + start_unix_time_); + gnss_info_.Update(elapsed_sec + start_unix_time_); return; } -int GnssSatellites::GetNumberOfSatellites() const { return true_info_.GetNumberOfSatellites(); } +int GnssSatellites::GetNumberOfSatellites() const { return gnss_info_.GetNumberOfSatellites(); } -string GnssSatellites::GetIdFromIndex(int index) const { return true_info_.GetGnssSatPos().GetIdFromIndex(index); } +string GnssSatellites::GetIdFromIndex(int index) const { return gnss_info_.GetGnssSatPos().GetIdFromIndex(index); } -int GnssSatellites::GetIndexFromId(string sat_num) const { return true_info_.GetGnssSatPos().GetIndexFromId(sat_num); } +int GnssSatellites::GetIndexFromId(string sat_num) const { return gnss_info_.GetGnssSatPos().GetIndexFromId(sat_num); } bool GnssSatellites::GetWhetherValid(int gnss_satellite_id) const { if (gnss_satellite_id >= GetNumberOfSatellites()) return false; - if (true_info_.GetWhetherValid(gnss_satellite_id) && true_info_.GetWhetherValid(gnss_satellite_id)) + if (gnss_info_.GetWhetherValid(gnss_satellite_id) && gnss_info_.GetWhetherValid(gnss_satellite_id)) return true; else return false; @@ -920,7 +919,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const int gnss_satelli return res; } - return true_info_.GetSatellitePositionEcef(gnss_satellite_id); + return gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); } libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellite_id) const { @@ -930,7 +929,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellit return res; } - return true_info_.GetSatellitePositionEci(gnss_satellite_id); + return gnss_info_.GetSatellitePositionEci(gnss_satellite_id); } double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { @@ -938,7 +937,7 @@ double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { return 0.0; } - return true_info_.GetSatelliteClock(gnss_satellite_id); + return gnss_info_.GetSatelliteClock(gnss_satellite_id); } double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, @@ -947,14 +946,14 @@ double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Ve if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; - auto gnss_position = true_info_.GetSatellitePositionEcef(gnss_satellite_id); + auto gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += rec_clock - true_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEcef); @@ -969,14 +968,14 @@ double GnssSatellites::GetPseudoRangeECI(const int gnss_satellite_id, libra::Vec if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; - auto gnss_position = true_info_.GetSatellitePositionEci(gnss_satellite_id); + auto gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += rec_clock - true_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEci); @@ -992,14 +991,14 @@ pair GnssSatellites::GetCarrierPhaseECEF(const int gnss_satellit if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; - auto gnss_position = true_info_.GetSatellitePositionEcef(gnss_satellite_id); + auto gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += rec_clock - true_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEcef); @@ -1022,14 +1021,14 @@ pair GnssSatellites::GetCarrierPhaseECI(const int gnss_satellite if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; - auto gnss_position = true_info_.GetSatellitePositionEci(gnss_satellite_id); + auto gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += rec_clock - true_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEci); @@ -1062,9 +1061,9 @@ double GnssSatellites::AddIonosphericDelay(const int gnss_satellite_id, const li libra::Vector<3> gnss_position; if (flag == GnssFrameDefinition::kEcef) - gnss_position = true_info_.GetSatellitePositionEcef(gnss_satellite_id); + gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); else if (flag == GnssFrameDefinition::kEci) - gnss_position = true_info_.GetSatellitePositionEci(gnss_satellite_id); + gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); double angle_rad = CalcAngleTwoVectors_rad(rec_position, gnss_position - rec_position); const double default_delay = 20.0; //[m] default delay @@ -1093,8 +1092,8 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < gps_sat_num_; gps_index++) { - str_tmp += WriteVector(true_info_.GetSatellitePositionEcef((int)gps_index), 16); - str_tmp += WriteScalar(true_info_.GetSatelliteClock((int)gps_index)); + str_tmp += WriteVector(gnss_info_.GetSatellitePositionEcef((int)gps_index), 16); + str_tmp += WriteScalar(gnss_info_.GetSatelliteClock((int)gps_index)); } return str_tmp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 49bdec474..442c132a9 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -331,12 +331,11 @@ class GnssSatellites : public ILoggable { /** * @fn Initialize * @brief Initialize function - * @note Parameters are defined in GNSSSat_Info for true information + * @note Parameters are defined in GNSSSat_Info */ - void Initialize(std::vector>& true_position_file, int true_position_interpolation_method, - int true_position_interpolation_number, UltraRapidMode true_position_ur_flag, - std::vector>& true_clock_file, std::string true_clock_file_extension, int true_clock_interpolation_number, - UltraRapidMode true_clock_ur_flag); + void Initialize(std::vector>& position_file, int position_interpolation_method, int position_interpolation_number, + UltraRapidMode position_ur_flag, std::vector>& clock_file, std::string clock_file_extension, + int clock_interpolation_number, UltraRapidMode clock_ur_flag); /** * @fn IsCalcEnabled * @brief Return calculated enabled flag @@ -345,13 +344,13 @@ class GnssSatellites : public ILoggable { /** * @fn SetUp - * @brief Setup both true GNSS satellite information + * @brief Setup both GNSS satellite information * @param [in] simulation_time: Simulation time information */ void SetUp(const SimulationTime* simulation_time); /** * @fn Update - * @brief Update both true GNSS satellite information + * @brief Update both GNSS satellite information * @param [in] simulation_time: Simulation time information */ void Update(const SimulationTime* simulation_time); @@ -372,13 +371,13 @@ class GnssSatellites : public ILoggable { std::string GetIdFromIndex(int index) const; /** * @fn GetNumberOfSatellites - * @brief Return total number of GNSS satellite for true information + * @brief Return total number of GNSS satellite * @note TODO: Is this function really needed? This is just called other accessible function. */ int GetNumberOfSatellites() const; /** * @fn GetWhetherValid - * @brief Return true the GNSS satellite information is available for both position and clock for both true value + * @brief Return true the GNSS satellite information is available for both position and clock * @param [in] gnss_satellite_id: Index of GNSS satellite */ bool GetWhetherValid(int gnss_satellite_id) const; @@ -388,10 +387,10 @@ class GnssSatellites : public ILoggable { */ inline double GetStartUnixTime() const { return start_unix_time_; } /** - * @fn GetTrueInformation - * @brief Return GNSS satellite information class for true value system + * @fn GetInformation + * @brief Return GNSS satellite information class */ - inline const GnssSatelliteInformation& GetTrueInformation() const { return true_info_; } + inline const GnssSatelliteInformation& GetInformation() const { return gnss_info_; } /** * @fn GetSatellitePositionEcef @@ -488,7 +487,7 @@ class GnssSatellites : public ILoggable { const GnssFrameDefinition flag) const; bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation - GnssSatelliteInformation true_info_; //!< True information of GNSS satellites + GnssSatelliteInformation gnss_info_; //!< GNSS satellites information double start_unix_time_; //!< Start unix time }; diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index f44995f53..6bf8bc2ea 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -297,30 +297,30 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { std::string directory_path = ini_file.ReadString(section, "directory_path"); - // True position - std::vector> true_position_file; - UltraRapidMode true_position_ur_flag = kNotUse; - ReadSp3Files(directory_path, ini_file.ReadString(section, "true_position_file_sort"), ini_file.ReadString(section, "true_position_first"), - ini_file.ReadString(section, "true_position_last"), true_position_file, true_position_ur_flag); - int true_position_interpolation_method = ini_file.ReadInt(section, "true_position_interpolation_method"); - int true_position_interpolation_number = ini_file.ReadInt(section, "true_position_interpolation_number"); - - // True clock - std::vector> true_clock_file; - UltraRapidMode true_clock_ur_flag = kNotUse; - std::string true_clock_file_extension = ini_file.ReadString(section, "true_clock_file_extension"); - if (true_clock_file_extension == ".sp3") { - ReadSp3Files(directory_path, ini_file.ReadString(section, "true_clock_file_sort"), ini_file.ReadString(section, "true_clock_first"), - ini_file.ReadString(section, "true_clock_last"), true_clock_file, true_clock_ur_flag); + // Position + std::vector> position_file; + UltraRapidMode position_ur_flag = kNotUse; + ReadSp3Files(directory_path, ini_file.ReadString(section, "position_file_sort"), ini_file.ReadString(section, "position_first"), + ini_file.ReadString(section, "position_last"), position_file, position_ur_flag); + int position_interpolation_method = ini_file.ReadInt(section, "position_interpolation_method"); + int position_interpolation_number = ini_file.ReadInt(section, "position_interpolation_number"); + + // Clock + std::vector> clock_file; + UltraRapidMode clock_ur_flag = kNotUse; + std::string clock_file_extension = ini_file.ReadString(section, "clock_file_extension"); + if (clock_file_extension == ".sp3") { + ReadSp3Files(directory_path, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), + ini_file.ReadString(section, "clock_last"), clock_file, clock_ur_flag); } else { - ReadClockFiles(directory_path, true_clock_file_extension, ini_file.ReadString(section, "true_clock_file_sort"), - ini_file.ReadString(section, "true_clock_first"), ini_file.ReadString(section, "true_clock_last"), true_clock_file); + ReadClockFiles(directory_path, clock_file_extension, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), + ini_file.ReadString(section, "clock_last"), clock_file); } - int true_clock_interpolation_number = ini_file.ReadInt(section, "true_clock_interpolation_number"); + int clock_interpolation_number = ini_file.ReadInt(section, "clock_interpolation_number"); // Initialize GNSS satellites - gnss_satellites->Initialize(true_position_file, true_position_interpolation_method, true_position_interpolation_number, true_position_ur_flag, - true_clock_file, true_clock_file_extension, true_clock_interpolation_number, true_clock_ur_flag); + gnss_satellites->Initialize(position_file, position_interpolation_method, position_interpolation_number, position_ur_flag, clock_file, + clock_file_extension, clock_interpolation_number, clock_ur_flag); return gnss_satellites; } From 46631c04e8eb8b141e015e17858273dd8a7a97a1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 14:56:34 +0100 Subject: [PATCH 004/456] Replace GNSS satellite number/index convert function --- src/components/real/aocs/gnss_receiver.cpp | 5 +- src/environment/global/gnss_satellites.cpp | 175 +++++---------------- src/environment/global/gnss_satellites.hpp | 43 ----- 3 files changed, 43 insertions(+), 180 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index b1eb49110..c8085dcf5 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -6,6 +6,7 @@ #include "gnss_receiver.hpp" #include +#include #include #include #include @@ -112,11 +113,11 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: // initialize visible_satellite_number_ = 0; - int gnss_num = gnss_satellites_->GetNumberOfSatellites(); + int gnss_num = kTotalNumberOfGnssSatellite; for (int i = 0; i < gnss_num; i++) { // check if gnss ID is compatible with the receiver - std::string id_tmp = gnss_satellites_->GetIdFromIndex(i); + std::string id_tmp = ConvertIndexToSatelliteNumber(i); if (gnss_id_.find(id_tmp[0]) == std::string::npos) continue; // compute direction from sat to gnss in body-fixed frame diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 249d980e8..4d1b19778 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -13,28 +13,13 @@ #include "environment/global/physical_constants.hpp" #include "library/external/sgp4/sgp4ext.h" //for jday() #include "library/external/sgp4/sgp4unit.h" //for gstime() +#include "library/gnss/gnss_satellite_number.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/utilities/macros.hpp" const double nan99 = 999999.999999; -// GNSS satellite number definition -// TODO: Move to other library to define GNSS constants -const int gps_sat_num_ = 32; //!< Number of GPS satellites -const int glonass_sat_num_ = 26; //!< Number of GLONASS satellites -const int galileo_sat_num_ = 36; //!< Number of Galileo satellites -const int beidou_sat_num_ = 16; //!< Number of BeiDou satellites -const int qzss_sat_num_ = 7; //!< Number of QZSS satellites TODO: 5 at this moment? - -const int gps_index_bias_ = -1; //!< Bias of index for GPS satellites -const int glonass_index_bias_ = gps_index_bias_ + gps_sat_num_; //!< Bias of index for GLONASS satellites -const int galileo_index_bias_ = glonass_index_bias_ + glonass_sat_num_; //!< Bias of index for GALILEO satellites -const int beidou_index_bias_ = galileo_index_bias_ + galileo_sat_num_; //!< Bias of index for BeiDou satellites -const int qzss_index_bias_ = beidou_index_bias_ + beidou_sat_num_; //!< Bias of index for QZSS satellites - -const int all_sat_num_ = gps_sat_num_ + glonass_sat_num_ + galileo_sat_num_ + beidou_sat_num_ + qzss_sat_num_; //& time_vecto return res; } -int GnssSatelliteBase::GetIndexFromId(string sat_num) const { - if (sat_num.front() == 'P') { - switch (sat_num.at(1)) { - case 'G': - return stoi(sat_num.substr(2)) + gps_index_bias_; - case 'R': - return stoi(sat_num.substr(2)) + glonass_index_bias_; - case 'E': - return stoi(sat_num.substr(2)) + galileo_index_bias_; - case 'C': - return stoi(sat_num.substr(2)) + beidou_index_bias_; - case 'J': - return stoi(sat_num.substr(2)) + qzss_index_bias_; - default: - return INT32_MAX; - break; - } - } else { - switch (sat_num.front()) { - case 'G': - return stoi(sat_num.substr(1)) + gps_index_bias_; - case 'R': - return stoi(sat_num.substr(1)) + glonass_index_bias_; - case 'E': - return stoi(sat_num.substr(1)) + galileo_index_bias_; - case 'C': - return stoi(sat_num.substr(1)) + beidou_index_bias_; - case 'J': - return stoi(sat_num.substr(1)) + qzss_index_bias_; - default: - return INT32_MAX; - break; - } - } -} - -string GnssSatelliteBase::GetIdFromIndex(int index) const { - string res; - if (index < glonass_index_bias_) { - res = 'G'; - if (index - gps_index_bias_ < 10) res += '0'; - res += to_string(index - gps_index_bias_); - } else if (index < galileo_index_bias_) { - res = 'R'; - if (index - glonass_index_bias_ < 10) res += '0'; - res += to_string(index - glonass_index_bias_); - } else if (index < beidou_index_bias_) { - res = 'E'; - if (index - galileo_index_bias_ < 10) res += '0'; - res += to_string(index - galileo_index_bias_); - } else if (index < qzss_index_bias_) { - res = 'C'; - if (index - beidou_index_bias_ < 10) res += '0'; - res += to_string(index - beidou_index_bias_); - } else { - res = 'J'; - if (index - qzss_index_bias_ < 10) res += '0'; - res += to_string(index - qzss_index_bias_); - } - - return res; -} - -int GnssSatelliteBase::GetNumberOfSatellites() const { return all_sat_num_; } - bool GnssSatelliteBase::GetWhetherValid(int gnss_satellite_id) const { - if (gnss_satellite_id >= all_sat_num_) return false; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; return validate_.at(gnss_satellite_id); } @@ -235,9 +155,9 @@ pair GnssSatellitePosition::Initialize(vector>& f interpolation_number_ = interpolation_number; // Expansion - time_series_position_ecef_m_.resize(all_sat_num_); // first vector size is the satellite number - time_series_position_eci_m_.resize(all_sat_num_); - unix_time_list.resize(all_sat_num_); + time_series_position_ecef_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the satellite number + time_series_position_eci_m_.resize(kTotalNumberOfGnssSatellite); + unix_time_list.resize(kTotalNumberOfGnssSatellite); // for using min and max, set the sup & inf before double start_unix_time = 1e16; @@ -322,7 +242,7 @@ pair GnssSatellitePosition::Initialize(vector>& f iss >> tmp; s.push_back(tmp); } - int gnss_satellite_id = GetIndexFromId(s.front()); + int gnss_satellite_id = ConvertSatelliteNumberToIndex(s.front()); bool available_flag = true; libra::Vector<3> ecef_position_m(0.0); @@ -368,17 +288,17 @@ pair GnssSatellitePosition::Initialize(vector>& f void GnssSatellitePosition::SetUp(const double start_unix_time, const double step_width_s) { step_width_s_ = step_width_s; - position_ecef_m_.assign(all_sat_num_, libra::Vector<3>(0.0)); - position_eci_m_.assign(all_sat_num_, libra::Vector<3>(0.0)); - validate_.assign(all_sat_num_, false); + position_ecef_m_.assign(kTotalNumberOfGnssSatellite, libra::Vector<3>(0.0)); + position_eci_m_.assign(kTotalNumberOfGnssSatellite, libra::Vector<3>(0.0)); + validate_.assign(kTotalNumberOfGnssSatellite, false); - nearest_index_.resize(all_sat_num_); - time_period_list_.resize(all_sat_num_); + nearest_index_.resize(kTotalNumberOfGnssSatellite); + time_period_list_.resize(kTotalNumberOfGnssSatellite); - ecef_.resize(all_sat_num_); - eci_.resize(all_sat_num_); + ecef_.resize(kTotalNumberOfGnssSatellite); + eci_.resize(kTotalNumberOfGnssSatellite); - for (int gnss_satellite_id = 0; gnss_satellite_id < all_sat_num_; ++gnss_satellite_id) { + for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -439,7 +359,7 @@ void GnssSatellitePosition::SetUp(const double start_unix_time, const double ste } void GnssSatellitePosition::Update(const double current_unix_time) { - for (int gnss_satellite_id = 0; gnss_satellite_id < all_sat_num_; ++gnss_satellite_id) { + for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -506,12 +426,12 @@ void GnssSatellitePosition::Update(const double current_unix_time) { } libra::Vector<3> GnssSatellitePosition::GetPosition_ecef_m(int gnss_satellite_id) const { - if (gnss_satellite_id >= all_sat_num_) return libra::Vector<3>(0.0); + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return libra::Vector<3>(0.0); return position_ecef_m_.at(gnss_satellite_id); } libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(int gnss_satellite_id) const { - if (gnss_satellite_id >= all_sat_num_) return libra::Vector<3>(0.0); + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return libra::Vector<3>(0.0); return position_eci_m_.at(gnss_satellite_id); } @@ -519,8 +439,8 @@ libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(int gnss_satellite_id) void GnssSatelliteClock::Initialize(vector>& file, string file_extension, int interpolation_number, UltraRapidMode ur_flag, pair unix_time_period) { interpolation_number_ = interpolation_number; - time_series_clock_offset_m_.resize(all_sat_num_); // first vector size is the sat num - unix_time_list.resize(all_sat_num_); + time_series_clock_offset_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the sat num + unix_time_list.resize(kTotalNumberOfGnssSatellite); if (file_extension == ".sp3") { for (int page = 0; page < (int)file.size(); ++page) { @@ -589,7 +509,7 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex iss >> tmp; s.push_back(tmp); } - int gnss_satellite_id = GetIndexFromId(s.front()); + int gnss_satellite_id = ConvertSatelliteNumberToIndex(s.front()); double clock = stod(s.at(4)); if (std::abs(clock - nan99) < 1.0) continue; @@ -649,7 +569,7 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex std::free(time_tm); - int gnss_satellite_id = GetIndexFromId(s.at(1)); + int gnss_satellite_id = ConvertSatelliteNumberToIndex(s.at(1)); double clock_bias = stod(s.at(9)) * environment::speed_of_light_m_s; // [s] -> [m] if (start_unix_time - unix_time > 1e-4) continue; // for the numerical error if (end_unix_time - unix_time < 1e-4) break; @@ -671,15 +591,15 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex void GnssSatelliteClock::SetUp(const double start_unix_time, const double step_width_s) { step_width_s_ = step_width_s; - clock_offset_m_.resize(all_sat_num_); - validate_.assign(all_sat_num_, false); + clock_offset_m_.resize(kTotalNumberOfGnssSatellite); + validate_.assign(kTotalNumberOfGnssSatellite, false); - nearest_index_.resize(all_sat_num_); - time_period_list_.resize(all_sat_num_); + nearest_index_.resize(kTotalNumberOfGnssSatellite); + time_period_list_.resize(kTotalNumberOfGnssSatellite); - clock_bias_.resize(all_sat_num_); + clock_bias_.resize(kTotalNumberOfGnssSatellite); - for (int gnss_satellite_id = 0; gnss_satellite_id < all_sat_num_; ++gnss_satellite_id) { + for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -736,7 +656,7 @@ void GnssSatelliteClock::SetUp(const double start_unix_time, const double step_w } void GnssSatelliteClock::Update(const double current_unix_time) { - for (int gnss_satellite_id = 0; gnss_satellite_id < all_sat_num_; ++gnss_satellite_id) { + for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -799,7 +719,7 @@ void GnssSatelliteClock::Update(const double current_unix_time) { } double GnssSatelliteClock::GetSatClock(int gnss_satellite_id) const { - if (gnss_satellite_id >= all_sat_num_) return 0.0; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return 0.0; return clock_offset_m_.at(gnss_satellite_id); } @@ -822,15 +742,6 @@ void GnssSatelliteInformation::Update(const double current_unix_time) { clock_.Update(current_unix_time); } -int GnssSatelliteInformation::GetNumberOfSatellites() const { - if (position_.GetNumberOfSatellites() == clock_.GetNumberOfSatellites()) { - return position_.GetNumberOfSatellites(); - } else { - cout << "Num Of Gnss Satellites has something wrong" << endl; - return 0; - } -} - bool GnssSatelliteInformation::GetWhetherValid(int gnss_satellite_id) const { if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; return false; @@ -897,14 +808,8 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { return; } -int GnssSatellites::GetNumberOfSatellites() const { return gnss_info_.GetNumberOfSatellites(); } - -string GnssSatellites::GetIdFromIndex(int index) const { return gnss_info_.GetGnssSatPos().GetIdFromIndex(index); } - -int GnssSatellites::GetIndexFromId(string sat_num) const { return gnss_info_.GetGnssSatPos().GetIndexFromId(sat_num); } - bool GnssSatellites::GetWhetherValid(int gnss_satellite_id) const { - if (gnss_satellite_id >= GetNumberOfSatellites()) return false; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; if (gnss_info_.GetWhetherValid(gnss_satellite_id) && gnss_info_.GetWhetherValid(gnss_satellite_id)) return true; @@ -914,7 +819,7 @@ bool GnssSatellites::GetWhetherValid(int gnss_satellite_id) const { libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const int gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) { + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); return res; } @@ -924,7 +829,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const int gnss_satelli libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) { + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); return res; } @@ -933,7 +838,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellit } double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) { + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { return 0.0; } @@ -943,7 +848,7 @@ double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return 0.0; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; auto gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); @@ -965,7 +870,7 @@ double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Ve double GnssSatellites::GetPseudoRangeECI(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return 0.0; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; auto gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); @@ -988,7 +893,7 @@ double GnssSatellites::GetPseudoRangeECI(const int gnss_satellite_id, libra::Vec pair GnssSatellites::GetCarrierPhaseECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; auto gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); @@ -1018,7 +923,7 @@ pair GnssSatellites::GetCarrierPhaseECEF(const int gnss_satellit pair GnssSatellites::GetCarrierPhaseECI(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; auto gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); @@ -1049,7 +954,7 @@ pair GnssSatellites::GetCarrierPhaseECI(const int gnss_satellite double GnssSatellites::AddIonosphericDelay(const int gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, const GnssFrameDefinition flag) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= GetNumberOfSatellites() || !GetWhetherValid(gnss_satellite_id)) return 0.0; + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; const double earth_hemisphere_km = environment::earth_equatorial_radius_m / 1000.0; @@ -1080,7 +985,7 @@ std::string GnssSatellites::GetLogHeader() const { std::string str_tmp = ""; // TODO: Add log output for other navigation systems - for (size_t gps_index = 0; gps_index < gps_sat_num_; gps_index++) { + for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { str_tmp += WriteVector("GPS" + std::to_string(gps_index) + "_position", "ecef", "m", 3); str_tmp += WriteScalar("GPS" + std::to_string(gps_index) + "_clock_offset", "m"); } @@ -1091,7 +996,7 @@ std::string GnssSatellites::GetLogHeader() const { std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; - for (size_t gps_index = 0; gps_index < gps_sat_num_; gps_index++) { + for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { str_tmp += WriteVector(gnss_info_.GetSatellitePositionEcef((int)gps_index), 16); str_tmp += WriteScalar(gnss_info_.GetSatelliteClock((int)gps_index)); } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 442c132a9..19cef61f9 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -52,23 +52,6 @@ enum UltraRapidMode { */ class GnssSatelliteBase { public: - /** - * @fn GetIndexFromId - * @brief Calculate index of GNSS satellite defined in this class from GNSS satellite number defined in GNSS system - * @return Index of GNSS satellite defined in this class - */ - int GetIndexFromId(std::string sat_num) const; - /** - * @fn GetIdFromIndex - * @brief Calculate GNSS satellite number defined in GNSS system from index of GNSS satellite defined in this class - * @return GNSS satellite number defined in GNSS system - */ - std::string GetIdFromIndex(int index) const; - /** - * @fn GetNumberOfSatellites - * @brief Return total satellite number in all GNSS system (Constant value) - */ - int GetNumberOfSatellites() const; /** * @fn GetWhetherValid * @brief Return true the GNSS satellite information is available @@ -264,12 +247,6 @@ class GnssSatelliteInformation { */ void Update(const double current_unix_time); - /** - * @fn GetNumberOfSatellites - * @brief Get total number of GNSS satellite (constant value) - * @note TODO: Consider this function is really needed. - */ - int GetNumberOfSatellites() const; /** * @fn GetWhetherValid * @brief Return true the GNSS satellite information is available for both position and clock information @@ -355,26 +332,6 @@ class GnssSatellites : public ILoggable { */ void Update(const SimulationTime* simulation_time); - /** - * @fn GetIndexFromId - * @brief Calculate index of GNSS satellite defined in this class from GNSS satellite number defined in GNSS system - * @note TODO: Is this function really needed? This is just called other accessible function. - * @return Index of GNSS satellite defined in this class - */ - int GetIndexFromId(std::string sat_num) const; - /** - * @fn GetIdFromIndex - * @brief Calculate GNSS satellite number defined in GNSS system from index of GNSS satellite defined in this class - * @note TODO: Is this function really needed? This is just called other accessible function. - * @return GNSS satellite number defined in GNSS system - */ - std::string GetIdFromIndex(int index) const; - /** - * @fn GetNumberOfSatellites - * @brief Return total number of GNSS satellite - * @note TODO: Is this function really needed? This is just called other accessible function. - */ - int GetNumberOfSatellites() const; /** * @fn GetWhetherValid * @brief Return true the GNSS satellite information is available for both position and clock From 8dee5878bfa469e012515b4dcf59de7cd9fd56cc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:01:55 +0100 Subject: [PATCH 005/456] Fix int to size_t --- src/environment/global/gnss_satellites.cpp | 43 +++++++++++----------- src/environment/global/gnss_satellites.hpp | 34 ++++++++--------- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 4d1b19778..e4c75b945 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -142,7 +142,7 @@ double GnssSatelliteBase::LagrangeInterpolation(const vector& time_vecto return res; } -bool GnssSatelliteBase::GetWhetherValid(int gnss_satellite_id) const { +bool GnssSatelliteBase::GetWhetherValid(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; return validate_.at(gnss_satellite_id); } @@ -298,7 +298,7 @@ void GnssSatellitePosition::SetUp(const double start_unix_time, const double ste ecef_.resize(kTotalNumberOfGnssSatellite); eci_.resize(kTotalNumberOfGnssSatellite); - for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { + for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -359,7 +359,7 @@ void GnssSatellitePosition::SetUp(const double start_unix_time, const double ste } void GnssSatellitePosition::Update(const double current_unix_time) { - for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { + for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -425,12 +425,12 @@ void GnssSatellitePosition::Update(const double current_unix_time) { } } -libra::Vector<3> GnssSatellitePosition::GetPosition_ecef_m(int gnss_satellite_id) const { +libra::Vector<3> GnssSatellitePosition::GetPosition_ecef_m(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return libra::Vector<3>(0.0); return position_ecef_m_.at(gnss_satellite_id); } -libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(int gnss_satellite_id) const { +libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return libra::Vector<3>(0.0); return position_eci_m_.at(gnss_satellite_id); } @@ -599,7 +599,7 @@ void GnssSatelliteClock::SetUp(const double start_unix_time, const double step_w clock_bias_.resize(kTotalNumberOfGnssSatellite); - for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { + for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -656,7 +656,7 @@ void GnssSatelliteClock::SetUp(const double start_unix_time, const double step_w } void GnssSatelliteClock::Update(const double current_unix_time) { - for (int gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { + for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { if (unix_time_list.at(gnss_satellite_id).empty()) { validate_.at(gnss_satellite_id) = false; continue; @@ -718,7 +718,7 @@ void GnssSatelliteClock::Update(const double current_unix_time) { } } -double GnssSatelliteClock::GetSatClock(int gnss_satellite_id) const { +double GnssSatelliteClock::GetSatClock(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return 0.0; return clock_offset_m_.at(gnss_satellite_id); } @@ -742,20 +742,20 @@ void GnssSatelliteInformation::Update(const double current_unix_time) { clock_.Update(current_unix_time); } -bool GnssSatelliteInformation::GetWhetherValid(int gnss_satellite_id) const { +bool GnssSatelliteInformation::GetWhetherValid(const size_t gnss_satellite_id) const { if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; return false; } -libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEcef(int gnss_satellite_id) const { +libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEcef(const size_t gnss_satellite_id) const { return position_.GetPosition_ecef_m(gnss_satellite_id); } -libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEci(int gnss_satellite_id) const { +libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEci(const size_t gnss_satellite_id) const { return position_.GetPosition_eci_m(gnss_satellite_id); } -double GnssSatelliteInformation::GetSatelliteClock(int gnss_satellite_id) const { return clock_.GetSatClock(gnss_satellite_id); } +double GnssSatelliteInformation::GetSatelliteClock(const size_t gnss_satellite_id) const { return clock_.GetSatClock(gnss_satellite_id); } // GnssSatellites GnssSatellites::GnssSatellites(bool is_calc_enabled) { @@ -808,7 +808,7 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { return; } -bool GnssSatellites::GetWhetherValid(int gnss_satellite_id) const { +bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; if (gnss_info_.GetWhetherValid(gnss_satellite_id) && gnss_info_.GetWhetherValid(gnss_satellite_id)) @@ -817,7 +817,7 @@ bool GnssSatellites::GetWhetherValid(int gnss_satellite_id) const { return false; } -libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const int gnss_satellite_id) const { +libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); @@ -827,7 +827,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const int gnss_satelli return gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); } -libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellite_id) const { +libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); @@ -837,7 +837,7 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const int gnss_satellit return gnss_info_.GetSatellitePositionEci(gnss_satellite_id); } -double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { +double GnssSatellites::GetSatelliteClock(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { return 0.0; } @@ -845,7 +845,7 @@ double GnssSatellites::GetSatelliteClock(const int gnss_satellite_id) const { return gnss_info_.GetSatelliteClock(gnss_satellite_id); } -double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +double GnssSatellites::GetPseudoRangeECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -868,7 +868,8 @@ double GnssSatellites::GetPseudoRangeECEF(const int gnss_satellite_id, libra::Ve return res; } -double GnssSatellites::GetPseudoRangeECI(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { +double GnssSatellites::GetPseudoRangeECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -890,7 +891,7 @@ double GnssSatellites::GetPseudoRangeECI(const int gnss_satellite_id, libra::Vec return res; } -pair GnssSatellites::GetCarrierPhaseECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +pair GnssSatellites::GetCarrierPhaseECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -920,7 +921,7 @@ pair GnssSatellites::GetCarrierPhaseECEF(const int gnss_satellit return {cycle, bias}; } -pair GnssSatellites::GetCarrierPhaseECI(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +pair GnssSatellites::GetCarrierPhaseECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -951,7 +952,7 @@ pair GnssSatellites::GetCarrierPhaseECI(const int gnss_satellite } // for Ionospheric delay I[m] -double GnssSatellites::AddIonosphericDelay(const int gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, +double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, const GnssFrameDefinition flag) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 19cef61f9..78726018f 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -57,7 +57,7 @@ class GnssSatelliteBase { * @brief Return true the GNSS satellite information is available * @param [in] gnss_satellite_id: Index of GNSS satellite */ - bool GetWhetherValid(int gnss_satellite_id) const; + bool GetWhetherValid(const size_t gnss_satellite_id) const; protected: /** @@ -138,13 +138,13 @@ class GnssSatellitePosition : public GnssSatelliteBase { * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetPosition_ecef_m(int gnss_satellite_id) const; + libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const; /** * @fn GetPosition_eci_m * @brief Return GNSS satellite position vector in the ECI frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetPosition_eci_m(int gnss_satellite_id) const; + libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const; private: std::vector> position_ecef_m_; //!< List of GNSS satellite position at specific time in the ECEF frame [m] @@ -197,7 +197,7 @@ class GnssSatelliteClock : public GnssSatelliteBase { * @brief Return GNSS satellite clock in distance expression [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - double GetSatClock(int gnss_satellite_id) const; + double GetSatClock(const size_t gnss_satellite_id) const; private: std::vector clock_offset_m_; //!< List of clock bias of all GNSS satellites at specific time expressed in distance [m] @@ -252,25 +252,25 @@ class GnssSatelliteInformation { * @brief Return true the GNSS satellite information is available for both position and clock information * @param [in] gnss_satellite_id: Index of GNSS satellite */ - bool GetWhetherValid(int gnss_satellite_id) const; + bool GetWhetherValid(const size_t gnss_satellite_id) const; /** * @fn GetSatellitePositionEcef * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetSatellitePositionEcef(int gnss_satellite_id) const; + libra::Vector<3> GetSatellitePositionEcef(const size_t gnss_satellite_id) const; /** * @fn GetSatellitePositionEci * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetSatellitePositionEci(int gnss_satellite_id) const; + libra::Vector<3> GetSatellitePositionEci(const size_t gnss_satellite_id) const; /** * @fn GetSatelliteClock * @brief Return GNSS satellite clock in distance expression [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - double GetSatelliteClock(int gnss_satellite_id) const; + double GetSatelliteClock(const size_t gnss_satellite_id) const; /** * @fn GetGnssSatPos * @brief Return GNSS satellite position information class @@ -337,7 +337,7 @@ class GnssSatellites : public ILoggable { * @brief Return true the GNSS satellite information is available for both position and clock * @param [in] gnss_satellite_id: Index of GNSS satellite */ - bool GetWhetherValid(int gnss_satellite_id) const; + bool GetWhetherValid(const size_t gnss_satellite_id) const; /** * @fn GetStartUnixTime * @brief Return start unix time @@ -354,19 +354,19 @@ class GnssSatellites : public ILoggable { * @brief Return GNSS satellite position in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID */ - libra::Vector<3> GetSatellitePositionEcef(const int gnss_satellite_id) const; + libra::Vector<3> GetSatellitePositionEcef(const size_t gnss_satellite_id) const; /** * @fn GetSatellitePositionEci * @brief Return GNSS satellite position in the ECI frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID */ - libra::Vector<3> GetSatellitePositionEci(const int gnss_satellite_id) const; + libra::Vector<3> GetSatellitePositionEci(const size_t gnss_satellite_id) const; /** * @fn GetSatelliteClock * @brief Return GNSS satellite clock * @param [in] gnss_satellite_id: GNSS satellite ID */ - double GetSatelliteClock(const int gnss_satellite_id) const; + double GetSatelliteClock(const size_t gnss_satellite_id) const; /** * @fn GetPseudoRangeECEF @@ -377,7 +377,7 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; + double GetPseudoRangeECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** * @fn GetPseudoRangeECI * @brief Calculate pseudo range between receiver and a GNSS satellite @@ -387,7 +387,7 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeECI(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; + double GetPseudoRangeECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** * @fn GetCarrierPhaseECEF * @brief Calculate carrier phase observed by a receiver for a GNSS satellite @@ -397,7 +397,7 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseECEF(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + std::pair GetCarrierPhaseECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** * @fn GetCarrierPhaseECI @@ -408,7 +408,7 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseECI(const int gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + std::pair GetCarrierPhaseECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; // Override ILoggable @@ -440,7 +440,7 @@ class GnssSatellites : public ILoggable { * @param [in] flag: The frame definition of the receiver position (ECI or ECEF) * @return Ionospheric delay [m] */ - double AddIonosphericDelay(const int gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, + double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, const GnssFrameDefinition flag) const; bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation From e17cf62a9a0eaecfee46d6b48009166c60310f2a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:06:14 +0100 Subject: [PATCH 006/456] Rename function to show GNSS satellite functions --- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 6 ++-- src/library/gnss/antex_file_reader.cpp | 2 +- src/library/gnss/gnss_satellite_number.cpp | 4 +-- src/library/gnss/gnss_satellite_number.hpp | 8 +++--- .../gnss/test_gnss_satellite_number.cpp | 28 +++++++++---------- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index c8085dcf5..98b404a01 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -117,7 +117,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: for (int i = 0; i < gnss_num; i++) { // check if gnss ID is compatible with the receiver - std::string id_tmp = ConvertIndexToSatelliteNumber(i); + std::string id_tmp = ConvertIndexToGnssSatelliteNumber(i); if (gnss_id_.find(id_tmp[0]) == std::string::npos) continue; // compute direction from sat to gnss in body-fixed frame diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index e4c75b945..0f8d38e48 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -242,7 +242,7 @@ pair GnssSatellitePosition::Initialize(vector>& f iss >> tmp; s.push_back(tmp); } - int gnss_satellite_id = ConvertSatelliteNumberToIndex(s.front()); + int gnss_satellite_id = ConvertGnssSatelliteNumberToIndex(s.front()); bool available_flag = true; libra::Vector<3> ecef_position_m(0.0); @@ -509,7 +509,7 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex iss >> tmp; s.push_back(tmp); } - int gnss_satellite_id = ConvertSatelliteNumberToIndex(s.front()); + int gnss_satellite_id = ConvertGnssSatelliteNumberToIndex(s.front()); double clock = stod(s.at(4)); if (std::abs(clock - nan99) < 1.0) continue; @@ -569,7 +569,7 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex std::free(time_tm); - int gnss_satellite_id = ConvertSatelliteNumberToIndex(s.at(1)); + int gnss_satellite_id = ConvertGnssSatelliteNumberToIndex(s.at(1)); double clock_bias = stod(s.at(9)) * environment::speed_of_light_m_s; // [s] -> [m] if (start_unix_time - unix_time > 1e-4) continue; // for the numerical error if (end_unix_time - unix_time < 1e-4) break; diff --git a/src/library/gnss/antex_file_reader.cpp b/src/library/gnss/antex_file_reader.cpp index 73d91d87c..7b0e85e54 100644 --- a/src/library/gnss/antex_file_reader.cpp +++ b/src/library/gnss/antex_file_reader.cpp @@ -95,7 +95,7 @@ void AntexFileReader::ReadAntexData(std::ifstream& antex_file) { if (line.find("TYPE / SERIAL NO") == ANTEX_LINE_TYPE_POSITION) { std::string antenna_type = line.substr(0, 20); std::string serial_number = line.substr(20, 20); - size_t satellite_index = ConvertSatelliteNumberToIndex(serial_number); + size_t satellite_index = ConvertGnssSatelliteNumberToIndex(serial_number); if (satellite_index == UINT32_MAX) { // receiver diff --git a/src/library/gnss/gnss_satellite_number.cpp b/src/library/gnss/gnss_satellite_number.cpp index 0c77ee5c4..b3c53efba 100644 --- a/src/library/gnss/gnss_satellite_number.cpp +++ b/src/library/gnss/gnss_satellite_number.cpp @@ -5,7 +5,7 @@ #include "gnss_satellite_number.hpp" -size_t ConvertSatelliteNumberToIndex(const std::string satellite_number) { +size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number) { switch (satellite_number.front()) { case 'G': return stoi(satellite_number.substr(1)) + kGpsIndexBegin - 1; @@ -25,7 +25,7 @@ size_t ConvertSatelliteNumberToIndex(const std::string satellite_number) { } } -std::string ConvertIndexToSatelliteNumber(const size_t index) { +std::string ConvertIndexToGnssSatelliteNumber(const size_t index) { std::string output; size_t prn_number = 0; diff --git a/src/library/gnss/gnss_satellite_number.hpp b/src/library/gnss/gnss_satellite_number.hpp index 95a192694..08fd91576 100644 --- a/src/library/gnss/gnss_satellite_number.hpp +++ b/src/library/gnss/gnss_satellite_number.hpp @@ -31,17 +31,17 @@ const size_t kQzssIndexBegin = kBeidouIndexBegin + kNumberOfBeidouSatellite; const size_t kNavicIndexBegin = kQzssIndexBegin + kNumberOfQzssSatellite; //!< Begin value of index for NavIC satellites /** - * @fn ConvertSatelliteNumberToIndex + * @fn ConvertGnssSatelliteNumberToIndex * @brief Calculate index of GNSS satellite defined in S2E from GNSS satellite number defined in RINEX v4 * @return Index of GNSS satellite defined in this class. or INT32_MAX when the input is wrong. */ -size_t ConvertSatelliteNumberToIndex(const std::string satellite_number); +size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number); /** - * @fn ConvertIndexToSatelliteNumber + * @fn ConvertIndexToGnssSatelliteNumber * @brief Calculate GNSS satellite number defined in RINEX v4 from index of GNSS satellite defined in this class * @return GNSS satellite number defined in RINEX v4. or err when the input is wrong. */ -std::string ConvertIndexToSatelliteNumber(const size_t index); +std::string ConvertIndexToGnssSatelliteNumber(const size_t index); #endif // S2E_LIBRARY_GNSS_GNSS_SATELLITE_NUMBER_HPP_ diff --git a/src/library/gnss/test_gnss_satellite_number.cpp b/src/library/gnss/test_gnss_satellite_number.cpp index a8df3d610..5bbf535ee 100644 --- a/src/library/gnss/test_gnss_satellite_number.cpp +++ b/src/library/gnss/test_gnss_satellite_number.cpp @@ -10,24 +10,24 @@ * @brief Test satellite number to index */ TEST(GnssSatelliteNumber, SatelliteNumberToIndex) { - EXPECT_EQ(ConvertSatelliteNumberToIndex("G01"), 0); - EXPECT_EQ(ConvertSatelliteNumberToIndex("R02"), kGlonassIndexBegin + 1); - EXPECT_EQ(ConvertSatelliteNumberToIndex("E10"), kGalileoIndexBegin + 9); - EXPECT_EQ(ConvertSatelliteNumberToIndex("C40"), kBeidouIndexBegin + 39); - EXPECT_EQ(ConvertSatelliteNumberToIndex("J03"), kQzssIndexBegin + 2); - EXPECT_EQ(ConvertSatelliteNumberToIndex("I04"), kNavicIndexBegin + 3); - EXPECT_EQ(ConvertSatelliteNumberToIndex("err"), UINT32_MAX); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("G01"), 0); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("R02"), kGlonassIndexBegin + 1); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("E10"), kGalileoIndexBegin + 9); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("C40"), kBeidouIndexBegin + 39); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("J03"), kQzssIndexBegin + 2); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("I04"), kNavicIndexBegin + 3); + EXPECT_EQ(ConvertGnssSatelliteNumberToIndex("err"), UINT32_MAX); } /** * @brief Test index to satellite number */ TEST(GnssSatelliteNumber, IndexToSatelliteNumber) { - EXPECT_EQ(ConvertIndexToSatelliteNumber(0), "G01"); - EXPECT_EQ(ConvertIndexToSatelliteNumber(kGlonassIndexBegin + 9), "R10"); - EXPECT_EQ(ConvertIndexToSatelliteNumber(kGalileoIndexBegin + 21), "E22"); - EXPECT_EQ(ConvertIndexToSatelliteNumber(kBeidouIndexBegin + 50), "C51"); - EXPECT_EQ(ConvertIndexToSatelliteNumber(kQzssIndexBegin + 0), "J01"); - EXPECT_EQ(ConvertIndexToSatelliteNumber(kNavicIndexBegin + 5), "I06"); - EXPECT_EQ(ConvertIndexToSatelliteNumber(5000), "err"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(0), "G01"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(kGlonassIndexBegin + 9), "R10"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(kGalileoIndexBegin + 21), "E22"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(kBeidouIndexBegin + 50), "C51"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(kQzssIndexBegin + 0), "J01"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(kNavicIndexBegin + 5), "I06"); + EXPECT_EQ(ConvertIndexToGnssSatelliteNumber(5000), "err"); } From b068c99027a2011be6274961e06d3081d77ae79e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:21:50 +0100 Subject: [PATCH 007/456] Rename satellite clock offset getter functions --- src/environment/global/gnss_satellites.cpp | 16 ++++++++-------- src/environment/global/gnss_satellites.hpp | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 0f8d38e48..8d75ad343 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -755,7 +755,7 @@ libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEci(const size_t return position_.GetPosition_eci_m(gnss_satellite_id); } -double GnssSatelliteInformation::GetSatelliteClock(const size_t gnss_satellite_id) const { return clock_.GetSatClock(gnss_satellite_id); } +double GnssSatelliteInformation::GetClockOffset_m(const size_t gnss_satellite_id) const { return clock_.GetSatClock(gnss_satellite_id); } // GnssSatellites GnssSatellites::GnssSatellites(bool is_calc_enabled) { @@ -837,12 +837,12 @@ libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const size_t gnss_satel return gnss_info_.GetSatellitePositionEci(gnss_satellite_id); } -double GnssSatellites::GetSatelliteClock(const size_t gnss_satellite_id) const { +double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { return 0.0; } - return gnss_info_.GetSatelliteClock(gnss_satellite_id); + return gnss_info_.GetClockOffset_m(gnss_satellite_id); } double GnssSatellites::GetPseudoRangeECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, @@ -858,7 +858,7 @@ double GnssSatellites::GetPseudoRangeECEF(const size_t gnss_satellite_id, libra: res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEcef); @@ -881,7 +881,7 @@ double GnssSatellites::GetPseudoRangeECI(const size_t gnss_satellite_id, libra:: res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEci); @@ -904,7 +904,7 @@ pair GnssSatellites::GetCarrierPhaseECEF(const size_t gnss_satel res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEcef); @@ -934,7 +934,7 @@ pair GnssSatellites::GetCarrierPhaseECI(const size_t gnss_satell res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetSatelliteClock(gnss_satellite_id); + res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEci); @@ -999,7 +999,7 @@ std::string GnssSatellites::GetLogValue() const { for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { str_tmp += WriteVector(gnss_info_.GetSatellitePositionEcef((int)gps_index), 16); - str_tmp += WriteScalar(gnss_info_.GetSatelliteClock((int)gps_index)); + str_tmp += WriteScalar(gnss_info_.GetClockOffset_m((int)gps_index)); } return str_tmp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 78726018f..ca751e1c1 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -266,11 +266,11 @@ class GnssSatelliteInformation { */ libra::Vector<3> GetSatellitePositionEci(const size_t gnss_satellite_id) const; /** - * @fn GetSatelliteClock + * @fn GetClockOffset_m * @brief Return GNSS satellite clock in distance expression [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - double GetSatelliteClock(const size_t gnss_satellite_id) const; + double GetClockOffset_m(const size_t gnss_satellite_id) const; /** * @fn GetGnssSatPos * @brief Return GNSS satellite position information class @@ -362,11 +362,11 @@ class GnssSatellites : public ILoggable { */ libra::Vector<3> GetSatellitePositionEci(const size_t gnss_satellite_id) const; /** - * @fn GetSatelliteClock + * @fn GetClockOffset_m * @brief Return GNSS satellite clock * @param [in] gnss_satellite_id: GNSS satellite ID */ - double GetSatelliteClock(const size_t gnss_satellite_id) const; + double GetClockOffset_m(const size_t gnss_satellite_id) const; /** * @fn GetPseudoRangeECEF From bfd1bbe1fa1b6534f56a13f7def032ffa74783d3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:22:26 +0100 Subject: [PATCH 008/456] Rename satellite clock offset getter functions --- src/environment/global/gnss_satellites.cpp | 4 ++-- src/environment/global/gnss_satellites.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 8d75ad343..ec2c99b7d 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -718,7 +718,7 @@ void GnssSatelliteClock::Update(const double current_unix_time) { } } -double GnssSatelliteClock::GetSatClock(const size_t gnss_satellite_id) const { +double GnssSatelliteClock::GetClockOffset_m(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return 0.0; return clock_offset_m_.at(gnss_satellite_id); } @@ -755,7 +755,7 @@ libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEci(const size_t return position_.GetPosition_eci_m(gnss_satellite_id); } -double GnssSatelliteInformation::GetClockOffset_m(const size_t gnss_satellite_id) const { return clock_.GetSatClock(gnss_satellite_id); } +double GnssSatelliteInformation::GetClockOffset_m(const size_t gnss_satellite_id) const { return clock_.GetClockOffset_m(gnss_satellite_id); } // GnssSatellites GnssSatellites::GnssSatellites(bool is_calc_enabled) { diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index ca751e1c1..564e62363 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -193,11 +193,11 @@ class GnssSatelliteClock : public GnssSatelliteBase { */ void Update(const double current_unix_time); /** - * @fn GetSatClock + * @fn GetClockOffset_m * @brief Return GNSS satellite clock in distance expression [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - double GetSatClock(const size_t gnss_satellite_id) const; + double GetClockOffset_m(const size_t gnss_satellite_id) const; private: std::vector clock_offset_m_; //!< List of clock bias of all GNSS satellites at specific time expressed in distance [m] From 9f4b7b718e21c97455c3ce50bcdac1ea9dd1aa5f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:24:52 +0100 Subject: [PATCH 009/456] Rename satellite position getter functions --- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 26 +++++++++++----------- src/environment/global/gnss_satellites.hpp | 16 ++++++------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 98b404a01..c379daa26 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -121,7 +121,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: if (gnss_id_.find(id_tmp[0]) == std::string::npos) continue; // compute direction from sat to gnss in body-fixed frame - gnss_sat_pos_i = gnss_satellites_->GetSatellitePositionEci(i); + gnss_sat_pos_i = gnss_satellites_->GetPosition_eci_m(i); antenna_to_satellite_i_m = gnss_sat_pos_i - ant_pos_i; double normalizer = 1 / antenna_to_satellite_i_m.CalcNorm(); ant2gnss_i_n = normalizer * antenna_to_satellite_i_m; diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index ec2c99b7d..86fdd21be 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -747,11 +747,11 @@ bool GnssSatelliteInformation::GetWhetherValid(const size_t gnss_satellite_id) c return false; } -libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEcef(const size_t gnss_satellite_id) const { +libra::Vector<3> GnssSatelliteInformation::GetPosition_ecef_m(const size_t gnss_satellite_id) const { return position_.GetPosition_ecef_m(gnss_satellite_id); } -libra::Vector<3> GnssSatelliteInformation::GetSatellitePositionEci(const size_t gnss_satellite_id) const { +libra::Vector<3> GnssSatelliteInformation::GetPosition_eci_m(const size_t gnss_satellite_id) const { return position_.GetPosition_eci_m(gnss_satellite_id); } @@ -817,24 +817,24 @@ bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { return false; } -libra::Vector<3> GnssSatellites::GetSatellitePositionEcef(const size_t gnss_satellite_id) const { +libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); return res; } - return gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); + return gnss_info_.GetPosition_ecef_m(gnss_satellite_id); } -libra::Vector<3> GnssSatellites::GetSatellitePositionEci(const size_t gnss_satellite_id) const { +libra::Vector<3> GnssSatellites::GetPosition_eci_m(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); return res; } - return gnss_info_.GetSatellitePositionEci(gnss_satellite_id); + return gnss_info_.GetPosition_eci_m(gnss_satellite_id); } double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { @@ -851,7 +851,7 @@ double GnssSatellites::GetPseudoRangeECEF(const size_t gnss_satellite_id, libra: if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; - auto gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); + auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } @@ -874,7 +874,7 @@ double GnssSatellites::GetPseudoRangeECI(const size_t gnss_satellite_id, libra:: if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; - auto gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); + auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } @@ -897,7 +897,7 @@ pair GnssSatellites::GetCarrierPhaseECEF(const size_t gnss_satel if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; - auto gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); + auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } @@ -927,7 +927,7 @@ pair GnssSatellites::GetCarrierPhaseECI(const size_t gnss_satell if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; - auto gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); + auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(rec_position(i) - gnss_position(i), 2.0); } @@ -967,9 +967,9 @@ double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> gnss_position; if (flag == GnssFrameDefinition::kEcef) - gnss_position = gnss_info_.GetSatellitePositionEcef(gnss_satellite_id); + gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); else if (flag == GnssFrameDefinition::kEci) - gnss_position = gnss_info_.GetSatellitePositionEci(gnss_satellite_id); + gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); double angle_rad = CalcAngleTwoVectors_rad(rec_position, gnss_position - rec_position); const double default_delay = 20.0; //[m] default delay @@ -998,7 +998,7 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector(gnss_info_.GetSatellitePositionEcef((int)gps_index), 16); + str_tmp += WriteVector(gnss_info_.GetPosition_ecef_m((int)gps_index), 16); str_tmp += WriteScalar(gnss_info_.GetClockOffset_m((int)gps_index)); } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 564e62363..c950c7581 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -254,17 +254,17 @@ class GnssSatelliteInformation { */ bool GetWhetherValid(const size_t gnss_satellite_id) const; /** - * @fn GetSatellitePositionEcef + * @fn GetPosition_ecef_m * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetSatellitePositionEcef(const size_t gnss_satellite_id) const; + libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const; /** - * @fn GetSatellitePositionEci + * @fn GetPosition_eci_m * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetSatellitePositionEci(const size_t gnss_satellite_id) const; + libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const; /** * @fn GetClockOffset_m * @brief Return GNSS satellite clock in distance expression [m] @@ -350,17 +350,17 @@ class GnssSatellites : public ILoggable { inline const GnssSatelliteInformation& GetInformation() const { return gnss_info_; } /** - * @fn GetSatellitePositionEcef + * @fn GetPosition_ecef_m * @brief Return GNSS satellite position in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID */ - libra::Vector<3> GetSatellitePositionEcef(const size_t gnss_satellite_id) const; + libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const; /** - * @fn GetSatellitePositionEci + * @fn GetPosition_eci_m * @brief Return GNSS satellite position in the ECI frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID */ - libra::Vector<3> GetSatellitePositionEci(const size_t gnss_satellite_id) const; + libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const; /** * @fn GetClockOffset_m * @brief Return GNSS satellite clock From abd73dd7e35f1c074a5d59e7149fcd936a5ee2e0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:27:11 +0100 Subject: [PATCH 010/456] Change to inline function --- src/environment/global/gnss_satellites.cpp | 10 ---------- src/environment/global/gnss_satellites.hpp | 6 +++--- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 86fdd21be..78e653152 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -747,16 +747,6 @@ bool GnssSatelliteInformation::GetWhetherValid(const size_t gnss_satellite_id) c return false; } -libra::Vector<3> GnssSatelliteInformation::GetPosition_ecef_m(const size_t gnss_satellite_id) const { - return position_.GetPosition_ecef_m(gnss_satellite_id); -} - -libra::Vector<3> GnssSatelliteInformation::GetPosition_eci_m(const size_t gnss_satellite_id) const { - return position_.GetPosition_eci_m(gnss_satellite_id); -} - -double GnssSatelliteInformation::GetClockOffset_m(const size_t gnss_satellite_id) const { return clock_.GetClockOffset_m(gnss_satellite_id); } - // GnssSatellites GnssSatellites::GnssSatellites(bool is_calc_enabled) { // TODO: Add log enable flag in ini file diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index c950c7581..003b4c2c1 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -258,19 +258,19 @@ class GnssSatelliteInformation { * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const; + inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const { return position_.GetPosition_ecef_m(gnss_satellite_id); } /** * @fn GetPosition_eci_m * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const; + inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return position_.GetPosition_eci_m(gnss_satellite_id); } /** * @fn GetClockOffset_m * @brief Return GNSS satellite clock in distance expression [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - double GetClockOffset_m(const size_t gnss_satellite_id) const; + inline double GetClockOffset_m(const size_t gnss_satellite_id) const { return clock_.GetClockOffset_m(gnss_satellite_id); } /** * @fn GetGnssSatPos * @brief Return GNSS satellite position information class From c60e39742d67cc21b141dce1ee0b3931e7eff35a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:40:45 +0100 Subject: [PATCH 011/456] Rename pseudorange functions --- src/environment/global/gnss_satellites.cpp | 4 ++-- src/environment/global/gnss_satellites.hpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 78e653152..609fdebde 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -835,7 +835,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { return gnss_info_.GetClockOffset_m(gnss_satellite_id); } -double GnssSatellites::GetPseudoRangeECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -858,7 +858,7 @@ double GnssSatellites::GetPseudoRangeECEF(const size_t gnss_satellite_id, libra: return res; } -double GnssSatellites::GetPseudoRangeECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 003b4c2c1..efb369b50 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -369,7 +369,7 @@ class GnssSatellites : public ILoggable { double GetClockOffset_m(const size_t gnss_satellite_id) const; /** - * @fn GetPseudoRangeECEF + * @fn GetPseudoRangeEcef * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] rec_position: Receiver position vector in the ECEF frame [m] @@ -377,9 +377,9 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; + double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** - * @fn GetPseudoRangeECI + * @fn GetPseudoRangeEci * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] rec_position: Receiver position vector in the ECI frame [m] @@ -387,7 +387,7 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; + double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** * @fn GetCarrierPhaseECEF * @brief Calculate carrier phase observed by a receiver for a GNSS satellite From ab24b268feb4fc28957689a472891d8a18d8d0bb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:42:15 +0100 Subject: [PATCH 012/456] Rename carrier phase functions --- src/environment/global/gnss_satellites.cpp | 4 ++-- src/environment/global/gnss_satellites.hpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 609fdebde..27a4261f6 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -881,7 +881,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: return res; } -pair GnssSatellites::GetCarrierPhaseECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -911,7 +911,7 @@ pair GnssSatellites::GetCarrierPhaseECEF(const size_t gnss_satel return {cycle, bias}; } -pair GnssSatellites::GetCarrierPhaseECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index efb369b50..7e0c9c2c3 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -389,7 +389,7 @@ class GnssSatellites : public ILoggable { */ double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** - * @fn GetCarrierPhaseECEF + * @fn GetCarrierPhaseEcef * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] rec_position: Receiver position vector in the ECEF frame [m] @@ -397,10 +397,10 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseECEF(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; /** - * @fn GetCarrierPhaseECI + * @fn GetCarrierPhaseEci * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] rec_position: Receiver position vector in the ECI frame [m] @@ -408,7 +408,7 @@ class GnssSatellites : public ILoggable { * @param [in] frequency: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseECI(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; // Override ILoggable From badeac03df6759b905833819f2bf1212aff01d11 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:43:47 +0100 Subject: [PATCH 013/456] Rename receiver position --- src/environment/global/gnss_satellites.cpp | 30 +++++++++++----------- src/environment/global/gnss_satellites.hpp | 20 +++++++-------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 27a4261f6..6f60cacf1 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -835,7 +835,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { return gnss_info_.GetClockOffset_m(gnss_satellite_id); } -double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -843,7 +843,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: double res = 0.0; auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(rec_position(i) - gnss_position(i), 2.0); + res += pow(receiver_position_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -851,14 +851,14 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEcef); res += ionospheric_delay; return res; } -double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -866,7 +866,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: double res = 0.0; auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(rec_position(i) - gnss_position(i), 2.0); + res += pow(receiver_position_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -874,14 +874,14 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEci); res += ionospheric_delay; return res; } -pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -889,7 +889,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel double res = 0.0; auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(rec_position(i) - gnss_position(i), 2.0); + res += pow(receiver_position_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -897,7 +897,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEcef); res -= ionospheric_delay; @@ -911,7 +911,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel return {cycle, bias}; } -pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, +pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -919,7 +919,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell double res = 0.0; auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(rec_position(i) - gnss_position(i), 2.0); + res += pow(receiver_position_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -927,7 +927,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, rec_position, frequency, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEci); res -= ionospheric_delay; @@ -942,7 +942,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell } // for Ionospheric delay I[m] -double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, +double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency, const GnssFrameDefinition flag) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -950,7 +950,7 @@ double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const const double earth_hemisphere_km = environment::earth_equatorial_radius_m / 1000.0; double altitude = 0.0; - for (int i = 0; i < 3; ++i) altitude += pow(rec_position[i], 2.0); + for (int i = 0; i < 3; ++i) altitude += pow(receiver_position_m[i], 2.0); altitude = sqrt(altitude); altitude = altitude / 1000.0 - earth_hemisphere_km; //[m -> km] if (altitude >= 1000.0) return 0.0; // there is no Ionosphere above 1000km @@ -961,7 +961,7 @@ double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const else if (flag == GnssFrameDefinition::kEci) gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); - double angle_rad = CalcAngleTwoVectors_rad(rec_position, gnss_position - rec_position); + double angle_rad = CalcAngleTwoVectors_rad(receiver_position_m, gnss_position - receiver_position_m); const double default_delay = 20.0; //[m] default delay // Assume the maximum height as 1000.0. Divide by cos because the slope makes it longer. double delay = default_delay * (1000.0 - altitude) / 1000.0 / cos(angle_rad); diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 7e0c9c2c3..583c7b00f 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -372,43 +372,43 @@ class GnssSatellites : public ILoggable { * @fn GetPseudoRangeEcef * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] rec_position: Receiver position vector in the ECEF frame [m] + * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] * @param [in] rec_clock: Receiver clock * @param [in] frequency: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; + double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const; /** * @fn GetPseudoRangeEci * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] rec_position: Receiver position vector in the ECI frame [m] + * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] * @param [in] rec_clock: Receiver clock * @param [in] frequency: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, const double frequency) const; + double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const; /** * @fn GetCarrierPhaseEcef * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] rec_position: Receiver position vector in the ECEF frame [m] + * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] * @param [in] rec_clock: Receiver clock * @param [in] frequency: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const; /** * @fn GetCarrierPhaseEci * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] rec_position: Receiver position vector in the ECI frame [m] + * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] * @param [in] rec_clock: Receiver clock * @param [in] frequency: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> rec_position, double rec_clock, + std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const; // Override ILoggable @@ -435,12 +435,12 @@ class GnssSatellites : public ILoggable { * @brief Calculation of ionospheric delay * @note TODO: Ionospheric delay very Miscellaneous need to fix * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] rec_position: Receiver position [m] + * @param [in] receiver_position_m: Receiver position [m] * @param [in] frequency: Frequency [MHz] * @param [in] flag: The frame definition of the receiver position (ECI or ECEF) * @return Ionospheric delay [m] */ - double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> rec_position, const double frequency, + double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency, const GnssFrameDefinition flag) const; bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation From 6bdeabc7e0befd26cf97a915f9059a89c39818c5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:50:19 +0100 Subject: [PATCH 014/456] Rename frequency argument name --- src/environment/global/gnss_satellites.cpp | 32 +++++++++++----------- src/environment/global/gnss_satellites.hpp | 20 +++++++------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 6f60cacf1..8d7a9c8f2 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -836,7 +836,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { } double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency) const { + const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -851,7 +851,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEcef); res += ionospheric_delay; @@ -859,7 +859,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: } double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency) const { + const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -874,7 +874,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEci); res += ionospheric_delay; @@ -882,7 +882,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: } pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency) const { + const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -897,12 +897,12 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEcef); res -= ionospheric_delay; - // wavelength frequency is thought to be given by MHz - double lambda = environment::speed_of_light_m_s * 1e-6 / frequency; + // wavelength frequency_MHz is thought to be given by MHz + double lambda = environment::speed_of_light_m_s * 1e-6 / frequency_MHz; double cycle = res / lambda; double bias = floor(cycle); @@ -912,7 +912,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel } pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency) const { + const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -927,12 +927,12 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEci); res -= ionospheric_delay; - // wavelength frequency is thought to be given by MHz - double lambda = environment::speed_of_light_m_s * 1e-6 / frequency; + // wavelength frequency_MHz is thought to be given by MHz + double lambda = environment::speed_of_light_m_s * 1e-6 / frequency_MHz; double cycle = res / lambda; double bias = floor(cycle); @@ -942,7 +942,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell } // for Ionospheric delay I[m] -double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency, +double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz, const GnssFrameDefinition flag) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -965,9 +965,9 @@ double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const const double default_delay = 20.0; //[m] default delay // Assume the maximum height as 1000.0. Divide by cos because the slope makes it longer. double delay = default_delay * (1000.0 - altitude) / 1000.0 / cos(angle_rad); - const double default_frequency = 1500.0; //[MHz] - // Ionospheric delay is inversely proportional to the square of the frequency - delay *= pow(default_frequency / frequency, 2.0); + const double default_frequency_MHz = 1500.0; //[MHz] + // Ionospheric delay is inversely proportional to the square of the frequency_MHz + delay *= pow(default_frequency_MHz / frequency_MHz, 2.0); return delay; } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 583c7b00f..09486e71d 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -374,42 +374,42 @@ class GnssSatellites : public ILoggable { * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] * @param [in] rec_clock: Receiver clock - * @param [in] frequency: Frequency of the signal [MHz] + * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const; + double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency_MHz) const; /** * @fn GetPseudoRangeEci * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] * @param [in] rec_clock: Receiver clock - * @param [in] frequency: Frequency of the signal [MHz] + * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency) const; + double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency_MHz) const; /** * @fn GetCarrierPhaseEcef * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] * @param [in] rec_clock: Receiver clock - * @param [in] frequency: Frequency of the signal [MHz] + * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency) const; + const double frequency_MHz) const; /** * @fn GetCarrierPhaseEci * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] * @param [in] rec_clock: Receiver clock - * @param [in] frequency: Frequency of the signal [MHz] + * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency) const; + const double frequency_MHz) const; // Override ILoggable /** @@ -436,11 +436,11 @@ class GnssSatellites : public ILoggable { * @note TODO: Ionospheric delay very Miscellaneous need to fix * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position [m] - * @param [in] frequency: Frequency [MHz] + * @param [in] frequency_MHz: Frequency [MHz] * @param [in] flag: The frame definition of the receiver position (ECI or ECEF) * @return Ionospheric delay [m] */ - double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency, + double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz, const GnssFrameDefinition flag) const; bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation From 28223578e3ae7e509df8816626d7c5aac599dcab Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:51:08 +0100 Subject: [PATCH 015/456] Rename receiver clock name argument name --- src/environment/global/gnss_satellites.cpp | 20 ++++++++++---------- src/environment/global/gnss_satellites.hpp | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 8d7a9c8f2..aafb8749c 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -835,7 +835,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { return gnss_info_.GetClockOffset_m(gnss_satellite_id); } -double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, +double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -848,7 +848,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEcef); @@ -858,7 +858,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: return res; } -double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, +double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -871,7 +871,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEci); @@ -881,8 +881,8 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: return res; } -pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency_MHz) const { +pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, + double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -894,7 +894,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEcef); @@ -911,8 +911,8 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel return {cycle, bias}; } -pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, - const double frequency_MHz) const { +pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, + double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -924,7 +924,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell res = sqrt(res); // clock bias - res += rec_clock - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEci); diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 09486e71d..c58c74545 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -373,42 +373,44 @@ class GnssSatellites : public ILoggable { * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] - * @param [in] rec_clock: Receiver clock + * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency_MHz) const; + double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, + const double frequency_MHz) const; /** * @fn GetPseudoRangeEci * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] - * @param [in] rec_clock: Receiver clock + * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, const double frequency_MHz) const; + double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, + const double frequency_MHz) const; /** * @fn GetCarrierPhaseEcef * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] - * @param [in] rec_clock: Receiver clock + * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, + std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, const double frequency_MHz) const; /** * @fn GetCarrierPhaseEci * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] - * @param [in] rec_clock: Receiver clock + * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double rec_clock, + std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, const double frequency_MHz) const; // Override ILoggable From 0c032b62fa6b7fbb19b7830bd2ff1ba014561c45 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 19 Dec 2023 15:53:25 +0100 Subject: [PATCH 016/456] Add frame information for argument name --- src/environment/global/gnss_satellites.cpp | 24 +++++++++++----------- src/environment/global/gnss_satellites.hpp | 20 +++++++++--------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index aafb8749c..f1170a52c 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -835,7 +835,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { return gnss_info_.GetClockOffset_m(gnss_satellite_id); } -double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, +double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -843,7 +843,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: double res = 0.0; auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_m(i) - gnss_position(i), 2.0); + res += pow(receiver_position_ecef_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -851,14 +851,14 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz, GnssFrameDefinition::kEcef); res += ionospheric_delay; return res; } -double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, +double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -866,7 +866,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: double res = 0.0; auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_m(i) - gnss_position(i), 2.0); + res += pow(receiver_position_eci_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -874,14 +874,14 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz, GnssFrameDefinition::kEci); res += ionospheric_delay; return res; } -pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, +pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -889,7 +889,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel double res = 0.0; auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_m(i) - gnss_position(i), 2.0); + res += pow(receiver_position_ecef_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -897,7 +897,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz, GnssFrameDefinition::kEcef); res -= ionospheric_delay; @@ -911,7 +911,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel return {cycle, bias}; } -pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, +pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; @@ -919,7 +919,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell double res = 0.0; auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_m(i) - gnss_position(i), 2.0); + res += pow(receiver_position_eci_m(i) - gnss_position(i), 2.0); } res = sqrt(res); @@ -927,7 +927,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_m, frequency_MHz, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz, GnssFrameDefinition::kEci); res -= ionospheric_delay; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index c58c74545..1dced518a 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -372,46 +372,46 @@ class GnssSatellites : public ILoggable { * @fn GetPseudoRangeEcef * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] + * @param [in] receiver_position_ecef_m: Receiver position vector in the ECEF frame [m] * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, + double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, const double frequency_MHz) const; /** * @fn GetPseudoRangeEci * @brief Calculate pseudo range between receiver and a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] + * @param [in] receiver_position_eci_m: Receiver position vector in the ECI frame [m] * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Pseudo range [m] */ - double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, + double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, const double frequency_MHz) const; /** * @fn GetCarrierPhaseEcef * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_m: Receiver position vector in the ECEF frame [m] + * @param [in] receiver_position_ecef_m: Receiver position vector in the ECEF frame [m] * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, - const double frequency_MHz) const; + std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, + double receiver_clock_offset_m, const double frequency_MHz) const; /** * @fn GetCarrierPhaseEci * @brief Calculate carrier phase observed by a receiver for a GNSS satellite * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_m: Receiver position vector in the ECI frame [m] + * @param [in] receiver_position_eci_m: Receiver position vector in the ECI frame [m] * @param [in] receiver_clock_offset_m: Receiver clock * @param [in] frequency_MHz: Frequency of the signal [MHz] * @return Carrier phase cycle and bias [-] */ - std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_m, double receiver_clock_offset_m, - const double frequency_MHz) const; + std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, + double receiver_clock_offset_m, const double frequency_MHz) const; // Override ILoggable /** From a2c13be4575809215ab189cb7b5c537e0720ced5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:32:25 +0000 Subject: [PATCH 017/456] Update actions/cache action to v4 --- .github/workflows/build.yml | 4 ++-- .github/workflows/google-test.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b94fcacf2..3fd5843d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,7 @@ jobs: - name: cache extlib id: cache-extlib - uses: actions/cache@v3 + uses: actions/cache@v4 with: key: extlib-${{ runner.os }}-${{ hashFiles('./ExtLibraries/**') }}-${{ matrix.build_bit }} path: ./ExtLibraries @@ -174,7 +174,7 @@ jobs: - name: cache extlib id: cache-extlib - uses: actions/cache@v3 + uses: actions/cache@v4 with: key: extlib-${{ runner.os }}-${{ hashFiles('./ExtLibraries/**') }}-${{ matrix.build_bit }} path: ExtLibraries diff --git a/.github/workflows/google-test.yml b/.github/workflows/google-test.yml index 9be934200..5fd93f89d 100644 --- a/.github/workflows/google-test.yml +++ b/.github/workflows/google-test.yml @@ -61,7 +61,7 @@ jobs: - name: cache extlib id: cache-extlib - uses: actions/cache@v3 + uses: actions/cache@v4 with: key: extlib-${{ runner.os }}-${{ hashFiles('./ExtLibraries/**') }}} path: ExtLibraries From 9b73bf1f4e6f3a76b8b0b5ccc119966c950b8b37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 05:56:46 +0000 Subject: [PATCH 018/456] Bump pillow from 10.0.1 to 10.2.0 in /scripts/Plot Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.0.1 to 10.2.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/10.0.1...10.2.0) --- updated-dependencies: - dependency-name: pillow dependency-type: indirect ... Signed-off-by: dependabot[bot] --- scripts/Plot/Pipfile.lock | 124 +++++++++++++++++++++----------------- 1 file changed, 69 insertions(+), 55 deletions(-) diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index ac3234fd8..b1d1cd7c2 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -485,64 +485,78 @@ }, "pillow": { "hashes": [ - "sha256:0462b1496505a3462d0f35dc1c4d7b54069747d65d00ef48e736acda2c8cbdff", - "sha256:186f7e04248103482ea6354af6d5bcedb62941ee08f7f788a1c7707bc720c66f", - "sha256:19e9adb3f22d4c416e7cd79b01375b17159d6990003633ff1d8377e21b7f1b21", - "sha256:28444cb6ad49726127d6b340217f0627abc8732f1194fd5352dec5e6a0105635", - "sha256:2872f2d7846cf39b3dbff64bc1104cc48c76145854256451d33c5faa55c04d1a", - "sha256:2cc6b86ece42a11f16f55fe8903595eff2b25e0358dec635d0a701ac9586588f", - "sha256:2d7e91b4379f7a76b31c2dda84ab9e20c6220488e50f7822e59dac36b0cd92b1", - "sha256:2fa6dd2661838c66f1a5473f3b49ab610c98a128fc08afbe81b91a1f0bf8c51d", - "sha256:32bec7423cdf25c9038fef614a853c9d25c07590e1a870ed471f47fb80b244db", - "sha256:3855447d98cced8670aaa63683808df905e956f00348732448b5a6df67ee5849", - "sha256:3a04359f308ebee571a3127fdb1bd01f88ba6f6fb6d087f8dd2e0d9bff43f2a7", - "sha256:3a0d3e54ab1df9df51b914b2233cf779a5a10dfd1ce339d0421748232cea9876", - "sha256:44e7e4587392953e5e251190a964675f61e4dae88d1e6edbe9f36d6243547ff3", - "sha256:459307cacdd4138edee3875bbe22a2492519e060660eaf378ba3b405d1c66317", - "sha256:4ce90f8a24e1c15465048959f1e94309dfef93af272633e8f37361b824532e91", - "sha256:50bd5f1ebafe9362ad622072a1d2f5850ecfa44303531ff14353a4059113b12d", - "sha256:522ff4ac3aaf839242c6f4e5b406634bfea002469656ae8358644fc6c4856a3b", - "sha256:552912dbca585b74d75279a7570dd29fa43b6d93594abb494ebb31ac19ace6bd", - "sha256:5d6c9049c6274c1bb565021367431ad04481ebb54872edecfcd6088d27edd6ed", - "sha256:697a06bdcedd473b35e50a7e7506b1d8ceb832dc238a336bd6f4f5aa91a4b500", - "sha256:71671503e3015da1b50bd18951e2f9daf5b6ffe36d16f1eb2c45711a301521a7", - "sha256:723bd25051454cea9990203405fa6b74e043ea76d4968166dfd2569b0210886a", - "sha256:764d2c0daf9c4d40ad12fbc0abd5da3af7f8aa11daf87e4fa1b834000f4b6b0a", - "sha256:787bb0169d2385a798888e1122c980c6eff26bf941a8ea79747d35d8f9210ca0", - "sha256:7f771e7219ff04b79e231d099c0a28ed83aa82af91fd5fa9fdb28f5b8d5addaf", - "sha256:847e8d1017c741c735d3cd1883fa7b03ded4f825a6e5fcb9378fd813edee995f", - "sha256:84efb46e8d881bb06b35d1d541aa87f574b58e87f781cbba8d200daa835b42e1", - "sha256:898f1d306298ff40dc1b9ca24824f0488f6f039bc0e25cfb549d3195ffa17088", - "sha256:8b451d6ead6e3500b6ce5c7916a43d8d8d25ad74b9102a629baccc0808c54971", - "sha256:8f06be50669087250f319b706decf69ca71fdecd829091a37cc89398ca4dc17a", - "sha256:92a23b0431941a33242b1f0ce6c88a952e09feeea9af4e8be48236a68ffe2205", - "sha256:93139acd8109edcdeffd85e3af8ae7d88b258b3a1e13a038f542b79b6d255c54", - "sha256:98533fd7fa764e5f85eebe56c8e4094db912ccbe6fbf3a58778d543cadd0db08", - "sha256:9f665d1e6474af9f9da5e86c2a3a2d2d6204e04d5af9c06b9d42afa6ebde3f21", - "sha256:b059ac2c4c7a97daafa7dc850b43b2d3667def858a4f112d1aa082e5c3d6cf7d", - "sha256:b1be1c872b9b5fcc229adeadbeb51422a9633abd847c0ff87dc4ef9bb184ae08", - "sha256:b7cf63d2c6928b51d35dfdbda6f2c1fddbe51a6bc4a9d4ee6ea0e11670dd981e", - "sha256:bc2e3069569ea9dbe88d6b8ea38f439a6aad8f6e7a6283a38edf61ddefb3a9bf", - "sha256:bcf1207e2f2385a576832af02702de104be71301c2696d0012b1b93fe34aaa5b", - "sha256:ca26ba5767888c84bf5a0c1a32f069e8204ce8c21d00a49c90dabeba00ce0145", - "sha256:cbe68deb8580462ca0d9eb56a81912f59eb4542e1ef8f987405e35a0179f4ea2", - "sha256:d6caf3cd38449ec3cd8a68b375e0c6fe4b6fd04edb6c9766b55ef84a6e8ddf2d", - "sha256:d72967b06be9300fed5cfbc8b5bafceec48bf7cdc7dab66b1d2549035287191d", - "sha256:d889b53ae2f030f756e61a7bff13684dcd77e9af8b10c6048fb2c559d6ed6eaf", - "sha256:de596695a75496deb3b499c8c4f8e60376e0516e1a774e7bc046f0f48cd620ad", - "sha256:e6a90167bcca1216606223a05e2cf991bb25b14695c518bc65639463d7db722d", - "sha256:ed2d9c0704f2dc4fa980b99d565c0c9a543fe5101c25b3d60488b8ba80f0cce1", - "sha256:ee7810cf7c83fa227ba9125de6084e5e8b08c59038a7b2c9045ef4dde61663b4", - "sha256:f0b4b06da13275bc02adfeb82643c4a6385bd08d26f03068c2796f60d125f6f2", - "sha256:f11c9102c56ffb9ca87134bd025a43d2aba3f1155f508eff88f694b33a9c6d19", - "sha256:f5bb289bb835f9fe1a1e9300d011eef4d69661bb9b34d5e196e5e82c4cb09b37", - "sha256:f6d3d4c905e26354e8f9d82548475c46d8e0889538cb0657aa9c6f0872a37aa4", - "sha256:fcb59711009b0168d6ee0bd8fb5eb259c4ab1717b2f538bbf36bacf207ef7a68", - "sha256:fd2a5403a75b54661182b75ec6132437a181209b901446ee5724b589af8edef1" + "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8", + "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39", + "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac", + "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869", + "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e", + "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04", + "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9", + "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e", + "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe", + "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef", + "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56", + "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa", + "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f", + "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f", + "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e", + "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a", + "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2", + "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2", + "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5", + "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a", + "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2", + "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213", + "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563", + "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591", + "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c", + "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2", + "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb", + "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757", + "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0", + "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452", + "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad", + "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01", + "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f", + "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5", + "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61", + "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e", + "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b", + "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068", + "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9", + "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588", + "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483", + "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f", + "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67", + "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7", + "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311", + "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6", + "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72", + "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6", + "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129", + "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13", + "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67", + "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c", + "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516", + "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e", + "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e", + "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364", + "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023", + "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1", + "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04", + "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d", + "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a", + "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7", + "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb", + "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4", + "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e", + "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1", + "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48", + "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==10.0.1" + "version": "==10.2.0" }, "pyparsing": { "hashes": [ From da5ac108d82983d0f031571e7eaa086f8599a42e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 13:42:54 +0000 Subject: [PATCH 019/456] Update dependency basemap to v1.4.0 --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 301 ++++++++++++++++++++------------------ 2 files changed, 161 insertions(+), 142 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index 0ac47709e..a93bb7385 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -4,7 +4,7 @@ verify_ssl = true name = "pypi" [packages] -basemap = "==1.3.8" +basemap = "==1.4.0" matplotlib = "==3.7.2" numpy = "==1.24.3" pandas = "==2.0.3" diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index b1d1cd7c2..df9425272 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "357494dffe97400cf2bc676a3b06b4f956da6ee0af7c0063f76efac2c8a67e5a" + "sha256": "16b402d217a5bc994db3911f6f95a9abbe4e58c655feedf6a880934788982ac6" }, "pipfile-spec": 6, "requires": { @@ -18,43 +18,55 @@ "default": { "basemap": { "hashes": [ - "sha256:023685d28026edf9dde9cf9657a6b679e50b56e59e9472e707031488d3d60005", - "sha256:09de25d4c3203764eeb1080bfea287c4faf4727e4c4975d5d3408be4d19531d9", - "sha256:0e83a5296df52fa49dbf5b5a99cd8bb8ae255c0ead732efc29d74b9f7c5fec67", - "sha256:1fb16ef8fec2f030869254b7f899784cbbfdb84958bc29978d0a1f82d998486e", - "sha256:21eaa5ac3f7b9d4cba3fe9e929b370882bd42f0eab0ab8136e41eed4dea9627d", - "sha256:338d013ac6e2e7c6c823ddfae47a45793e0591a28bdaf33817701413b74beae6", - "sha256:374a5409afa4bc2890a1caccd552c1e01beec533853113980661f302d32aaee8", - "sha256:39c6f86dc17507a5a5c704fa9287841cf09fbbb44d00987888202a5811b471e6", - "sha256:419f610eb5e60749b61c4916d5635bbd3a35e5c23ab2596bc28e54ec212cfc36", - "sha256:4955cfce26bc23e0d69f0cc899cbeea72a7a4a59564d535309b16ea189a2d8bc", - "sha256:4c954a2b6d584e38f27ac9488740db71c3bed63defe3d8535a6a5023f835492c", - "sha256:4febd21e387fef09a188dc21af71f64bf30c765a003a698298e23bb8eaa8278c", - "sha256:5a3f4df4f21fd7e6a3d9c58b24b88067335f6187d1ee13d0c836472c5cddd290", - "sha256:5f3479a0207d40a61165702d5890a0313c16f84f16320353044b51e8b1ca1df3", - "sha256:712ae874daa5f172d135b98202e5bdd4ff23e37a52ae20c39a76d14165d569c5", - "sha256:8046ea3f8c3bc0ba8edba10bf4e81138cc29ad10b78b5912434eb61faa1e4906", - "sha256:8354c97ff3475372e36ae45409c4b1ccd28f3d85d1d50378fad380321d804cf2", - "sha256:8420bbc53ebf5371eefa41edb8feb222e0da2962697238c612118cf2e90ce579", - "sha256:87673784f9b1f0fde499c3d39cd8f2a0c3d750b04aab735cb07aebd08b324c44", - "sha256:8ac329b4e8e9d68ed163113906817945bcc22d1c9f7584f801e74ba3bb0b70d1", - "sha256:9288bd57ceb8e25a905f49cb188ceea9878b92d8662bb317084ebd9f267c619c", - "sha256:9d8273d86565ad3d1fc41cb3109c22f86e0e6c74f395d71ffcfc0e32299bdf0d", - "sha256:a602013ecbe75a0169f827c983ad467e01d3794df545d8b5a044d113cc5f121f", - "sha256:ac54a6d58fc79be8d2df2bbf13aa8700e3e9921dc80633ae41d8cd53a60a6f96", - "sha256:aeabd63727be00145594936c4341f5aabc699ab2c4c53fd49147cc12e39e5471", - "sha256:b004e5d1d1b2335f49099b8ca6799418bf617f12a98d32e45a4d45b6efe13f5c", - "sha256:b2392c83d047a28d6e48d5ac6217916be898abbc4ca2baba4fb5e340337769cc", - "sha256:b541a357dac7770916841fa2b0382330a724b16aa7570edfcd1ad1f476775ca0", - "sha256:b76a24606d4633b453f6953cd81c17f0aa49dcf26d011d104f144af9fac73a74", - "sha256:bec93bf7d19bc9e8427c5d0ba8644d43b10f236dc72f1ff2af5d747b2f41a214", - "sha256:c3362f1cb8139f95a2c849001de361fe2e57714393353982ba892f87e93f6c02", - "sha256:d3ab86726a2a1f8067740ba71051b1c539adbb2972aa970e5dc65def90b25c09", - "sha256:efdb669ff0b84511f1d12e78139fff7069260b30baeff36019f56915d9e9e7fb" + "sha256:0927a7d3899035b71ac88dfaa3fd7c304e62316d3506c79010b28b0ded6db83f", + "sha256:0da5d4d8e2bd77d7a06ca2f0750e8652acbf725064f518e6acec157d45abf393", + "sha256:0ee1ebadb27255c6045ddfaafe01b1850a993cc054f15fd12eb3fb9a22b0ba5d", + "sha256:10d45296ff9f1c7160290653bede4b1bd26d0e6d5cae32ea1b3823ebfe7f82cc", + "sha256:195cdcd10c0a394cd57bf28211b1f322d93ba99829d05760eec2342ad894b3ce", + "sha256:1df140c0c40f1cd5f154f80d5c4d962d314d4f5a62d2d619047be79f5415278f", + "sha256:1ea26cb43cb3809802968f6b222cc4c101161c62a2a844eba4d0f94d61533614", + "sha256:22a246f1aba6dad9d7da6c1a28157e8682a2a70779ed92c09026d5907791e295", + "sha256:23c1dedd397e42b5f0eb0e11310e2a251001a6999b99438fe935d67ba799ddf2", + "sha256:28e79572eeaaf92cb3cca1bb88faee0eb25ca8d898795cb29bd6675fb0a09a48", + "sha256:353cb3d186ff0cbb1e103f150a9a9e39d512020bc2b46824b4b307f13556b23d", + "sha256:355efa84734cec51dd1565b86a91854e7d2654f57fc065472e8198ed99467512", + "sha256:3baba10a9f59e4be99cca507ce0b442c524703affa03871704b931a95c6aea15", + "sha256:3fd217669f989a936360049ec9da6763de811432c89456bfdf186daa60b4a143", + "sha256:43f29704b0f6601bb569742386a1bce48019fbefe9a21a6f603eb3154de545ca", + "sha256:550f435106339823bc0b4fb64bd89bd1ca8c05b083935d7f4cd46e8e4d1c5a5d", + "sha256:6c69fead3fbc6aacb3f98e753607339c2dc6ae90cfc739812d6a895d12753409", + "sha256:6f8a2cb3c83f1320368ce09514628992d383098916a9106ca47db8069e150eb2", + "sha256:7c24d437767f3df29fd9e3e7f0ec48d4541dfa2fde9953d898467ba59e341c9b", + "sha256:823848e92b91d7f9be764a8c0d2d253431eeb21a60d3c6601f5217ae270b0f6b", + "sha256:83ec95264b67970a3d10e813317468dbe2031d55aee25d4f8dcffa8eba3cc705", + "sha256:85881bd7ca3936f2c9d537c79be355f033383ac990d8013d0c7244939baf207b", + "sha256:8818d274b8c81f764ab7aec423b9d1bd66e12e2e3093ca1ea27b1ad205c2e376", + "sha256:8d528ec0f6c487003e072d10d49b599f9637ca65417f6c1c5ea349a238b1c66d", + "sha256:8e31f4a1752bce29101f3438a8a247edd82d4e6348e3f9f3b0f6b16c2ccf1919", + "sha256:8ee6cbcc62908215342d34b50db3833b6262e8a00e678f68d7ac2aad778ea151", + "sha256:967e5def861c8c152da9e4dedfb1f3ddfab040af5686ade5bed49bced2ff1176", + "sha256:a50664872c72c6673ca135bff5a53fa6633cb0322a06453a61d500b4fa535345", + "sha256:a78411bf8e522028c367c5e36b4da7c2235910d80c7a987af7ee054203421999", + "sha256:a7f50b7828ecb9dc86a90e0dffba93d7a4156babf245c55ad58a144c94944391", + "sha256:a817bd7a493948c63cb31bf2b86f770ec213f355b9c5f2a7a440566b1b42fc83", + "sha256:aab4279b727aef726e3f09e35c23760236f3599e8ee7b6d12ee3b7655275b10f", + "sha256:b225b350f406be9d133ab2152a0ae3247d75b91520249b98ce4fd96bba518824", + "sha256:b25fccf7c31f3b29fb7f22f4eebbf4ab986db0c300300dad32acf5bbe8e8c6ec", + "sha256:b7ddcf4b0138942459f2a7a43e2afe1e4b397cfc379b43074f72e6c6e79d4683", + "sha256:b8c8337d4d8ce1f56c9942f4b7c66405948b4a203fa9a309845418e672c27d33", + "sha256:bb4f9dc1d8d0108fcab934571bafa3ebd5d445d44c728f2302f6fb5009705879", + "sha256:ccf4810a829325013f409834d626e42e098ef0bd49282a41fb04bd6e63cf7a1f", + "sha256:d486119160c4485ed97618537279b2d662758acadc6cefe6323f6cdf7ca8873b", + "sha256:e7748f4e892fb34ba47dd31cb50d7d7955723e65a3697e2b4e4462f669558ca9", + "sha256:e9e69b8ead48d5b8b841390bf7b6bbd5349354756c9643fee88fd54431b2092f", + "sha256:eb3cee3526b574b6cd9cdd8908a124c75ffbebf50b016740ec1181def72d44af", + "sha256:f030517f32e90520555aa24871b342ac7a583a8254980a1816cd9b9cc1325899", + "sha256:f4ff492d65bdd7ed6d84b9789f9ed55cbc74dee236ebbb914767c976b7ffcf8e", + "sha256:f64b4227415e13c0dbf79539959da49160245df40950f434561515bfafd1f0e3" ], "index": "pypi", - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' and python_version < '4'", - "version": "==1.3.8" + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' and python_version < '3.13'", + "version": "==1.4.0" }, "basemap-data": { "hashes": [ @@ -66,11 +78,11 @@ }, "certifi": { "hashes": [ - "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", - "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" + "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1", + "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474" ], "markers": "python_version >= '3.6'", - "version": "==2023.7.22" + "version": "==2023.11.17" }, "contourpy": { "hashes": [ @@ -132,67 +144,67 @@ }, "cycler": { "hashes": [ - "sha256:7896994252d006771357777d0251f3e34d266f4fa5f2c572247a80ab01440947", - "sha256:8cc3a7b4861f91b1095157f9916f748549a617046e67eb7619abed9b34d2c94a" + "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", + "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c" ], "markers": "python_version >= '3.8'", - "version": "==0.12.0" + "version": "==0.12.1" }, "fonttools": { "hashes": [ - "sha256:030355fbb0cea59cf75d076d04d3852900583d1258574ff2d7d719abf4513836", - "sha256:05056a8c9af048381fdb17e89b17d45f6c8394176d01e8c6fef5ac96ea950d38", - "sha256:206808f9717c9b19117f461246372a2c160fa12b9b8dbdfb904ab50ca235ba0a", - "sha256:20fc43783c432862071fa76da6fa714902ae587bc68441e12ff4099b94b1fcef", - "sha256:25620b738d4533cfc21fd2a4f4b667e481f7cb60e86b609799f7d98af657854e", - "sha256:33c40a657fb87ff83185828c0323032d63a4df1279d5c1c38e21f3ec56327803", - "sha256:3d7adfa342e6b3a2b36960981f23f480969f833d565a4eba259c2e6f59d2674f", - "sha256:48078357984214ccd22d7fe0340cd6ff7286b2f74f173603a1a9a40b5dc25afe", - "sha256:5056f69a18f3f28ab5283202d1efcfe011585d31de09d8560f91c6c88f041e92", - "sha256:52e77f23a9c059f8be01a07300ba4c4d23dc271d33eed502aea5a01ab5d2f4c1", - "sha256:57c22e5f9f53630d458830f710424dce4f43c5f0d95cb3368c0f5178541e4db7", - "sha256:5aa67d1e720fdd902fde4a59d0880854ae9f19fc958f3e1538bceb36f7f4dc92", - "sha256:5f9660e70a2430780e23830476332bc3391c3c8694769e2c0032a5038702a662", - "sha256:635658464dccff6fa5c3b43fe8f818ae2c386ee6a9e1abc27359d1e255528186", - "sha256:6a530fa28c155538d32214eafa0964989098a662bd63e91e790e6a7a4e9c02da", - "sha256:70f021a6b9eb10dfe7a411b78e63a503a06955dd6d2a4e130906d8760474f77c", - "sha256:77e5113233a2df07af9dbf493468ce526784c3b179c0e8b9c7838ced37c98b69", - "sha256:7c76f32051159f8284f1a5f5b605152b5a530736fb8b55b09957db38dcae5348", - "sha256:812142a0e53cc853964d487e6b40963df62f522b1b571e19d1ff8467d7880ceb", - "sha256:82d8e687a42799df5325e7ee12977b74738f34bf7fde1c296f8140efd699a213", - "sha256:8dfd8edfce34ad135bd69de20c77449c06e2c92b38f2a8358d0987737f82b49e", - "sha256:93c5b6d77baf28f306bc13fa987b0b13edca6a39dc2324eaca299a74ccc6316f", - "sha256:9d654d3e780e0ceabb1f4eff5a3c042c67d4428d0fe1ea3afd238a721cf171b3", - "sha256:a682fb5cbf8837d1822b80acc0be5ff2ea0c49ca836e468a21ffd388ef280fd3", - "sha256:a68b71adc3b3a90346e4ac92f0a69ab9caeba391f3b04ab6f1e98f2c8ebe88e3", - "sha256:a6a2e99bb9ea51e0974bbe71768df42c6dd189308c22f3f00560c3341b345646", - "sha256:ab80e7d6bb01316d5fc8161a2660ca2e9e597d0880db4927bc866c76474472ef", - "sha256:ace0fd5afb79849f599f76af5c6aa5e865bd042c811e4e047bbaa7752cc26126", - "sha256:ace51902ab67ef5fe225e8b361039e996db153e467e24a28d35f74849b37b7ce", - "sha256:af38f5145258e9866da5881580507e6d17ff7756beef175d13213a43a84244e9", - "sha256:b3813f57f85bbc0e4011a0e1e9211f9ee52f87f402e41dc05bc5135f03fa51c1", - "sha256:b5e760198f0b87e42478bb35a6eae385c636208f6f0d413e100b9c9c5efafb6a", - "sha256:b62a53a4ca83c32c6b78cac64464f88d02929779373c716f738af6968c8c821e", - "sha256:d08a694b280d615460563a6b4e2afb0b1b9df708c799ec212bf966652b94fc84", - "sha256:d27d960e10cf7617d70cf3104c32a69b008dde56f2d55a9bed4ba6e3df611544", - "sha256:da78f39b601ed0b4262929403186d65cf7a016f91ff349ab18fdc5a7080af465", - "sha256:dcc01cea0a121fb0c009993497bad93cae25e77db7dee5345fec9cce1aaa09cd", - "sha256:e3f8acc6ef4a627394021246e099faee4b343afd3ffe2e517d8195b4ebf20289", - "sha256:e4bc589d8da09267c7c4ceaaaa4fc01a7908ac5b43b286ac9279afe76407c384", - "sha256:e5d53eddaf436fa131042f44a76ea1ead0a17c354ab9de0d80e818f0cb1629f1", - "sha256:ee728d5af70f117581712966a21e2e07031e92c687ef1fdc457ac8d281016f64", - "sha256:f19c2b1c65d57cbea25cabb80941fea3fbf2625ff0cdcae8900b5fb1c145704f" + "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e", + "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37", + "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac", + "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae", + "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b", + "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc", + "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b", + "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07", + "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70", + "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71", + "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df", + "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6", + "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1", + "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670", + "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7", + "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6", + "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635", + "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899", + "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50", + "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9", + "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085", + "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb", + "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c", + "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3", + "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184", + "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8", + "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506", + "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c", + "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c", + "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b", + "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0", + "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c", + "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa", + "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f", + "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4", + "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c", + "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1", + "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946", + "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d", + "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952", + "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703", + "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8" ], "markers": "python_version >= '3.8'", - "version": "==4.43.0" + "version": "==4.47.2" }, "importlib-resources": { "hashes": [ - "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9", - "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83" + "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a", + "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6" ], "markers": "python_version < '3.10'", - "version": "==6.1.0" + "version": "==6.1.1" }, "kiwisolver": { "hashes": [ @@ -389,50 +401,58 @@ }, "numpy-quaternion": { "hashes": [ - "sha256:0fc5aed22a2170eb2c65aa3a0d10c08883ec9fdc35d10c110d38811f736d609a", - "sha256:158df059771f5c2baa2fa43f166be30c0507aacea7df1c6fd67eb4c404b3fae3", - "sha256:1a82205a785be37c1a2ae28dd13c02a6aaf43e7a1f3ac4cb57f6efc2d2e5d8a1", - "sha256:1ebd03fb341ae3f837d6d9d96df25b1c4bc0dafd9ffcb562eebdae29496f175e", - "sha256:2ebb925346ee4a7c1ac3d9d00383950ad610d7cc672445b7b7f67e0a3a03df40", - "sha256:334376b88dcede4263f1338b4ab40e1124c7a8fc8f81e3c3e1070cc0f5da10a7", - "sha256:364c142af3ba8aac3ee6de9ab652a409133d23d81642c18fae150585b006cf85", - "sha256:3c7de12e8270e6b4fa7da9da372134a56a85eebbb1b1d81e8419e8315cea7227", - "sha256:4605a23c57fead0c20623e55b473fa233b082b5ed4d83553da6c2cb83541f428", - "sha256:4b685200964fd9e654c12cc298d5d086ef0a0313ee2b17d6b9ff29a3a880d803", - "sha256:4f07823341642943d24cddc10f07cb4e32e10f5cc033fb42aa2f181e8bf0699f", - "sha256:53bcaa3c0fb245623a092eb43224e30b883882b3460143487cccf9797fc865ae", - "sha256:556c32f082bb97aab9f41f7154b4d7f004a22c3187f056e78d17bf818644804f", - "sha256:5d9e6bec15afeba28022b7a44fdf28da27fd0422075b76be99c5be70969d52e6", - "sha256:71a5f6fbf64001369f178168a46287dce33157947272073258d20e846b0f40a4", - "sha256:75c734f4b3f887f465da3571afeff924781f53dbf39c8da199fb860b9f4dc3ec", - "sha256:7cfec847bca62ff2ff50b190fb0e7c733a0f7f42ce6ac6385166bf6c814d5b15", - "sha256:7d97d22a082caa924f2ebd998563437884e1f578c5cdb8ba001abc60d2909922", - "sha256:7e7c36d949d09e07bd091bae1cb7c56b7dcedfb2c570f89e75be6de9f37d44a6", - "sha256:8761f80fc4f510147bf690d494668f0944a2d590e2c5ada9d7c62af6a46e81ad", - "sha256:8d635131afbd49dafa9463c78bf1a298c9de35cc759e6008647c714780e68de7", - "sha256:9a7fcf818691aec1250f53c99c7958f57e09489e5ce1371b3a5342b65439da9d", - "sha256:9b17ebddb0bd3fe646fc56b0e8693a92561e704be541bc3dcb4282988ebb01ed", - "sha256:9ebf377c7174f4b32e1078e4607afbb3c4e0d0365dc633d43654f01e3703e800", - "sha256:a0aaa74a13799e13bb9b6a65964401260f7a5482d2f7e50f5e564c8866f8b96f", - "sha256:a3b4ed4ca225c7f5965ddc18a8cba0f7ea8406a869872d18d1f9900420ebdd38", - "sha256:a4db146a130d53cea5d74543950e5ebd01dd7603dfe5a42d4f3ebc76539551bb", - "sha256:accbe7758561a4bb3bd486b5f754b9983bc1be17ee517feb715d7e363833407f", - "sha256:c403eeddfc19cb3b400abbd6daabd9aec9843344e9b9c739f080d27291e3d75e", - "sha256:c521e6ee255c74f1ef604bd8ebdfdc32225d9ac7ce52c731562d4b4e01358793", - "sha256:c5f13b7faa8b9859fba94f1425d9ac6478d74fa2b26f5cb0b8258a48365ee49b", - "sha256:ca29e8f961673932d123a8b2520ef7ded9fee4e426aed628d90ced0749608285", - "sha256:ca37256f544a7e587ab08c1841a30e34aa7b85c7c9663527c61d77fbcad9dda7", - "sha256:ca743f7ca7a86b555cfc7e9f72acb7eb50fd56ec28834432b54b00896ba6363a", - "sha256:ccf9b0fc0e6b2a1f6c5a0bf2e5affbc588cc09d5ba585d176bd92e9f4bdfd7a1", - "sha256:ce50c414e884d8d18615cb6b5c928929e9dcff2f98f4606b2cc7a5b4dd5f5fb4", - "sha256:d35e7bdc02025601d21830c6419e1317059083e1a3ccab68df5113b167e3fc61", - "sha256:ded4c4122481b465e46374d9087da280d712d7ea500b34fc03ae854cfc3c86b5", - "sha256:e34ed9c325dcd631b67dcf30b6f493528228622bc8b8b9abfaf68166fc367151", - "sha256:e4b28a372b1362b75a23d3abf08fcc5a77c950aa554136137c5f2cd5d3a45edb", - "sha256:f9a7ed1ee9954e06e81847600eefa11d162e9cbbd386a0c693f0f681ec731133" + "sha256:02b93874723c38ad1e684d0862899d9266bf9855fd5a5bdcba8793169e672c31", + "sha256:04671ea098c0fe879eb07a24ec80dc09efc674e178f9b58a427f9d2368b2c009", + "sha256:04c4536fdb7f22733631b7953e2db82b27964d96f97423901e749c971cb7f6f2", + "sha256:0560b12235aaab7aee56e94c2df2f7879e0c965b8aea3c6bccaad7f2b4fb031a", + "sha256:0c058ee103024dc15b3232e57204934a53be080d5c75246cdec9eb92e9f56c5f", + "sha256:13958c8628b17f9bc725bb54e910c384e211e54b057cbe069f1615aebae8735d", + "sha256:2fdbc31fdac812ed2ff0287a2d51e1b87d5ec6d2aeea4a667adb14f4b6198bc5", + "sha256:32e34d2ebeeed25b238df22eba0030ba8db4a4e82a7eb6f5e32fda45768990ee", + "sha256:333dea61c9628707223dc062e4a6e0a72bbb4fffd58a84231ea24b959e694bde", + "sha256:37f73d7f84c645bd9be95cb4862bd900b7f99bd2f801232006dde00641bf2fd7", + "sha256:3f89e11f89ded410fb34e6f997d4c7f4cf7c31c3eb9537c035756a5d2a6cc4e3", + "sha256:41968027811fa81157c9bc9f2bf00cc22dc8865d7fb5834f9f83bafc5995b6ec", + "sha256:449ba07ec505dd757aa4ba6df8ef086bdd06c85f4681529ddaecd4ce7d62e792", + "sha256:48bb1fc03b580a9bb89da9d4f8916f87101bc75682611c423bafa031b6d96176", + "sha256:4b9421d46d56fbec0dd625c9909550c66bb81265a76efaecc5621166f18069bf", + "sha256:57d99cee91c7356c62d70817d32432db3da58f4d5f3bd29757c5696f56fa2e86", + "sha256:5c5b7dfb7412b582101ae4e576f15bc6af904f66b24b832aa1fafa3a846c71da", + "sha256:5dd15141aecbf32cdb6bf96bdc13df7dd2f31833011a7f0ef51ecc86872cf8f0", + "sha256:5f994628b10bf29461fb50cf3ce022d0a610e173068414942a9efd746b35b38b", + "sha256:60c1e9f9997205949c770702307451eeffd96f3a2824f4dc49ed42336bd698e2", + "sha256:681aaa2cf4d59fc412ee00188dcdc551c8ff91ea63d54d06f37ec66dd383633d", + "sha256:6c7e82014a51c93fe76322654d9c59f03b2e5cd19d0d6535d606bf7a119d4394", + "sha256:6dd56641fddad6c35d86a6d9f3cee4a786d0a4c6b41ed74d60dad97741835280", + "sha256:713e4357868ebd8e4f3500435fcb49a997a8a9a5f8514e3a79d51f46abcdf2ae", + "sha256:86d46c5f220ed2289d7d53c918b0e2432d6ddeae20c5ca232f3dab6fafe6c340", + "sha256:86f931da5893db57c4da4142045b605cc99d469fb3e6238ae487e080dcd7227e", + "sha256:8e218a5207be1a983d3fd54d710067a6638d324015ba695c0509082a29086284", + "sha256:98bfb77597ea56462be3f94e002640ebc6ecf9d2eeea140f5d1c13145af56a31", + "sha256:9b26f4961fef053d552f5dcea0957b1eb34c99fea92efe1544044013d04e1407", + "sha256:ac5e37ed57c0e2ff938c88d4462a126b16c98581dde0c003eba05741188b7f38", + "sha256:b0f8517c268d748cbfe686214bd53ac7064e85106c90e22bd7cf04940a17323e", + "sha256:b144be3dca3330f8ad5866c561cebbfe3273a5b228ece058c014cdbf8916630d", + "sha256:b343649600eb9f30275380b47ee4430f4393ed3370e5fa3fbb1db0ebbd908228", + "sha256:b4df8ffdcab6f773eec518ed09abb81e233afd9a38534e3a1db0cb0bfc54b370", + "sha256:bb3ab05505ccb5c835a6f0401811d64f23c843e622751956ba77734f7dc20493", + "sha256:bca80ceef24364eb4dc07026e3d5c7cc9932b844888a3a15f27941f0ee6ba5c3", + "sha256:bf6a99191d1d0b3289eb256c1eaf7e290d80d4a306bb31d04121bf9a7eb88701", + "sha256:c2ddf7e16a611f1c07a170d9464d69291eeb734ade2ce50b7f4eb38d9620f007", + "sha256:c829f58ebc908f07487d3351a13ba99c3e39eb5e04aea389ca5175642cfdab15", + "sha256:cab8b1626c6d719639360a6af920c25df3f0248ab04635b72919aa1a05cb575f", + "sha256:cf487d6b56883895ddf22307a0cf8e9949604465154d0cd9b78250d800d07a0d", + "sha256:d11f6f030d1cc7b58afe83fa849422a1c8c3a742b7af30232b98acbe32cd2be6", + "sha256:d725796e9f21eb703ae19448ceea0ab34e850c903ab01fef3de06f7217ae17f5", + "sha256:dec65adaac6bf15f31951e25bf5fe908135db6e223cf2df0112c93afe432d5de", + "sha256:e033eef943a904b9c34c1d9e66570a07fa2c3d4a311a357d1aeb305493092c08", + "sha256:e6b4dd4797e6e77fcdd8b3487893f8af3fe934f1f26839d1605f771f700dded6", + "sha256:e6dcfec4c7f615e6c46411c2034631e0a1934ffc3509e7bd61c3aacce4ecb181", + "sha256:eeeb8a6004a649b4a411fb25fb94a6da8e937de25b7c409c62528c937d1bb47d", + "sha256:eeffe622c5cec8396e61c266f65c75ec54fa4c21688a9633e8737276dc7fcc4b" ], "index": "pypi", - "version": "==2022.4.3" + "version": "==2023.0.2" }, "numpy-stl": { "hashes": [ @@ -554,7 +574,6 @@ "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48", "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868" ], - "index": "pypi", "markers": "python_version >= '3.8'", "version": "==10.2.0" }, @@ -625,12 +644,12 @@ }, "python-utils": { "hashes": [ - "sha256:1970468fff1c0adbd60b9a751e6a786223a9f0373c954571912d9cf4be49b552", - "sha256:e31c1187168c314c984932e99c2d3f973465443493869ae041dd9e2e18e998aa" + "sha256:ec3a672465efb6c673845a43afcfafaa23d2594c24324a40ec18a0c59478dc0b", + "sha256:efdf31c8154667d7dc0317547c8e6d3b506c5d4b6e360e0c89662306262fc0ab" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==3.7.0" + "markers": "python_version >= '3.9'", + "version": "==3.8.1" }, "pytz": { "hashes": [ @@ -649,19 +668,19 @@ }, "typing-extensions": { "hashes": [ - "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", - "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", + "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" ], "markers": "python_version >= '3.8'", - "version": "==4.8.0" + "version": "==4.9.0" }, "tzdata": { "hashes": [ - "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a", - "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda" + "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3", + "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9" ], "markers": "python_version >= '2'", - "version": "==2023.3" + "version": "==2023.4" }, "zipp": { "hashes": [ From 00c30df66b8c4bfe9b6ee863ec0de8010f439f42 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 12:35:50 +0100 Subject: [PATCH 020/456] Remove rapid/ultra rapid GNSS solution --- src/environment/global/gnss_satellites.cpp | 55 ++++++------------- src/environment/global/gnss_satellites.hpp | 37 ++----------- .../global/initialize_gnss_satellites.cpp | 15 ++--- 3 files changed, 25 insertions(+), 82 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index f1170a52c..dfe7748a8 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -148,8 +148,7 @@ bool GnssSatelliteBase::GetWhetherValid(const size_t gnss_satellite_id) const { } // GnssSatellitePosition -pair GnssSatellitePosition::Initialize(vector>& file, int interpolation_method, int interpolation_number, - UltraRapidMode ur_flag) { +pair GnssSatellitePosition::Initialize(vector>& file, int interpolation_method, int interpolation_number) { UNUSED(interpolation_method); interpolation_number_ = interpolation_number; @@ -199,14 +198,8 @@ pair GnssSatellitePosition::Initialize(vector>& f // Calculate number of data lines int start_line, end_line; - if (ur_flag == kNotUse) { - start_line = line; - end_line = line + (num_of_sat + 1) * num_of_time_stamps; - } else { - int offset = (int)ur_flag - (int)kObserve1; - start_line = line + (num_of_sat + 1) * num_of_time_stamps / 8 * offset; - end_line = line + (num_of_sat + 1) * num_of_time_stamps / 8 * (offset + 1); - } + start_line = line; + end_line = line + (num_of_sat + 1) * num_of_time_stamps; // Read time and position data double unix_time = 0; @@ -436,7 +429,7 @@ libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(const size_t gnss_sate } // GnssSatelliteClock -void GnssSatelliteClock::Initialize(vector>& file, string file_extension, int interpolation_number, UltraRapidMode ur_flag, +void GnssSatelliteClock::Initialize(vector>& file, string file_extension, int interpolation_number, pair unix_time_period) { interpolation_number_ = interpolation_number; time_series_clock_offset_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the sat num @@ -479,14 +472,8 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex // Calculate number of data lines int start_line, end_line; - if (ur_flag == kNotUse) { - start_line = line; - end_line = line + (num_of_sat + 1) * num_of_time_stamps; - } else { - int offset = (int)ur_flag - (int)kObserve1; - start_line = line + (num_of_sat + 1) * num_of_time_stamps / 8 * offset; - end_line = line + (num_of_sat + 1) * num_of_time_stamps / 8 * (offset + 1); - } + start_line = line; + end_line = line + (num_of_sat + 1) * num_of_time_stamps; // Read time and clock data double unix_time = 0; @@ -527,21 +514,13 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex } } } else { // .clk30s - if (kPredict1 <= ur_flag && ur_flag <= kPredict4) { - cout << "clock settings has something wrong" << endl; - exit(1); - } time_interval_ = 1e9; for (int page = 0; page < (int)file.size(); ++page) { double start_unix_time, end_unix_time; - if (ur_flag == kNotUse) { - start_unix_time = unix_time_period.first; - end_unix_time = unix_time_period.second + 30; - } else { - start_unix_time = -1; - end_unix_time = 0; - } + start_unix_time = unix_time_period.first; + end_unix_time = unix_time_period.second + 30; + for (int line = 0; line < (int)file.at(page).size(); ++line) { if (file.at(page).at(line).substr(0, 3) != "AS ") continue; @@ -563,7 +542,7 @@ void GnssSatelliteClock::Initialize(vector>& file, string file_ex double unix_time = (double)mktime(time_tm); const double interval = 6 * 60 * 60; if (start_unix_time < 0) { - start_unix_time = unix_time + (ur_flag - kObserve1) * interval; // Fix here to use enum class + start_unix_time = unix_time; end_unix_time = start_unix_time + interval; } @@ -726,10 +705,9 @@ double GnssSatelliteClock::GetClockOffset_m(const size_t gnss_satellite_id) cons // GnssSatelliteInformation GnssSatelliteInformation::GnssSatelliteInformation() {} void GnssSatelliteInformation::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, - UltraRapidMode position_ur_flag, vector>& clock_file, string clock_file_extension, - int clock_interpolation_number, UltraRapidMode clock_ur_flag) { - auto unix_time_period = position_.Initialize(position_file, position_interpolation_method, position_interpolation_number, position_ur_flag); - clock_.Initialize(clock_file, clock_file_extension, clock_interpolation_number, clock_ur_flag, unix_time_period); + vector>& clock_file, string clock_file_extension, int clock_interpolation_number) { + auto unix_time_period = position_.Initialize(position_file, position_interpolation_method, position_interpolation_number); + clock_.Initialize(clock_file, clock_file_extension, clock_interpolation_number, unix_time_period); } void GnssSatelliteInformation::SetUp(const double start_unix_time, const double step_width_s) { @@ -761,10 +739,9 @@ GnssSatellites::GnssSatellites(bool is_calc_enabled) { bool GnssSatellites::IsCalcEnabled() const { return is_calc_enabled_; } void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, - UltraRapidMode position_ur_flag, vector>& clock_file, string clock_file_extension, - int clock_interpolation_number, UltraRapidMode clock_ur_flag) { - gnss_info_.Initialize(position_file, position_interpolation_method, position_interpolation_number, position_ur_flag, clock_file, - clock_file_extension, clock_interpolation_number, clock_ur_flag); + vector>& clock_file, string clock_file_extension, int clock_interpolation_number) { + gnss_info_.Initialize(position_file, position_interpolation_method, position_interpolation_number, clock_file, clock_file_extension, + clock_interpolation_number); return; } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 1dced518a..33e1ba1bd 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -24,28 +24,6 @@ enum class GnssFrameDefinition { kEci = 1 //!< Use ECI frame for GNSS satellite position frame in Add_IonosphericDelay }; -/** - * @enum UltraRapidMode - * @brief Ultra Rapid mode - * @details When Using Ultra Rapid ephemerides, decide to use which 6 hours in each observe and predict 24 hours - * @note TODO: change to enum class - */ -enum UltraRapidMode { - kNotUse, //!< Don't use ultra rapid - - kObserve1, //!< the most oldest observe 6 hours (most precise) - kObserve2, //!< the second oldest observe 6 hours (6 ~ 12) - kObserve3, - kObserve4, - - kPredict1, //!< the most oldest preserve 6 hours (most precise) - kPredict2, - kPredict3, - kPredict4, - - kUnknown -}; - /** * @class GnssSatelliteBase * @brief A class to summarize basic feature of GNSS position and clock calculation @@ -113,11 +91,9 @@ class GnssSatellitePosition : public GnssSatelliteBase { * @param[in] file: File path for position calculation * @param[in] interpolation_method: Interpolation method for position calculation * @param[in] interpolation_number: Interpolation number for position calculation - * @param[in] ur_flag: Ultra Rapid flag for position calculation * @return Start unix time and end unix time */ - std::pair Initialize(std::vector>& file, int interpolation_method, int interpolation_number, - UltraRapidMode ur_flag); + std::pair Initialize(std::vector>& file, int interpolation_method, int interpolation_number); /** * @fn Setup @@ -175,9 +151,8 @@ class GnssSatelliteClock : public GnssSatelliteBase { * @param[in] file: File path for clock calculation * @param[in] file_extension: Extension of the clock file (ex. .sp3, .clk30s) * @param[in] interpolation_number: Interpolation number for clock calculation - * @param[in] ur_flag: Ultra Rapid flag for clock calculation */ - void Initialize(std::vector>& file, std::string file_extension, int interpolation_number, UltraRapidMode ur_flag, + void Initialize(std::vector>& file, std::string file_extension, int interpolation_number, std::pair unix_time_period); /** * @fn SetUp @@ -224,15 +199,12 @@ class GnssSatelliteInformation { * @param[in] position_file: File path for position calculation * @param[in] position_interpolation_method: Interpolation method for position calculation * @param[in] position_interpolation_number: Interpolation number for position calculation - * @param[in] position_ur_flag: Ultra Rapid flag for position calculation * @param[in] clock_file: File path for clock calculation * @param[in] clock_file_extension: Extension of the clock file (ex. .sp3, .clk30s) * @param[in] clock_interpolation_number: Interpolation number for clock calculation - * @param[in] clock_ur_flag: Ultra Rapid flag for clock calculation */ void Initialize(std::vector>& position_file, int position_interpolation_method, int position_interpolation_number, - UltraRapidMode position_ur_flag, std::vector>& clock_file, std::string clock_file_extension, - int clock_interpolation_number, UltraRapidMode clock_ur_flag); + std::vector>& clock_file, std::string clock_file_extension, int clock_interpolation_number); /** * @fn SetUp * @brief Setup GNSS satellite position and clock information @@ -311,8 +283,7 @@ class GnssSatellites : public ILoggable { * @note Parameters are defined in GNSSSat_Info */ void Initialize(std::vector>& position_file, int position_interpolation_method, int position_interpolation_number, - UltraRapidMode position_ur_flag, std::vector>& clock_file, std::string clock_file_extension, - int clock_interpolation_number, UltraRapidMode clock_ur_flag); + std::vector>& clock_file, std::string clock_file_extension, int clock_interpolation_number); /** * @fn IsCalcEnabled * @brief Return calculated enabled flag diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index 6bf8bc2ea..d25992920 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -85,12 +85,10 @@ void ReadFileContents(std::string directory_path, std::string file_name, std::ve *@param [in] first: The first SP3 file name *@param [in] last: The last SP3 file name *@param [out] file_contents: Generated files as multiple vectors of one line strings - *@param [out] ur_flag: Ultra rapid flag */ void ReadSp3Files(std::string directory_path, std::string file_sort, std::string first, std::string last, - std::vector>& file_contents, UltraRapidMode& ur_flag) { + std::vector>& file_contents) { std::string all_directory_path = directory_path + ReturnDirectoryPathWithFileType(file_sort); - ur_flag = kNotUse; if (first.substr(0, 3) == "COD") { std::string file_header = "COD0MGXFIN_"; @@ -123,7 +121,6 @@ void ReadSp3Files(std::string directory_path, std::string file_sort, std::string ++day; } } else if (file_sort.substr(0, 3) == "IGU" || file_sort.find("Ultra") != std::string::npos) { // In case of UR - ur_flag = kUnknown; std::string file_header, file_footer; int gps_week = 0, day = 0; int hour = 0; @@ -299,19 +296,17 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { // Position std::vector> position_file; - UltraRapidMode position_ur_flag = kNotUse; ReadSp3Files(directory_path, ini_file.ReadString(section, "position_file_sort"), ini_file.ReadString(section, "position_first"), - ini_file.ReadString(section, "position_last"), position_file, position_ur_flag); + ini_file.ReadString(section, "position_last"), position_file); int position_interpolation_method = ini_file.ReadInt(section, "position_interpolation_method"); int position_interpolation_number = ini_file.ReadInt(section, "position_interpolation_number"); // Clock std::vector> clock_file; - UltraRapidMode clock_ur_flag = kNotUse; std::string clock_file_extension = ini_file.ReadString(section, "clock_file_extension"); if (clock_file_extension == ".sp3") { ReadSp3Files(directory_path, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), - ini_file.ReadString(section, "clock_last"), clock_file, clock_ur_flag); + ini_file.ReadString(section, "clock_last"), clock_file); } else { ReadClockFiles(directory_path, clock_file_extension, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), ini_file.ReadString(section, "clock_last"), clock_file); @@ -319,8 +314,8 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { int clock_interpolation_number = ini_file.ReadInt(section, "clock_interpolation_number"); // Initialize GNSS satellites - gnss_satellites->Initialize(position_file, position_interpolation_method, position_interpolation_number, position_ur_flag, clock_file, - clock_file_extension, clock_interpolation_number, clock_ur_flag); + gnss_satellites->Initialize(position_file, position_interpolation_method, position_interpolation_number, clock_file, clock_file_extension, + clock_interpolation_number); return gnss_satellites; } From 1884063406c316f952c02e207ca8c632e51417aa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 12:38:39 +0100 Subject: [PATCH 021/456] Remove unused ECI/ECEF enum --- src/environment/global/gnss_satellites.cpp | 17 +++++++---------- src/environment/global/gnss_satellites.hpp | 9 +-------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index dfe7748a8..da7597b52 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -828,7 +828,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz); res += ionospheric_delay; @@ -851,7 +851,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz); res += ionospheric_delay; @@ -874,7 +874,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz, GnssFrameDefinition::kEcef); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz); res -= ionospheric_delay; @@ -904,7 +904,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz, GnssFrameDefinition::kEci); + const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz); res -= ionospheric_delay; @@ -919,8 +919,8 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell } // for Ionospheric delay I[m] -double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz, - const GnssFrameDefinition flag) const { +double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, + const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; @@ -933,10 +933,7 @@ double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const if (altitude >= 1000.0) return 0.0; // there is no Ionosphere above 1000km libra::Vector<3> gnss_position; - if (flag == GnssFrameDefinition::kEcef) - gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); - else if (flag == GnssFrameDefinition::kEci) - gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); + gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); double angle_rad = CalcAngleTwoVectors_rad(receiver_position_m, gnss_position - receiver_position_m); const double default_delay = 20.0; //[m] default delay diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 33e1ba1bd..aa042c440 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -19,11 +19,6 @@ extern const double nan99; //!< Not at Number TODO: Should be moved to another place -enum class GnssFrameDefinition { - kEcef = 0, //!< Use ECEF frame for GNSS satellite position frame in Add_IonosphericDelay - kEci = 1 //!< Use ECI frame for GNSS satellite position frame in Add_IonosphericDelay -}; - /** * @class GnssSatelliteBase * @brief A class to summarize basic feature of GNSS position and clock calculation @@ -410,11 +405,9 @@ class GnssSatellites : public ILoggable { * @param [in] gnss_satellite_id: GNSS satellite ID * @param [in] receiver_position_m: Receiver position [m] * @param [in] frequency_MHz: Frequency [MHz] - * @param [in] flag: The frame definition of the receiver position (ECI or ECEF) * @return Ionospheric delay [m] */ - double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz, - const GnssFrameDefinition flag) const; + double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz) const; bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation GnssSatelliteInformation gnss_info_; //!< GNSS satellites information From 11b27b3c6bb6342b5f910f8f1ca3678125b126f5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 13:22:56 +0100 Subject: [PATCH 022/456] Delete undefined function --- src/environment/global/gnss_satellites.hpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index aa042c440..945319e24 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -392,12 +392,6 @@ class GnssSatellites : public ILoggable { std::string GetLogValue() const override; private: - /** - * @fn TrigonometricInterpolation - * @brief Is this similar with GnssSatelliteBase's function? - */ - double TrigonometricInterpolation(std::vector time_period, std::vector position, double time); - /** * @fn AddIonosphericDelay * @brief Calculation of ionospheric delay From 106b2337032c6194819a46d7ec8045cb018f01db Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 13:25:29 +0100 Subject: [PATCH 023/456] Delete redundant assertion --- src/environment/global/gnss_satellites.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index da7597b52..994b405e6 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -786,7 +786,7 @@ bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { + if (!GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); return res; } @@ -796,7 +796,7 @@ libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_ libra::Vector<3> GnssSatellites::GetPosition_eci_m(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { + if (!GetWhetherValid(gnss_satellite_id)) { libra::Vector<3> res(0); return res; } @@ -805,7 +805,7 @@ libra::Vector<3> GnssSatellites::GetPosition_eci_m(const size_t gnss_satellite_i } double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) { + if (!GetWhetherValid(gnss_satellite_id)) { return 0.0; } From 665fe4eddd425ae55a4cf1edf86a77e2e3efe691 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 13:44:45 +0100 Subject: [PATCH 024/456] Delete redundant assertion --- src/environment/global/gnss_satellites.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 994b405e6..864513155 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -778,10 +778,11 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; - if (gnss_info_.GetWhetherValid(gnss_satellite_id) && gnss_info_.GetWhetherValid(gnss_satellite_id)) + if (gnss_info_.GetWhetherValid(gnss_satellite_id)) { return true; - else + } else { return false; + } } libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id) const { From caf44a74eb4a8d32b45ce7b98dbf5c104a684477 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 13:50:11 +0100 Subject: [PATCH 025/456] Delete redundant assertion --- src/environment/global/gnss_satellites.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 864513155..521a641c4 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -775,15 +775,7 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { return; } -bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; - - if (gnss_info_.GetWhetherValid(gnss_satellite_id)) { - return true; - } else { - return false; - } -} +bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { return gnss_info_.GetWhetherValid(gnss_satellite_id); } libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid From e04c7350a2d3965146dade16aca25ed3484cab96 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 13:51:42 +0100 Subject: [PATCH 026/456] Delete redundant assertion --- src/environment/global/gnss_satellites.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 521a641c4..2767215d1 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -808,7 +808,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; + if (!GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); @@ -831,7 +831,7 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; + if (!GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); @@ -854,7 +854,7 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; + if (!GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); @@ -884,7 +884,7 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; + if (!GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); @@ -915,7 +915,7 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite || !GetWhetherValid(gnss_satellite_id)) return 0.0; + if (!GetWhetherValid(gnss_satellite_id)) return 0.0; const double earth_hemisphere_km = environment::earth_equatorial_radius_m / 1000.0; From 97af74882195f990e03559b81e04a609c6ec38c2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 13:59:26 +0100 Subject: [PATCH 027/456] Fix assertion in getter functoins in GNSS --- src/environment/global/gnss_satellites.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 2767215d1..c542f1838 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -419,12 +419,12 @@ void GnssSatellitePosition::Update(const double current_unix_time) { } libra::Vector<3> GnssSatellitePosition::GetPosition_ecef_m(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return libra::Vector<3>(0.0); + if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); return position_ecef_m_.at(gnss_satellite_id); } libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return libra::Vector<3>(0.0); + if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); return position_eci_m_.at(gnss_satellite_id); } @@ -698,7 +698,7 @@ void GnssSatelliteClock::Update(const double current_unix_time) { } double GnssSatelliteClock::GetClockOffset_m(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return 0.0; + if (!GetWhetherValid(gnss_satellite_id)) return 0.0; return clock_offset_m_.at(gnss_satellite_id); } From 0f271716f8293c6f7e84696f70ab36e6d32f0cb9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 14:24:01 +0100 Subject: [PATCH 028/456] Delete GnssSatelliteInformation --- src/environment/global/gnss_satellites.cpp | 70 +++++++---------- src/environment/global/gnss_satellites.hpp | 89 +--------------------- 2 files changed, 32 insertions(+), 127 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index c542f1838..c6f5b53fa 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -702,29 +702,6 @@ double GnssSatelliteClock::GetClockOffset_m(const size_t gnss_satellite_id) cons return clock_offset_m_.at(gnss_satellite_id); } -// GnssSatelliteInformation -GnssSatelliteInformation::GnssSatelliteInformation() {} -void GnssSatelliteInformation::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, - vector>& clock_file, string clock_file_extension, int clock_interpolation_number) { - auto unix_time_period = position_.Initialize(position_file, position_interpolation_method, position_interpolation_number); - clock_.Initialize(clock_file, clock_file_extension, clock_interpolation_number, unix_time_period); -} - -void GnssSatelliteInformation::SetUp(const double start_unix_time, const double step_width_s) { - position_.SetUp(start_unix_time, step_width_s); - clock_.SetUp(start_unix_time, step_width_s); -} - -void GnssSatelliteInformation::Update(const double current_unix_time) { - position_.Update(current_unix_time); - clock_.Update(current_unix_time); -} - -bool GnssSatelliteInformation::GetWhetherValid(const size_t gnss_satellite_id) const { - if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; - return false; -} - // GnssSatellites GnssSatellites::GnssSatellites(bool is_calc_enabled) { // TODO: Add log enable flag in ini file @@ -740,8 +717,9 @@ bool GnssSatellites::IsCalcEnabled() const { return is_calc_enabled_; } void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, vector>& clock_file, string clock_file_extension, int clock_interpolation_number) { - gnss_info_.Initialize(position_file, position_interpolation_method, position_interpolation_number, clock_file, clock_file_extension, - clock_interpolation_number); + auto unix_time_period = position_.Initialize(position_file, position_interpolation_method, position_interpolation_number); + clock_.Initialize(clock_file, clock_file_extension, clock_interpolation_number, unix_time_period); + return; } @@ -758,7 +736,9 @@ void GnssSatellites::SetUp(const SimulationTime* simulation_time) { start_tm->tm_sec = (int)start_sec; double unix_time = (double)mktime(start_tm) + start_sec - floor(start_sec); std::free(start_tm); - gnss_info_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); + + position_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); + clock_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); start_unix_time_ = unix_time; @@ -770,12 +750,18 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { double elapsed_sec = simulation_time->GetElapsedTime_s(); - gnss_info_.Update(elapsed_sec + start_unix_time_); + double current_unix_time = elapsed_sec + start_unix_time_; + + position_.Update(current_unix_time); + clock_.Update(current_unix_time); return; } -bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { return gnss_info_.GetWhetherValid(gnss_satellite_id); } +bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { + if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; + return false; +} libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id) const { // gnss_satellite_id is wrong or not valid @@ -784,7 +770,7 @@ libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_ return res; } - return gnss_info_.GetPosition_ecef_m(gnss_satellite_id); + return position_.GetPosition_ecef_m(gnss_satellite_id); } libra::Vector<3> GnssSatellites::GetPosition_eci_m(const size_t gnss_satellite_id) const { @@ -794,7 +780,7 @@ libra::Vector<3> GnssSatellites::GetPosition_eci_m(const size_t gnss_satellite_i return res; } - return gnss_info_.GetPosition_eci_m(gnss_satellite_id); + return position_.GetPosition_eci_m(gnss_satellite_id); } double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { @@ -802,7 +788,7 @@ double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { return 0.0; } - return gnss_info_.GetClockOffset_m(gnss_satellite_id); + return clock_.GetClockOffset_m(gnss_satellite_id); } double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, @@ -811,14 +797,14 @@ double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra: if (!GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; - auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); + auto gnss_position = position_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(receiver_position_ecef_m(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz); @@ -834,14 +820,14 @@ double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra:: if (!GetWhetherValid(gnss_satellite_id)) return 0.0; double res = 0.0; - auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); + auto gnss_position = position_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(receiver_position_eci_m(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz); @@ -857,14 +843,14 @@ pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satel if (!GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; - auto gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); + auto gnss_position = position_.GetPosition_ecef_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(receiver_position_ecef_m(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz); @@ -887,14 +873,14 @@ pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satell if (!GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; double res = 0.0; - auto gnss_position = gnss_info_.GetPosition_eci_m(gnss_satellite_id); + auto gnss_position = position_.GetPosition_eci_m(gnss_satellite_id); for (int i = 0; i < 3; ++i) { res += pow(receiver_position_eci_m(i) - gnss_position(i), 2.0); } res = sqrt(res); // clock bias - res += receiver_clock_offset_m - gnss_info_.GetClockOffset_m(gnss_satellite_id); + res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); // ionospheric delay const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz); @@ -926,7 +912,7 @@ double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const if (altitude >= 1000.0) return 0.0; // there is no Ionosphere above 1000km libra::Vector<3> gnss_position; - gnss_position = gnss_info_.GetPosition_ecef_m(gnss_satellite_id); + gnss_position = position_.GetPosition_ecef_m(gnss_satellite_id); double angle_rad = CalcAngleTwoVectors_rad(receiver_position_m, gnss_position - receiver_position_m); const double default_delay = 20.0; //[m] default delay @@ -955,8 +941,8 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector(gnss_info_.GetPosition_ecef_m((int)gps_index), 16); - str_tmp += WriteScalar(gnss_info_.GetClockOffset_m((int)gps_index)); + str_tmp += WriteVector(position_.GetPosition_ecef_m((int)gps_index), 16); + str_tmp += WriteScalar(clock_.GetClockOffset_m((int)gps_index)); } return str_tmp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 945319e24..f24e14630 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -177,83 +177,6 @@ class GnssSatelliteClock : public GnssSatelliteBase { std::vector> clock_bias_; //!< Time series of clock bias of all GNSS satellites expressed in distance before interpolation [m] }; -/** - * @class GnssSatelliteInformation - * @brief Class to manage GNSS satellite information including position and clock - */ -class GnssSatelliteInformation { - public: - /** - * @fn GnssSatelliteInformation - * @brief Constructor - */ - GnssSatelliteInformation(); - /** - * @fn Initialize - * @brief Initialize position and clock - * @param[in] position_file: File path for position calculation - * @param[in] position_interpolation_method: Interpolation method for position calculation - * @param[in] position_interpolation_number: Interpolation number for position calculation - * @param[in] clock_file: File path for clock calculation - * @param[in] clock_file_extension: Extension of the clock file (ex. .sp3, .clk30s) - * @param[in] clock_interpolation_number: Interpolation number for clock calculation - */ - void Initialize(std::vector>& position_file, int position_interpolation_method, int position_interpolation_number, - std::vector>& clock_file, std::string clock_file_extension, int clock_interpolation_number); - /** - * @fn SetUp - * @brief Setup GNSS satellite position and clock information - * @param [in] start_unix_time: Start unix time - * @param [in] step_width_s: Step width [sec] - */ - void SetUp(const double start_unix_time, const double step_width_s); - /** - * @fn Update - * @brief Update GNSS satellite position and clock information - * @param [in] current_unix_time: Current unix time - */ - void Update(const double current_unix_time); - - /** - * @fn GetWhetherValid - * @brief Return true the GNSS satellite information is available for both position and clock information - * @param [in] gnss_satellite_id: Index of GNSS satellite - */ - bool GetWhetherValid(const size_t gnss_satellite_id) const; - /** - * @fn GetPosition_ecef_m - * @brief Return GNSS satellite position vector in the ECEF frame [m] - * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class - */ - inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const { return position_.GetPosition_ecef_m(gnss_satellite_id); } - /** - * @fn GetPosition_eci_m - * @brief Return GNSS satellite position vector in the ECEF frame [m] - * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class - */ - inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return position_.GetPosition_eci_m(gnss_satellite_id); } - /** - * @fn GetClockOffset_m - * @brief Return GNSS satellite clock in distance expression [m] - * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class - */ - inline double GetClockOffset_m(const size_t gnss_satellite_id) const { return clock_.GetClockOffset_m(gnss_satellite_id); } - /** - * @fn GetGnssSatPos - * @brief Return GNSS satellite position information class - */ - inline const GnssSatellitePosition& GetGnssSatPos() const { return position_; }; - /** - * @fn GetGnssSatClock - * @brief Return GNSS satellite clock information class - */ - inline const GnssSatelliteClock& GetGnssSatClock() const { return clock_; } - - private: - GnssSatellitePosition position_; //!< GNSS satellite position information - GnssSatelliteClock clock_; //!< GNSS satellite clock information -}; - /** * @class GnssSatellites * @brief Class to calculate GNSS satellite position and related states @@ -309,11 +232,6 @@ class GnssSatellites : public ILoggable { * @brief Return start unix time */ inline double GetStartUnixTime() const { return start_unix_time_; } - /** - * @fn GetInformation - * @brief Return GNSS satellite information class - */ - inline const GnssSatelliteInformation& GetInformation() const { return gnss_info_; } /** * @fn GetPosition_ecef_m @@ -403,9 +321,10 @@ class GnssSatellites : public ILoggable { */ double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz) const; - bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation - GnssSatelliteInformation gnss_info_; //!< GNSS satellites information - double start_unix_time_; //!< Start unix time + bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation + GnssSatellitePosition position_; //!< GNSS satellite position information + GnssSatelliteClock clock_; //!< GNSS satellite clock information + double start_unix_time_; //!< Start unix time }; #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ From abe07f02b2e6404f65e49cf3e1f5daaa63ecb448 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 14:34:31 +0100 Subject: [PATCH 029/456] Move simple functions to inline functions --- src/environment/global/gnss_satellites.cpp | 56 --------------------- src/environment/global/gnss_satellites.hpp | 57 ++++++++++++++++++---- 2 files changed, 48 insertions(+), 65 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index c6f5b53fa..7b29073e4 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -13,7 +13,6 @@ #include "environment/global/physical_constants.hpp" #include "library/external/sgp4/sgp4ext.h" //for jday() #include "library/external/sgp4/sgp4unit.h" //for gstime() -#include "library/gnss/gnss_satellite_number.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/utilities/macros.hpp" @@ -142,11 +141,6 @@ double GnssSatelliteBase::LagrangeInterpolation(const vector& time_vecto return res; } -bool GnssSatelliteBase::GetWhetherValid(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; - return validate_.at(gnss_satellite_id); -} - // GnssSatellitePosition pair GnssSatellitePosition::Initialize(vector>& file, int interpolation_method, int interpolation_number) { UNUSED(interpolation_method); @@ -418,16 +412,6 @@ void GnssSatellitePosition::Update(const double current_unix_time) { } } -libra::Vector<3> GnssSatellitePosition::GetPosition_ecef_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); - return position_ecef_m_.at(gnss_satellite_id); -} - -libra::Vector<3> GnssSatellitePosition::GetPosition_eci_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); - return position_eci_m_.at(gnss_satellite_id); -} - // GnssSatelliteClock void GnssSatelliteClock::Initialize(vector>& file, string file_extension, int interpolation_number, pair unix_time_period) { @@ -697,11 +681,6 @@ void GnssSatelliteClock::Update(const double current_unix_time) { } } -double GnssSatelliteClock::GetClockOffset_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) return 0.0; - return clock_offset_m_.at(gnss_satellite_id); -} - // GnssSatellites GnssSatellites::GnssSatellites(bool is_calc_enabled) { // TODO: Add log enable flag in ini file @@ -713,8 +692,6 @@ GnssSatellites::GnssSatellites(bool is_calc_enabled) { } } -bool GnssSatellites::IsCalcEnabled() const { return is_calc_enabled_; } - void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, vector>& clock_file, string clock_file_extension, int clock_interpolation_number) { auto unix_time_period = position_.Initialize(position_file, position_interpolation_method, position_interpolation_number); @@ -758,39 +735,6 @@ void GnssSatellites::Update(const SimulationTime* simulation_time) { return; } -bool GnssSatellites::GetWhetherValid(const size_t gnss_satellite_id) const { - if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; - return false; -} - -libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id) const { - // gnss_satellite_id is wrong or not valid - if (!GetWhetherValid(gnss_satellite_id)) { - libra::Vector<3> res(0); - return res; - } - - return position_.GetPosition_ecef_m(gnss_satellite_id); -} - -libra::Vector<3> GnssSatellites::GetPosition_eci_m(const size_t gnss_satellite_id) const { - // gnss_satellite_id is wrong or not valid - if (!GetWhetherValid(gnss_satellite_id)) { - libra::Vector<3> res(0); - return res; - } - - return position_.GetPosition_eci_m(gnss_satellite_id); -} - -double GnssSatellites::GetClockOffset_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) { - return 0.0; - } - - return clock_.GetClockOffset_m(gnss_satellite_id); -} - double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, const double frequency_MHz) const { // gnss_satellite_id is wrong or not validate diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index f24e14630..0d2237e80 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -13,6 +13,7 @@ #include #include +#include "library/gnss/gnss_satellite_number.hpp" #include "library/logger/loggable.hpp" #include "library/math/vector.hpp" #include "simulation_time.hpp" @@ -30,7 +31,10 @@ class GnssSatelliteBase { * @brief Return true the GNSS satellite information is available * @param [in] gnss_satellite_id: Index of GNSS satellite */ - bool GetWhetherValid(const size_t gnss_satellite_id) const; + inline bool GetWhetherValid(const size_t gnss_satellite_id) const { + if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; + return validate_.at(gnss_satellite_id); + } protected: /** @@ -109,13 +113,19 @@ class GnssSatellitePosition : public GnssSatelliteBase { * @brief Return GNSS satellite position vector in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const; + inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const { + if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); + return position_ecef_m_.at(gnss_satellite_id); + } /** * @fn GetPosition_eci_m * @brief Return GNSS satellite position vector in the ECI frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const; + inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { + if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); + return position_eci_m_.at(gnss_satellite_id); + } private: std::vector> position_ecef_m_; //!< List of GNSS satellite position at specific time in the ECEF frame [m] @@ -167,7 +177,10 @@ class GnssSatelliteClock : public GnssSatelliteBase { * @brief Return GNSS satellite clock in distance expression [m] * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class */ - double GetClockOffset_m(const size_t gnss_satellite_id) const; + inline double GetClockOffset_m(const size_t gnss_satellite_id) const { + if (!GetWhetherValid(gnss_satellite_id)) return 0.0; + return clock_offset_m_.at(gnss_satellite_id); + } private: std::vector clock_offset_m_; //!< List of clock bias of all GNSS satellites at specific time expressed in distance [m] @@ -206,7 +219,7 @@ class GnssSatellites : public ILoggable { * @fn IsCalcEnabled * @brief Return calculated enabled flag */ - bool IsCalcEnabled() const; + inline bool IsCalcEnabled() const { return is_calc_enabled_; } /** * @fn SetUp @@ -226,7 +239,10 @@ class GnssSatellites : public ILoggable { * @brief Return true the GNSS satellite information is available for both position and clock * @param [in] gnss_satellite_id: Index of GNSS satellite */ - bool GetWhetherValid(const size_t gnss_satellite_id) const; + inline bool GetWhetherValid(const size_t gnss_satellite_id) const { + if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; + return false; + } /** * @fn GetStartUnixTime * @brief Return start unix time @@ -238,19 +254,42 @@ class GnssSatellites : public ILoggable { * @brief Return GNSS satellite position in the ECEF frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID */ - libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const; + inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const { + // gnss_satellite_id is wrong or not valid + if (!GetWhetherValid(gnss_satellite_id)) { + libra::Vector<3> res(0); + return res; + } + + return position_.GetPosition_ecef_m(gnss_satellite_id); + } /** * @fn GetPosition_eci_m * @brief Return GNSS satellite position in the ECI frame [m] * @param [in] gnss_satellite_id: GNSS satellite ID */ - libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const; + inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { + // gnss_satellite_id is wrong or not valid + if (!GetWhetherValid(gnss_satellite_id)) { + libra::Vector<3> res(0); + return res; + } + + return position_.GetPosition_eci_m(gnss_satellite_id); + } + /** * @fn GetClockOffset_m * @brief Return GNSS satellite clock * @param [in] gnss_satellite_id: GNSS satellite ID */ - double GetClockOffset_m(const size_t gnss_satellite_id) const; + inline double GetClockOffset_m(const size_t gnss_satellite_id) const { + if (!GetWhetherValid(gnss_satellite_id)) { + return 0.0; + } + + return clock_.GetClockOffset_m(gnss_satellite_id); + } /** * @fn GetPseudoRangeEcef From 3dd3d193c76007b138dac20f915c4eb3f3b44c2b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 15:15:02 +0100 Subject: [PATCH 030/456] Remove unused header includes --- src/environment/global/gnss_satellites.cpp | 7 ------- src/environment/global/gnss_satellites.hpp | 5 ----- 2 files changed, 12 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 7b29073e4..d1c3d9069 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -5,14 +5,7 @@ #include "gnss_satellites.hpp" -#include -#include -#include -#include - #include "environment/global/physical_constants.hpp" -#include "library/external/sgp4/sgp4ext.h" //for jday() -#include "library/external/sgp4/sgp4unit.h" //for gstime() #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/utilities/macros.hpp" diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 0d2237e80..e88999478 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -6,11 +6,6 @@ #ifndef S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ #define S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ -#include -#include -#include -#include -#include #include #include "library/gnss/gnss_satellite_number.hpp" From b08073f5746dd10aa26db4ad0d775e54a10779dd Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 16:07:38 +0100 Subject: [PATCH 031/456] Add pip list to show installed packages --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3fd5843d9..d3ae0dc23 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -248,6 +248,7 @@ jobs: run: | pip install pipenv pipenv install + pipenv run pip list pipenv run python plot_gs_visibility.py --no-gui ls ./*_gs_visibility.png From efc30fe1cf8ea3939a7a54768ae47a34200b91b3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 16:27:48 +0100 Subject: [PATCH 032/456] Fix python-util version not to require Python 3.9 --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 26 +++++++++----------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index a93bb7385..a0dfe2915 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -10,7 +10,7 @@ numpy = "==1.24.3" pandas = "==2.0.3" numpy-stl = "==3.0.1" numpy-quaternion = "*" -python-utils = "*" +python-utils = "==3.5.2" [dev-packages] diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index df9425272..9f1b6ad36 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "16b402d217a5bc994db3911f6f95a9abbe4e58c655feedf6a880934788982ac6" + "sha256": "8e759022ca4e6b4557694a4c6c39e23ea08359fd0d75f20aa3f5dd098e99f05b" }, "pipfile-spec": 6, "requires": { @@ -468,7 +468,7 @@ "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], - "markers": "python_version >= '3.7'", + "markers": "python_version >= '3.5'", "version": "==23.2" }, "pandas": { @@ -644,19 +644,19 @@ }, "python-utils": { "hashes": [ - "sha256:ec3a672465efb6c673845a43afcfafaa23d2594c24324a40ec18a0c59478dc0b", - "sha256:efdf31c8154667d7dc0317547c8e6d3b506c5d4b6e360e0c89662306262fc0ab" + "sha256:68198854fc276bc4b2403b261703c218e01ef564dcb072a7096ed9ea7aa5130c", + "sha256:8bfefc3430f1c48408fa0e5958eee51d39840a5a987c2181a579e99ab6fe5ca6" ], "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==3.8.1" + "markers": "python_version >= '3.7'", + "version": "==3.5.2" }, "pytz": { "hashes": [ - "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b", - "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7" + "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40", + "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a" ], - "version": "==2023.3.post1" + "version": "==2023.4" }, "six": { "hashes": [ @@ -666,14 +666,6 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, - "typing-extensions": { - "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" - ], - "markers": "python_version >= '3.8'", - "version": "==4.9.0" - }, "tzdata": { "hashes": [ "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3", From 430c560cd2896726297ef4eac88310e943a3d0e0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 29 Jan 2024 17:00:32 +0100 Subject: [PATCH 033/456] Fix version of numpy-quaternion --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index a0dfe2915..a0b041da4 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -9,7 +9,7 @@ matplotlib = "==3.7.2" numpy = "==1.24.3" pandas = "==2.0.3" numpy-stl = "==3.0.1" -numpy-quaternion = "*" +numpy-quaternion = "==2023.0.2" python-utils = "==3.5.2" [dev-packages] diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index 9f1b6ad36..68f7a95d2 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "8e759022ca4e6b4557694a4c6c39e23ea08359fd0d75f20aa3f5dd098e99f05b" + "sha256": "9f17d2eee9fa29f1898721cf5fb0055312fecfba2fc95a681f0988cbdce2c2d6" }, "pipfile-spec": 6, "requires": { From 94b58a9b5d7c64dadbb34ab2d8d0f9381ef1e71b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 10:48:21 +0100 Subject: [PATCH 034/456] Add directory for GNSS final products --- data/sample/initialize_files/gnss/final_products/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/sample/initialize_files/gnss/final_products/.gitkeep diff --git a/data/sample/initialize_files/gnss/final_products/.gitkeep b/data/sample/initialize_files/gnss/final_products/.gitkeep new file mode 100644 index 000000000..e69de29bb From 6fd92280d310c102541d795169043ccd6af3d33d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 10:48:58 +0100 Subject: [PATCH 035/456] Rename default directory path for GNSS --- data/sample/initialize_files/sample_gnss.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 8072899d4..cc8d50289 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -1,5 +1,5 @@ [GNSS_SATELLITES] -directory_path = EXT_LIB_DIR_FROM_EXE/sp3/ +directory_path = EXT_LIB_DIR_FROM_EXE/gnss/final_products/ calculation = DISABLE // Choose from IGS, CODE_Final, JAXA_Final, QZSS_Final From 43a76b918a109c85f7a4cb6422d32334ac654e7d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 10:52:33 +0100 Subject: [PATCH 036/456] Add logging setting for GNSS --- data/sample/initialize_files/sample_gnss.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index cc8d50289..3c3587c24 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -1,6 +1,7 @@ [GNSS_SATELLITES] directory_path = EXT_LIB_DIR_FROM_EXE/gnss/final_products/ calculation = DISABLE +logging = DISABLE // Choose from IGS, CODE_Final, JAXA_Final, QZSS_Final position_file_sort = IGS From b8ae3df4373de72279a80d422f9c44d394ef0a55 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:08:24 +0100 Subject: [PATCH 037/456] Summerize GNSS product file limitations --- data/sample/initialize_files/sample_gnss.ini | 30 ++++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 3c3587c24..0550e0e4a 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -3,28 +3,34 @@ directory_path = EXT_LIB_DIR_FROM_EXE/gnss/final_products/ calculation = DISABLE logging = DISABLE -// Choose from IGS, CODE_Final, JAXA_Final, QZSS_Final -position_file_sort = IGS +// Supporting the following products +// - IGS precise orbits and clocks final products for GPS and GLONASS +// - https://igs.org/products/#orbits_clocks +// - MGEX precise orbits and clocks final products for all navigation satellite systems +// - https://igs.org/mgex/data-products/#orbit_clock + +// Header ID of the reference files +// Choose from ***0OPSFIN or ***0MGXFIN +// ***: ID of the analysis center or IGS +file_name_header = IGS0OPSFIN + +// Extension of the reference clock files +// Choose frome SP3, CLK_30s or CLK +clock_file_extension = SP3 // As small as possible within the range. position_first = igs21610.sp3 position_last = igs21613.sp3 +// As small as possible within the range. +clock_first = igs21610.clk_30s +clock_last = igs21613.clk_30s + // Choose from 0: Lagrange, 1: Trigonometric : temporarily, only Trigonometric is valid, Lagrange is not yet implemented. position_interpolation_method = 1 // If you chose Trigonometric as interpolation method, you must choose odds number here. position_interpolation_number = 9 -// Choose frome .sp3, .clk_30s or .clk -clock_file_extension = .clk_30s - -// Choose from IGS, CODE_Final, JAXA_Final, QZSS_Final -// If you choose clk_30s, should choose the one equivalent to final, if you choose clk should choose the one equivalent to rapid. -clock_file_sort = IGS - -// As small as possible within the range. -clock_first = igs21610.clk_30s -clock_last = igs21613.clk_30s // The method is fixed with Lagrange interpolation, 3 (quadratic) recommended clock_interpolation_number = 3 From 5776367c8a5092c4b9883388ea709993fe99f0b4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:10:56 +0100 Subject: [PATCH 038/456] fix small --- data/sample/initialize_files/sample_gnss.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 0550e0e4a..295c6f7de 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -15,7 +15,7 @@ logging = DISABLE file_name_header = IGS0OPSFIN // Extension of the reference clock files -// Choose frome SP3, CLK_30s or CLK +// Choose frome SP3, CLK, or CLK_30S clock_file_extension = SP3 // As small as possible within the range. From 797bda73916a419a0cd9694c82aca10d93708af6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:15:26 +0100 Subject: [PATCH 039/456] Modify duration of GNSS input file --- data/sample/initialize_files/sample_gnss.ini | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 295c6f7de..0d1345aa4 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -18,13 +18,12 @@ file_name_header = IGS0OPSFIN // Choose frome SP3, CLK, or CLK_30S clock_file_extension = SP3 -// As small as possible within the range. -position_first = igs21610.sp3 -position_last = igs21613.sp3 - -// As small as possible within the range. -clock_first = igs21610.clk_30s -clock_last = igs21613.clk_30s +// Duration of the input product files +// YYYYDDD +// - YYYY: Year +// - DDD: Day of year +begining_date = 2023126 +position_last = 2023129 // Choose from 0: Lagrange, 1: Trigonometric : temporarily, only Trigonometric is valid, Lagrange is not yet implemented. position_interpolation_method = 1 From eaccc0e7c1e5a58ab3a080f63d014d1beb4e3a72 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:16:01 +0100 Subject: [PATCH 040/456] Remove interpolation settings --- data/sample/initialize_files/sample_gnss.ini | 9 --------- 1 file changed, 9 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 0d1345aa4..d5022cdfa 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -24,12 +24,3 @@ clock_file_extension = SP3 // - DDD: Day of year begining_date = 2023126 position_last = 2023129 - -// Choose from 0: Lagrange, 1: Trigonometric : temporarily, only Trigonometric is valid, Lagrange is not yet implemented. -position_interpolation_method = 1 - -// If you chose Trigonometric as interpolation method, you must choose odds number here. -position_interpolation_number = 9 - -// The method is fixed with Lagrange interpolation, 3 (quadratic) recommended -clock_interpolation_number = 3 From fae7f70425c5da0fd62beac2722f11691fc61831 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:17:26 +0100 Subject: [PATCH 041/456] fix small --- data/sample/initialize_files/sample_gnss.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index d5022cdfa..83429159a 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -8,6 +8,7 @@ logging = DISABLE // - https://igs.org/products/#orbits_clocks // - MGEX precise orbits and clocks final products for all navigation satellite systems // - https://igs.org/mgex/data-products/#orbit_clock +// We use new long file name. // Header ID of the reference files // Choose from ***0OPSFIN or ***0MGXFIN From 7696139f56e0775663b179bab6f9d71138cf34f2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:19:33 +0100 Subject: [PATCH 042/456] fix small --- data/sample/initialize_files/sample_gnss.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 83429159a..5a544dfe7 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -23,5 +23,5 @@ clock_file_extension = SP3 // YYYYDDD // - YYYY: Year // - DDD: Day of year -begining_date = 2023126 -position_last = 2023129 +start_date = 2023126 +end_date = 2023129 From 83bbfa882a5624230aa14ba260f38fef606861b5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:31:09 +0100 Subject: [PATCH 043/456] Remove unused interpolation_method variables --- src/environment/global/gnss_satellites.cpp | 10 ++++------ src/environment/global/gnss_satellites.hpp | 5 ++--- src/environment/global/initialize_gnss_satellites.cpp | 4 +--- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index d1c3d9069..4c217007e 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -135,9 +135,7 @@ double GnssSatelliteBase::LagrangeInterpolation(const vector& time_vecto } // GnssSatellitePosition -pair GnssSatellitePosition::Initialize(vector>& file, int interpolation_method, int interpolation_number) { - UNUSED(interpolation_method); - +pair GnssSatellitePosition::Initialize(vector>& file, int interpolation_number) { interpolation_number_ = interpolation_number; // Expansion @@ -685,9 +683,9 @@ GnssSatellites::GnssSatellites(bool is_calc_enabled) { } } -void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_method, int position_interpolation_number, - vector>& clock_file, string clock_file_extension, int clock_interpolation_number) { - auto unix_time_period = position_.Initialize(position_file, position_interpolation_method, position_interpolation_number); +void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_number, vector>& clock_file, + string clock_file_extension, int clock_interpolation_number) { + auto unix_time_period = position_.Initialize(position_file, position_interpolation_number); clock_.Initialize(clock_file, clock_file_extension, clock_interpolation_number, unix_time_period); return; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index e88999478..dad5ab2bb 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -83,11 +83,10 @@ class GnssSatellitePosition : public GnssSatelliteBase { * @fn Initialize * @brief Initialize GNSS satellite position * @param[in] file: File path for position calculation - * @param[in] interpolation_method: Interpolation method for position calculation * @param[in] interpolation_number: Interpolation number for position calculation * @return Start unix time and end unix time */ - std::pair Initialize(std::vector>& file, int interpolation_method, int interpolation_number); + std::pair Initialize(std::vector>& file, int interpolation_number); /** * @fn Setup @@ -208,7 +207,7 @@ class GnssSatellites : public ILoggable { * @brief Initialize function * @note Parameters are defined in GNSSSat_Info */ - void Initialize(std::vector>& position_file, int position_interpolation_method, int position_interpolation_number, + void Initialize(std::vector>& position_file, int position_interpolation_number, std::vector>& clock_file, std::string clock_file_extension, int clock_interpolation_number); /** * @fn IsCalcEnabled diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index d25992920..1d0f9c26a 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -298,7 +298,6 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { std::vector> position_file; ReadSp3Files(directory_path, ini_file.ReadString(section, "position_file_sort"), ini_file.ReadString(section, "position_first"), ini_file.ReadString(section, "position_last"), position_file); - int position_interpolation_method = ini_file.ReadInt(section, "position_interpolation_method"); int position_interpolation_number = ini_file.ReadInt(section, "position_interpolation_number"); // Clock @@ -314,8 +313,7 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { int clock_interpolation_number = ini_file.ReadInt(section, "clock_interpolation_number"); // Initialize GNSS satellites - gnss_satellites->Initialize(position_file, position_interpolation_method, position_interpolation_number, clock_file, clock_file_extension, - clock_interpolation_number); + gnss_satellites->Initialize(position_file, position_interpolation_number, clock_file, clock_file_extension, clock_interpolation_number); return gnss_satellites; } From caa735b3c7cfe9a5182023ad70f5be6a8d126f89 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 11:37:30 +0100 Subject: [PATCH 044/456] Use constant number for interpolation because it is usually fixed --- src/environment/global/gnss_satellites.cpp | 16 +++++++--------- src/environment/global/gnss_satellites.hpp | 11 ++++------- .../global/initialize_gnss_satellites.cpp | 4 +--- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 4c217007e..e2a604caf 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -135,8 +135,8 @@ double GnssSatelliteBase::LagrangeInterpolation(const vector& time_vecto } // GnssSatellitePosition -pair GnssSatellitePosition::Initialize(vector>& file, int interpolation_number) { - interpolation_number_ = interpolation_number; +pair GnssSatellitePosition::Initialize(vector>& file) { + interpolation_number_ = 9; // 9 is recommended in the paper // Expansion time_series_position_ecef_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the satellite number @@ -404,9 +404,8 @@ void GnssSatellitePosition::Update(const double current_unix_time) { } // GnssSatelliteClock -void GnssSatelliteClock::Initialize(vector>& file, string file_extension, int interpolation_number, - pair unix_time_period) { - interpolation_number_ = interpolation_number; +void GnssSatelliteClock::Initialize(vector>& file, string file_extension, pair unix_time_period) { + interpolation_number_ = 3; // Quadratic interpolation is recommended time_series_clock_offset_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the sat num unix_time_list.resize(kTotalNumberOfGnssSatellite); @@ -683,10 +682,9 @@ GnssSatellites::GnssSatellites(bool is_calc_enabled) { } } -void GnssSatellites::Initialize(vector>& position_file, int position_interpolation_number, vector>& clock_file, - string clock_file_extension, int clock_interpolation_number) { - auto unix_time_period = position_.Initialize(position_file, position_interpolation_number); - clock_.Initialize(clock_file, clock_file_extension, clock_interpolation_number, unix_time_period); +void GnssSatellites::Initialize(vector>& position_file, vector>& clock_file, string clock_file_extension) { + auto unix_time_period = position_.Initialize(position_file); + clock_.Initialize(clock_file, clock_file_extension, unix_time_period); return; } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index dad5ab2bb..501c52a50 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -83,10 +83,9 @@ class GnssSatellitePosition : public GnssSatelliteBase { * @fn Initialize * @brief Initialize GNSS satellite position * @param[in] file: File path for position calculation - * @param[in] interpolation_number: Interpolation number for position calculation * @return Start unix time and end unix time */ - std::pair Initialize(std::vector>& file, int interpolation_number); + std::pair Initialize(std::vector>& file); /** * @fn Setup @@ -149,10 +148,8 @@ class GnssSatelliteClock : public GnssSatelliteBase { * @brief Initialize GNSS satellite clock * @param[in] file: File path for clock calculation * @param[in] file_extension: Extension of the clock file (ex. .sp3, .clk30s) - * @param[in] interpolation_number: Interpolation number for clock calculation */ - void Initialize(std::vector>& file, std::string file_extension, int interpolation_number, - std::pair unix_time_period); + void Initialize(std::vector>& file, std::string file_extension, std::pair unix_time_period); /** * @fn SetUp * @brief Setup GNSS satellite clock information @@ -207,8 +204,8 @@ class GnssSatellites : public ILoggable { * @brief Initialize function * @note Parameters are defined in GNSSSat_Info */ - void Initialize(std::vector>& position_file, int position_interpolation_number, - std::vector>& clock_file, std::string clock_file_extension, int clock_interpolation_number); + void Initialize(std::vector>& position_file, std::vector>& clock_file, + std::string clock_file_extension); /** * @fn IsCalcEnabled * @brief Return calculated enabled flag diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index 1d0f9c26a..10cbc2d7d 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -298,7 +298,6 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { std::vector> position_file; ReadSp3Files(directory_path, ini_file.ReadString(section, "position_file_sort"), ini_file.ReadString(section, "position_first"), ini_file.ReadString(section, "position_last"), position_file); - int position_interpolation_number = ini_file.ReadInt(section, "position_interpolation_number"); // Clock std::vector> clock_file; @@ -310,10 +309,9 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { ReadClockFiles(directory_path, clock_file_extension, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), ini_file.ReadString(section, "clock_last"), clock_file); } - int clock_interpolation_number = ini_file.ReadInt(section, "clock_interpolation_number"); // Initialize GNSS satellites - gnss_satellites->Initialize(position_file, position_interpolation_number, clock_file, clock_file_extension, clock_interpolation_number); + gnss_satellites->Initialize(position_file, clock_file, clock_file_extension); return gnss_satellites; } From ee7e9d3fef9742799ecec53f611089ba0e0dd362 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 13:08:10 +0100 Subject: [PATCH 045/456] Add log enable flag in InitGnss --- src/environment/global/gnss_satellites.cpp | 10 ---------- src/environment/global/gnss_satellites.hpp | 8 +++++++- src/environment/global/initialize_gnss_satellites.cpp | 6 +++++- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index e2a604caf..88362d327 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -672,16 +672,6 @@ void GnssSatelliteClock::Update(const double current_unix_time) { } // GnssSatellites -GnssSatellites::GnssSatellites(bool is_calc_enabled) { - // TODO: Add log enable flag in ini file - is_calc_enabled_ = is_calc_enabled; - if (is_calc_enabled_) { - is_log_enabled_ = true; - } else { - is_log_enabled_ = false; - } -} - void GnssSatellites::Initialize(vector>& position_file, vector>& clock_file, string clock_file_extension) { auto unix_time_period = position_.Initialize(position_file); clock_.Initialize(clock_file, clock_file_extension, unix_time_period); diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 501c52a50..f01131012 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -192,7 +192,13 @@ class GnssSatellites : public ILoggable { * @brief Constructor * @param [in] is_calc_enabled: Flag to manage the GNSS satellite position calculation */ - GnssSatellites(bool is_calc_enabled); + GnssSatellites(const bool is_calc_enabled = false, const bool is_log_enabled = false) : is_calc_enabled_(is_calc_enabled) { + if (!is_calc_enabled_) { + is_log_enabled_ = false; + } else { + is_log_enabled_ = is_log_enabled; + } + } /** * @fn ~GnssSatellites * @brief Destructor diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index 10cbc2d7d..e966260d2 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -287,7 +287,11 @@ void ReadClockFiles(std::string directory_path, std::string extension, std::stri GnssSatellites* InitGnssSatellites(std::string file_name) { IniAccess ini_file(file_name); char section[] = "GNSS_SATELLITES"; - GnssSatellites* gnss_satellites = new GnssSatellites(ini_file.ReadEnable(section, "calculation")); + + const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); + const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); + + GnssSatellites* gnss_satellites = new GnssSatellites(is_calc_enable, is_log_enable); if (!gnss_satellites->IsCalcEnabled()) { return gnss_satellites; } From fdb2979fe8eb16821cb7f80865ca0d808c48d426 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 13:13:31 +0100 Subject: [PATCH 046/456] Modify InitGnssSatellite to suit with the updated ini file --- .../global/initialize_gnss_satellites.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index e966260d2..c1910d9e1 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -297,21 +297,22 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { } std::string directory_path = ini_file.ReadString(section, "directory_path"); + std::string file_name_header = ini_file.ReadString(section, "file_name_header"); + + std::string start_date = ini_file.ReadString(section, "start_date"); + std::string end_date = ini_file.ReadString(section, "end_date"); // Position std::vector> position_file; - ReadSp3Files(directory_path, ini_file.ReadString(section, "position_file_sort"), ini_file.ReadString(section, "position_first"), - ini_file.ReadString(section, "position_last"), position_file); + ReadSp3Files(directory_path, file_name_header, start_date, end_date, position_file); // Clock - std::vector> clock_file; std::string clock_file_extension = ini_file.ReadString(section, "clock_file_extension"); - if (clock_file_extension == ".sp3") { - ReadSp3Files(directory_path, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), - ini_file.ReadString(section, "clock_last"), clock_file); + std::vector> clock_file; + if (clock_file_extension == "SP3") { + ReadSp3Files(directory_path, file_name_header, start_date, end_date, clock_file); } else { - ReadClockFiles(directory_path, clock_file_extension, ini_file.ReadString(section, "clock_file_sort"), ini_file.ReadString(section, "clock_first"), - ini_file.ReadString(section, "clock_last"), clock_file); + ReadClockFiles(directory_path, clock_file_extension, file_name_header, start_date, end_date, clock_file); } // Initialize GNSS satellites From 8f6624b38a5bcfc919a2fd46d8cdd02e3025814f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 13:15:10 +0100 Subject: [PATCH 047/456] Add const --- src/environment/global/initialize_gnss_satellites.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index c1910d9e1..1bd54d491 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -296,18 +296,18 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { return gnss_satellites; } - std::string directory_path = ini_file.ReadString(section, "directory_path"); - std::string file_name_header = ini_file.ReadString(section, "file_name_header"); + const std::string directory_path = ini_file.ReadString(section, "directory_path"); + const std::string file_name_header = ini_file.ReadString(section, "file_name_header"); - std::string start_date = ini_file.ReadString(section, "start_date"); - std::string end_date = ini_file.ReadString(section, "end_date"); + const std::string start_date = ini_file.ReadString(section, "start_date"); + const std::string end_date = ini_file.ReadString(section, "end_date"); // Position std::vector> position_file; ReadSp3Files(directory_path, file_name_header, start_date, end_date, position_file); // Clock - std::string clock_file_extension = ini_file.ReadString(section, "clock_file_extension"); + const std::string clock_file_extension = ini_file.ReadString(section, "clock_file_extension"); std::vector> clock_file; if (clock_file_extension == "SP3") { ReadSp3Files(directory_path, file_name_header, start_date, end_date, clock_file); From a9d5a234bc28d872fa91172e40a92828aaed6e43 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 14:31:20 +0100 Subject: [PATCH 048/456] Fix footer input data --- data/sample/initialize_files/sample_gnss.ini | 17 +++++++++++++---- .../global/initialize_gnss_satellites.cpp | 8 ++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 5a544dfe7..660c8fa00 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -9,15 +9,24 @@ logging = DISABLE // - MGEX precise orbits and clocks final products for all navigation satellite systems // - https://igs.org/mgex/data-products/#orbit_clock // We use new long file name. +// - Orbit file: [file_name_header]_YYYYDDD0000_01D_[orbit_data_period]_ORB.SP3 +// - Clock file: [file_name_header]_YYYYDDD0000_01D_[clock_file_name_hooter] +// - Users can also use clock information in the orbit SP3 file -// Header ID of the reference files +// Header information of the reference files // Choose from ***0OPSFIN or ***0MGXFIN // ***: ID of the analysis center or IGS file_name_header = IGS0OPSFIN -// Extension of the reference clock files -// Choose frome SP3, CLK, or CLK_30S -clock_file_extension = SP3 +// Data period in the orbit reference files +// - bbb: Period of the data in the file (ex. 15M = 15 mins.) +orbit_data_period = 15M + +// Footer information of the clock reference files +// bbb_ccc.ddd +// - bbb: Period of the data in the file (ex. 15M = 15 mins.) +// - ccc.ddd: ORB.SP3 or CLK.CLK +clock_file_name_footer = 15M_ORB.SP3 // or 30S_CLK.CLK or 05M_CLK.CLK // Duration of the input product files // YYYYDDD diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index 1bd54d491..e39748489 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -307,16 +307,16 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { ReadSp3Files(directory_path, file_name_header, start_date, end_date, position_file); // Clock - const std::string clock_file_extension = ini_file.ReadString(section, "clock_file_extension"); + const std::string clock_file_name_footer = ini_file.ReadString(section, "clock_file_name_footer"); std::vector> clock_file; - if (clock_file_extension == "SP3") { + if (clock_file_name_footer == "SP3") { ReadSp3Files(directory_path, file_name_header, start_date, end_date, clock_file); } else { - ReadClockFiles(directory_path, clock_file_extension, file_name_header, start_date, end_date, clock_file); + ReadClockFiles(directory_path, clock_file_name_footer, file_name_header, start_date, end_date, clock_file); } // Initialize GNSS satellites - gnss_satellites->Initialize(position_file, clock_file, clock_file_extension); + gnss_satellites->Initialize(position_file, clock_file, clock_file_name_footer); return gnss_satellites; } From 5d899e8b596283fad1bebf051dc7a7bbf42eccde Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 15:07:00 +0100 Subject: [PATCH 049/456] Add IGS file name handling functions --- .../gnss/igs_product_name_handling.hpp | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/library/gnss/igs_product_name_handling.hpp diff --git a/src/library/gnss/igs_product_name_handling.hpp b/src/library/gnss/igs_product_name_handling.hpp new file mode 100644 index 000000000..79164d83a --- /dev/null +++ b/src/library/gnss/igs_product_name_handling.hpp @@ -0,0 +1,84 @@ +/** + * @file igs_product_name_handling.hpp + * @brief Manage IGS product name handling + */ + +#ifndef S2E_LIBRARY_GNSS_IGS_PRODUCT_NAME_HANDLING_HPP_ +#define S2E_LIBRARY_GNSS_IGS_PRODUCT_NAME_HANDLING_HPP_ + +#include + +/** + * @fn GetOrbitClockFileName + * @brief Return IGS orbit and clock final product file name + * @param [in] header: Header information (ex. IGS0OPSFIN) + * @param [in] year_doy: Merged number of year(YYY) and day of year(DDD) (YYYYDDD) + * @param [in] period: Period of the data (ex. 15M = 15 mins.) + * @param [in] file_type: File type and extensions (ex. ORB.SP3) + * @return: file name + */ +std::string GetOrbitClockFinalFileName(const std::string header, const size_t year_doy, const std::string period = "15M", + const std::string file_type = "ORB.SP3") { + std::string file_name = header + "_" + std::to_string(year_doy) + "0000_01D_" + period + "_" + file_type; + + return file_name; +} + +/** + * @fn MergeYearDoy + * @brief Return Merged number of year(YYY) and day of year(DDD) (YYYYDDD) + * @param [in] year: 4-digit Year + * @param [in] doy: 3-digit Day of year + * @return: Merged number + */ +size_t MergeYearDoy(const size_t year, const size_t doy) { return year * 1000 + doy; } + +/** + * @fn PerseYearFromYearDoy + * @brief Return 4-digit year + * @param [in] year_doy: Merged number of year(YYY) and day of year(DDD) (YYYYDDD) + * @return: year + */ +size_t PerseYearFromYearDoy(const size_t year_doy) { return year_doy / 1000; } + +/** + * @fn PerseDoyFromYearDoy + * @brief Return 3-digit day of year + * @param [in] year_doy: Merged number of year(YYY) and day of year(DDD) (YYYYDDD) + * @return: day of year + */ +size_t PerseDoyFromYearDoy(const size_t year_doy) { + size_t year = PerseYearFromYearDoy(year_doy); + return year_doy - year * 1000; +} + +/** + * @fn IncrementYearDoy + * @brief Calculate increment value of year_doy considering year update + * @param [in] year_doy: Merged number of year(YYY) and day of year(DDD) (YYYYDDD) + * @return: Incremented value + */ +size_t IncrementYearDoy(const size_t year_doy) { + size_t output = year_doy + 1; + size_t doy = PerseDoyFromYearDoy(output); + + // Year update + if (doy > 365) { + size_t year = PerseYearFromYearDoy(output); + // Leap year + if (year % 4 == 0) { + if (doy > 366) { + year++; + doy = 1; + } + } else { + year++; + doy = 1; + } + output = MergeYearDoy(year, doy); + } + + return output; +} + +#endif // S2E_LIBRARY_GNSS_IGS_PRODUCT_NAME_HANDLING_HPP_ From 093ebf6e67965e19aef79126f5a204e5d9f1e9a9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 15:08:16 +0100 Subject: [PATCH 050/456] Add reference --- src/library/gnss/igs_product_name_handling.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/library/gnss/igs_product_name_handling.hpp b/src/library/gnss/igs_product_name_handling.hpp index 79164d83a..7f2644e8d 100644 --- a/src/library/gnss/igs_product_name_handling.hpp +++ b/src/library/gnss/igs_product_name_handling.hpp @@ -1,6 +1,8 @@ /** * @file igs_product_name_handling.hpp * @brief Manage IGS product name handling + * @note IGS product: https://igs.org/products/#orbits_clocks + * MGEX product: https://igs.org/mgex/data-products/#orbit_clock */ #ifndef S2E_LIBRARY_GNSS_IGS_PRODUCT_NAME_HANDLING_HPP_ From 5b5b73bbdb81bbd914be745421ed40fcfece5128 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 15:30:55 +0100 Subject: [PATCH 051/456] Implement SP3 file name calculation --- .../global/initialize_gnss_satellites.cpp | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index e39748489..1a2b9e4ce 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -6,6 +6,7 @@ #include "initialize_gnss_satellites.hpp" #include +#include #include #include @@ -298,21 +299,46 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { const std::string directory_path = ini_file.ReadString(section, "directory_path"); const std::string file_name_header = ini_file.ReadString(section, "file_name_header"); + const std::string orbit_data_period = ini_file.ReadString(section, "orbit_data_period"); + const std::string clock_file_name_footer = ini_file.ReadString(section, "clock_file_name_footer"); + bool use_sp3_for_clock = false; + if (clock_file_name_footer == (orbit_data_period + "_ORB.SP3")) { + use_sp3_for_clock = true; + } - const std::string start_date = ini_file.ReadString(section, "start_date"); - const std::string end_date = ini_file.ReadString(section, "end_date"); + // Duration + const size_t start_date = (size_t)ini_file.ReadInt(section, "start_date"); + const size_t end_date = (size_t)ini_file.ReadInt(section, "end_date"); + if (start_date > end_date) { + std::cout << "[ERROR] GNSS satellite initialize: start_date is larger than the end date." << std::endl; + } + size_t read_file_date = start_date; + while (read_file_date > end_date) { + std::string sp3_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, orbit_data_period); + std::string sp3_full_file_path = directory_path + "/" + sp3_file_name; + + // Read SP3 + + // Read CLK + if (!use_sp3_for_clock) { + std::string clk_file_name = + GetOrbitClockFinalFileName(file_name_header, read_file_date, clock_file_name_footer.substr(0, 3), clock_file_name_footer.substr(4, 7)); + std::string clk_full_file_path = directory_path + "/" + clk_file_name; + } + + read_file_date = IncrementYearDoy(read_file_date); + } // Position std::vector> position_file; - ReadSp3Files(directory_path, file_name_header, start_date, end_date, position_file); + // ReadSp3Files(directory_path, file_name_header, start_date, end_date, position_file); // Clock - const std::string clock_file_name_footer = ini_file.ReadString(section, "clock_file_name_footer"); std::vector> clock_file; if (clock_file_name_footer == "SP3") { - ReadSp3Files(directory_path, file_name_header, start_date, end_date, clock_file); + // ReadSp3Files(directory_path, file_name_header, start_date, end_date, clock_file); } else { - ReadClockFiles(directory_path, clock_file_name_footer, file_name_header, start_date, end_date, clock_file); + // ReadClockFiles(directory_path, clock_file_name_footer, file_name_header, start_date, end_date, clock_file); } // Initialize GNSS satellites From 8c8418087d4da25d0b2b6b28c6911f17415421fb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 15:43:45 +0100 Subject: [PATCH 052/456] fix small --- src/environment/global/initialize_gnss_satellites.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index 1a2b9e4ce..d0144946e 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -312,12 +313,17 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { if (start_date > end_date) { std::cout << "[ERROR] GNSS satellite initialize: start_date is larger than the end date." << std::endl; } + + // Read all product files + std::vector sp3_file_readers; + size_t read_file_date = start_date; - while (read_file_date > end_date) { + while (read_file_date <= end_date) { std::string sp3_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, orbit_data_period); std::string sp3_full_file_path = directory_path + "/" + sp3_file_name; // Read SP3 + sp3_file_readers.push_back(Sp3FileReader(sp3_full_file_path)); // Read CLK if (!use_sp3_for_clock) { @@ -326,6 +332,7 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { std::string clk_full_file_path = directory_path + "/" + clk_file_name; } + // Increment read_file_date = IncrementYearDoy(read_file_date); } From 37272dce02ac6a4e7c1cfed19aea0727689226f7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 15:55:37 +0100 Subject: [PATCH 053/456] Delete old functions --- .../global/initialize_gnss_satellites.cpp | 133 +----------------- 1 file changed, 3 insertions(+), 130 deletions(-) diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp index d0144946e..2f12f80b9 100644 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ b/src/environment/global/initialize_gnss_satellites.cpp @@ -79,124 +79,6 @@ void ReadFileContents(std::string directory_path, std::string file_name, std::ve return; } -/** - *@fn ReadSp3Files - *@brief Read multiple SP3 files in the directory and generate multiple vectors of one line strings - *@param [in] directory_path: Directory path of the file - *@param [in] file_sort: File type - *@param [in] first: The first SP3 file name - *@param [in] last: The last SP3 file name - *@param [out] file_contents: Generated files as multiple vectors of one line strings - */ -void ReadSp3Files(std::string directory_path, std::string file_sort, std::string first, std::string last, - std::vector>& file_contents) { - std::string all_directory_path = directory_path + ReturnDirectoryPathWithFileType(file_sort); - - if (first.substr(0, 3) == "COD") { - std::string file_header = "COD0MGXFIN_"; - std::string file_footer = "0000_01D_05M_ORB.SP3"; - int year = stoi(first.substr(file_header.size(), 4)); - int year_last_day = 365 + (year % 4 == 0) - (year % 100 == 0) + (year % 400 == 0); - int day = stoi(first.substr(file_header.size() + 4, 3)); - - file_contents.clear(); - - while (true) { - if (day > year_last_day) { - ++year; - year_last_day = 365 + (year % 4 == 0) - (year % 100 == 0) + (year % 400 == 0); - day = 1; - } - std::string s_day; - if (day >= 100) - s_day = std::to_string(day); - else if (day >= 10) - s_day = '0' + std::to_string(day); - else - s_day = "00" + std::to_string(day); - std::string file_name = file_header + std::to_string(year) + s_day + file_footer; - file_contents.push_back(std::vector()); - - ReadFileContents(all_directory_path, file_name, file_contents.back()); - - if (file_name == last) break; - ++day; - } - } else if (file_sort.substr(0, 3) == "IGU" || file_sort.find("Ultra") != std::string::npos) { // In case of UR - std::string file_header, file_footer; - int gps_week = 0, day = 0; - int hour = 0; - for (int i = 0; i < (int)first.size(); ++i) { - int n = first.at(i); - // Looking for the number of file name - if ((int)'0' <= n && n < (int)('0' + 10)) { - file_header = first.substr(0, i); - gps_week = stoi(first.substr(file_header.size(), 4)); - day = stoi(first.substr(file_header.size() + 4, 1)); - hour = stoi(first.substr(file_header.size() + 6, 2)); - file_footer = first.substr(file_header.size() + 8); - break; - } - } - - file_contents.clear(); - - while (true) { - if (hour == 24) { - hour = 0; - ++day; - } - if (day == 7) { - ++gps_week; - day = 0; - } - std::string file_name = file_header + std::to_string(gps_week) + std::to_string(day) + "_"; - if (hour < 10) { - file_name += "0"; - } - file_name += std::to_string(hour) + file_footer; - file_contents.push_back(std::vector()); - - ReadFileContents(all_directory_path, file_name, file_contents.back()); - - if (file_name == last) break; - hour += 6; - } - } else { - std::string file_header, file_footer; - int gps_week = 0, day = 0; - for (int i = 0; i < (int)first.size(); ++i) { - int n = first.at(i); - // Looking for the number of file name - if ((int)'0' <= n && n < (int)('0' + 10)) { - file_header = first.substr(0, i); - gps_week = stoi(first.substr(file_header.size(), 4)); - day = stoi(first.substr(file_header.size() + 4, 1)); - file_footer = first.substr(file_header.size() + 5); - break; - } - } - - file_contents.clear(); - - while (true) { - if (day == 7) { - ++gps_week; - day = 0; - } - std::string file_name = file_header + std::to_string(gps_week) + std::to_string(day) + file_footer; - file_contents.push_back(std::vector()); - - ReadFileContents(all_directory_path, file_name, file_contents.back()); - - if (file_name == last) break; - ++day; - } - } - - return; -} - /** *@fn ReadClockFiles *@brief Read multiple SP3 files in the directory and generate multiple vectors of one line strings @@ -325,30 +207,21 @@ GnssSatellites* InitGnssSatellites(std::string file_name) { // Read SP3 sp3_file_readers.push_back(Sp3FileReader(sp3_full_file_path)); - // Read CLK + // Clock file if (!use_sp3_for_clock) { std::string clk_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, clock_file_name_footer.substr(0, 3), clock_file_name_footer.substr(4, 7)); std::string clk_full_file_path = directory_path + "/" + clk_file_name; + // TODO: Read CLK } // Increment read_file_date = IncrementYearDoy(read_file_date); } - // Position + // Old descriptions TODO: delete std::vector> position_file; - // ReadSp3Files(directory_path, file_name_header, start_date, end_date, position_file); - - // Clock std::vector> clock_file; - if (clock_file_name_footer == "SP3") { - // ReadSp3Files(directory_path, file_name_header, start_date, end_date, clock_file); - } else { - // ReadClockFiles(directory_path, clock_file_name_footer, file_name_header, start_date, end_date, clock_file); - } - - // Initialize GNSS satellites gnss_satellites->Initialize(position_file, clock_file, clock_file_name_footer); return gnss_satellites; From 25dc79c104b08a6292aa5f03e46e0263e75ddf9e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 16:13:41 +0100 Subject: [PATCH 054/456] Add test codes for igs_product_name_handling --- .../gnss/test_igs_product_name_handling.cpp | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/library/gnss/test_igs_product_name_handling.cpp diff --git a/src/library/gnss/test_igs_product_name_handling.cpp b/src/library/gnss/test_igs_product_name_handling.cpp new file mode 100644 index 000000000..a51cc541c --- /dev/null +++ b/src/library/gnss/test_igs_product_name_handling.cpp @@ -0,0 +1,33 @@ +/** + * @file test_igs_product_name_handling.cpp + * @brief Test functions for IGS product name handling with GoogleTest + */ +#include +#include + +#include "igs_product_name_handling.hpp" + +/** + * @brief Test satellite number to index + */ +TEST(IgsProductName, SatelliteNumberToIndex) { + std::string header = "IGS0OPSFIN"; + size_t year_doy = 2023190; + + std::string file_name = GetOrbitClockFinalFileName(header, year_doy); + EXPECT_THAT(file_name, ::testing::MatchesRegex("IGS0OPSFIN_20231900000_01D_15M_ORB.SP3")); + + std::string period = "15M"; + std::string file_type = "ORB.SP3"; + + file_name = GetOrbitClockFinalFileName(header, year_doy, period, file_type); + EXPECT_THAT(file_name, ::testing::MatchesRegex("IGS0OPSFIN_20231900000_01D_15M_ORB.SP3")); + + header = "IGS0OPSFIN"; + year_doy = 2023365; + period = "30S"; + file_type = "CLK.CLK"; + + file_name = GetOrbitClockFinalFileName(header, year_doy, period, file_type); + EXPECT_THAT(file_name, ::testing::MatchesRegex("IGS0OPSFIN_20233650000_01D_30S_CLK.CLK")); +} From cd610616ad56528ff9360fbaac1f345285ac6917 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 16:14:25 +0100 Subject: [PATCH 055/456] Fix test name --- src/library/gnss/test_igs_product_name_handling.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/library/gnss/test_igs_product_name_handling.cpp b/src/library/gnss/test_igs_product_name_handling.cpp index a51cc541c..63de6ebcc 100644 --- a/src/library/gnss/test_igs_product_name_handling.cpp +++ b/src/library/gnss/test_igs_product_name_handling.cpp @@ -8,9 +8,9 @@ #include "igs_product_name_handling.hpp" /** - * @brief Test satellite number to index + * @brief Test GetOrbitClockFinalFileName */ -TEST(IgsProductName, SatelliteNumberToIndex) { +TEST(IgsProductName, GetOrbitClockFinalFileName) { std::string header = "IGS0OPSFIN"; size_t year_doy = 2023190; From 3fc4f69d13e4490c39478c6bafa7834a30839801 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 16:16:22 +0100 Subject: [PATCH 056/456] Add test codes for MergeYearDoy --- src/library/gnss/test_igs_product_name_handling.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/library/gnss/test_igs_product_name_handling.cpp b/src/library/gnss/test_igs_product_name_handling.cpp index 63de6ebcc..ef37c8a3c 100644 --- a/src/library/gnss/test_igs_product_name_handling.cpp +++ b/src/library/gnss/test_igs_product_name_handling.cpp @@ -31,3 +31,14 @@ TEST(IgsProductName, GetOrbitClockFinalFileName) { file_name = GetOrbitClockFinalFileName(header, year_doy, period, file_type); EXPECT_THAT(file_name, ::testing::MatchesRegex("IGS0OPSFIN_20233650000_01D_30S_CLK.CLK")); } + +/** + * @brief Test MergeYearDoy + */ +TEST(IgsProductName, MergeYearDoy) { + size_t year = 2023; + size_t doy = 190; + size_t year_doy = MergeYearDoy(year, doy); + + EXPECT_EQ(2023190, year_doy); +} From 99762be8148da455e8727634b3c797079b4f4ec9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 16:21:16 +0100 Subject: [PATCH 057/456] Add test codes for PerseFromYearDoy --- .../gnss/test_igs_product_name_handling.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/library/gnss/test_igs_product_name_handling.cpp b/src/library/gnss/test_igs_product_name_handling.cpp index ef37c8a3c..12b2893b7 100644 --- a/src/library/gnss/test_igs_product_name_handling.cpp +++ b/src/library/gnss/test_igs_product_name_handling.cpp @@ -42,3 +42,23 @@ TEST(IgsProductName, MergeYearDoy) { EXPECT_EQ(2023190, year_doy); } + +/** + * @brief Test PerseFromYearDoy + */ +TEST(IgsProductName, PerseFromYearDoy) { + size_t year = 1989; + size_t doy = 84; + size_t year_doy = MergeYearDoy(year, doy); + + EXPECT_EQ(year, PerseYearFromYearDoy(year_doy)); + EXPECT_EQ(doy, PerseDoyFromYearDoy(year_doy)); + + year_doy = 1989365; + EXPECT_EQ(1989, PerseYearFromYearDoy(year_doy)); + EXPECT_EQ(365, PerseDoyFromYearDoy(year_doy)); + + year_doy = 2000001; + EXPECT_EQ(2000, PerseYearFromYearDoy(year_doy)); + EXPECT_EQ(001, PerseDoyFromYearDoy(year_doy)); +} From 0150515a6677e4d4baf8765d7c710036cac6e642 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 30 Jan 2024 16:25:14 +0100 Subject: [PATCH 058/456] Add test codes for IncrementYearDoy --- .../gnss/test_igs_product_name_handling.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/library/gnss/test_igs_product_name_handling.cpp b/src/library/gnss/test_igs_product_name_handling.cpp index 12b2893b7..b674af7dc 100644 --- a/src/library/gnss/test_igs_product_name_handling.cpp +++ b/src/library/gnss/test_igs_product_name_handling.cpp @@ -62,3 +62,24 @@ TEST(IgsProductName, PerseFromYearDoy) { EXPECT_EQ(2000, PerseYearFromYearDoy(year_doy)); EXPECT_EQ(001, PerseDoyFromYearDoy(year_doy)); } + +/** + * @brief Test IncrementYearDoy + */ +TEST(IgsProductName, IncrementYearDoy) { + size_t year_doy = 2024030; + year_doy = IncrementYearDoy(year_doy); + EXPECT_EQ(2024031, year_doy); + + // Year update + year_doy = 2023365; + year_doy = IncrementYearDoy(year_doy); + EXPECT_EQ(2024001, year_doy); + + // Leap year + year_doy = 2024365; + year_doy = IncrementYearDoy(year_doy); + EXPECT_EQ(2024366, year_doy); + year_doy = IncrementYearDoy(year_doy); + EXPECT_EQ(2025001, year_doy); +} From 3222dbcf23b9df3e88ce8396deec259b875f9ac4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 31 Jan 2024 14:27:04 +0100 Subject: [PATCH 059/456] Move InitGnssSatellites function --- src/environment/global/gnss_satellites.cpp | 62 ++++++++++++++++++++++ src/environment/global/gnss_satellites.hpp | 7 +++ 2 files changed, 69 insertions(+) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 88362d327..a227a0dc3 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -5,6 +5,9 @@ #include "gnss_satellites.hpp" +#include +#include + #include "environment/global/physical_constants.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" @@ -870,3 +873,62 @@ std::string GnssSatellites::GetLogValue() const { return str_tmp; } + +GnssSatellites* InitGnssSatellites(std::string file_name) { + IniAccess ini_file(file_name); + char section[] = "GNSS_SATELLITES"; + + const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); + const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); + + GnssSatellites* gnss_satellites = new GnssSatellites(is_calc_enable, is_log_enable); + if (!gnss_satellites->IsCalcEnabled()) { + return gnss_satellites; + } + + const std::string directory_path = ini_file.ReadString(section, "directory_path"); + const std::string file_name_header = ini_file.ReadString(section, "file_name_header"); + const std::string orbit_data_period = ini_file.ReadString(section, "orbit_data_period"); + const std::string clock_file_name_footer = ini_file.ReadString(section, "clock_file_name_footer"); + bool use_sp3_for_clock = false; + if (clock_file_name_footer == (orbit_data_period + "_ORB.SP3")) { + use_sp3_for_clock = true; + } + + // Duration + const size_t start_date = (size_t)ini_file.ReadInt(section, "start_date"); + const size_t end_date = (size_t)ini_file.ReadInt(section, "end_date"); + if (start_date > end_date) { + std::cout << "[ERROR] GNSS satellite initialize: start_date is larger than the end date." << std::endl; + } + + // Read all product files + std::vector sp3_file_readers; + + size_t read_file_date = start_date; + while (read_file_date <= end_date) { + std::string sp3_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, orbit_data_period); + std::string sp3_full_file_path = directory_path + "/" + sp3_file_name; + + // Read SP3 + sp3_file_readers.push_back(Sp3FileReader(sp3_full_file_path)); + + // Clock file + if (!use_sp3_for_clock) { + std::string clk_file_name = + GetOrbitClockFinalFileName(file_name_header, read_file_date, clock_file_name_footer.substr(0, 3), clock_file_name_footer.substr(4, 7)); + std::string clk_full_file_path = directory_path + "/" + clk_file_name; + // TODO: Read CLK + } + + // Increment + read_file_date = IncrementYearDoy(read_file_date); + } + + // Old descriptions TODO: delete + std::vector> position_file; + std::vector> clock_file; + gnss_satellites->Initialize(position_file, clock_file, clock_file_name_footer); + + return gnss_satellites; +} diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index f01131012..ecbf1117b 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -363,4 +363,11 @@ class GnssSatellites : public ILoggable { double start_unix_time_; //!< Start unix time }; +/** + *@fn InitGnssSatellites + *@brief Initialize function for GnssSatellites class + *@param [in] file_name: Path to the initialize file + */ +GnssSatellites* InitGnssSatellites(const std::string file_name); + #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ From 7a3168ed39cc79e423001410ed088a256ddcefca Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 31 Jan 2024 14:29:34 +0100 Subject: [PATCH 060/456] Delete Initialize function file for GNSS and CLK file reading function --- src/environment/global/CMakeLists.txt | 1 - src/environment/global/global_environment.cpp | 1 - src/environment/global/gnss_satellites.cpp | 1 + .../global/initialize_gnss_satellites.cpp | 228 ------------------ .../global/initialize_gnss_satellites.hpp | 18 -- 5 files changed, 1 insertion(+), 248 deletions(-) delete mode 100644 src/environment/global/initialize_gnss_satellites.cpp delete mode 100644 src/environment/global/initialize_gnss_satellites.hpp diff --git a/src/environment/global/CMakeLists.txt b/src/environment/global/CMakeLists.txt index bc64cef0e..8ce63a332 100644 --- a/src/environment/global/CMakeLists.txt +++ b/src/environment/global/CMakeLists.txt @@ -10,7 +10,6 @@ add_library(${PROJECT_NAME} STATIC clock_generator.cpp earth_rotation.cpp moon_rotation.cpp - initialize_gnss_satellites.cpp ) include(../../../common.cmake) diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index f170be384..37fb7be2f 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -5,7 +5,6 @@ #include "global_environment.hpp" -#include "initialize_gnss_satellites.hpp" #include "library/initialize/initialize_file_access.hpp" GlobalEnvironment::GlobalEnvironment(const SimulationConfiguration* simulation_configuration) { Initialize(simulation_configuration); } diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index a227a0dc3..914d31478 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,6 +9,7 @@ #include #include "environment/global/physical_constants.hpp" +#include "library/initialize/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/utilities/macros.hpp" diff --git a/src/environment/global/initialize_gnss_satellites.cpp b/src/environment/global/initialize_gnss_satellites.cpp deleted file mode 100644 index 2f12f80b9..000000000 --- a/src/environment/global/initialize_gnss_satellites.cpp +++ /dev/null @@ -1,228 +0,0 @@ -/** - *@file initialize_gnss_satellites.cpp - *@brief Initialize functions for GnssSatellites class - */ - -#include "initialize_gnss_satellites.hpp" - -#include -#include -#include -#include -#include - -/** - *@fn ReturnDirectoryPathWithFileType - *@brief Return directory path with file type infomation - *@param [in] sort: File type - *@return Directory path with file type infomation - */ -std::string ReturnDirectoryPathWithFileType(std::string sort) { - std::string main_directory, sub_directory; - - if (sort.substr(0, 2) == "IG") { - main_directory = "IGS/"; - if (sort.at(2) == 'S') { - sub_directory = "igs/"; - } else if (sort.at(2) == 'R') { - sub_directory = "igr/"; - } else if (sort.at(2) == 'U') { - sub_directory = "igu/"; - } - } else if (sort.substr(0, 2) == "ma") { - main_directory = "JAXA/"; - sub_directory = "madoca/"; - } else { - for (int i = 0; i < (int)sort.size(); ++i) { - if (sort.at(i) == '_') { - main_directory = sort.substr(0, i) + "/"; - if (sort.at(i + 1) == 'F') { - sub_directory = "final/"; - } else if (sort.at(i + 1) == 'R') { - sub_directory = "rapid/"; - } else if (sort.at(i + 1) == 'U') { - sub_directory = "ultra_rapid/"; - } else { - std::cout << "file_sort has something wrong" << std::endl; - exit(1); - } - break; - } - } - } - - return main_directory + sub_directory; -} - -/** - *@fn ReadFileContents - *@brief Read file and convert to a vector of one line strings - *@param [in] directory_path: Directory path of the file - *@param [in] file_name: File name - *@param [out] storage: vector of one line strings - */ -void ReadFileContents(std::string directory_path, std::string file_name, std::vector& storage) { - std::string all_file_path = directory_path + file_name; - std::ifstream ifs(all_file_path); - - if (!ifs.is_open()) { - std::cout << "in " << directory_path << "gnss file: " << file_name << " not found" << std::endl; - exit(1); - } - std::string str; - while (std::getline(ifs, str)) { - storage.push_back(str); - } - ifs.close(); - if (storage.back() == "EOF") storage.pop_back(); - - return; -} - -/** - *@fn ReadClockFiles - *@brief Read multiple SP3 files in the directory and generate multiple vectors of one line strings - *@param [in] directory_path: Directory path of the file - *@param [in] extension: Extensions of the file - *@param [in] file_sort: File type - *@param [in] first: The first SP3 file name - *@param [in] last: The last SP3 file name - *@param [out] file_contents: Generated files as multiple vectors of one line strings - */ -void ReadClockFiles(std::string directory_path, std::string extension, std::string file_sort, std::string first, std::string last, - std::vector>& file_contents) { - std::string all_directory_path = directory_path + ReturnDirectoryPathWithFileType(file_sort) + extension.substr(1) + '/'; - - if (file_sort.find("Ultra") != std::string::npos) { - std::string file_header, file_footer; - int gps_week = 0, day = 0; - int hour = 0; - for (int i = 0; i < (int)first.size(); ++i) { - int n = first.at(i); - // Looking for the number of file name - if ((int)'0' <= n && n < (int)('0' + 10)) { - file_header = first.substr(0, i); - gps_week = stoi(first.substr(file_header.size(), 4)); - day = stoi(first.substr(file_header.size() + 4, 1)); - hour = stoi(first.substr(file_header.size() + 6, 2)); - file_footer = first.substr(file_header.size() + 8); - break; - } - } - - file_contents.clear(); - - while (true) { - if (hour == 24) { - hour = 0; - ++day; - } - if (day == 7) { - ++gps_week; - day = 0; - } - std::string file_name = file_header + std::to_string(gps_week) + std::to_string(day) + "_"; - if (hour < 10) { - file_name += "0"; - } - file_name += std::to_string(hour) + file_footer; - file_contents.push_back(std::vector()); - - ReadFileContents(all_directory_path, file_name, file_contents.back()); - - if (file_name == last) break; - hour += 6; - } - } else { - std::string file_header, file_footer; - int gps_week = 0, day = 0; - for (int i = 0; i < (int)first.size(); ++i) { - int n = first.at(i); - // Looking for the number of file name - if ((int)'0' <= n && n < (int)('0' + 10)) { - file_header = first.substr(0, i); - gps_week = stoi(first.substr(file_header.size(), 4)); - day = stoi(first.substr(file_header.size() + 4, 1)); - file_footer = first.substr(file_header.size() + 5); - break; - } - } - - file_contents.clear(); - - while (true) { - if (day == 7) { - ++gps_week; - day = 0; - } - std::string file_name = file_header + std::to_string(gps_week) + std::to_string(day) + file_footer; - file_contents.push_back(std::vector()); - - ReadFileContents(all_directory_path, file_name, file_contents.back()); - - if (file_name == last) break; - ++day; - } - } - - return; -} - -GnssSatellites* InitGnssSatellites(std::string file_name) { - IniAccess ini_file(file_name); - char section[] = "GNSS_SATELLITES"; - - const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); - const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); - - GnssSatellites* gnss_satellites = new GnssSatellites(is_calc_enable, is_log_enable); - if (!gnss_satellites->IsCalcEnabled()) { - return gnss_satellites; - } - - const std::string directory_path = ini_file.ReadString(section, "directory_path"); - const std::string file_name_header = ini_file.ReadString(section, "file_name_header"); - const std::string orbit_data_period = ini_file.ReadString(section, "orbit_data_period"); - const std::string clock_file_name_footer = ini_file.ReadString(section, "clock_file_name_footer"); - bool use_sp3_for_clock = false; - if (clock_file_name_footer == (orbit_data_period + "_ORB.SP3")) { - use_sp3_for_clock = true; - } - - // Duration - const size_t start_date = (size_t)ini_file.ReadInt(section, "start_date"); - const size_t end_date = (size_t)ini_file.ReadInt(section, "end_date"); - if (start_date > end_date) { - std::cout << "[ERROR] GNSS satellite initialize: start_date is larger than the end date." << std::endl; - } - - // Read all product files - std::vector sp3_file_readers; - - size_t read_file_date = start_date; - while (read_file_date <= end_date) { - std::string sp3_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, orbit_data_period); - std::string sp3_full_file_path = directory_path + "/" + sp3_file_name; - - // Read SP3 - sp3_file_readers.push_back(Sp3FileReader(sp3_full_file_path)); - - // Clock file - if (!use_sp3_for_clock) { - std::string clk_file_name = - GetOrbitClockFinalFileName(file_name_header, read_file_date, clock_file_name_footer.substr(0, 3), clock_file_name_footer.substr(4, 7)); - std::string clk_full_file_path = directory_path + "/" + clk_file_name; - // TODO: Read CLK - } - - // Increment - read_file_date = IncrementYearDoy(read_file_date); - } - - // Old descriptions TODO: delete - std::vector> position_file; - std::vector> clock_file; - gnss_satellites->Initialize(position_file, clock_file, clock_file_name_footer); - - return gnss_satellites; -} diff --git a/src/environment/global/initialize_gnss_satellites.hpp b/src/environment/global/initialize_gnss_satellites.hpp deleted file mode 100644 index ca55e995d..000000000 --- a/src/environment/global/initialize_gnss_satellites.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/** - *@file initialize_gnss_satellites.hpp - *@brief Initialize functions for GnssSatellites class - */ - -#ifndef S2E_ENVIRONMENT_GLOBAL_INITIALIZE_GNSS_SATELLITES_HPP_ -#define S2E_ENVIRONMENT_GLOBAL_INITIALIZE_GNSS_SATELLITES_HPP_ - -#include - -/** - *@fn InitGnssSatellites - *@brief Initialize function for GnssSatellites class - *@param [in] file_name: Path to the initialize function - */ -GnssSatellites* InitGnssSatellites(std::string file_name); - -#endif // S2E_ENVIRONMENT_GLOBAL_INITIALIZE_GNSS_SATELLITES_HPP_ From 1912852d7317fe89f7f47b1865a5487b8f71c722 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 31 Jan 2024 14:48:06 +0100 Subject: [PATCH 061/456] fix small --- src/environment/global/gnss_satellites.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 914d31478..961625e57 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -875,7 +875,7 @@ std::string GnssSatellites::GetLogValue() const { return str_tmp; } -GnssSatellites* InitGnssSatellites(std::string file_name) { +GnssSatellites* InitGnssSatellites(const std::string file_name) { IniAccess ini_file(file_name); char section[] = "GNSS_SATELLITES"; From 878a08df90f0124fee458c1a606431b6a4b6d5a3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 10:12:05 +0100 Subject: [PATCH 062/456] Remove unnecessary classes and functions --- src/environment/global/global_environment.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 870 ++---------------- src/environment/global/gnss_satellites.hpp | 300 +----- 3 files changed, 74 insertions(+), 1098 deletions(-) diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 37fb7be2f..4240d5d80 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -25,7 +25,7 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con celestial_information_ = InitCelestialInformation(simulation_configuration->initialize_base_file_name_); simulation_time_ = InitSimulationTime(simulation_time_ini_path); hipparcos_catalogue_ = InitHipparcosCatalogue(simulation_configuration->initialize_base_file_name_); - gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_); + gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_, *simulation_time_); // Calc initial value celestial_information_->UpdateAllObjectsInformation(*simulation_time_); diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 961625e57..3a5c92f54 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -12,673 +12,50 @@ #include "library/initialize/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" +#include "library/time_system/date_time_format.hpp" #include "library/utilities/macros.hpp" -const double nan99 = 999999.999999; +const size_t kNumberOfInterpolation = 9; -using namespace std; +void GnssSatellites::Initialize(const std::vector& sp3_files, const EpochTime start_time) { + sp3_files_ = sp3_files; -/** - * @fn initialized_tm - * @brief Initialize time as calendar expression - */ -tm* initialized_tm() { - tm* time_tm = (tm*)malloc(sizeof(tm)); - - time_tm->tm_year = 0; - time_tm->tm_mon = 0; - time_tm->tm_mday = 0; - time_tm->tm_hour = 0; - time_tm->tm_min = 0; - time_tm->tm_sec = 0; - - time_tm->tm_isdst = 0; - time_tm->tm_yday = 0; - time_tm->tm_wday = 0; - -#ifndef WIN32 - time_tm->tm_zone = NULL; - time_tm->tm_gmtoff = 0; -#endif - - return time_tm; -} - -/** - * @fn get_unixtime_from_timestamp_line - * @brief Calculate unix time from calendar expression - * @param [in] s: Time as calendar expression - * @return Unix time - */ -double get_unixtime_from_timestamp_line(std::vector& s) { - tm* time_tm = initialized_tm(); - time_tm->tm_year = stoi(s.at(1)) - 1900; - time_tm->tm_mon = stoi(s.at(2)) - 1; // 0 - 11, in time struct, 1 - 12 month is expressed by 1 - 12 - time_tm->tm_mday = stoi(s.at(3)); - time_tm->tm_hour = stoi(s.at(4)); - time_tm->tm_min = stoi(s.at(5)); - time_tm->tm_sec = (int)(stod(s.at(6)) + 1e-4); // for the numerical error, plus 1e-4 (tm_sec is to be int) - double unix_time = (double)mktime(time_tm); - std::free(time_tm); - - return unix_time; -} - -// GnssSatelliteBase -template -libra::Vector GnssSatelliteBase::TrigonometricInterpolation(const vector& time_vector, const vector>& values, - double time) const { - size_t n = time_vector.size(); - double w = libra::tau / (24.0 * 60.0 * 60.0) * 1.03; // coefficient of a day long - libra::Vector res(0.0); - - for (size_t i = 0; i < n; ++i) { - double t_k = 1.0; - for (size_t j = 0; j < n; ++j) { - if (i == j) continue; - t_k *= sin(w * (time - time_vector.at(j)) / 2.0) / sin(w * (time_vector.at(i) - time_vector.at(j)) / 2.0); - } - for (size_t j = 0; j < (int)N; ++j) { - res(j) += t_k * values.at(i)(j); - } - } - - return res; -} - -double GnssSatelliteBase::TrigonometricInterpolation(const vector& time_vector, const vector& values, double time) const { - size_t n = time_vector.size(); - double w = libra::tau / (24.0 * 60.0 * 60.0) * 1.03; // coefficient of a day long - double res = 0.0; - - for (size_t i = 0; i < n; ++i) { - double t_k = 1.0; - for (size_t j = 0; j < n; ++j) { - if (i == j) continue; - t_k *= sin(w * (time - time_vector.at(j)) / 2.0) / sin(w * (time_vector.at(i) - time_vector.at(j)) / 2.0); - } - res += t_k * values.at(i); - } - - return res; -} - -template -libra::Vector GnssSatelliteBase::LagrangeInterpolation(const vector& time_vector, const vector>& values, - double time) const { - int n = time_vector.size(); - libra::Vector res(0.0); - - for (int i = 0; i < n; ++i) { - double l_i = 1.0; - for (int j = 0; j < n; ++j) { - if (i == j) continue; - l_i *= (time - time_vector.at(j)) / (time_vector.at(i) - time_vector.at(j)); - } - for (int j = 0; j < N; ++j) { - res(j) += l_i * values.at(i)(j); - } - } - - return res; -} - -double GnssSatelliteBase::LagrangeInterpolation(const vector& time_vector, const vector& values, double time) const { - size_t n = time_vector.size(); - double res = 0.0; - for (size_t i = 0; i < n; ++i) { - double l_i = 1.0; - for (size_t j = 0; j < n; ++j) { - if (i == j) continue; - l_i *= (time - time_vector.at(j)) / (time_vector.at(i) - time_vector.at(j)); - } - res += values.at(i) * l_i; - } - - return res; -} - -// GnssSatellitePosition -pair GnssSatellitePosition::Initialize(vector>& file) { - interpolation_number_ = 9; // 9 is recommended in the paper - - // Expansion - time_series_position_ecef_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the satellite number - time_series_position_eci_m_.resize(kTotalNumberOfGnssSatellite); - unix_time_list.resize(kTotalNumberOfGnssSatellite); - - // for using min and max, set the sup & inf before - double start_unix_time = 1e16; - double end_unix_time = 0; - - for (int page = 0; page < (int)file.size(); ++page) { - // Read Header Info - int num_of_time_stamps = 0; - int num_of_sat = 0; - int line; - for (line = 0; line < 3; ++line) { - istringstream iss{file.at(page).at(line)}; - - if (line == 0) { - // in seventh line, there is time stamps - // http://epncb.oma.be/ftp/data/format/sp3c.txt - for (int i = 0; i < 7; ++i) { - // how many time stamps are written? - string each; - iss >> each; - if (i == 6) num_of_time_stamps = stoi(each); - } - } else if (line == 1) { - for (int i = 0; i < 4; ++i) { - string each; - iss >> each; - if (i == 3) time_interval_ = stod(each); - } - } else if (line == 2) { - for (int i = 0; i < 2; ++i) { - string each; - iss >> each; - if (i == 1) num_of_sat = stoi(each); - } - } - } - line = 3; - while (file.at(page).at(line).front() != '*') ++line; - - // Calculate number of data lines - int start_line, end_line; - start_line = line; - end_line = line + (num_of_sat + 1) * num_of_time_stamps; - - // Read time and position data - double unix_time = 0; - double cos_ = 0.0; //!< cos value for ECEF->ECI conversion - double sin_ = 0.0; //!< sin value for ECEF->ECI conversion - for (int i = 0; i < end_line - start_line; ++i) { - line = i + start_line; - - istringstream iss{file.at(page).at(line)}; - vector s; - if (i % (num_of_sat + 1) == 0) { - // Epoch information - for (int j = 0; j < 7; ++j) { - string tmp; - iss >> tmp; - s.push_back(tmp); - } - // Convert to julian date - unix_time = get_unixtime_from_timestamp_line(s); - double jd; - jday(stoi(s.at(1)), stoi(s.at(2)), stoi(s.at(3)), stoi(s.at(4)), stoi(s.at(5)), stod(s.at(6)), jd); - // Calculate frame conversion - double gs_time_ = gstime(jd); - cos_ = cos(gs_time_); - sin_ = sin(gs_time_); - // Set start and end unix time - start_unix_time = std::min(start_unix_time, unix_time); - end_unix_time = std::max(end_unix_time, unix_time); - } else { - // Position and clock data of each GNSS satellite - for (int j = 0; j < 5; ++j) { - string tmp; - iss >> tmp; - s.push_back(tmp); - } - int gnss_satellite_id = ConvertGnssSatelliteNumberToIndex(s.front()); - - bool available_flag = true; - libra::Vector<3> ecef_position_m(0.0); - for (int j = 0; j < 3; ++j) { - if (std::abs(stod(s.at(j + 1)) - nan99) < 1.0) { - available_flag = false; - break; - } else { - ecef_position_m(j) = stod(s.at(j + 1)); - } - } - if (!available_flag) continue; - - // [km] -> [m] - ecef_position_m *= 1000.0; - - // ECI frame conversion - libra::Vector<3> eci_position(0.0); - double x = ecef_position_m(0); - double y = ecef_position_m(1); - double z = ecef_position_m(2); - eci_position(0) = cos_ * x - sin_ * y; - eci_position(1) = sin_ * x + cos_ * y; - eci_position(2) = z; - - // Set data - if (!unix_time_list.at(gnss_satellite_id).empty() && std::abs(unix_time - unix_time_list.at(gnss_satellite_id).back()) < 1.0) { - unix_time_list.at(gnss_satellite_id).back() = unix_time; - time_series_position_ecef_m_.at(gnss_satellite_id).back() = ecef_position_m; - time_series_position_eci_m_.at(gnss_satellite_id).back() = eci_position; - } else { - unix_time_list.at(gnss_satellite_id).emplace_back(unix_time); - time_series_position_ecef_m_.at(gnss_satellite_id).emplace_back(ecef_position_m); - time_series_position_eci_m_.at(gnss_satellite_id).emplace_back(eci_position); - } - } - } - } - - return make_pair(start_unix_time, end_unix_time); -} - -void GnssSatellitePosition::SetUp(const double start_unix_time, const double step_width_s) { - step_width_s_ = step_width_s; - - position_ecef_m_.assign(kTotalNumberOfGnssSatellite, libra::Vector<3>(0.0)); - position_eci_m_.assign(kTotalNumberOfGnssSatellite, libra::Vector<3>(0.0)); - validate_.assign(kTotalNumberOfGnssSatellite, false); - - nearest_index_.resize(kTotalNumberOfGnssSatellite); - time_period_list_.resize(kTotalNumberOfGnssSatellite); - - ecef_.resize(kTotalNumberOfGnssSatellite); - eci_.resize(kTotalNumberOfGnssSatellite); - - for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { - if (unix_time_list.at(gnss_satellite_id).empty()) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - int index = (int)(lower_bound(unix_time_list.at(gnss_satellite_id).begin(), unix_time_list.at(gnss_satellite_id).end(), start_unix_time) - - unix_time_list.at(gnss_satellite_id).begin()); - if (index == (int)unix_time_list.at(gnss_satellite_id).size()) { - nearest_index_.at(gnss_satellite_id) = index; - validate_.at(gnss_satellite_id) = false; - continue; - } - - double nearest_unixtime = unix_time_list.at(gnss_satellite_id).at(index); - if (interpolation_number_ % 2 && index != 0) { - double pre_time = unix_time_list.at(gnss_satellite_id).at(index - 1); - if (std::abs(start_unix_time - pre_time) < std::abs(start_unix_time - nearest_unixtime)) --index; - } - nearest_index_.at(gnss_satellite_id) = index; - nearest_unixtime = unix_time_list.at(gnss_satellite_id).at(index); - if (std::abs(start_unix_time - nearest_unixtime) > time_interval_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - // for both even and odd: 2n+1 -> [-n, n] 2n -> [-n, n) - for (int j = -interpolation_number_ / 2; j < (interpolation_number_ + 1) / 2; ++j) { - int now_index = index + j; - if (now_index < 0 || now_index >= (int)unix_time_list.at(gnss_satellite_id).size()) continue; - - time_period_list_.at(gnss_satellite_id).push_back(unix_time_list.at(gnss_satellite_id).at(now_index)); - ecef_.at(gnss_satellite_id).push_back(time_series_position_ecef_m_.at(gnss_satellite_id).at(now_index)); - eci_.at(gnss_satellite_id).push_back(time_series_position_eci_m_.at(gnss_satellite_id).at(now_index)); - } - if ((int)time_period_list_.at(gnss_satellite_id).size() != interpolation_number_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - double time_period_length = time_period_list_.at(gnss_satellite_id).back() - time_period_list_.at(gnss_satellite_id).front(); - if (time_period_length > time_interval_ * (interpolation_number_ - 1 + 3) + 1e-4) { // allow for 3 missing - validate_.at(gnss_satellite_id) = false; - continue; - } else { - validate_.at(gnss_satellite_id) = true; - } - - if (std::abs(start_unix_time - nearest_unixtime) < 1e-4) { // for the numerical error, plus 1e-4 - position_ecef_m_.at(gnss_satellite_id) = time_series_position_ecef_m_.at(gnss_satellite_id).at(index); - position_eci_m_.at(gnss_satellite_id) = time_series_position_eci_m_.at(gnss_satellite_id).at(index); - } else { - position_ecef_m_.at(gnss_satellite_id) = - TrigonometricInterpolation(time_period_list_.at(gnss_satellite_id), ecef_.at(gnss_satellite_id), start_unix_time); - position_eci_m_.at(gnss_satellite_id) = - TrigonometricInterpolation(time_period_list_.at(gnss_satellite_id), eci_.at(gnss_satellite_id), start_unix_time); - } - } -} - -void GnssSatellitePosition::Update(const double current_unix_time) { - for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { - if (unix_time_list.at(gnss_satellite_id).empty()) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - int index = nearest_index_.at(gnss_satellite_id); - if (index == (int)unix_time_list.at(gnss_satellite_id).size()) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - if (index + 1 < (int)unix_time_list.at(gnss_satellite_id).size()) { - double pre_unix = unix_time_list.at(gnss_satellite_id).at(index); - double post_unix = unix_time_list.at(gnss_satellite_id).at(index + 1); - - if (std::abs(current_unix_time - post_unix) < std::abs(current_unix_time - pre_unix)) { - ++index; - nearest_index_.at(gnss_satellite_id) = index; - - time_period_list_.at(gnss_satellite_id).clear(); - ecef_.at(gnss_satellite_id).clear(); - eci_.at(gnss_satellite_id).clear(); - - // for both even and odd: 2n+1 -> [-n, n] 2n -> [-n, n) - for (int j = -interpolation_number_ / 2; j < (interpolation_number_ + 1) / 2; ++j) { - int now_index = index + j; - if (now_index < 0 || now_index >= (int)unix_time_list.at(gnss_satellite_id).size()) continue; - - time_period_list_.at(gnss_satellite_id).push_back(unix_time_list.at(gnss_satellite_id).at(now_index)); - ecef_.at(gnss_satellite_id).push_back(time_series_position_ecef_m_.at(gnss_satellite_id).at(now_index)); - eci_.at(gnss_satellite_id).push_back(time_series_position_eci_m_.at(gnss_satellite_id).at(now_index)); - } - } - } - double nearest_unix_time = unix_time_list.at(gnss_satellite_id).at(index); - if (std::abs(current_unix_time - nearest_unix_time) > time_interval_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - if ((int)time_period_list_.at(gnss_satellite_id).size() != interpolation_number_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - double time_period_length = time_period_list_.at(gnss_satellite_id).back() - time_period_list_.at(gnss_satellite_id).front(); - if (time_period_length > time_interval_ * (interpolation_number_ - 1 + 3) + 1e-4) { // allow for 3 missing - validate_.at(gnss_satellite_id) = false; - continue; - } else { - validate_.at(gnss_satellite_id) = true; - } - - if (std::abs(current_unix_time - nearest_unix_time) < 1e-4) { // for the numerical error, plus 1e-4 - position_ecef_m_.at(gnss_satellite_id) = time_series_position_ecef_m_.at(gnss_satellite_id).at(index); - position_eci_m_.at(gnss_satellite_id) = time_series_position_eci_m_.at(gnss_satellite_id).at(index); - } else { - position_ecef_m_.at(gnss_satellite_id) = - TrigonometricInterpolation(time_period_list_.at(gnss_satellite_id), ecef_.at(gnss_satellite_id), current_unix_time); - position_eci_m_.at(gnss_satellite_id) = - TrigonometricInterpolation(time_period_list_.at(gnss_satellite_id), eci_.at(gnss_satellite_id), current_unix_time); - } - } -} - -// GnssSatelliteClock -void GnssSatelliteClock::Initialize(vector>& file, string file_extension, pair unix_time_period) { - interpolation_number_ = 3; // Quadratic interpolation is recommended - time_series_clock_offset_m_.resize(kTotalNumberOfGnssSatellite); // first vector size is the sat num - unix_time_list.resize(kTotalNumberOfGnssSatellite); - - if (file_extension == ".sp3") { - for (int page = 0; page < (int)file.size(); ++page) { - // Read Header Info - int num_of_time_stamps = 0; - int num_of_sat = 0; - int line; - for (line = 0; line < 3; ++line) { - istringstream iss{file.at(page).at(line)}; - - if (line == 0) { - // in seventh line, there is time stamps - // http://epncb.oma.be/ftp/data/format/sp3c.txt - for (int i = 0; i < 7; ++i) { - // how many time stamps are written? - string each; - iss >> each; - if (i == 6) num_of_time_stamps = stoi(each); - } - } else if (line == 1) { - for (int i = 0; i < 4; ++i) { - string each; - iss >> each; - if (i == 3) time_interval_ = stod(each); - } - } else if (line == 2) { - for (int i = 0; i < 2; ++i) { - string each; - iss >> each; - if (i == 1) num_of_sat = stoi(each); - } - } - } - line = 3; - while (file.at(page).at(line).front() != '*') ++line; - - // Calculate number of data lines - int start_line, end_line; - start_line = line; - end_line = line + (num_of_sat + 1) * num_of_time_stamps; - - // Read time and clock data - double unix_time = 0; - for (int i = 0; i < end_line - start_line; ++i) { - line = i + start_line; - - istringstream iss{file.at(page).at(line)}; - vector s; - if (i % (num_of_sat + 1) == 0) { - // Epoch information - for (int j = 0; j < 7; ++j) { - string tmp; - iss >> tmp; - s.push_back(tmp); - } - unix_time = get_unixtime_from_timestamp_line(s); - } else { - for (int j = 0; j < 5; ++j) { - string tmp; - iss >> tmp; - s.push_back(tmp); - } - int gnss_satellite_id = ConvertGnssSatelliteNumberToIndex(s.front()); - - double clock = stod(s.at(4)); - if (std::abs(clock - nan99) < 1.0) continue; - - // In the file, clock bias is expressed in [micro second], so by multiplying by the speed_of_light & 1e-6, they are converted to [m] - clock *= (environment::speed_of_light_m_s * 1e-6); - if (!unix_time_list.at(gnss_satellite_id).empty() && std::abs(unix_time - unix_time_list.at(gnss_satellite_id).back()) < 1.0) { - unix_time_list.at(gnss_satellite_id).back() = unix_time; - time_series_clock_offset_m_.at(gnss_satellite_id).back() = clock; - } else { - unix_time_list.at(gnss_satellite_id).push_back(unix_time); - time_series_clock_offset_m_.at(gnss_satellite_id).emplace_back(clock); - } - } - } - } - } else { // .clk30s - time_interval_ = 1e9; - - for (int page = 0; page < (int)file.size(); ++page) { - double start_unix_time, end_unix_time; - start_unix_time = unix_time_period.first; - end_unix_time = unix_time_period.second + 30; - - for (int line = 0; line < (int)file.at(page).size(); ++line) { - if (file.at(page).at(line).substr(0, 3) != "AS ") continue; - - istringstream iss{file.at(page).at(line)}; - vector s; - for (int i = 0; i < 11; ++i) { - string tmp; - iss >> tmp; - s.push_back(tmp); - } - - tm* time_tm = initialized_tm(); - time_tm->tm_year = stoi(s.at(2)) - 1900; - time_tm->tm_mon = stoi(s.at(3)) - 1; // 0 - 11, in time struct, 1 - 12 month is expressed by 1 - 12 - time_tm->tm_mday = stoi(s.at(4)); - time_tm->tm_hour = stoi(s.at(5)); - time_tm->tm_min = stoi(s.at(6)); - time_tm->tm_sec = (int)(stod(s.at(7)) + 1e-4); // for the numerical error, plus 1e-4. tm_sec is to be int - double unix_time = (double)mktime(time_tm); - const double interval = 6 * 60 * 60; - if (start_unix_time < 0) { - start_unix_time = unix_time; - end_unix_time = start_unix_time + interval; - } - - std::free(time_tm); - - int gnss_satellite_id = ConvertGnssSatelliteNumberToIndex(s.at(1)); - double clock_bias = stod(s.at(9)) * environment::speed_of_light_m_s; // [s] -> [m] - if (start_unix_time - unix_time > 1e-4) continue; // for the numerical error - if (end_unix_time - unix_time < 1e-4) break; - if (!unix_time_list.at(gnss_satellite_id).empty() && - std::abs(unix_time - unix_time_list.at(gnss_satellite_id).back()) < 1e-4) { // for the numerical error - unix_time_list.at(gnss_satellite_id).back() = unix_time; - time_series_clock_offset_m_.at(gnss_satellite_id).back() = clock_bias; - } else { - if (!unix_time_list.at(gnss_satellite_id).empty()) - time_interval_ = min(time_interval_, unix_time - unix_time_list.at(gnss_satellite_id).back()); - unix_time_list.at(gnss_satellite_id).emplace_back(unix_time); - time_series_clock_offset_m_.at(gnss_satellite_id).emplace_back(clock_bias); - } - } - } + // Get the initialize SP3 file + Sp3FileReader initial_sp3_file = sp3_files_[0]; + if (GetCurrentSp3File(initial_sp3_file, start_time)) { + std::cout << "[Error] GNSS satellites: Calculation time mismatch with SP3 files." << std::endl; + return; } -} -void GnssSatelliteClock::SetUp(const double start_unix_time, const double step_width_s) { - step_width_s_ = step_width_s; - - clock_offset_m_.resize(kTotalNumberOfGnssSatellite); - validate_.assign(kTotalNumberOfGnssSatellite, false); - - nearest_index_.resize(kTotalNumberOfGnssSatellite); - time_period_list_.resize(kTotalNumberOfGnssSatellite); - - clock_bias_.resize(kTotalNumberOfGnssSatellite); - - for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { - if (unix_time_list.at(gnss_satellite_id).empty()) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - int index = (int)(lower_bound(unix_time_list.at(gnss_satellite_id).begin(), unix_time_list.at(gnss_satellite_id).end(), start_unix_time) - - unix_time_list.at(gnss_satellite_id).begin()); - if (index == (int)unix_time_list.at(gnss_satellite_id).size()) { - validate_.at(gnss_satellite_id) = false; - nearest_index_.at(gnss_satellite_id) = index; - continue; - } - - double nearest_unixtime = unix_time_list.at(gnss_satellite_id).at(index); - if (interpolation_number_ % 2 && index != 0) { - double pre_time = unix_time_list.at(gnss_satellite_id).at(index - 1); - if (std::abs(start_unix_time - pre_time) < std::abs(start_unix_time - nearest_unixtime)) --index; - } - nearest_index_.at(gnss_satellite_id) = index; - nearest_unixtime = unix_time_list.at(gnss_satellite_id).at(index); - if (std::abs(start_unix_time - nearest_unixtime) > time_interval_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - // for both even and odd: 2n+1 -> [-n, n] 2n -> [-n, n) - for (int j = -interpolation_number_ / 2; j < (interpolation_number_ + 1) / 2; ++j) { - int now_index = index + j; - if (now_index < 0 || now_index >= (int)unix_time_list.at(gnss_satellite_id).size()) continue; - - time_period_list_.at(gnss_satellite_id).push_back(unix_time_list.at(gnss_satellite_id).at(now_index)); - clock_bias_.at(gnss_satellite_id).push_back(time_series_clock_offset_m_.at(gnss_satellite_id).at(now_index)); - } - - if ((int)time_period_list_.at(gnss_satellite_id).size() != interpolation_number_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - double time_period_length = time_period_list_.at(gnss_satellite_id).back() - time_period_list_.at(gnss_satellite_id).front(); - if (time_period_length > time_interval_ * (interpolation_number_ - 1) + 1e-4) { // more strict for clock_bias - validate_.at(gnss_satellite_id) = false; - continue; - } else { - validate_.at(gnss_satellite_id) = true; - } - - if (std::abs(start_unix_time - nearest_unixtime) < 1e-4) { // for the numerical error - clock_offset_m_.at(gnss_satellite_id) = time_series_clock_offset_m_.at(gnss_satellite_id).at(index); - } else { - clock_offset_m_.at(gnss_satellite_id) = - LagrangeInterpolation(time_period_list_.at(gnss_satellite_id), clock_bias_.at(gnss_satellite_id), start_unix_time); - } + // Get general info + const size_t number_of_calculated_gnss_satellites = initial_sp3_file.GetNumberOfSatellites(); + const size_t nearest_epoch_id = initial_sp3_file.SearchNearestEpochId(start_time); + const size_t half_interpolation_number = kNumberOfInterpolation / 2; + if (nearest_epoch_id >= half_interpolation_number) { + reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; } -} - -void GnssSatelliteClock::Update(const double current_unix_time) { - for (size_t gnss_satellite_id = 0; gnss_satellite_id < kTotalNumberOfGnssSatellite; ++gnss_satellite_id) { - if (unix_time_list.at(gnss_satellite_id).empty()) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - int index = nearest_index_.at(gnss_satellite_id); - if (index == (int)unix_time_list.at(gnss_satellite_id).size()) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - if (index + 1 < (int)unix_time_list.at(gnss_satellite_id).size()) { - double pre_unix = unix_time_list.at(gnss_satellite_id).at(index); - double post_unix = unix_time_list.at(gnss_satellite_id).at(index + 1); - - if (std::abs(current_unix_time - post_unix) < std::abs(current_unix_time - pre_unix)) { - ++index; - nearest_index_.at(gnss_satellite_id) = index; + reference_time_ = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); - time_period_list_.at(gnss_satellite_id).clear(); - clock_bias_.at(gnss_satellite_id).clear(); + // Initialize orbit + orbit_.assign(number_of_calculated_gnss_satellites, InterpolationOrbit(kNumberOfInterpolation)); - // for both even and odd: 2n+1 -> [-n, n] 2n -> [-n, n) - for (int j = -interpolation_number_ / 2; j < (interpolation_number_ + 1) / 2; ++j) { - int now_index = index + j; - if (now_index < 0 || now_index >= (int)unix_time_list.at(gnss_satellite_id).size()) continue; - - time_period_list_.at(gnss_satellite_id).push_back(unix_time_list.at(gnss_satellite_id).at(now_index)); - clock_bias_.at(gnss_satellite_id).push_back(time_series_clock_offset_m_.at(gnss_satellite_id).at(now_index)); - } - } - } - if ((int)time_period_list_.at(gnss_satellite_id).size() != interpolation_number_) { - validate_.at(gnss_satellite_id) = false; - continue; - } - - double nearest_unix_time = unix_time_list.at(gnss_satellite_id).at(index); - if (std::abs(current_unix_time - nearest_unix_time) > time_interval_) { - validate_.at(gnss_satellite_id) = false; - continue; - } + // Initialize clock + std::vector temp; + temp.assign(kNumberOfInterpolation, -1.0); + clock_.assign(number_of_calculated_gnss_satellites, libra::Interpolation(temp, temp)); - // in clock_bias, more strict. - double time_period_length = time_period_list_.at(gnss_satellite_id).back() - time_period_list_.at(gnss_satellite_id).front(); - if (time_period_length > time_interval_ * (interpolation_number_ - 1) + 1e-4) { // more strict for clock_bias - validate_.at(gnss_satellite_id) = false; - continue; - } else { - validate_.at(gnss_satellite_id) = true; - } + // Initialize + for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites; gnss_idx++) { + for (size_t i = 0; i < kNumberOfInterpolation; i++) { + EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); + double time_diff_s = time_at_epoch_id.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(i, gnss_idx); - if (std::abs(current_unix_time - nearest_unix_time) < 1e-4) { - clock_offset_m_.at(gnss_satellite_id) = time_series_clock_offset_m_.at(gnss_satellite_id).at(index); - } else { - clock_offset_m_.at(gnss_satellite_id) = - LagrangeInterpolation(time_period_list_.at(gnss_satellite_id), clock_bias_.at(gnss_satellite_id), current_unix_time); + orbit_[gnss_idx].PushAndPopData(time_diff_s, sp3_position_m); + clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(i, gnss_idx)); + reference_interpolation_id_++; } } -} - -// GnssSatellites -void GnssSatellites::Initialize(vector>& position_file, vector>& clock_file, string clock_file_extension) { - auto unix_time_period = position_.Initialize(position_file); - clock_.Initialize(clock_file, clock_file_extension, unix_time_period); return; } @@ -686,170 +63,28 @@ void GnssSatellites::Initialize(vector>& position_file, vectortm_year = simulation_time->GetStartYear() - 1900; - start_tm->tm_mon = simulation_time->GetStartMonth() - 1; - start_tm->tm_mday = simulation_time->GetStartDay(); - start_tm->tm_hour = simulation_time->GetStartHour(); - start_tm->tm_min = simulation_time->GetStartMinute(); - double start_sec = simulation_time->GetStartSecond(); - start_tm->tm_sec = (int)start_sec; - double unix_time = (double)mktime(start_tm) + start_sec - floor(start_sec); - std::free(start_tm); - - position_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); - clock_.SetUp(unix_time, simulation_time->GetSimulationStep_s()); - - start_unix_time_ = unix_time; - return; } void GnssSatellites::Update(const SimulationTime* simulation_time) { if (!IsCalcEnabled()) return; - double elapsed_sec = simulation_time->GetElapsedTime_s(); - - double current_unix_time = elapsed_sec + start_unix_time_; - - position_.Update(current_unix_time); - clock_.Update(current_unix_time); - return; } -double GnssSatellites::GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, - const double frequency_MHz) const { - // gnss_satellite_id is wrong or not validate - if (!GetWhetherValid(gnss_satellite_id)) return 0.0; - - double res = 0.0; - auto gnss_position = position_.GetPosition_ecef_m(gnss_satellite_id); - for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_ecef_m(i) - gnss_position(i), 2.0); - } - res = sqrt(res); - - // clock bias - res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); - - // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz); - - res += ionospheric_delay; - - return res; -} - -double GnssSatellites::GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, - const double frequency_MHz) const { - // gnss_satellite_id is wrong or not validate - if (!GetWhetherValid(gnss_satellite_id)) return 0.0; - - double res = 0.0; - auto gnss_position = position_.GetPosition_eci_m(gnss_satellite_id); - for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_eci_m(i) - gnss_position(i), 2.0); - } - res = sqrt(res); - - // clock bias - res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); - - // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz); - - res += ionospheric_delay; - - return res; -} - -pair GnssSatellites::GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, - double receiver_clock_offset_m, const double frequency_MHz) const { - // gnss_satellite_id is wrong or not validate - if (!GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; - - double res = 0.0; - auto gnss_position = position_.GetPosition_ecef_m(gnss_satellite_id); - for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_ecef_m(i) - gnss_position(i), 2.0); - } - res = sqrt(res); - - // clock bias - res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); - - // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_ecef_m, frequency_MHz); - - res -= ionospheric_delay; - - // wavelength frequency_MHz is thought to be given by MHz - double lambda = environment::speed_of_light_m_s * 1e-6 / frequency_MHz; - double cycle = res / lambda; - - double bias = floor(cycle); - cycle -= bias; - - return {cycle, bias}; -} - -pair GnssSatellites::GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, - double receiver_clock_offset_m, const double frequency_MHz) const { - // gnss_satellite_id is wrong or not validate - if (!GetWhetherValid(gnss_satellite_id)) return {0.0, 0.0}; - - double res = 0.0; - auto gnss_position = position_.GetPosition_eci_m(gnss_satellite_id); - for (int i = 0; i < 3; ++i) { - res += pow(receiver_position_eci_m(i) - gnss_position(i), 2.0); +bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time) { + for (size_t i = 0; i < sp3_files_.size(); i++) { + EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); + double diff_s = current_time.GetTimeWithFraction_s() - sp3_start_time.GetTimeWithFraction_s(); + if (diff_s < 0.0) { + // Error + return false; + } else if (diff_s < 24 * 60 * 60) { + current_sp3_file = sp3_files_[i]; + return true; + } } - res = sqrt(res); - - // clock bias - res += receiver_clock_offset_m - clock_.GetClockOffset_m(gnss_satellite_id); - - // ionospheric delay - const double ionospheric_delay = AddIonosphericDelay(gnss_satellite_id, receiver_position_eci_m, frequency_MHz); - - res -= ionospheric_delay; - - // wavelength frequency_MHz is thought to be given by MHz - double lambda = environment::speed_of_light_m_s * 1e-6 / frequency_MHz; - double cycle = res / lambda; - - double bias = floor(cycle); - cycle -= bias; - - return {cycle, bias}; -} - -// for Ionospheric delay I[m] -double GnssSatellites::AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, - const double frequency_MHz) const { - // gnss_satellite_id is wrong or not validate - if (!GetWhetherValid(gnss_satellite_id)) return 0.0; - - const double earth_hemisphere_km = environment::earth_equatorial_radius_m / 1000.0; - - double altitude = 0.0; - for (int i = 0; i < 3; ++i) altitude += pow(receiver_position_m[i], 2.0); - altitude = sqrt(altitude); - altitude = altitude / 1000.0 - earth_hemisphere_km; //[m -> km] - if (altitude >= 1000.0) return 0.0; // there is no Ionosphere above 1000km - - libra::Vector<3> gnss_position; - gnss_position = position_.GetPosition_ecef_m(gnss_satellite_id); - - double angle_rad = CalcAngleTwoVectors_rad(receiver_position_m, gnss_position - receiver_position_m); - const double default_delay = 20.0; //[m] default delay - // Assume the maximum height as 1000.0. Divide by cos because the slope makes it longer. - double delay = default_delay * (1000.0 - altitude) / 1000.0 / cos(angle_rad); - const double default_frequency_MHz = 1500.0; //[MHz] - // Ionospheric delay is inversely proportional to the square of the frequency_MHz - delay *= pow(default_frequency_MHz / frequency_MHz, 2.0); - - return delay; + return false; } std::string GnssSatellites::GetLogHeader() const { @@ -868,14 +103,14 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector(position_.GetPosition_ecef_m((int)gps_index), 16); - str_tmp += WriteScalar(clock_.GetClockOffset_m((int)gps_index)); + // str_tmp += WriteVector(position_.GetPosition_ecef_m((int)gps_index), 16); + // str_tmp += WriteScalar(clock_.GetClockOffset_m((int)gps_index)); } return str_tmp; } -GnssSatellites* InitGnssSatellites(const std::string file_name) { +GnssSatellites* InitGnssSatellites(const std::string file_name, const SimulationTime& simulation_time) { IniAccess ini_file(file_name); char section[] = "GNSS_SATELLITES"; @@ -909,7 +144,7 @@ GnssSatellites* InitGnssSatellites(const std::string file_name) { size_t read_file_date = start_date; while (read_file_date <= end_date) { std::string sp3_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, orbit_data_period); - std::string sp3_full_file_path = directory_path + "/" + sp3_file_name; + std::string sp3_full_file_path = directory_path + sp3_file_name; // Read SP3 sp3_file_readers.push_back(Sp3FileReader(sp3_full_file_path)); @@ -918,7 +153,7 @@ GnssSatellites* InitGnssSatellites(const std::string file_name) { if (!use_sp3_for_clock) { std::string clk_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, clock_file_name_footer.substr(0, 3), clock_file_name_footer.substr(4, 7)); - std::string clk_full_file_path = directory_path + "/" + clk_file_name; + std::string clk_full_file_path = directory_path + clk_file_name; // TODO: Read CLK } @@ -926,10 +161,11 @@ GnssSatellites* InitGnssSatellites(const std::string file_name) { read_file_date = IncrementYearDoy(read_file_date); } - // Old descriptions TODO: delete - std::vector> position_file; - std::vector> clock_file; - gnss_satellites->Initialize(position_file, clock_file, clock_file_name_footer); + // + DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), (size_t)simulation_time.GetStartDay(), + (size_t)simulation_time.GetStartHour(), (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); + EpochTime start_epoch_time(start_date_time); + gnss_satellites->Initialize(sp3_file_readers, start_epoch_time); return gnss_satellites; } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index ecbf1117b..bb7400e4e 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -6,6 +6,12 @@ #ifndef S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ #define S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ +#include +#include +#include +#include +#include +#include #include #include "library/gnss/gnss_satellite_number.hpp" @@ -13,174 +19,6 @@ #include "library/math/vector.hpp" #include "simulation_time.hpp" -extern const double nan99; //!< Not at Number TODO: Should be moved to another place - -/** - * @class GnssSatelliteBase - * @brief A class to summarize basic feature of GNSS position and clock calculation - */ -class GnssSatelliteBase { - public: - /** - * @fn GetWhetherValid - * @brief Return true the GNSS satellite information is available - * @param [in] gnss_satellite_id: Index of GNSS satellite - */ - inline bool GetWhetherValid(const size_t gnss_satellite_id) const { - if (gnss_satellite_id >= kTotalNumberOfGnssSatellite) return false; - return validate_.at(gnss_satellite_id); - } - - protected: - /** - * @fn TrigonometricInterpolation - * @brief Interpolate with Trigonometric method - * @note Ref: http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - * https://en.wikipedia.org/wiki/Trigonometric_interpolation# - * @param [in] time_vector: List of given time - * @param [in] values: List of given value - * @param [in] time: Time to calculate the interpolated value - * @return Interpolated value - */ - template - libra::Vector TrigonometricInterpolation(const std::vector& time_vector, const std::vector>& values, double time) const; - double TrigonometricInterpolation(const std::vector& time_vector, const std::vector& values, double time) const; - - /** - * @fn LagrangeInterpolation - * @brief Interpolate with Lagrange method - * @param [in] time_vector: List of given time - * @param [in] values: List of given value - * @param [in] time: Time to calculate the interpolated value - * @return Interpolated value - */ - template - libra::Vector LagrangeInterpolation(const std::vector& time_vector, const std::vector>& values, double time) const; - double LagrangeInterpolation(const std::vector& time_vector, const std::vector& values, double time) const; - - std::vector> unix_time_list; //!< List of unixtime for all satellite - std::vector> time_period_list_; //!< List of time period for interpolation - std::vector validate_; //!< List of whether the satellite is available at the time - std::vector nearest_index_; //!< Index list for update(in position, time_and_index_list_. in clock_bias, time_table_) - - double step_width_s_ = 0.0; //!< Step width [sec] - double time_interval_ = 0.0; //!< Time interval - int interpolation_number_ = 0; //!< Interpolation number -}; - -/** - * @class GnssSatellitePosition - * @brief Class to manage GNSS satellite position information - */ -class GnssSatellitePosition : public GnssSatelliteBase { - public: - /** - * @fn GnssSatellitePosition - * @brief Constructor - */ - GnssSatellitePosition() {} - /** - * @fn Initialize - * @brief Initialize GNSS satellite position - * @param[in] file: File path for position calculation - * @return Start unix time and end unix time - */ - std::pair Initialize(std::vector>& file); - - /** - * @fn Setup - * @brief Setup GNSS satellite position information - * @param [in] start_unix_time: Start unix time - * @param [in] step_width_s: Step width [sec] - */ - void SetUp(const double start_unix_time, const double step_width_s); - /** - * @fn Update - * @brief Update GNSS satellite position information - * @param [in] current_unix_time: Current unix time - */ - void Update(const double current_unix_time); - - /** - * @fn GetPosition_ecef_m - * @brief Return GNSS satellite position vector in the ECEF frame [m] - * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class - */ - inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); - return position_ecef_m_.at(gnss_satellite_id); - } - /** - * @fn GetPosition_eci_m - * @brief Return GNSS satellite position vector in the ECI frame [m] - * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class - */ - inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) return libra::Vector<3>(0.0); - return position_eci_m_.at(gnss_satellite_id); - } - - private: - std::vector> position_ecef_m_; //!< List of GNSS satellite position at specific time in the ECEF frame [m] - std::vector> position_eci_m_; //!< List of GNSS satellite position at specific time in the ECI frame [m] - - std::vector>> time_series_position_ecef_m_; //!< Time series of position of all GNSS satellites in the ECEF frame [m] - std::vector>> time_series_position_eci_m_; //!< Time series of position of all GNSS satellites in the ECEF frame [m] - - // TODO: move to local function? - std::vector>> ecef_; //!< Time series of position of all GNSS satellites in the ECEF frame before interpolation [m] - std::vector>> eci_; //!< Time series of position of all GNSS satellites in the ECEF frame before interpolation [m] -}; - -/** - * @class GnssSatelliteClock - * @brief Class to manage GNSS satellite clock information - */ -class GnssSatelliteClock : public GnssSatelliteBase { - public: - /** - * @fn GnssSatelliteClock - * @brief Constructor - */ - GnssSatelliteClock() {} - /** - * @fn Initialize - * @brief Initialize GNSS satellite clock - * @param[in] file: File path for clock calculation - * @param[in] file_extension: Extension of the clock file (ex. .sp3, .clk30s) - */ - void Initialize(std::vector>& file, std::string file_extension, std::pair unix_time_period); - /** - * @fn SetUp - * @brief Setup GNSS satellite clock information - * @param [in] start_unix_time: Start unix time - * @param [in] step_width_s: Step width [sec] - */ - void SetUp(const double start_unix_time, const double step_width_s); - /** - * @fn Update - * @brief Update GNSS satellite clock information - * @param [in] current_unix_time: Current unix time - */ - void Update(const double current_unix_time); - /** - * @fn GetClockOffset_m - * @brief Return GNSS satellite clock in distance expression [m] - * @param [in] gnss_satellite_id: GNSS satellite ID defined in this class - */ - inline double GetClockOffset_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) return 0.0; - return clock_offset_m_.at(gnss_satellite_id); - } - - private: - std::vector clock_offset_m_; //!< List of clock bias of all GNSS satellites at specific time expressed in distance [m] - std::vector> time_series_clock_offset_m_; //!< Time series of clock bias of all GNSS satellites expressed in distance [m] - - // TODO: move to local function? - std::vector> clock_bias_; //!< Time series of clock bias of all GNSS satellites expressed in distance before interpolation [m] -}; - /** * @class GnssSatellites * @brief Class to calculate GNSS satellite position and related states @@ -210,8 +48,7 @@ class GnssSatellites : public ILoggable { * @brief Initialize function * @note Parameters are defined in GNSSSat_Info */ - void Initialize(std::vector>& position_file, std::vector>& clock_file, - std::string clock_file_extension); + void Initialize(const std::vector& sp3_files, const EpochTime start_time); /** * @fn IsCalcEnabled * @brief Return calculated enabled flag @@ -236,102 +73,9 @@ class GnssSatellites : public ILoggable { * @brief Return true the GNSS satellite information is available for both position and clock * @param [in] gnss_satellite_id: Index of GNSS satellite */ - inline bool GetWhetherValid(const size_t gnss_satellite_id) const { - if (position_.GetWhetherValid(gnss_satellite_id) && clock_.GetWhetherValid(gnss_satellite_id)) return true; - return false; - } - /** - * @fn GetStartUnixTime - * @brief Return start unix time - */ - inline double GetStartUnixTime() const { return start_unix_time_; } + inline bool GetWhetherValid(const size_t gnss_satellite_id) const { return true; } - /** - * @fn GetPosition_ecef_m - * @brief Return GNSS satellite position in the ECEF frame [m] - * @param [in] gnss_satellite_id: GNSS satellite ID - */ - inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id) const { - // gnss_satellite_id is wrong or not valid - if (!GetWhetherValid(gnss_satellite_id)) { - libra::Vector<3> res(0); - return res; - } - - return position_.GetPosition_ecef_m(gnss_satellite_id); - } - /** - * @fn GetPosition_eci_m - * @brief Return GNSS satellite position in the ECI frame [m] - * @param [in] gnss_satellite_id: GNSS satellite ID - */ - inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { - // gnss_satellite_id is wrong or not valid - if (!GetWhetherValid(gnss_satellite_id)) { - libra::Vector<3> res(0); - return res; - } - - return position_.GetPosition_eci_m(gnss_satellite_id); - } - - /** - * @fn GetClockOffset_m - * @brief Return GNSS satellite clock - * @param [in] gnss_satellite_id: GNSS satellite ID - */ - inline double GetClockOffset_m(const size_t gnss_satellite_id) const { - if (!GetWhetherValid(gnss_satellite_id)) { - return 0.0; - } - - return clock_.GetClockOffset_m(gnss_satellite_id); - } - - /** - * @fn GetPseudoRangeEcef - * @brief Calculate pseudo range between receiver and a GNSS satellite - * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_ecef_m: Receiver position vector in the ECEF frame [m] - * @param [in] receiver_clock_offset_m: Receiver clock - * @param [in] frequency_MHz: Frequency of the signal [MHz] - * @return Pseudo range [m] - */ - double GetPseudoRangeEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, double receiver_clock_offset_m, - const double frequency_MHz) const; - /** - * @fn GetPseudoRangeEci - * @brief Calculate pseudo range between receiver and a GNSS satellite - * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_eci_m: Receiver position vector in the ECI frame [m] - * @param [in] receiver_clock_offset_m: Receiver clock - * @param [in] frequency_MHz: Frequency of the signal [MHz] - * @return Pseudo range [m] - */ - double GetPseudoRangeEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, double receiver_clock_offset_m, - const double frequency_MHz) const; - /** - * @fn GetCarrierPhaseEcef - * @brief Calculate carrier phase observed by a receiver for a GNSS satellite - * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_ecef_m: Receiver position vector in the ECEF frame [m] - * @param [in] receiver_clock_offset_m: Receiver clock - * @param [in] frequency_MHz: Frequency of the signal [MHz] - * @return Carrier phase cycle and bias [-] - */ - std::pair GetCarrierPhaseEcef(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_ecef_m, - double receiver_clock_offset_m, const double frequency_MHz) const; - /** - * @fn GetCarrierPhaseEci - * @brief Calculate carrier phase observed by a receiver for a GNSS satellite - * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_eci_m: Receiver position vector in the ECI frame [m] - * @param [in] receiver_clock_offset_m: Receiver clock - * @param [in] frequency_MHz: Frequency of the signal [MHz] - * @return Carrier phase cycle and bias [-] - */ - std::pair GetCarrierPhaseEci(const size_t gnss_satellite_id, libra::Vector<3> receiver_position_eci_m, - double receiver_clock_offset_m, const double frequency_MHz) const; + inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return libra::Vector<3>(0.0); } // Override ILoggable /** @@ -346,21 +90,17 @@ class GnssSatellites : public ILoggable { std::string GetLogValue() const override; private: - /** - * @fn AddIonosphericDelay - * @brief Calculation of ionospheric delay - * @note TODO: Ionospheric delay very Miscellaneous need to fix - * @param [in] gnss_satellite_id: GNSS satellite ID - * @param [in] receiver_position_m: Receiver position [m] - * @param [in] frequency_MHz: Frequency [MHz] - * @return Ionospheric delay [m] - */ - double AddIonosphericDelay(const size_t gnss_satellite_id, const libra::Vector<3> receiver_position_m, const double frequency_MHz) const; + bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation + + std::vector sp3_files_; //!< List of SP3 files + EpochTime reference_time_; //!< Reference start time of the SP3 handling + size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + + std::vector orbit_; //!< GNSS satellite orbit with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation - bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation - GnssSatellitePosition position_; //!< GNSS satellite position information - GnssSatelliteClock clock_; //!< GNSS satellite clock information - double start_unix_time_; //!< Start unix time + // Check + bool GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time); }; /** @@ -368,6 +108,6 @@ class GnssSatellites : public ILoggable { *@brief Initialize function for GnssSatellites class *@param [in] file_name: Path to the initialize file */ -GnssSatellites* InitGnssSatellites(const std::string file_name); +GnssSatellites* InitGnssSatellites(const std::string file_name, const SimulationTime& simulation_time); #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ From 83f271ed4dd0f0adb47f02c19d3deedd73290526 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 10:13:01 +0100 Subject: [PATCH 063/456] Fix directory path of GNSS product files --- data/sample/initialize_files/sample_gnss.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 660c8fa00..8561d5ed2 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -1,6 +1,6 @@ [GNSS_SATELLITES] -directory_path = EXT_LIB_DIR_FROM_EXE/gnss/final_products/ -calculation = DISABLE +directory_path = INI_FILE_DIR_FROM_EXE/gnss/final_products/ +calculation = ENABLE logging = DISABLE // Supporting the following products @@ -32,5 +32,5 @@ clock_file_name_footer = 15M_ORB.SP3 // or 30S_CLK.CLK or 05M_CLK.CLK // YYYYDDD // - YYYY: Year // - DDD: Day of year -start_date = 2023126 -end_date = 2023129 +start_date = 2023190 +end_date = 2023191 From 83402dc29105348bad7c49c464a96e897890fb00 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 11:20:56 +0100 Subject: [PATCH 064/456] Add nearest epoch search function for SP3 file --- src/environment/global/gnss_satellites.cpp | 2 +- src/library/gnss/sp3_file_reader.cpp | 21 +++++++++++++++++++++ src/library/gnss/sp3_file_reader.hpp | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 3a5c92f54..9c047201e 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -22,7 +22,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con // Get the initialize SP3 file Sp3FileReader initial_sp3_file = sp3_files_[0]; - if (GetCurrentSp3File(initial_sp3_file, start_time)) { + if (!GetCurrentSp3File(initial_sp3_file, start_time)) { std::cout << "[Error] GNSS satellites: Calculation time mismatch with SP3 files." << std::endl; return; } diff --git a/src/library/gnss/sp3_file_reader.cpp b/src/library/gnss/sp3_file_reader.cpp index 944c10786..48c7b5ac7 100644 --- a/src/library/gnss/sp3_file_reader.cpp +++ b/src/library/gnss/sp3_file_reader.cpp @@ -124,6 +124,27 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { return true; } +size_t Sp3FileReader::SearchNearestEpochId(const EpochTime time) { + size_t nearest_epoch_id = 0; + + // Get header info + const size_t num_epoch = header_.number_of_epoch_; + const double interval_s = header_.epoch_interval_s_; + + // Check range if epoch + EpochTime start_epoch(epoch_[0]); + if (start_epoch > time) { + nearest_epoch_id = 0; + } else if ((EpochTime)(epoch_[num_epoch - 1]) < time) { + nearest_epoch_id = num_epoch - 1; + } else { // Calc nearest point + double diff_s = time.GetTimeWithFraction_s() - start_epoch.GetTimeWithFraction_s(); + nearest_epoch_id = (size_t)(diff_s / interval_s + 0.5); + } + + return nearest_epoch_id; +} + size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { size_t line_number = 0; std::string line; diff --git a/src/library/gnss/sp3_file_reader.hpp b/src/library/gnss/sp3_file_reader.hpp index ee59b10fd..3d86cc28e 100644 --- a/src/library/gnss/sp3_file_reader.hpp +++ b/src/library/gnss/sp3_file_reader.hpp @@ -178,6 +178,8 @@ class Sp3FileReader { double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); libra::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); + size_t SearchNearestEpochId(const EpochTime time); + private: Sp3Header header_; //!< SP3 header information std::vector epoch_; //!< Epoch data list From 6f67443098a437e4555d8730e76b1aa928efc296 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 13:47:57 +0100 Subject: [PATCH 065/456] Implement update function for GNSS satellites --- src/environment/global/global_environment.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 28 ++++++++++++++++++- src/environment/global/gnss_satellites.hpp | 3 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 4240d5d80..366419c42 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -35,7 +35,7 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con void GlobalEnvironment::Update() { simulation_time_->UpdateTime(); celestial_information_->UpdateAllObjectsInformation(*simulation_time_); - gnss_satellites_->Update(simulation_time_); + gnss_satellites_->Update(*simulation_time_); } void GlobalEnvironment::LogSetup(Logger& logger) { diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 9c047201e..9c0a08f32 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -66,9 +66,34 @@ void GnssSatellites::SetUp(const SimulationTime* simulation_time) { return; } -void GnssSatellites::Update(const SimulationTime* simulation_time) { +void GnssSatellites::Update(const SimulationTime& simulation_time) { if (!IsCalcEnabled()) return; + // Get time + UTC current_utc = simulation_time.GetCurrentUtc(); + DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, + (size_t)current_utc.minute, current_utc.second); + EpochTime current_epoch_time(current_date_time); + + // TODO Check file updates + + // SP3 file + Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; + + double diff_s = current_epoch_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double medium_time_s = orbit_[0].GetTimeList()[4]; + if (diff_s > medium_time_s) { + for (size_t gps_idx = 0; gps_idx < 32; gps_idx++) { + EpochTime sp3_time = EpochTime(DateTime(sp3_file.GetEpochData(reference_interpolation_id_).GetAsString())); + double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + libra::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gps_idx); + + orbit_[gps_idx].PushAndPopData(time_diff_s, sp3_position_m); + clock_[gps_idx].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gps_idx)); + } + reference_interpolation_id_++; + } + return; } @@ -81,6 +106,7 @@ bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const Ep return false; } else if (diff_s < 24 * 60 * 60) { current_sp3_file = sp3_files_[i]; + sp3_file_id_ = i; return true; } } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index bb7400e4e..fc82247a9 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -66,7 +66,7 @@ class GnssSatellites : public ILoggable { * @brief Update both GNSS satellite information * @param [in] simulation_time: Simulation time information */ - void Update(const SimulationTime* simulation_time); + void Update(const SimulationTime& simulation_time); /** * @fn GetWhetherValid @@ -93,6 +93,7 @@ class GnssSatellites : public ILoggable { bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation std::vector sp3_files_; //!< List of SP3 files + size_t sp3_file_id_; //!< Current SP3 file ID EpochTime reference_time_; //!< Reference start time of the SP3 handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation From 3cf520d843ec19e9b9713e0108917f1eb8678f1a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 14:53:44 +0100 Subject: [PATCH 066/456] Add Getter functions --- src/environment/global/gnss_satellites.cpp | 16 +++++------ src/environment/global/gnss_satellites.hpp | 33 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 9c0a08f32..b8596043f 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -47,15 +47,15 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con // Initialize for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites; gnss_idx++) { for (size_t i = 0; i < kNumberOfInterpolation; i++) { - EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); + EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_ + i)); double time_diff_s = time_at_epoch_id.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(i, gnss_idx); orbit_[gnss_idx].PushAndPopData(time_diff_s, sp3_position_m); clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(i, gnss_idx)); - reference_interpolation_id_++; } } + reference_interpolation_id_ += kNumberOfInterpolation; return; } @@ -73,18 +73,18 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { UTC current_utc = simulation_time.GetCurrentUtc(); DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, (size_t)current_utc.minute, current_utc.second); - EpochTime current_epoch_time(current_date_time); + current_epoch_time_ = EpochTime(current_date_time); // TODO Check file updates // SP3 file Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; - double diff_s = current_epoch_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); double medium_time_s = orbit_[0].GetTimeList()[4]; if (diff_s > medium_time_s) { for (size_t gps_idx = 0; gps_idx < 32; gps_idx++) { - EpochTime sp3_time = EpochTime(DateTime(sp3_file.GetEpochData(reference_interpolation_id_).GetAsString())); + EpochTime sp3_time = EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); libra::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gps_idx); @@ -119,7 +119,7 @@ std::string GnssSatellites::GetLogHeader() const { // TODO: Add log output for other navigation systems for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { str_tmp += WriteVector("GPS" + std::to_string(gps_index) + "_position", "ecef", "m", 3); - str_tmp += WriteScalar("GPS" + std::to_string(gps_index) + "_clock_offset", "m"); + str_tmp += WriteScalar("GPS" + std::to_string(gps_index) + "_clock_offset", "s"); } return str_tmp; @@ -129,8 +129,8 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - // str_tmp += WriteVector(position_.GetPosition_ecef_m((int)gps_index), 16); - // str_tmp += WriteScalar(clock_.GetClockOffset_m((int)gps_index)); + str_tmp += WriteVector(GetPosition_ecef_m(gps_index), 16); + str_tmp += WriteScalar(GetClock_s(gps_index)); } return str_tmp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index fc82247a9..3321947ad 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -77,6 +77,37 @@ class GnssSatellites : public ILoggable { inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return libra::Vector<3>(0.0); } + inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const { + EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return libra::Vector<3>(0.0); + + const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf + return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, libra::tau / kOrbitalPeriodCorrection_s); + } + + inline double GetClock_s(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const { + EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return 0.0; + + return clock_[gnss_satellite_id].CalcPolynomial(diff_s) * 1e-6; + } + // Override ILoggable /** * @fn GetLogHeader @@ -100,6 +131,8 @@ class GnssSatellites : public ILoggable { std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation + EpochTime current_epoch_time_; + // Check bool GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time); }; From dc03fd079deb752e96c310bcabf0d159a4dc24fd Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 14:54:27 +0100 Subject: [PATCH 067/456] Fix log output unit info --- scripts/Plot/plot_gnss_satellites.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Plot/plot_gnss_satellites.py b/scripts/Plot/plot_gnss_satellites.py index 570e071e0..714d15902 100644 --- a/scripts/Plot/plot_gnss_satellites.py +++ b/scripts/Plot/plot_gnss_satellites.py @@ -66,7 +66,7 @@ plt.figure(1) for gps_idx in range(32): gps_str = 'GPS' + str(gps_idx) - clock = read_scalar_from_csv(read_file_name, gps_str + '_clock_offset[m]') + clock = read_scalar_from_csv(read_file_name, gps_str + '_clock_offset[s]') plt.plot(time[0], clock[0], marker=".", label=gps_str) plt.title("GPS Clock Offset") From c779fc4b0f766a342c37d5c58855b1beb532c183 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 15:07:08 +0100 Subject: [PATCH 068/456] Add comments for GNSS satelite --- src/environment/global/gnss_satellites.cpp | 4 +-- src/environment/global/gnss_satellites.hpp | 40 ++++++++++++++++++---- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index b8596043f..40b6dcdb4 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -1,6 +1,6 @@ /** * @file gnss_satellites.cpp - * @brief Class to calculate GNSS satellite position and related states + * @brief Class to calculate GNSS satellite position and clock */ #include "gnss_satellites.hpp" @@ -180,7 +180,7 @@ GnssSatellites* InitGnssSatellites(const std::string file_name, const Simulation std::string clk_file_name = GetOrbitClockFinalFileName(file_name_header, read_file_date, clock_file_name_footer.substr(0, 3), clock_file_name_footer.substr(4, 7)); std::string clk_full_file_path = directory_path + clk_file_name; - // TODO: Read CLK + // TODO: Read CLK file } // Increment diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 3321947ad..3ee614f17 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -1,6 +1,7 @@ /** * @file gnss_satellites.hpp - * @brief Class to calculate GNSS satellite position and related states + * @brief Class to calculate GNSS satellite position and clock + * @note TODO: Add GNSS satellite antenna information */ #ifndef S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ @@ -21,14 +22,15 @@ /** * @class GnssSatellites - * @brief Class to calculate GNSS satellite position and related states + * @brief Class to calculate GNSS satellite position and clock */ class GnssSatellites : public ILoggable { public: /** * @fn GnssSatellites * @brief Constructor - * @param [in] is_calc_enabled: Flag to manage the GNSS satellite position calculation + * @param [in] is_calc_enabled: Flag to manage the GNSS satellite position/clock calculation + * @param [in] is_log_enabled: Flag to generate the log of GNSS satellite position/clock calculation */ GnssSatellites(const bool is_calc_enabled = false, const bool is_log_enabled = false) : is_calc_enabled_(is_calc_enabled) { if (!is_calc_enabled_) { @@ -46,9 +48,11 @@ class GnssSatellites : public ILoggable { /** * @fn Initialize * @brief Initialize function - * @note Parameters are defined in GNSSSat_Info + * @param [in] sp3_files: List of SP3 files + * @param [in] start_time: The simulation start time */ void Initialize(const std::vector& sp3_files, const EpochTime start_time); + /** * @fn IsCalcEnabled * @brief Return calculated enabled flag @@ -61,6 +65,7 @@ class GnssSatellites : public ILoggable { * @param [in] simulation_time: Simulation time information */ void SetUp(const SimulationTime* simulation_time); + /** * @fn Update * @brief Update both GNSS satellite information @@ -77,6 +82,13 @@ class GnssSatellites : public ILoggable { inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return libra::Vector<3>(0.0); } + /** + * @fn GetPosition_ecef_m + * @brief Return GNSS satellite position at ECEF frame + * @param [in] gnss_satellite_id: ID of GNSS satellite + * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. + * @return GNSS satellite position at ECEF frame at the time. Or return zero when the time is far from the current simulation time. + */ inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const { EpochTime target_time; @@ -93,6 +105,13 @@ class GnssSatellites : public ILoggable { return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, libra::tau / kOrbitalPeriodCorrection_s); } + /** + * @fn GetGetClock_s + * @brief Return GNSS satellite clock offset + * @param [in] gnss_satellite_id: ID of GNSS satellite + * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. + * @return GNSS satellite clock offset at the time. Or return zero when the time is far from the current simulation time. + */ inline double GetClock_s(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const { EpochTime target_time; @@ -127,13 +146,18 @@ class GnssSatellites : public ILoggable { size_t sp3_file_id_; //!< Current SP3 file ID EpochTime reference_time_; //!< Reference start time of the SP3 handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation - EpochTime current_epoch_time_; - - // Check + /** + * @fn GetCurrentSp3File + * @brief Get the SP3 file should be used at the time + * @param [out] current_sp3_file: SP3 file information should be use. + * @param [in] current_time: Target time + * @return true means noo error, false means the time argument is out of range + */ bool GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time); }; @@ -141,6 +165,8 @@ class GnssSatellites : public ILoggable { *@fn InitGnssSatellites *@brief Initialize function for GnssSatellites class *@param [in] file_name: Path to the initialize file + *@param [in] simulation_time: Simulation time information + *@return Initialized GnssSatellite class */ GnssSatellites* InitGnssSatellites(const std::string file_name, const SimulationTime& simulation_time); From 1529859dcca9b3d01ce6b4896a0172a68d64b05c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 15:15:34 +0100 Subject: [PATCH 069/456] Fix for the initial data --- src/environment/global/gnss_satellites.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 40b6dcdb4..0a7ca206b 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -19,6 +19,7 @@ const size_t kNumberOfInterpolation = 9; void GnssSatellites::Initialize(const std::vector& sp3_files, const EpochTime start_time) { sp3_files_ = sp3_files; + current_epoch_time_ = start_time; // Get the initialize SP3 file Sp3FileReader initial_sp3_file = sp3_files_[0]; From e8baad72971ee93a4867707ae5ad1c30c31a01bb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 15:17:32 +0100 Subject: [PATCH 070/456] Delete unused setup function --- src/environment/global/global_environment.cpp | 1 - src/environment/global/gnss_satellites.cpp | 6 ------ src/environment/global/gnss_satellites.hpp | 7 ------- 3 files changed, 14 deletions(-) diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 366419c42..2637620d2 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -29,7 +29,6 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con // Calc initial value celestial_information_->UpdateAllObjectsInformation(*simulation_time_); - gnss_satellites_->SetUp(simulation_time_); } void GlobalEnvironment::Update() { diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 0a7ca206b..68b7493ee 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -61,12 +61,6 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con return; } -void GnssSatellites::SetUp(const SimulationTime* simulation_time) { - if (!IsCalcEnabled()) return; - - return; -} - void GnssSatellites::Update(const SimulationTime& simulation_time) { if (!IsCalcEnabled()) return; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 3ee614f17..242099e1c 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -59,13 +59,6 @@ class GnssSatellites : public ILoggable { */ inline bool IsCalcEnabled() const { return is_calc_enabled_; } - /** - * @fn SetUp - * @brief Setup both GNSS satellite information - * @param [in] simulation_time: Simulation time information - */ - void SetUp(const SimulationTime* simulation_time); - /** * @fn Update * @brief Update both GNSS satellite information From c718205397edcf499150a83942e02ca58cde7a0c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 15:18:00 +0100 Subject: [PATCH 071/456] Delete unused valid function --- src/environment/global/gnss_satellites.hpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 242099e1c..323e96976 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -66,13 +66,6 @@ class GnssSatellites : public ILoggable { */ void Update(const SimulationTime& simulation_time); - /** - * @fn GetWhetherValid - * @brief Return true the GNSS satellite information is available for both position and clock - * @param [in] gnss_satellite_id: Index of GNSS satellite - */ - inline bool GetWhetherValid(const size_t gnss_satellite_id) const { return true; } - inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return libra::Vector<3>(0.0); } /** From e3b85e0fd0d1f8aff642dd4aa3563fb325e85cdd Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:00:50 +0100 Subject: [PATCH 072/456] Add ECI conversion for GNSS satellites --- src/environment/global/global_environment.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 6 ++--- src/environment/global/gnss_satellites.hpp | 26 +++++++++++++------ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 2637620d2..cce9a8442 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -25,7 +25,7 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con celestial_information_ = InitCelestialInformation(simulation_configuration->initialize_base_file_name_); simulation_time_ = InitSimulationTime(simulation_time_ini_path); hipparcos_catalogue_ = InitHipparcosCatalogue(simulation_configuration->initialize_base_file_name_); - gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_, *simulation_time_); + gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_, celestial_information_->GetEarthRotation(), *simulation_time_); // Calc initial value celestial_information_->UpdateAllObjectsInformation(*simulation_time_); diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 68b7493ee..912d0dc40 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -124,21 +124,21 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector(GetPosition_ecef_m(gps_index), 16); + str_tmp += WriteVector(GetPosition_eci_m(gps_index), 16); str_tmp += WriteScalar(GetClock_s(gps_index)); } return str_tmp; } -GnssSatellites* InitGnssSatellites(const std::string file_name, const SimulationTime& simulation_time) { +GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotation& earth_rotation, const SimulationTime& simulation_time) { IniAccess ini_file(file_name); char section[] = "GNSS_SATELLITES"; const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); - GnssSatellites* gnss_satellites = new GnssSatellites(is_calc_enable, is_log_enable); + GnssSatellites* gnss_satellites = new GnssSatellites(earth_rotation, is_calc_enable, is_log_enable); if (!gnss_satellites->IsCalcEnabled()) { return gnss_satellites; } diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 323e96976..13254c6bd 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -15,6 +15,7 @@ #include #include +#include "earth_rotation.hpp" #include "library/gnss/gnss_satellite_number.hpp" #include "library/logger/loggable.hpp" #include "library/math/vector.hpp" @@ -29,10 +30,12 @@ class GnssSatellites : public ILoggable { /** * @fn GnssSatellites * @brief Constructor + * @param [in] earth_rotation: Earth rotation information * @param [in] is_calc_enabled: Flag to manage the GNSS satellite position/clock calculation * @param [in] is_log_enabled: Flag to generate the log of GNSS satellite position/clock calculation */ - GnssSatellites(const bool is_calc_enabled = false, const bool is_log_enabled = false) : is_calc_enabled_(is_calc_enabled) { + GnssSatellites(const EarthRotation& earth_rotation, const bool is_calc_enabled = false, const bool is_log_enabled = false) + : is_calc_enabled_(is_calc_enabled), earth_rotation_(earth_rotation) { if (!is_calc_enabled_) { is_log_enabled_ = false; } else { @@ -66,7 +69,10 @@ class GnssSatellites : public ILoggable { */ void Update(const SimulationTime& simulation_time); - inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { return libra::Vector<3>(0.0); } + inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { + // TODO: Add target time for earth rotation calculation + return earth_rotation_.GetDcmJ2000ToEcef().Transpose() * GetPosition_ecef_m(gnss_satellite_id); + } /** * @fn GetPosition_ecef_m @@ -137,6 +143,9 @@ class GnssSatellites : public ILoggable { std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation + // References + const EarthRotation& earth_rotation_; //!< Earth rotation + /** * @fn GetCurrentSp3File * @brief Get the SP3 file should be used at the time @@ -148,12 +157,13 @@ class GnssSatellites : public ILoggable { }; /** - *@fn InitGnssSatellites - *@brief Initialize function for GnssSatellites class - *@param [in] file_name: Path to the initialize file - *@param [in] simulation_time: Simulation time information - *@return Initialized GnssSatellite class + * @fn InitGnssSatellites + * @brief Initialize function for GnssSatellites class + * @param [in] file_name: Path to the initialize file + * @param [in] earth_rotation: Earth rotation information + * @param [in] simulation_time: Simulation time information + * @return Initialized GnssSatellite class */ -GnssSatellites* InitGnssSatellites(const std::string file_name, const SimulationTime& simulation_time); +GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotation& earth_rotation, const SimulationTime& simulation_time); #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ From a539e8f2909a1080254c4fd6b6551f57656f929e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:06:19 +0100 Subject: [PATCH 073/456] Fix GetEarthRotation --- src/environment/global/celestial_information.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 7c4afa854..3f897f17d 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -207,7 +207,7 @@ class CelestialInformation : public ILoggable { * @fn GetEarthRotation * @brief Return EarthRotation information */ - inline EarthRotation GetEarthRotation(void) const { return *earth_rotation_; }; + inline EarthRotation& GetEarthRotation(void) const { return *earth_rotation_; }; /** * @fn GetMoonRotation * @brief Return MoonRotation information From ee76f5cdd61e42e6b7fe116aab35e19a68957a01 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:07:21 +0100 Subject: [PATCH 074/456] Fix log output --- src/environment/global/gnss_satellites.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 912d0dc40..b613de236 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -124,7 +124,7 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector(GetPosition_eci_m(gps_index), 16); + str_tmp += WriteVector(GetPosition_ecef_m(gps_index), 16); str_tmp += WriteScalar(GetClock_s(gps_index)); } From 2c5490c6df90a8d5376db8fcea432254f6aad87c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:09:39 +0100 Subject: [PATCH 075/456] Move long inline function to cpp --- src/environment/global/gnss_satellites.cpp | 31 ++++++++++++++++++++++ src/environment/global/gnss_satellites.hpp | 31 ++-------------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index b613de236..4e5e2a5d0 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -92,6 +92,37 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } +libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time) const { + EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return libra::Vector<3>(0.0); + + const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf + return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, libra::tau / kOrbitalPeriodCorrection_s); +} + +double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const EpochTime time) const { + EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return 0.0; + + return clock_[gnss_satellite_id].CalcPolynomial(diff_s) * 1e-6; +} + bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time) { for (size_t i = 0; i < sp3_files_.size(); i++) { EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 13254c6bd..247c55e60 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -81,21 +81,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero when the time is far from the current simulation time. */ - inline libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const { - EpochTime target_time; - - if (time.GetTime_s() == 0) { - target_time = current_epoch_time_; - } else { - target_time = time; - } - - double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return libra::Vector<3>(0.0); - - const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, libra::tau / kOrbitalPeriodCorrection_s); - } + libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -104,20 +90,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite clock offset at the time. Or return zero when the time is far from the current simulation time. */ - inline double GetClock_s(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const { - EpochTime target_time; - - if (time.GetTime_s() == 0) { - target_time = current_epoch_time_; - } else { - target_time = time; - } - - double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return 0.0; - - return clock_[gnss_satellite_id].CalcPolynomial(diff_s) * 1e-6; - } + double GetClock_s(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; // Override ILoggable /** From 4ed9aaffc9e17177314028a64271af9a2ab5e479 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:12:51 +0100 Subject: [PATCH 076/456] Add assertion --- src/environment/global/gnss_satellites.cpp | 12 ++++++++---- src/environment/global/gnss_satellites.hpp | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 4e5e2a5d0..aa7cf6594 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -29,7 +29,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con } // Get general info - const size_t number_of_calculated_gnss_satellites = initial_sp3_file.GetNumberOfSatellites(); + size_t number_of_calculated_gnss_satellites_ = initial_sp3_file.GetNumberOfSatellites(); const size_t nearest_epoch_id = initial_sp3_file.SearchNearestEpochId(start_time); const size_t half_interpolation_number = kNumberOfInterpolation / 2; if (nearest_epoch_id >= half_interpolation_number) { @@ -38,15 +38,15 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con reference_time_ = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); // Initialize orbit - orbit_.assign(number_of_calculated_gnss_satellites, InterpolationOrbit(kNumberOfInterpolation)); + orbit_.assign(number_of_calculated_gnss_satellites_, InterpolationOrbit(kNumberOfInterpolation)); // Initialize clock std::vector temp; temp.assign(kNumberOfInterpolation, -1.0); - clock_.assign(number_of_calculated_gnss_satellites, libra::Interpolation(temp, temp)); + clock_.assign(number_of_calculated_gnss_satellites_, libra::Interpolation(temp, temp)); // Initialize - for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites; gnss_idx++) { + for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites_; gnss_idx++) { for (size_t i = 0; i < kNumberOfInterpolation; i++) { EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_ + i)); double time_diff_s = time_at_epoch_id.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); @@ -93,6 +93,8 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { } libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time) const { + if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return libra::Vector<3>(0.0); + EpochTime target_time; if (time.GetTime_s() == 0) { @@ -109,6 +111,8 @@ libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_ } double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const EpochTime time) const { + if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return 0.0; + EpochTime target_time; if (time.GetTime_s() == 0) { diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 247c55e60..93189a013 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -79,7 +79,7 @@ class GnssSatellites : public ILoggable { * @brief Return GNSS satellite position at ECEF frame * @param [in] gnss_satellite_id: ID of GNSS satellite * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. - * @return GNSS satellite position at ECEF frame at the time. Or return zero when the time is far from the current simulation time. + * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; @@ -88,7 +88,7 @@ class GnssSatellites : public ILoggable { * @brief Return GNSS satellite clock offset * @param [in] gnss_satellite_id: ID of GNSS satellite * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. - * @return GNSS satellite clock offset at the time. Or return zero when the time is far from the current simulation time. + * @return GNSS satellite clock offset at the time. Or return zero when the arguments are out of range. */ double GetClock_s(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; @@ -107,7 +107,8 @@ class GnssSatellites : public ILoggable { private: bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation - std::vector sp3_files_; //!< List of SP3 files + std::vector sp3_files_; //!< List of SP3 files + size_t number_of_calculated_gnss_satellites_; size_t sp3_file_id_; //!< Current SP3 file ID EpochTime reference_time_; //!< Reference start time of the SP3 handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation From 80cdaa53411a74e19ad34df208b80d1d78be31d9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:25:52 +0100 Subject: [PATCH 077/456] Fix small --- src/environment/global/gnss_satellites.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index aa7cf6594..e20d21ccb 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -29,7 +29,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con } // Get general info - size_t number_of_calculated_gnss_satellites_ = initial_sp3_file.GetNumberOfSatellites(); + number_of_calculated_gnss_satellites_ = initial_sp3_file.GetNumberOfSatellites(); const size_t nearest_epoch_id = initial_sp3_file.SearchNearestEpochId(start_time); const size_t half_interpolation_number = kNumberOfInterpolation / 2; if (nearest_epoch_id >= half_interpolation_number) { From 09d40310bdf567144c7780cbb767ef3f86a95d97 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:29:33 +0100 Subject: [PATCH 078/456] Fix default value --- data/sample/initialize_files/sample_gnss.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/sample/initialize_files/sample_gnss.ini b/data/sample/initialize_files/sample_gnss.ini index 8561d5ed2..88a793478 100644 --- a/data/sample/initialize_files/sample_gnss.ini +++ b/data/sample/initialize_files/sample_gnss.ini @@ -1,6 +1,6 @@ [GNSS_SATELLITES] directory_path = INI_FILE_DIR_FROM_EXE/gnss/final_products/ -calculation = ENABLE +calculation = DISABLE logging = DISABLE // Supporting the following products @@ -32,5 +32,5 @@ clock_file_name_footer = 15M_ORB.SP3 // or 30S_CLK.CLK or 05M_CLK.CLK // YYYYDDD // - YYYY: Year // - DDD: Day of year -start_date = 2023190 -end_date = 2023191 +start_date = 2023126 +end_date = 2023129 From 30c8f1eb2ebe3732e801e1c321e57296e10239c4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:41:48 +0100 Subject: [PATCH 079/456] Fix bug --- src/environment/global/gnss_satellites.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index e20d21ccb..882ff9bfe 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -50,10 +50,10 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con for (size_t i = 0; i < kNumberOfInterpolation; i++) { EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_ + i)); double time_diff_s = time_at_epoch_id.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(i, gnss_idx); + libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(reference_interpolation_id_ + i, gnss_idx); orbit_[gnss_idx].PushAndPopData(time_diff_s, sp3_position_m); - clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(i, gnss_idx)); + clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(reference_interpolation_id_ + i, gnss_idx)); } } reference_interpolation_id_ += kNumberOfInterpolation; From 3af72fc7b2f5453faee1296122736dc9c693d464 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:50:47 +0100 Subject: [PATCH 080/456] Fix unit --- scripts/Plot/plot_gnss_satellites.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Plot/plot_gnss_satellites.py b/scripts/Plot/plot_gnss_satellites.py index 714d15902..e9f817578 100644 --- a/scripts/Plot/plot_gnss_satellites.py +++ b/scripts/Plot/plot_gnss_satellites.py @@ -71,7 +71,7 @@ plt.title("GPS Clock Offset") plt.xlabel("Time [s]") -plt.ylabel("Clock Offset [m]") +plt.ylabel("Clock Offset [s]") plt.legend(fontsize=7, loc="upper right") # Data save From 6360ee10f5bb113dfeb98a404e542b8ce6503d97 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 5 Feb 2024 16:57:03 +0100 Subject: [PATCH 081/456] Switch for place --- src/environment/global/gnss_satellites.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 882ff9bfe..35b96a269 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -46,17 +46,17 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con clock_.assign(number_of_calculated_gnss_satellites_, libra::Interpolation(temp, temp)); // Initialize - for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites_; gnss_idx++) { - for (size_t i = 0; i < kNumberOfInterpolation; i++) { - EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_ + i)); + for (size_t i = 0; i < kNumberOfInterpolation; i++) { + for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites_; gnss_idx++) { + EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = time_at_epoch_id.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(reference_interpolation_id_ + i, gnss_idx); + libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_idx); orbit_[gnss_idx].PushAndPopData(time_diff_s, sp3_position_m); - clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(reference_interpolation_id_ + i, gnss_idx)); + clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_idx)); } + reference_interpolation_id_++; } - reference_interpolation_id_ += kNumberOfInterpolation; return; } From e16bf091dac1bfe58c49569a65801d50dda0ed2b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 09:58:05 +0100 Subject: [PATCH 082/456] Add file change sequence --- src/environment/global/gnss_satellites.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 35b96a269..745aac5a7 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -56,6 +56,15 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_idx)); } reference_interpolation_id_++; + // File update + if (reference_interpolation_id_ >= initial_sp3_file.GetNumberOfEpoch()) { + reference_interpolation_id_ = 0; + sp3_file_id_++; + if (sp3_file_id_ >= sp3_files_.size()) { + std::cout << "[Error] GNSS satellites: SP3 file range over." << std::endl; + } + initial_sp3_file = sp3_files_[sp3_file_id_]; + } } return; @@ -87,6 +96,15 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { clock_[gps_idx].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gps_idx)); } reference_interpolation_id_++; + // File update + if (reference_interpolation_id_ >= sp3_file.GetNumberOfEpoch()) { + reference_interpolation_id_ = 0; + sp3_file_id_++; + if (sp3_file_id_ >= sp3_files_.size()) { + std::cout << "[Error] GNSS satellites: SP3 file range over." << std::endl; + } + sp3_file = sp3_files_[sp3_file_id_]; + } } return; From 0aba406e562d7eb1e816a74fe473f6fcf6630848 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 11:35:56 +0100 Subject: [PATCH 083/456] Fix to get access all satellite information --- src/environment/global/gnss_satellites.cpp | 72 +++++++++------------- src/environment/global/gnss_satellites.hpp | 9 ++- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 745aac5a7..7892b1e0e 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -45,26 +45,9 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con temp.assign(kNumberOfInterpolation, -1.0); clock_.assign(number_of_calculated_gnss_satellites_, libra::Interpolation(temp, temp)); - // Initialize + // Initialize interpolation for (size_t i = 0; i < kNumberOfInterpolation; i++) { - for (size_t gnss_idx = 0; gnss_idx < number_of_calculated_gnss_satellites_; gnss_idx++) { - EpochTime time_at_epoch_id = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); - double time_diff_s = time_at_epoch_id.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - libra::Vector<3> sp3_position_m = 1000.0 * initial_sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_idx); - - orbit_[gnss_idx].PushAndPopData(time_diff_s, sp3_position_m); - clock_[gnss_idx].PushAndPopData(time_diff_s, initial_sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_idx)); - } - reference_interpolation_id_++; - // File update - if (reference_interpolation_id_ >= initial_sp3_file.GetNumberOfEpoch()) { - reference_interpolation_id_ = 0; - sp3_file_id_++; - if (sp3_file_id_ >= sp3_files_.size()) { - std::cout << "[Error] GNSS satellites: SP3 file range over." << std::endl; - } - initial_sp3_file = sp3_files_[sp3_file_id_]; - } + UpdateInterpolationInformation(); } return; @@ -79,32 +62,11 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { (size_t)current_utc.minute, current_utc.second); current_epoch_time_ = EpochTime(current_date_time); - // TODO Check file updates - - // SP3 file - Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; - + // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); double medium_time_s = orbit_[0].GetTimeList()[4]; if (diff_s > medium_time_s) { - for (size_t gps_idx = 0; gps_idx < 32; gps_idx++) { - EpochTime sp3_time = EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); - double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - libra::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gps_idx); - - orbit_[gps_idx].PushAndPopData(time_diff_s, sp3_position_m); - clock_[gps_idx].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gps_idx)); - } - reference_interpolation_id_++; - // File update - if (reference_interpolation_id_ >= sp3_file.GetNumberOfEpoch()) { - reference_interpolation_id_ = 0; - sp3_file_id_++; - if (sp3_file_id_ >= sp3_files_.size()) { - std::cout << "[Error] GNSS satellites: SP3 file range over." << std::endl; - } - sp3_file = sp3_files_[sp3_file_id_]; - } + UpdateInterpolationInformation(); } return; @@ -161,6 +123,32 @@ bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const Ep return false; } +bool GnssSatellites::UpdateInterpolationInformation() { + Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; + + for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { + EpochTime sp3_time = EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); + double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + libra::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); + + orbit_[gnss_id].PushAndPopData(time_diff_s, sp3_position_m); + clock_[gnss_id].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_id)); + } + reference_interpolation_id_++; + + // File update + if (reference_interpolation_id_ >= sp3_file.GetNumberOfEpoch()) { + reference_interpolation_id_ = 0; + sp3_file_id_++; + if (sp3_file_id_ >= sp3_files_.size()) { + std::cout << "[Error] GNSS satellites: SP3 file range over." << std::endl; + return false; + } + } + + return true; +} + std::string GnssSatellites::GetLogHeader() const { std::string str_tmp = ""; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 93189a013..2d65af714 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -125,9 +125,16 @@ class GnssSatellites : public ILoggable { * @brief Get the SP3 file should be used at the time * @param [out] current_sp3_file: SP3 file information should be use. * @param [in] current_time: Target time - * @return true means noo error, false means the time argument is out of range + * @return true means no error, false means the time argument is out of range */ bool GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time); + + /** + * @fn UpdateInterpolationInformation + * @brief Update interpolation information by inserting new data + * @return true: No error, false: SP3 file out of range error + */ + bool UpdateInterpolationInformation(); }; /** From 76f0420fdfd7ec2e4acd00da26b5b9628851d78c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 11:40:04 +0100 Subject: [PATCH 084/456] Fix comment --- src/environment/global/gnss_satellites.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 2d65af714..1d0dce6e1 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -105,14 +105,14 @@ class GnssSatellites : public ILoggable { std::string GetLogValue() const override; private: - bool is_calc_enabled_ = true; //!< Flag to manage the GNSS satellite position calculation - - std::vector sp3_files_; //!< List of SP3 files - size_t number_of_calculated_gnss_satellites_; - size_t sp3_file_id_; //!< Current SP3 file ID - EpochTime reference_time_; //!< Reference start time of the SP3 handling - size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - EpochTime current_epoch_time_; //!< The last updated time + bool is_calc_enabled_ = false; //!< Flag to manage the GNSS satellite position calculation + + std::vector sp3_files_; //!< List of SP3 files + size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites + size_t sp3_file_id_; //!< Current SP3 file ID + EpochTime reference_time_; //!< Reference start time of the SP3 handling + size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation From d1c3669c0d4dc9fddc3cd654ae97b143503d5398 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 11:44:00 +0100 Subject: [PATCH 085/456] Fix comment --- src/library/gnss/sp3_file_reader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/gnss/sp3_file_reader.cpp b/src/library/gnss/sp3_file_reader.cpp index 48c7b5ac7..f4a2a37fb 100644 --- a/src/library/gnss/sp3_file_reader.cpp +++ b/src/library/gnss/sp3_file_reader.cpp @@ -131,7 +131,7 @@ size_t Sp3FileReader::SearchNearestEpochId(const EpochTime time) { const size_t num_epoch = header_.number_of_epoch_; const double interval_s = header_.epoch_interval_s_; - // Check range if epoch + // Check range EpochTime start_epoch(epoch_[0]); if (start_epoch > time) { nearest_epoch_id = 0; From 396a99ce1b890553a45479eeee6cd4ee7c7642fa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:23:11 +0100 Subject: [PATCH 086/456] Fix to use size_t for component ID --- src/components/real/aocs/gnss_receiver.cpp | 8 ++++---- src/components/real/aocs/gnss_receiver.hpp | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index c379daa26..412f5b605 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -11,8 +11,8 @@ #include #include -GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const int component_id, const std::string gnss_id, - const int max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, +GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_id, + const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), @@ -29,8 +29,8 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, dynamics_(dynamics), gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) {} -GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const std::string gnss_id, const int max_channel, const AntennaModel antenna_model, +GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, + const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 1a5ac4e35..1d00f9555 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -59,7 +59,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const int component_id, const std::string gnss_id, const int max_channel, + GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); @@ -80,8 +80,8 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, std::string gnss_id, - const int max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, + GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, std::string gnss_id, + const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); @@ -142,8 +142,8 @@ class GnssReceiver : public Component, public ILoggable { protected: // Parameters for receiver - const int component_id_; //!< Receiver ID - const int max_channel_; //!< Maximum number of channels + const size_t component_id_; //!< Receiver ID + const size_t max_channel_; //!< Maximum number of channels libra::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) From e08a4e7814b4f25b07ef9a8859601afe4ba7767e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:25:38 +0100 Subject: [PATCH 087/456] Fix to use size_t for visible sat number --- src/components/real/aocs/gnss_receiver.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 1d00f9555..d583580ae 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -163,7 +163,7 @@ class GnssReceiver : public Component, public ILoggable { unsigned int gps_time_week_ = 0; //!< Observed GPS time week part double gps_time_s_ = 0.0; //!< Observed GPS time second part int is_gnss_visible_ = 0; //!< Flag for GNSS satellite is visible or not - int visible_satellite_number_ = 0; //!< Number of visible GNSS satellites + size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites std::vector gnss_information_list_; //!< Information List of visible GNSS satellites // References From c1f2cc2dc635670e7257c818600d4513e27194b4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:30:16 +0100 Subject: [PATCH 088/456] Fix to use size_t instead of int --- src/components/real/aocs/gnss_receiver.cpp | 10 +++++----- src/components/real/aocs/gnss_receiver.hpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 412f5b605..ccf2bdc83 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -113,9 +113,9 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: // initialize visible_satellite_number_ = 0; - int gnss_num = kTotalNumberOfGnssSatellite; + size_t gnss_num = kTotalNumberOfGnssSatellite; - for (int i = 0; i < gnss_num; i++) { + for (size_t i = 0; i < gnss_num; i++) { // check if gnss ID is compatible with the receiver std::string id_tmp = ConvertIndexToGnssSatelliteNumber(i); if (gnss_id_.find(id_tmp[0]) == std::string::npos) continue; @@ -245,7 +245,7 @@ typedef struct _gnssrecever_param { libra::Quaternion quaternion_b2c; double half_width_rad; std::string gnss_id; - int max_channel; + size_t max_channel; libra::Vector<3> noise_standard_deviation_m; } GnssReceiverParam; @@ -279,7 +279,7 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat return gnss_receiver_param; } -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, int component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); @@ -289,7 +289,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, int component_id, return gnss_r; } -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, int component_id, const std::string file_name, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index d583580ae..f37b4baea 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -98,7 +98,7 @@ class GnssReceiver : public Component, public ILoggable { * @brief Return GNSS satellite information * @param [in] channel: Channel number */ - inline const GnssInfo GetGnssInfo(int channel) const { return gnss_information_list_[channel]; }; + inline const GnssInfo GetGnssInfo(size_t channel) const { return gnss_information_list_[channel]; }; /** * @fn GetMeasuredPosition_eci_m * @brief Return Observed position in the ECI frame [m] @@ -229,7 +229,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, int component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn InitGnssReceiver @@ -242,7 +242,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, int component_id, * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, int component_id, const std::string file_name, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); #endif // S2E_COMPONENTS_REAL_AOCS_GNSS_RECEIVER_HPP_ From 5876eb0f69d5562e7974326270e102c8c07243a5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:34:41 +0100 Subject: [PATCH 089/456] Fix to use bool instead of int --- src/components/real/aocs/gnss_receiver.cpp | 33 ++++++++++++---------- src/components/real/aocs/gnss_receiver.hpp | 2 +- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index ccf2bdc83..752a408b5 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -57,7 +57,7 @@ void GnssReceiver::MainRoutine(const int time_count) { CheckAntenna(pos_true_eci_, quaternion_i2b); - if (is_gnss_visible_ == 1) { // Antenna of GNSS-R can detect GNSS signal + if (is_gnss_visible_ == true) { // Antenna of GNSS-R can detect GNSS signal position_ecef_m_ = dynamics_->GetOrbit().GetPosition_ecef_m(); position_llh_ = dynamics_->GetOrbit().GetLatLonAlt(); velocity_ecef_m_s_ = dynamics_->GetOrbit().GetVelocity_ecef_m_s(); @@ -90,10 +90,11 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, libr libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); double inner = InnerProduct(pos_true_eci_, antenna_direction_i); - if (inner <= 0) - is_gnss_visible_ = 0; - else - is_gnss_visible_ = 1; + if (inner <= 0) { + is_gnss_visible_ = false; + } else { + is_gnss_visible_ = true; + } } void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra::Quaternion quaternion_i2b) { @@ -129,17 +130,18 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: // check gnss sats are visible from antenna double Re = environment::earth_equatorial_radius_m; double inner1 = InnerProduct(ant_pos_i, gnss_sat_pos_i); - int is_visible_ant2gnss = 0; + bool is_visible_ant2gnss = false; if (inner1 > 0) - is_visible_ant2gnss = 1; + is_visible_ant2gnss = true; else { Vector<3> tmp = ant_pos_i + InnerProduct(-ant_pos_i, ant2gnss_i_n) * antenna_to_satellite_i_m; - if (tmp.CalcNorm() < Re) + if (tmp.CalcNorm() < Re) { // There is earth between antenna and gnss - is_visible_ant2gnss = 0; - else + is_visible_ant2gnss = false; + } else { // There is not earth between antenna and gnss - is_visible_ant2gnss = 1; + is_visible_ant2gnss = true; + } } double inner2 = InnerProduct(antenna_direction_i, ant2gnss_i_n); @@ -150,10 +152,11 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: } } - if (visible_satellite_number_ > 0) - is_gnss_visible_ = 1; - else - is_gnss_visible_ = 0; + if (visible_satellite_number_ > 0) { + is_gnss_visible_ = true; + } else { + is_gnss_visible_ = false; + } } void GnssReceiver::SetGnssInfo(libra::Vector<3> antenna_to_satellite_i_m, libra::Quaternion quaternion_i2b, std::string gnss_id) { diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index f37b4baea..9dbdcd45d 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -162,7 +162,7 @@ class GnssReceiver : public Component, public ILoggable { UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] unsigned int gps_time_week_ = 0; //!< Observed GPS time week part double gps_time_s_ = 0.0; //!< Observed GPS time second part - int is_gnss_visible_ = 0; //!< Flag for GNSS satellite is visible or not + bool is_gnss_visible_ = 0; //!< Flag for GNSS satellite is visible or not size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites std::vector gnss_information_list_; //!< Information List of visible GNSS satellites From e8f81b61d078ca0496132b1029ac177b3029caea Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:39:34 +0100 Subject: [PATCH 090/456] Add const to function arguments --- src/components/real/aocs/gnss_receiver.cpp | 14 +++++++------- src/components/real/aocs/gnss_receiver.hpp | 18 +++++++++--------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 752a408b5..1aa7f9445 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -73,14 +73,14 @@ void GnssReceiver::MainRoutine(const int time_count) { } } -void GnssReceiver::CheckAntenna(const libra::Vector<3> pos_true_eci_, libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntenna(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { if (antenna_model_ == AntennaModel::kSimple) CheckAntennaSimple(pos_true_eci_, quaternion_i2b); else if (antenna_model_ == AntennaModel::kCone) CheckAntennaCone(pos_true_eci_, quaternion_i2b); } -void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { // Simplest model // GNSS sats are visible when antenna directs anti-earth direction // antenna normal vector at inertial frame @@ -97,7 +97,7 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, libr } } -void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { // Cone model libra::Vector<3> gnss_sat_pos_i, ant_pos_i, antenna_to_satellite_i_m, ant2gnss_i_n, sat2ant_i; gnss_information_list_.clear(); @@ -159,7 +159,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, libra: } } -void GnssReceiver::SetGnssInfo(libra::Vector<3> antenna_to_satellite_i_m, libra::Quaternion quaternion_i2b, std::string gnss_id) { +void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_id) { libra::Vector<3> ant2gnss_b, ant2gnss_c; ant2gnss_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); @@ -173,7 +173,7 @@ void GnssReceiver::SetGnssInfo(libra::Vector<3> antenna_to_satellite_i_m, libra: gnss_information_list_.push_back(gnss_info_new); } -void GnssReceiver::AddNoise(libra::Vector<3> position_true_i_m, libra::Vector<3> position_true_ecef_m) { +void GnssReceiver::AddNoise(const libra::Vector<3> position_true_i_m, const libra::Vector<3> position_true_ecef_m) { // Simplest noise model position_eci_m_[0] = position_true_i_m[0] + random_noise_i_x_; position_eci_m_[1] = position_true_i_m[1] + random_noise_i_y_; @@ -282,7 +282,7 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat return gnss_receiver_param; } -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, size_t component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); @@ -292,7 +292,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, size_t component_ return gnss_r; } -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, size_t component_id, const std::string file_name, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 9dbdcd45d..280bceffa 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -80,7 +80,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, std::string gnss_id, + GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); @@ -98,7 +98,7 @@ class GnssReceiver : public Component, public ILoggable { * @brief Return GNSS satellite information * @param [in] channel: Channel number */ - inline const GnssInfo GetGnssInfo(size_t channel) const { return gnss_information_list_[channel]; }; + inline const GnssInfo GetGnssInfo(const size_t channel) const { return gnss_information_list_[channel]; }; /** * @fn GetMeasuredPosition_eci_m * @brief Return Observed position in the ECI frame [m] @@ -179,7 +179,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntenna(libra::Vector<3> position_true_i_m, libra::Quaternion quaternion_i2b); + void CheckAntenna(const libra::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); /** * @fn CheckAntennaSimple * @brief Check the antenna can detect GNSS signal with Simple mode @@ -187,7 +187,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaSimple(libra::Vector<3> position_true_i_m, libra::Quaternion quaternion_i2b); + void CheckAntennaSimple(const libra::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); /** * @fn CheckAntennaCone * @brief Check the antenna can detect GNSS signal with Cone mode @@ -195,7 +195,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaCone(libra::Vector<3> position_true_i_m, libra::Quaternion quaternion_i2b); + void CheckAntennaCone(const libra::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); /** * @fn SetGnssInfo * @brief Calculate and set the GnssInfo values of target GNSS satellite @@ -203,14 +203,14 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] gnss_id: ID of target GNSS satellite */ - void SetGnssInfo(libra::Vector<3> antenna_to_satellite_i_m, libra::Quaternion quaternion_i2b, std::string gnss_id); + void SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] position_true_ecef_m: True position of the spacecraft in the ECEF frame [m] */ - void AddNoise(libra::Vector<3> position_true_i_m, libra::Vector<3> position_true_ecef_m); + void AddNoise(const libra::Vector<3> position_true_i_m, const libra::Vector<3> position_true_ecef_m); /** * @fn ConvertJulianDayToGPSTime * @brief Convert Julian day to GPS time @@ -229,7 +229,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, size_t component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn InitGnssReceiver @@ -242,7 +242,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, size_t component_ * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, size_t component_id, const std::string file_name, +GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); #endif // S2E_COMPONENTS_REAL_AOCS_GNSS_RECEIVER_HPP_ From 73360edb65fc3c550bbb3b9c9b1236fda2fefb6a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:56:10 +0100 Subject: [PATCH 091/456] Fix typos --- src/components/real/aocs/gnss_receiver.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 1aa7f9445..392e3fe7a 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -82,7 +82,7 @@ void GnssReceiver::CheckAntenna(const libra::Vector<3> pos_true_eci_, const libr void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { // Simplest model - // GNSS sats are visible when antenna directs anti-earth direction + // GNSS satellites are visible when antenna directs anti-earth direction // antenna normal vector at inertial frame libra::Vector<3> antenna_direction_c(0.0); antenna_direction_c[2] = 1.0; @@ -127,7 +127,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, const double normalizer = 1 / antenna_to_satellite_i_m.CalcNorm(); ant2gnss_i_n = normalizer * antenna_to_satellite_i_m; - // check gnss sats are visible from antenna + // check gnss satellites are visible from antenna double Re = environment::earth_equatorial_radius_m; double inner1 = InnerProduct(ant_pos_i, gnss_sat_pos_i); bool is_visible_ant2gnss = false; @@ -241,7 +241,7 @@ std::string GnssReceiver::GetLogValue() const // For logs return str_tmp; } -typedef struct _gnssrecever_param { +typedef struct _gnss_receiver_param { int prescaler; AntennaModel antenna_model; libra::Vector<3> antenna_pos_b; From 068a3749ea4c8f8a677fd9662d90d961bfa2b857 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 13:56:46 +0100 Subject: [PATCH 092/456] Fix initial value of bool --- src/components/real/aocs/gnss_receiver.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 280bceffa..9ef4241e2 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -162,7 +162,7 @@ class GnssReceiver : public Component, public ILoggable { UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] unsigned int gps_time_week_ = 0; //!< Observed GPS time week part double gps_time_s_ = 0.0; //!< Observed GPS time second part - bool is_gnss_visible_ = 0; //!< Flag for GNSS satellite is visible or not + bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites std::vector gnss_information_list_; //!< Information List of visible GNSS satellites From 3c9db6f668d34fb5e6d67dfcc1a4819063ed12bb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:09:11 +0100 Subject: [PATCH 093/456] Small refactors --- src/components/real/aocs/gnss_receiver.cpp | 37 ++++++++++++---------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 392e3fe7a..4d2e9bbe1 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -52,35 +52,38 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, void GnssReceiver::MainRoutine(const int time_count) { UNUSED(time_count); - libra::Vector<3> pos_true_eci_ = dynamics_->GetOrbit().GetPosition_i_m(); + libra::Vector<3> position_true_eci_ = dynamics_->GetOrbit().GetPosition_i_m(); libra::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - CheckAntenna(pos_true_eci_, quaternion_i2b); + CheckAntenna(position_true_eci_, quaternion_i2b); - if (is_gnss_visible_ == true) { // Antenna of GNSS-R can detect GNSS signal + if (is_gnss_visible_) { + // Antenna of GNSS-R can detect GNSS signal position_ecef_m_ = dynamics_->GetOrbit().GetPosition_ecef_m(); position_llh_ = dynamics_->GetOrbit().GetLatLonAlt(); velocity_ecef_m_s_ = dynamics_->GetOrbit().GetVelocity_ecef_m_s(); - AddNoise(pos_true_eci_, position_ecef_m_); - - utc_ = simulation_time_->GetCurrentUtc(); - ConvertJulianDayToGPSTime(simulation_time_->GetCurrentTime_jd()); + AddNoise(position_true_eci_, position_ecef_m_); } else { // position information will not be updated in this case - // only time information will be updated in this case (according to the receiver's internal clock) utc_ = simulation_time_->GetCurrentUtc(); ConvertJulianDayToGPSTime(simulation_time_->GetCurrentTime_jd()); } + // Time is updated with internal clock + utc_ = simulation_time_->GetCurrentUtc(); + ConvertJulianDayToGPSTime(simulation_time_->GetCurrentTime_jd()); } -void GnssReceiver::CheckAntenna(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { - if (antenna_model_ == AntennaModel::kSimple) - CheckAntennaSimple(pos_true_eci_, quaternion_i2b); - else if (antenna_model_ == AntennaModel::kCone) - CheckAntennaCone(pos_true_eci_, quaternion_i2b); +void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { + if (antenna_model_ == AntennaModel::kSimple) { + CheckAntennaSimple(position_true_eci_, quaternion_i2b); + } else if (antenna_model_ == AntennaModel::kCone) { + CheckAntennaCone(position_true_eci_, quaternion_i2b); + } else { + std::cout << "[Error] GNSS Receiver: Undefined antenna model." << std::endl; + } } -void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction // antenna normal vector at inertial frame @@ -89,7 +92,7 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, cons libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); - double inner = InnerProduct(pos_true_eci_, antenna_direction_i); + double inner = InnerProduct(position_true_eci_, antenna_direction_i); if (inner <= 0) { is_gnss_visible_ = false; } else { @@ -97,7 +100,7 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> pos_true_eci_, cons } } -void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { // Cone model libra::Vector<3> gnss_sat_pos_i, ant_pos_i, antenna_to_satellite_i_m, ant2gnss_i_n, sat2ant_i; gnss_information_list_.clear(); @@ -109,7 +112,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> pos_true_eci_, const libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); sat2ant_i = quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); - ant_pos_i = pos_true_eci_ + sat2ant_i; + ant_pos_i = position_true_eci_ + sat2ant_i; // initialize visible_satellite_number_ = 0; From d9e3841583c704d71e7ff633388efb6d80305d2f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:11:42 +0100 Subject: [PATCH 094/456] Fix function name to suit with the coding rule --- src/components/real/aocs/gnss_receiver.cpp | 10 +++++----- src/components/real/aocs/gnss_receiver.hpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 4d2e9bbe1..f83191bf3 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -66,11 +66,11 @@ void GnssReceiver::MainRoutine(const int time_count) { } else { // position information will not be updated in this case utc_ = simulation_time_->GetCurrentUtc(); - ConvertJulianDayToGPSTime(simulation_time_->GetCurrentTime_jd()); + ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } // Time is updated with internal clock utc_ = simulation_time_->GetCurrentUtc(); - ConvertJulianDayToGPSTime(simulation_time_->GetCurrentTime_jd()); + ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { @@ -188,15 +188,15 @@ void GnssReceiver::AddNoise(const libra::Vector<3> position_true_i_m, const libr position_ecef_m_[2] = position_true_ecef_m[2] + random_noise_i_z_; } -void GnssReceiver::ConvertJulianDayToGPSTime(const double julian_day) { - const double kJulianDayAtGPSTimeZero = 2444244.5; // corresponds to 1980/1/5 midnight +void GnssReceiver::ConvertJulianDayToGpsTime(const double julian_day) { + const double kJulianDayAtGpsTimeZero = 2444244.5; // corresponds to 1980/1/5 midnight const double kDayInWeek = 7.0; // const double kSecInWeek = 604800.0; const double kSecInDay = 86400.0; // compute ToW from current julian_day // note:"gps_time_week_ " computed in this method is larger than 1024 - double elapsed_day = julian_day - kJulianDayAtGPSTimeZero; + double elapsed_day = julian_day - kJulianDayAtGpsTimeZero; gps_time_week_ = (unsigned int)(elapsed_day / kDayInWeek); gps_time_s_ = (elapsed_day - (double)(gps_time_week_)*kDayInWeek) * kSecInDay; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 9ef4241e2..0b3380823 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -216,7 +216,7 @@ class GnssReceiver : public Component, public ILoggable { * @brief Convert Julian day to GPS time * @param [in] julian_day: Julian day */ - void ConvertJulianDayToGPSTime(const double julian_day); + void ConvertJulianDayToGpsTime(const double julian_day); }; /** From 30eaeeff50ee774a71d3d3071a891799f4e48aa9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:38:44 +0100 Subject: [PATCH 095/456] Simplify the internal function --- src/components/real/aocs/gnss_receiver.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index f83191bf3..fd679548c 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -93,7 +93,7 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_, libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); double inner = InnerProduct(position_true_eci_, antenna_direction_i); - if (inner <= 0) { + if (inner <= 0.0) { is_gnss_visible_ = false; } else { is_gnss_visible_ = true; @@ -102,7 +102,6 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_, void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { // Cone model - libra::Vector<3> gnss_sat_pos_i, ant_pos_i, antenna_to_satellite_i_m, ant2gnss_i_n, sat2ant_i; gnss_information_list_.clear(); // antenna normal vector at inertial frame @@ -111,24 +110,22 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_, c libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); - sat2ant_i = quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); - ant_pos_i = position_true_eci_ + sat2ant_i; + libra::Vector<3> sat2ant_i = quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); + libra::Vector<3> ant_pos_i = position_true_eci_ + sat2ant_i; // initialize visible_satellite_number_ = 0; - size_t gnss_num = kTotalNumberOfGnssSatellite; - - for (size_t i = 0; i < gnss_num; i++) { + for (size_t i = 0; i < kTotalNumberOfGnssSatellite; i++) { // check if gnss ID is compatible with the receiver std::string id_tmp = ConvertIndexToGnssSatelliteNumber(i); if (gnss_id_.find(id_tmp[0]) == std::string::npos) continue; // compute direction from sat to gnss in body-fixed frame - gnss_sat_pos_i = gnss_satellites_->GetPosition_eci_m(i); - antenna_to_satellite_i_m = gnss_sat_pos_i - ant_pos_i; + libra::Vector<3> gnss_sat_pos_i = gnss_satellites_->GetPosition_eci_m(i); + libra::Vector<3> antenna_to_satellite_i_m = gnss_sat_pos_i - ant_pos_i; double normalizer = 1 / antenna_to_satellite_i_m.CalcNorm(); - ant2gnss_i_n = normalizer * antenna_to_satellite_i_m; + libra::Vector<3> ant2gnss_i_n = normalizer * antenna_to_satellite_i_m; // check gnss satellites are visible from antenna double Re = environment::earth_equatorial_radius_m; From f17ebf1c203868f4c1b12af760a7de34843b25a7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:41:57 +0100 Subject: [PATCH 096/456] Fix argument unit --- src/components/real/aocs/gnss_receiver.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index fd679548c..fe3d1d6e7 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -73,17 +73,17 @@ void GnssReceiver::MainRoutine(const int time_count) { ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } -void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { if (antenna_model_ == AntennaModel::kSimple) { - CheckAntennaSimple(position_true_eci_, quaternion_i2b); + CheckAntennaSimple(position_true_eci_m, quaternion_i2b); } else if (antenna_model_ == AntennaModel::kCone) { - CheckAntennaCone(position_true_eci_, quaternion_i2b); + CheckAntennaCone(position_true_eci_m, quaternion_i2b); } else { std::cout << "[Error] GNSS Receiver: Undefined antenna model." << std::endl; } } -void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction // antenna normal vector at inertial frame @@ -92,7 +92,7 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_, libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); - double inner = InnerProduct(position_true_eci_, antenna_direction_i); + double inner = InnerProduct(position_true_eci_m, antenna_direction_i); if (inner <= 0.0) { is_gnss_visible_ = false; } else { @@ -100,7 +100,7 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_, } } -void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { // Cone model gnss_information_list_.clear(); @@ -110,8 +110,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_, c libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); - libra::Vector<3> sat2ant_i = quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); - libra::Vector<3> ant_pos_i = position_true_eci_ + sat2ant_i; + libra::Vector<3> antenna_position_i = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); // initialize visible_satellite_number_ = 0; @@ -123,18 +122,18 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_, c // compute direction from sat to gnss in body-fixed frame libra::Vector<3> gnss_sat_pos_i = gnss_satellites_->GetPosition_eci_m(i); - libra::Vector<3> antenna_to_satellite_i_m = gnss_sat_pos_i - ant_pos_i; + libra::Vector<3> antenna_to_satellite_i_m = gnss_sat_pos_i - antenna_position_i; double normalizer = 1 / antenna_to_satellite_i_m.CalcNorm(); libra::Vector<3> ant2gnss_i_n = normalizer * antenna_to_satellite_i_m; // check gnss satellites are visible from antenna double Re = environment::earth_equatorial_radius_m; - double inner1 = InnerProduct(ant_pos_i, gnss_sat_pos_i); + double inner1 = InnerProduct(antenna_position_i, gnss_sat_pos_i); bool is_visible_ant2gnss = false; if (inner1 > 0) is_visible_ant2gnss = true; else { - Vector<3> tmp = ant_pos_i + InnerProduct(-ant_pos_i, ant2gnss_i_n) * antenna_to_satellite_i_m; + Vector<3> tmp = antenna_position_i + InnerProduct(-antenna_position_i, ant2gnss_i_n) * antenna_to_satellite_i_m; if (tmp.CalcNorm() < Re) { // There is earth between antenna and gnss is_visible_ant2gnss = false; From 85dc2f37050b5e6f5a226e1fed3549727227fa09 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:53:42 +0100 Subject: [PATCH 097/456] Fix internal variables name suit with the naming rule --- src/components/real/aocs/gnss_receiver.cpp | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index fe3d1d6e7..555bc83c5 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -86,7 +86,8 @@ void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_m, cons void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction - // antenna normal vector at inertial frame + + // Antenna normal vector at inertial frame libra::Vector<3> antenna_direction_c(0.0); antenna_direction_c[2] = 1.0; libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); @@ -110,44 +111,43 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); - libra::Vector<3> antenna_position_i = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); + libra::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); // initialize visible_satellite_number_ = 0; for (size_t i = 0; i < kTotalNumberOfGnssSatellite; i++) { // check if gnss ID is compatible with the receiver - std::string id_tmp = ConvertIndexToGnssSatelliteNumber(i); - if (gnss_id_.find(id_tmp[0]) == std::string::npos) continue; + std::string gnss_id_string = ConvertIndexToGnssSatelliteNumber(i); + if (gnss_id_.find(gnss_id_string[0]) == std::string::npos) continue; // compute direction from sat to gnss in body-fixed frame - libra::Vector<3> gnss_sat_pos_i = gnss_satellites_->GetPosition_eci_m(i); - libra::Vector<3> antenna_to_satellite_i_m = gnss_sat_pos_i - antenna_position_i; + libra::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); + libra::Vector<3> antenna_to_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; double normalizer = 1 / antenna_to_satellite_i_m.CalcNorm(); - libra::Vector<3> ant2gnss_i_n = normalizer * antenna_to_satellite_i_m; + libra::Vector<3> antenna_to_gnss_satellite_direction_i = normalizer * antenna_to_satellite_i_m; // check gnss satellites are visible from antenna - double Re = environment::earth_equatorial_radius_m; - double inner1 = InnerProduct(antenna_position_i, gnss_sat_pos_i); - bool is_visible_ant2gnss = false; - if (inner1 > 0) - is_visible_ant2gnss = true; - else { - Vector<3> tmp = antenna_position_i + InnerProduct(-antenna_position_i, ant2gnss_i_n) * antenna_to_satellite_i_m; - if (tmp.CalcNorm() < Re) { + double inner1 = InnerProduct(antenna_position_i_m, gnss_satellite_position_i_m); + bool is_satellite_visible = false; + if (inner1 > 0) { + is_satellite_visible = true; + } else { + Vector<3> tmp = antenna_position_i_m + InnerProduct(-antenna_position_i_m, antenna_to_gnss_satellite_direction_i) * antenna_to_satellite_i_m; + if (tmp.CalcNorm() < environment::earth_equatorial_radius_m) { // There is earth between antenna and gnss - is_visible_ant2gnss = false; + is_satellite_visible = false; } else { // There is not earth between antenna and gnss - is_visible_ant2gnss = true; + is_satellite_visible = true; } } - double inner2 = InnerProduct(antenna_direction_i, ant2gnss_i_n); - if (inner2 > cos(half_width_rad_ * libra::deg_to_rad) && is_visible_ant2gnss) { + double inner2 = InnerProduct(antenna_direction_i, antenna_to_gnss_satellite_direction_i); + if (inner2 > cos(half_width_rad_ * libra::deg_to_rad) && is_satellite_visible) { // is visible visible_satellite_number_++; - SetGnssInfo(antenna_to_satellite_i_m, quaternion_i2b, id_tmp); + SetGnssInfo(antenna_to_satellite_i_m, quaternion_i2b, gnss_id_string); } } From de05d4d5cd1953d4b5aee61319c47e3578fad787 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:56:08 +0100 Subject: [PATCH 098/456] Fix internal variables name suit with the naming rule --- src/components/real/aocs/gnss_receiver.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 555bc83c5..d20511288 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -159,16 +159,15 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, } void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_id) { - libra::Vector<3> ant2gnss_b, ant2gnss_c; + libra::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); + libra::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); - ant2gnss_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); - ant2gnss_c = quaternion_b2c_.FrameConversion(ant2gnss_b); + double distance_m = antenna_to_satellite_i_m.CalcNorm(); + double longitude_rad = AcTan(antenna_to_satellite_direction_c[1], antenna_to_satellite_direction_c[0]); + double latitude_rad = + AcTan(antenna_to_satellite_direction_c[2], sqrt(pow(antenna_to_satellite_direction_c[0], 2.0) + pow(antenna_to_satellite_direction_c[1], 2.0))); - double dist = ant2gnss_c.CalcNorm(); - double lon = AcTan(ant2gnss_c[1], ant2gnss_c[0]); - double lat = AcTan(ant2gnss_c[2], sqrt(pow(ant2gnss_c[0], 2.0) + pow(ant2gnss_c[1], 2.0))); - - GnssInfo gnss_info_new = {gnss_id, lat, lon, dist}; + GnssInfo gnss_info_new = {gnss_id, latitude_rad, longitude_rad, distance_m}; gnss_information_list_.push_back(gnss_info_new); } From 6e0c63da9e09d6bc563f3f4af2073dfc11cd4904 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 14:57:59 +0100 Subject: [PATCH 099/456] Fix comment --- src/components/real/aocs/gnss_receiver.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index d20511288..346f1183c 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -186,10 +186,9 @@ void GnssReceiver::AddNoise(const libra::Vector<3> position_true_i_m, const libr void GnssReceiver::ConvertJulianDayToGpsTime(const double julian_day) { const double kJulianDayAtGpsTimeZero = 2444244.5; // corresponds to 1980/1/5 midnight const double kDayInWeek = 7.0; - // const double kSecInWeek = 604800.0; const double kSecInDay = 86400.0; - // compute ToW from current julian_day + // compute time of week from current julian_day // note:"gps_time_week_ " computed in this method is larger than 1024 double elapsed_day = julian_day - kJulianDayAtGpsTimeZero; gps_time_week_ = (unsigned int)(elapsed_day / kDayInWeek); From c79ae7affd2aba6fb58bb22cb504f716b15646fc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 15:08:08 +0100 Subject: [PATCH 100/456] Fix unit of harf width angle --- src/components/real/aocs/gnss_receiver.cpp | 18 +++++++++--------- src/components/real/aocs/gnss_receiver.hpp | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 346f1183c..002877bb5 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -13,7 +13,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, + const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), @@ -23,7 +23,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), - half_width_rad_(half_width_rad), + half_width_deg_(half_width_deg), gnss_id_(gnss_id), antenna_model_(antenna_model), dynamics_(dynamics), @@ -31,7 +31,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, simulation_time_(simulation_time) {} GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, - const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_rad, + const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), @@ -42,7 +42,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), - half_width_rad_(half_width_rad), + half_width_deg_(half_width_deg), gnss_id_(gnss_id), antenna_model_(antenna_model), dynamics_(dynamics), @@ -144,7 +144,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, } double inner2 = InnerProduct(antenna_direction_i, antenna_to_gnss_satellite_direction_i); - if (inner2 > cos(half_width_rad_ * libra::deg_to_rad) && is_satellite_visible) { + if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_satellite_visible) { // is visible visible_satellite_number_++; SetGnssInfo(antenna_to_satellite_i_m, quaternion_i2b, gnss_id_string); @@ -243,7 +243,7 @@ typedef struct _gnss_receiver_param { AntennaModel antenna_model; libra::Vector<3> antenna_pos_b; libra::Quaternion quaternion_b2c; - double half_width_rad; + double half_width_deg; std::string gnss_id; size_t max_channel; libra::Vector<3> noise_standard_deviation_m; @@ -271,7 +271,7 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat gnssr_conf.ReadVector(GSection, "antenna_position_b_m", gnss_receiver_param.antenna_pos_b); gnssr_conf.ReadQuaternion(GSection, "quaternion_b2c", gnss_receiver_param.quaternion_b2c); - gnss_receiver_param.half_width_rad = gnssr_conf.ReadDouble(GSection, "antenna_half_width_deg"); + gnss_receiver_param.half_width_deg = gnssr_conf.ReadDouble(GSection, "antenna_half_width_deg"); gnss_receiver_param.gnss_id = gnssr_conf.ReadString(GSection, "gnss_id"); gnss_receiver_param.max_channel = gnssr_conf.ReadInt(GSection, "maximum_channel"); gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_eci_m", gnss_receiver_param.noise_standard_deviation_m); @@ -284,7 +284,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_id, gr_param.max_channel, gr_param.antenna_model, - gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_rad, gr_param.noise_standard_deviation_m, dynamics, + gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, simulation_time); return gnss_r; } @@ -297,7 +297,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_ power_port->InitializeWithInitializeFile(file_name); GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_id, gr_param.max_channel, gr_param.antenna_model, - gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_rad, gr_param.noise_standard_deviation_m, dynamics, + gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, simulation_time); return gnss_r; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 0b3380823..23b9ba7ab 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -53,7 +53,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) - * @param [in] half_width_rad: Half width of the antenna cone model [rad] + * @param [in] half_width_deg: Half width of the antenna cone model [deg] * @param [in] noise_standard_deviation_m: Standard deviation of normal random noise in the ECI frame [m] * @param [in] dynamics: Dynamics information * @param [in] gnss_satellites: GNSS Satellites information @@ -61,7 +61,7 @@ class GnssReceiver : public Component, public ILoggable { */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, + const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver @@ -74,7 +74,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) - * @param [in] half_width_rad: Half width of the antenna cone model [rad] + * @param [in] half_width_deg: Half width of the antenna cone model [rad] * @param [in] noise_standard_deviation_m: Standard deviation of normal random noise in the ECI frame [m] * @param [in] dynamics: Dynamics information * @param [in] gnss_satellites: GNSS Satellites information @@ -82,7 +82,7 @@ class GnssReceiver : public Component, public ILoggable { */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_rad, const libra::Vector<3> noise_standard_deviation_m, + const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component @@ -149,7 +149,7 @@ class GnssReceiver : public Component, public ILoggable { libra::NormalRand random_noise_i_x_, random_noise_i_y_, random_noise_i_z_; //!< Random noise for each axis - double half_width_rad_ = 0.0; //!< Half width of the antenna cone model [rad] + double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] std::string gnss_id_; //!< GNSS satellite number defined by GNSS system AntennaModel antenna_model_; //!< Antenna model From 92e53742ef8efdc1b8e9d8ca84c42d1363df56ea Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 15:09:59 +0100 Subject: [PATCH 101/456] Fix to use normalize function --- src/components/real/aocs/gnss_receiver.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 002877bb5..f957e5370 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -123,9 +123,8 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, // compute direction from sat to gnss in body-fixed frame libra::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); - libra::Vector<3> antenna_to_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; - double normalizer = 1 / antenna_to_satellite_i_m.CalcNorm(); - libra::Vector<3> antenna_to_gnss_satellite_direction_i = normalizer * antenna_to_satellite_i_m; + libra::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; + libra::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); // check gnss satellites are visible from antenna double inner1 = InnerProduct(antenna_position_i_m, gnss_satellite_position_i_m); @@ -133,7 +132,8 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, if (inner1 > 0) { is_satellite_visible = true; } else { - Vector<3> tmp = antenna_position_i_m + InnerProduct(-antenna_position_i_m, antenna_to_gnss_satellite_direction_i) * antenna_to_satellite_i_m; + Vector<3> tmp = + antenna_position_i_m + InnerProduct(-antenna_position_i_m, antenna_to_gnss_satellite_direction_i) * antenna_to_gnss_satellite_i_m; if (tmp.CalcNorm() < environment::earth_equatorial_radius_m) { // There is earth between antenna and gnss is_satellite_visible = false; @@ -147,7 +147,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_satellite_visible) { // is visible visible_satellite_number_++; - SetGnssInfo(antenna_to_satellite_i_m, quaternion_i2b, gnss_id_string); + SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, gnss_id_string); } } From d9a89e80b1b4f4b072e95422023aa746f0aae58a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 15:14:54 +0100 Subject: [PATCH 102/456] Fix variable name to suit with coding rule --- src/components/real/aocs/gnss_receiver.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 23b9ba7ab..eb6c32c6c 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -30,7 +30,7 @@ enum class AntennaModel { * @brief Information of GNSS satellites */ typedef struct _gnss_info { - std::string ID; //!< ID of GNSS satellites + std::string id; //!< ID of GNSS satellites double latitude_rad; //!< Latitude on the antenna frame [rad] double longitude_rad; //!< Longitude on the antenna frame [rad] double distance_m; //!< Distance between the GNSS satellite and the GNSS receiver antenna [m] From e2f8d3d6adbb7689c9b8247ccc424dd3f9b7b279 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:18:19 +0100 Subject: [PATCH 103/456] Fix to use geodetic position --- src/components/real/aocs/gnss_receiver.cpp | 8 ++++---- src/components/real/aocs/gnss_receiver.hpp | 7 ++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index f957e5370..98057e257 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -60,7 +60,7 @@ void GnssReceiver::MainRoutine(const int time_count) { if (is_gnss_visible_) { // Antenna of GNSS-R can detect GNSS signal position_ecef_m_ = dynamics_->GetOrbit().GetPosition_ecef_m(); - position_llh_ = dynamics_->GetOrbit().GetLatLonAlt(); + geodetic_position_ = dynamics_->GetOrbit().GetGeodeticPosition(); velocity_ecef_m_s_ = dynamics_->GetOrbit().GetVelocity_ecef_m_s(); AddNoise(position_true_eci_, position_ecef_m_); } else { @@ -229,9 +229,9 @@ std::string GnssReceiver::GetLogValue() const // For logs str_tmp += WriteScalar(utc_.second); str_tmp += WriteVector(position_eci_m_, 10); str_tmp += WriteVector(velocity_ecef_m_s_, 10); - str_tmp += WriteScalar(position_llh_[0], 10); - str_tmp += WriteScalar(position_llh_[1], 10); - str_tmp += WriteScalar(position_llh_[2], 10); + str_tmp += WriteScalar(geodetic_position_.GetLatitude_rad(), 10); + str_tmp += WriteScalar(geodetic_position_.GetLongitude_rad(), 10); + str_tmp += WriteScalar(geodetic_position_.GetAltitude_m(), 10); str_tmp += WriteScalar(is_gnss_visible_); str_tmp += WriteScalar(visible_satellite_number_); diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index eb6c32c6c..8b4f8cf07 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -113,10 +113,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] */ - inline const GeodeticPosition GetMeasuredGeodeticPosition(void) const { - GeodeticPosition geodetic_position(position_llh_[0], position_llh_[1], position_llh_[2]); - return geodetic_position; - } + inline const GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } /** * @fn GetMeasuredVelocity_eci_m_s * @brief Return Observed velocity in the ECI frame [m/s] @@ -158,7 +155,7 @@ class GnssReceiver : public Component, public ILoggable { libra::Vector<3> velocity_eci_m_s_{0.0}; //!< Observed velocity in the ECI frame [m/s] libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - libra::Vector<3> position_llh_{0.0}; //!< Observed position in the geodetic frame [rad,rad,m] TODO: use GeodeticPosition class + GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] unsigned int gps_time_week_ = 0; //!< Observed GPS time week part double gps_time_s_ = 0.0; //!< Observed GPS time second part From 1204b9488bf2273ca53e6ac56131fdeadebdc962 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:21:06 +0100 Subject: [PATCH 104/456] Fix to add noise for the geodetic position --- src/components/real/aocs/gnss_receiver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 98057e257..e499a4169 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -60,9 +60,9 @@ void GnssReceiver::MainRoutine(const int time_count) { if (is_gnss_visible_) { // Antenna of GNSS-R can detect GNSS signal position_ecef_m_ = dynamics_->GetOrbit().GetPosition_ecef_m(); - geodetic_position_ = dynamics_->GetOrbit().GetGeodeticPosition(); velocity_ecef_m_s_ = dynamics_->GetOrbit().GetVelocity_ecef_m_s(); AddNoise(position_true_eci_, position_ecef_m_); + geodetic_position_.UpdateFromEcef(position_ecef_m_); } else { // position information will not be updated in this case utc_ = simulation_time_->GetCurrentUtc(); From 564d9562782b37ebee7e7960636ce1a915d749c6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:27:25 +0100 Subject: [PATCH 105/456] Fix comments in ini file --- data/sample/initialize_files/components/gnss_receiver.ini | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index a17ed683e..8a0120c8c 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -6,7 +6,8 @@ antenna_position_b_m(0) = 0.0125 antenna_position_b_m(1) = 0.0000 antenna_position_b_m(2) = 0.1815 -// Quaternion from body frame to component frame +// Quaternion from body frame to component frame of the antenna +// Note: The antenna boresight direction is +Z direction at the component frame quaternion_b2c(0) = 0.0 quaternion_b2c(1) = 0.0 quaternion_b2c(2) = 0.0 @@ -23,7 +24,7 @@ antenna_half_width_deg = 60 // Number of channels maximum_channel = 8 -// GNSS ID +// Target GNSS system ID // G...GPS // R...GLONASS // E...Galileo @@ -33,7 +34,7 @@ maximum_channel = 8 // if your receiver is compatible with GPS and QZSS : GJ gnss_id = G -//Random noise [m] +// Random noise [m] white_noise_standard_deviation_eci_m(0) = 10000.0 white_noise_standard_deviation_eci_m(1) = 1000.0 white_noise_standard_deviation_eci_m(2) = 1000.0 From 9df6917487bf6371b25c6b38428577149592045d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:31:43 +0100 Subject: [PATCH 106/456] Rename gnss_id to gnss_system_id --- .../components/gnss_receiver.ini | 2 +- src/components/real/aocs/gnss_receiver.cpp | 31 ++++++++++--------- src/components/real/aocs/gnss_receiver.hpp | 27 ++++++++-------- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index 8a0120c8c..cd6e7b5e1 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -32,7 +32,7 @@ maximum_channel = 8 // J...QZSS // if your receiver is compatible with all kind of gnss satellites : GRECJ // if your receiver is compatible with GPS and QZSS : GJ -gnss_id = G +gnss_system_id = G // Random noise [m] white_noise_standard_deviation_eci_m(0) = 10000.0 diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index e499a4169..907f3b8e5 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -11,7 +11,7 @@ #include #include -GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_id, +GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) @@ -24,13 +24,13 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), half_width_deg_(half_width_deg), - gnss_id_(gnss_id), + gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), dynamics_(dynamics), gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) {} GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string gnss_id, const size_t max_channel, const AntennaModel antenna_model, + const std::string gnss_system_id, const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) @@ -43,7 +43,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), half_width_deg_(half_width_deg), - gnss_id_(gnss_id), + gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), dynamics_(dynamics), gnss_satellites_(gnss_satellites), @@ -118,8 +118,8 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, for (size_t i = 0; i < kTotalNumberOfGnssSatellite; i++) { // check if gnss ID is compatible with the receiver - std::string gnss_id_string = ConvertIndexToGnssSatelliteNumber(i); - if (gnss_id_.find(gnss_id_string[0]) == std::string::npos) continue; + std::string gnss_system_id_string = ConvertIndexToGnssSatelliteNumber(i); + if (gnss_system_id_.find(gnss_system_id_string[0]) == std::string::npos) continue; // compute direction from sat to gnss in body-fixed frame libra::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); @@ -147,7 +147,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_satellite_visible) { // is visible visible_satellite_number_++; - SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, gnss_id_string); + SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, gnss_system_id_string); } } @@ -158,7 +158,8 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, } } -void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_id) { +void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, + const std::string gnss_system_id) { libra::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); libra::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); @@ -167,7 +168,7 @@ void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, double latitude_rad = AcTan(antenna_to_satellite_direction_c[2], sqrt(pow(antenna_to_satellite_direction_c[0], 2.0) + pow(antenna_to_satellite_direction_c[1], 2.0))); - GnssInfo gnss_info_new = {gnss_id, latitude_rad, longitude_rad, distance_m}; + GnssInfo gnss_info_new = {gnss_system_id, latitude_rad, longitude_rad, distance_m}; gnss_information_list_.push_back(gnss_info_new); } @@ -244,7 +245,7 @@ typedef struct _gnss_receiver_param { libra::Vector<3> antenna_pos_b; libra::Quaternion quaternion_b2c; double half_width_deg; - std::string gnss_id; + std::string gnss_system_id; size_t max_channel; libra::Vector<3> noise_standard_deviation_m; } GnssReceiverParam; @@ -272,7 +273,7 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat gnssr_conf.ReadVector(GSection, "antenna_position_b_m", gnss_receiver_param.antenna_pos_b); gnssr_conf.ReadQuaternion(GSection, "quaternion_b2c", gnss_receiver_param.quaternion_b2c); gnss_receiver_param.half_width_deg = gnssr_conf.ReadDouble(GSection, "antenna_half_width_deg"); - gnss_receiver_param.gnss_id = gnssr_conf.ReadString(GSection, "gnss_id"); + gnss_receiver_param.gnss_system_id = gnssr_conf.ReadString(GSection, "gnss_system_id"); gnss_receiver_param.max_channel = gnssr_conf.ReadInt(GSection, "maximum_channel"); gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_eci_m", gnss_receiver_param.noise_standard_deviation_m); @@ -283,7 +284,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); - GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_id, gr_param.max_channel, gr_param.antenna_model, + GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_system_id, gr_param.max_channel, gr_param.antenna_model, gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, simulation_time); return gnss_r; @@ -296,8 +297,8 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_ // PowerPort power_port->InitializeWithInitializeFile(file_name); - GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_id, gr_param.max_channel, gr_param.antenna_model, - gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, - gnss_satellites, simulation_time); + GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_system_id, gr_param.max_channel, + gr_param.antenna_model, gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, + gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, simulation_time); return gnss_r; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 8b4f8cf07..6cd9d1819 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -48,7 +48,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator * @param [in] component_id: Component ID - * @param [in] gnss_id: GNSS satellite number defined by GNSS system + * @param [in] gnss_system_id: GNSS satellite number defined by GNSS system * @param [in] max_channel: Maximum number of channels * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] @@ -59,17 +59,17 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_id, const size_t max_channel, - const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, + const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, + const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, + const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver * @brief Constructor with power port * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator * @param [in] power_port: Power port - * @param [in] gnss_id: GNSS satellite number defined by GNSS system + * @param [in] gnss_system_id: GNSS satellite number defined by GNSS system * @param [in] max_channel: Maximum number of channels * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] @@ -80,10 +80,11 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string gnss_id, - const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, + const std::string gnss_system_id, const size_t max_channel, const AntennaModel antenna_model, + const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const SimulationTime* simulation_time); // Override functions for Component /** @@ -147,7 +148,7 @@ class GnssReceiver : public Component, public ILoggable { libra::NormalRand random_noise_i_x_, random_noise_i_y_, random_noise_i_z_; //!< Random noise for each axis double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] - std::string gnss_id_; //!< GNSS satellite number defined by GNSS system + std::string gnss_system_id_; //!< GNSS satellite number defined by GNSS system AntennaModel antenna_model_; //!< Antenna model // Calculated values @@ -198,9 +199,9 @@ class GnssReceiver : public Component, public ILoggable { * @brief Calculate and set the GnssInfo values of target GNSS satellite * @param [in] antenna_to_satellite_i_m: Position vector from the antenna to the GNSS satellites in the ECI frame * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame - * @param [in] gnss_id: ID of target GNSS satellite + * @param [in] gnss_system_id: ID of target GNSS satellite */ - void SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_id); + void SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_system_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class From 0ad7095759341bbe52adb6cf515b209e76472021 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:33:07 +0100 Subject: [PATCH 107/456] Fix comment --- src/components/real/aocs/gnss_receiver.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 6cd9d1819..d4d8d940c 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -48,7 +48,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator * @param [in] component_id: Component ID - * @param [in] gnss_system_id: GNSS satellite number defined by GNSS system + * @param [in] gnss_system_id: Target GNSS system IDs * @param [in] max_channel: Maximum number of channels * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] @@ -69,7 +69,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator * @param [in] power_port: Power port - * @param [in] gnss_system_id: GNSS satellite number defined by GNSS system + * @param [in] gnss_system_id: Target GNSS system IDs * @param [in] max_channel: Maximum number of channels * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] From 538acf8d62290951d17a93ecb9171166fcfc571f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:35:13 +0100 Subject: [PATCH 108/456] Remove max channel because it is not used --- .../components/gnss_receiver.ini | 3 -- src/components/real/aocs/gnss_receiver.cpp | 30 ++++++++----------- src/components/real/aocs/gnss_receiver.hpp | 16 ++++------ 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index cd6e7b5e1..7be86ea4b 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -21,9 +21,6 @@ antenna_model = 0 // Antenna half width [deg] antenna_half_width_deg = 60 -// Number of channels -maximum_channel = 8 - // Target GNSS system ID // G...GPS // R...GLONASS diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 907f3b8e5..9bcf5666b 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -12,12 +12,11 @@ #include GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, - const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) + const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, + const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), - max_channel_(max_channel), antenna_position_b_m_(antenna_position_b_m), quaternion_b2c_(quaternion_b2c), random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), @@ -29,14 +28,13 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, dynamics_(dynamics), gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) {} + GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string gnss_system_id, const size_t max_channel, const AntennaModel antenna_model, - const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, - const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, - const SimulationTime* simulation_time) + const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, + const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, + const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), - max_channel_(max_channel), antenna_position_b_m_(antenna_position_b_m), quaternion_b2c_(quaternion_b2c), random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), @@ -246,7 +244,6 @@ typedef struct _gnss_receiver_param { libra::Quaternion quaternion_b2c; double half_width_deg; std::string gnss_system_id; - size_t max_channel; libra::Vector<3> noise_standard_deviation_m; } GnssReceiverParam; @@ -274,7 +271,6 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat gnssr_conf.ReadQuaternion(GSection, "quaternion_b2c", gnss_receiver_param.quaternion_b2c); gnss_receiver_param.half_width_deg = gnssr_conf.ReadDouble(GSection, "antenna_half_width_deg"); gnss_receiver_param.gnss_system_id = gnssr_conf.ReadString(GSection, "gnss_system_id"); - gnss_receiver_param.max_channel = gnssr_conf.ReadInt(GSection, "maximum_channel"); gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_eci_m", gnss_receiver_param.noise_standard_deviation_m); return gnss_receiver_param; @@ -284,9 +280,9 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); - GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_system_id, gr_param.max_channel, gr_param.antenna_model, - gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, - gnss_satellites, simulation_time); + GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_system_id, gr_param.antenna_model, gr_param.antenna_pos_b, + gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, + simulation_time); return gnss_r; } @@ -297,8 +293,8 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_ // PowerPort power_port->InitializeWithInitializeFile(file_name); - GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_system_id, gr_param.max_channel, - gr_param.antenna_model, gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, - gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, simulation_time); + GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_system_id, gr_param.antenna_model, + gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, + gnss_satellites, simulation_time); return gnss_r; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index d4d8d940c..006d8ec97 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -49,7 +49,6 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] clock_generator: Clock generator * @param [in] component_id: Component ID * @param [in] gnss_system_id: Target GNSS system IDs - * @param [in] max_channel: Maximum number of channels * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) @@ -60,9 +59,9 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, - const size_t max_channel, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, + const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver * @brief Constructor with power port @@ -70,7 +69,6 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] clock_generator: Clock generator * @param [in] power_port: Power port * @param [in] gnss_system_id: Target GNSS system IDs - * @param [in] max_channel: Maximum number of channels * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) @@ -81,10 +79,9 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string gnss_system_id, const size_t max_channel, const AntennaModel antenna_model, - const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, - const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, - const SimulationTime* simulation_time); + const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, + const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, + const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component /** @@ -141,7 +138,6 @@ class GnssReceiver : public Component, public ILoggable { protected: // Parameters for receiver const size_t component_id_; //!< Receiver ID - const size_t max_channel_; //!< Maximum number of channels libra::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) From c53946d41703b3078172f68508f11ba8a0d07e07 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:38:04 +0100 Subject: [PATCH 109/456] Clean up local variables definition --- src/components/real/aocs/gnss_receiver.cpp | 12 ++++---- src/components/real/aocs/gnss_receiver.hpp | 36 +++++++++++----------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 9bcf5666b..6eddfbd55 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -19,12 +19,12 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, component_id_(component_id), antenna_position_b_m_(antenna_position_b_m), quaternion_b2c_(quaternion_b2c), - random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), - random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), - random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), half_width_deg_(half_width_deg), gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), + random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), + random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), + random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), dynamics_(dynamics), gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) {} @@ -37,12 +37,12 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, component_id_(component_id), antenna_position_b_m_(antenna_position_b_m), quaternion_b2c_(quaternion_b2c), - random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), - random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), - random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), half_width_deg_(half_width_deg), gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), + random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), + random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), + random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), dynamics_(dynamics), gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) {} diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 006d8ec97..55c0b5dc7 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -137,28 +137,28 @@ class GnssReceiver : public Component, public ILoggable { protected: // Parameters for receiver - const size_t component_id_; //!< Receiver ID + const size_t component_id_; //!< Receiver ID + + // Antenna libra::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) - - libra::NormalRand random_noise_i_x_, random_noise_i_y_, random_noise_i_z_; //!< Random noise for each axis - - double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] - std::string gnss_system_id_; //!< GNSS satellite number defined by GNSS system - AntennaModel antenna_model_; //!< Antenna model + double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] + std::string gnss_system_id_; //!< GNSS satellite number defined by GNSS system + AntennaModel antenna_model_; //!< Antenna model // Calculated values - libra::Vector<3> position_eci_m_{0.0}; //!< Observed position in the ECI frame [m] - libra::Vector<3> velocity_eci_m_s_{0.0}; //!< Observed velocity in the ECI frame [m/s] - libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame - UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] - unsigned int gps_time_week_ = 0; //!< Observed GPS time week part - double gps_time_s_ = 0.0; //!< Observed GPS time second part - bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not - size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites - std::vector gnss_information_list_; //!< Information List of visible GNSS satellites + libra::NormalRand random_noise_i_x_, random_noise_i_y_, random_noise_i_z_; //!< Random noise for each axis + libra::Vector<3> position_eci_m_{0.0}; //!< Observed position in the ECI frame [m] + libra::Vector<3> velocity_eci_m_s_{0.0}; //!< Observed velocity in the ECI frame [m/s] + libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] + unsigned int gps_time_week_ = 0; //!< Observed GPS time week part + double gps_time_s_ = 0.0; //!< Observed GPS time second part + bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not + size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites + std::vector gnss_information_list_; //!< Information List of visible GNSS satellites // References const Dynamics* dynamics_; //!< Dynamics of spacecraft From 598c40b01228c781e09e72810bd23495ad8106d5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 6 Feb 2024 16:57:01 +0100 Subject: [PATCH 110/456] Modify antenna model interface --- .../components/gnss_receiver.ini | 8 +++++--- src/components/real/aocs/gnss_receiver.cpp | 19 ++++++++++++++++--- src/components/real/aocs/gnss_receiver.hpp | 8 ++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index 7be86ea4b..378345817 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -14,9 +14,11 @@ quaternion_b2c(2) = 0.0 quaternion_b2c(3) = 1.0 // Antenna model -// 0... simple model : GNSS sats are visible when antenna directs anti-earth direction -// 1... cone model : GNSS sats visible when a sat is in a cone -antenna_model = 0 +// SIMPLE: We assume that GNSS satellites are visible when antenna directs anti-earth direction +// CONE: We calculate the number of GNSS satellites in the antenna, +// and the position is observable when more than 4 satellites are in the antenna. +// Note : We need to enable the GNSS satellite calculation when we use this mode. +antenna_model = SIMPLE // Antenna half width [deg] antenna_half_width_deg = 60 diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 6eddfbd55..c5d9502b8 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -237,6 +237,18 @@ std::string GnssReceiver::GetLogValue() const // For logs return str_tmp; } +AntennaModel SetAntennaModel(const std::string antenna_model) { + if (antenna_model == "SIMPLE") { + return AntennaModel ::kSimple; + } else if (antenna_model == "CONE") { + return AntennaModel ::kCone; + } else { + std::cerr << "[WARNINGS] GNSS receiver antenna model is not defined!" << std::endl; + std::cerr << "The antenna model is automatically initialized as SIMPLE mode" << std::endl; + return AntennaModel ::kSimple; + } +} + typedef struct _gnss_receiver_param { int prescaler; AntennaModel antenna_model; @@ -259,10 +271,11 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat if (prescaler <= 1) prescaler = 1; gnss_receiver_param.prescaler = prescaler; - gnss_receiver_param.antenna_model = static_cast(gnssr_conf.ReadInt(GSection, "antenna_model")); + std::string antenna_model_name = gnssr_conf.ReadString(GSection, "antenna_model"); + gnss_receiver_param.antenna_model = SetAntennaModel(antenna_model_name); if (!gnss_satellites->IsCalcEnabled() && gnss_receiver_param.antenna_model == AntennaModel::kCone) { - std::cout << "Calculation of GNSS SATELLITES is DISABLED, so the antenna " - "model of GNSS Receiver is automatically set to SIMPLE model." + std::cout << "[WARNINGS] Calculation of GNSS SATELLITES is DISABLED, " + "so the antenna model of GnssReceiver is automatically set to SIMPLE model." << std::endl; gnss_receiver_param.antenna_model = AntennaModel::kSimple; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 55c0b5dc7..fd008e9bc 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -213,6 +213,14 @@ class GnssReceiver : public Component, public ILoggable { void ConvertJulianDayToGpsTime(const double julian_day); }; +/** + * @fn SetAntennaModel + * @brief Set AntennaModel by string + * @param [in] antenna_model: Antenna model name + * @return antenna model + */ +AntennaModel SetAntennaModel(const std::string antenna_model); + /** * @fn InitGnssReceiver * @brief Initialize functions for GNSS Receiver without power port From 3a666c0ab642e76a3a851485a9639e8074467be0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 09:11:39 +0100 Subject: [PATCH 111/456] Add description comment --- data/sample/initialize_files/components/gnss_receiver.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index 378345817..4c6b38372 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -31,6 +31,7 @@ antenna_half_width_deg = 60 // J...QZSS // if your receiver is compatible with all kind of gnss satellites : GRECJ // if your receiver is compatible with GPS and QZSS : GJ +// Note: GNSS satellite calculation must includes the target GNSS systems gnss_system_id = G // Random noise [m] From 827ec0c07e1d685e5bcc9467ce30c70b64a7215f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 09:33:26 +0100 Subject: [PATCH 112/456] Modify to use ECEF frame for noise definition and Add velocity noise --- .../components/gnss_receiver.ini | 10 +++- src/components/real/aocs/gnss_receiver.cpp | 60 ++++++++++--------- src/components/real/aocs/gnss_receiver.hpp | 45 +++++++------- 3 files changed, 64 insertions(+), 51 deletions(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index 4c6b38372..2b7ce54bd 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -35,9 +35,13 @@ antenna_half_width_deg = 60 gnss_system_id = G // Random noise [m] -white_noise_standard_deviation_eci_m(0) = 10000.0 -white_noise_standard_deviation_eci_m(1) = 1000.0 -white_noise_standard_deviation_eci_m(2) = 1000.0 +white_noise_standard_deviation_position_ecef_m(0) = 2000.0 +white_noise_standard_deviation_position_ecef_m(1) = 1000.0 +white_noise_standard_deviation_position_ecef_m(2) = 1500.0 + +white_noise_standard_deviation_velocity_ecef_m_s(0) = 1.0 +white_noise_standard_deviation_velocity_ecef_m_s(1) = 1.5 +white_noise_standard_deviation_velocity_ecef_m_s(2) = 2.0 [POWER_PORT] minimum_voltage_V = 3.3 diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index c5d9502b8..f390121e2 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -13,7 +13,8 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, + const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, + const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), @@ -22,17 +23,21 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, half_width_deg_(half_width_deg), gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), - random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), - random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), - random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), dynamics_(dynamics), gnss_satellites_(gnss_satellites), - simulation_time_(simulation_time) {} + simulation_time_(simulation_time) { + for (size_t i = 0; i < 3; i++) { + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], global_randomization.MakeSeed()); + velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], global_randomization.MakeSeed()); + } +} GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) + const libra::Quaternion quaternion_b2c, const double half_width_deg, + const libra::Vector<3> position_noise_standard_deviation_ecef_m, + const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), antenna_position_b_m_(antenna_position_b_m), @@ -40,12 +45,14 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, half_width_deg_(half_width_deg), gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), - random_noise_i_x_(0.0, noise_standard_deviation_m[0], global_randomization.MakeSeed()), - random_noise_i_y_(0.0, noise_standard_deviation_m[1], global_randomization.MakeSeed()), - random_noise_i_z_(0.0, noise_standard_deviation_m[2], global_randomization.MakeSeed()), dynamics_(dynamics), gnss_satellites_(gnss_satellites), - simulation_time_(simulation_time) {} + simulation_time_(simulation_time) { + for (size_t i = 0; i < 3; i++) { + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], global_randomization.MakeSeed()); + velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], global_randomization.MakeSeed()); + } +} void GnssReceiver::MainRoutine(const int time_count) { UNUSED(time_count); @@ -59,7 +66,7 @@ void GnssReceiver::MainRoutine(const int time_count) { // Antenna of GNSS-R can detect GNSS signal position_ecef_m_ = dynamics_->GetOrbit().GetPosition_ecef_m(); velocity_ecef_m_s_ = dynamics_->GetOrbit().GetVelocity_ecef_m_s(); - AddNoise(position_true_eci_, position_ecef_m_); + AddNoise(position_ecef_m_, velocity_ecef_m_s_); geodetic_position_.UpdateFromEcef(position_ecef_m_); } else { // position information will not be updated in this case @@ -170,16 +177,11 @@ void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, gnss_information_list_.push_back(gnss_info_new); } -void GnssReceiver::AddNoise(const libra::Vector<3> position_true_i_m, const libra::Vector<3> position_true_ecef_m) { - // Simplest noise model - position_eci_m_[0] = position_true_i_m[0] + random_noise_i_x_; - position_eci_m_[1] = position_true_i_m[1] + random_noise_i_y_; - position_eci_m_[2] = position_true_i_m[2] + random_noise_i_z_; - - // FIXME: noise in ECI frame is added to ECEF frame value - position_ecef_m_[0] = position_true_ecef_m[0] + random_noise_i_x_; - position_ecef_m_[1] = position_true_ecef_m[1] + random_noise_i_y_; - position_ecef_m_[2] = position_true_ecef_m[2] + random_noise_i_z_; +void GnssReceiver::AddNoise(const libra::Vector<3> position_true_ecef_m, const libra::Vector<3> velocity_true_ecef_m_s) { + for (size_t i = 0; i < 3; i++) { + position_ecef_m_[i] = position_true_ecef_m[i] + position_random_noise_ecef_m_[i]; + velocity_ecef_m_s_[i] = velocity_true_ecef_m_s[i] + velocity_random_noise_ecef_m_s_[i]; + } } void GnssReceiver::ConvertJulianDayToGpsTime(const double julian_day) { @@ -256,7 +258,8 @@ typedef struct _gnss_receiver_param { libra::Quaternion quaternion_b2c; double half_width_deg; std::string gnss_system_id; - libra::Vector<3> noise_standard_deviation_m; + libra::Vector<3> position_noise_standard_deviation_ecef_m; + libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const int component_id) { @@ -284,7 +287,8 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat gnssr_conf.ReadQuaternion(GSection, "quaternion_b2c", gnss_receiver_param.quaternion_b2c); gnss_receiver_param.half_width_deg = gnssr_conf.ReadDouble(GSection, "antenna_half_width_deg"); gnss_receiver_param.gnss_system_id = gnssr_conf.ReadString(GSection, "gnss_system_id"); - gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_eci_m", gnss_receiver_param.noise_standard_deviation_m); + gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_position_ecef_m", gnss_receiver_param.position_noise_standard_deviation_ecef_m); + gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_velocity_ecef_m_s", gnss_receiver_param.velocity_noise_standard_deviation_ecef_m_s); return gnss_receiver_param; } @@ -294,8 +298,8 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_system_id, gr_param.antenna_model, gr_param.antenna_pos_b, - gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, gnss_satellites, - simulation_time); + gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.position_noise_standard_deviation_ecef_m, + gr_param.velocity_noise_standard_deviation_ecef_m_s, dynamics, gnss_satellites, simulation_time); return gnss_r; } @@ -307,7 +311,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_ power_port->InitializeWithInitializeFile(file_name); GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_system_id, gr_param.antenna_model, - gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.noise_standard_deviation_m, dynamics, - gnss_satellites, simulation_time); + gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.position_noise_standard_deviation_ecef_m, + gr_param.velocity_noise_standard_deviation_ecef_m_s, dynamics, gnss_satellites, simulation_time); return gnss_r; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index fd008e9bc..c8ebba3fb 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -53,15 +53,17 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) * @param [in] half_width_deg: Half width of the antenna cone model [deg] - * @param [in] noise_standard_deviation_m: Standard deviation of normal random noise in the ECI frame [m] + * @param [in] position_noise_standard_deviation_ecef_m: Standard deviation of normal random noise for position in the ECEF frame [m] + * @param [in] velocity_noise_standard_deviation_ecef_m_s: Standard deviation of normal random noise for velocity in the ECEF frame [m/s] * @param [in] dynamics: Dynamics information * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, const Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, + const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const SimulationTime* simulation_time); /** * @fn GnssReceiver * @brief Constructor with power port @@ -73,15 +75,17 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) * @param [in] half_width_deg: Half width of the antenna cone model [rad] - * @param [in] noise_standard_deviation_m: Standard deviation of normal random noise in the ECI frame [m] + * @param [in] position_noise_standard_deviation_ecef_m: Standard deviation of normal random noise for position in the ECEF frame [m] + * @param [in] velocity_noise_standard_deviation_ecef_m_s: Standard deviation of normal random noise for velocity in the ECEF frame [m/s] * @param [in] dynamics: Dynamics information * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> noise_standard_deviation_m, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, + const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const SimulationTime* simulation_time); // Override functions for Component /** @@ -147,18 +151,20 @@ class GnssReceiver : public Component, public ILoggable { AntennaModel antenna_model_; //!< Antenna model // Calculated values - libra::NormalRand random_noise_i_x_, random_noise_i_y_, random_noise_i_z_; //!< Random noise for each axis - libra::Vector<3> position_eci_m_{0.0}; //!< Observed position in the ECI frame [m] - libra::Vector<3> velocity_eci_m_s_{0.0}; //!< Observed velocity in the ECI frame [m/s] - libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame - UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] - unsigned int gps_time_week_ = 0; //!< Observed GPS time week part - double gps_time_s_ = 0.0; //!< Observed GPS time second part - bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not - size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites - std::vector gnss_information_list_; //!< Information List of visible GNSS satellites + libra::NormalRand position_random_noise_ecef_m_[3]; + libra::NormalRand velocity_random_noise_ecef_m_s_[3]; + + libra::Vector<3> position_eci_m_{0.0}; //!< Observed position in the ECI frame [m] + libra::Vector<3> velocity_eci_m_s_{0.0}; //!< Observed velocity in the ECI frame [m/s] + libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] + unsigned int gps_time_week_ = 0; //!< Observed GPS time week part + double gps_time_s_ = 0.0; //!< Observed GPS time second part + bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not + size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites + std::vector gnss_information_list_; //!< Information List of visible GNSS satellites // References const Dynamics* dynamics_; //!< Dynamics of spacecraft @@ -201,10 +207,9 @@ class GnssReceiver : public Component, public ILoggable { /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class - * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] position_true_ecef_m: True position of the spacecraft in the ECEF frame [m] */ - void AddNoise(const libra::Vector<3> position_true_i_m, const libra::Vector<3> position_true_ecef_m); + void AddNoise(const libra::Vector<3> position_true_ecef_m, const libra::Vector<3> velocity_true_ecef_m_s); /** * @fn ConvertJulianDayToGPSTime * @brief Convert Julian day to GPS time From 45e63fd05e748354e08359d809710b7239671ae4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 09:34:27 +0100 Subject: [PATCH 113/456] Fix small --- src/components/real/aocs/gnss_receiver.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index f390121e2..d69847c90 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -57,10 +57,10 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, void GnssReceiver::MainRoutine(const int time_count) { UNUSED(time_count); - libra::Vector<3> position_true_eci_ = dynamics_->GetOrbit().GetPosition_i_m(); + libra::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); libra::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - CheckAntenna(position_true_eci_, quaternion_i2b); + CheckAntenna(position_true_eci, quaternion_i2b); if (is_gnss_visible_) { // Antenna of GNSS-R can detect GNSS signal From 075b8d223bb7c333851edcab2ce161c25f8a6a5f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 09:36:37 +0100 Subject: [PATCH 114/456] Fix comments --- src/components/real/aocs/gnss_receiver.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index d69847c90..31ab576c2 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -57,9 +57,10 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, void GnssReceiver::MainRoutine(const int time_count) { UNUSED(time_count); + // Antenna checking + // TODO: Use ECEF position only libra::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); libra::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - CheckAntenna(position_true_eci, quaternion_i2b); if (is_gnss_visible_) { @@ -67,12 +68,10 @@ void GnssReceiver::MainRoutine(const int time_count) { position_ecef_m_ = dynamics_->GetOrbit().GetPosition_ecef_m(); velocity_ecef_m_s_ = dynamics_->GetOrbit().GetVelocity_ecef_m_s(); AddNoise(position_ecef_m_, velocity_ecef_m_s_); + // Convert observed value to other frames geodetic_position_.UpdateFromEcef(position_ecef_m_); - } else { - // position information will not be updated in this case - utc_ = simulation_time_->GetCurrentUtc(); - ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } + // Time is updated with internal clock utc_ = simulation_time_->GetCurrentUtc(); ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); From c7eeacbd33a9f253c6274a2a5b50038f92261340 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 09:43:55 +0100 Subject: [PATCH 115/456] Remove ECI observation information --- src/components/real/aocs/gnss_receiver.cpp | 4 ++-- src/components/real/aocs/gnss_receiver.hpp | 15 ++------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 31ab576c2..56155a0ad 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -207,7 +207,7 @@ std::string GnssReceiver::GetLogHeader() const // For logs str_tmp += WriteScalar(sensor_name + "measured_utc_time_hour"); str_tmp += WriteScalar(sensor_name + "measured_utc_time_min"); str_tmp += WriteScalar(sensor_name + "measured_utc_time_sec"); - str_tmp += WriteVector(sensor_name + "measured_position", "eci", "m", 3); + str_tmp += WriteVector(sensor_name + "measured_position", "ecef", "m", 3); str_tmp += WriteVector(sensor_name + "measured_velocity", "ecef", "m/s", 3); str_tmp += WriteScalar(sensor_name + "measured_latitude", "rad"); str_tmp += WriteScalar(sensor_name + "measured_longitude", "rad"); @@ -227,7 +227,7 @@ std::string GnssReceiver::GetLogValue() const // For logs str_tmp += WriteScalar(utc_.hour); str_tmp += WriteScalar(utc_.minute); str_tmp += WriteScalar(utc_.second); - str_tmp += WriteVector(position_eci_m_, 10); + str_tmp += WriteVector(position_ecef_m_, 10); str_tmp += WriteVector(velocity_ecef_m_s_, 10); str_tmp += WriteScalar(geodetic_position_.GetLatitude_rad(), 10); str_tmp += WriteScalar(geodetic_position_.GetLongitude_rad(), 10); diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index c8ebba3fb..6cd9b5db9 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -101,11 +101,6 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] channel: Channel number */ inline const GnssInfo GetGnssInfo(const size_t channel) const { return gnss_information_list_[channel]; }; - /** - * @fn GetMeasuredPosition_eci_m - * @brief Return Observed position in the ECI frame [m] - */ - inline const libra::Vector<3> GetMeasuredPosition_eci_m(void) const { return position_eci_m_; } /** * @fn GetMeasuredPosition_ecef_m * @brief Return Observed position in the ECEF frame [m] @@ -116,11 +111,6 @@ class GnssReceiver : public Component, public ILoggable { * @brief Return Observed position in the LLH frame [m] */ inline const GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } - /** - * @fn GetMeasuredVelocity_eci_m_s - * @brief Return Observed velocity in the ECI frame [m/s] - */ - inline const libra::Vector<3> GetMeasuredVelocity_eci_m_s(void) const { return velocity_eci_m_s_; } /** * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] @@ -154,8 +144,6 @@ class GnssReceiver : public Component, public ILoggable { libra::NormalRand position_random_noise_ecef_m_[3]; libra::NormalRand velocity_random_noise_ecef_m_s_[3]; - libra::Vector<3> position_eci_m_{0.0}; //!< Observed position in the ECI frame [m] - libra::Vector<3> velocity_eci_m_s_{0.0}; //!< Observed velocity in the ECI frame [m/s] libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame @@ -208,10 +196,11 @@ class GnssReceiver : public Component, public ILoggable { * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class * @param [in] position_true_ecef_m: True position of the spacecraft in the ECEF frame [m] + * @param [in] velocity_true_ecef_m_s: True velocity of the spacecraft in the ECEF frame [m/s] */ void AddNoise(const libra::Vector<3> position_true_ecef_m, const libra::Vector<3> velocity_true_ecef_m_s); /** - * @fn ConvertJulianDayToGPSTime + * @fn ConvertJulianDayToGpsTime * @brief Convert Julian day to GPS time * @param [in] julian_day: Julian day */ From 2bee223fc784a52fec57500f423c31c9288e1ca1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 09:49:24 +0100 Subject: [PATCH 116/456] Add comment --- src/components/real/aocs/gnss_receiver.hpp | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 6cd9b5db9..a9dac1963 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -140,16 +140,19 @@ class GnssReceiver : public Component, public ILoggable { std::string gnss_system_id_; //!< GNSS satellite number defined by GNSS system AntennaModel antenna_model_; //!< Antenna model - // Calculated values - libra::NormalRand position_random_noise_ecef_m_[3]; - libra::NormalRand velocity_random_noise_ecef_m_s_[3]; - - libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame - UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] - unsigned int gps_time_week_ = 0; //!< Observed GPS time week part - double gps_time_s_ = 0.0; //!< Observed GPS time second part + // Simple position observation + libra::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] + libra::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] + libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + + // Time observation + UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] + unsigned int gps_time_week_ = 0; //!< Observed GPS time week part + double gps_time_s_ = 0.0; //!< Observed GPS time second part + + // Satellite visibility bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not size_t visible_satellite_number_ = 0; //!< Number of visible GNSS satellites std::vector gnss_information_list_; //!< Information List of visible GNSS satellites From 9e4f68dab64d1eb1e8379a21bbaa5704b3753956 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 10:04:15 +0100 Subject: [PATCH 117/456] Fix comment --- data/sample/initialize_files/components/gnss_receiver.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index 2b7ce54bd..dc15ce622 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -34,7 +34,7 @@ antenna_half_width_deg = 60 // Note: GNSS satellite calculation must includes the target GNSS systems gnss_system_id = G -// Random noise [m] +// Random noise for simple position observation white_noise_standard_deviation_position_ecef_m(0) = 2000.0 white_noise_standard_deviation_position_ecef_m(1) = 1000.0 white_noise_standard_deviation_position_ecef_m(2) = 1500.0 From d45cf2c5f69def0f3f2bfee79b3273704a3c66a2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 10:21:30 +0100 Subject: [PATCH 118/456] Fix GNSS visibility threhold to 4 --- src/components/real/aocs/gnss_receiver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 56155a0ad..e49d85368 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -155,7 +155,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, } } - if (visible_satellite_number_ > 0) { + if (visible_satellite_number_ >= 4) { is_gnss_visible_ = true; } else { is_gnss_visible_ = false; From 53bcd76643e2acaab7c7b7cbd8f8ee71f16062bc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 11:03:07 +0100 Subject: [PATCH 119/456] Modify to use GNSS satellite calculated number --- src/components/real/aocs/gnss_receiver.cpp | 4 +++- src/environment/global/gnss_satellites.hpp | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index e49d85368..fafd98610 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -120,7 +120,9 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, // initialize visible_satellite_number_ = 0; - for (size_t i = 0; i < kTotalNumberOfGnssSatellite; i++) { + size_t number_of_calculated_gnss_satellites = gnss_satellites_->GetNumberOfCalculatedSatellite(); + + for (size_t i = 0; i < number_of_calculated_gnss_satellites; i++) { // check if gnss ID is compatible with the receiver std::string gnss_system_id_string = ConvertIndexToGnssSatelliteNumber(i); if (gnss_system_id_.find(gnss_system_id_string[0]) == std::string::npos) continue; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 1d0dce6e1..643afe52f 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -62,6 +62,12 @@ class GnssSatellites : public ILoggable { */ inline bool IsCalcEnabled() const { return is_calc_enabled_; } + /** + * @fn GetNumberOfCalculatedSatellite + * @brief Return number of calculated satellite + */ + inline size_t GetNumberOfCalculatedSatellite() const { return number_of_calculated_gnss_satellites_; } + /** * @fn Update * @brief Update both GNSS satellite information From 5357837e7671435a86021aa90a276589034814ed Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 11:13:44 +0100 Subject: [PATCH 120/456] Delete GNSS system ID because it should be defined in GnssSatellites --- .../components/gnss_receiver.ini | 11 ------- src/components/real/aocs/gnss_receiver.cpp | 33 +++++++------------ src/components/real/aocs/gnss_receiver.hpp | 20 +++++------ 3 files changed, 20 insertions(+), 44 deletions(-) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index dc15ce622..b277b8e93 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -23,17 +23,6 @@ antenna_model = SIMPLE // Antenna half width [deg] antenna_half_width_deg = 60 -// Target GNSS system ID -// G...GPS -// R...GLONASS -// E...Galileo -// C...Beidou -// J...QZSS -// if your receiver is compatible with all kind of gnss satellites : GRECJ -// if your receiver is compatible with GPS and QZSS : GJ -// Note: GNSS satellite calculation must includes the target GNSS systems -gnss_system_id = G - // Random noise for simple position observation white_noise_standard_deviation_position_ecef_m(0) = 2000.0 white_noise_standard_deviation_position_ecef_m(1) = 1000.0 diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index fafd98610..08eeb78f6 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -11,9 +11,9 @@ #include #include -GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, - const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, +GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, + const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const libra::Vector<3> position_noise_standard_deviation_ecef_m, const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), @@ -21,7 +21,6 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, antenna_position_b_m_(antenna_position_b_m), quaternion_b2c_(quaternion_b2c), half_width_deg_(half_width_deg), - gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), dynamics_(dynamics), gnss_satellites_(gnss_satellites), @@ -33,9 +32,8 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, } GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, - const libra::Vector<3> position_noise_standard_deviation_ecef_m, + const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), @@ -43,7 +41,6 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, antenna_position_b_m_(antenna_position_b_m), quaternion_b2c_(quaternion_b2c), half_width_deg_(half_width_deg), - gnss_system_id_(gnss_system_id), antenna_model_(antenna_model), dynamics_(dynamics), gnss_satellites_(gnss_satellites), @@ -123,10 +120,6 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, size_t number_of_calculated_gnss_satellites = gnss_satellites_->GetNumberOfCalculatedSatellite(); for (size_t i = 0; i < number_of_calculated_gnss_satellites; i++) { - // check if gnss ID is compatible with the receiver - std::string gnss_system_id_string = ConvertIndexToGnssSatelliteNumber(i); - if (gnss_system_id_.find(gnss_system_id_string[0]) == std::string::npos) continue; - // compute direction from sat to gnss in body-fixed frame libra::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); libra::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; @@ -153,7 +146,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_satellite_visible) { // is visible visible_satellite_number_++; - SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, gnss_system_id_string); + SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, i); } } @@ -165,7 +158,7 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, } void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, - const std::string gnss_system_id) { + const std::size_t gnss_system_id) { libra::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); libra::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); @@ -258,7 +251,6 @@ typedef struct _gnss_receiver_param { libra::Vector<3> antenna_pos_b; libra::Quaternion quaternion_b2c; double half_width_deg; - std::string gnss_system_id; libra::Vector<3> position_noise_standard_deviation_ecef_m; libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; @@ -287,7 +279,6 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat gnssr_conf.ReadVector(GSection, "antenna_position_b_m", gnss_receiver_param.antenna_pos_b); gnssr_conf.ReadQuaternion(GSection, "quaternion_b2c", gnss_receiver_param.quaternion_b2c); gnss_receiver_param.half_width_deg = gnssr_conf.ReadDouble(GSection, "antenna_half_width_deg"); - gnss_receiver_param.gnss_system_id = gnssr_conf.ReadString(GSection, "gnss_system_id"); gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_position_ecef_m", gnss_receiver_param.position_noise_standard_deviation_ecef_m); gnssr_conf.ReadVector(GSection, "white_noise_standard_deviation_velocity_ecef_m_s", gnss_receiver_param.velocity_noise_standard_deviation_ecef_m_s); @@ -298,9 +289,9 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); - GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.gnss_system_id, gr_param.antenna_model, gr_param.antenna_pos_b, - gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.position_noise_standard_deviation_ecef_m, - gr_param.velocity_noise_standard_deviation_ecef_m_s, dynamics, gnss_satellites, simulation_time); + GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.antenna_model, gr_param.antenna_pos_b, gr_param.quaternion_b2c, + gr_param.half_width_deg, gr_param.position_noise_standard_deviation_ecef_m, gr_param.velocity_noise_standard_deviation_ecef_m_s, + dynamics, gnss_satellites, simulation_time); return gnss_r; } @@ -311,8 +302,8 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_ // PowerPort power_port->InitializeWithInitializeFile(file_name); - GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.gnss_system_id, gr_param.antenna_model, - gr_param.antenna_pos_b, gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.position_noise_standard_deviation_ecef_m, + GnssReceiver gnss_r(gr_param.prescaler, clock_generator, power_port, component_id, gr_param.antenna_model, gr_param.antenna_pos_b, + gr_param.quaternion_b2c, gr_param.half_width_deg, gr_param.position_noise_standard_deviation_ecef_m, gr_param.velocity_noise_standard_deviation_ecef_m_s, dynamics, gnss_satellites, simulation_time); return gnss_r; } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index a9dac1963..04026e89f 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -30,7 +30,7 @@ enum class AntennaModel { * @brief Information of GNSS satellites */ typedef struct _gnss_info { - std::string id; //!< ID of GNSS satellites + size_t gnss_id; //!< ID of GNSS satellites double latitude_rad; //!< Latitude on the antenna frame [rad] double longitude_rad; //!< Longitude on the antenna frame [rad] double distance_m; //!< Distance between the GNSS satellite and the GNSS receiver antenna [m] @@ -48,7 +48,6 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator * @param [in] component_id: Component ID - * @param [in] gnss_system_id: Target GNSS system IDs * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) @@ -59,18 +58,16 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const std::string gnss_system_id, - const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, - const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, - const SimulationTime* simulation_time); + GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, + const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const libra::Vector<3> position_noise_standard_deviation_ecef_m, const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, + const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver * @brief Constructor with power port * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator * @param [in] power_port: Power port - * @param [in] gnss_system_id: Target GNSS system IDs * @param [in] antenna_model: Antenna model * @param [in] antenna_position_b_m: GNSS antenna position at the body-fixed frame [m] * @param [in] quaternion_b2c: Quaternion from body frame to component frame (antenna frame) @@ -82,8 +79,8 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string gnss_system_id, const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, - const libra::Quaternion quaternion_b2c, const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, + const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); @@ -137,7 +134,6 @@ class GnssReceiver : public Component, public ILoggable { libra::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] - std::string gnss_system_id_; //!< GNSS satellite number defined by GNSS system AntennaModel antenna_model_; //!< Antenna model // Simple position observation @@ -194,7 +190,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] gnss_system_id: ID of target GNSS satellite */ - void SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::string gnss_system_id); + void SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const size_t gnss_system_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class From 7d470890211b0efca36863845c2c2e98d6caedb0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 11:17:23 +0100 Subject: [PATCH 121/456] Add comment --- data/sample/initialize_files/components/gnss_receiver.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/data/sample/initialize_files/components/gnss_receiver.ini index b277b8e93..a558caaa0 100644 --- a/data/sample/initialize_files/components/gnss_receiver.ini +++ b/data/sample/initialize_files/components/gnss_receiver.ini @@ -18,6 +18,7 @@ quaternion_b2c(3) = 1.0 // CONE: We calculate the number of GNSS satellites in the antenna, // and the position is observable when more than 4 satellites are in the antenna. // Note : We need to enable the GNSS satellite calculation when we use this mode. +// All satellites managed in the GnssSatellite class are used in this model. antenna_model = SIMPLE // Antenna half width [deg] From 7249e7afc06b9a3a976f3d24b7a03f30eafd7a57 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 11:29:40 +0100 Subject: [PATCH 122/456] Fix python plot for GnssReceiver --- scripts/Plot/plot_gnss_receiver.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/Plot/plot_gnss_receiver.py b/scripts/Plot/plot_gnss_receiver.py index d650c18b3..aa489015a 100644 --- a/scripts/Plot/plot_gnss_receiver.py +++ b/scripts/Plot/plot_gnss_receiver.py @@ -49,39 +49,39 @@ # Read S2E CSV time = read_scalar_from_csv(read_file_name, 'elapsed_time[s]') -measured_position_eci_m = read_3d_vector_from_csv(read_file_name, 'gnss_receiver1_measured_position_eci', 'm') -true_position_eci_m = read_3d_vector_from_csv(read_file_name, 'spacecraft_position_i', 'm') +measured_position_ecef_m = read_3d_vector_from_csv(read_file_name, 'gnss_receiver1_measured_position_ecef', 'm') +# true_position_ecef_m = read_3d_vector_from_csv(read_file_name, 'spacecraft_position_ecef', 'm') number_of_visible_satellites = read_scalar_from_csv(read_file_name, 'gnss_receiver1_number_of_visible_satellites') satellite_visible_flag = read_scalar_from_csv(read_file_name, 'gnss_receiver1_satellite_visible_flag') # Statistics -error_m = measured_position_eci_m[:, 1:] - true_position_eci_m[:, 1:] +#error_m = measured_position_ecef_m[:, 1:] - true_position_ecef_m[:, 1:] average = [0.0, 0.0, 0.0] standard_deviation = [0.0, 0.0, 0.0] -for i in range(3): - average[i] = error_m[i].mean() - standard_deviation[i] = error_m[i].std() +#for i in range(3): +# average[i] = error_m[i].mean() +# standard_deviation[i] = error_m[i].std() # # Plot # unit = ' m' fig, axis = plt.subplots(5, 1, squeeze = False, tight_layout = True, sharex = True) -axis[0, 0].plot(time[0], measured_position_eci_m[0], marker=".", c="red", label="MEASURED-X") -axis[0, 0].plot(time[0], true_position_eci_m[0], marker=".", c="orange", label="TRUE-X") +axis[0, 0].plot(time[0], measured_position_ecef_m[0], marker=".", c="red", label="MEASURED-X") +#axis[0, 0].plot(time[0], true_position_ecef_m[0], marker=".", c="orange", label="TRUE-X") axis[0, 0].text(0.01, 0.99, "Error average:" + format(average[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) axis[0, 0].text(0.01, 0.79, "Standard deviation:" + format(standard_deviation[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) axis[0, 0].legend(loc = 'upper right') -axis[1, 0].plot(time[0], measured_position_eci_m[1], marker=".", c="green", label="MEASURED-Y") -axis[1, 0].plot(time[0], true_position_eci_m[1], marker=".", c="yellow", label="TRUE-Y") +axis[1, 0].plot(time[0], measured_position_ecef_m[1], marker=".", c="green", label="MEASURED-Y") +#axis[1, 0].plot(time[0], true_position_ecef_m[1], marker=".", c="yellow", label="TRUE-Y") axis[1, 0].text(0.01, 0.99, "Error average:" + format(average[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) axis[1, 0].text(0.01, 0.79, "Standard deviation:" + format(standard_deviation[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) axis[1, 0].legend(loc = 'upper right') -axis[2, 0].plot(time[0], measured_position_eci_m[2], marker=".", c="blue", label="MEASURED-Z") -axis[2, 0].plot(time[0], true_position_eci_m[2], marker=".", c="purple", label="TRUE-Z") +axis[2, 0].plot(time[0], measured_position_ecef_m[2], marker=".", c="blue", label="MEASURED-Z") +#axis[2, 0].plot(time[0], true_position_ecef_m[2], marker=".", c="purple", label="TRUE-Z") axis[2, 0].text(0.01, 0.99, "Error average:" + format(average[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) axis[2, 0].text(0.01, 0.79, "Standard deviation:" + format(standard_deviation[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) axis[2, 0].legend(loc = 'upper right') @@ -94,7 +94,7 @@ axis[4, 0].legend(loc = 'upper right') axis[4, 0].set_ylim(0, max(number_of_visible_satellites[0]) + 2) -fig.suptitle("GNSS Receiver Spacecraft position @ ECI") +fig.suptitle("GNSS Receiver Spacecraft position @ ECEF") fig.supylabel("Position [m]") fig.supxlabel("Time [s]") From e285179ca83a90a174075dcc5a977808850a6a2a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:07:12 +0100 Subject: [PATCH 123/456] Fix visible satellite detection method for cone antenna model --- src/components/real/aocs/gnss_receiver.cpp | 42 ++++++++++++---------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 08eeb78f6..23cc3c099 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -106,12 +106,13 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, // Cone model gnss_information_list_.clear(); - // antenna normal vector at inertial frame - libra::Vector<3> antenna_direction_c(0.0); - antenna_direction_c[2] = 1.0; - libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); - libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); + // Antenna pointing direction vector at inertial frame + libra::Vector<3> antenna_pointing_direction_c(0.0); + antenna_pointing_direction_c[2] = 1.0; + libra::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); + libra::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); + // Antenna position vector at inertial frame libra::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); // initialize @@ -125,25 +126,28 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, libra::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; libra::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); - // check gnss satellites are visible from antenna + // Check GNSS satellites are visible from the receiver(not care antenna direction) + bool is_gnss_satellite_visible_from_receiver = false; double inner1 = InnerProduct(antenna_position_i_m, gnss_satellite_position_i_m); - bool is_satellite_visible = false; - if (inner1 > 0) { - is_satellite_visible = true; - } else { - Vector<3> tmp = - antenna_position_i_m + InnerProduct(-antenna_position_i_m, antenna_to_gnss_satellite_direction_i) * antenna_to_gnss_satellite_i_m; - if (tmp.CalcNorm() < environment::earth_equatorial_radius_m) { - // There is earth between antenna and gnss - is_satellite_visible = false; + if (inner1 > 0.0) { // GNSS satellite and receiver are in the same hemisphere + is_gnss_satellite_visible_from_receiver = true; + } else { // GNSS satellite is in the another hemisphere + double angle_bw_earth_center_and_edge_rad = asin(environment::earth_equatorial_radius_m / antenna_position_i_m.CalcNorm()); + double angle_bw_earth_center_and_gnss_rad = + acos(InnerProduct(-antenna_position_i_m.CalcNormalizedVector(), antenna_to_gnss_satellite_direction_i)); + + if (angle_bw_earth_center_and_edge_rad < angle_bw_earth_center_and_gnss_rad) { + // There is no Earth between receiver and GNSS satellite + is_gnss_satellite_visible_from_receiver = true; } else { - // There is not earth between antenna and gnss - is_satellite_visible = true; + // There is Earth between receiver and GNSS satellite + is_gnss_satellite_visible_from_receiver = false; } } - double inner2 = InnerProduct(antenna_direction_i, antenna_to_gnss_satellite_direction_i); - if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_satellite_visible) { + // Check GNSS satellites are in the antenna half width angle + double inner2 = InnerProduct(antenna_pointing_direction_i, antenna_to_gnss_satellite_direction_i); + if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { // is visible visible_satellite_number_++; SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, i); From df0fe71903935d8779cb4c7140a29a06b0b18ed9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:09:37 +0100 Subject: [PATCH 124/456] Add ECEF position log --- src/dynamics/orbit/orbit.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index c73223fd8..80a03d6a0 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -68,6 +68,7 @@ std::string Orbit::GetLogHeader() const { std::string str_tmp = ""; str_tmp += WriteVector("spacecraft_position", "i", "m", 3); + str_tmp += WriteVector("spacecraft_position", "ecef", "m", 3); str_tmp += WriteVector("spacecraft_velocity", "i", "m/s", 3); str_tmp += WriteVector("spacecraft_velocity", "b", "m/s", 3); str_tmp += WriteVector("spacecraft_acceleration", "i", "m/s2", 3); @@ -82,6 +83,7 @@ std::string Orbit::GetLogValue() const { std::string str_tmp = ""; str_tmp += WriteVector(spacecraft_position_i_m_, 16); + str_tmp += WriteVector(spacecraft_position_ecef_m_, 16); str_tmp += WriteVector(spacecraft_velocity_i_m_s_, 10); str_tmp += WriteVector(spacecraft_velocity_b_m_s_, 10); str_tmp += WriteVector(spacecraft_acceleration_i_m_s2_, 10); From 463c032b9f8b10f246ed9ba0261fdd05545d5f0d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:09:57 +0100 Subject: [PATCH 125/456] Uncomment ECEF position log read in plot gnss receiver --- scripts/Plot/plot_gnss_receiver.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/Plot/plot_gnss_receiver.py b/scripts/Plot/plot_gnss_receiver.py index aa489015a..430a17f3c 100644 --- a/scripts/Plot/plot_gnss_receiver.py +++ b/scripts/Plot/plot_gnss_receiver.py @@ -50,18 +50,18 @@ time = read_scalar_from_csv(read_file_name, 'elapsed_time[s]') measured_position_ecef_m = read_3d_vector_from_csv(read_file_name, 'gnss_receiver1_measured_position_ecef', 'm') -# true_position_ecef_m = read_3d_vector_from_csv(read_file_name, 'spacecraft_position_ecef', 'm') +true_position_ecef_m = read_3d_vector_from_csv(read_file_name, 'spacecraft_position_ecef', 'm') number_of_visible_satellites = read_scalar_from_csv(read_file_name, 'gnss_receiver1_number_of_visible_satellites') satellite_visible_flag = read_scalar_from_csv(read_file_name, 'gnss_receiver1_satellite_visible_flag') # Statistics -#error_m = measured_position_ecef_m[:, 1:] - true_position_ecef_m[:, 1:] +error_m = measured_position_ecef_m[:, 1:] - true_position_ecef_m[:, 1:] average = [0.0, 0.0, 0.0] standard_deviation = [0.0, 0.0, 0.0] -#for i in range(3): -# average[i] = error_m[i].mean() -# standard_deviation[i] = error_m[i].std() +for i in range(3): + average[i] = error_m[i].mean() + standard_deviation[i] = error_m[i].std() # # Plot @@ -69,19 +69,19 @@ unit = ' m' fig, axis = plt.subplots(5, 1, squeeze = False, tight_layout = True, sharex = True) axis[0, 0].plot(time[0], measured_position_ecef_m[0], marker=".", c="red", label="MEASURED-X") -#axis[0, 0].plot(time[0], true_position_ecef_m[0], marker=".", c="orange", label="TRUE-X") +axis[0, 0].plot(time[0], true_position_ecef_m[0], marker=".", c="orange", label="TRUE-X") axis[0, 0].text(0.01, 0.99, "Error average:" + format(average[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) axis[0, 0].text(0.01, 0.79, "Standard deviation:" + format(standard_deviation[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) axis[0, 0].legend(loc = 'upper right') axis[1, 0].plot(time[0], measured_position_ecef_m[1], marker=".", c="green", label="MEASURED-Y") -#axis[1, 0].plot(time[0], true_position_ecef_m[1], marker=".", c="yellow", label="TRUE-Y") +axis[1, 0].plot(time[0], true_position_ecef_m[1], marker=".", c="yellow", label="TRUE-Y") axis[1, 0].text(0.01, 0.99, "Error average:" + format(average[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) axis[1, 0].text(0.01, 0.79, "Standard deviation:" + format(standard_deviation[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) axis[1, 0].legend(loc = 'upper right') axis[2, 0].plot(time[0], measured_position_ecef_m[2], marker=".", c="blue", label="MEASURED-Z") -#axis[2, 0].plot(time[0], true_position_ecef_m[2], marker=".", c="purple", label="TRUE-Z") +axis[2, 0].plot(time[0], true_position_ecef_m[2], marker=".", c="purple", label="TRUE-Z") axis[2, 0].text(0.01, 0.99, "Error average:" + format(average[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) axis[2, 0].text(0.01, 0.79, "Standard deviation:" + format(standard_deviation[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) axis[2, 0].legend(loc = 'upper right') From f08f45bb5d19ccacb47cddb47d801e5b0bea8a68 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:13:37 +0100 Subject: [PATCH 126/456] Fix warning --- src/components/real/aocs/gnss_receiver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 23cc3c099..f182764f4 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -259,7 +259,7 @@ typedef struct _gnss_receiver_param { libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; -GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const int component_id) { +GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const size_t component_id) { GnssReceiverParam gnss_receiver_param; IniAccess gnssr_conf(file_name); From 310493986e692b5529d9dc7a8dc91a1fc703240e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 3 Nov 2023 20:39:39 +0100 Subject: [PATCH 127/456] Add orbit observer --- src/components/ideal/orbit_observer.hpp | 78 +++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/components/ideal/orbit_observer.hpp diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp new file mode 100644 index 000000000..97b9216e0 --- /dev/null +++ b/src/components/ideal/orbit_observer.hpp @@ -0,0 +1,78 @@ +/* + * @file orbit_observer.hpp + * @brief Ideal component which can observe orbit + */ + +#ifndef S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ +#define S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ + +#include +#include +#include +#include + +#include "../base/component.hpp" + +/* + * @class OrbitObserver + * @brief Ideal component which can observe orbit + */ +class OrbitObserver : public Component, public ILoggable { + public: + /** + * @fn OrbitObserver + * @brief Constructor without power port + * @param [in] prescaler: Frequency scale factor for update + * @param [in] clock_generator: Clock generator + * @param [in] orbit: Orbit information + */ + OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit* orbit); + + /** + * @fn ~AttitudeObserver + * @brief Destructor + */ + ~OrbitObserver() {} + + // Override functions for Component + /** + * @fn MainRoutine + * @brief Main routine for sensor observation + */ + void MainRoutine(const int time_count) override; + + // Override ILoggable + /** + * @fn GetLogHeader + * @brief Override GetLogHeader function of ILoggable + */ + virtual std::string GetLogHeader() const override; + /** + * @fn GetLogValue + * @brief Override GetLogValue function of ILoggable + */ + virtual std::string GetLogValue() const override; + + /** + * @fn GetPosition_i_m + * @brief Return observed quaternion from the inertial frame to the component frame + */ + inline const libra::Vector<3> GetPosition() const { return observed_position_i_m_; }; + + protected: + libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + + // Observed variables + const Orbit* orbit_; //!< Orbit information +}; + +/** + * @fn InitStarSensor + * @brief Initialize functions for StarSensor without power port + * @param [in] clock_generator: Clock generator + * @param [in] file_name: Path to the initialize file + * @param [in] orbit: Orbit information + */ +OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit* orbit); + +#endif // S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ From d174ef74b4635d5f3c5090e450eb5728dd12a818 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 4 Nov 2023 08:25:25 +0100 Subject: [PATCH 128/456] Add cpp file --- src/components/ideal/orbit_observer.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/components/ideal/orbit_observer.cpp diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp new file mode 100644 index 000000000..ec6b4bec7 --- /dev/null +++ b/src/components/ideal/orbit_observer.cpp @@ -0,0 +1,8 @@ +/* + * @file orbit_observer.cpp + * @brief Ideal component which can observe orbit + */ + +#include "orbit_observer.hpp" + +OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit* orbit) : Component(prescaler, clock_generator), orbit_(orbit) {} From 3fc4c0abfb5acc6d3b47a289521a0d93cc72ecf1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 4 Nov 2023 14:22:58 +0100 Subject: [PATCH 129/456] Implement main routine without noise --- src/components/ideal/orbit_observer.cpp | 38 ++++++++++++++++++++++++- src/components/ideal/orbit_observer.hpp | 4 +-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index ec6b4bec7..6d1171b89 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -5,4 +5,40 @@ #include "orbit_observer.hpp" -OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit* orbit) : Component(prescaler, clock_generator), orbit_(orbit) {} +OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit) : Component(prescaler, clock_generator), orbit_(orbit) {} + +void OrbitObserver::MainRoutine(const int time_count) { + UNUSED(time_count); + + observed_position_i_m_ = orbit_.GetPosition_i_m(); +} + +std::string OrbitObserver::GetLogHeader() const { + std::string str_tmp = ""; + + std::string head = "orbit_observer_"; + str_tmp += WriteVector(head + "position", "i", "m", 3); + + return str_tmp; +} + +std::string OrbitObserver::GetLogValue() const { + std::string str_tmp = ""; + + str_tmp += WriteVector(observed_position_i_m_, 16); + + return str_tmp; +} + +OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { + // General + IniAccess ini_file(file_name); + + // CompoBase + int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); + if (prescaler <= 1) prescaler = 1; + + OrbitObserver orbit_observer(prescaler, clock_generator, orbit); + + return orbit_observer; +} diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 97b9216e0..c495a06d1 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -26,7 +26,7 @@ class OrbitObserver : public Component, public ILoggable { * @param [in] clock_generator: Clock generator * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit* orbit); + OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit); /** * @fn ~AttitudeObserver @@ -73,6 +73,6 @@ class OrbitObserver : public Component, public ILoggable { * @param [in] file_name: Path to the initialize file * @param [in] orbit: Orbit information */ -OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit* orbit); +OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit); #endif // S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ From 4b38b432ba779117adb7531648955ce18363553c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 4 Nov 2023 14:25:57 +0100 Subject: [PATCH 130/456] dd to CMake --- src/components/CMakeLists.txt | 1 + src/components/ideal/orbit_observer.cpp | 4 +++- src/components/ideal/orbit_observer.hpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/CMakeLists.txt b/src/components/CMakeLists.txt index 697b2322f..2cc69c93d 100644 --- a/src/components/CMakeLists.txt +++ b/src/components/CMakeLists.txt @@ -37,6 +37,7 @@ ideal/force_generator.cpp ideal/torque_generator.cpp ideal/angular_velocity_observer.cpp ideal/attitude_observer.cpp +ideal/orbit_observer.cpp real/mission/telescope.cpp diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 6d1171b89..f66e9802f 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -5,7 +5,9 @@ #include "orbit_observer.hpp" -OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit) : Component(prescaler, clock_generator), orbit_(orbit) {} +#include + +OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit) : Component(prescaler, clock_generator), orbit_(orbit) {} void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index c495a06d1..5990e5f89 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -63,7 +63,7 @@ class OrbitObserver : public Component, public ILoggable { libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] // Observed variables - const Orbit* orbit_; //!< Orbit information + const Orbit& orbit_; //!< Orbit information }; /** From 6975859ba4dbbf40aa8d950cce9e6be2da7a2289 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 4 Nov 2023 14:36:02 +0100 Subject: [PATCH 131/456] Add velocity --- src/components/ideal/orbit_observer.cpp | 6 +++++- src/components/ideal/orbit_observer.hpp | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index f66e9802f..38cdeed6c 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -7,12 +7,14 @@ #include -OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit) : Component(prescaler, clock_generator), orbit_(orbit) {} +OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit) + : Component(prescaler, clock_generator), orbit_(orbit) {} void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); observed_position_i_m_ = orbit_.GetPosition_i_m(); + observed_velocity_i_m_s_ = orbit_.GetVelocity_i_m_s(); } std::string OrbitObserver::GetLogHeader() const { @@ -20,6 +22,7 @@ std::string OrbitObserver::GetLogHeader() const { std::string head = "orbit_observer_"; str_tmp += WriteVector(head + "position", "i", "m", 3); + str_tmp += WriteVector(head + "velocity", "i", "m/s", 3); return str_tmp; } @@ -28,6 +31,7 @@ std::string OrbitObserver::GetLogValue() const { std::string str_tmp = ""; str_tmp += WriteVector(observed_position_i_m_, 16); + str_tmp += WriteVector(observed_velocity_i_m_s_, 16); return str_tmp; } diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 5990e5f89..78bfcfdd3 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -60,7 +60,8 @@ class OrbitObserver : public Component, public ILoggable { inline const libra::Vector<3> GetPosition() const { return observed_position_i_m_; }; protected: - libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] // Observed variables const Orbit& orbit_; //!< Orbit information From fa55700acae12e78d464371ef5bdae5da22e94fe Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 4 Nov 2023 14:36:46 +0100 Subject: [PATCH 132/456] Add velocity --- src/components/ideal/orbit_observer.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 78bfcfdd3..e2bbba1ef 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -55,9 +55,15 @@ class OrbitObserver : public Component, public ILoggable { /** * @fn GetPosition_i_m - * @brief Return observed quaternion from the inertial frame to the component frame + * @brief Return observed position */ - inline const libra::Vector<3> GetPosition() const { return observed_position_i_m_; }; + inline const libra::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; + + /** + * @fn GetVelocity_i_m_s + * @brief Return observed velocity + */ + inline const libra::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; protected: libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] From b8019e5d3ad93902a2d3e93208a377195d7ef522 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 7 Nov 2023 08:09:20 +0100 Subject: [PATCH 133/456] Add noise --- src/components/ideal/orbit_observer.cpp | 26 +++++++++++++++++++++++-- src/components/ideal/orbit_observer.hpp | 26 ++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 38cdeed6c..d065ebac4 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -7,12 +7,32 @@ #include -OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit) - : Component(prescaler, clock_generator), orbit_(orbit) {} +OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, + const libra::Vector<6> error_standard_deviation, const const Orbit& orbit) + : Component(prescaler, clock_generator), orbit_(orbit) { + for (size_t i = 0; i < 6; i++) { + normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i]); + } +} void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); + switch (error_frame_) { + case ErrorFrame::kInertial: + observed_position_i_m_ = Measure(observed_position_i_m_); + // Frame conversion + observed_position_rtn_m_ = q_i2rtn.FrameConversion(observed_position_i_m_); + break; + case ErrorFrame::kRtn: + observed_position_rtn_m_ = Measure(observed_position_rtn_m_); + // Frame conversion + observed_position_i_m_ = q_i2rtn.InverseFrameConversion(observed_position_rtn_m_); + break; + default: + break; + } + observed_position_i_m_ = orbit_.GetPosition_i_m(); observed_velocity_i_m_s_ = orbit_.GetVelocity_i_m_s(); } @@ -36,6 +56,8 @@ std::string OrbitObserver::GetLogValue() const { return str_tmp; } +void AddNoise(){} + OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { // General IniAccess ini_file(file_name); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index e2bbba1ef..2271ae271 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -13,6 +13,15 @@ #include "../base/component.hpp" +/** + * @enum ErrorFrame + * @brief Error definition frame + */ +enum class ErrorFrame { + kInertial, //!< Inertial frame + kRtn, //!< RTN frame +}; + /* * @class OrbitObserver * @brief Ideal component which can observe orbit @@ -24,9 +33,12 @@ class OrbitObserver : public Component, public ILoggable { * @brief Constructor without power port * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator + * @param [in] error_frame: Error frame definition + * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const Orbit& orbit); + OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, const libra::Vector<6> error_standard_deviation, + const const Orbit& orbit); /** * @fn ~AttitudeObserver @@ -66,11 +78,19 @@ class OrbitObserver : public Component, public ILoggable { inline const libra::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; protected: - libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] - libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] + libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] + libra::Vector<3> observed_position_rtn_m_{0.0}; //!< Observed position @ RTN frame [m] + libra::Vector<3> observed_velocity_rtn_m_s_{0.0}; //!< Observed velocity @ RTN frame [m/s] + + ErrorFrame error_frame_; //!< Error definition frame + libra::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables const Orbit& orbit_; //!< Orbit information + + libra::Vector<3> AddPositionNoise(const libra::Vector<3> position_m); + libra::Vector<3> AddVelocityNoise(const libra::Vector<3> velocity_m_s); }; /** From 5f00035ca7b64eb168f01b2f46630384af1b505c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:23:34 +0100 Subject: [PATCH 134/456] Fix format --- src/components/ideal/orbit_observer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index d065ebac4..ba12a9b2f 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -56,7 +56,7 @@ std::string OrbitObserver::GetLogValue() const { return str_tmp; } -void AddNoise(){} +void AddNoise() {} OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { // General From 475d4c42a9cfc8f461eecc25dce9654d90e31003 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:33:36 +0100 Subject: [PATCH 135/456] Fix for build success --- src/components/ideal/orbit_observer.cpp | 18 ++++++++++-------- src/components/ideal/orbit_observer.hpp | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index ba12a9b2f..053941c49 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -8,7 +8,7 @@ #include OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, - const libra::Vector<6> error_standard_deviation, const const Orbit& orbit) + const libra::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i]); @@ -18,23 +18,21 @@ OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generato void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); + libra::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (error_frame_) { case ErrorFrame::kInertial: - observed_position_i_m_ = Measure(observed_position_i_m_); + observed_position_i_m_ = AddPositionNoise(orbit_.GetPosition_i_m()); // Frame conversion observed_position_rtn_m_ = q_i2rtn.FrameConversion(observed_position_i_m_); break; case ErrorFrame::kRtn: - observed_position_rtn_m_ = Measure(observed_position_rtn_m_); - // Frame conversion + // observed_position_rtn_m_ = AddPositionNoise(orbit_.GetPosition_); + // Frame conversion observed_position_i_m_ = q_i2rtn.InverseFrameConversion(observed_position_rtn_m_); break; default: break; } - - observed_position_i_m_ = orbit_.GetPosition_i_m(); - observed_velocity_i_m_s_ = orbit_.GetVelocity_i_m_s(); } std::string OrbitObserver::GetLogHeader() const { @@ -66,7 +64,11 @@ OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); if (prescaler <= 1) prescaler = 1; - OrbitObserver orbit_observer(prescaler, clock_generator, orbit); + // Noise + const ErrorFrame error_frame = ErrorFrame::kInertial; + const libra::Vector<6> error_standard_deviation; + + OrbitObserver orbit_observer(prescaler, clock_generator, error_frame, error_standard_deviation, orbit); return orbit_observer; } diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 2271ae271..9f0d79314 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -38,7 +38,7 @@ class OrbitObserver : public Component, public ILoggable { * @param [in] orbit: Orbit information */ OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, const libra::Vector<6> error_standard_deviation, - const const Orbit& orbit); + const Orbit& orbit); /** * @fn ~AttitudeObserver From d9e76b007c807aa96b417ebcf77351f926af43ac Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:46:10 +0100 Subject: [PATCH 136/456] Fix noise calculation --- src/components/ideal/orbit_observer.cpp | 23 +++++++++++++++-------- src/components/ideal/orbit_observer.hpp | 10 ++++------ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 053941c49..4ee50551b 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -6,33 +6,42 @@ #include "orbit_observer.hpp" #include +#include OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, const libra::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { - normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i]); + normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], global_randomization.MakeSeed()); } } void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); + // Calc noise + libra::Vector<3> position_error_i_m{0.0}; + libra::Vector<3> position_error_rtn_m{0.0}; libra::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (error_frame_) { case ErrorFrame::kInertial: - observed_position_i_m_ = AddPositionNoise(orbit_.GetPosition_i_m()); - // Frame conversion - observed_position_rtn_m_ = q_i2rtn.FrameConversion(observed_position_i_m_); + for (size_t axis = 0; axis < 3; axis++) { + position_error_i_m[axis] = normal_random_noise_[axis]; + } break; case ErrorFrame::kRtn: - // observed_position_rtn_m_ = AddPositionNoise(orbit_.GetPosition_); + for (size_t axis = 0; axis < 3; axis++) { + position_error_rtn_m[axis] = normal_random_noise_[axis]; + } // Frame conversion - observed_position_i_m_ = q_i2rtn.InverseFrameConversion(observed_position_rtn_m_); + position_error_i_m = q_i2rtn.InverseFrameConversion(position_error_rtn_m); break; default: break; } + + // Get observed value + observed_position_i_m_ = orbit_.GetPosition_i_m() + position_error_i_m; } std::string OrbitObserver::GetLogHeader() const { @@ -54,8 +63,6 @@ std::string OrbitObserver::GetLogValue() const { return str_tmp; } -void AddNoise() {} - OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { // General IniAccess ini_file(file_name); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 9f0d79314..0481263e2 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -78,10 +78,8 @@ class OrbitObserver : public Component, public ILoggable { inline const libra::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; protected: - libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] - libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] - libra::Vector<3> observed_position_rtn_m_{0.0}; //!< Observed position @ RTN frame [m] - libra::Vector<3> observed_velocity_rtn_m_s_{0.0}; //!< Observed velocity @ RTN frame [m/s] + libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] ErrorFrame error_frame_; //!< Error definition frame libra::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] @@ -89,8 +87,8 @@ class OrbitObserver : public Component, public ILoggable { // Observed variables const Orbit& orbit_; //!< Orbit information - libra::Vector<3> AddPositionNoise(const libra::Vector<3> position_m); - libra::Vector<3> AddVelocityNoise(const libra::Vector<3> velocity_m_s); + libra::Vector<3> CalcPositionNoise(); + libra::Vector<3> CalcVelocityNoise(); }; /** From 000c5c1260fc45591246f47c27f6d2875f3a3cf0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 15:48:09 +0100 Subject: [PATCH 137/456] Fix small --- src/components/ideal/orbit_observer.cpp | 2 +- src/components/ideal/orbit_observer.hpp | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 4ee50551b..1b7283eca 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -10,7 +10,7 @@ OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, const libra::Vector<6> error_standard_deviation, const Orbit& orbit) - : Component(prescaler, clock_generator), orbit_(orbit) { + : Component(prescaler, clock_generator), error_frame_(error_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], global_randomization.MakeSeed()); } diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 0481263e2..03963afe9 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -86,9 +86,6 @@ class OrbitObserver : public Component, public ILoggable { // Observed variables const Orbit& orbit_; //!< Orbit information - - libra::Vector<3> CalcPositionNoise(); - libra::Vector<3> CalcVelocityNoise(); }; /** From fa9d18d406e4a77d37049779cd60b76f3946fbe3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 16:00:38 +0100 Subject: [PATCH 138/456] Add initialize file --- .../components/orbit_observer.ini | 19 ++++++++++++ src/components/ideal/orbit_observer.cpp | 29 ++++++++++++++----- src/components/ideal/orbit_observer.hpp | 20 +++++++++---- 3 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 data/sample/initialize_files/components/orbit_observer.ini diff --git a/data/sample/initialize_files/components/orbit_observer.ini b/data/sample/initialize_files/components/orbit_observer.ini new file mode 100644 index 000000000..8d527e618 --- /dev/null +++ b/data/sample/initialize_files/components/orbit_observer.ini @@ -0,0 +1,19 @@ +[ORBIT_OBSERVER] +// Noise definition frame +// INERTIAL: Inertial frame +// RTN: RTN frame +noise_frame = INERTIAL + +// Standard deviation of position and velocity noise [m, m/s] +// The frame definition can be selected above +noise_standard_deviation[0] = 1000 // Position-X +noise_standard_deviation[1] = 2000 // Position-Y +noise_standard_deviation[2] = 3000 // Position-Z +noise_standard_deviation[3] = 30 // Velocity-X +noise_standard_deviation[4] = 20 // Velocity-Y +noise_standard_deviation[5] = 10 // Velocity-Z + + +[COMPONENT_BASE] +// Prescaler with respect to the component update period +prescaler = 1 diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 1b7283eca..26d816933 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -8,9 +8,9 @@ #include #include -OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, +OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const libra::Vector<6> error_standard_deviation, const Orbit& orbit) - : Component(prescaler, clock_generator), error_frame_(error_frame), orbit_(orbit) { + : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], global_randomization.MakeSeed()); } @@ -23,13 +23,13 @@ void OrbitObserver::MainRoutine(const int time_count) { libra::Vector<3> position_error_i_m{0.0}; libra::Vector<3> position_error_rtn_m{0.0}; libra::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); - switch (error_frame_) { - case ErrorFrame::kInertial: + switch (noise_frame_) { + case NoiseFrame::kInertial: for (size_t axis = 0; axis < 3; axis++) { position_error_i_m[axis] = normal_random_noise_[axis]; } break; - case ErrorFrame::kRtn: + case NoiseFrame::kRtn: for (size_t axis = 0; axis < 3; axis++) { position_error_rtn_m[axis] = normal_random_noise_[axis]; } @@ -63,6 +63,18 @@ std::string OrbitObserver::GetLogValue() const { return str_tmp; } +NoiseFrame SetNoiseFrame(const std::string noise_frame) { + if (noise_frame == "INERTIAL") { + return NoiseFrame::kInertial; + } else if (noise_frame == "RTN") { + return NoiseFrame::kRtn; + } else { + std::cerr << "[WARNINGS] Orbit observer noise frame is not defined!" << std::endl; + std::cerr << "The noise frame is automatically initialized as INERTIAL" << std::endl; + return NoiseFrame::kInertial; + } +} + OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { // General IniAccess ini_file(file_name); @@ -72,10 +84,11 @@ OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std if (prescaler <= 1) prescaler = 1; // Noise - const ErrorFrame error_frame = ErrorFrame::kInertial; - const libra::Vector<6> error_standard_deviation; + const NoiseFrame noise_frame = SetNoiseFrame(ini_file.ReadString("ORBIT_OBSERVER", "noise_frame")); + libra::Vector<6> noise_standard_deviation; + ini_file.ReadVector("ORBIT_OBSERVER", "noise_standard_deviation", noise_standard_deviation); - OrbitObserver orbit_observer(prescaler, clock_generator, error_frame, error_standard_deviation, orbit); + OrbitObserver orbit_observer(prescaler, clock_generator, noise_frame, noise_standard_deviation, orbit); return orbit_observer; } diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 03963afe9..df22c807d 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -14,10 +14,10 @@ #include "../base/component.hpp" /** - * @enum ErrorFrame - * @brief Error definition frame + * @enum NoiseFrame + * @brief Noide definition frame */ -enum class ErrorFrame { +enum class NoiseFrame { kInertial, //!< Inertial frame kRtn, //!< RTN frame }; @@ -33,11 +33,11 @@ class OrbitObserver : public Component, public ILoggable { * @brief Constructor without power port * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator - * @param [in] error_frame: Error frame definition + * @param [in] noise_frame: Error frame definition * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const ErrorFrame error_frame, const libra::Vector<6> error_standard_deviation, + OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const libra::Vector<6> error_standard_deviation, const Orbit& orbit); /** @@ -81,13 +81,21 @@ class OrbitObserver : public Component, public ILoggable { libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] - ErrorFrame error_frame_; //!< Error definition frame + NoiseFrame noise_frame_; //!< Noise definition frame libra::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables const Orbit& orbit_; //!< Orbit information }; +/** + * @fn SetNoiseFrame + * @brief Set NoiseFrame by string + * @param [in] noise_frame: Noise frame name + * @return noise frame + */ +NoiseFrame SetNoiseFrame(const std::string noise_frame); + /** * @fn InitStarSensor * @brief Initialize functions for StarSensor without power port From 3c6a1fec8820df7f2d7b92ca7b684da7780fcd05 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 7 Feb 2024 16:20:23 +0100 Subject: [PATCH 139/456] Add velocity observation --- src/components/ideal/orbit_observer.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 26d816933..07416e891 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -22,19 +22,26 @@ void OrbitObserver::MainRoutine(const int time_count) { // Calc noise libra::Vector<3> position_error_i_m{0.0}; libra::Vector<3> position_error_rtn_m{0.0}; + libra::Vector<3> velocity_error_i_m_s{0.0}; + libra::Vector<3> velocity_error_rtn_m_s{0.0}; libra::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (noise_frame_) { case NoiseFrame::kInertial: for (size_t axis = 0; axis < 3; axis++) { position_error_i_m[axis] = normal_random_noise_[axis]; + velocity_error_i_m_s[axis] = normal_random_noise_[axis + 3]; } break; case NoiseFrame::kRtn: for (size_t axis = 0; axis < 3; axis++) { position_error_rtn_m[axis] = normal_random_noise_[axis]; + velocity_error_rtn_m_s[axis] = normal_random_noise_[axis + 3]; } // Frame conversion position_error_i_m = q_i2rtn.InverseFrameConversion(position_error_rtn_m); + // For zero bias noise, we do not need to care frame rotation effect. + velocity_error_i_m_s = q_i2rtn.InverseFrameConversion(velocity_error_rtn_m_s); + break; default: break; @@ -42,6 +49,7 @@ void OrbitObserver::MainRoutine(const int time_count) { // Get observed value observed_position_i_m_ = orbit_.GetPosition_i_m() + position_error_i_m; + observed_velocity_i_m_s_ = orbit_.GetVelocity_i_m_s() + velocity_error_i_m_s; } std::string OrbitObserver::GetLogHeader() const { From ae87d688acdaebce336648f6c1acd906aebfbbc2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 10:31:22 +0100 Subject: [PATCH 140/456] Fix typo --- src/components/ideal/orbit_observer.cpp | 4 ++-- src/components/ideal/orbit_observer.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 07416e891..61fe2b002 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -37,9 +37,9 @@ void OrbitObserver::MainRoutine(const int time_count) { position_error_rtn_m[axis] = normal_random_noise_[axis]; velocity_error_rtn_m_s[axis] = normal_random_noise_[axis + 3]; } - // Frame conversion + // Frame conversion position_error_i_m = q_i2rtn.InverseFrameConversion(position_error_rtn_m); - // For zero bias noise, we do not need to care frame rotation effect. + // For zero bias noise, we do not need to care the frame rotation effect. velocity_error_i_m_s = q_i2rtn.InverseFrameConversion(velocity_error_rtn_m_s); break; diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index df22c807d..490489957 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -15,7 +15,7 @@ /** * @enum NoiseFrame - * @brief Noide definition frame + * @brief Noise definition frame */ enum class NoiseFrame { kInertial, //!< Inertial frame From 9180f53eb11f5694cfac21ccceb8a825dea8ed45 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 10:53:26 +0100 Subject: [PATCH 141/456] Add instance to sample codes --- .../initialize_files/components/orbit_observer.ini | 12 ++++++------ data/sample/initialize_files/sample_satellite.ini | 1 + .../spacecraft/sample_components.cpp | 6 ++++++ .../spacecraft/sample_components.hpp | 2 ++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/data/sample/initialize_files/components/orbit_observer.ini b/data/sample/initialize_files/components/orbit_observer.ini index 8d527e618..1c27ecf57 100644 --- a/data/sample/initialize_files/components/orbit_observer.ini +++ b/data/sample/initialize_files/components/orbit_observer.ini @@ -6,12 +6,12 @@ noise_frame = INERTIAL // Standard deviation of position and velocity noise [m, m/s] // The frame definition can be selected above -noise_standard_deviation[0] = 1000 // Position-X -noise_standard_deviation[1] = 2000 // Position-Y -noise_standard_deviation[2] = 3000 // Position-Z -noise_standard_deviation[3] = 30 // Velocity-X -noise_standard_deviation[4] = 20 // Velocity-Y -noise_standard_deviation[5] = 10 // Velocity-Z +noise_standard_deviation(0) = 1000 // Position-X +noise_standard_deviation(1) = 2000 // Position-Y +noise_standard_deviation(2) = 3000 // Position-Z +noise_standard_deviation(3) = 30 // Velocity-X +noise_standard_deviation(4) = 20 // Velocity-Y +noise_standard_deviation(5) = 10 // Velocity-Z [COMPONENT_BASE] diff --git a/data/sample/initialize_files/sample_satellite.ini b/data/sample/initialize_files/sample_satellite.ini index 69dcd5210..d0fa9c23a 100644 --- a/data/sample/initialize_files/sample_satellite.ini +++ b/data/sample/initialize_files/sample_satellite.ini @@ -146,6 +146,7 @@ force_generator_file = INI_FILE_DIR_FROM_EXE/components/force_generator.ini torque_generator_file = INI_FILE_DIR_FROM_EXE/components/torque_generator.ini angular_velocity_observer_file = INI_FILE_DIR_FROM_EXE/components/angular_velocity_observer.ini attitude_observer_file = INI_FILE_DIR_FROM_EXE/components/attitude_observer.ini +orbit_observer_file = INI_FILE_DIR_FROM_EXE/components/orbit_observer.ini antenna_file = INI_FILE_DIR_FROM_EXE/components/spacecraft_antenna.ini component_interference_file = INI_FILE_DIR_FROM_EXE/components/component_interference.ini telescope_file = INI_FILE_DIR_FROM_EXE/components/telescope.ini diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index d529d040a..1d997625f 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -106,6 +106,11 @@ SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structur configuration_->main_logger_->CopyFileToLogDirectory(file_name); attitude_observer_ = new AttitudeObserver(InitializeAttitudeObserver(clock_generator, file_name, dynamics_->GetAttitude())); + // Orbit Observer + file_name = iniAccess.ReadString("COMPONENT_FILES", "orbit_observer_file"); + configuration_->main_logger_->CopyFileToLogDirectory(file_name); + orbit_observer_ = new OrbitObserver(InitializeOrbitObserver(clock_generator, file_name, dynamics_->GetOrbit())); + // Antenna file_name = iniAccess.ReadString("COMPONENT_FILES", "antenna_file"); configuration_->main_logger_->CopyFileToLogDirectory(file_name); @@ -171,6 +176,7 @@ SampleComponents::~SampleComponents() { delete torque_generator_; delete angular_velocity_observer_; delete attitude_observer_; + delete orbit_observer_; delete antenna_; delete mtq_magnetometer_interference_; // delete change_structure_; diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 2b7574f27..abc355bef 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -114,6 +115,7 @@ class SampleComponents : public InstalledComponents { TorqueGenerator* torque_generator_; //!< Ideal Torque Generator AngularVelocityObserver* angular_velocity_observer_; //!< Ideal Angular velocity observer AttitudeObserver* attitude_observer_; //!< Ideal Attitude observer + OrbitObserver* orbit_observer_; //!< Ideal Orbit observer // Mission Telescope* telescope_; //!< Telescope From cc4e1cfe499b9f9bfa65a3fdf07a34cab8fcae8d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 11:00:24 +0100 Subject: [PATCH 142/456] Add plot script for orbit observer --- scripts/Plot/plot_orbit_observer.py | 126 ++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 scripts/Plot/plot_orbit_observer.py diff --git a/scripts/Plot/plot_orbit_observer.py b/scripts/Plot/plot_orbit_observer.py new file mode 100644 index 000000000..b84c02830 --- /dev/null +++ b/scripts/Plot/plot_orbit_observer.py @@ -0,0 +1,126 @@ +# +# Plot orbit observer +# +# arg[1] : read_file_tag : time tag for default CSV output log file. ex. 220627_142946 +# + +# +# Import +# +# plots +import matplotlib.pyplot as plt +# numpy +import numpy as np +# local function +from common import find_latest_log_tag +from common import add_log_file_arguments +from common import read_3d_vector_from_csv +from common import read_scalar_from_csv +# arguments +import argparse + +# Arguments +aparser = argparse.ArgumentParser() +aparser = add_log_file_arguments(aparser) +aparser.add_argument('--no-gui', action='store_true') +args = aparser.parse_args() + +# +# Read Arguments +# +# log file path +path_to_logs = args.logs_dir + +read_file_tag = args.file_tag +if read_file_tag == None: + print("file tag does not found. use latest.") + read_file_tag = find_latest_log_tag(path_to_logs) + +print("log: " + read_file_tag) + +# +# CSV file name +# +read_file_name = path_to_logs + '/' + 'logs_' + read_file_tag + '/' + read_file_tag + '_default.csv' + +# +# Data read and edit +# +# Read S2E CSV +time = read_scalar_from_csv(read_file_name, 'elapsed_time[s]') + +measured_position_eci_m = read_3d_vector_from_csv(read_file_name, 'orbit_observer_position_i', 'm') +true_position_eci_m = read_3d_vector_from_csv(read_file_name, 'spacecraft_position_i', 'm') + +measured_velocity_eci_m_s = read_3d_vector_from_csv(read_file_name, 'orbit_observer_velocity_i', 'm/s') +true_velocity_eci_m_s = read_3d_vector_from_csv(read_file_name, 'spacecraft_velocity_i', 'm/s') + +# Statistics +position_error_m = measured_position_eci_m[:, 1:] - true_position_eci_m[:, 1:] +position_average = [0.0, 0.0, 0.0] +position_standard_deviation = [0.0, 0.0, 0.0] +velocity_error_m = measured_velocity_eci_m_s[:, 1:] - true_velocity_eci_m_s[:, 1:] +velocity_average = [0.0, 0.0, 0.0] +velocity_standard_deviation = [0.0, 0.0, 0.0] +for i in range(3): + position_average[i] = position_error_m[i].mean() + position_standard_deviation[i] = position_error_m[i].std() + velocity_average[i] = velocity_error_m[i].mean() + velocity_standard_deviation[i] = velocity_error_m[i].std() + +# +# Plot +# +unit = ' m' +fig, axis = plt.subplots(3, 1, squeeze = False, tight_layout = True, sharex = True) +axis[0, 0].plot(time[0], measured_position_eci_m[0], marker=".", c="red", label="MEASURED-X") +axis[0, 0].plot(time[0], true_position_eci_m[0], marker=".", c="orange", label="TRUE-X") +axis[0, 0].text(0.01, 0.99, "Error average:" + format(position_average[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) +axis[0, 0].text(0.01, 0.79, "Standard deviation:" + format(position_standard_deviation[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) +axis[0, 0].legend(loc = 'upper right') + +axis[1, 0].plot(time[0], measured_position_eci_m[1], marker=".", c="green", label="MEASURED-Y") +axis[1, 0].plot(time[0], true_position_eci_m[1], marker=".", c="yellow", label="TRUE-Y") +axis[1, 0].text(0.01, 0.99, "Error average:" + format(position_average[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) +axis[1, 0].text(0.01, 0.79, "Standard deviation:" + format(position_standard_deviation[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) +axis[1, 0].legend(loc = 'upper right') + +axis[2, 0].plot(time[0], measured_position_eci_m[2], marker=".", c="blue", label="MEASURED-Z") +axis[2, 0].plot(time[0], true_position_eci_m[2], marker=".", c="purple", label="TRUE-Z") +axis[2, 0].text(0.01, 0.99, "Error average:" + format(position_average[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) +axis[2, 0].text(0.01, 0.79, "Standard deviation:" + format(position_standard_deviation[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) +axis[2, 0].legend(loc = 'upper right') + +fig.suptitle("Orbit observer position results @ ECI") +fig.supylabel("Position [m]") +fig.supxlabel("Time [s]") + +unit = ' m/s' +fig, axis = plt.subplots(3, 1, squeeze = False, tight_layout = True, sharex = True) +axis[0, 0].plot(time[0], measured_velocity_eci_m_s[0], marker=".", c="red", label="MEASURED-X") +axis[0, 0].plot(time[0], true_velocity_eci_m_s[0], marker=".", c="orange", label="TRUE-X") +axis[0, 0].text(0.01, 0.99, "Error average:" + format(velocity_average[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) +axis[0, 0].text(0.01, 0.79, "Standard deviation:" + format(velocity_standard_deviation[0], '+.2e') + unit, verticalalignment = 'top', transform = axis[0, 0].transAxes) +axis[0, 0].legend(loc = 'upper right') + +axis[1, 0].plot(time[0], measured_velocity_eci_m_s[1], marker=".", c="green", label="MEASURED-Y") +axis[1, 0].plot(time[0], true_velocity_eci_m_s[1], marker=".", c="yellow", label="TRUE-Y") +axis[1, 0].text(0.01, 0.99, "Error average:" + format(velocity_average[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) +axis[1, 0].text(0.01, 0.79, "Standard deviation:" + format(velocity_standard_deviation[1], '+.2e') + unit, verticalalignment = 'top', transform = axis[1, 0].transAxes) +axis[1, 0].legend(loc = 'upper right') + +axis[2, 0].plot(time[0], measured_velocity_eci_m_s[2], marker=".", c="blue", label="MEASURED-Z") +axis[2, 0].plot(time[0], true_velocity_eci_m_s[2], marker=".", c="purple", label="TRUE-Z") +axis[2, 0].text(0.01, 0.99, "Error average:" + format(velocity_average[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) +axis[2, 0].text(0.01, 0.79, "Standard deviation:" + format(velocity_standard_deviation[2], '+.2e') + unit, verticalalignment = 'top', transform = axis[2, 0].transAxes) +axis[2, 0].legend(loc = 'upper right') + +fig.suptitle("Orbit observer velocity results @ ECI") +fig.supylabel("Velocity [m/s]") +fig.supxlabel("Time [s]") + +# Data save +if args.no_gui: + plt.savefig(read_file_tag + "_orbit_observer.png") # save last figure only +else: + plt.show() From e9dcc23fc192d9a794043216eb435d117b2c4912 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 11:01:08 +0100 Subject: [PATCH 143/456] Add log output for orbit observer --- src/simulation_sample/spacecraft/sample_components.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 1d997625f..ffe4023a5 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -221,4 +221,5 @@ void SampleComponents::LogSetup(Logger& logger) { logger.AddLogList(torque_generator_); logger.AddLogList(angular_velocity_observer_); logger.AddLogList(attitude_observer_); + logger.AddLogList(orbit_observer_); } From 095307c9088e0d4cb7a9b0dd942f2a99b7d6d11d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 11:32:20 +0100 Subject: [PATCH 144/456] Move external directory --- src/{library/external => external_libraries}/igrf/igrf.cpp | 0 src/{library/external => external_libraries}/igrf/igrf.h | 0 src/{library/external => external_libraries}/igrf/igrf11.coef | 0 src/{library/external => external_libraries}/igrf/igrf12.coef | 0 src/{library/external => external_libraries}/igrf/igrf13.coef | 0 src/{library/external => external_libraries}/inih/LICENSE.txt | 0 src/{library/external => external_libraries}/inih/README.md | 0 .../external => external_libraries}/inih/cpp/INIReader.cpp | 0 src/{library/external => external_libraries}/inih/cpp/INIReader.h | 0 src/{library/external => external_libraries}/inih/ini.c | 0 src/{library/external => external_libraries}/inih/ini.h | 0 .../nrlmsise00/wrapper_nrlmsise00.cpp | 0 .../nrlmsise00/wrapper_nrlmsise00.hpp | 0 src/{library/external => external_libraries}/sgp4/sgp4ext.cpp | 0 src/{library/external => external_libraries}/sgp4/sgp4ext.h | 0 src/{library/external => external_libraries}/sgp4/sgp4io.cpp | 0 src/{library/external => external_libraries}/sgp4/sgp4io.h | 0 src/{library/external => external_libraries}/sgp4/sgp4unit.cpp | 0 src/{library/external => external_libraries}/sgp4/sgp4unit.h | 0 19 files changed, 0 insertions(+), 0 deletions(-) rename src/{library/external => external_libraries}/igrf/igrf.cpp (100%) rename src/{library/external => external_libraries}/igrf/igrf.h (100%) rename src/{library/external => external_libraries}/igrf/igrf11.coef (100%) rename src/{library/external => external_libraries}/igrf/igrf12.coef (100%) rename src/{library/external => external_libraries}/igrf/igrf13.coef (100%) rename src/{library/external => external_libraries}/inih/LICENSE.txt (100%) rename src/{library/external => external_libraries}/inih/README.md (100%) rename src/{library/external => external_libraries}/inih/cpp/INIReader.cpp (100%) rename src/{library/external => external_libraries}/inih/cpp/INIReader.h (100%) rename src/{library/external => external_libraries}/inih/ini.c (100%) rename src/{library/external => external_libraries}/inih/ini.h (100%) rename src/{library/external => external_libraries}/nrlmsise00/wrapper_nrlmsise00.cpp (100%) rename src/{library/external => external_libraries}/nrlmsise00/wrapper_nrlmsise00.hpp (100%) rename src/{library/external => external_libraries}/sgp4/sgp4ext.cpp (100%) rename src/{library/external => external_libraries}/sgp4/sgp4ext.h (100%) rename src/{library/external => external_libraries}/sgp4/sgp4io.cpp (100%) rename src/{library/external => external_libraries}/sgp4/sgp4io.h (100%) rename src/{library/external => external_libraries}/sgp4/sgp4unit.cpp (100%) rename src/{library/external => external_libraries}/sgp4/sgp4unit.h (100%) diff --git a/src/library/external/igrf/igrf.cpp b/src/external_libraries/igrf/igrf.cpp similarity index 100% rename from src/library/external/igrf/igrf.cpp rename to src/external_libraries/igrf/igrf.cpp diff --git a/src/library/external/igrf/igrf.h b/src/external_libraries/igrf/igrf.h similarity index 100% rename from src/library/external/igrf/igrf.h rename to src/external_libraries/igrf/igrf.h diff --git a/src/library/external/igrf/igrf11.coef b/src/external_libraries/igrf/igrf11.coef similarity index 100% rename from src/library/external/igrf/igrf11.coef rename to src/external_libraries/igrf/igrf11.coef diff --git a/src/library/external/igrf/igrf12.coef b/src/external_libraries/igrf/igrf12.coef similarity index 100% rename from src/library/external/igrf/igrf12.coef rename to src/external_libraries/igrf/igrf12.coef diff --git a/src/library/external/igrf/igrf13.coef b/src/external_libraries/igrf/igrf13.coef similarity index 100% rename from src/library/external/igrf/igrf13.coef rename to src/external_libraries/igrf/igrf13.coef diff --git a/src/library/external/inih/LICENSE.txt b/src/external_libraries/inih/LICENSE.txt similarity index 100% rename from src/library/external/inih/LICENSE.txt rename to src/external_libraries/inih/LICENSE.txt diff --git a/src/library/external/inih/README.md b/src/external_libraries/inih/README.md similarity index 100% rename from src/library/external/inih/README.md rename to src/external_libraries/inih/README.md diff --git a/src/library/external/inih/cpp/INIReader.cpp b/src/external_libraries/inih/cpp/INIReader.cpp similarity index 100% rename from src/library/external/inih/cpp/INIReader.cpp rename to src/external_libraries/inih/cpp/INIReader.cpp diff --git a/src/library/external/inih/cpp/INIReader.h b/src/external_libraries/inih/cpp/INIReader.h similarity index 100% rename from src/library/external/inih/cpp/INIReader.h rename to src/external_libraries/inih/cpp/INIReader.h diff --git a/src/library/external/inih/ini.c b/src/external_libraries/inih/ini.c similarity index 100% rename from src/library/external/inih/ini.c rename to src/external_libraries/inih/ini.c diff --git a/src/library/external/inih/ini.h b/src/external_libraries/inih/ini.h similarity index 100% rename from src/library/external/inih/ini.h rename to src/external_libraries/inih/ini.h diff --git a/src/library/external/nrlmsise00/wrapper_nrlmsise00.cpp b/src/external_libraries/nrlmsise00/wrapper_nrlmsise00.cpp similarity index 100% rename from src/library/external/nrlmsise00/wrapper_nrlmsise00.cpp rename to src/external_libraries/nrlmsise00/wrapper_nrlmsise00.cpp diff --git a/src/library/external/nrlmsise00/wrapper_nrlmsise00.hpp b/src/external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp similarity index 100% rename from src/library/external/nrlmsise00/wrapper_nrlmsise00.hpp rename to src/external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp diff --git a/src/library/external/sgp4/sgp4ext.cpp b/src/external_libraries/sgp4/sgp4ext.cpp similarity index 100% rename from src/library/external/sgp4/sgp4ext.cpp rename to src/external_libraries/sgp4/sgp4ext.cpp diff --git a/src/library/external/sgp4/sgp4ext.h b/src/external_libraries/sgp4/sgp4ext.h similarity index 100% rename from src/library/external/sgp4/sgp4ext.h rename to src/external_libraries/sgp4/sgp4ext.h diff --git a/src/library/external/sgp4/sgp4io.cpp b/src/external_libraries/sgp4/sgp4io.cpp similarity index 100% rename from src/library/external/sgp4/sgp4io.cpp rename to src/external_libraries/sgp4/sgp4io.cpp diff --git a/src/library/external/sgp4/sgp4io.h b/src/external_libraries/sgp4/sgp4io.h similarity index 100% rename from src/library/external/sgp4/sgp4io.h rename to src/external_libraries/sgp4/sgp4io.h diff --git a/src/library/external/sgp4/sgp4unit.cpp b/src/external_libraries/sgp4/sgp4unit.cpp similarity index 100% rename from src/library/external/sgp4/sgp4unit.cpp rename to src/external_libraries/sgp4/sgp4unit.cpp diff --git a/src/library/external/sgp4/sgp4unit.h b/src/external_libraries/sgp4/sgp4unit.h similarity index 100% rename from src/library/external/sgp4/sgp4unit.h rename to src/external_libraries/sgp4/sgp4unit.h From 4829535d369241c1e45553b0650972d10b4d3130 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 11:34:51 +0100 Subject: [PATCH 145/456] Modify CMake for new external_libraries directory --- CMakeLists.txt | 1 + src/external_libraries/CMakeLists.txt | 17 +++++++++++++++++ src/library/CMakeLists.txt | 8 -------- 3 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 src/external_libraries/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 76b16fcea..02c901cbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ add_subdirectory(src/dynamics) add_subdirectory(src/disturbances) add_subdirectory(src/components) add_subdirectory(src/library) +add_subdirectory(src/external_libraries) set(SOURCE_FILES src/s2e.cpp diff --git a/src/external_libraries/CMakeLists.txt b/src/external_libraries/CMakeLists.txt new file mode 100644 index 000000000..f4eb84eb8 --- /dev/null +++ b/src/external_libraries/CMakeLists.txt @@ -0,0 +1,17 @@ +project(EXTERNAL_LIBRARY) +cmake_minimum_required(VERSION 3.13) + +add_library(${PROJECT_NAME} STATIC + igrf/igrf.cpp + + inih/ini.c + inih/cpp/INIReader.cpp + + nrlmsise00/wrapper_nrlmsise00.cpp + + sgp4/sgp4ext.cpp + sgp4/sgp4io.cpp + sgp4/sgp4unit.cpp +) + +include(../../common.cmake) diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index 3499c09e9..5e77ed32e 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -44,14 +44,6 @@ add_library(${PROJECT_NAME} STATIC time_system/epoch_time.cpp time_system/gps_time.cpp - external/igrf/igrf.cpp - external/inih/ini.c - external/inih/cpp/INIReader.cpp - external/nrlmsise00/wrapper_nrlmsise00.cpp - external/sgp4/sgp4ext.cpp - external/sgp4/sgp4io.cpp - external/sgp4/sgp4unit.cpp - utilities/endian.cpp utilities/slip.cpp utilities/quantization.cpp From 84a3dde83acc9891a752800f84c01a52e9b1a7fa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 11:48:44 +0100 Subject: [PATCH 146/456] Batch conversion to the new directory path --- CMakeLists.txt | 4 ++-- .../initialize_files/sample_local_environment.ini | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.hpp | 4 ++-- src/environment/global/earth_rotation.cpp | 4 ++-- src/environment/global/simulation_time.hpp | 6 +++--- src/environment/local/atmosphere.hpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/external_libraries/igrf/igrf.cpp | 12 ++++++------ src/library/geodesy/geodetic_position.cpp | 2 +- src/library/initialize/initialize_file_access.hpp | 2 +- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 02c901cbb..5ac90d779 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -178,13 +178,13 @@ endif() #target_link_libraries(${PROJECT_NAME} ${NRLMSISE00_LIB}) # Initialize link -target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) +target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY EXTERNAL_LIBRARY) target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION LIBRARY) target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) -target_link_libraries(LIBRARY ${NRLMSISE00_LIB}) +target_link_libraries(EXTERNAL_LIBRARY ${NRLMSISE00_LIB}) target_link_libraries(${PROJECT_NAME} DYNAMICS) target_link_libraries(${PROJECT_NAME} DISTURBANCE) diff --git a/data/sample/initialize_files/sample_local_environment.ini b/data/sample/initialize_files/sample_local_environment.ini index fce7453c5..ee7bc165a 100644 --- a/data/sample/initialize_files/sample_local_environment.ini +++ b/data/sample/initialize_files/sample_local_environment.ini @@ -1,7 +1,7 @@ [MAGNETIC_FIELD_ENVIRONMENT] calculation = ENABLE logging = ENABLE -coefficient_file = CORE_DIR_FROM_EXE/src/library/external/igrf/igrf13.coef +coefficient_file = CORE_DIR_FROM_EXE/src/external_libraries/igrf/igrf13.coef magnetic_field_random_walk_standard_deviation_nT = 10.0 magnetic_field_random_walk_limit_nT = 400.0 magnetic_field_white_noise_standard_deviation_nT = 50.0 diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index 3ed68fbf9..fb2e40110 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -6,8 +6,8 @@ #ifndef S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ #define S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ -#include -#include +#include +#include #include diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 2f8218dde..3032a12a6 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -11,8 +11,8 @@ #include #include -#include "library/external/sgp4/sgp4ext.h" // for jday() -#include "library/external/sgp4/sgp4unit.h" // for gstime() +#include "external_libraries/sgp4/sgp4ext.h" // for jday() +#include "external_libraries/sgp4/sgp4unit.h" // for gstime() #include "library/math/constants.hpp" // Default constructor diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index 26c407c7b..2861e2682 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -14,9 +14,9 @@ // #include #include -#include "library/external/sgp4/sgp4ext.h" -#include "library/external/sgp4/sgp4io.h" -#include "library/external/sgp4/sgp4unit.h" +#include "external_libraries/sgp4/sgp4ext.h" +#include "external_libraries/sgp4/sgp4io.h" +#include "external_libraries/sgp4/sgp4unit.h" #include "library/logger/loggable.hpp" /** diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 5e93cd719..8c8be9a7f 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -11,7 +11,7 @@ #include "dynamics/orbit/orbit.hpp" #include "environment/global/simulation_time.hpp" #include "environment/local/local_celestial_information.hpp" -#include "library/external/nrlmsise00/wrapper_nrlmsise00.hpp" +#include "external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp" #include "library/logger/loggable.hpp" #include "library/math/vector.hpp" diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index e45e04c69..62fcdb547 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -5,7 +5,7 @@ #include "geomagnetic_field.hpp" -#include "library/external/igrf/igrf.h" +#include "external_libraries/igrf/igrf.h" #include "library/initialize/initialize_file_access.hpp" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" diff --git a/src/external_libraries/igrf/igrf.cpp b/src/external_libraries/igrf/igrf.cpp index 92c0b25ce..f9e8ddca3 100644 --- a/src/external_libraries/igrf/igrf.cpp +++ b/src/external_libraries/igrf/igrf.cpp @@ -297,12 +297,12 @@ void gigrf(int gen, double year) { // char file[]="igrf10.coef"; // char path[] = "igrf11.coef"; // char file[] = "igrf11.coef"; - // char path[] = "src/library/external/igrf/igrf11.coef"; - // char file[] = "src/library/external/igrf/igrf11.coef"; - // char path[] = "../SatAttSim/src/library/external/igrf/igrf12.coef"; - // char file[] = "../SatAttSim/src/library/external/igrf/igrf12.coef"; - // char path[] = "../../SatAttSim/src/library/external/igrf/igrf13.coef"; //from 2020 - // char file[] = "../../SatAttSim/src/library/external/igrf/igrf13.coef"; //from 2020 + // char path[] = "src/external_libraries/igrf/igrf11.coef"; + // char file[] = "src/external_libraries/igrf/igrf11.coef"; + // char path[] = "../SatAttSim/src/external_libraries/igrf/igrf12.coef"; + // char file[] = "../SatAttSim/src/external_libraries/igrf/igrf12.coef"; + // char path[] = "../../SatAttSim/src/external_libraries/igrf/igrf13.coef"; //from 2020 + // char file[] = "../../SatAttSim/src/external_libraries/igrf/igrf13.coef"; //from 2020 char file[256]; diff --git a/src/library/geodesy/geodetic_position.cpp b/src/library/geodesy/geodetic_position.cpp index 1cb8c6abc..e3ac6725b 100644 --- a/src/library/geodesy/geodetic_position.cpp +++ b/src/library/geodesy/geodetic_position.cpp @@ -4,7 +4,7 @@ */ #include "geodetic_position.hpp" -#include // TODO: do not to use the functions in SGP4 library +#include // TODO: do not to use the functions in SGP4 library #include #include diff --git a/src/library/initialize/initialize_file_access.hpp b/src/library/initialize/initialize_file_access.hpp index 3d537b2ee..9b41cf545 100644 --- a/src/library/initialize/initialize_file_access.hpp +++ b/src/library/initialize/initialize_file_access.hpp @@ -17,7 +17,7 @@ #define NOMINMAX #include #else -#include +#include "../../external_libraries/inih/cpp/INIReader.h" #endif #include From 88e5abb8cf769b3602e99fe03406981511d780ad Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 13:52:42 +0100 Subject: [PATCH 147/456] Move library/initialize to src/ --- .../initialize => initial_setting_file}/c2a_command_database.cpp | 0 .../initialize => initial_setting_file}/c2a_command_database.hpp | 0 .../initialize_file_access.cpp | 0 .../initialize_file_access.hpp | 0 .../initialize => initial_setting_file}/wings_operation_file.cpp | 0 .../initialize => initial_setting_file}/wings_operation_file.hpp | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/{library/initialize => initial_setting_file}/c2a_command_database.cpp (100%) rename src/{library/initialize => initial_setting_file}/c2a_command_database.hpp (100%) rename src/{library/initialize => initial_setting_file}/initialize_file_access.cpp (100%) rename src/{library/initialize => initial_setting_file}/initialize_file_access.hpp (100%) rename src/{library/initialize => initial_setting_file}/wings_operation_file.cpp (100%) rename src/{library/initialize => initial_setting_file}/wings_operation_file.hpp (100%) diff --git a/src/library/initialize/c2a_command_database.cpp b/src/initial_setting_file/c2a_command_database.cpp similarity index 100% rename from src/library/initialize/c2a_command_database.cpp rename to src/initial_setting_file/c2a_command_database.cpp diff --git a/src/library/initialize/c2a_command_database.hpp b/src/initial_setting_file/c2a_command_database.hpp similarity index 100% rename from src/library/initialize/c2a_command_database.hpp rename to src/initial_setting_file/c2a_command_database.hpp diff --git a/src/library/initialize/initialize_file_access.cpp b/src/initial_setting_file/initialize_file_access.cpp similarity index 100% rename from src/library/initialize/initialize_file_access.cpp rename to src/initial_setting_file/initialize_file_access.cpp diff --git a/src/library/initialize/initialize_file_access.hpp b/src/initial_setting_file/initialize_file_access.hpp similarity index 100% rename from src/library/initialize/initialize_file_access.hpp rename to src/initial_setting_file/initialize_file_access.hpp diff --git a/src/library/initialize/wings_operation_file.cpp b/src/initial_setting_file/wings_operation_file.cpp similarity index 100% rename from src/library/initialize/wings_operation_file.cpp rename to src/initial_setting_file/wings_operation_file.cpp diff --git a/src/library/initialize/wings_operation_file.hpp b/src/initial_setting_file/wings_operation_file.hpp similarity index 100% rename from src/library/initialize/wings_operation_file.hpp rename to src/initial_setting_file/wings_operation_file.hpp From 7e132e1cf300cca4a7eb754f250fb880332a1d3f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:01:57 +0100 Subject: [PATCH 148/456] Batch conversion of include path to initial_setting_file --- CMakeLists.txt | 4 +++- src/components/base/sensor_template_functions.hpp | 2 +- src/components/ideal/angular_velocity_observer.cpp | 2 +- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ideal/force_generator.cpp | 2 +- src/components/ideal/torque_generator.cpp | 2 +- src/components/ports/power_port.cpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/components/real/aocs/gyro_sensor.cpp | 2 +- src/components/real/aocs/magnetometer.cpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 2 +- src/components/real/aocs/mtq_magnetometer_interference.cpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 2 +- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/communication/antenna.cpp | 2 +- .../real/communication/antenna_radiation_pattern.cpp | 2 +- .../real/communication/ground_station_calculator.cpp | 2 +- .../real/communication/wings_command_sender_to_c2a.cpp | 2 +- .../real/communication/wings_command_sender_to_c2a.hpp | 4 ++-- src/components/real/mission/telescope.cpp | 2 +- src/components/real/power/battery.cpp | 2 +- src/components/real/power/csv_scenario_interface.cpp | 2 +- src/components/real/power/pcu_initial_study.cpp | 2 +- src/components/real/power/solar_array_panel.cpp | 2 +- src/components/real/propulsion/simple_thruster.cpp | 2 +- src/disturbances/air_drag.cpp | 2 +- src/disturbances/disturbances.cpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/disturbances/solar_radiation_pressure_disturbance.cpp | 2 +- src/disturbances/third_body_gravity.cpp | 2 +- src/dynamics/attitude/initialize_attitude.cpp | 2 +- src/dynamics/orbit/initialize_orbit.cpp | 2 +- src/dynamics/thermal/temperature.cpp | 2 +- src/environment/global/celestial_information.cpp | 2 +- src/environment/global/global_environment.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/hipparcos_catalogue.cpp | 2 +- src/environment/global/simulation_time.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/environment/local/local_environment.cpp | 2 +- .../local/solar_radiation_pressure_environment.cpp | 2 +- src/initial_setting_file/initialize_file_access.cpp | 2 +- src/initial_setting_file/initialize_file_access.hpp | 2 +- src/library/CMakeLists.txt | 4 ---- src/library/logger/initialize_log.cpp | 2 +- src/simulation/case/simulation_case.cpp | 2 +- src/simulation/ground_station/ground_station.cpp | 2 +- .../initialize_monte_carlo_simulation.cpp | 2 +- src/simulation/spacecraft/structure/initialize_structure.cpp | 2 +- src/simulation/spacecraft/structure/structure.cpp | 2 +- .../ground_station/sample_ground_station_components.cpp | 2 +- src/simulation_sample/spacecraft/sample_components.cpp | 2 +- 57 files changed, 59 insertions(+), 61 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ac90d779..36f28c6c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,7 @@ add_subdirectory(src/disturbances) add_subdirectory(src/components) add_subdirectory(src/library) add_subdirectory(src/external_libraries) +add_subdirectory(src/initial_setting_file) set(SOURCE_FILES src/s2e.cpp @@ -178,13 +179,14 @@ endif() #target_link_libraries(${PROJECT_NAME} ${NRLMSISE00_LIB}) # Initialize link -target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY EXTERNAL_LIBRARY) +target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY INITIAL_SETTING_FILE) target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION LIBRARY) target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) target_link_libraries(EXTERNAL_LIBRARY ${NRLMSISE00_LIB}) +target_link_libraries(INITIAL_SETTING_FILE EXTERNAL_LIBRARY) target_link_libraries(${PROJECT_NAME} DYNAMICS) target_link_libraries(${PROJECT_NAME} DISTURBANCE) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 3c3f46cd5..d5cb9af55 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ #define S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ -#include +#include #include template diff --git a/src/components/ideal/angular_velocity_observer.cpp b/src/components/ideal/angular_velocity_observer.cpp index 48b076140..991bf879a 100644 --- a/src/components/ideal/angular_velocity_observer.cpp +++ b/src/components/ideal/angular_velocity_observer.cpp @@ -5,7 +5,7 @@ #include "angular_velocity_observer.hpp" -#include +#include AngularVelocityObserver::AngularVelocityObserver(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude) : Component(prescaler, clock_generator), Sensor(sensor_base), attitude_(attitude) {} diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 7ddaa1a0c..bd91b6962 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -5,7 +5,7 @@ #include "attitude_observer.hpp" -#include +#include #include AttitudeObserver::AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 8e7a610b9..22b92f109 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -6,7 +6,7 @@ #include "force_generator.hpp" #include -#include +#include // Constructor ForceGenerator::ForceGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index 5965fdc4e..70464dfee 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -6,7 +6,7 @@ #include "torque_generator.hpp" #include -#include +#include // Constructor TorqueGenerator::TorqueGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index d1456c10f..01eed7e73 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -6,7 +6,7 @@ #include "power_port.hpp" #include -#include +#include #include PowerPort::PowerPort() : kPortId(-1), current_limit_A_(10.0), minimum_voltage_V_(3.3), assumed_power_consumption_W_(0.0) { diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 23cc3c099..ce587e01b 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index b22f99e1f..beb32b7b5 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -5,7 +5,7 @@ #include "gyro_sensor.hpp" -#include +#include GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const libra::Quaternion& quaternion_b2c, const Dynamics* dynamics) diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index d6e44b9d1..f5c67beba 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -4,7 +4,7 @@ */ #include "magnetometer.hpp" -#include +#include #include Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index ab47dc6d1..946449154 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,7 +5,7 @@ #include "magnetorquer.hpp" -#include +#include #include #include #include diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index c854453bd..b45255a45 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -5,7 +5,7 @@ #include "mtq_magnetometer_interference.hpp" -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_name, Magnetometer& magnetometer, const Magnetorquer& magnetorquer, const size_t initialize_id) diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 47dfe3bc6..88dcdb64c 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 15c4033f6..e6c16b5fc 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,7 +6,7 @@ #include "star_sensor.hpp" #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index c10959a9e..42fa3fbe2 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -8,7 +8,7 @@ #include #include using libra::NormalRand; -#include +#include #include #include diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index 3941e1690..be67b2d84 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index e1812fe0f..96aa6d933 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -6,7 +6,7 @@ #include "antenna_radiation_pattern.hpp" #include -#include +#include #include AntennaRadiationPattern::AntennaRadiationPattern() { gain_dBi_.assign(length_theta_, std::vector(length_phi_, 0.0)); } diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 87a550529..4e24fa3b0 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -6,7 +6,7 @@ #include "ground_station_calculator.hpp" #include -#include +#include #include GroundStationCalculator::GroundStationCalculator(const double loss_polarization_dB, const double loss_atmosphere_dB, const double loss_rainfall_dB, diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index 2bb94ec0f..cfe8ea5a7 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -7,7 +7,7 @@ #include "wings_command_sender_to_c2a.hpp" -#include +#include #include #include diff --git a/src/components/real/communication/wings_command_sender_to_c2a.hpp b/src/components/real/communication/wings_command_sender_to_c2a.hpp index d70964826..60c35e3f6 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.hpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.hpp @@ -6,8 +6,8 @@ #ifndef S2E_COMPONENTS_REAL_COMMUNICATION_C2A_COMMAND_SENDER_HPP_ #define S2E_COMPONENTS_REAL_COMMUNICATION_C2A_COMMAND_SENDER_HPP_ -#include -#include +#include +#include #include "../../base/component.hpp" diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 21a8efb71..bb4f9d5eb 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include using namespace std; diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index 072f55fc5..e1090c860 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -6,7 +6,7 @@ #include "battery.hpp" #include -#include +#include Battery::Battery(const int prescaler, ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index 1ed72c3d7..588ae58c4 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -5,7 +5,7 @@ #include "csv_scenario_interface.hpp" -#include +#include bool CsvScenarioInterface::is_csv_scenario_enabled_; std::map CsvScenarioInterface::buffer_line_id_; diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index d7249bd11..8d3e5aacd 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include PcuInitialStudy::PcuInitialStudy(const int prescaler, ClockGenerator* clock_generator, const std::vector saps, Battery* battery, double component_step_time_s) diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index b693e36e6..c80e9bf5d 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 31078a501..eb0ae25c6 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -5,7 +5,7 @@ #include "simple_thruster.hpp" #include -#include +#include #include #include diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index df23967a7..f4a7da23c 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index 709200464..a5d096529 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -5,7 +5,7 @@ #include "disturbances.hpp" -#include +#include #include "air_drag.hpp" #include "geopotential.hpp" diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 39b3e4300..8d22b2b63 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include "../library/logger/log_utility.hpp" #include "../library/utilities/macros.hpp" diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 2efbd14a1..3756c60cb 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 26adc70ad..9eae7f0ff 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include "../library/logger/log_utility.hpp" #include "../library/utilities/macros.hpp" diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 8e9fe05b3..f21385379 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -5,7 +5,7 @@ #include "magnetic_disturbance.hpp" -#include +#include #include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index 711a52cec..275487a80 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -6,7 +6,7 @@ #include "solar_radiation_pressure_disturbance.hpp" #include -#include +#include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index b7ed2ed63..f6b3392a9 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -5,7 +5,7 @@ #include "third_body_gravity.hpp" -#include +#include ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), third_body_list_(third_body_list) { diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index ed0e00511..59630481a 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -4,7 +4,7 @@ */ #include "initialize_attitude.hpp" -#include +#include Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index c05b3f6bf..c2c7515f9 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -4,7 +4,7 @@ */ #include "initialize_orbit.hpp" -#include +#include #include "encke_orbit_propagation.hpp" #include "kepler_orbit_propagation.hpp" diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 9b1b37d89..a09c241ca 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include using namespace std; diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index 9e7a2c71a..c22e4944a 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -15,7 +15,7 @@ #include #include -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" CelestialInformation::CelestialInformation(const std::string inertial_frame_name, const std::string aberration_correction_setting, diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index cce9a8442..117817859 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -5,7 +5,7 @@ #include "global_environment.hpp" -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" GlobalEnvironment::GlobalEnvironment(const SimulationConfiguration* simulation_configuration) { Initialize(simulation_configuration); } diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 7892b1e0e..ce5076a30 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,7 +9,7 @@ #include #include "environment/global/physical_constants.hpp" -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 0ea5de6d0..dcf3a4cba 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -11,7 +11,7 @@ #include #include -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/math/constants.hpp" HipparcosCatalogue::HipparcosCatalogue(double max_magnitude, std::string catalogue_path) diff --git a/src/environment/global/simulation_time.cpp b/src/environment/global/simulation_time.cpp index 5872ad1c1..5fa6ef6f6 100644 --- a/src/environment/global/simulation_time.cpp +++ b/src/environment/global/simulation_time.cpp @@ -12,7 +12,7 @@ #include #include -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #ifdef WIN32 #include #else diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 5d57621af..1c3c84ad8 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -7,7 +7,7 @@ #include "library/atmosphere/harris_priester_model.hpp" #include "library/atmosphere/simple_air_density_model.hpp" -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/vector.hpp" #include "library/randomization/global_randomization.hpp" diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 62fcdb547..7c9849920 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -6,7 +6,7 @@ #include "geomagnetic_field.hpp" #include "external_libraries/igrf/igrf.h" -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" #include "library/randomization/random_walk.hpp" diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index dba52989c..030ac57bb 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -6,7 +6,7 @@ #include "dynamics/attitude/attitude.hpp" #include "dynamics/orbit/orbit.hpp" -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 8f5859e1e..cec8e17e3 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,7 +8,7 @@ #include #include -#include "library/initialize/initialize_file_access.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/math/vector.hpp" diff --git a/src/initial_setting_file/initialize_file_access.cpp b/src/initial_setting_file/initialize_file_access.cpp index b05e31e98..10cc19eca 100644 --- a/src/initial_setting_file/initialize_file_access.cpp +++ b/src/initial_setting_file/initialize_file_access.cpp @@ -12,7 +12,7 @@ #include #include -#include "../utilities/macros.hpp" +#include "../library/utilities/macros.hpp" #ifdef WIN32 IniAccess::IniAccess(const std::string file_path) : file_path_(file_path) { diff --git a/src/initial_setting_file/initialize_file_access.hpp b/src/initial_setting_file/initialize_file_access.hpp index 9b41cf545..164085abe 100644 --- a/src/initial_setting_file/initialize_file_access.hpp +++ b/src/initial_setting_file/initialize_file_access.hpp @@ -17,7 +17,7 @@ #define NOMINMAX #include #else -#include "../../external_libraries/inih/cpp/INIReader.h" +#include "../external_libraries/inih/cpp/INIReader.h" #endif #include diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index 5e77ed32e..f012ed23e 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -12,10 +12,6 @@ add_library(${PROJECT_NAME} STATIC gnss/antex_file_reader.cpp gnss/bias_sinex_file_reader.cpp - initialize/initialize_file_access.cpp - initialize/c2a_command_database.cpp - initialize/wings_operation_file.cpp - logger/logger.cpp logger/initialize_log.cpp diff --git a/src/library/logger/initialize_log.cpp b/src/library/logger/initialize_log.cpp index 74f8b377e..1d9c35c9f 100644 --- a/src/library/logger/initialize_log.cpp +++ b/src/library/logger/initialize_log.cpp @@ -5,7 +5,7 @@ #include "initialize_log.hpp" -#include +#include "../../initial_setting_file/initialize_file_access.hpp" Logger* InitLog(std::string file_name) { IniAccess ini_file(file_name); diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index 334514a94..3118c4300 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -5,7 +5,7 @@ #include "simulation_case.hpp" -#include +#include #include #include diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index cac7332f2..878001927 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,7 +6,7 @@ #include "ground_station.hpp" #include -#include +#include #include #include #include diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp index dbe10646b..03e50263e 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp @@ -6,7 +6,7 @@ #include "initialize_monte_carlo_simulation.hpp" #include -#include +#include #define MAX_CHAR_NUM 256 diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 3ad332234..04e7dc345 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -5,7 +5,7 @@ #include "initialize_structure.hpp" -#include +#include #include #define MIN_VAL 1e-6 diff --git a/src/simulation/spacecraft/structure/structure.cpp b/src/simulation/spacecraft/structure/structure.cpp index b16de8b09..0fa340d4e 100644 --- a/src/simulation/spacecraft/structure/structure.cpp +++ b/src/simulation/spacecraft/structure/structure.cpp @@ -5,7 +5,7 @@ #include "structure.hpp" -#include +#include #include Structure::Structure(const SimulationConfiguration* simulation_configuration, const int spacecraft_id) { diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.cpp b/src/simulation_sample/ground_station/sample_ground_station_components.cpp index 53d5e67f3..6fa089bd7 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.cpp @@ -4,7 +4,7 @@ */ #include "sample_ground_station_components.hpp" -#include +#include SampleGsComponents::SampleGsComponents(const SimulationConfiguration* configuration) : configuration_(configuration) { IniAccess iniAccess = IniAccess(configuration_->ground_station_file_list_[0]); diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index d529d040a..e2ead253b 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -5,7 +5,7 @@ #include "sample_components.hpp" -#include +#include #include "sample_port_configuration.hpp" From d1f32b94b1cd6734b9747592937a1b4824ffd28f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:02:11 +0100 Subject: [PATCH 149/456] Add CMakeLists --- src/initial_setting_file/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/initial_setting_file/CMakeLists.txt diff --git a/src/initial_setting_file/CMakeLists.txt b/src/initial_setting_file/CMakeLists.txt new file mode 100644 index 000000000..ffd27e9fd --- /dev/null +++ b/src/initial_setting_file/CMakeLists.txt @@ -0,0 +1,10 @@ +project(INITIAL_SETTING_FILE) +cmake_minimum_required(VERSION 3.13) + +add_library(${PROJECT_NAME} STATIC + initialize_file_access.cpp + c2a_command_database.cpp + wings_operation_file.cpp +) + +include(../../common.cmake) From 99bd7f2d3f0b33f9a22eb05b802b6de3307bed7c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:16:02 +0100 Subject: [PATCH 150/456] Move library/logger directory --- src/{library => }/logger/initialize_log.cpp | 0 src/{library => }/logger/initialize_log.hpp | 0 src/{library => }/logger/log_utility.hpp | 0 src/{library => }/logger/loggable.hpp | 0 src/{library => }/logger/logger.cpp | 0 src/{library => }/logger/logger.hpp | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/{library => }/logger/initialize_log.cpp (100%) rename src/{library => }/logger/initialize_log.hpp (100%) rename src/{library => }/logger/log_utility.hpp (100%) rename src/{library => }/logger/loggable.hpp (100%) rename src/{library => }/logger/logger.cpp (100%) rename src/{library => }/logger/logger.hpp (100%) diff --git a/src/library/logger/initialize_log.cpp b/src/logger/initialize_log.cpp similarity index 100% rename from src/library/logger/initialize_log.cpp rename to src/logger/initialize_log.cpp diff --git a/src/library/logger/initialize_log.hpp b/src/logger/initialize_log.hpp similarity index 100% rename from src/library/logger/initialize_log.hpp rename to src/logger/initialize_log.hpp diff --git a/src/library/logger/log_utility.hpp b/src/logger/log_utility.hpp similarity index 100% rename from src/library/logger/log_utility.hpp rename to src/logger/log_utility.hpp diff --git a/src/library/logger/loggable.hpp b/src/logger/loggable.hpp similarity index 100% rename from src/library/logger/loggable.hpp rename to src/logger/loggable.hpp diff --git a/src/library/logger/logger.cpp b/src/logger/logger.cpp similarity index 100% rename from src/library/logger/logger.cpp rename to src/logger/logger.cpp diff --git a/src/library/logger/logger.hpp b/src/logger/logger.hpp similarity index 100% rename from src/library/logger/logger.hpp rename to src/logger/logger.hpp From 99beed7415539e3695a213ce00056b5bf0025ffa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:24:34 +0100 Subject: [PATCH 151/456] Fix format --- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.hpp | 4 ++-- src/environment/local/atmosphere.cpp | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index ce587e01b..c330abe2f 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -6,8 +6,8 @@ #include "gnss_receiver.hpp" #include -#include #include +#include #include #include diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 88dcdb64c..851e8f27c 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -5,8 +5,8 @@ #include "reaction_wheel.hpp" #include -#include #include +#include #include #include #include diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 8d22b2b63..623378d7e 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include #include "../library/logger/log_utility.hpp" #include "../library/utilities/macros.hpp" diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 9eae7f0ff..5719d45a3 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include #include "../library/logger/log_utility.hpp" #include "../library/utilities/macros.hpp" diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index fb2e40110..4b7f1a216 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -41,8 +41,8 @@ class Sgp4OrbitPropagation : public Orbit { virtual void Propagate(const double end_time_s, const double current_time_jd); private: - gravconsttype gravity_constant_setting_; //!< Gravity constant value type - elsetrec sgp4_data_; //!< Structure data for SGP4 library + gravconsttype gravity_constant_setting_; //!< Gravity constant value type + elsetrec sgp4_data_; //!< Structure data for SGP4 library }; #endif // S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 1c3c84ad8..ae08129fa 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -5,9 +5,9 @@ #include "atmosphere.hpp" +#include "initial_setting_file/initialize_file_access.hpp" #include "library/atmosphere/harris_priester_model.hpp" #include "library/atmosphere/simple_air_density_model.hpp" -#include "initial_setting_file/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/vector.hpp" #include "library/randomization/global_randomization.hpp" From 80814dd7cb9c85626dab1df2ba90077d10067d5e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:28:15 +0100 Subject: [PATCH 152/456] Rename initiali_setting_file to setting_file_reader --- src/{initial_setting_file => setting_file_reader}/CMakeLists.txt | 0 .../c2a_command_database.cpp | 0 .../c2a_command_database.hpp | 0 .../initialize_file_access.cpp | 0 .../initialize_file_access.hpp | 0 .../wings_operation_file.cpp | 0 .../wings_operation_file.hpp | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename src/{initial_setting_file => setting_file_reader}/CMakeLists.txt (100%) rename src/{initial_setting_file => setting_file_reader}/c2a_command_database.cpp (100%) rename src/{initial_setting_file => setting_file_reader}/c2a_command_database.hpp (100%) rename src/{initial_setting_file => setting_file_reader}/initialize_file_access.cpp (100%) rename src/{initial_setting_file => setting_file_reader}/initialize_file_access.hpp (100%) rename src/{initial_setting_file => setting_file_reader}/wings_operation_file.cpp (100%) rename src/{initial_setting_file => setting_file_reader}/wings_operation_file.hpp (100%) diff --git a/src/initial_setting_file/CMakeLists.txt b/src/setting_file_reader/CMakeLists.txt similarity index 100% rename from src/initial_setting_file/CMakeLists.txt rename to src/setting_file_reader/CMakeLists.txt diff --git a/src/initial_setting_file/c2a_command_database.cpp b/src/setting_file_reader/c2a_command_database.cpp similarity index 100% rename from src/initial_setting_file/c2a_command_database.cpp rename to src/setting_file_reader/c2a_command_database.cpp diff --git a/src/initial_setting_file/c2a_command_database.hpp b/src/setting_file_reader/c2a_command_database.hpp similarity index 100% rename from src/initial_setting_file/c2a_command_database.hpp rename to src/setting_file_reader/c2a_command_database.hpp diff --git a/src/initial_setting_file/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp similarity index 100% rename from src/initial_setting_file/initialize_file_access.cpp rename to src/setting_file_reader/initialize_file_access.cpp diff --git a/src/initial_setting_file/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp similarity index 100% rename from src/initial_setting_file/initialize_file_access.hpp rename to src/setting_file_reader/initialize_file_access.hpp diff --git a/src/initial_setting_file/wings_operation_file.cpp b/src/setting_file_reader/wings_operation_file.cpp similarity index 100% rename from src/initial_setting_file/wings_operation_file.cpp rename to src/setting_file_reader/wings_operation_file.cpp diff --git a/src/initial_setting_file/wings_operation_file.hpp b/src/setting_file_reader/wings_operation_file.hpp similarity index 100% rename from src/initial_setting_file/wings_operation_file.hpp rename to src/setting_file_reader/wings_operation_file.hpp From 08c866a85eea32f63910dac6eb709584e41cb8c5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:31:04 +0100 Subject: [PATCH 153/456] Batch conversion to new name --- CMakeLists.txt | 6 +++--- src/components/base/sensor_template_functions.hpp | 2 +- src/components/ideal/angular_velocity_observer.cpp | 2 +- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ideal/force_generator.cpp | 2 +- src/components/ideal/torque_generator.cpp | 2 +- src/components/ports/power_port.cpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/components/real/aocs/gyro_sensor.cpp | 2 +- src/components/real/aocs/magnetometer.cpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 2 +- src/components/real/aocs/mtq_magnetometer_interference.cpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 2 +- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/communication/antenna.cpp | 2 +- .../real/communication/antenna_radiation_pattern.cpp | 2 +- .../real/communication/ground_station_calculator.cpp | 2 +- .../real/communication/wings_command_sender_to_c2a.cpp | 2 +- .../real/communication/wings_command_sender_to_c2a.hpp | 4 ++-- src/components/real/mission/telescope.cpp | 2 +- src/components/real/power/battery.cpp | 2 +- src/components/real/power/csv_scenario_interface.cpp | 2 +- src/components/real/power/pcu_initial_study.cpp | 2 +- src/components/real/power/solar_array_panel.cpp | 2 +- src/components/real/propulsion/simple_thruster.cpp | 2 +- src/disturbances/air_drag.cpp | 2 +- src/disturbances/disturbances.cpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/disturbances/solar_radiation_pressure_disturbance.cpp | 2 +- src/disturbances/third_body_gravity.cpp | 2 +- src/dynamics/attitude/initialize_attitude.cpp | 2 +- src/dynamics/orbit/initialize_orbit.cpp | 2 +- src/dynamics/thermal/temperature.cpp | 2 +- src/environment/global/celestial_information.cpp | 2 +- src/environment/global/global_environment.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/hipparcos_catalogue.cpp | 2 +- src/environment/global/simulation_time.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/environment/local/local_environment.cpp | 2 +- .../local/solar_radiation_pressure_environment.cpp | 2 +- src/library/logger/initialize_log.cpp | 2 +- src/setting_file_reader/CMakeLists.txt | 2 +- src/simulation/case/simulation_case.cpp | 2 +- src/simulation/ground_station/ground_station.cpp | 2 +- .../initialize_monte_carlo_simulation.cpp | 2 +- .../spacecraft/structure/initialize_structure.cpp | 2 +- src/simulation/spacecraft/structure/structure.cpp | 2 +- .../ground_station/sample_ground_station_components.cpp | 2 +- src/simulation_sample/spacecraft/sample_components.cpp | 2 +- 55 files changed, 58 insertions(+), 58 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 36f28c6c4..3a3805f87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,7 +90,7 @@ add_subdirectory(src/disturbances) add_subdirectory(src/components) add_subdirectory(src/library) add_subdirectory(src/external_libraries) -add_subdirectory(src/initial_setting_file) +add_subdirectory(src/setting_file_reader) set(SOURCE_FILES src/s2e.cpp @@ -179,14 +179,14 @@ endif() #target_link_libraries(${PROJECT_NAME} ${NRLMSISE00_LIB}) # Initialize link -target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY INITIAL_SETTING_FILE) +target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY SETTING_FILE_READER) target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION LIBRARY) target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) target_link_libraries(EXTERNAL_LIBRARY ${NRLMSISE00_LIB}) -target_link_libraries(INITIAL_SETTING_FILE EXTERNAL_LIBRARY) +target_link_libraries(SETTING_FILE_READER EXTERNAL_LIBRARY) target_link_libraries(${PROJECT_NAME} DYNAMICS) target_link_libraries(${PROJECT_NAME} DISTURBANCE) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index d5cb9af55..2ec0b1636 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ #define S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ -#include +#include #include template diff --git a/src/components/ideal/angular_velocity_observer.cpp b/src/components/ideal/angular_velocity_observer.cpp index 991bf879a..6ff33272f 100644 --- a/src/components/ideal/angular_velocity_observer.cpp +++ b/src/components/ideal/angular_velocity_observer.cpp @@ -5,7 +5,7 @@ #include "angular_velocity_observer.hpp" -#include +#include AngularVelocityObserver::AngularVelocityObserver(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude) : Component(prescaler, clock_generator), Sensor(sensor_base), attitude_(attitude) {} diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index bd91b6962..2cc36ce27 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -5,7 +5,7 @@ #include "attitude_observer.hpp" -#include +#include #include AttitudeObserver::AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 22b92f109..13efaa32b 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -6,7 +6,7 @@ #include "force_generator.hpp" #include -#include +#include // Constructor ForceGenerator::ForceGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index 70464dfee..a2adb097c 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -6,7 +6,7 @@ #include "torque_generator.hpp" #include -#include +#include // Constructor TorqueGenerator::TorqueGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index 01eed7e73..ca929231f 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -6,7 +6,7 @@ #include "power_port.hpp" #include -#include +#include #include PowerPort::PowerPort() : kPortId(-1), current_limit_A_(10.0), minimum_voltage_V_(3.3), assumed_power_consumption_W_(0.0) { diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index c330abe2f..04fef300b 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -6,7 +6,7 @@ #include "gnss_receiver.hpp" #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index beb32b7b5..5df3751f3 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -5,7 +5,7 @@ #include "gyro_sensor.hpp" -#include +#include GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const libra::Quaternion& quaternion_b2c, const Dynamics* dynamics) diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index f5c67beba..cc17c01cf 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -4,7 +4,7 @@ */ #include "magnetometer.hpp" -#include +#include #include Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 946449154..536d99345 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,7 +5,7 @@ #include "magnetorquer.hpp" -#include +#include #include #include #include diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index b45255a45..617cec6d3 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -5,7 +5,7 @@ #include "mtq_magnetometer_interference.hpp" -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_name, Magnetometer& magnetometer, const Magnetorquer& magnetorquer, const size_t initialize_id) diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 851e8f27c..91f389264 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -5,7 +5,7 @@ #include "reaction_wheel.hpp" #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index e6c16b5fc..6f36ba703 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,7 +6,7 @@ #include "star_sensor.hpp" #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 42fa3fbe2..97408854d 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -8,7 +8,7 @@ #include #include using libra::NormalRand; -#include +#include #include #include diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index be67b2d84..5d851e104 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index 96aa6d933..b3d448df2 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -6,7 +6,7 @@ #include "antenna_radiation_pattern.hpp" #include -#include +#include #include AntennaRadiationPattern::AntennaRadiationPattern() { gain_dBi_.assign(length_theta_, std::vector(length_phi_, 0.0)); } diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 4e24fa3b0..7beb5dfce 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -6,7 +6,7 @@ #include "ground_station_calculator.hpp" #include -#include +#include #include GroundStationCalculator::GroundStationCalculator(const double loss_polarization_dB, const double loss_atmosphere_dB, const double loss_rainfall_dB, diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index cfe8ea5a7..4c74b4bab 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -7,7 +7,7 @@ #include "wings_command_sender_to_c2a.hpp" -#include +#include #include #include diff --git a/src/components/real/communication/wings_command_sender_to_c2a.hpp b/src/components/real/communication/wings_command_sender_to_c2a.hpp index 60c35e3f6..1ae74b1c1 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.hpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.hpp @@ -6,8 +6,8 @@ #ifndef S2E_COMPONENTS_REAL_COMMUNICATION_C2A_COMMAND_SENDER_HPP_ #define S2E_COMPONENTS_REAL_COMMUNICATION_C2A_COMMAND_SENDER_HPP_ -#include -#include +#include +#include #include "../../base/component.hpp" diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index bb4f9d5eb..46aa3f39c 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include using namespace std; diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index e1090c860..f647fb940 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -6,7 +6,7 @@ #include "battery.hpp" #include -#include +#include Battery::Battery(const int prescaler, ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index 588ae58c4..2f30e38a6 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -5,7 +5,7 @@ #include "csv_scenario_interface.hpp" -#include +#include bool CsvScenarioInterface::is_csv_scenario_enabled_; std::map CsvScenarioInterface::buffer_line_id_; diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index 8d3e5aacd..77f6fda37 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include PcuInitialStudy::PcuInitialStudy(const int prescaler, ClockGenerator* clock_generator, const std::vector saps, Battery* battery, double component_step_time_s) diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index c80e9bf5d..3ea0df5e9 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index eb0ae25c6..d2c09b4cb 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -5,7 +5,7 @@ #include "simple_thruster.hpp" #include -#include +#include #include #include diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index f4a7da23c..5e90e5942 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index a5d096529..682790896 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -5,7 +5,7 @@ #include "disturbances.hpp" -#include +#include #include "air_drag.hpp" #include "geopotential.hpp" diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 623378d7e..72ddc9265 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 3756c60cb..f06b4c5a5 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 5719d45a3..4354dae0c 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index f21385379..d49b547a7 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -5,7 +5,7 @@ #include "magnetic_disturbance.hpp" -#include +#include #include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index 275487a80..bb161b085 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -6,7 +6,7 @@ #include "solar_radiation_pressure_disturbance.hpp" #include -#include +#include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index f6b3392a9..86917898d 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -5,7 +5,7 @@ #include "third_body_gravity.hpp" -#include +#include ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), third_body_list_(third_body_list) { diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 59630481a..da7fd02ab 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -4,7 +4,7 @@ */ #include "initialize_attitude.hpp" -#include +#include Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index c2c7515f9..4ab11afdb 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -4,7 +4,7 @@ */ #include "initialize_orbit.hpp" -#include +#include #include "encke_orbit_propagation.hpp" #include "kepler_orbit_propagation.hpp" diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index a09c241ca..02a83292a 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include using namespace std; diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index c22e4944a..633f08daa 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -15,7 +15,7 @@ #include #include -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" CelestialInformation::CelestialInformation(const std::string inertial_frame_name, const std::string aberration_correction_setting, diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 117817859..0e89b2346 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -5,7 +5,7 @@ #include "global_environment.hpp" -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" GlobalEnvironment::GlobalEnvironment(const SimulationConfiguration* simulation_configuration) { Initialize(simulation_configuration); } diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index ce5076a30..68a191483 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,7 +9,7 @@ #include #include "environment/global/physical_constants.hpp" -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index dcf3a4cba..9b966fe73 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -11,7 +11,7 @@ #include #include -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #include "library/math/constants.hpp" HipparcosCatalogue::HipparcosCatalogue(double max_magnitude, std::string catalogue_path) diff --git a/src/environment/global/simulation_time.cpp b/src/environment/global/simulation_time.cpp index 5fa6ef6f6..149b88f42 100644 --- a/src/environment/global/simulation_time.cpp +++ b/src/environment/global/simulation_time.cpp @@ -12,7 +12,7 @@ #include #include -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #ifdef WIN32 #include #else diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index ae08129fa..c226f5ddb 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -5,7 +5,7 @@ #include "atmosphere.hpp" -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #include "library/atmosphere/harris_priester_model.hpp" #include "library/atmosphere/simple_air_density_model.hpp" #include "library/logger/log_utility.hpp" diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 7c9849920..0970c99b9 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -6,7 +6,7 @@ #include "geomagnetic_field.hpp" #include "external_libraries/igrf/igrf.h" -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" #include "library/randomization/random_walk.hpp" diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index 030ac57bb..bf1cf7b5a 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -6,7 +6,7 @@ #include "dynamics/attitude/attitude.hpp" #include "dynamics/orbit/orbit.hpp" -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index cec8e17e3..bf980bfbf 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,7 +8,7 @@ #include #include -#include "initial_setting_file/initialize_file_access.hpp" +#include "setting_file_reader/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/math/vector.hpp" diff --git a/src/library/logger/initialize_log.cpp b/src/library/logger/initialize_log.cpp index 1d9c35c9f..b74aa4dd6 100644 --- a/src/library/logger/initialize_log.cpp +++ b/src/library/logger/initialize_log.cpp @@ -5,7 +5,7 @@ #include "initialize_log.hpp" -#include "../../initial_setting_file/initialize_file_access.hpp" +#include "../../setting_file_reader/initialize_file_access.hpp" Logger* InitLog(std::string file_name) { IniAccess ini_file(file_name); diff --git a/src/setting_file_reader/CMakeLists.txt b/src/setting_file_reader/CMakeLists.txt index ffd27e9fd..898d3e0fa 100644 --- a/src/setting_file_reader/CMakeLists.txt +++ b/src/setting_file_reader/CMakeLists.txt @@ -1,4 +1,4 @@ -project(INITIAL_SETTING_FILE) +project(SETTING_FILE_READER) cmake_minimum_required(VERSION 3.13) add_library(${PROJECT_NAME} STATIC diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index 3118c4300..0d9e8a0c2 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -5,7 +5,7 @@ #include "simulation_case.hpp" -#include +#include #include #include diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 878001927..733afdc9e 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,7 +6,7 @@ #include "ground_station.hpp" #include -#include +#include #include #include #include diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp index 03e50263e..267859b9a 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp @@ -6,7 +6,7 @@ #include "initialize_monte_carlo_simulation.hpp" #include -#include +#include #define MAX_CHAR_NUM 256 diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 04e7dc345..f1c79b940 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -5,7 +5,7 @@ #include "initialize_structure.hpp" -#include +#include #include #define MIN_VAL 1e-6 diff --git a/src/simulation/spacecraft/structure/structure.cpp b/src/simulation/spacecraft/structure/structure.cpp index 0fa340d4e..bf4510005 100644 --- a/src/simulation/spacecraft/structure/structure.cpp +++ b/src/simulation/spacecraft/structure/structure.cpp @@ -5,7 +5,7 @@ #include "structure.hpp" -#include +#include #include Structure::Structure(const SimulationConfiguration* simulation_configuration, const int spacecraft_id) { diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.cpp b/src/simulation_sample/ground_station/sample_ground_station_components.cpp index 6fa089bd7..bf7fbdbb6 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.cpp @@ -4,7 +4,7 @@ */ #include "sample_ground_station_components.hpp" -#include +#include SampleGsComponents::SampleGsComponents(const SimulationConfiguration* configuration) : configuration_(configuration) { IniAccess iniAccess = IniAccess(configuration_->ground_station_file_list_[0]); diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index e2ead253b..8943d762d 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -5,7 +5,7 @@ #include "sample_components.hpp" -#include +#include #include "sample_port_configuration.hpp" From 9fb3de227c9a430415aa53d6095ec376987739a6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:35:52 +0100 Subject: [PATCH 154/456] Fix format --- src/components/base/sensor_template_functions.hpp | 2 +- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ports/power_port.cpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/components/real/aocs/magnetometer.cpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 2 +- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/communication/antenna.cpp | 2 +- src/components/real/communication/antenna_radiation_pattern.cpp | 2 +- src/components/real/communication/ground_station_calculator.cpp | 2 +- .../real/communication/wings_command_sender_to_c2a.cpp | 2 +- src/components/real/mission/telescope.cpp | 2 +- src/components/real/propulsion/simple_thruster.cpp | 2 +- src/disturbances/air_drag.cpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/dynamics/thermal/temperature.cpp | 2 +- src/environment/global/celestial_information.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/hipparcos_catalogue.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/environment/local/solar_radiation_pressure_environment.cpp | 2 +- src/simulation/case/simulation_case.cpp | 2 +- src/simulation/ground_station/ground_station.cpp | 2 +- src/simulation/spacecraft/structure/initialize_structure.cpp | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 2ec0b1636..73f2046e8 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -6,8 +6,8 @@ #ifndef S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ #define S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ -#include #include +#include template Sensor::Sensor(const libra::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 2cc36ce27..b920832f5 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -5,8 +5,8 @@ #include "attitude_observer.hpp" -#include #include +#include AttitudeObserver::AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, const Attitude& attitude) diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index ca929231f..fdeea6978 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -6,8 +6,8 @@ #include "power_port.hpp" #include -#include #include +#include PowerPort::PowerPort() : kPortId(-1), current_limit_A_(10.0), minimum_voltage_V_(3.3), assumed_power_consumption_W_(0.0) { is_on_ = true; // power on to work the component diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 04fef300b..55d832421 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -6,9 +6,9 @@ #include "gnss_receiver.hpp" #include -#include #include #include +#include #include GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index cc17c01cf..dfb2b23b4 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -4,8 +4,8 @@ */ #include "magnetometer.hpp" -#include #include +#include Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const libra::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 536d99345..9dbd0c7a7 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,11 +5,11 @@ #include "magnetorquer.hpp" -#include #include #include #include #include +#include Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, const libra::Matrix& scale_factor, diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 91f389264..3b6a3f58e 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -5,11 +5,11 @@ #include "reaction_wheel.hpp" #include -#include #include #include #include #include +#include ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 6f36ba703..294a9d158 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,11 +6,11 @@ #include "star_sensor.hpp" #include -#include #include #include #include #include +#include #include using namespace std; diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 97408854d..898e204ec 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -8,9 +8,9 @@ #include #include using libra::NormalRand; -#include #include #include +#include using namespace std; diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index 5d851e104..b0597ca41 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -8,8 +8,8 @@ #include #include -#include #include +#include Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index b3d448df2..b2f3f6277 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -6,8 +6,8 @@ #include "antenna_radiation_pattern.hpp" #include -#include #include +#include AntennaRadiationPattern::AntennaRadiationPattern() { gain_dBi_.assign(length_theta_, std::vector(length_phi_, 0.0)); } diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 7beb5dfce..5295ff7c7 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -6,8 +6,8 @@ #include "ground_station_calculator.hpp" #include -#include #include +#include GroundStationCalculator::GroundStationCalculator(const double loss_polarization_dB, const double loss_atmosphere_dB, const double loss_rainfall_dB, const double loss_others_dB, const double ebn0_dB, const double hardware_deterioration_dB, diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index 4c74b4bab..7e230bfa3 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -7,9 +7,9 @@ #include "wings_command_sender_to_c2a.hpp" -#include #include #include +#include #ifdef USE_C2A #include "src_core/c2a_core_main.h" diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 46aa3f39c..bd02b053a 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -7,8 +7,8 @@ #include #include -#include #include +#include using namespace std; using namespace libra; diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index d2c09b4cb..c133a8eb2 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -5,9 +5,9 @@ #include "simple_thruster.hpp" #include -#include #include #include +#include // Constructor SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, const int component_id, diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 5e90e5942..921f4ade3 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -7,8 +7,8 @@ #include #include -#include #include +#include #include "../library/logger/log_utility.hpp" diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 72ddc9265..9ae05e4eb 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include #include "../library/logger/log_utility.hpp" #include "../library/utilities/macros.hpp" diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 4354dae0c..0cc08d9c2 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include #include "../library/logger/log_utility.hpp" #include "../library/utilities/macros.hpp" diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index d49b547a7..4e5563740 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -5,8 +5,8 @@ #include "magnetic_disturbance.hpp" -#include #include +#include #include "../library/logger/log_utility.hpp" #include "../library/randomization/global_randomization.hpp" diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 02a83292a..b0f73fb90 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include using namespace std; diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index 633f08daa..d69610c76 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -15,8 +15,8 @@ #include #include -#include "setting_file_reader/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" +#include "setting_file_reader/initialize_file_access.hpp" CelestialInformation::CelestialInformation(const std::string inertial_frame_name, const std::string aberration_correction_setting, const std::string center_body_name, const unsigned int number_of_selected_body, int* selected_body_ids, diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 68a191483..90afdee6f 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,11 +9,11 @@ #include #include "environment/global/physical_constants.hpp" -#include "setting_file_reader/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" #include "library/utilities/macros.hpp" +#include "setting_file_reader/initialize_file_access.hpp" const size_t kNumberOfInterpolation = 9; diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 9b966fe73..33b281cad 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -11,8 +11,8 @@ #include #include -#include "setting_file_reader/initialize_file_access.hpp" #include "library/math/constants.hpp" +#include "setting_file_reader/initialize_file_access.hpp" HipparcosCatalogue::HipparcosCatalogue(double max_magnitude, std::string catalogue_path) : max_magnitude_(max_magnitude), catalogue_path_(catalogue_path) {} diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index c226f5ddb..5671b7c1c 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -5,7 +5,6 @@ #include "atmosphere.hpp" -#include "setting_file_reader/initialize_file_access.hpp" #include "library/atmosphere/harris_priester_model.hpp" #include "library/atmosphere/simple_air_density_model.hpp" #include "library/logger/log_utility.hpp" @@ -13,6 +12,7 @@ #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" #include "library/randomization/random_walk.hpp" +#include "setting_file_reader/initialize_file_access.hpp" Atmosphere::Atmosphere(const std::string model, const std::string space_weather_file_name, const double gauss_standard_deviation_rate, const bool is_manual_param, const double manual_f107, const double manual_f107a, const double manual_ap, diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 0970c99b9..b5c1ea0fc 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -6,10 +6,10 @@ #include "geomagnetic_field.hpp" #include "external_libraries/igrf/igrf.h" -#include "setting_file_reader/initialize_file_access.hpp" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" #include "library/randomization/random_walk.hpp" +#include "setting_file_reader/initialize_file_access.hpp" GeomagneticField::GeomagneticField(const std::string igrf_file_name, const double random_walk_srandard_deviation_nT, const double random_walk_limit_nT, const double white_noise_standard_deviation_nT) diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index bf980bfbf..8b1e3d67f 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,10 +8,10 @@ #include #include -#include "setting_file_reader/initialize_file_access.hpp" #include "library/logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/math/vector.hpp" +#include "setting_file_reader/initialize_file_access.hpp" SolarRadiationPressureEnvironment::SolarRadiationPressureEnvironment(LocalCelestialInformation* local_celestial_information) : local_celestial_information_(local_celestial_information) { diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index 0d9e8a0c2..bcbb69291 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -5,8 +5,8 @@ #include "simulation_case.hpp" -#include #include +#include #include SimulationCase::SimulationCase(const std::string initialize_base_file) { diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 733afdc9e..89d53314f 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,11 +6,11 @@ #include "ground_station.hpp" #include -#include #include #include #include #include +#include #include GroundStation::GroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id) diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index f1c79b940..1386cdf0a 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -5,8 +5,8 @@ #include "initialize_structure.hpp" -#include #include +#include #define MIN_VAL 1e-6 KinematicsParameters InitKinematicsParameters(std::string file_name) { From 8452de77f785aa0108c560334391abdd13843fcf Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:42:36 +0100 Subject: [PATCH 155/456] Batch conversion of include path of logger --- CMakeLists.txt | 3 ++- src/components/examples/example_change_structure.hpp | 2 +- src/components/ideal/angular_velocity_observer.hpp | 2 +- src/components/ideal/attitude_observer.hpp | 2 +- src/components/ideal/force_generator.hpp | 2 +- src/components/ideal/torque_generator.hpp | 2 +- src/components/real/aocs/gnss_receiver.hpp | 2 +- src/components/real/aocs/gyro_sensor.hpp | 2 +- src/components/real/aocs/magnetometer.hpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 2 +- src/components/real/aocs/magnetorquer.hpp | 2 +- src/components/real/aocs/reaction_wheel.hpp | 2 +- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/aocs/star_sensor.hpp | 2 +- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.hpp | 2 +- .../real/communication/ground_station_calculator.hpp | 2 +- src/components/real/mission/telescope.hpp | 2 +- src/components/real/power/battery.hpp | 2 +- src/components/real/power/pcu_initial_study.hpp | 2 +- src/components/real/power/power_control_unit.hpp | 2 +- src/components/real/power/solar_array_panel.hpp | 2 +- src/components/real/propulsion/simple_thruster.hpp | 2 +- src/disturbances/air_drag.cpp | 2 +- src/disturbances/air_drag.hpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/disturbances/magnetic_disturbance.hpp | 2 +- .../solar_radiation_pressure_disturbance.cpp | 2 +- .../solar_radiation_pressure_disturbance.hpp | 2 +- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.cpp | 2 +- src/dynamics/attitude/attitude.hpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 2 +- src/dynamics/orbit/orbit.hpp | 2 +- src/dynamics/thermal/heater.hpp | 2 +- src/dynamics/thermal/heater_controller.hpp | 2 +- src/dynamics/thermal/heatload.hpp | 2 +- src/dynamics/thermal/node.hpp | 2 +- src/dynamics/thermal/temperature.hpp | 2 +- src/environment/global/celestial_information.cpp | 2 +- src/environment/global/celestial_information.hpp | 2 +- src/environment/global/global_environment.hpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 2 +- src/environment/global/hipparcos_catalogue.hpp | 2 +- src/environment/global/simulation_time.hpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/atmosphere.hpp | 2 +- src/environment/local/geomagnetic_field.hpp | 2 +- src/environment/local/local_celestial_information.cpp | 2 +- .../local/solar_radiation_pressure_environment.cpp | 2 +- src/library/CMakeLists.txt | 3 --- src/logger/CMakeLists.txt | 9 +++++++++ src/logger/initialize_log.cpp | 2 +- src/logger/initialize_log.hpp | 2 +- src/s2e.cpp | 2 +- src/simulation/case/simulation_case.cpp | 2 +- src/simulation/case/simulation_case.hpp | 2 +- src/simulation/ground_station/ground_station.cpp | 4 ++-- .../multiple_spacecraft/relative_information.hpp | 4 ++-- src/simulation/simulation_configuration.hpp | 2 +- src/simulation/spacecraft/installed_components.hpp | 2 +- src/simulation/spacecraft/spacecraft.cpp | 4 ++-- 68 files changed, 79 insertions(+), 72 deletions(-) create mode 100644 src/logger/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a3805f87..8458f2feb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,6 +91,7 @@ add_subdirectory(src/components) add_subdirectory(src/library) add_subdirectory(src/external_libraries) add_subdirectory(src/setting_file_reader) +add_subdirectory(src/logger) set(SOURCE_FILES src/s2e.cpp @@ -179,7 +180,7 @@ endif() #target_link_libraries(${PROJECT_NAME} ${NRLMSISE00_LIB}) # Initialize link -target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY SETTING_FILE_READER) +target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY SETTING_FILE_READER LOGGER) target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION LIBRARY) target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) diff --git a/src/components/examples/example_change_structure.hpp b/src/components/examples/example_change_structure.hpp index 4aa28713f..31d656c92 100644 --- a/src/components/examples/example_change_structure.hpp +++ b/src/components/examples/example_change_structure.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_EXAMPLES_EXAMPLE_CHANGE_STRUCTURE_HPP_ #define S2E_COMPONENTS_EXAMPLES_EXAMPLE_CHANGE_STRUCTURE_HPP_ -#include +#include #include #include "../base/component.hpp" diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 9b3fbe006..5ec2e69c4 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_IDEAL_ANGULAR_VELOCITY_OBSERVER_HPP_ #include -#include +#include #include "../base/component.hpp" #include "../base/sensor.hpp" diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 1fafb63a0..a393f212a 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_IDEAL_ATTITUDE_OBSERVER_HPP_ #include -#include +#include #include #include diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 8e1a7d1e6..ef8ccad32 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 78474917b..ff03073c1 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 04026e89f..5b762ec2d 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index f391b2d6e..ce46f7ebb 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_AOCS_GYRO_SENSOR_HPP_ #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index c352b0553..cf7f4e2f5 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETOMETER_HPP_ #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 9dbd0c7a7..282994c10 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,7 +5,7 @@ #include "magnetorquer.hpp" -#include +#include #include #include #include diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index e4be7361f..26e5447a5 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETORQUER_HPP_ #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index d78e3d39b..98c002810 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 294a9d158..5da110d92 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,7 +6,7 @@ #include "star_sensor.hpp" #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index b2f4daef9..5c5169a67 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 898e204ec..cc791991f 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -8,7 +8,7 @@ #include #include using libra::NormalRand; -#include +#include #include #include diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index f1c59a670..c6a00dad8 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index 196822295..a2d5eb75a 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include /* diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 43dd5997f..989f9ed46 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/components/real/power/battery.hpp b/src/components/real/power/battery.hpp index 555d87107..39ee34c44 100644 --- a/src/components/real/power/battery.hpp +++ b/src/components/real/power/battery.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_REAL_POWER_BATTERY_HPP_P_ #define S2E_COMPONENTS_REAL_POWER_BATTERY_HPP_P_ -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/power/pcu_initial_study.hpp b/src/components/real/power/pcu_initial_study.hpp index 33bc65a00..f59966774 100644 --- a/src/components/real/power/pcu_initial_study.hpp +++ b/src/components/real/power/pcu_initial_study.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_REAL_POWER_PCU_INITIAL_STUDY_HPP_ #define S2E_COMPONENTS_REAL_POWER_PCU_INITIAL_STUDY_HPP_ -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/power/power_control_unit.hpp b/src/components/real/power/power_control_unit.hpp index efb75b98e..94d66e7d6 100644 --- a/src/components/real/power/power_control_unit.hpp +++ b/src/components/real/power/power_control_unit.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_POWER_POWER_CONTROL_UNIT_HPP_ #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index d4db31217..6a65484b8 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index 37496490f..83c365454 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_PROPULSION_SIMPLE_THRUSTER_HPP_ #include -#include +#include #include #include #include diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 921f4ade3..6f69578ed 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -10,7 +10,7 @@ #include #include -#include "../library/logger/log_utility.hpp" +#include "../logger/log_utility.hpp" AirDrag::AirDrag(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index a1ca68dff..57e7b5a86 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -9,7 +9,7 @@ #include #include "../environment/local/atmosphere.hpp" -#include "../library/logger/loggable.hpp" +#include "../logger/loggable.hpp" #include "../library/math/quaternion.hpp" #include "../library/math/vector.hpp" #include "surface_force.hpp" diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 9ae05e4eb..1d14bc7b4 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -12,7 +12,7 @@ #include #include -#include "../library/logger/log_utility.hpp" +#include "../logger/log_utility.hpp" #include "../library/utilities/macros.hpp" // #define DEBUG_GEOPOTENTIAL diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index f06b4c5a5..d59c02dbd 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -9,7 +9,7 @@ #include #include -#include "../library/logger/log_utility.hpp" +#include "../logger/log_utility.hpp" GravityGradient::GravityGradient(const bool is_calculation_enabled) : GravityGradient(environment::earth_gravitational_constant_m3_s2, is_calculation_enabled) {} diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 400027442..1dbcfcea9 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -8,7 +8,7 @@ #include -#include "../library/logger/loggable.hpp" +#include "../logger/loggable.hpp" #include "../library/math/matrix.hpp" #include "../library/math/matrix_vector.hpp" #include "../library/math/vector.hpp" diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 0cc08d9c2..7dfc0a400 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -12,7 +12,7 @@ #include #include -#include "../library/logger/log_utility.hpp" +#include "../logger/log_utility.hpp" #include "../library/utilities/macros.hpp" // #define DEBUG_LUNAR_GRAVITY_FIELD diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 4e5563740..db11ac883 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -8,7 +8,7 @@ #include #include -#include "../library/logger/log_utility.hpp" +#include "../logger/log_utility.hpp" #include "../library/randomization/global_randomization.hpp" #include "../library/randomization/normal_randomization.hpp" #include "../library/randomization/random_walk.hpp" diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index c60bf8a40..f04e33612 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -8,7 +8,7 @@ #include -#include "../library/logger/loggable.hpp" +#include "../logger/loggable.hpp" #include "../library/math/vector.hpp" #include "../simulation/spacecraft/structure/residual_magnetic_moment.hpp" #include "disturbance.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index bb161b085..3ecd0ca8d 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -8,7 +8,7 @@ #include #include -#include "../library/logger/log_utility.hpp" +#include "../logger/log_utility.hpp" SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 7db45f45a..7afcb1b7f 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -8,7 +8,7 @@ #include -#include "../library/logger/loggable.hpp" +#include "../logger/loggable.hpp" #include "../library/math/vector.hpp" #include "surface_force.hpp" diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index b244660ac..3d6ed0bf8 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -10,7 +10,7 @@ #include #include -#include "../library/logger/loggable.hpp" +#include "../logger/loggable.hpp" #include "../library/math/vector.hpp" #include "disturbance.hpp" diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index b96e0f6bd..fa73b6c98 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -4,7 +4,7 @@ */ #include "attitude.hpp" -#include +#include Attitude::Attitude(const libra::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 2b88b19be..ae6de8146 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -6,7 +6,7 @@ #ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ #define S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ -#include +#include #include #include #include diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index c419229ad..141b3ecff 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -5,7 +5,7 @@ #include "attitude_rk4.hpp" #include -#include +#include #include #include diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 4790c1fb6..acf62fb37 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -4,7 +4,7 @@ */ #include "controlled_attitude.hpp" -#include +#include #include ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 591f79ee8..3f35c9aad 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/dynamics/thermal/heater.hpp b/src/dynamics/thermal/heater.hpp index 9ea964f73..4b4b86170 100644 --- a/src/dynamics/thermal/heater.hpp +++ b/src/dynamics/thermal/heater.hpp @@ -7,7 +7,7 @@ #define S2E_DYNAMICS_THERMAL_HEATER_HPP_ #include -#include +#include #include #include diff --git a/src/dynamics/thermal/heater_controller.hpp b/src/dynamics/thermal/heater_controller.hpp index 347d8809e..60578d9d4 100644 --- a/src/dynamics/thermal/heater_controller.hpp +++ b/src/dynamics/thermal/heater_controller.hpp @@ -7,7 +7,7 @@ #define S2E_DYNAMICS_THERMAL_HEATER_CONTROLLER_HPP_ #include -#include +#include #include #include diff --git a/src/dynamics/thermal/heatload.hpp b/src/dynamics/thermal/heatload.hpp index 1851f24c2..3623ea4c4 100644 --- a/src/dynamics/thermal/heatload.hpp +++ b/src/dynamics/thermal/heatload.hpp @@ -6,7 +6,7 @@ #ifndef S2E_DYNAMICS_THERMAL_HEATLOAD_HPP_ #define S2E_DYNAMICS_THERMAL_HEATLOAD_HPP_ -#include +#include #include #include diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 0de19fb8a..23640a13a 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -7,7 +7,7 @@ #define S2E_DYNAMICS_THERMAL_NODE_HPP_ #include -#include +#include #include #include diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index b45a8edd2..2b9105217 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -7,7 +7,7 @@ #define S2E_DYNAMICS_THERMAL_TEMPERATURE_HPP_ #include -#include +#include #include #include diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index d69610c76..c51461e92 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -15,7 +15,7 @@ #include #include -#include "library/logger/log_utility.hpp" +#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" CelestialInformation::CelestialInformation(const std::string inertial_frame_name, const std::string aberration_correction_setting, diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 3f897f17d..9f8fbe1eb 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -10,7 +10,7 @@ #include #include "earth_rotation.hpp" -#include "library/logger/loggable.hpp" +#include "logger/loggable.hpp" #include "library/math/vector.hpp" #include "moon_rotation.hpp" #include "simulation_time.hpp" diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index 1b1483757..b8bb56890 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -9,7 +9,7 @@ #include "celestial_information.hpp" #include "gnss_satellites.hpp" #include "hipparcos_catalogue.hpp" -#include "library/logger/logger.hpp" +#include "logger/logger.hpp" #include "simulation/simulation_configuration.hpp" #include "simulation_time.hpp" diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 90afdee6f..bfc7142fe 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,7 +9,7 @@ #include #include "environment/global/physical_constants.hpp" -#include "library/logger/log_utility.hpp" +#include "logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" #include "library/utilities/macros.hpp" diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 643afe52f..1aaadad95 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -17,7 +17,7 @@ #include "earth_rotation.hpp" #include "library/gnss/gnss_satellite_number.hpp" -#include "library/logger/loggable.hpp" +#include "logger/loggable.hpp" #include "library/math/vector.hpp" #include "simulation_time.hpp" diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index f22bd7c87..0722398c8 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -8,7 +8,7 @@ #include -#include "library/logger/loggable.hpp" +#include "logger/loggable.hpp" #include "library/math/quaternion.hpp" #include "library/math/vector.hpp" diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index 2861e2682..cbcd9fa99 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -17,7 +17,7 @@ #include "external_libraries/sgp4/sgp4ext.h" #include "external_libraries/sgp4/sgp4io.h" #include "external_libraries/sgp4/sgp4unit.h" -#include "library/logger/loggable.hpp" +#include "logger/loggable.hpp" /** *@struct TimeState diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 5671b7c1c..3081f9cfd 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -7,7 +7,7 @@ #include "library/atmosphere/harris_priester_model.hpp" #include "library/atmosphere/simple_air_density_model.hpp" -#include "library/logger/log_utility.hpp" +#include "logger/log_utility.hpp" #include "library/math/vector.hpp" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 8c8be9a7f..ae8f3312d 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -12,7 +12,7 @@ #include "environment/global/simulation_time.hpp" #include "environment/local/local_celestial_information.hpp" #include "external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp" -#include "library/logger/loggable.hpp" +#include "logger/loggable.hpp" #include "library/math/vector.hpp" /** diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 64adc5c27..9a60e08d9 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -7,7 +7,7 @@ #define S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ #include "library/geodesy/geodetic_position.hpp" -#include "library/logger/loggable.hpp" +#include "logger/loggable.hpp" #include "library/math/quaternion.hpp" #include "library/math/vector.hpp" diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index dc4737853..b980a4263 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -12,7 +12,7 @@ #include #include -#include "library/logger/log_utility.hpp" +#include "logger/log_utility.hpp" LocalCelestialInformation::LocalCelestialInformation(const CelestialInformation* global_celestial_information) : global_celestial_information_(global_celestial_information) { diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 8b1e3d67f..0f1d5099e 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,7 +8,7 @@ #include #include -#include "library/logger/log_utility.hpp" +#include "logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/math/vector.hpp" #include "setting_file_reader/initialize_file_access.hpp" diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index f012ed23e..29755f0f5 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -12,9 +12,6 @@ add_library(${PROJECT_NAME} STATIC gnss/antex_file_reader.cpp gnss/bias_sinex_file_reader.cpp - logger/logger.cpp - logger/initialize_log.cpp - gravity/gravity_potential.cpp randomization/global_randomization.cpp diff --git a/src/logger/CMakeLists.txt b/src/logger/CMakeLists.txt new file mode 100644 index 000000000..336e85042 --- /dev/null +++ b/src/logger/CMakeLists.txt @@ -0,0 +1,9 @@ +project(LOGGER) +cmake_minimum_required(VERSION 3.13) + +add_library(${PROJECT_NAME} STATIC + logger.cpp + initialize_log.cpp +) + +include(../../common.cmake) diff --git a/src/logger/initialize_log.cpp b/src/logger/initialize_log.cpp index b74aa4dd6..239cfe3d4 100644 --- a/src/logger/initialize_log.cpp +++ b/src/logger/initialize_log.cpp @@ -5,7 +5,7 @@ #include "initialize_log.hpp" -#include "../../setting_file_reader/initialize_file_access.hpp" +#include "../setting_file_reader/initialize_file_access.hpp" Logger* InitLog(std::string file_name) { IniAccess ini_file(file_name); diff --git a/src/logger/initialize_log.hpp b/src/logger/initialize_log.hpp index 2f683bb83..0d70fc1e8 100644 --- a/src/logger/initialize_log.hpp +++ b/src/logger/initialize_log.hpp @@ -6,7 +6,7 @@ #ifndef S2E_LIBRARY_LOGGER_INITIALIZE_LOG_HPP_ #define S2E_LIBRARY_LOGGER_INITIALIZE_LOG_HPP_ -#include +#include /** * @fn InitLog diff --git a/src/s2e.cpp b/src/s2e.cpp index ed446ee20..cf0bee4f4 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -15,7 +15,7 @@ #include // Simulator includes -#include "library/logger/logger.hpp" +#include "logger/logger.hpp" // Add custom include files #include "simulation_sample/case/sample_case.hpp" diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index bcbb69291..1a19dd003 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -5,7 +5,7 @@ #include "simulation_case.hpp" -#include +#include #include #include diff --git a/src/simulation/case/simulation_case.hpp b/src/simulation/case/simulation_case.hpp index b6aeba357..68f73f66c 100644 --- a/src/simulation/case/simulation_case.hpp +++ b/src/simulation/case/simulation_case.hpp @@ -7,7 +7,7 @@ #define S2E_SIMULATION_CASE_SIMULATION_CASE_HPP_ #include -#include +#include #include #include "../simulation_configuration.hpp" diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 89d53314f..7b3d7c05b 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,8 +6,8 @@ #include "ground_station.hpp" #include -#include -#include +#include +#include #include #include #include diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index 428f426f9..a1de06e28 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -9,8 +9,8 @@ #include #include "../../dynamics/dynamics.hpp" -#include "../../library/logger/loggable.hpp" -#include "../../library/logger/logger.hpp" +#include "../../logger/loggable.hpp" +#include "../../logger/logger.hpp" /** * @class RelativeInformation diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index 25bde1245..28b6f74f0 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -9,7 +9,7 @@ #include #include -#include "../library/logger/logger.hpp" +#include "../logger/logger.hpp" /** * @struct SimulationConfiguration diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index fed441308..a711e94ed 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -6,7 +6,7 @@ #ifndef S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ #define S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ -#include +#include #include /** diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index c138a95bc..61a7762d4 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -5,8 +5,8 @@ #include "spacecraft.hpp" -#include -#include +#include +#include Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information) From fcabf64db186c6810ca9d9a994af41aa90a6b0d9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 14:47:32 +0100 Subject: [PATCH 156/456] Fix format --- src/components/ideal/attitude_observer.hpp | 2 +- src/components/ideal/force_generator.hpp | 2 +- src/components/ideal/torque_generator.hpp | 2 +- src/components/real/aocs/gnss_receiver.hpp | 2 +- src/components/real/aocs/gyro_sensor.hpp | 2 +- src/components/real/aocs/magnetometer.hpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 2 +- src/components/real/aocs/magnetorquer.hpp | 2 +- src/components/real/aocs/reaction_wheel.hpp | 2 +- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/aocs/star_sensor.hpp | 2 +- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.hpp | 2 +- src/components/real/mission/telescope.hpp | 2 +- src/components/real/power/solar_array_panel.hpp | 2 +- src/components/real/propulsion/simple_thruster.hpp | 2 +- src/disturbances/air_drag.hpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/disturbances/magnetic_disturbance.hpp | 2 +- src/disturbances/solar_radiation_pressure_disturbance.hpp | 2 +- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.hpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 2 +- src/dynamics/orbit/orbit.hpp | 2 +- src/environment/global/celestial_information.hpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 2 +- src/environment/global/hipparcos_catalogue.hpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/atmosphere.hpp | 2 +- src/environment/local/geomagnetic_field.hpp | 2 +- .../local/solar_radiation_pressure_environment.cpp | 2 +- src/simulation/ground_station/ground_station.cpp | 4 ++-- src/simulation/spacecraft/installed_components.hpp | 2 +- 38 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index a393f212a..4076cfed8 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -7,9 +7,9 @@ #define S2E_COMPONENTS_IDEAL_ATTITUDE_OBSERVER_HPP_ #include -#include #include #include +#include #include "../base/component.hpp" diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index ef8ccad32..31b1110c5 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -8,9 +8,9 @@ #include #include -#include #include #include +#include /* * @class ForceGenerator diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index ff03073c1..2e8b6b8c2 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -8,9 +8,9 @@ #include #include -#include #include #include +#include /* * @class TorqueGenerator diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 5b762ec2d..9a783dc5b 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -10,9 +10,9 @@ #include #include #include -#include #include #include +#include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index ce46f7ebb..3cf311139 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -7,8 +7,8 @@ #define S2E_COMPONENTS_REAL_AOCS_GYRO_SENSOR_HPP_ #include -#include #include +#include #include "../../base/component.hpp" #include "../../base/sensor.hpp" diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index cf7f4e2f5..04d6bb32c 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -7,8 +7,8 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETOMETER_HPP_ #include -#include #include +#include #include "../../base/component.hpp" #include "../../base/sensor.hpp" diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 282994c10..90a415065 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,10 +5,10 @@ #include "magnetorquer.hpp" -#include #include #include #include +#include #include Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 26e5447a5..dc89d0bc0 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -7,12 +7,12 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETORQUER_HPP_ #include -#include #include #include #include #include #include +#include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 98c002810..9919569c3 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -7,9 +7,9 @@ #define S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ #include -#include #include #include +#include #include #include diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 5da110d92..f4e4ac7d8 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,10 +6,10 @@ #include "star_sensor.hpp" #include -#include #include #include #include +#include #include #include diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 5c5169a67..7727b1321 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -8,11 +8,11 @@ #include #include -#include #include #include #include #include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index cc791991f..80cef697b 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -8,8 +8,8 @@ #include #include using libra::NormalRand; -#include #include +#include #include using namespace std; diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index c6a00dad8..3e090333d 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -8,10 +8,10 @@ #include #include -#include #include #include #include +#include #include "../../base/component.hpp" diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 989f9ed46..bc8007f3f 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -10,9 +10,9 @@ #include #include #include -#include #include #include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index 6a65484b8..00f1f7085 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -8,8 +8,8 @@ #include #include -#include #include +#include #include "../../base/component.hpp" diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index 83c365454..b1864dd53 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -7,10 +7,10 @@ #define S2E_COMPONENTS_REAL_PROPULSION_SIMPLE_THRUSTER_HPP_ #include -#include #include #include #include +#include #include #include "../../base/component.hpp" diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 57e7b5a86..3056df0f6 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -9,9 +9,9 @@ #include #include "../environment/local/atmosphere.hpp" -#include "../logger/loggable.hpp" #include "../library/math/quaternion.hpp" #include "../library/math/vector.hpp" +#include "../logger/loggable.hpp" #include "surface_force.hpp" /** diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 1d14bc7b4..0933949d4 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -12,8 +12,8 @@ #include #include -#include "../logger/log_utility.hpp" #include "../library/utilities/macros.hpp" +#include "../logger/log_utility.hpp" // #define DEBUG_GEOPOTENTIAL diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 1dbcfcea9..09bd25a47 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -8,10 +8,10 @@ #include -#include "../logger/loggable.hpp" #include "../library/math/matrix.hpp" #include "../library/math/matrix_vector.hpp" #include "../library/math/vector.hpp" +#include "../logger/loggable.hpp" #include "disturbance.hpp" /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 7dfc0a400..5af42d3cf 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -12,8 +12,8 @@ #include #include -#include "../logger/log_utility.hpp" #include "../library/utilities/macros.hpp" +#include "../logger/log_utility.hpp" // #define DEBUG_LUNAR_GRAVITY_FIELD diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index db11ac883..776127d4a 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -8,10 +8,10 @@ #include #include -#include "../logger/log_utility.hpp" #include "../library/randomization/global_randomization.hpp" #include "../library/randomization/normal_randomization.hpp" #include "../library/randomization/random_walk.hpp" +#include "../logger/log_utility.hpp" MagneticDisturbance::MagneticDisturbance(const ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), residual_magnetic_moment_(rmm_params) { diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index f04e33612..676e1671e 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -8,8 +8,8 @@ #include -#include "../logger/loggable.hpp" #include "../library/math/vector.hpp" +#include "../logger/loggable.hpp" #include "../simulation/spacecraft/structure/residual_magnetic_moment.hpp" #include "disturbance.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 7afcb1b7f..a5967d629 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -8,8 +8,8 @@ #include -#include "../logger/loggable.hpp" #include "../library/math/vector.hpp" +#include "../logger/loggable.hpp" #include "surface_force.hpp" /** diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 3d6ed0bf8..c65c5b9fd 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -10,8 +10,8 @@ #include #include -#include "../logger/loggable.hpp" #include "../library/math/vector.hpp" +#include "../logger/loggable.hpp" #include "disturbance.hpp" /** diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index ae6de8146..ee91197dc 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -6,9 +6,9 @@ #ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ #define S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ -#include #include #include +#include #include #include diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 141b3ecff..3d4f62c85 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -5,8 +5,8 @@ #include "attitude_rk4.hpp" #include -#include #include +#include #include AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index acf62fb37..759a7fbba 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -4,8 +4,8 @@ */ #include "controlled_attitude.hpp" -#include #include +#include ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const libra::Quaternion quaternion_i2b, const libra::Vector<3> main_target_direction_b, diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 3f35c9aad..2f504159e 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -9,12 +9,12 @@ #include #include #include -#include #include #include #include #include #include +#include /** * @enum OrbitPropagateMode diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 9f8fbe1eb..1197e6066 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -10,8 +10,8 @@ #include #include "earth_rotation.hpp" -#include "logger/loggable.hpp" #include "library/math/vector.hpp" +#include "logger/loggable.hpp" #include "moon_rotation.hpp" #include "simulation_time.hpp" diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index bfc7142fe..154afefdc 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,10 +9,10 @@ #include #include "environment/global/physical_constants.hpp" -#include "logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" #include "library/utilities/macros.hpp" +#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" const size_t kNumberOfInterpolation = 9; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 1aaadad95..47add1696 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -17,8 +17,8 @@ #include "earth_rotation.hpp" #include "library/gnss/gnss_satellite_number.hpp" -#include "logger/loggable.hpp" #include "library/math/vector.hpp" +#include "logger/loggable.hpp" #include "simulation_time.hpp" /** diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index 0722398c8..4f5f9bb8e 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -8,9 +8,9 @@ #include -#include "logger/loggable.hpp" #include "library/math/quaternion.hpp" #include "library/math/vector.hpp" +#include "logger/loggable.hpp" /** *@struct HipparcosData diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 3081f9cfd..8db85b4e3 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -7,11 +7,11 @@ #include "library/atmosphere/harris_priester_model.hpp" #include "library/atmosphere/simple_air_density_model.hpp" -#include "logger/log_utility.hpp" #include "library/math/vector.hpp" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" #include "library/randomization/random_walk.hpp" +#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" Atmosphere::Atmosphere(const std::string model, const std::string space_weather_file_name, const double gauss_standard_deviation_rate, diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index ae8f3312d..138b97a07 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -12,8 +12,8 @@ #include "environment/global/simulation_time.hpp" #include "environment/local/local_celestial_information.hpp" #include "external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp" -#include "logger/loggable.hpp" #include "library/math/vector.hpp" +#include "logger/loggable.hpp" /** * @class Atmosphere diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 9a60e08d9..2f87b2957 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -7,9 +7,9 @@ #define S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ #include "library/geodesy/geodetic_position.hpp" -#include "logger/loggable.hpp" #include "library/math/quaternion.hpp" #include "library/math/vector.hpp" +#include "logger/loggable.hpp" /** * @class GeomagneticField diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 0f1d5099e..a2bde130f 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,9 +8,9 @@ #include #include -#include "logger/log_utility.hpp" #include "library/math/constants.hpp" #include "library/math/vector.hpp" +#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" SolarRadiationPressureEnvironment::SolarRadiationPressureEnvironment(LocalCelestialInformation* local_celestial_information) diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 7b3d7c05b..b36b44d8c 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,10 +6,10 @@ #include "ground_station.hpp" #include -#include -#include #include #include +#include +#include #include #include diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index a711e94ed..0be7bec4a 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -6,8 +6,8 @@ #ifndef S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ #define S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ -#include #include +#include /** * @class InstalledComponents From 3a0354075624f43a2e06fdc0783480f2cfe88ef2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 15:00:22 +0100 Subject: [PATCH 157/456] Move library/utilities to src/ --- src/{library => }/utilities/endian.cpp | 0 src/{library => }/utilities/endian.hpp | 0 src/{library => }/utilities/endian_define.hpp | 0 src/{library => }/utilities/macros.hpp | 0 src/{library => }/utilities/quantization.cpp | 0 src/{library => }/utilities/quantization.hpp | 0 src/{library => }/utilities/ring_buffer.cpp | 0 src/{library => }/utilities/ring_buffer.hpp | 0 src/{library => }/utilities/slip.cpp | 0 src/{library => }/utilities/slip.hpp | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename src/{library => }/utilities/endian.cpp (100%) rename src/{library => }/utilities/endian.hpp (100%) rename src/{library => }/utilities/endian_define.hpp (100%) rename src/{library => }/utilities/macros.hpp (100%) rename src/{library => }/utilities/quantization.cpp (100%) rename src/{library => }/utilities/quantization.hpp (100%) rename src/{library => }/utilities/ring_buffer.cpp (100%) rename src/{library => }/utilities/ring_buffer.hpp (100%) rename src/{library => }/utilities/slip.cpp (100%) rename src/{library => }/utilities/slip.hpp (100%) diff --git a/src/library/utilities/endian.cpp b/src/utilities/endian.cpp similarity index 100% rename from src/library/utilities/endian.cpp rename to src/utilities/endian.cpp diff --git a/src/library/utilities/endian.hpp b/src/utilities/endian.hpp similarity index 100% rename from src/library/utilities/endian.hpp rename to src/utilities/endian.hpp diff --git a/src/library/utilities/endian_define.hpp b/src/utilities/endian_define.hpp similarity index 100% rename from src/library/utilities/endian_define.hpp rename to src/utilities/endian_define.hpp diff --git a/src/library/utilities/macros.hpp b/src/utilities/macros.hpp similarity index 100% rename from src/library/utilities/macros.hpp rename to src/utilities/macros.hpp diff --git a/src/library/utilities/quantization.cpp b/src/utilities/quantization.cpp similarity index 100% rename from src/library/utilities/quantization.cpp rename to src/utilities/quantization.cpp diff --git a/src/library/utilities/quantization.hpp b/src/utilities/quantization.hpp similarity index 100% rename from src/library/utilities/quantization.hpp rename to src/utilities/quantization.hpp diff --git a/src/library/utilities/ring_buffer.cpp b/src/utilities/ring_buffer.cpp similarity index 100% rename from src/library/utilities/ring_buffer.cpp rename to src/utilities/ring_buffer.cpp diff --git a/src/library/utilities/ring_buffer.hpp b/src/utilities/ring_buffer.hpp similarity index 100% rename from src/library/utilities/ring_buffer.hpp rename to src/utilities/ring_buffer.hpp diff --git a/src/library/utilities/slip.cpp b/src/utilities/slip.cpp similarity index 100% rename from src/library/utilities/slip.cpp rename to src/utilities/slip.cpp diff --git a/src/library/utilities/slip.hpp b/src/utilities/slip.hpp similarity index 100% rename from src/library/utilities/slip.hpp rename to src/utilities/slip.hpp From c2d99c7715a0a6d22e2797bb18a43189e0d19b52 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 15:03:16 +0100 Subject: [PATCH 158/456] Batch conversion the including path of utilities --- CMakeLists.txt | 3 ++- src/components/base/component.hpp | 2 +- src/components/base/i2c_controller.cpp | 2 +- .../example_serial_communication_for_hils.cpp | 2 +- src/components/ports/i2c_port.cpp | 2 +- src/components/ports/power_port.cpp | 2 +- src/components/ports/uart_port.hpp | 2 +- src/components/real/aocs/reaction_wheel_jitter.cpp | 2 +- src/components/real/aocs/reaction_wheel_ode.cpp | 2 +- src/components/real/communication/antenna.cpp | 2 +- .../communication/wings_command_sender_to_c2a.cpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- .../solar_radiation_pressure_disturbance.hpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 2 +- src/dynamics/orbit/encke_orbit_propagation.cpp | 2 +- src/dynamics/orbit/kepler_orbit_propagation.cpp | 2 +- src/dynamics/orbit/relative_orbit.cpp | 2 +- src/dynamics/orbit/rk4_orbit_propagation.cpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.cpp | 2 +- src/dynamics/thermal/temperature.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/external_libraries/sgp4/sgp4unit.cpp | 2 +- src/library/CMakeLists.txt | 5 ----- src/library/atmosphere/harris_priester_model.cpp | 2 +- src/library/numerical_integration/runge_kutta_4.hpp | 2 +- .../randomization/random_walk_template_functions.hpp | 2 +- src/setting_file_reader/c2a_command_database.cpp | 4 ++-- src/setting_file_reader/initialize_file_access.cpp | 2 +- src/simulation/ground_station/ground_station.cpp | 2 +- src/simulation/hils/hils_port_manager.cpp | 2 +- .../inter_spacecraft_communication.cpp | 2 +- src/simulation/spacecraft/installed_components.cpp | 2 +- src/utilities/CMakeLists.txt | 11 +++++++++++ 36 files changed, 47 insertions(+), 40 deletions(-) create mode 100644 src/utilities/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 8458f2feb..bb2767281 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,7 @@ add_subdirectory(src/library) add_subdirectory(src/external_libraries) add_subdirectory(src/setting_file_reader) add_subdirectory(src/logger) +add_subdirectory(src/utilities) set(SOURCE_FILES src/s2e.cpp @@ -180,7 +181,7 @@ endif() #target_link_libraries(${PROJECT_NAME} ${NRLMSISE00_LIB}) # Initialize link -target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY SETTING_FILE_READER LOGGER) +target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY SETTING_FILE_READER LOGGER UTILITIES) target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION LIBRARY) target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index cb4049985..91432e1f3 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include "interface_tickable.hpp" diff --git a/src/components/base/i2c_controller.cpp b/src/components/base/i2c_controller.cpp index 2d6e0970d..64e1429ba 100644 --- a/src/components/base/i2c_controller.cpp +++ b/src/components/base/i2c_controller.cpp @@ -5,7 +5,7 @@ #include "i2c_controller.hpp" #include -#include +#include I2cController::I2cController(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager) diff --git a/src/components/examples/example_serial_communication_for_hils.cpp b/src/components/examples/example_serial_communication_for_hils.cpp index 8986e85db..fe0b9b3d8 100644 --- a/src/components/examples/example_serial_communication_for_hils.cpp +++ b/src/components/examples/example_serial_communication_for_hils.cpp @@ -4,7 +4,7 @@ */ #include "example_serial_communication_for_hils.hpp" -#include +#include ExampleSerialCommunicationForHils::ExampleSerialCommunicationForHils(ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, const unsigned int baud_rate, diff --git a/src/components/ports/i2c_port.cpp b/src/components/ports/i2c_port.cpp index d01b5b21d..715fd9538 100644 --- a/src/components/ports/i2c_port.cpp +++ b/src/components/ports/i2c_port.cpp @@ -5,7 +5,7 @@ #include "i2c_port.hpp" -#include +#include I2cPort::I2cPort(void) {} diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index fdeea6978..36dbd2c31 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -6,7 +6,7 @@ #include "power_port.hpp" #include -#include +#include #include PowerPort::PowerPort() : kPortId(-1), current_limit_A_(10.0), minimum_voltage_V_(3.3), assumed_power_consumption_W_(0.0) { diff --git a/src/components/ports/uart_port.hpp b/src/components/ports/uart_port.hpp index 21849aff0..b50f90c28 100644 --- a/src/components/ports/uart_port.hpp +++ b/src/components/ports/uart_port.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_PORTS_UART_PORT_HPP_ #define S2E_COMPONENTS_PORTS_UART_PORT_HPP_ -#include +#include /** * @class UartPort diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index 1d7be9838..fb25cf62d 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -6,7 +6,7 @@ #include "reaction_wheel_jitter.hpp" #include -#include +#include #include ReactionWheelJitter::ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, diff --git a/src/components/real/aocs/reaction_wheel_ode.cpp b/src/components/real/aocs/reaction_wheel_ode.cpp index f90162d53..2ef53768e 100644 --- a/src/components/real/aocs/reaction_wheel_ode.cpp +++ b/src/components/real/aocs/reaction_wheel_ode.cpp @@ -4,7 +4,7 @@ */ #include "reaction_wheel_ode.hpp" -#include +#include ReactionWheelOde::ReactionWheelOde(const double step_width_s, const double velocity_limit_rad_s, const double initial_angular_velocity_rad_s) : OrdinaryDifferentialEquation<1>(step_width_s), velocity_limit_rad_s_(velocity_limit_rad_s) { diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index b0597ca41..b87cb5f27 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index 7e230bfa3..0b51d0c07 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -7,7 +7,7 @@ #include "wings_command_sender_to_c2a.hpp" -#include +#include #include #include diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 0933949d4..b88a70cb1 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -12,7 +12,7 @@ #include #include -#include "../library/utilities/macros.hpp" +#include "../utilities/macros.hpp" #include "../logger/log_utility.hpp" // #define DEBUG_GEOPOTENTIAL diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 5af42d3cf..51cb22489 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -12,7 +12,7 @@ #include #include -#include "../library/utilities/macros.hpp" +#include "../utilities/macros.hpp" #include "../logger/log_utility.hpp" // #define DEBUG_LUNAR_GRAVITY_FIELD diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 776127d4a..45fab003d 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -5,7 +5,7 @@ #include "magnetic_disturbance.hpp" -#include +#include #include #include "../library/randomization/global_randomization.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index a5967d629..92180dd97 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -6,7 +6,7 @@ #ifndef S2E_DISTURBANCES_SOLAR_RADIATION_PRESSURE_DISTURBANCE_HPP_ #define S2E_DISTURBANCES_SOLAR_RADIATION_PRESSURE_DISTURBANCE_HPP_ -#include +#include #include "../library/math/vector.hpp" #include "../logger/loggable.hpp" diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 3d4f62c85..8db417d7e 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -5,7 +5,7 @@ #include "attitude_rk4.hpp" #include -#include +#include #include #include diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 759a7fbba..7a7fcb96a 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -4,7 +4,7 @@ */ #include "controlled_attitude.hpp" -#include +#include #include ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index 941665edf..4623f19c9 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -5,7 +5,7 @@ #include "encke_orbit_propagation.hpp" -#include +#include #include "../../library/orbit/orbital_elements.hpp" diff --git a/src/dynamics/orbit/kepler_orbit_propagation.cpp b/src/dynamics/orbit/kepler_orbit_propagation.cpp index 776c468d2..1ff199c04 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.cpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.cpp @@ -4,7 +4,7 @@ */ #include "kepler_orbit_propagation.hpp" -#include +#include #include "../../library/math/s2e_math.hpp" diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 347e07e87..402129504 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -4,7 +4,7 @@ */ #include "relative_orbit.hpp" -#include +#include #include "rk4_orbit_propagation.hpp" diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index 683db283b..8ceab851b 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -5,7 +5,7 @@ #include "rk4_orbit_propagation.hpp" #include -#include +#include #include Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.cpp b/src/dynamics/orbit/sgp4_orbit_propagation.cpp index 1c4da13ee..4f261572d 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.cpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.cpp @@ -6,7 +6,7 @@ #include "sgp4_orbit_propagation.hpp" #include -#include +#include #include Sgp4OrbitPropagation::Sgp4OrbitPropagation(const CelestialInformation* celestial_information, char* tle1, char* tle2, const int wgs_setting, diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index b0f73fb90..5620bbc0b 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include using namespace std; diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 154afefdc..ebdc6998d 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -11,7 +11,7 @@ #include "environment/global/physical_constants.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" -#include "library/utilities/macros.hpp" +#include "utilities/macros.hpp" #include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" diff --git a/src/external_libraries/sgp4/sgp4unit.cpp b/src/external_libraries/sgp4/sgp4unit.cpp index 750a711ba..55e8f25c9 100644 --- a/src/external_libraries/sgp4/sgp4unit.cpp +++ b/src/external_libraries/sgp4/sgp4unit.cpp @@ -37,7 +37,7 @@ #include "sgp4unit.h" #include -#include +#include // const char help = 'n'; // Remove to avoid unused warinings FILE* dbgfile; diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index 29755f0f5..dde735600 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -36,11 +36,6 @@ add_library(${PROJECT_NAME} STATIC time_system/date_time_format.cpp time_system/epoch_time.cpp time_system/gps_time.cpp - - utilities/endian.cpp - utilities/slip.cpp - utilities/quantization.cpp - utilities/ring_buffer.cpp ) include(../../common.cmake) diff --git a/src/library/atmosphere/harris_priester_model.cpp b/src/library/atmosphere/harris_priester_model.cpp index 1ae3d375f..4cfc1b398 100644 --- a/src/library/atmosphere/harris_priester_model.cpp +++ b/src/library/atmosphere/harris_priester_model.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include "harris_priester_coefficients.hpp" diff --git a/src/library/numerical_integration/runge_kutta_4.hpp b/src/library/numerical_integration/runge_kutta_4.hpp index 0ac8402af..50942186d 100644 --- a/src/library/numerical_integration/runge_kutta_4.hpp +++ b/src/library/numerical_integration/runge_kutta_4.hpp @@ -6,7 +6,7 @@ #ifndef S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_4_HPP_ #define S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_4_HPP_ -#include +#include #include "runge_kutta.hpp" diff --git a/src/library/randomization/random_walk_template_functions.hpp b/src/library/randomization/random_walk_template_functions.hpp index 3221d7228..ed9c1b46c 100644 --- a/src/library/randomization/random_walk_template_functions.hpp +++ b/src/library/randomization/random_walk_template_functions.hpp @@ -7,7 +7,7 @@ #define S2E_LIBRARY_RANDOMIZATION_RANDOM_WALK_TEMPLATE_FUNCTIONS_HPP_ #include -#include +#include template RandomWalk::RandomWalk(double step_width_s, const libra::Vector& standard_deviation, const libra::Vector& limit) diff --git a/src/setting_file_reader/c2a_command_database.cpp b/src/setting_file_reader/c2a_command_database.cpp index b31655166..e3db8db64 100644 --- a/src/setting_file_reader/c2a_command_database.cpp +++ b/src/setting_file_reader/c2a_command_database.cpp @@ -7,8 +7,8 @@ #include #include -#include -#include +#include +#include #include C2aCommandInformation::C2aCommandInformation(const std::string cmd_db_line) { diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index 10cc19eca..b05e31e98 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -12,7 +12,7 @@ #include #include -#include "../library/utilities/macros.hpp" +#include "../utilities/macros.hpp" #ifdef WIN32 IniAccess::IniAccess(const std::string file_path) : file_path_(file_path) { diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index b36b44d8c..33291b448 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/simulation/hils/hils_port_manager.cpp b/src/simulation/hils/hils_port_manager.cpp index b794334be..40e4d36fe 100644 --- a/src/simulation/hils/hils_port_manager.cpp +++ b/src/simulation/hils/hils_port_manager.cpp @@ -5,7 +5,7 @@ #include "hils_port_manager.hpp" -#include +#include // #define HILS_PORT_MANAGER_SHOW_DEBUG_DATA diff --git a/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp b/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp index 6e4678aee..0324d2e2e 100644 --- a/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp +++ b/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp @@ -5,7 +5,7 @@ #include "inter_spacecraft_communication.hpp" -#include +#include InterSpacecraftCommunication::InterSpacecraftCommunication(const SimulationConfiguration* simulation_configuration) { UNUSED(simulation_configuration); diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index 015b606ac..325be3369 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -5,7 +5,7 @@ #include "installed_components.hpp" -#include +#include libra::Vector<3> InstalledComponents::GenerateForce_b_N() { libra::Vector<3> force_b_N_(0.0); diff --git a/src/utilities/CMakeLists.txt b/src/utilities/CMakeLists.txt new file mode 100644 index 000000000..ce9bef781 --- /dev/null +++ b/src/utilities/CMakeLists.txt @@ -0,0 +1,11 @@ +project(UTILITIES) +cmake_minimum_required(VERSION 3.13) + +add_library(${PROJECT_NAME} STATIC + endian.cpp + slip.cpp + quantization.cpp + ring_buffer.cpp +) + +include(../../common.cmake) From 63293a642090dd6471b7439873c2247496bb6cf0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 15:08:22 +0100 Subject: [PATCH 159/456] Fix format --- src/components/ports/power_port.cpp | 2 +- src/components/real/aocs/reaction_wheel_jitter.cpp | 2 +- src/components/real/communication/antenna.cpp | 2 +- .../real/communication/wings_command_sender_to_c2a.cpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 2 +- src/dynamics/orbit/rk4_orbit_propagation.cpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.cpp | 2 +- src/dynamics/thermal/temperature.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/setting_file_reader/c2a_command_database.cpp | 2 +- src/simulation/ground_station/ground_station.cpp | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index 36dbd2c31..1a3393ec3 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -6,8 +6,8 @@ #include "power_port.hpp" #include -#include #include +#include PowerPort::PowerPort() : kPortId(-1), current_limit_A_(10.0), minimum_voltage_V_(3.3), assumed_power_consumption_W_(0.0) { is_on_ = true; // power on to work the component diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index fb25cf62d..69b7c5b24 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -6,8 +6,8 @@ #include "reaction_wheel_jitter.hpp" #include -#include #include +#include ReactionWheelJitter::ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index b87cb5f27..926cfe0b7 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -8,8 +8,8 @@ #include #include -#include #include +#include Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index 0b51d0c07..4d04ee911 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -7,9 +7,9 @@ #include "wings_command_sender_to_c2a.hpp" -#include #include #include +#include #ifdef USE_C2A #include "src_core/c2a_core_main.h" diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index b88a70cb1..7be1ceba6 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -12,8 +12,8 @@ #include #include -#include "../utilities/macros.hpp" #include "../logger/log_utility.hpp" +#include "../utilities/macros.hpp" // #define DEBUG_GEOPOTENTIAL diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 51cb22489..8de4db364 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -12,8 +12,8 @@ #include #include -#include "../utilities/macros.hpp" #include "../logger/log_utility.hpp" +#include "../utilities/macros.hpp" // #define DEBUG_LUNAR_GRAVITY_FIELD diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 45fab003d..60b6cacd8 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -5,8 +5,8 @@ #include "magnetic_disturbance.hpp" -#include #include +#include #include "../library/randomization/global_randomization.hpp" #include "../library/randomization/normal_randomization.hpp" diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 8db417d7e..669b3b61c 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -5,9 +5,9 @@ #include "attitude_rk4.hpp" #include -#include #include #include +#include AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 7a7fcb96a..ac23ef8b3 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -4,8 +4,8 @@ */ #include "controlled_attitude.hpp" -#include #include +#include ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const libra::Quaternion quaternion_i2b, const libra::Vector<3> main_target_direction_b, diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index 8ceab851b..ff14b33cc 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -5,8 +5,8 @@ #include "rk4_orbit_propagation.hpp" #include -#include #include +#include Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, libra::Vector<3> position_i_m, libra::Vector<3> velocity_i_m_s, double initial_time_s) diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.cpp b/src/dynamics/orbit/sgp4_orbit_propagation.cpp index 4f261572d..30451f568 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.cpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.cpp @@ -6,8 +6,8 @@ #include "sgp4_orbit_propagation.hpp" #include -#include #include +#include Sgp4OrbitPropagation::Sgp4OrbitPropagation(const CelestialInformation* celestial_information, char* tle1, char* tle2, const int wgs_setting, const double current_time_jd) diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 5620bbc0b..deb464820 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -9,8 +9,8 @@ #include #include #include -#include #include +#include using namespace std; diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index ebdc6998d..bedfaafab 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -11,9 +11,9 @@ #include "environment/global/physical_constants.hpp" #include "library/math/constants.hpp" #include "library/time_system/date_time_format.hpp" -#include "utilities/macros.hpp" #include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" +#include "utilities/macros.hpp" const size_t kNumberOfInterpolation = 9; diff --git a/src/setting_file_reader/c2a_command_database.cpp b/src/setting_file_reader/c2a_command_database.cpp index e3db8db64..650c11cf5 100644 --- a/src/setting_file_reader/c2a_command_database.cpp +++ b/src/setting_file_reader/c2a_command_database.cpp @@ -7,9 +7,9 @@ #include #include +#include #include #include -#include C2aCommandInformation::C2aCommandInformation(const std::string cmd_db_line) { if (cmd_db_line.find("*") == 0) return; diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 33291b448..7745ef217 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -7,11 +7,11 @@ #include #include -#include #include #include #include #include +#include GroundStation::GroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id) : ground_station_id_(ground_station_id) { From 66bbc84a22f63ae47fdb3b985e85208f61125c9f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 15:17:53 +0100 Subject: [PATCH 160/456] Remove library/communication directory --- src/{library/communication => utilities}/com_port_interface.cpp | 0 src/{library/communication => utilities}/com_port_interface.hpp | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/{library/communication => utilities}/com_port_interface.cpp (100%) rename src/{library/communication => utilities}/com_port_interface.hpp (100%) diff --git a/src/library/communication/com_port_interface.cpp b/src/utilities/com_port_interface.cpp similarity index 100% rename from src/library/communication/com_port_interface.cpp rename to src/utilities/com_port_interface.cpp diff --git a/src/library/communication/com_port_interface.hpp b/src/utilities/com_port_interface.hpp similarity index 100% rename from src/library/communication/com_port_interface.hpp rename to src/utilities/com_port_interface.hpp From 9e9170990671da6c75ecf6390bf4d4164046a115 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 9 Feb 2024 15:20:12 +0100 Subject: [PATCH 161/456] Fix small --- src/library/numerical_integration/ode_examples.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/numerical_integration/ode_examples.hpp b/src/library/numerical_integration/ode_examples.hpp index fb0fbfdeb..401771d82 100644 --- a/src/library/numerical_integration/ode_examples.hpp +++ b/src/library/numerical_integration/ode_examples.hpp @@ -6,7 +6,7 @@ #ifndef S2E_LIBRARY_NUMERICAL_INTEGRATION_EXAMPLE_ODE_HPP_ #define S2E_LIBRARY_NUMERICAL_INTEGRATION_EXAMPLE_ODE_HPP_ -#include "../utilities/macros.hpp" +#include "../../utilities/macros.hpp" #include "interface_ode.hpp" namespace libra::numerical_integration { From 013101a07fda0709b3b0df059a45c29d807ed020 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 Feb 2024 15:54:52 +0000 Subject: [PATCH 162/456] Update dependency basemap to v1.4.1 --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 190 ++++++++++++++++++-------------------- 2 files changed, 92 insertions(+), 100 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index a0b041da4..0b9e89182 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -4,7 +4,7 @@ verify_ssl = true name = "pypi" [packages] -basemap = "==1.4.0" +basemap = "==1.4.1" matplotlib = "==3.7.2" numpy = "==1.24.3" pandas = "==2.0.3" diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index 68f7a95d2..ecc9b0a59 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9f17d2eee9fa29f1898721cf5fb0055312fecfba2fc95a681f0988cbdce2c2d6" + "sha256": "df7f65ba3ec6206a2c239ec2a9ee9fffc46478ac37e3cd2a6a8e05cf83dcf3fc" }, "pipfile-spec": 6, "requires": { @@ -18,55 +18,47 @@ "default": { "basemap": { "hashes": [ - "sha256:0927a7d3899035b71ac88dfaa3fd7c304e62316d3506c79010b28b0ded6db83f", - "sha256:0da5d4d8e2bd77d7a06ca2f0750e8652acbf725064f518e6acec157d45abf393", - "sha256:0ee1ebadb27255c6045ddfaafe01b1850a993cc054f15fd12eb3fb9a22b0ba5d", - "sha256:10d45296ff9f1c7160290653bede4b1bd26d0e6d5cae32ea1b3823ebfe7f82cc", - "sha256:195cdcd10c0a394cd57bf28211b1f322d93ba99829d05760eec2342ad894b3ce", - "sha256:1df140c0c40f1cd5f154f80d5c4d962d314d4f5a62d2d619047be79f5415278f", - "sha256:1ea26cb43cb3809802968f6b222cc4c101161c62a2a844eba4d0f94d61533614", - "sha256:22a246f1aba6dad9d7da6c1a28157e8682a2a70779ed92c09026d5907791e295", - "sha256:23c1dedd397e42b5f0eb0e11310e2a251001a6999b99438fe935d67ba799ddf2", - "sha256:28e79572eeaaf92cb3cca1bb88faee0eb25ca8d898795cb29bd6675fb0a09a48", - "sha256:353cb3d186ff0cbb1e103f150a9a9e39d512020bc2b46824b4b307f13556b23d", - "sha256:355efa84734cec51dd1565b86a91854e7d2654f57fc065472e8198ed99467512", - "sha256:3baba10a9f59e4be99cca507ce0b442c524703affa03871704b931a95c6aea15", - "sha256:3fd217669f989a936360049ec9da6763de811432c89456bfdf186daa60b4a143", - "sha256:43f29704b0f6601bb569742386a1bce48019fbefe9a21a6f603eb3154de545ca", - "sha256:550f435106339823bc0b4fb64bd89bd1ca8c05b083935d7f4cd46e8e4d1c5a5d", - "sha256:6c69fead3fbc6aacb3f98e753607339c2dc6ae90cfc739812d6a895d12753409", - "sha256:6f8a2cb3c83f1320368ce09514628992d383098916a9106ca47db8069e150eb2", - "sha256:7c24d437767f3df29fd9e3e7f0ec48d4541dfa2fde9953d898467ba59e341c9b", - "sha256:823848e92b91d7f9be764a8c0d2d253431eeb21a60d3c6601f5217ae270b0f6b", - "sha256:83ec95264b67970a3d10e813317468dbe2031d55aee25d4f8dcffa8eba3cc705", - "sha256:85881bd7ca3936f2c9d537c79be355f033383ac990d8013d0c7244939baf207b", - "sha256:8818d274b8c81f764ab7aec423b9d1bd66e12e2e3093ca1ea27b1ad205c2e376", - "sha256:8d528ec0f6c487003e072d10d49b599f9637ca65417f6c1c5ea349a238b1c66d", - "sha256:8e31f4a1752bce29101f3438a8a247edd82d4e6348e3f9f3b0f6b16c2ccf1919", - "sha256:8ee6cbcc62908215342d34b50db3833b6262e8a00e678f68d7ac2aad778ea151", - "sha256:967e5def861c8c152da9e4dedfb1f3ddfab040af5686ade5bed49bced2ff1176", - "sha256:a50664872c72c6673ca135bff5a53fa6633cb0322a06453a61d500b4fa535345", - "sha256:a78411bf8e522028c367c5e36b4da7c2235910d80c7a987af7ee054203421999", - "sha256:a7f50b7828ecb9dc86a90e0dffba93d7a4156babf245c55ad58a144c94944391", - "sha256:a817bd7a493948c63cb31bf2b86f770ec213f355b9c5f2a7a440566b1b42fc83", - "sha256:aab4279b727aef726e3f09e35c23760236f3599e8ee7b6d12ee3b7655275b10f", - "sha256:b225b350f406be9d133ab2152a0ae3247d75b91520249b98ce4fd96bba518824", - "sha256:b25fccf7c31f3b29fb7f22f4eebbf4ab986db0c300300dad32acf5bbe8e8c6ec", - "sha256:b7ddcf4b0138942459f2a7a43e2afe1e4b397cfc379b43074f72e6c6e79d4683", - "sha256:b8c8337d4d8ce1f56c9942f4b7c66405948b4a203fa9a309845418e672c27d33", - "sha256:bb4f9dc1d8d0108fcab934571bafa3ebd5d445d44c728f2302f6fb5009705879", - "sha256:ccf4810a829325013f409834d626e42e098ef0bd49282a41fb04bd6e63cf7a1f", - "sha256:d486119160c4485ed97618537279b2d662758acadc6cefe6323f6cdf7ca8873b", - "sha256:e7748f4e892fb34ba47dd31cb50d7d7955723e65a3697e2b4e4462f669558ca9", - "sha256:e9e69b8ead48d5b8b841390bf7b6bbd5349354756c9643fee88fd54431b2092f", - "sha256:eb3cee3526b574b6cd9cdd8908a124c75ffbebf50b016740ec1181def72d44af", - "sha256:f030517f32e90520555aa24871b342ac7a583a8254980a1816cd9b9cc1325899", - "sha256:f4ff492d65bdd7ed6d84b9789f9ed55cbc74dee236ebbb914767c976b7ffcf8e", - "sha256:f64b4227415e13c0dbf79539959da49160245df40950f434561515bfafd1f0e3" + "sha256:1cb70fe82ea9f49ee6df2ecafeade1e9ef4d5654a3e5c2b6f1b50bbfcfada33a", + "sha256:20644986a63d57c9d94afb8aba180d5362c1bd08d61d4537aa6221a70e3df762", + "sha256:2985d8d937427a20868dc18cd677bd6a6b4b94efc1b33ab29706d4e0dac418cf", + "sha256:2e198e442bae7ad0d25f529788fcb5802192d844d856fa966f6018a46648a375", + "sha256:353b2d02bd70fd48b3d0e146a028862b7d9e09ffb7995c70151fb80607a2df25", + "sha256:355c984cbde3f098cac49f41e2ab0bbbd49091770eeb58486a001f9ee865f725", + "sha256:427a2050dcfbbde5bb4421f87b3f594852160029f8bbdf8d0fff81ad554de2f4", + "sha256:4fb6763f4f2bb904fea0afbd8194f14af0b01fb52d719be35dd4b423e8d8dca2", + "sha256:500a3d314166057d0b3c065e63147042c996ead1af5d59e319f813b83d4ea220", + "sha256:5c50fa14a71d115a7614b3a659f14d1e65dbf43dbcbedae0c901058860806f5b", + "sha256:650e9b2170579193cb89bea2c328740fc13c0327b8ea55173490f760d0f04f8c", + "sha256:669d89621f8c7899c061fcf37bc32df24ebeaf5eb0a02b9d9b9896ca6698f6de", + "sha256:6822d3d08c11cdc443e3ed01d61d512e7cf62d4b40bbc1d235f0a898f2c54a7a", + "sha256:6e0a13ba17ca011c55db44fab9210363154bc67482776d3b149a3ef1b4b01bad", + "sha256:7b58e500413dbe655127bbe9da82c9d175eadd130ed66b6a9efea8d46b65881b", + "sha256:84918a6e030adc9aedee92fe622adde8b54cc81051a6ce6723c04987081d92f4", + "sha256:87091beba0e5f6cfc416d1847a582645b2447cd6bf1e8c4ceaabd98d3493ef41", + "sha256:8818fbb5e1133f0955a62ea159a3792124fc06f9b37ea4427612f6def923b711", + "sha256:91d03458343d73f6a5e4d42e79df59cf57eba699094b71ce7c57ec40c8de9f59", + "sha256:ad169a9ca573752867b136b62ac70cc12ab0ce86e3c69d57e924eaa21b5f5ec7", + "sha256:b196ae9446183deaaedfbd2e757d3edf23225584ce1a47b795cba96febd6acdf", + "sha256:b64f000374a41bf19ac8f8b39cbd2a3b244c79673cd686c9eb507c19daef9e78", + "sha256:b9679c4cacc9af04d9cedb9afd01b9c85bc12df1c8f9685147500e91a33ad5a8", + "sha256:be103ef8c2cb1e7363e3ab48ae633ec2643f0b8a9226d119ec8681096b81335c", + "sha256:c4d80330f00728acfd88be78e0485fd688984db873853f9c75647ec78e653203", + "sha256:c76d77ac21b6fb5008ca0283c6f86d24bf7ed6d0d18867edcfc534748cf348b5", + "sha256:d1600576b21a37883992d5bff0c4485e5468a14fe2df7616e08824103b21465d", + "sha256:d273b628adb276200eb9b97f6175f9145b8a280d55d995869ec4bb3c561021c2", + "sha256:d56d7ed588a5ca5d364b42c73c933258d394c10b3c4dc224e7d31bb41a6fbef5", + "sha256:e20adfa6e77f367567d0389fb1da8ed6ea0ca9e871fd9fec7cfdc2de78495b99", + "sha256:e3345544d530248fa4b4fb89f4b9f93219bffa5983b83f00e42b55b5abf615e8", + "sha256:e6b8430a4f73485fcdb766cd2acb9e766cdacc67adca7757e7a2915b685d8461", + "sha256:f448cfeb0090d4f53f1381c8019c3841e621b7b14df3816172ee72385c35b8b0", + "sha256:f88ecab0468121d94e67e9497329cd2207dd2c7bf9a4779433cedc9cf6ab86f4", + "sha256:ff588f63f35d0b58607c9642cc2cf68967b464ee7aa27a6d87db2ec8edc910e2", + "sha256:ff7b29d1920c77da51386d5767674c498bbdea822a1b51fda3d25a3be8c066d2", + "sha256:ffe185bc4be347b0dc8ad68d2085ec699a558357d6019b5daf6465b6bbdf793d" ], "index": "pypi", "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' and python_version < '3.13'", - "version": "==1.4.0" + "version": "==1.4.1" }, "basemap-data": { "hashes": [ @@ -78,11 +70,11 @@ }, "certifi": { "hashes": [ - "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1", - "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474" + "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f", + "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1" ], "markers": "python_version >= '3.6'", - "version": "==2023.11.17" + "version": "==2024.2.2" }, "contourpy": { "hashes": [ @@ -152,51 +144,51 @@ }, "fonttools": { "hashes": [ - "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e", - "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37", - "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac", - "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae", - "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b", - "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc", - "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b", - "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07", - "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70", - "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71", - "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df", - "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6", - "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1", - "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670", - "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7", - "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6", - "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635", - "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899", - "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50", - "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9", - "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085", - "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb", - "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c", - "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3", - "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184", - "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8", - "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506", - "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c", - "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c", - "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b", - "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0", - "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c", - "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa", - "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f", - "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4", - "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c", - "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1", - "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946", - "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d", - "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952", - "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703", - "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8" + "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252", + "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea", + "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4", + "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e", + "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac", + "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61", + "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e", + "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d", + "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348", + "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee", + "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199", + "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01", + "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2", + "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81", + "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814", + "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070", + "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68", + "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5", + "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7", + "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f", + "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a", + "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1", + "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e", + "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a", + "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092", + "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31", + "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7", + "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48", + "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2", + "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec", + "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a", + "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f", + "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5", + "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0", + "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d", + "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a", + "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738", + "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95", + "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e", + "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124", + "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784", + "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703" ], "markers": "python_version >= '3.8'", - "version": "==4.47.2" + "version": "==4.48.1" }, "importlib-resources": { "hashes": [ @@ -653,10 +645,10 @@ }, "pytz": { "hashes": [ - "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40", - "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a" + "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812", + "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319" ], - "version": "==2023.4" + "version": "==2024.1" }, "six": { "hashes": [ @@ -668,11 +660,11 @@ }, "tzdata": { "hashes": [ - "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3", - "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9" + "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd", + "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252" ], "markers": "python_version >= '2'", - "version": "==2023.4" + "version": "==2024.1" }, "zipp": { "hashes": [ From 83ebc08f88c6ba15c082efdcb1fc609d84b9d45a Mon Sep 17 00:00:00 2001 From: Hiro-0110 Date: Mon, 19 Feb 2024 15:25:22 +0900 Subject: [PATCH 163/456] added relative_velocity_direction_pointing --- data/sample/initialize_files/sample_satellite.ini | 1 + src/dynamics/attitude/controlled_attitude.cpp | 5 +++++ src/dynamics/attitude/controlled_attitude.hpp | 1 + 3 files changed, 7 insertions(+) diff --git a/data/sample/initialize_files/sample_satellite.ini b/data/sample/initialize_files/sample_satellite.ini index 69dcd5210..f39037de5 100644 --- a/data/sample/initialize_files/sample_satellite.ini +++ b/data/sample/initialize_files/sample_satellite.ini @@ -33,6 +33,7 @@ initial_torque_b_Nm(2) = 0.000 // SUN_POINTING // EARTH_CENTER_POINTING // VELOCITY_DIRECTION_POINTING +// RELATIVE_VELOCITY_DIRECTION_POINTING // ORBIT_NORMAL_POINTING main_mode = INERTIAL_STABILIZE sub_mode = SUN_POINTING diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 4790c1fb6..80096afbe 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -93,6 +93,9 @@ libra::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode m } } else if (mode == AttitudeControlMode::kVelocityDirectionPointing) { direction = orbit_->GetVelocity_i_m_s(); + } else if (mode == AttitudeControlMode::kRelativeVelocityDirectionPointing) { + libra::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + direction = dcm_ecef2eci * orbit_->GetVelocity_ecef_m_s(); } else if (mode == AttitudeControlMode::kOrbitNormalPointing) { direction = OuterProduct(orbit_->GetPosition_i_m(), orbit_->GetVelocity_i_m_s()); } @@ -140,6 +143,8 @@ AttitudeControlMode ConvertStringToCtrlMode(const std::string mode) { return AttitudeControlMode::kEarthCenterPointing; } else if (mode == "VELOCITY_DIRECTION_POINTING") { return AttitudeControlMode::kVelocityDirectionPointing; + } else if (mode == "RELATIVE_VELOCITY_DIRECTION_POINTING") { + return AttitudeControlMode::kRelativeVelocityDirectionPointing; } else if (mode == "ORBIT_NORMAL_POINTING") { return AttitudeControlMode::kOrbitNormalPointing; } else { diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index f0de70d14..652d055da 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -22,6 +22,7 @@ enum class AttitudeControlMode { kSunPointing, //!< Sun pointing kEarthCenterPointing, //!< Earth center pointing kVelocityDirectionPointing, //!< Spacecraft velocity direction pointing + kRelativeVelocityDirectionPointing, //!< Relative velocity direction pointing kOrbitNormalPointing, //!< Orbit normal direction pointing kNoControl, // No Control }; From ec10bfcd9bceabebc1f6d8f6e1663724da23bc94 Mon Sep 17 00:00:00 2001 From: Hiro-0110 Date: Mon, 19 Feb 2024 15:31:27 +0900 Subject: [PATCH 164/456] fix format error --- src/dynamics/attitude/controlled_attitude.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 652d055da..1a6741499 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -18,13 +18,13 @@ * @brief Attitude control mode */ enum class AttitudeControlMode { - kInertialStabilize, //!< Inertial stabilize - kSunPointing, //!< Sun pointing - kEarthCenterPointing, //!< Earth center pointing - kVelocityDirectionPointing, //!< Spacecraft velocity direction pointing + kInertialStabilize, //!< Inertial stabilize + kSunPointing, //!< Sun pointing + kEarthCenterPointing, //!< Earth center pointing + kVelocityDirectionPointing, //!< Spacecraft velocity direction pointing kRelativeVelocityDirectionPointing, //!< Relative velocity direction pointing - kOrbitNormalPointing, //!< Orbit normal direction pointing - kNoControl, // No Control + kOrbitNormalPointing, //!< Orbit normal direction pointing + kNoControl, // No Control }; /** From 34eac33464d113ff5723f09f283f3f6ef8803557 Mon Sep 17 00:00:00 2001 From: sksat Date: Mon, 19 Feb 2024 17:55:57 +0900 Subject: [PATCH 165/456] refactor logger class by std::filesystem --- src/library/logger/logger.cpp | 74 ++++++++++++----------------------- src/library/logger/logger.hpp | 23 ++++------- 2 files changed, 32 insertions(+), 65 deletions(-) diff --git a/src/library/logger/logger.cpp b/src/library/logger/logger.cpp index 2a847b286..f4795d537 100644 --- a/src/library/logger/logger.cpp +++ b/src/library/logger/logger.cpp @@ -7,41 +7,40 @@ #include #include -#ifdef _WIN32 -#include -#else -#include -#endif std::vector log_list_; bool Logger::is_directory_created_ = false; -Logger::Logger(const std::string &file_name, const std::string &data_path, const std::string &ini_file_name, const bool is_ini_save_enabled, +namespace fs = std::filesystem; + +Logger::Logger(const std::string &file_name, const fs::path &data_path, const fs::path &ini_file_name, const bool is_ini_save_enabled, const bool is_enabled) : is_enabled_(is_enabled), is_ini_save_enabled_(is_ini_save_enabled) { is_file_opened_ = false; if (is_enabled_ == false) return; - // Get current time to append it to the filename + // Set current time to filename prefix time_t timer = time(NULL); struct tm *now; now = localtime(&timer); char start_time_c[64]; strftime(start_time_c, 64, "%y%m%d_%H%M%S", now); + const auto file_prefix = std::string(start_time_c) + "_"; + // Create directory if (is_ini_save_enabled_ == true || is_directory_created_ == false) { directory_path_ = CreateDirectory(data_path, start_time_c); } else { directory_path_ = data_path; } + // Create File - std::stringstream file_path; - file_path << directory_path_ << start_time_c << "_" << file_name; + fs::path file_path = directory_path_ / (file_prefix + file_name); if (is_enabled_) { - csv_file_.open(file_path.str()); + csv_file_.open(file_path.string()); is_file_opened_ = csv_file_.is_open(); - if (!is_file_opened_) std::cerr << "Error opening log file: " << file_path.str() << std::endl; + if (!is_file_opened_) std::cerr << "Error opening log file: " << file_path << std::endl; } // Copy SimBase.ini @@ -82,50 +81,25 @@ void Logger::AddLogList(ILoggable *loggable) { log_list_.push_back(loggable); } void Logger::ClearLogList() { log_list_.clear(); } -std::string Logger::CreateDirectory(const std::string &data_path, const std::string &time) { - std::string directory_path_tmp_ = data_path + "/logs_" + time + "/"; - // Make directory - int rtn_mkdir = 0; -#ifdef WIN32 - rtn_mkdir = _mkdir(directory_path_tmp_.c_str()); -#else - rtn_mkdir = mkdir(directory_path_tmp_.c_str(), 0777); -#endif - if (rtn_mkdir == 0) { - } else { - std::cerr << "Error making directory: " << directory_path_tmp_ << std::endl; - return data_path; - } - is_directory_created_ = true; - return directory_path_tmp_; -} +fs::path Logger::CreateDirectory(const fs::path &data_path, const std::string &time) { + fs::path log_dir_ = data_path; + log_dir_.append(std::string("logs_") + time); -void Logger::CopyFileToLogDirectory(const std::string &ini_file_name) { - using std::ios; + fs::create_directories(log_dir_); - if (is_ini_save_enabled_ == false) return; - // Copy files to the directory - std::string file_name = GetFileName(ini_file_name); - std::string to_file_name = directory_path_ + file_name; - std::ifstream is(ini_file_name, ios::in | ios::binary); - std::ofstream os(to_file_name, ios::out | ios::binary); - os << is.rdbuf(); - - return; + return log_dir_; } -std::string Logger::GetFileName(const std::string &path) { - size_t pos1; - - pos1 = path.rfind('\\'); - if (pos1 != std::string::npos) { - return path.substr(pos1 + 1, path.size() - pos1 - 1); - } +void Logger::CopyFileToLogDirectory(const fs::path &ini_file_name) { + if (is_ini_save_enabled_ == false) return; + // Copy files to the directory + fs::path to_file_name = directory_path_ / ini_file_name.filename(); - pos1 = path.rfind('/'); - if (pos1 != std::string::npos) { - return path.substr(pos1 + 1, path.size() - pos1 - 1); + if (fs::exists(to_file_name)) { + std::cout << "File " << to_file_name << " already exists. Skip copy from" << ini_file_name << std::endl; + return; } - return path; + fs::copy_file(ini_file_name, to_file_name); + return; } diff --git a/src/library/logger/logger.hpp b/src/library/logger/logger.hpp index 375f76962..e9ac5b1f0 100644 --- a/src/library/logger/logger.hpp +++ b/src/library/logger/logger.hpp @@ -8,6 +8,7 @@ #define _CRT_SECURE_NO_WARNINGS +#include #include #include #include @@ -29,8 +30,8 @@ class Logger { * @param [in] is_ini_save_enabled: Enable flag to save ini files * @param [in] is_enabled: Enable flag for logging */ - Logger(const std::string &file_name, const std::string &data_path, const std::string &ini_file_name, const bool is_ini_save_enabled, - const bool is_enabled = true); + Logger(const std::string &file_name, const std::filesystem::path &data_path, const std::filesystem::path &ini_file_name, + const bool is_ini_save_enabled, const bool is_enabled = true); /** * @fn ~Logger * @brief Destructor @@ -72,7 +73,7 @@ class Logger { * @brief Copy a file (e.g., ini file) into the log directory * @param [in] ini_file_name: The path to the target file to copy */ - void CopyFileToLogDirectory(const std::string &ini_file_name); + void CopyFileToLogDirectory(const std::filesystem::path &ini_file_name); // Getter /** @@ -84,7 +85,7 @@ class Logger { * @fn GetLogPath * @brief Return the path to the directory for log files */ - inline std::string GetLogPath() const { return directory_path_; } + inline std::filesystem::path GetLogPath() const { return directory_path_; } private: std::ofstream csv_file_; //!< CSV file stream @@ -93,8 +94,8 @@ class Logger { static bool is_directory_created_; //!< Is the log output directory is created in the scenario std::vector log_list_; //!< Log list - bool is_ini_save_enabled_; //!< Enable flag to save ini files - std::string directory_path_; //!< Path to the directory for log files + bool is_ini_save_enabled_; //!< Enable flag to save ini files + std::filesystem::path directory_path_; //!< Path to the directory for log files /** * @fn Write @@ -117,15 +118,7 @@ class Logger { * @param[in] time: Time stamp (YYYYMMDD_hhmmss) * @return Path to the created directory */ - std::string CreateDirectory(const std::string &data_path, const std::string &time); - - /** - * @fn GetFileName - * @brief Extract the file name from the name with directory path - * @param [in] path: Directory path including the file name - * @return The extracted file name - */ - std::string GetFileName(const std::string &path); + std::filesystem::path CreateDirectory(const std::filesystem::path &data_path, const std::string &time); }; #endif // S2E_LIBRARY_LOGGER_LOGGER_HPP_ From 6880f10d6dde21b5f19fe335e67c10676794c812 Mon Sep 17 00:00:00 2001 From: Hiro-0110 Date: Thu, 22 Feb 2024 18:55:27 +0900 Subject: [PATCH 166/456] updated name --- data/sample/initialize_files/sample_satellite.ini | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 6 +++--- src/dynamics/attitude/controlled_attitude.hpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/sample/initialize_files/sample_satellite.ini b/data/sample/initialize_files/sample_satellite.ini index f39037de5..ba8e7ee74 100644 --- a/data/sample/initialize_files/sample_satellite.ini +++ b/data/sample/initialize_files/sample_satellite.ini @@ -33,7 +33,7 @@ initial_torque_b_Nm(2) = 0.000 // SUN_POINTING // EARTH_CENTER_POINTING // VELOCITY_DIRECTION_POINTING -// RELATIVE_VELOCITY_DIRECTION_POINTING +// GROUND_SPEED_DIRECTION_POINTING // ORBIT_NORMAL_POINTING main_mode = INERTIAL_STABILIZE sub_mode = SUN_POINTING diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 80096afbe..6e23416c4 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -93,7 +93,7 @@ libra::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode m } } else if (mode == AttitudeControlMode::kVelocityDirectionPointing) { direction = orbit_->GetVelocity_i_m_s(); - } else if (mode == AttitudeControlMode::kRelativeVelocityDirectionPointing) { + } else if (mode == AttitudeControlMode::kGroundSpeedDirectionPointing) { libra::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); direction = dcm_ecef2eci * orbit_->GetVelocity_ecef_m_s(); } else if (mode == AttitudeControlMode::kOrbitNormalPointing) { @@ -143,8 +143,8 @@ AttitudeControlMode ConvertStringToCtrlMode(const std::string mode) { return AttitudeControlMode::kEarthCenterPointing; } else if (mode == "VELOCITY_DIRECTION_POINTING") { return AttitudeControlMode::kVelocityDirectionPointing; - } else if (mode == "RELATIVE_VELOCITY_DIRECTION_POINTING") { - return AttitudeControlMode::kRelativeVelocityDirectionPointing; + } else if (mode == "GROUND_SPEED_DIRECTION_POINTING") { + return AttitudeControlMode::kGroundSpeedDirectionPointing; } else if (mode == "ORBIT_NORMAL_POINTING") { return AttitudeControlMode::kOrbitNormalPointing; } else { diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 1a6741499..938311e5a 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -22,7 +22,7 @@ enum class AttitudeControlMode { kSunPointing, //!< Sun pointing kEarthCenterPointing, //!< Earth center pointing kVelocityDirectionPointing, //!< Spacecraft velocity direction pointing - kRelativeVelocityDirectionPointing, //!< Relative velocity direction pointing + kGroundSpeedDirectionPointing, //!< Ground speed direction pointing kOrbitNormalPointing, //!< Orbit normal direction pointing kNoControl, // No Control }; From fab7c25475e396e08d03b642c726a8fa4d7e21f7 Mon Sep 17 00:00:00 2001 From: Hiro-0110 Date: Thu, 22 Feb 2024 19:05:10 +0900 Subject: [PATCH 167/456] modified hpp --- src/dynamics/attitude/controlled_attitude.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 938311e5a..29909753b 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -18,13 +18,13 @@ * @brief Attitude control mode */ enum class AttitudeControlMode { - kInertialStabilize, //!< Inertial stabilize - kSunPointing, //!< Sun pointing - kEarthCenterPointing, //!< Earth center pointing - kVelocityDirectionPointing, //!< Spacecraft velocity direction pointing - kGroundSpeedDirectionPointing, //!< Ground speed direction pointing - kOrbitNormalPointing, //!< Orbit normal direction pointing - kNoControl, // No Control + kInertialStabilize, //!< Inertial stabilize + kSunPointing, //!< Sun pointing + kEarthCenterPointing, //!< Earth center pointing + kVelocityDirectionPointing, //!< Spacecraft velocity direction pointing + kGroundSpeedDirectionPointing, //!< Ground speed direction pointing + kOrbitNormalPointing, //!< Orbit normal direction pointing + kNoControl, // No Control }; /** From 491c49d4a2143d357e75d2eb381f47658742e13b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 21:49:04 +0900 Subject: [PATCH 168/456] Move SGP4 to library/orbit --- src/{external_libraries => library/orbit}/sgp4/sgp4ext.cpp | 0 src/{external_libraries => library/orbit}/sgp4/sgp4ext.h | 0 src/{external_libraries => library/orbit}/sgp4/sgp4io.cpp | 0 src/{external_libraries => library/orbit}/sgp4/sgp4io.h | 0 src/{external_libraries => library/orbit}/sgp4/sgp4unit.cpp | 0 src/{external_libraries => library/orbit}/sgp4/sgp4unit.h | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/{external_libraries => library/orbit}/sgp4/sgp4ext.cpp (100%) rename src/{external_libraries => library/orbit}/sgp4/sgp4ext.h (100%) rename src/{external_libraries => library/orbit}/sgp4/sgp4io.cpp (100%) rename src/{external_libraries => library/orbit}/sgp4/sgp4io.h (100%) rename src/{external_libraries => library/orbit}/sgp4/sgp4unit.cpp (100%) rename src/{external_libraries => library/orbit}/sgp4/sgp4unit.h (100%) diff --git a/src/external_libraries/sgp4/sgp4ext.cpp b/src/library/orbit/sgp4/sgp4ext.cpp similarity index 100% rename from src/external_libraries/sgp4/sgp4ext.cpp rename to src/library/orbit/sgp4/sgp4ext.cpp diff --git a/src/external_libraries/sgp4/sgp4ext.h b/src/library/orbit/sgp4/sgp4ext.h similarity index 100% rename from src/external_libraries/sgp4/sgp4ext.h rename to src/library/orbit/sgp4/sgp4ext.h diff --git a/src/external_libraries/sgp4/sgp4io.cpp b/src/library/orbit/sgp4/sgp4io.cpp similarity index 100% rename from src/external_libraries/sgp4/sgp4io.cpp rename to src/library/orbit/sgp4/sgp4io.cpp diff --git a/src/external_libraries/sgp4/sgp4io.h b/src/library/orbit/sgp4/sgp4io.h similarity index 100% rename from src/external_libraries/sgp4/sgp4io.h rename to src/library/orbit/sgp4/sgp4io.h diff --git a/src/external_libraries/sgp4/sgp4unit.cpp b/src/library/orbit/sgp4/sgp4unit.cpp similarity index 100% rename from src/external_libraries/sgp4/sgp4unit.cpp rename to src/library/orbit/sgp4/sgp4unit.cpp diff --git a/src/external_libraries/sgp4/sgp4unit.h b/src/library/orbit/sgp4/sgp4unit.h similarity index 100% rename from src/external_libraries/sgp4/sgp4unit.h rename to src/library/orbit/sgp4/sgp4unit.h From 7be66fd0decc93c543dfcd503d10171e92649fcd Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 21:49:14 +0900 Subject: [PATCH 169/456] Fix CMake --- src/external_libraries/CMakeLists.txt | 4 ---- src/library/CMakeLists.txt | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/external_libraries/CMakeLists.txt b/src/external_libraries/CMakeLists.txt index f4eb84eb8..ba7c2f2f8 100644 --- a/src/external_libraries/CMakeLists.txt +++ b/src/external_libraries/CMakeLists.txt @@ -8,10 +8,6 @@ add_library(${PROJECT_NAME} STATIC inih/cpp/INIReader.cpp nrlmsise00/wrapper_nrlmsise00.cpp - - sgp4/sgp4ext.cpp - sgp4/sgp4io.cpp - sgp4/sgp4unit.cpp ) include(../../common.cmake) diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index dde735600..c57487d6d 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -30,6 +30,9 @@ add_library(${PROJECT_NAME} STATIC orbit/kepler_orbit.cpp orbit/relative_orbit_models.cpp orbit/interpolation_orbit.cpp + orbit/sgp4/sgp4ext.cpp + orbit/sgp4/sgp4io.cpp + orbit/sgp4/sgp4unit.cpp planet_rotation/moon_rotation_utilities.cpp From 242c57dc276a643e51fa21e968bf313903cd75eb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 21:53:29 +0900 Subject: [PATCH 170/456] Fix include path --- src/dynamics/orbit/sgp4_orbit_propagation.hpp | 4 ++-- src/environment/global/earth_rotation.cpp | 4 ++-- src/environment/global/simulation_time.hpp | 6 +++--- src/external_libraries/igrf/igrf.cpp | 2 +- src/library/geodesy/geodetic_position.cpp | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index 4b7f1a216..fcef24934 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -6,8 +6,8 @@ #ifndef S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ #define S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ -#include -#include +#include +#include #include diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 3032a12a6..3c21892ab 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -11,8 +11,8 @@ #include #include -#include "external_libraries/sgp4/sgp4ext.h" // for jday() -#include "external_libraries/sgp4/sgp4unit.h" // for gstime() +#include "library/orbit/sgp4/sgp4ext.h" // for jday() +#include "library/orbit/sgp4/sgp4unit.h" // for gstime() #include "library/math/constants.hpp" // Default constructor diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index cbcd9fa99..a37f8b20b 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -14,9 +14,9 @@ // #include #include -#include "external_libraries/sgp4/sgp4ext.h" -#include "external_libraries/sgp4/sgp4io.h" -#include "external_libraries/sgp4/sgp4unit.h" +#include "library/orbit/sgp4/sgp4ext.h" +#include "library/orbit/sgp4/sgp4io.h" +#include "library/orbit/sgp4/sgp4unit.h" #include "logger/loggable.hpp" /** diff --git a/src/external_libraries/igrf/igrf.cpp b/src/external_libraries/igrf/igrf.cpp index f9e8ddca3..645a7f0a1 100644 --- a/src/external_libraries/igrf/igrf.cpp +++ b/src/external_libraries/igrf/igrf.cpp @@ -48,7 +48,7 @@ #include using namespace std; -#include "../sgp4/sgp4ext.h" +#include "../../library/orbit/sgp4/sgp4ext.h" #include "igrf.h" double testglobal[3]; diff --git a/src/library/geodesy/geodetic_position.cpp b/src/library/geodesy/geodetic_position.cpp index e3ac6725b..38a425f75 100644 --- a/src/library/geodesy/geodetic_position.cpp +++ b/src/library/geodesy/geodetic_position.cpp @@ -4,7 +4,7 @@ */ #include "geodetic_position.hpp" -#include // TODO: do not to use the functions in SGP4 library +#include // TODO: do not to use the functions in SGP4 library #include #include From cc6255a821b73f0b0821ecb7f0eee7997c6a0937 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 21:56:48 +0900 Subject: [PATCH 171/456] Move to atmosphere --- .../nrlmsise00 => library/atmosphere}/wrapper_nrlmsise00.cpp | 0 .../nrlmsise00 => library/atmosphere}/wrapper_nrlmsise00.hpp | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/{external_libraries/nrlmsise00 => library/atmosphere}/wrapper_nrlmsise00.cpp (100%) rename src/{external_libraries/nrlmsise00 => library/atmosphere}/wrapper_nrlmsise00.hpp (100%) diff --git a/src/external_libraries/nrlmsise00/wrapper_nrlmsise00.cpp b/src/library/atmosphere/wrapper_nrlmsise00.cpp similarity index 100% rename from src/external_libraries/nrlmsise00/wrapper_nrlmsise00.cpp rename to src/library/atmosphere/wrapper_nrlmsise00.cpp diff --git a/src/external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp b/src/library/atmosphere/wrapper_nrlmsise00.hpp similarity index 100% rename from src/external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp rename to src/library/atmosphere/wrapper_nrlmsise00.hpp From 4eb3b9baa1b0ef197dfd6ce484cf7224affc6ad0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 21:57:56 +0900 Subject: [PATCH 172/456] Fix CMake for atmosphere --- src/external_libraries/CMakeLists.txt | 2 -- src/library/CMakeLists.txt | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/external_libraries/CMakeLists.txt b/src/external_libraries/CMakeLists.txt index ba7c2f2f8..6af3d4c11 100644 --- a/src/external_libraries/CMakeLists.txt +++ b/src/external_libraries/CMakeLists.txt @@ -6,8 +6,6 @@ add_library(${PROJECT_NAME} STATIC inih/ini.c inih/cpp/INIReader.cpp - - nrlmsise00/wrapper_nrlmsise00.cpp ) include(../../common.cmake) diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index c57487d6d..3bad7884d 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 3.13) add_library(${PROJECT_NAME} STATIC atmosphere/simple_air_density_model.cpp atmosphere/harris_priester_model.cpp + atmosphere/wrapper_nrlmsise00.cpp geodesy/geodetic_position.cpp From 2d5d9030c8a299d1e56c4b57f9dfc4eb2915f86e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 21:59:05 +0900 Subject: [PATCH 173/456] Fix include path --- src/environment/local/atmosphere.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 138b97a07..faf3902a1 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -11,7 +11,7 @@ #include "dynamics/orbit/orbit.hpp" #include "environment/global/simulation_time.hpp" #include "environment/local/local_celestial_information.hpp" -#include "external_libraries/nrlmsise00/wrapper_nrlmsise00.hpp" +#include "library/atmosphere/wrapper_nrlmsise00.hpp" #include "library/math/vector.hpp" #include "logger/loggable.hpp" From 19eaf2cabef34528b499e318a15c4f2339fa1aad Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:00:37 +0900 Subject: [PATCH 174/456] Move IGRF to library/ --- src/{external_libraries/igrf => library/geomagnetic}/igrf.cpp | 0 src/{external_libraries/igrf => library/geomagnetic}/igrf.h | 0 src/{external_libraries/igrf => library/geomagnetic}/igrf11.coef | 0 src/{external_libraries/igrf => library/geomagnetic}/igrf12.coef | 0 src/{external_libraries/igrf => library/geomagnetic}/igrf13.coef | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename src/{external_libraries/igrf => library/geomagnetic}/igrf.cpp (100%) rename src/{external_libraries/igrf => library/geomagnetic}/igrf.h (100%) rename src/{external_libraries/igrf => library/geomagnetic}/igrf11.coef (100%) rename src/{external_libraries/igrf => library/geomagnetic}/igrf12.coef (100%) rename src/{external_libraries/igrf => library/geomagnetic}/igrf13.coef (100%) diff --git a/src/external_libraries/igrf/igrf.cpp b/src/library/geomagnetic/igrf.cpp similarity index 100% rename from src/external_libraries/igrf/igrf.cpp rename to src/library/geomagnetic/igrf.cpp diff --git a/src/external_libraries/igrf/igrf.h b/src/library/geomagnetic/igrf.h similarity index 100% rename from src/external_libraries/igrf/igrf.h rename to src/library/geomagnetic/igrf.h diff --git a/src/external_libraries/igrf/igrf11.coef b/src/library/geomagnetic/igrf11.coef similarity index 100% rename from src/external_libraries/igrf/igrf11.coef rename to src/library/geomagnetic/igrf11.coef diff --git a/src/external_libraries/igrf/igrf12.coef b/src/library/geomagnetic/igrf12.coef similarity index 100% rename from src/external_libraries/igrf/igrf12.coef rename to src/library/geomagnetic/igrf12.coef diff --git a/src/external_libraries/igrf/igrf13.coef b/src/library/geomagnetic/igrf13.coef similarity index 100% rename from src/external_libraries/igrf/igrf13.coef rename to src/library/geomagnetic/igrf13.coef From 15525326b12be49bc9c9d08f509b1d10e0f004b4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:01:24 +0900 Subject: [PATCH 175/456] Fix CMake --- src/external_libraries/CMakeLists.txt | 4 +--- src/library/CMakeLists.txt | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/external_libraries/CMakeLists.txt b/src/external_libraries/CMakeLists.txt index 6af3d4c11..bf810420a 100644 --- a/src/external_libraries/CMakeLists.txt +++ b/src/external_libraries/CMakeLists.txt @@ -1,9 +1,7 @@ project(EXTERNAL_LIBRARY) cmake_minimum_required(VERSION 3.13) -add_library(${PROJECT_NAME} STATIC - igrf/igrf.cpp - +add_library(${PROJECT_NAME} STATIC inih/ini.c inih/cpp/INIReader.cpp ) diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt index 3bad7884d..7fa3be51b 100644 --- a/src/library/CMakeLists.txt +++ b/src/library/CMakeLists.txt @@ -8,6 +8,8 @@ add_library(${PROJECT_NAME} STATIC geodesy/geodetic_position.cpp + geomagnetic/igrf.cpp + gnss/sp3_file_reader.cpp gnss/gnss_satellite_number.cpp gnss/antex_file_reader.cpp From f7469d7e621f8880f59c3cd9ae00607041503ffd Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:02:26 +0900 Subject: [PATCH 176/456] Fix include path --- src/environment/local/geomagnetic_field.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index b5c1ea0fc..b31bdb728 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -5,7 +5,7 @@ #include "geomagnetic_field.hpp" -#include "external_libraries/igrf/igrf.h" +#include "library/geomagnetic/igrf.h" #include "library/randomization/global_randomization.hpp" #include "library/randomization/normal_randomization.hpp" #include "library/randomization/random_walk.hpp" From 4ebb2f90ac2cb905d2686862a17ec463b683719b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:03:47 +0900 Subject: [PATCH 177/456] Fix path to igrf coeff file --- data/sample/initialize_files/sample_local_environment.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sample/initialize_files/sample_local_environment.ini b/data/sample/initialize_files/sample_local_environment.ini index ee7bc165a..b2809292b 100644 --- a/data/sample/initialize_files/sample_local_environment.ini +++ b/data/sample/initialize_files/sample_local_environment.ini @@ -1,7 +1,7 @@ [MAGNETIC_FIELD_ENVIRONMENT] calculation = ENABLE logging = ENABLE -coefficient_file = CORE_DIR_FROM_EXE/src/external_libraries/igrf/igrf13.coef +coefficient_file = CORE_DIR_FROM_EXE/src/library/geomagnetic/igrf13.coef magnetic_field_random_walk_standard_deviation_nT = 10.0 magnetic_field_random_walk_limit_nT = 400.0 magnetic_field_white_noise_standard_deviation_nT = 50.0 From 3398e2c1321d754c4db77c427ae76f5e03291125 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:06:01 +0900 Subject: [PATCH 178/456] Move inih to ExtLibraries --- {src/external_libraries => ExtLibraries}/inih/LICENSE.txt | 0 {src/external_libraries => ExtLibraries}/inih/README.md | 0 {src/external_libraries => ExtLibraries}/inih/cpp/INIReader.cpp | 0 {src/external_libraries => ExtLibraries}/inih/cpp/INIReader.h | 0 {src/external_libraries => ExtLibraries}/inih/ini.c | 0 {src/external_libraries => ExtLibraries}/inih/ini.h | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {src/external_libraries => ExtLibraries}/inih/LICENSE.txt (100%) rename {src/external_libraries => ExtLibraries}/inih/README.md (100%) rename {src/external_libraries => ExtLibraries}/inih/cpp/INIReader.cpp (100%) rename {src/external_libraries => ExtLibraries}/inih/cpp/INIReader.h (100%) rename {src/external_libraries => ExtLibraries}/inih/ini.c (100%) rename {src/external_libraries => ExtLibraries}/inih/ini.h (100%) diff --git a/src/external_libraries/inih/LICENSE.txt b/ExtLibraries/inih/LICENSE.txt similarity index 100% rename from src/external_libraries/inih/LICENSE.txt rename to ExtLibraries/inih/LICENSE.txt diff --git a/src/external_libraries/inih/README.md b/ExtLibraries/inih/README.md similarity index 100% rename from src/external_libraries/inih/README.md rename to ExtLibraries/inih/README.md diff --git a/src/external_libraries/inih/cpp/INIReader.cpp b/ExtLibraries/inih/cpp/INIReader.cpp similarity index 100% rename from src/external_libraries/inih/cpp/INIReader.cpp rename to ExtLibraries/inih/cpp/INIReader.cpp diff --git a/src/external_libraries/inih/cpp/INIReader.h b/ExtLibraries/inih/cpp/INIReader.h similarity index 100% rename from src/external_libraries/inih/cpp/INIReader.h rename to ExtLibraries/inih/cpp/INIReader.h diff --git a/src/external_libraries/inih/ini.c b/ExtLibraries/inih/ini.c similarity index 100% rename from src/external_libraries/inih/ini.c rename to ExtLibraries/inih/ini.c diff --git a/src/external_libraries/inih/ini.h b/ExtLibraries/inih/ini.h similarity index 100% rename from src/external_libraries/inih/ini.h rename to ExtLibraries/inih/ini.h From 0c075fdc262b5062436b4b93fc051d78c9e2dd29 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:14:35 +0900 Subject: [PATCH 179/456] Fix CMake and include path --- CMakeLists.txt | 6 +++--- .../external_libraries => ExtLibraries/inih}/CMakeLists.txt | 6 +++--- src/setting_file_reader/initialize_file_access.hpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) rename {src/external_libraries => ExtLibraries/inih}/CMakeLists.txt (62%) diff --git a/CMakeLists.txt b/CMakeLists.txt index bb2767281..9c35dc7c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,10 +89,10 @@ add_subdirectory(src/dynamics) add_subdirectory(src/disturbances) add_subdirectory(src/components) add_subdirectory(src/library) -add_subdirectory(src/external_libraries) add_subdirectory(src/setting_file_reader) add_subdirectory(src/logger) add_subdirectory(src/utilities) +add_subdirectory(ExtLibraries/inih) set(SOURCE_FILES src/s2e.cpp @@ -187,8 +187,8 @@ target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) -target_link_libraries(EXTERNAL_LIBRARY ${NRLMSISE00_LIB}) -target_link_libraries(SETTING_FILE_READER EXTERNAL_LIBRARY) +target_link_libraries(LIBRARY ${NRLMSISE00_LIB}) +target_link_libraries(SETTING_FILE_READER INIH) target_link_libraries(${PROJECT_NAME} DYNAMICS) target_link_libraries(${PROJECT_NAME} DISTURBANCE) diff --git a/src/external_libraries/CMakeLists.txt b/ExtLibraries/inih/CMakeLists.txt similarity index 62% rename from src/external_libraries/CMakeLists.txt rename to ExtLibraries/inih/CMakeLists.txt index bf810420a..4b18a7051 100644 --- a/src/external_libraries/CMakeLists.txt +++ b/ExtLibraries/inih/CMakeLists.txt @@ -1,9 +1,9 @@ -project(EXTERNAL_LIBRARY) +project(INIH) cmake_minimum_required(VERSION 3.13) add_library(${PROJECT_NAME} STATIC - inih/ini.c - inih/cpp/INIReader.cpp + ini.c + cpp/INIReader.cpp ) include(../../common.cmake) diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index 164085abe..fd8c4c4f9 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -17,7 +17,7 @@ #define NOMINMAX #include #else -#include "../external_libraries/inih/cpp/INIReader.h" +#include "../../ExtLibraries/inih/cpp/INIReader.h" #endif #include From 9e94d9f49d8257fd80cd534e2a4cec0814fbf014 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 6 Mar 2024 22:28:59 +0900 Subject: [PATCH 180/456] Fix format --- src/environment/global/earth_rotation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 3c21892ab..ad468f182 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -11,9 +11,9 @@ #include #include +#include "library/math/constants.hpp" #include "library/orbit/sgp4/sgp4ext.h" // for jday() #include "library/orbit/sgp4/sgp4unit.h" // for gstime() -#include "library/math/constants.hpp" // Default constructor EarthRotation::EarthRotation(const EarthRotationMode rotation_mode) : rotation_mode_(rotation_mode) { From 406e3956f83fb67f4969222f7fabbea3c37b685c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Thu, 7 Mar 2024 21:36:28 +0900 Subject: [PATCH 181/456] Rename library to math_physics --- src/{library => math_physics}/CMakeLists.txt | 0 .../atmosphere/harris_priester_coefficients.hpp | 0 .../atmosphere/harris_priester_model.cpp | 0 .../atmosphere/harris_priester_model.hpp | 0 .../atmosphere/simple_air_density_model.cpp | 0 .../atmosphere/simple_air_density_model.hpp | 0 src/{library => math_physics}/atmosphere/wrapper_nrlmsise00.cpp | 0 src/{library => math_physics}/atmosphere/wrapper_nrlmsise00.hpp | 0 .../control_utilities/first_order_lag.hpp | 0 src/{library => math_physics}/geodesy/geodetic_position.cpp | 0 src/{library => math_physics}/geodesy/geodetic_position.hpp | 0 src/{library => math_physics}/geomagnetic/igrf.cpp | 0 src/{library => math_physics}/geomagnetic/igrf.h | 0 src/{library => math_physics}/geomagnetic/igrf11.coef | 0 src/{library => math_physics}/geomagnetic/igrf12.coef | 0 src/{library => math_physics}/geomagnetic/igrf13.coef | 0 src/{library => math_physics}/gnss/antex_file_reader.cpp | 0 src/{library => math_physics}/gnss/antex_file_reader.hpp | 0 src/{library => math_physics}/gnss/bias_sinex_file_reader.cpp | 0 src/{library => math_physics}/gnss/bias_sinex_file_reader.hpp | 0 src/{library => math_physics}/gnss/example.BSX | 0 src/{library => math_physics}/gnss/example.atx | 0 src/{library => math_physics}/gnss/example.sp3 | 0 src/{library => math_physics}/gnss/gnss_satellite_number.cpp | 0 src/{library => math_physics}/gnss/gnss_satellite_number.hpp | 0 src/{library => math_physics}/gnss/igs_product_name_handling.hpp | 0 src/{library => math_physics}/gnss/sp3_file_reader.cpp | 0 src/{library => math_physics}/gnss/sp3_file_reader.hpp | 0 src/{library => math_physics}/gnss/test_antex_file_reader.cpp | 0 .../gnss/test_bias_sinex_file_reader.cpp | 0 src/{library => math_physics}/gnss/test_gnss_satellite_number.cpp | 0 .../gnss/test_igs_product_name_handling.cpp | 0 src/{library => math_physics}/gnss/test_sp3_file_reader.cpp | 0 src/{library => math_physics}/gravity/gravity_potential.cpp | 0 src/{library => math_physics}/gravity/gravity_potential.hpp | 0 src/{library => math_physics}/gravity/test_gravity_potential.cpp | 0 src/{library => math_physics}/math/constants.hpp | 0 src/{library => math_physics}/math/interpolation.cpp | 0 src/{library => math_physics}/math/interpolation.hpp | 0 src/{library => math_physics}/math/matrix.hpp | 0 src/{library => math_physics}/math/matrix_template_functions.hpp | 0 src/{library => math_physics}/math/matrix_vector.hpp | 0 .../math/matrix_vector_template_functions.hpp | 0 .../math/ordinary_differential_equation.hpp | 0 .../math/ordinary_differential_equation_template_functions.hpp | 0 src/{library => math_physics}/math/quaternion.cpp | 0 src/{library => math_physics}/math/quaternion.hpp | 0 src/{library => math_physics}/math/s2e_math.cpp | 0 src/{library => math_physics}/math/s2e_math.hpp | 0 src/{library => math_physics}/math/test_interpolation.cpp | 0 src/{library => math_physics}/math/test_matrix.cpp | 0 src/{library => math_physics}/math/test_matrix_vector.cpp | 0 src/{library => math_physics}/math/test_quaternion.cpp | 0 src/{library => math_physics}/math/test_s2e_math.cpp | 0 src/{library => math_physics}/math/test_vector.cpp | 0 src/{library => math_physics}/math/vector.cpp | 0 src/{library => math_physics}/math/vector.hpp | 0 src/{library => math_physics}/math/vector_template_functions.hpp | 0 .../numerical_integration/dormand_prince_5.hpp | 0 .../numerical_integration/dormand_prince_5_implementation.hpp | 0 .../numerical_integration/embedded_runge_kutta.hpp | 0 .../numerical_integration/embedded_runge_kutta_implementation.hpp | 0 .../numerical_integration/interface_ode.hpp | 0 .../numerical_integration/numerical_integrator.hpp | 0 .../numerical_integration/numerical_integrator_manager.hpp | 0 .../numerical_integration/ode_examples.hpp | 0 .../numerical_integration/runge_kutta.hpp | 0 .../numerical_integration/runge_kutta_4.hpp | 0 .../numerical_integration/runge_kutta_fehlberg.hpp | 0 .../numerical_integration/runge_kutta_fehlberg_implementation.hpp | 0 .../numerical_integration/runge_kutta_template.hpp | 0 .../numerical_integration/test_runge_kutta.cpp | 0 src/{library => math_physics}/optics/gaussian_beam_base.cpp | 0 src/{library => math_physics}/optics/gaussian_beam_base.hpp | 0 src/{library => math_physics}/orbit/interpolation_orbit.cpp | 0 src/{library => math_physics}/orbit/interpolation_orbit.hpp | 0 src/{library => math_physics}/orbit/kepler_orbit.cpp | 0 src/{library => math_physics}/orbit/kepler_orbit.hpp | 0 src/{library => math_physics}/orbit/orbital_elements.cpp | 0 src/{library => math_physics}/orbit/orbital_elements.hpp | 0 src/{library => math_physics}/orbit/relative_orbit_models.cpp | 0 src/{library => math_physics}/orbit/relative_orbit_models.hpp | 0 src/{library => math_physics}/orbit/sgp4/sgp4ext.cpp | 0 src/{library => math_physics}/orbit/sgp4/sgp4ext.h | 0 src/{library => math_physics}/orbit/sgp4/sgp4io.cpp | 0 src/{library => math_physics}/orbit/sgp4/sgp4io.h | 0 src/{library => math_physics}/orbit/sgp4/sgp4unit.cpp | 0 src/{library => math_physics}/orbit/sgp4/sgp4unit.h | 0 src/{library => math_physics}/orbit/test_interpolation_orbit.cpp | 0 .../planet_rotation/moon_rotation_utilities.cpp | 0 .../planet_rotation/moon_rotation_utilities.hpp | 0 .../randomization/global_randomization.cpp | 0 .../randomization/global_randomization.hpp | 0 .../minimal_standard_linear_congruential_generator.cpp | 0 .../minimal_standard_linear_congruential_generator.hpp | 0 ...inimal_standard_linear_congruential_generator_with_shuffle.cpp | 0 ...inimal_standard_linear_congruential_generator_with_shuffle.hpp | 0 .../randomization/normal_randomization.cpp | 0 .../randomization/normal_randomization.hpp | 0 src/{library => math_physics}/randomization/random_walk.hpp | 0 .../randomization/random_walk_template_functions.hpp | 0 src/{library => math_physics}/time_system/date_time_format.cpp | 0 src/{library => math_physics}/time_system/date_time_format.hpp | 0 src/{library => math_physics}/time_system/epoch_time.cpp | 0 src/{library => math_physics}/time_system/epoch_time.hpp | 0 src/{library => math_physics}/time_system/gps_time.cpp | 0 src/{library => math_physics}/time_system/gps_time.hpp | 0 .../time_system/test_date_time_format.cpp | 0 src/{library => math_physics}/time_system/test_epoch_time.cpp | 0 src/{library => math_physics}/time_system/test_gps_time.cpp | 0 110 files changed, 0 insertions(+), 0 deletions(-) rename src/{library => math_physics}/CMakeLists.txt (100%) rename src/{library => math_physics}/atmosphere/harris_priester_coefficients.hpp (100%) rename src/{library => math_physics}/atmosphere/harris_priester_model.cpp (100%) rename src/{library => math_physics}/atmosphere/harris_priester_model.hpp (100%) rename src/{library => math_physics}/atmosphere/simple_air_density_model.cpp (100%) rename src/{library => math_physics}/atmosphere/simple_air_density_model.hpp (100%) rename src/{library => math_physics}/atmosphere/wrapper_nrlmsise00.cpp (100%) rename src/{library => math_physics}/atmosphere/wrapper_nrlmsise00.hpp (100%) rename src/{library => math_physics}/control_utilities/first_order_lag.hpp (100%) rename src/{library => math_physics}/geodesy/geodetic_position.cpp (100%) rename src/{library => math_physics}/geodesy/geodetic_position.hpp (100%) rename src/{library => math_physics}/geomagnetic/igrf.cpp (100%) rename src/{library => math_physics}/geomagnetic/igrf.h (100%) rename src/{library => math_physics}/geomagnetic/igrf11.coef (100%) rename src/{library => math_physics}/geomagnetic/igrf12.coef (100%) rename src/{library => math_physics}/geomagnetic/igrf13.coef (100%) rename src/{library => math_physics}/gnss/antex_file_reader.cpp (100%) rename src/{library => math_physics}/gnss/antex_file_reader.hpp (100%) rename src/{library => math_physics}/gnss/bias_sinex_file_reader.cpp (100%) rename src/{library => math_physics}/gnss/bias_sinex_file_reader.hpp (100%) rename src/{library => math_physics}/gnss/example.BSX (100%) rename src/{library => math_physics}/gnss/example.atx (100%) rename src/{library => math_physics}/gnss/example.sp3 (100%) rename src/{library => math_physics}/gnss/gnss_satellite_number.cpp (100%) rename src/{library => math_physics}/gnss/gnss_satellite_number.hpp (100%) rename src/{library => math_physics}/gnss/igs_product_name_handling.hpp (100%) rename src/{library => math_physics}/gnss/sp3_file_reader.cpp (100%) rename src/{library => math_physics}/gnss/sp3_file_reader.hpp (100%) rename src/{library => math_physics}/gnss/test_antex_file_reader.cpp (100%) rename src/{library => math_physics}/gnss/test_bias_sinex_file_reader.cpp (100%) rename src/{library => math_physics}/gnss/test_gnss_satellite_number.cpp (100%) rename src/{library => math_physics}/gnss/test_igs_product_name_handling.cpp (100%) rename src/{library => math_physics}/gnss/test_sp3_file_reader.cpp (100%) rename src/{library => math_physics}/gravity/gravity_potential.cpp (100%) rename src/{library => math_physics}/gravity/gravity_potential.hpp (100%) rename src/{library => math_physics}/gravity/test_gravity_potential.cpp (100%) rename src/{library => math_physics}/math/constants.hpp (100%) rename src/{library => math_physics}/math/interpolation.cpp (100%) rename src/{library => math_physics}/math/interpolation.hpp (100%) rename src/{library => math_physics}/math/matrix.hpp (100%) rename src/{library => math_physics}/math/matrix_template_functions.hpp (100%) rename src/{library => math_physics}/math/matrix_vector.hpp (100%) rename src/{library => math_physics}/math/matrix_vector_template_functions.hpp (100%) rename src/{library => math_physics}/math/ordinary_differential_equation.hpp (100%) rename src/{library => math_physics}/math/ordinary_differential_equation_template_functions.hpp (100%) rename src/{library => math_physics}/math/quaternion.cpp (100%) rename src/{library => math_physics}/math/quaternion.hpp (100%) rename src/{library => math_physics}/math/s2e_math.cpp (100%) rename src/{library => math_physics}/math/s2e_math.hpp (100%) rename src/{library => math_physics}/math/test_interpolation.cpp (100%) rename src/{library => math_physics}/math/test_matrix.cpp (100%) rename src/{library => math_physics}/math/test_matrix_vector.cpp (100%) rename src/{library => math_physics}/math/test_quaternion.cpp (100%) rename src/{library => math_physics}/math/test_s2e_math.cpp (100%) rename src/{library => math_physics}/math/test_vector.cpp (100%) rename src/{library => math_physics}/math/vector.cpp (100%) rename src/{library => math_physics}/math/vector.hpp (100%) rename src/{library => math_physics}/math/vector_template_functions.hpp (100%) rename src/{library => math_physics}/numerical_integration/dormand_prince_5.hpp (100%) rename src/{library => math_physics}/numerical_integration/dormand_prince_5_implementation.hpp (100%) rename src/{library => math_physics}/numerical_integration/embedded_runge_kutta.hpp (100%) rename src/{library => math_physics}/numerical_integration/embedded_runge_kutta_implementation.hpp (100%) rename src/{library => math_physics}/numerical_integration/interface_ode.hpp (100%) rename src/{library => math_physics}/numerical_integration/numerical_integrator.hpp (100%) rename src/{library => math_physics}/numerical_integration/numerical_integrator_manager.hpp (100%) rename src/{library => math_physics}/numerical_integration/ode_examples.hpp (100%) rename src/{library => math_physics}/numerical_integration/runge_kutta.hpp (100%) rename src/{library => math_physics}/numerical_integration/runge_kutta_4.hpp (100%) rename src/{library => math_physics}/numerical_integration/runge_kutta_fehlberg.hpp (100%) rename src/{library => math_physics}/numerical_integration/runge_kutta_fehlberg_implementation.hpp (100%) rename src/{library => math_physics}/numerical_integration/runge_kutta_template.hpp (100%) rename src/{library => math_physics}/numerical_integration/test_runge_kutta.cpp (100%) rename src/{library => math_physics}/optics/gaussian_beam_base.cpp (100%) rename src/{library => math_physics}/optics/gaussian_beam_base.hpp (100%) rename src/{library => math_physics}/orbit/interpolation_orbit.cpp (100%) rename src/{library => math_physics}/orbit/interpolation_orbit.hpp (100%) rename src/{library => math_physics}/orbit/kepler_orbit.cpp (100%) rename src/{library => math_physics}/orbit/kepler_orbit.hpp (100%) rename src/{library => math_physics}/orbit/orbital_elements.cpp (100%) rename src/{library => math_physics}/orbit/orbital_elements.hpp (100%) rename src/{library => math_physics}/orbit/relative_orbit_models.cpp (100%) rename src/{library => math_physics}/orbit/relative_orbit_models.hpp (100%) rename src/{library => math_physics}/orbit/sgp4/sgp4ext.cpp (100%) rename src/{library => math_physics}/orbit/sgp4/sgp4ext.h (100%) rename src/{library => math_physics}/orbit/sgp4/sgp4io.cpp (100%) rename src/{library => math_physics}/orbit/sgp4/sgp4io.h (100%) rename src/{library => math_physics}/orbit/sgp4/sgp4unit.cpp (100%) rename src/{library => math_physics}/orbit/sgp4/sgp4unit.h (100%) rename src/{library => math_physics}/orbit/test_interpolation_orbit.cpp (100%) rename src/{library => math_physics}/planet_rotation/moon_rotation_utilities.cpp (100%) rename src/{library => math_physics}/planet_rotation/moon_rotation_utilities.hpp (100%) rename src/{library => math_physics}/randomization/global_randomization.cpp (100%) rename src/{library => math_physics}/randomization/global_randomization.hpp (100%) rename src/{library => math_physics}/randomization/minimal_standard_linear_congruential_generator.cpp (100%) rename src/{library => math_physics}/randomization/minimal_standard_linear_congruential_generator.hpp (100%) rename src/{library => math_physics}/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp (100%) rename src/{library => math_physics}/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp (100%) rename src/{library => math_physics}/randomization/normal_randomization.cpp (100%) rename src/{library => math_physics}/randomization/normal_randomization.hpp (100%) rename src/{library => math_physics}/randomization/random_walk.hpp (100%) rename src/{library => math_physics}/randomization/random_walk_template_functions.hpp (100%) rename src/{library => math_physics}/time_system/date_time_format.cpp (100%) rename src/{library => math_physics}/time_system/date_time_format.hpp (100%) rename src/{library => math_physics}/time_system/epoch_time.cpp (100%) rename src/{library => math_physics}/time_system/epoch_time.hpp (100%) rename src/{library => math_physics}/time_system/gps_time.cpp (100%) rename src/{library => math_physics}/time_system/gps_time.hpp (100%) rename src/{library => math_physics}/time_system/test_date_time_format.cpp (100%) rename src/{library => math_physics}/time_system/test_epoch_time.cpp (100%) rename src/{library => math_physics}/time_system/test_gps_time.cpp (100%) diff --git a/src/library/CMakeLists.txt b/src/math_physics/CMakeLists.txt similarity index 100% rename from src/library/CMakeLists.txt rename to src/math_physics/CMakeLists.txt diff --git a/src/library/atmosphere/harris_priester_coefficients.hpp b/src/math_physics/atmosphere/harris_priester_coefficients.hpp similarity index 100% rename from src/library/atmosphere/harris_priester_coefficients.hpp rename to src/math_physics/atmosphere/harris_priester_coefficients.hpp diff --git a/src/library/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp similarity index 100% rename from src/library/atmosphere/harris_priester_model.cpp rename to src/math_physics/atmosphere/harris_priester_model.cpp diff --git a/src/library/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp similarity index 100% rename from src/library/atmosphere/harris_priester_model.hpp rename to src/math_physics/atmosphere/harris_priester_model.hpp diff --git a/src/library/atmosphere/simple_air_density_model.cpp b/src/math_physics/atmosphere/simple_air_density_model.cpp similarity index 100% rename from src/library/atmosphere/simple_air_density_model.cpp rename to src/math_physics/atmosphere/simple_air_density_model.cpp diff --git a/src/library/atmosphere/simple_air_density_model.hpp b/src/math_physics/atmosphere/simple_air_density_model.hpp similarity index 100% rename from src/library/atmosphere/simple_air_density_model.hpp rename to src/math_physics/atmosphere/simple_air_density_model.hpp diff --git a/src/library/atmosphere/wrapper_nrlmsise00.cpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp similarity index 100% rename from src/library/atmosphere/wrapper_nrlmsise00.cpp rename to src/math_physics/atmosphere/wrapper_nrlmsise00.cpp diff --git a/src/library/atmosphere/wrapper_nrlmsise00.hpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.hpp similarity index 100% rename from src/library/atmosphere/wrapper_nrlmsise00.hpp rename to src/math_physics/atmosphere/wrapper_nrlmsise00.hpp diff --git a/src/library/control_utilities/first_order_lag.hpp b/src/math_physics/control_utilities/first_order_lag.hpp similarity index 100% rename from src/library/control_utilities/first_order_lag.hpp rename to src/math_physics/control_utilities/first_order_lag.hpp diff --git a/src/library/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp similarity index 100% rename from src/library/geodesy/geodetic_position.cpp rename to src/math_physics/geodesy/geodetic_position.cpp diff --git a/src/library/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp similarity index 100% rename from src/library/geodesy/geodetic_position.hpp rename to src/math_physics/geodesy/geodetic_position.hpp diff --git a/src/library/geomagnetic/igrf.cpp b/src/math_physics/geomagnetic/igrf.cpp similarity index 100% rename from src/library/geomagnetic/igrf.cpp rename to src/math_physics/geomagnetic/igrf.cpp diff --git a/src/library/geomagnetic/igrf.h b/src/math_physics/geomagnetic/igrf.h similarity index 100% rename from src/library/geomagnetic/igrf.h rename to src/math_physics/geomagnetic/igrf.h diff --git a/src/library/geomagnetic/igrf11.coef b/src/math_physics/geomagnetic/igrf11.coef similarity index 100% rename from src/library/geomagnetic/igrf11.coef rename to src/math_physics/geomagnetic/igrf11.coef diff --git a/src/library/geomagnetic/igrf12.coef b/src/math_physics/geomagnetic/igrf12.coef similarity index 100% rename from src/library/geomagnetic/igrf12.coef rename to src/math_physics/geomagnetic/igrf12.coef diff --git a/src/library/geomagnetic/igrf13.coef b/src/math_physics/geomagnetic/igrf13.coef similarity index 100% rename from src/library/geomagnetic/igrf13.coef rename to src/math_physics/geomagnetic/igrf13.coef diff --git a/src/library/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp similarity index 100% rename from src/library/gnss/antex_file_reader.cpp rename to src/math_physics/gnss/antex_file_reader.cpp diff --git a/src/library/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp similarity index 100% rename from src/library/gnss/antex_file_reader.hpp rename to src/math_physics/gnss/antex_file_reader.hpp diff --git a/src/library/gnss/bias_sinex_file_reader.cpp b/src/math_physics/gnss/bias_sinex_file_reader.cpp similarity index 100% rename from src/library/gnss/bias_sinex_file_reader.cpp rename to src/math_physics/gnss/bias_sinex_file_reader.cpp diff --git a/src/library/gnss/bias_sinex_file_reader.hpp b/src/math_physics/gnss/bias_sinex_file_reader.hpp similarity index 100% rename from src/library/gnss/bias_sinex_file_reader.hpp rename to src/math_physics/gnss/bias_sinex_file_reader.hpp diff --git a/src/library/gnss/example.BSX b/src/math_physics/gnss/example.BSX similarity index 100% rename from src/library/gnss/example.BSX rename to src/math_physics/gnss/example.BSX diff --git a/src/library/gnss/example.atx b/src/math_physics/gnss/example.atx similarity index 100% rename from src/library/gnss/example.atx rename to src/math_physics/gnss/example.atx diff --git a/src/library/gnss/example.sp3 b/src/math_physics/gnss/example.sp3 similarity index 100% rename from src/library/gnss/example.sp3 rename to src/math_physics/gnss/example.sp3 diff --git a/src/library/gnss/gnss_satellite_number.cpp b/src/math_physics/gnss/gnss_satellite_number.cpp similarity index 100% rename from src/library/gnss/gnss_satellite_number.cpp rename to src/math_physics/gnss/gnss_satellite_number.cpp diff --git a/src/library/gnss/gnss_satellite_number.hpp b/src/math_physics/gnss/gnss_satellite_number.hpp similarity index 100% rename from src/library/gnss/gnss_satellite_number.hpp rename to src/math_physics/gnss/gnss_satellite_number.hpp diff --git a/src/library/gnss/igs_product_name_handling.hpp b/src/math_physics/gnss/igs_product_name_handling.hpp similarity index 100% rename from src/library/gnss/igs_product_name_handling.hpp rename to src/math_physics/gnss/igs_product_name_handling.hpp diff --git a/src/library/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp similarity index 100% rename from src/library/gnss/sp3_file_reader.cpp rename to src/math_physics/gnss/sp3_file_reader.cpp diff --git a/src/library/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp similarity index 100% rename from src/library/gnss/sp3_file_reader.hpp rename to src/math_physics/gnss/sp3_file_reader.hpp diff --git a/src/library/gnss/test_antex_file_reader.cpp b/src/math_physics/gnss/test_antex_file_reader.cpp similarity index 100% rename from src/library/gnss/test_antex_file_reader.cpp rename to src/math_physics/gnss/test_antex_file_reader.cpp diff --git a/src/library/gnss/test_bias_sinex_file_reader.cpp b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp similarity index 100% rename from src/library/gnss/test_bias_sinex_file_reader.cpp rename to src/math_physics/gnss/test_bias_sinex_file_reader.cpp diff --git a/src/library/gnss/test_gnss_satellite_number.cpp b/src/math_physics/gnss/test_gnss_satellite_number.cpp similarity index 100% rename from src/library/gnss/test_gnss_satellite_number.cpp rename to src/math_physics/gnss/test_gnss_satellite_number.cpp diff --git a/src/library/gnss/test_igs_product_name_handling.cpp b/src/math_physics/gnss/test_igs_product_name_handling.cpp similarity index 100% rename from src/library/gnss/test_igs_product_name_handling.cpp rename to src/math_physics/gnss/test_igs_product_name_handling.cpp diff --git a/src/library/gnss/test_sp3_file_reader.cpp b/src/math_physics/gnss/test_sp3_file_reader.cpp similarity index 100% rename from src/library/gnss/test_sp3_file_reader.cpp rename to src/math_physics/gnss/test_sp3_file_reader.cpp diff --git a/src/library/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp similarity index 100% rename from src/library/gravity/gravity_potential.cpp rename to src/math_physics/gravity/gravity_potential.cpp diff --git a/src/library/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp similarity index 100% rename from src/library/gravity/gravity_potential.hpp rename to src/math_physics/gravity/gravity_potential.hpp diff --git a/src/library/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp similarity index 100% rename from src/library/gravity/test_gravity_potential.cpp rename to src/math_physics/gravity/test_gravity_potential.cpp diff --git a/src/library/math/constants.hpp b/src/math_physics/math/constants.hpp similarity index 100% rename from src/library/math/constants.hpp rename to src/math_physics/math/constants.hpp diff --git a/src/library/math/interpolation.cpp b/src/math_physics/math/interpolation.cpp similarity index 100% rename from src/library/math/interpolation.cpp rename to src/math_physics/math/interpolation.cpp diff --git a/src/library/math/interpolation.hpp b/src/math_physics/math/interpolation.hpp similarity index 100% rename from src/library/math/interpolation.hpp rename to src/math_physics/math/interpolation.hpp diff --git a/src/library/math/matrix.hpp b/src/math_physics/math/matrix.hpp similarity index 100% rename from src/library/math/matrix.hpp rename to src/math_physics/math/matrix.hpp diff --git a/src/library/math/matrix_template_functions.hpp b/src/math_physics/math/matrix_template_functions.hpp similarity index 100% rename from src/library/math/matrix_template_functions.hpp rename to src/math_physics/math/matrix_template_functions.hpp diff --git a/src/library/math/matrix_vector.hpp b/src/math_physics/math/matrix_vector.hpp similarity index 100% rename from src/library/math/matrix_vector.hpp rename to src/math_physics/math/matrix_vector.hpp diff --git a/src/library/math/matrix_vector_template_functions.hpp b/src/math_physics/math/matrix_vector_template_functions.hpp similarity index 100% rename from src/library/math/matrix_vector_template_functions.hpp rename to src/math_physics/math/matrix_vector_template_functions.hpp diff --git a/src/library/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp similarity index 100% rename from src/library/math/ordinary_differential_equation.hpp rename to src/math_physics/math/ordinary_differential_equation.hpp diff --git a/src/library/math/ordinary_differential_equation_template_functions.hpp b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp similarity index 100% rename from src/library/math/ordinary_differential_equation_template_functions.hpp rename to src/math_physics/math/ordinary_differential_equation_template_functions.hpp diff --git a/src/library/math/quaternion.cpp b/src/math_physics/math/quaternion.cpp similarity index 100% rename from src/library/math/quaternion.cpp rename to src/math_physics/math/quaternion.cpp diff --git a/src/library/math/quaternion.hpp b/src/math_physics/math/quaternion.hpp similarity index 100% rename from src/library/math/quaternion.hpp rename to src/math_physics/math/quaternion.hpp diff --git a/src/library/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp similarity index 100% rename from src/library/math/s2e_math.cpp rename to src/math_physics/math/s2e_math.cpp diff --git a/src/library/math/s2e_math.hpp b/src/math_physics/math/s2e_math.hpp similarity index 100% rename from src/library/math/s2e_math.hpp rename to src/math_physics/math/s2e_math.hpp diff --git a/src/library/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp similarity index 100% rename from src/library/math/test_interpolation.cpp rename to src/math_physics/math/test_interpolation.cpp diff --git a/src/library/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp similarity index 100% rename from src/library/math/test_matrix.cpp rename to src/math_physics/math/test_matrix.cpp diff --git a/src/library/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp similarity index 100% rename from src/library/math/test_matrix_vector.cpp rename to src/math_physics/math/test_matrix_vector.cpp diff --git a/src/library/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp similarity index 100% rename from src/library/math/test_quaternion.cpp rename to src/math_physics/math/test_quaternion.cpp diff --git a/src/library/math/test_s2e_math.cpp b/src/math_physics/math/test_s2e_math.cpp similarity index 100% rename from src/library/math/test_s2e_math.cpp rename to src/math_physics/math/test_s2e_math.cpp diff --git a/src/library/math/test_vector.cpp b/src/math_physics/math/test_vector.cpp similarity index 100% rename from src/library/math/test_vector.cpp rename to src/math_physics/math/test_vector.cpp diff --git a/src/library/math/vector.cpp b/src/math_physics/math/vector.cpp similarity index 100% rename from src/library/math/vector.cpp rename to src/math_physics/math/vector.cpp diff --git a/src/library/math/vector.hpp b/src/math_physics/math/vector.hpp similarity index 100% rename from src/library/math/vector.hpp rename to src/math_physics/math/vector.hpp diff --git a/src/library/math/vector_template_functions.hpp b/src/math_physics/math/vector_template_functions.hpp similarity index 100% rename from src/library/math/vector_template_functions.hpp rename to src/math_physics/math/vector_template_functions.hpp diff --git a/src/library/numerical_integration/dormand_prince_5.hpp b/src/math_physics/numerical_integration/dormand_prince_5.hpp similarity index 100% rename from src/library/numerical_integration/dormand_prince_5.hpp rename to src/math_physics/numerical_integration/dormand_prince_5.hpp diff --git a/src/library/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp similarity index 100% rename from src/library/numerical_integration/dormand_prince_5_implementation.hpp rename to src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp diff --git a/src/library/numerical_integration/embedded_runge_kutta.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta.hpp similarity index 100% rename from src/library/numerical_integration/embedded_runge_kutta.hpp rename to src/math_physics/numerical_integration/embedded_runge_kutta.hpp diff --git a/src/library/numerical_integration/embedded_runge_kutta_implementation.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp similarity index 100% rename from src/library/numerical_integration/embedded_runge_kutta_implementation.hpp rename to src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp diff --git a/src/library/numerical_integration/interface_ode.hpp b/src/math_physics/numerical_integration/interface_ode.hpp similarity index 100% rename from src/library/numerical_integration/interface_ode.hpp rename to src/math_physics/numerical_integration/interface_ode.hpp diff --git a/src/library/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp similarity index 100% rename from src/library/numerical_integration/numerical_integrator.hpp rename to src/math_physics/numerical_integration/numerical_integrator.hpp diff --git a/src/library/numerical_integration/numerical_integrator_manager.hpp b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp similarity index 100% rename from src/library/numerical_integration/numerical_integrator_manager.hpp rename to src/math_physics/numerical_integration/numerical_integrator_manager.hpp diff --git a/src/library/numerical_integration/ode_examples.hpp b/src/math_physics/numerical_integration/ode_examples.hpp similarity index 100% rename from src/library/numerical_integration/ode_examples.hpp rename to src/math_physics/numerical_integration/ode_examples.hpp diff --git a/src/library/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp similarity index 100% rename from src/library/numerical_integration/runge_kutta.hpp rename to src/math_physics/numerical_integration/runge_kutta.hpp diff --git a/src/library/numerical_integration/runge_kutta_4.hpp b/src/math_physics/numerical_integration/runge_kutta_4.hpp similarity index 100% rename from src/library/numerical_integration/runge_kutta_4.hpp rename to src/math_physics/numerical_integration/runge_kutta_4.hpp diff --git a/src/library/numerical_integration/runge_kutta_fehlberg.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp similarity index 100% rename from src/library/numerical_integration/runge_kutta_fehlberg.hpp rename to src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp diff --git a/src/library/numerical_integration/runge_kutta_fehlberg_implementation.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp similarity index 100% rename from src/library/numerical_integration/runge_kutta_fehlberg_implementation.hpp rename to src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp diff --git a/src/library/numerical_integration/runge_kutta_template.hpp b/src/math_physics/numerical_integration/runge_kutta_template.hpp similarity index 100% rename from src/library/numerical_integration/runge_kutta_template.hpp rename to src/math_physics/numerical_integration/runge_kutta_template.hpp diff --git a/src/library/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp similarity index 100% rename from src/library/numerical_integration/test_runge_kutta.cpp rename to src/math_physics/numerical_integration/test_runge_kutta.cpp diff --git a/src/library/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp similarity index 100% rename from src/library/optics/gaussian_beam_base.cpp rename to src/math_physics/optics/gaussian_beam_base.cpp diff --git a/src/library/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp similarity index 100% rename from src/library/optics/gaussian_beam_base.hpp rename to src/math_physics/optics/gaussian_beam_base.hpp diff --git a/src/library/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp similarity index 100% rename from src/library/orbit/interpolation_orbit.cpp rename to src/math_physics/orbit/interpolation_orbit.cpp diff --git a/src/library/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp similarity index 100% rename from src/library/orbit/interpolation_orbit.hpp rename to src/math_physics/orbit/interpolation_orbit.hpp diff --git a/src/library/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp similarity index 100% rename from src/library/orbit/kepler_orbit.cpp rename to src/math_physics/orbit/kepler_orbit.cpp diff --git a/src/library/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp similarity index 100% rename from src/library/orbit/kepler_orbit.hpp rename to src/math_physics/orbit/kepler_orbit.hpp diff --git a/src/library/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp similarity index 100% rename from src/library/orbit/orbital_elements.cpp rename to src/math_physics/orbit/orbital_elements.cpp diff --git a/src/library/orbit/orbital_elements.hpp b/src/math_physics/orbit/orbital_elements.hpp similarity index 100% rename from src/library/orbit/orbital_elements.hpp rename to src/math_physics/orbit/orbital_elements.hpp diff --git a/src/library/orbit/relative_orbit_models.cpp b/src/math_physics/orbit/relative_orbit_models.cpp similarity index 100% rename from src/library/orbit/relative_orbit_models.cpp rename to src/math_physics/orbit/relative_orbit_models.cpp diff --git a/src/library/orbit/relative_orbit_models.hpp b/src/math_physics/orbit/relative_orbit_models.hpp similarity index 100% rename from src/library/orbit/relative_orbit_models.hpp rename to src/math_physics/orbit/relative_orbit_models.hpp diff --git a/src/library/orbit/sgp4/sgp4ext.cpp b/src/math_physics/orbit/sgp4/sgp4ext.cpp similarity index 100% rename from src/library/orbit/sgp4/sgp4ext.cpp rename to src/math_physics/orbit/sgp4/sgp4ext.cpp diff --git a/src/library/orbit/sgp4/sgp4ext.h b/src/math_physics/orbit/sgp4/sgp4ext.h similarity index 100% rename from src/library/orbit/sgp4/sgp4ext.h rename to src/math_physics/orbit/sgp4/sgp4ext.h diff --git a/src/library/orbit/sgp4/sgp4io.cpp b/src/math_physics/orbit/sgp4/sgp4io.cpp similarity index 100% rename from src/library/orbit/sgp4/sgp4io.cpp rename to src/math_physics/orbit/sgp4/sgp4io.cpp diff --git a/src/library/orbit/sgp4/sgp4io.h b/src/math_physics/orbit/sgp4/sgp4io.h similarity index 100% rename from src/library/orbit/sgp4/sgp4io.h rename to src/math_physics/orbit/sgp4/sgp4io.h diff --git a/src/library/orbit/sgp4/sgp4unit.cpp b/src/math_physics/orbit/sgp4/sgp4unit.cpp similarity index 100% rename from src/library/orbit/sgp4/sgp4unit.cpp rename to src/math_physics/orbit/sgp4/sgp4unit.cpp diff --git a/src/library/orbit/sgp4/sgp4unit.h b/src/math_physics/orbit/sgp4/sgp4unit.h similarity index 100% rename from src/library/orbit/sgp4/sgp4unit.h rename to src/math_physics/orbit/sgp4/sgp4unit.h diff --git a/src/library/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp similarity index 100% rename from src/library/orbit/test_interpolation_orbit.cpp rename to src/math_physics/orbit/test_interpolation_orbit.cpp diff --git a/src/library/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp similarity index 100% rename from src/library/planet_rotation/moon_rotation_utilities.cpp rename to src/math_physics/planet_rotation/moon_rotation_utilities.cpp diff --git a/src/library/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp similarity index 100% rename from src/library/planet_rotation/moon_rotation_utilities.hpp rename to src/math_physics/planet_rotation/moon_rotation_utilities.hpp diff --git a/src/library/randomization/global_randomization.cpp b/src/math_physics/randomization/global_randomization.cpp similarity index 100% rename from src/library/randomization/global_randomization.cpp rename to src/math_physics/randomization/global_randomization.cpp diff --git a/src/library/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp similarity index 100% rename from src/library/randomization/global_randomization.hpp rename to src/math_physics/randomization/global_randomization.hpp diff --git a/src/library/randomization/minimal_standard_linear_congruential_generator.cpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp similarity index 100% rename from src/library/randomization/minimal_standard_linear_congruential_generator.cpp rename to src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp diff --git a/src/library/randomization/minimal_standard_linear_congruential_generator.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp similarity index 100% rename from src/library/randomization/minimal_standard_linear_congruential_generator.hpp rename to src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp diff --git a/src/library/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp similarity index 100% rename from src/library/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp rename to src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp diff --git a/src/library/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp similarity index 100% rename from src/library/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp rename to src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp diff --git a/src/library/randomization/normal_randomization.cpp b/src/math_physics/randomization/normal_randomization.cpp similarity index 100% rename from src/library/randomization/normal_randomization.cpp rename to src/math_physics/randomization/normal_randomization.cpp diff --git a/src/library/randomization/normal_randomization.hpp b/src/math_physics/randomization/normal_randomization.hpp similarity index 100% rename from src/library/randomization/normal_randomization.hpp rename to src/math_physics/randomization/normal_randomization.hpp diff --git a/src/library/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp similarity index 100% rename from src/library/randomization/random_walk.hpp rename to src/math_physics/randomization/random_walk.hpp diff --git a/src/library/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp similarity index 100% rename from src/library/randomization/random_walk_template_functions.hpp rename to src/math_physics/randomization/random_walk_template_functions.hpp diff --git a/src/library/time_system/date_time_format.cpp b/src/math_physics/time_system/date_time_format.cpp similarity index 100% rename from src/library/time_system/date_time_format.cpp rename to src/math_physics/time_system/date_time_format.cpp diff --git a/src/library/time_system/date_time_format.hpp b/src/math_physics/time_system/date_time_format.hpp similarity index 100% rename from src/library/time_system/date_time_format.hpp rename to src/math_physics/time_system/date_time_format.hpp diff --git a/src/library/time_system/epoch_time.cpp b/src/math_physics/time_system/epoch_time.cpp similarity index 100% rename from src/library/time_system/epoch_time.cpp rename to src/math_physics/time_system/epoch_time.cpp diff --git a/src/library/time_system/epoch_time.hpp b/src/math_physics/time_system/epoch_time.hpp similarity index 100% rename from src/library/time_system/epoch_time.hpp rename to src/math_physics/time_system/epoch_time.hpp diff --git a/src/library/time_system/gps_time.cpp b/src/math_physics/time_system/gps_time.cpp similarity index 100% rename from src/library/time_system/gps_time.cpp rename to src/math_physics/time_system/gps_time.cpp diff --git a/src/library/time_system/gps_time.hpp b/src/math_physics/time_system/gps_time.hpp similarity index 100% rename from src/library/time_system/gps_time.hpp rename to src/math_physics/time_system/gps_time.hpp diff --git a/src/library/time_system/test_date_time_format.cpp b/src/math_physics/time_system/test_date_time_format.cpp similarity index 100% rename from src/library/time_system/test_date_time_format.cpp rename to src/math_physics/time_system/test_date_time_format.cpp diff --git a/src/library/time_system/test_epoch_time.cpp b/src/math_physics/time_system/test_epoch_time.cpp similarity index 100% rename from src/library/time_system/test_epoch_time.cpp rename to src/math_physics/time_system/test_epoch_time.cpp diff --git a/src/library/time_system/test_gps_time.cpp b/src/math_physics/time_system/test_gps_time.cpp similarity index 100% rename from src/library/time_system/test_gps_time.cpp rename to src/math_physics/time_system/test_gps_time.cpp From 68b4c83179734d9c68e2e4890d50eea15eedfad1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Thu, 7 Mar 2024 21:38:44 +0900 Subject: [PATCH 182/456] Fix CMakeLists --- CMakeLists.txt | 18 +++++++++--------- src/math_physics/CMakeLists.txt | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c35dc7c3..3f5934879 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,7 @@ add_subdirectory(src/environment/local) add_subdirectory(src/dynamics) add_subdirectory(src/disturbances) add_subdirectory(src/components) -add_subdirectory(src/library) +add_subdirectory(src/math_physics) add_subdirectory(src/setting_file_reader) add_subdirectory(src/logger) add_subdirectory(src/utilities) @@ -181,13 +181,13 @@ endif() #target_link_libraries(${PROJECT_NAME} ${NRLMSISE00_LIB}) # Initialize link -target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY SETTING_FILE_READER LOGGER UTILITIES) -target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION LIBRARY) -target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT LIBRARY) -target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE LIBRARY) -target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) -target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} LIBRARY) -target_link_libraries(LIBRARY ${NRLMSISE00_LIB}) +target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT MATH_PHYSICS SETTING_FILE_READER LOGGER UTILITIES) +target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION MATH_PHYSICS) +target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT MATH_PHYSICS) +target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE MATH_PHYSICS) +target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} MATH_PHYSICS) +target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} MATH_PHYSICS) +target_link_libraries(MATH_PHYSICS ${NRLMSISE00_LIB}) target_link_libraries(SETTING_FILE_READER INIH) target_link_libraries(${PROJECT_NAME} DYNAMICS) @@ -239,7 +239,7 @@ if(GOOGLE_TEST) add_executable(${TEST_PROJECT_NAME} ${TEST_FILES}) target_link_libraries(${TEST_PROJECT_NAME} gtest gtest_main gmock) - target_link_libraries(${TEST_PROJECT_NAME} LIBRARY) + target_link_libraries(${TEST_PROJECT_NAME} MATH_PHYSICS) include_directories(${TEST_PROJECT_NAME}) add_test(NAME s2e-test COMMAND ${TEST_PROJECT_NAME}) enable_testing() diff --git a/src/math_physics/CMakeLists.txt b/src/math_physics/CMakeLists.txt index 7fa3be51b..7eb305f84 100644 --- a/src/math_physics/CMakeLists.txt +++ b/src/math_physics/CMakeLists.txt @@ -1,4 +1,4 @@ -project(LIBRARY) +project(MATH_PHYSICS) cmake_minimum_required(VERSION 3.13) add_library(${PROJECT_NAME} STATIC From 1f632ab3de022505d5f6383ea4c1b7f25c867d4a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Thu, 7 Mar 2024 21:41:06 +0900 Subject: [PATCH 183/456] Fix include path for library --- .../sample_local_environment.ini | 2 +- src/components/base/sensor.hpp | 8 ++++---- .../base/sensor_template_functions.hpp | 2 +- .../examples/example_change_structure.cpp | 2 +- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ideal/attitude_observer.hpp | 4 ++-- src/components/ideal/force_generator.hpp | 4 ++-- src/components/ideal/torque_generator.hpp | 4 ++-- src/components/real/aocs/gnss_receiver.cpp | 4 ++-- src/components/real/aocs/gnss_receiver.hpp | 6 +++--- src/components/real/aocs/gyro_sensor.hpp | 2 +- src/components/real/aocs/magnetometer.cpp | 2 +- src/components/real/aocs/magnetometer.hpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 6 +++--- src/components/real/aocs/magnetorquer.hpp | 10 +++++----- src/components/real/aocs/reaction_wheel.cpp | 4 ++-- src/components/real/aocs/reaction_wheel.hpp | 4 ++-- .../real/aocs/reaction_wheel_jitter.cpp | 2 +- .../real/aocs/reaction_wheel_jitter.hpp | 4 ++-- src/components/real/aocs/reaction_wheel_ode.hpp | 2 +- src/components/real/aocs/star_sensor.cpp | 6 +++--- src/components/real/aocs/star_sensor.hpp | 8 ++++---- src/components/real/aocs/sun_sensor.cpp | 6 +++--- src/components/real/aocs/sun_sensor.hpp | 6 +++--- src/components/real/communication/antenna.hpp | 4 ++-- .../communication/antenna_radiation_pattern.cpp | 2 +- .../communication/antenna_radiation_pattern.hpp | 2 +- .../communication/ground_station_calculator.cpp | 2 +- src/components/real/mission/telescope.cpp | 2 +- src/components/real/mission/telescope.hpp | 4 ++-- .../real/power/csv_scenario_interface.hpp | 2 +- src/components/real/power/solar_array_panel.hpp | 2 +- .../real/propulsion/simple_thruster.cpp | 4 ++-- .../real/propulsion/simple_thruster.hpp | 6 +++--- src/disturbances/air_drag.cpp | 2 +- src/disturbances/air_drag.hpp | 4 ++-- src/disturbances/disturbance.hpp | 2 +- src/disturbances/geopotential.hpp | 4 ++-- src/disturbances/gravity_gradient.hpp | 6 +++--- src/disturbances/lunar_gravity_field.hpp | 4 ++-- src/disturbances/magnetic_disturbance.cpp | 6 +++--- src/disturbances/magnetic_disturbance.hpp | 2 +- .../solar_radiation_pressure_disturbance.hpp | 2 +- src/disturbances/surface_force.cpp | 2 +- src/disturbances/surface_force.hpp | 4 ++-- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.hpp | 4 ++-- src/dynamics/attitude/controlled_attitude.hpp | 2 +- src/dynamics/dynamics.hpp | 2 +- src/dynamics/orbit/encke_orbit_propagation.cpp | 2 +- src/dynamics/orbit/encke_orbit_propagation.hpp | 4 ++-- src/dynamics/orbit/initialize_orbit.hpp | 2 +- src/dynamics/orbit/kepler_orbit_propagation.cpp | 2 +- src/dynamics/orbit/kepler_orbit_propagation.hpp | 2 +- src/dynamics/orbit/orbit.hpp | 12 ++++++------ src/dynamics/orbit/relative_orbit.hpp | 4 ++-- src/dynamics/orbit/rk4_orbit_propagation.hpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.hpp | 4 ++-- src/environment/global/celestial_information.hpp | 4 ++-- src/environment/global/earth_rotation.cpp | 6 +++--- src/environment/global/earth_rotation.hpp | 2 +- src/environment/global/gnss_satellites.cpp | 8 ++++---- src/environment/global/gnss_satellites.hpp | 16 ++++++++-------- src/environment/global/hipparcos_catalogue.cpp | 2 +- src/environment/global/hipparcos_catalogue.hpp | 4 ++-- src/environment/global/moon_rotation.cpp | 4 ++-- src/environment/global/moon_rotation.hpp | 4 ++-- src/environment/global/simulation_time.hpp | 6 +++--- src/environment/local/atmosphere.cpp | 12 ++++++------ src/environment/local/atmosphere.hpp | 4 ++-- src/environment/local/geomagnetic_field.cpp | 8 ++++---- src/environment/local/geomagnetic_field.hpp | 6 +++--- .../solar_radiation_pressure_environment.cpp | 4 ++-- src/logger/log_utility.hpp | 4 ++-- .../atmosphere/harris_priester_model.cpp | 2 +- .../atmosphere/harris_priester_model.hpp | 4 ++-- .../atmosphere/wrapper_nrlmsise00.cpp | 2 +- src/math_physics/geodesy/geodetic_position.cpp | 6 +++--- src/math_physics/geodesy/geodetic_position.hpp | 4 ++-- src/math_physics/geomagnetic/igrf.cpp | 2 +- src/math_physics/gnss/antex_file_reader.cpp | 2 +- src/math_physics/gnss/antex_file_reader.hpp | 4 ++-- src/math_physics/gnss/sp3_file_reader.hpp | 6 +++--- src/math_physics/gnss/test_antex_file_reader.cpp | 2 +- .../gnss/test_bias_sinex_file_reader.cpp | 2 +- src/math_physics/gnss/test_sp3_file_reader.cpp | 2 +- src/math_physics/math/s2e_math.cpp | 2 +- src/math_physics/optics/gaussian_beam_base.cpp | 2 +- src/math_physics/orbit/interpolation_orbit.hpp | 4 ++-- .../planet_rotation/moon_rotation_utilities.cpp | 4 ++-- .../planet_rotation/moon_rotation_utilities.hpp | 6 +++--- .../random_walk_template_functions.hpp | 2 +- .../initialize_file_access.hpp | 4 ++-- src/simulation/ground_station/ground_station.cpp | 2 +- src/simulation/ground_station/ground_station.hpp | 4 ++-- .../initialize_monte_carlo_parameters.cpp | 2 +- .../initialize_monte_carlo_parameters.hpp | 4 ++-- .../monte_carlo_simulation_executor.hpp | 2 +- .../monte_carlo_simulation/simulation_object.hpp | 4 ++-- .../spacecraft/installed_components.hpp | 2 +- .../structure/initialize_structure.cpp | 2 +- .../structure/kinematics_parameters.hpp | 4 ++-- .../structure/residual_magnetic_moment.hpp | 2 +- src/simulation/spacecraft/structure/surface.hpp | 2 +- .../spacecraft/sample_components.hpp | 2 +- .../spacecraft/sample_spacecraft.cpp | 2 +- 106 files changed, 202 insertions(+), 202 deletions(-) diff --git a/data/sample/initialize_files/sample_local_environment.ini b/data/sample/initialize_files/sample_local_environment.ini index b2809292b..bcd67e73c 100644 --- a/data/sample/initialize_files/sample_local_environment.ini +++ b/data/sample/initialize_files/sample_local_environment.ini @@ -1,7 +1,7 @@ [MAGNETIC_FIELD_ENVIRONMENT] calculation = ENABLE logging = ENABLE -coefficient_file = CORE_DIR_FROM_EXE/src/library/geomagnetic/igrf13.coef +coefficient_file = CORE_DIR_FROM_EXE/src/math_physics/geomagnetic/igrf13.coef magnetic_field_random_walk_standard_deviation_nT = 10.0 magnetic_field_random_walk_limit_nT = 400.0 magnetic_field_white_noise_standard_deviation_nT = 50.0 diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 111e71226..66b1bb1ce 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -6,10 +6,10 @@ #ifndef S2E_COMPONENTS_BASE_SENSOR_HPP_ #define S2E_COMPONENTS_BASE_SENSOR_HPP_ -#include -#include -#include -#include +#include +#include +#include +#include /** * @class Sensor diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 73f2046e8..e7c66b7d7 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ #define S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ -#include +#include #include template diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index 1dcd29b04..21bc129d0 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -5,7 +5,7 @@ #include "example_change_structure.hpp" -#include +#include ExampleChangeStructure::ExampleChangeStructure(ClockGenerator* clock_generator, Structure* structure) : Component(1, clock_generator), structure_(structure) {} diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index b920832f5..b098c0b22 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -5,7 +5,7 @@ #include "attitude_observer.hpp" -#include +#include #include AttitudeObserver::AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 4076cfed8..b36455141 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -7,8 +7,8 @@ #define S2E_COMPONENTS_IDEAL_ATTITUDE_OBSERVER_HPP_ #include -#include -#include +#include +#include #include #include "../base/component.hpp" diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 31b1110c5..c6a059d8d 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -8,8 +8,8 @@ #include #include -#include -#include +#include +#include #include /* diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 2e8b6b8c2..730f6b040 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -8,8 +8,8 @@ #include #include -#include -#include +#include +#include #include /* diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 55d832421..23f087117 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -6,8 +6,8 @@ #include "gnss_receiver.hpp" #include -#include -#include +#include +#include #include #include diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 9a783dc5b..13ab021b8 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -9,9 +9,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index 3cf311139..e6bcf26d9 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_AOCS_GYRO_SENSOR_HPP_ #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index dfb2b23b4..b2cbc730c 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -4,7 +4,7 @@ */ #include "magnetometer.hpp" -#include +#include #include Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 04d6bb32c..3059d0750 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -7,7 +7,7 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETOMETER_HPP_ #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 90a415065..c28e8e5f4 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,9 +5,9 @@ #include "magnetorquer.hpp" -#include -#include -#include +#include +#include +#include #include #include diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index dc89d0bc0..bddcc0b91 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -7,11 +7,11 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETORQUER_HPP_ #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 3b6a3f58e..cd275985c 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -6,8 +6,8 @@ #include #include -#include -#include +#include +#include #include #include diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 9919569c3..2edb4b865 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -6,8 +6,8 @@ #ifndef S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ #define S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ -#include -#include +#include +#include #include #include #include diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index 69b7c5b24..cf99ad2ea 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -5,7 +5,7 @@ #include "reaction_wheel_jitter.hpp" -#include +#include #include #include diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index 77c8bfc04..9eb241525 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -7,8 +7,8 @@ #define S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_JITTER_HPP_ #pragma once -#include -#include +#include +#include #include /* diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index bbedfe60d..6a4b333ae 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_ODE_HPP_ #define S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_ODE_HPP_ -#include +#include /* * @file ReactionWheelOde diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index f4e4ac7d8..2aad6aaca 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,9 +6,9 @@ #include "star_sensor.hpp" #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 7727b1321..a6aa0bcff 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -8,10 +8,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 80cef697b..b6759ea3a 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -5,10 +5,10 @@ #include "sun_sensor.hpp" -#include -#include +#include +#include using libra::NormalRand; -#include +#include #include #include diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 3e090333d..fb0f5fc2a 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -8,9 +8,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index 1d487493a..acee9935f 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -6,8 +6,8 @@ #ifndef S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_HPP_ #define S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_HPP_ -#include -#include +#include +#include using libra::Quaternion; using libra::Vector; #include diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index b2f3f6277..a82929c11 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -6,7 +6,7 @@ #include "antenna_radiation_pattern.hpp" #include -#include +#include #include AntennaRadiationPattern::AntennaRadiationPattern() { gain_dBi_.assign(length_theta_, std::vector(length_phi_, 0.0)); } diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index 35490c6b1..8c1736ca8 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_RADIATION_PATTERN_HPP_ #define S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_RADIATION_PATTERN_HPP_ -#include +#include #include #include diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 5295ff7c7..c15570112 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -6,7 +6,7 @@ #include "ground_station_calculator.hpp" #include -#include +#include #include GroundStationCalculator::GroundStationCalculator(const double loss_polarization_dB, const double loss_atmosphere_dB, const double loss_rainfall_dB, diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index bd02b053a..6112d2def 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include using namespace std; diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index bc8007f3f..b253ceb05 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -10,8 +10,8 @@ #include #include #include -#include -#include +#include +#include #include #include diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index c98812a49..65956c6a3 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -6,7 +6,7 @@ #ifndef S2E_COMPONENTS_REAL_POWER_CSV_SCENARIO_INTERFACE_HPP_ #define S2E_COMPONENTS_REAL_POWER_CSV_SCENARIO_INTERFACE_HPP_ -#include +#include #include #include #include diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index 00f1f7085..766e2c327 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include "../../base/component.hpp" diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index c133a8eb2..252204cda 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -5,8 +5,8 @@ #include "simple_thruster.hpp" #include -#include -#include +#include +#include #include // Constructor diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index b1864dd53..7cb355901 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -7,9 +7,9 @@ #define S2E_COMPONENTS_REAL_PROPULSION_SIMPLE_THRUSTER_HPP_ #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 6f69578ed..c3df5cc19 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include "../logger/log_utility.hpp" diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 3056df0f6..d5463eeb9 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -9,8 +9,8 @@ #include #include "../environment/local/atmosphere.hpp" -#include "../library/math/quaternion.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/math/quaternion.hpp" +#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" #include "surface_force.hpp" diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index f43285374..c898f18f0 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -7,7 +7,7 @@ #define S2E_DISTURBANCES_DISTURBANCE_HPP_ #include "../environment/local/local_environment.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/math/vector.hpp" /** * @class Disturbance diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index abe79028d..1360183fb 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -8,8 +8,8 @@ #include -#include "../library/gravity/gravity_potential.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/gravity/gravity_potential.hpp" +#include "../math_physics/math/vector.hpp" #include "disturbance.hpp" /** * @class Geopotential diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 09bd25a47..8b32f1e85 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -8,9 +8,9 @@ #include -#include "../library/math/matrix.hpp" -#include "../library/math/matrix_vector.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/math/matrix.hpp" +#include "../math_physics/math/matrix_vector.hpp" +#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" #include "disturbance.hpp" diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 13f1b9f22..61c592ab3 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -8,8 +8,8 @@ #include -#include "../library/gravity/gravity_potential.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/gravity/gravity_potential.hpp" +#include "../math_physics/math/vector.hpp" #include "disturbance.hpp" /** * @class LunarGravityField diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 60b6cacd8..5026e6573 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -8,9 +8,9 @@ #include #include -#include "../library/randomization/global_randomization.hpp" -#include "../library/randomization/normal_randomization.hpp" -#include "../library/randomization/random_walk.hpp" +#include "../math_physics/randomization/global_randomization.hpp" +#include "../math_physics/randomization/normal_randomization.hpp" +#include "../math_physics/randomization/random_walk.hpp" #include "../logger/log_utility.hpp" MagneticDisturbance::MagneticDisturbance(const ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 676e1671e..91f65049f 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -8,7 +8,7 @@ #include -#include "../library/math/vector.hpp" +#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" #include "../simulation/spacecraft/structure/residual_magnetic_moment.hpp" #include "disturbance.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 92180dd97..d4cecde70 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -8,7 +8,7 @@ #include -#include "../library/math/vector.hpp" +#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" #include "surface_force.hpp" diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index e6dce0716..8cf5c7278 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -5,7 +5,7 @@ #include "surface_force.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/math/vector.hpp" SurfaceForce::SurfaceForce(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index ad82c9fba..b07b7101f 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -10,8 +10,8 @@ #include -#include "../library/math/quaternion.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/math/quaternion.hpp" +#include "../math_physics/math/vector.hpp" #include "../simulation/spacecraft/structure/surface.hpp" #include "disturbance.hpp" diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index c65c5b9fd..089e30b01 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -10,7 +10,7 @@ #include #include -#include "../library/math/vector.hpp" +#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" #include "disturbance.hpp" diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index ee91197dc..1bd6bb0e7 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -6,8 +6,8 @@ #ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ #define S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ -#include -#include +#include +#include #include #include #include diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index f0de70d14..0d09d7461 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -7,7 +7,7 @@ #define S2E_DYNAMICS_ATTITUDE_CONTROLLED_ATTITUDE_HPP_ #include -#include +#include #include #include "../orbit/orbit.hpp" diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index a6b5044f1..e8a366555 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -9,7 +9,7 @@ #include "../environment/global/simulation_time.hpp" #include "../environment/local/local_environment.hpp" -#include "../library/math/vector.hpp" +#include "../math_physics/math/vector.hpp" #include "../simulation/simulation_configuration.hpp" #include "../simulation/spacecraft/structure/structure.hpp" #include "dynamics/attitude/initialize_attitude.hpp" diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index 4623f19c9..55dd09adc 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -7,7 +7,7 @@ #include -#include "../../library/orbit/orbital_elements.hpp" +#include "../../math_physics/orbit/orbital_elements.hpp" EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, const double current_time_jd, const libra::Vector<3> position_i_m, diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index 03d42f696..f8648730a 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -6,8 +6,8 @@ #ifndef S2E_DYNAMICS_ORBIT_ENCKE_ORBIT_PROPAGATION_HPP_ #define S2E_DYNAMICS_ORBIT_ENCKE_ORBIT_PROPAGATION_HPP_ -#include "../../library/math/ordinary_differential_equation.hpp" -#include "../../library/orbit/kepler_orbit.hpp" +#include "../../math_physics/math/ordinary_differential_equation.hpp" +#include "../../math_physics/orbit/kepler_orbit.hpp" #include "orbit.hpp" /** diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index 442b5ff72..e2b8363a8 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -6,7 +6,7 @@ #ifndef S2E_DYNAMICS_ORBIT_INITIALIZE_ORBIT_HPP_ #define S2E_DYNAMICS_ORBIT_INITIALIZE_ORBIT_HPP_ -#include +#include #include "orbit.hpp" diff --git a/src/dynamics/orbit/kepler_orbit_propagation.cpp b/src/dynamics/orbit/kepler_orbit_propagation.cpp index 1ff199c04..905c56e39 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.cpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.cpp @@ -6,7 +6,7 @@ #include -#include "../../library/math/s2e_math.hpp" +#include "../../math_physics/math/s2e_math.hpp" KeplerOrbitPropagation::KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, KeplerOrbit kepler_orbit) diff --git a/src/dynamics/orbit/kepler_orbit_propagation.hpp b/src/dynamics/orbit/kepler_orbit_propagation.hpp index bed2bf624..f2421003e 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.hpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.hpp @@ -6,7 +6,7 @@ #ifndef S2E_DYNAMICS_ORBIT_KEPLER_ORBIT_PROPAGATION_HPP_ #define S2E_DYNAMICS_ORBIT_KEPLER_ORBIT_PROPAGATION_HPP_ -#include "../../library/orbit/kepler_orbit.hpp" +#include "../../math_physics/orbit/kepler_orbit.hpp" #include "orbit.hpp" /** diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 2f504159e..dad33a79c 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -8,12 +8,12 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include /** diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 09b8d1403..f7445d101 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -6,8 +6,8 @@ #ifndef S2E_DYNAMICS_ORBIT_RELATIVE_ORBIT_HPP_ #define S2E_DYNAMICS_ORBIT_RELATIVE_ORBIT_HPP_ -#include -#include +#include +#include #include #include diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index bdb98b808..253a3178b 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -7,7 +7,7 @@ #define S2E_DYNAMICS_ORBIT_RK4_ORBIT_PROPAGATION_HPP_ #include -#include +#include #include "orbit.hpp" diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index fcef24934..42b69681c 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -6,8 +6,8 @@ #ifndef S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ #define S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ -#include -#include +#include +#include #include diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 1197e6066..1197e0d6f 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -10,7 +10,7 @@ #include #include "earth_rotation.hpp" -#include "library/math/vector.hpp" +#include "math_physics/math/vector.hpp" #include "logger/loggable.hpp" #include "moon_rotation.hpp" #include "simulation_time.hpp" @@ -235,7 +235,7 @@ class CelestialInformation : public ILoggable { std::string inertial_frame_name_; //!< Definition of inertial frame std::string center_body_name_; //!< Center object name of inertial frame std::string aberration_correction_setting_; //!< Stellar aberration correction - //!< Ref:http://fermi.gsfc.nasa.gov/ssc/library/fug/051108/Aberration_Julie.ppt + //!< Ref:http://fermi.gsfc.nasa.gov/ssc/math_physics/fug/051108/Aberration_Julie.ppt // Calculated values double* celestial_body_position_from_center_i_m_; //!< Position vector list at inertial frame [m] diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index ad468f182..569c4a293 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -11,9 +11,9 @@ #include #include -#include "library/math/constants.hpp" -#include "library/orbit/sgp4/sgp4ext.h" // for jday() -#include "library/orbit/sgp4/sgp4unit.h" // for gstime() +#include "math_physics/math/constants.hpp" +#include "math_physics/orbit/sgp4/sgp4ext.h" // for jday() +#include "math_physics/orbit/sgp4/sgp4unit.h" // for gstime() // Default constructor EarthRotation::EarthRotation(const EarthRotationMode rotation_mode) : rotation_mode_(rotation_mode) { diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index c6adaa685..118e55818 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -9,7 +9,7 @@ #ifndef S2E_ENVIRONMENT_GLOBAL_EARTH_ROTATION_HPP_ #define S2E_ENVIRONMENT_GLOBAL_EARTH_ROTATION_HPP_ -#include "library/math/matrix.hpp" +#include "math_physics/math/matrix.hpp" /** * @enum EarthRotationMode diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index bedfaafab..3a00fe8ef 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -5,12 +5,12 @@ #include "gnss_satellites.hpp" -#include -#include +#include +#include #include "environment/global/physical_constants.hpp" -#include "library/math/constants.hpp" -#include "library/time_system/date_time_format.hpp" +#include "math_physics/math/constants.hpp" +#include "math_physics/time_system/date_time_format.hpp" #include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" #include "utilities/macros.hpp" diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 47add1696..775be5f79 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -7,17 +7,17 @@ #ifndef S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ #define S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include "earth_rotation.hpp" -#include "library/gnss/gnss_satellite_number.hpp" -#include "library/math/vector.hpp" +#include "math_physics/gnss/gnss_satellite_number.hpp" +#include "math_physics/math/vector.hpp" #include "logger/loggable.hpp" #include "simulation_time.hpp" diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 33b281cad..5ab550fe7 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -11,7 +11,7 @@ #include #include -#include "library/math/constants.hpp" +#include "math_physics/math/constants.hpp" #include "setting_file_reader/initialize_file_access.hpp" HipparcosCatalogue::HipparcosCatalogue(double max_magnitude, std::string catalogue_path) diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index 4f5f9bb8e..5283d5daa 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -8,8 +8,8 @@ #include -#include "library/math/quaternion.hpp" -#include "library/math/vector.hpp" +#include "math_physics/math/quaternion.hpp" +#include "math_physics/math/vector.hpp" #include "logger/loggable.hpp" /** diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index 75ede8b33..d80c4adf3 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -7,8 +7,8 @@ #include -#include -#include +#include +#include MoonRotation::MoonRotation(const CelestialInformation& celestial_information, MoonRotationMode mode) : mode_(mode), celestial_information_(celestial_information) { diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index 74d8eb64e..754f6fde4 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -7,8 +7,8 @@ #define S2E_ENVIRONMENT_GLOBAL_MOON_ROTATION_HPP_ #include "celestial_information.hpp" -#include "library/math/matrix.hpp" -#include "library/math/vector.hpp" +#include "math_physics/math/matrix.hpp" +#include "math_physics/math/vector.hpp" #include "simulation_time.hpp" class CelestialInformation; diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index a37f8b20b..17273a0f8 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -14,9 +14,9 @@ // #include #include -#include "library/orbit/sgp4/sgp4ext.h" -#include "library/orbit/sgp4/sgp4io.h" -#include "library/orbit/sgp4/sgp4unit.h" +#include "math_physics/orbit/sgp4/sgp4ext.h" +#include "math_physics/orbit/sgp4/sgp4io.h" +#include "math_physics/orbit/sgp4/sgp4unit.h" #include "logger/loggable.hpp" /** diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 8db85b4e3..91cf47473 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -5,12 +5,12 @@ #include "atmosphere.hpp" -#include "library/atmosphere/harris_priester_model.hpp" -#include "library/atmosphere/simple_air_density_model.hpp" -#include "library/math/vector.hpp" -#include "library/randomization/global_randomization.hpp" -#include "library/randomization/normal_randomization.hpp" -#include "library/randomization/random_walk.hpp" +#include "math_physics/atmosphere/harris_priester_model.hpp" +#include "math_physics/atmosphere/simple_air_density_model.hpp" +#include "math_physics/math/vector.hpp" +#include "math_physics/randomization/global_randomization.hpp" +#include "math_physics/randomization/normal_randomization.hpp" +#include "math_physics/randomization/random_walk.hpp" #include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index faf3902a1..033cecd8c 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -11,8 +11,8 @@ #include "dynamics/orbit/orbit.hpp" #include "environment/global/simulation_time.hpp" #include "environment/local/local_celestial_information.hpp" -#include "library/atmosphere/wrapper_nrlmsise00.hpp" -#include "library/math/vector.hpp" +#include "math_physics/atmosphere/wrapper_nrlmsise00.hpp" +#include "math_physics/math/vector.hpp" #include "logger/loggable.hpp" /** diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index b31bdb728..6c9390d78 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -5,10 +5,10 @@ #include "geomagnetic_field.hpp" -#include "library/geomagnetic/igrf.h" -#include "library/randomization/global_randomization.hpp" -#include "library/randomization/normal_randomization.hpp" -#include "library/randomization/random_walk.hpp" +#include "math_physics/geomagnetic/igrf.h" +#include "math_physics/randomization/global_randomization.hpp" +#include "math_physics/randomization/normal_randomization.hpp" +#include "math_physics/randomization/random_walk.hpp" #include "setting_file_reader/initialize_file_access.hpp" GeomagneticField::GeomagneticField(const std::string igrf_file_name, const double random_walk_srandard_deviation_nT, diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 2f87b2957..52792577a 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -6,9 +6,9 @@ #ifndef S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ #define S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ -#include "library/geodesy/geodetic_position.hpp" -#include "library/math/quaternion.hpp" -#include "library/math/vector.hpp" +#include "math_physics/geodesy/geodetic_position.hpp" +#include "math_physics/math/quaternion.hpp" +#include "math_physics/math/vector.hpp" #include "logger/loggable.hpp" /** diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index a2bde130f..719cfad48 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,8 +8,8 @@ #include #include -#include "library/math/constants.hpp" -#include "library/math/vector.hpp" +#include "math_physics/math/constants.hpp" +#include "math_physics/math/vector.hpp" #include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 6bc9fdd5c..c47e373cd 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -7,8 +7,8 @@ #define S2E_LIBRARY_LOGGER_LOG_UTILITY_HPP_ #include -#include -#include +#include +#include #include #include diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 4cfc1b398..70ac6c5e4 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -5,7 +5,7 @@ #include "harris_priester_model.hpp" #include -#include +#include #include #include "harris_priester_coefficients.hpp" diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index 1e326f42c..77e9e7f46 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -6,8 +6,8 @@ #ifndef S2E_LIBRARY_HARRIS_PRIESTER_MODEL_HPP_ #define S2E_LIBRARY_HARRIS_PRIESTER_MODEL_HPP_ -#include -#include +#include +#include namespace libra::atmosphere { diff --git a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp index b092af211..91a00c40f 100644 --- a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp +++ b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp @@ -16,7 +16,7 @@ extern "C" { #include #include /* maths functions */ #include -#include +#include #include #include "wrapper_nrlmsise00.hpp" /* header for nrlmsise-00.h */ diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 38a425f75..cd491b920 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -4,11 +4,11 @@ */ #include "geodetic_position.hpp" -#include // TODO: do not to use the functions in SGP4 library +#include // TODO: do not to use the functions in SGP4 library #include -#include -#include +#include +#include GeodeticPosition::GeodeticPosition() { latitude_rad_ = 0.0; diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index 2b6c68eec..8a60cfa68 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -6,8 +6,8 @@ #ifndef S2E_LIBRARY_GEODESY_GEODETIC_POSITION_HPP_ #define S2E_LIBRARY_GEODESY_GEODETIC_POSITION_HPP_ -#include -#include +#include +#include /** * @class GeodeticPosition diff --git a/src/math_physics/geomagnetic/igrf.cpp b/src/math_physics/geomagnetic/igrf.cpp index 645a7f0a1..cc89efc82 100644 --- a/src/math_physics/geomagnetic/igrf.cpp +++ b/src/math_physics/geomagnetic/igrf.cpp @@ -48,7 +48,7 @@ #include using namespace std; -#include "../../library/orbit/sgp4/sgp4ext.h" +#include "../../math_physics/orbit/sgp4/sgp4ext.h" #include "igrf.h" double testglobal[3]; diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index 7b0e85e54..6baf196e1 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #define ANTEX_LINE_TYPE_POSITION (60) diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 7e7fc8073..7fb8b0031 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -10,8 +10,8 @@ #include -#include -#include +#include +#include #include #include #include diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 3d86cc28e..ba446f0aa 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -10,9 +10,9 @@ #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/src/math_physics/gnss/test_antex_file_reader.cpp b/src/math_physics/gnss/test_antex_file_reader.cpp index b696e1df7..d5d392f19 100644 --- a/src/math_physics/gnss/test_antex_file_reader.cpp +++ b/src/math_physics/gnss/test_antex_file_reader.cpp @@ -11,7 +11,7 @@ * @brief Test Constructor */ TEST(AntexReader, Constructor) { - std::string test_file_name = "/src/library/gnss/example.atx"; + std::string test_file_name = "/src/math_physics/gnss/example.atx"; AntexFileReader antex_file_fault("false_file_path.atx"); EXPECT_FALSE(antex_file_fault.GetFileReadSuccessFlag()); diff --git a/src/math_physics/gnss/test_bias_sinex_file_reader.cpp b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp index ab806a070..99c52c8d7 100644 --- a/src/math_physics/gnss/test_bias_sinex_file_reader.cpp +++ b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp @@ -8,7 +8,7 @@ TEST(BiasSinex, Constructor) { EXPECT_FALSE(bias_sinex_file_fault.GetFileReadSuccessFlag()); // File read check - std::string test_file_name = "/src/library/gnss/example.BSX"; + std::string test_file_name = "/src/math_physics/gnss/example.BSX"; BiasSinexFileReader bias_sinex_file(CORE_DIR_FROM_EXE + test_file_name); EXPECT_TRUE(bias_sinex_file.GetFileReadSuccessFlag()); diff --git a/src/math_physics/gnss/test_sp3_file_reader.cpp b/src/math_physics/gnss/test_sp3_file_reader.cpp index ef8e3e245..4a017894e 100644 --- a/src/math_physics/gnss/test_sp3_file_reader.cpp +++ b/src/math_physics/gnss/test_sp3_file_reader.cpp @@ -10,7 +10,7 @@ * @brief Test Constructor */ TEST(Sp3FileReader, Constructor) { - std::string test_file_name = "/src/library/gnss/example.sp3"; + std::string test_file_name = "/src/math_physics/gnss/example.sp3"; Sp3FileReader sp3_file(CORE_DIR_FROM_EXE + test_file_name); // Test Header diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index 4ed37a10e..7ae8f5777 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -5,7 +5,7 @@ #include "s2e_math.hpp" -#include +#include namespace libra { double WrapTo2Pi(const double angle_rad) { diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index 3f181c0b0..f47842dad 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -6,7 +6,7 @@ #include "gaussian_beam_base.hpp" #include -#include +#include GaussianBeamBase::GaussianBeamBase(double wavelength_m, double radius_beam_waist_m, double total_power_W) : wavelength_m_(wavelength_m), radius_beam_waist_m_(radius_beam_waist_m), total_power_W_(total_power_W) {} diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index 8a4d628e8..2f8c4cfd1 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -6,8 +6,8 @@ #ifndef S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ #define S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ -#include -#include +#include +#include #include /** diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index fc03ab9f0..8678bd490 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -2,13 +2,13 @@ * @file moon_rotation_utilities.cpp * @brief Functions to calculate the moon rotation frame conversion * @note Ref: A Standardized Lunar Coordinate System for the Lunar Reconnaissance Orbiter and Lunar Datasets - * https://lunar.gsfc.nasa.gov/library/LunCoordWhitePaper-10-08.pdf + * https://lunar.gsfc.nasa.gov/math_physics/LunCoordWhitePaper-10-08.pdf * https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430_moon_coord.pdf */ #include "moon_rotation_utilities.hpp" -#include +#include libra::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { libra::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index 08e208704..34b2d5efe 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -2,15 +2,15 @@ * @file moon_rotation_utilities.hpp * @brief Functions to calculate the moon rotation frame conversion * @note Ref: A Standardized Lunar Coordinate System for the Lunar Reconnaissance Orbiter and Lunar Datasets - * https://lunar.gsfc.nasa.gov/library/LunCoordWhitePaper-10-08.pdf + * https://lunar.gsfc.nasa.gov/math_physics/LunCoordWhitePaper-10-08.pdf * https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430_moon_coord.pdf */ #ifndef S2E_LIBRARY_PLANET_ROTATION_MOON_MEAN_EARTH_PRINCIPAL_AXIS_FRAME_HPP_ #define S2E_LIBRARY_PLANET_ROTATION_MOON_MEAN_EARTH_PRINCIPAL_AXIS_FRAME_HPP_ -#include "library/math/matrix.hpp" -#include "library/math/vector.hpp" +#include "math_physics/math/matrix.hpp" +#include "math_physics/math/vector.hpp" /** * @fn CalcDcmEciToPrincipalAxis diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index ed9c1b46c..4242f6952 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -6,7 +6,7 @@ #ifndef S2E_LIBRARY_RANDOMIZATION_RANDOM_WALK_TEMPLATE_FUNCTIONS_HPP_ #define S2E_LIBRARY_RANDOMIZATION_RANDOM_WALK_TEMPLATE_FUNCTIONS_HPP_ -#include +#include #include template diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index fd8c4c4f9..81b547214 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -21,8 +21,8 @@ #endif #include -#include -#include +#include +#include #include #include #include diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 7745ef217..c19b6467f 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,7 +6,7 @@ #include "ground_station.hpp" #include -#include +#include #include #include #include diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index d6a505d03..f7caeb019 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -6,8 +6,8 @@ #ifndef S2E_SIMULATION_GROUND_STATION_GROUND_STATION_HPP_ #define S2E_SIMULATION_GROUND_STATION_GROUND_STATION_HPP_ -#include -#include +#include +#include #include #include "../simulation_configuration.hpp" diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index fe8716e1e..25bc20100 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -5,7 +5,7 @@ #include "initialize_monte_carlo_parameters.hpp" -#include +#include using namespace std; diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index 193a5f6a2..cf73abc2a 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -7,8 +7,8 @@ #define S2E_SIMULATION_MONTE_CARLO_SIMULATION_INITIALIZE_MONTE_CARLO_PARAMETERS_HPP_ #include -#include -#include +#include +#include #include #include #include diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index 83dfcf618..2dd3ed9a2 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -6,7 +6,7 @@ #ifndef S2E_SIMULATION_MONTE_CARLO_SIMULATION_MONTE_CARLO_SIMULATION_EXECUTOR_HPP_ #define S2E_SIMULATION_MONTE_CARLO_SIMULATION_MONTE_CARLO_SIMULATION_EXECUTOR_HPP_ -#include +#include #include #include // #include "simulation_object.hpp" diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index 9d46d482d..01cd7603e 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -7,8 +7,8 @@ #define S2E_SIMULATION_MONTE_CARLO_SIMULATION_SIMULATION_OBJECT_HPP_ #include -#include -#include +#include +#include #include #include #include diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index 0be7bec4a..42688707b 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -6,7 +6,7 @@ #ifndef S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ #define S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ -#include +#include #include /** diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 1386cdf0a..e1def4ea9 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -5,7 +5,7 @@ #include "initialize_structure.hpp" -#include +#include #include #define MIN_VAL 1e-6 diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 2246dcd63..be864b402 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -6,8 +6,8 @@ #ifndef S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ -#include -#include +#include +#include /** * @class KinematicsParameters diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index e12ecc4dd..f78bd5dea 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -6,7 +6,7 @@ #ifndef S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ -#include +#include using libra::Vector; /** diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index ad93c3b0d..c5f573a36 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -6,7 +6,7 @@ #ifndef S2E_SIMULATION_SPACECRAFT_STRUCTURE_SURFACE_HPP_ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_SURFACE_HPP_ -#include +#include /** * @class Surface diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 2b7574f27..95f533de6 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.cpp b/src/simulation_sample/spacecraft/sample_spacecraft.cpp index c162ffab8..09c7df86c 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.cpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.cpp @@ -6,7 +6,7 @@ #include "sample_spacecraft.hpp" #include -#include +#include #include "sample_components.hpp" From 0ba60aa0416bdd2cb3d4267e8f1fc2aec5bf8b66 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Thu, 7 Mar 2024 21:52:45 +0900 Subject: [PATCH 184/456] Fix format --- src/components/ideal/attitude_observer.hpp | 2 +- src/components/ideal/force_generator.hpp | 2 +- src/components/ideal/torque_generator.hpp | 2 +- src/components/real/aocs/gnss_receiver.hpp | 2 +- src/components/real/aocs/gyro_sensor.hpp | 2 +- src/components/real/aocs/magnetometer.hpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 2 +- src/components/real/aocs/magnetorquer.hpp | 2 +- src/components/real/aocs/reaction_wheel.hpp | 4 ++-- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/aocs/star_sensor.hpp | 2 +- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.hpp | 2 +- src/components/real/mission/telescope.hpp | 2 +- src/components/real/power/csv_scenario_interface.hpp | 2 +- src/components/real/power/solar_array_panel.hpp | 2 +- src/components/real/propulsion/simple_thruster.hpp | 2 +- src/disturbances/air_drag.hpp | 2 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/disturbances/magnetic_disturbance.hpp | 2 +- src/disturbances/solar_radiation_pressure_disturbance.hpp | 2 +- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.hpp | 2 +- src/dynamics/orbit/orbit.hpp | 2 +- src/environment/global/celestial_information.hpp | 2 +- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 2 +- src/environment/global/hipparcos_catalogue.hpp | 2 +- src/environment/global/simulation_time.hpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/atmosphere.hpp | 2 +- src/environment/local/geomagnetic_field.hpp | 2 +- .../local/solar_radiation_pressure_environment.cpp | 2 +- src/math_physics/gnss/antex_file_reader.hpp | 2 +- src/math_physics/gnss/sp3_file_reader.hpp | 2 +- src/simulation/ground_station/ground_station.cpp | 2 +- .../monte_carlo_simulation_executor.hpp | 2 +- src/simulation/monte_carlo_simulation/simulation_object.hpp | 2 +- src/simulation/spacecraft/installed_components.hpp | 2 +- 40 files changed, 41 insertions(+), 41 deletions(-) diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index b36455141..c00cebd13 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -7,9 +7,9 @@ #define S2E_COMPONENTS_IDEAL_ATTITUDE_OBSERVER_HPP_ #include +#include #include #include -#include #include "../base/component.hpp" diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index c6a059d8d..53adf392c 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -8,9 +8,9 @@ #include #include +#include #include #include -#include /* * @class ForceGenerator diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 730f6b040..10aacf19d 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -8,9 +8,9 @@ #include #include +#include #include #include -#include /* * @class TorqueGenerator diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 13ab021b8..1345217b5 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -9,10 +9,10 @@ #include #include #include +#include #include #include #include -#include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index e6bcf26d9..239bb29df 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -7,8 +7,8 @@ #define S2E_COMPONENTS_REAL_AOCS_GYRO_SENSOR_HPP_ #include -#include #include +#include #include "../../base/component.hpp" #include "../../base/sensor.hpp" diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 3059d0750..5140eb7ef 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -7,8 +7,8 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETOMETER_HPP_ #include -#include #include +#include #include "../../base/component.hpp" #include "../../base/sensor.hpp" diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index c28e8e5f4..135a3782f 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -5,10 +5,10 @@ #include "magnetorquer.hpp" +#include #include #include #include -#include #include Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index bddcc0b91..8a8bbc1a7 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -7,12 +7,12 @@ #define S2E_COMPONENTS_REAL_AOCS_MAGNETORQUER_HPP_ #include +#include #include #include #include #include #include -#include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 2edb4b865..6e684db1f 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -6,10 +6,10 @@ #ifndef S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ #define S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ -#include -#include #include #include +#include +#include #include #include diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 2aad6aaca..86826b98c 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -6,10 +6,10 @@ #include "star_sensor.hpp" #include +#include #include #include #include -#include #include #include diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index a6aa0bcff..67ba9c3c9 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -8,11 +8,11 @@ #include #include +#include #include #include #include #include -#include #include #include "../../base/component.hpp" diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index b6759ea3a..d0d9b599f 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -8,8 +8,8 @@ #include #include using libra::NormalRand; -#include #include +#include #include using namespace std; diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index fb0f5fc2a..255c834a7 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -8,10 +8,10 @@ #include #include +#include #include #include #include -#include #include "../../base/component.hpp" diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index b253ceb05..6151c070e 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -10,9 +10,9 @@ #include #include #include +#include #include #include -#include #include #include "../../base/component.hpp" diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index 65956c6a3..6e54f3d6f 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -6,8 +6,8 @@ #ifndef S2E_COMPONENTS_REAL_POWER_CSV_SCENARIO_INTERFACE_HPP_ #define S2E_COMPONENTS_REAL_POWER_CSV_SCENARIO_INTERFACE_HPP_ -#include #include +#include #include #include diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index 766e2c327..e7150e911 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -8,8 +8,8 @@ #include #include -#include #include +#include #include "../../base/component.hpp" diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index 7cb355901..cbceafc71 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -7,10 +7,10 @@ #define S2E_COMPONENTS_REAL_PROPULSION_SIMPLE_THRUSTER_HPP_ #include +#include #include #include #include -#include #include #include "../../base/component.hpp" diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index d5463eeb9..b794cd3b4 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -9,9 +9,9 @@ #include #include "../environment/local/atmosphere.hpp" +#include "../logger/loggable.hpp" #include "../math_physics/math/quaternion.hpp" #include "../math_physics/math/vector.hpp" -#include "../logger/loggable.hpp" #include "surface_force.hpp" /** diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 8b32f1e85..c43b328e8 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -8,10 +8,10 @@ #include +#include "../logger/loggable.hpp" #include "../math_physics/math/matrix.hpp" #include "../math_physics/math/matrix_vector.hpp" #include "../math_physics/math/vector.hpp" -#include "../logger/loggable.hpp" #include "disturbance.hpp" /** diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 5026e6573..0dce38b1e 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -8,10 +8,10 @@ #include #include +#include "../logger/log_utility.hpp" #include "../math_physics/randomization/global_randomization.hpp" #include "../math_physics/randomization/normal_randomization.hpp" #include "../math_physics/randomization/random_walk.hpp" -#include "../logger/log_utility.hpp" MagneticDisturbance::MagneticDisturbance(const ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), residual_magnetic_moment_(rmm_params) { diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 91f65049f..d056cc43f 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -8,8 +8,8 @@ #include -#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" +#include "../math_physics/math/vector.hpp" #include "../simulation/spacecraft/structure/residual_magnetic_moment.hpp" #include "disturbance.hpp" diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index d4cecde70..5dc04a51c 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -8,8 +8,8 @@ #include -#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" +#include "../math_physics/math/vector.hpp" #include "surface_force.hpp" /** diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 089e30b01..564a823ce 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -10,8 +10,8 @@ #include #include -#include "../math_physics/math/vector.hpp" #include "../logger/loggable.hpp" +#include "../math_physics/math/vector.hpp" #include "disturbance.hpp" /** diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 1bd6bb0e7..54f63def9 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -6,9 +6,9 @@ #ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ #define S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ +#include #include #include -#include #include #include diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index dad33a79c..6ddcfe289 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -8,13 +8,13 @@ #include #include +#include #include #include #include #include #include #include -#include /** * @enum OrbitPropagateMode diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 1197e0d6f..0c4ac86bb 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -10,8 +10,8 @@ #include #include "earth_rotation.hpp" -#include "math_physics/math/vector.hpp" #include "logger/loggable.hpp" +#include "math_physics/math/vector.hpp" #include "moon_rotation.hpp" #include "simulation_time.hpp" diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 3a00fe8ef..1ecf7c6a7 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -9,9 +9,9 @@ #include #include "environment/global/physical_constants.hpp" +#include "logger/log_utility.hpp" #include "math_physics/math/constants.hpp" #include "math_physics/time_system/date_time_format.hpp" -#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" #include "utilities/macros.hpp" diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 775be5f79..533af1a26 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -16,9 +16,9 @@ #include #include "earth_rotation.hpp" +#include "logger/loggable.hpp" #include "math_physics/gnss/gnss_satellite_number.hpp" #include "math_physics/math/vector.hpp" -#include "logger/loggable.hpp" #include "simulation_time.hpp" /** diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index 5283d5daa..a1b9540a3 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -8,9 +8,9 @@ #include +#include "logger/loggable.hpp" #include "math_physics/math/quaternion.hpp" #include "math_physics/math/vector.hpp" -#include "logger/loggable.hpp" /** *@struct HipparcosData diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index 17273a0f8..f993b5ec8 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -14,10 +14,10 @@ // #include #include +#include "logger/loggable.hpp" #include "math_physics/orbit/sgp4/sgp4ext.h" #include "math_physics/orbit/sgp4/sgp4io.h" #include "math_physics/orbit/sgp4/sgp4unit.h" -#include "logger/loggable.hpp" /** *@struct TimeState diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 91cf47473..87fbdbabc 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -5,13 +5,13 @@ #include "atmosphere.hpp" +#include "logger/log_utility.hpp" #include "math_physics/atmosphere/harris_priester_model.hpp" #include "math_physics/atmosphere/simple_air_density_model.hpp" #include "math_physics/math/vector.hpp" #include "math_physics/randomization/global_randomization.hpp" #include "math_physics/randomization/normal_randomization.hpp" #include "math_physics/randomization/random_walk.hpp" -#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" Atmosphere::Atmosphere(const std::string model, const std::string space_weather_file_name, const double gauss_standard_deviation_rate, diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 033cecd8c..8489891d8 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -11,9 +11,9 @@ #include "dynamics/orbit/orbit.hpp" #include "environment/global/simulation_time.hpp" #include "environment/local/local_celestial_information.hpp" +#include "logger/loggable.hpp" #include "math_physics/atmosphere/wrapper_nrlmsise00.hpp" #include "math_physics/math/vector.hpp" -#include "logger/loggable.hpp" /** * @class Atmosphere diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 52792577a..8a4e6ba99 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -6,10 +6,10 @@ #ifndef S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ #define S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ +#include "logger/loggable.hpp" #include "math_physics/geodesy/geodetic_position.hpp" #include "math_physics/math/quaternion.hpp" #include "math_physics/math/vector.hpp" -#include "logger/loggable.hpp" /** * @class GeomagneticField diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 719cfad48..16d380a54 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -8,9 +8,9 @@ #include #include +#include "logger/log_utility.hpp" #include "math_physics/math/constants.hpp" #include "math_physics/math/vector.hpp" -#include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" SolarRadiationPressureEnvironment::SolarRadiationPressureEnvironment(LocalCelestialInformation* local_celestial_information) diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 7fb8b0031..953800d9f 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -10,9 +10,9 @@ #include +#include #include #include -#include #include #include diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index ba446f0aa..565382899 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -10,10 +10,10 @@ #include +#include #include #include #include -#include #include #include diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index c19b6467f..32805e502 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -6,9 +6,9 @@ #include "ground_station.hpp" #include -#include #include #include +#include #include #include #include diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index 2dd3ed9a2..57440e33d 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -6,8 +6,8 @@ #ifndef S2E_SIMULATION_MONTE_CARLO_SIMULATION_MONTE_CARLO_SIMULATION_EXECUTOR_HPP_ #define S2E_SIMULATION_MONTE_CARLO_SIMULATION_MONTE_CARLO_SIMULATION_EXECUTOR_HPP_ -#include #include +#include #include // #include "simulation_object.hpp" #include "initialize_monte_carlo_parameters.hpp" diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index 01cd7603e..daf6d23ee 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -7,9 +7,9 @@ #define S2E_SIMULATION_MONTE_CARLO_SIMULATION_SIMULATION_OBJECT_HPP_ #include +#include #include #include -#include #include #include diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index 42688707b..5806f6b34 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -6,8 +6,8 @@ #ifndef S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ #define S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ -#include #include +#include /** * @class InstalledComponents From e30960e39bfa83bb04afe033a211ac8e5b7ef24f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Thu, 7 Mar 2024 22:17:16 +0900 Subject: [PATCH 185/456] Fix unexpected replace --- src/math_physics/planet_rotation/moon_rotation_utilities.cpp | 2 +- src/math_physics/planet_rotation/moon_rotation_utilities.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index 8678bd490..e31574783 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -2,7 +2,7 @@ * @file moon_rotation_utilities.cpp * @brief Functions to calculate the moon rotation frame conversion * @note Ref: A Standardized Lunar Coordinate System for the Lunar Reconnaissance Orbiter and Lunar Datasets - * https://lunar.gsfc.nasa.gov/math_physics/LunCoordWhitePaper-10-08.pdf + * https://lunar.gsfc.nasa.gov/library/LunCoordWhitePaper-10-08.pdf * https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430_moon_coord.pdf */ diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index 34b2d5efe..314bbdaeb 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -2,7 +2,7 @@ * @file moon_rotation_utilities.hpp * @brief Functions to calculate the moon rotation frame conversion * @note Ref: A Standardized Lunar Coordinate System for the Lunar Reconnaissance Orbiter and Lunar Datasets - * https://lunar.gsfc.nasa.gov/math_physics/LunCoordWhitePaper-10-08.pdf + * https://lunar.gsfc.nasa.gov/library/LunCoordWhitePaper-10-08.pdf * https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430_moon_coord.pdf */ From 3e3f1e9c84344f8c47f9c6b96b9bdc0274e0c1c6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Thu, 7 Mar 2024 22:21:03 +0900 Subject: [PATCH 186/456] Fix unexpected replace --- src/environment/global/celestial_information.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 0c4ac86bb..676ed1ce8 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -235,7 +235,7 @@ class CelestialInformation : public ILoggable { std::string inertial_frame_name_; //!< Definition of inertial frame std::string center_body_name_; //!< Center object name of inertial frame std::string aberration_correction_setting_; //!< Stellar aberration correction - //!< Ref:http://fermi.gsfc.nasa.gov/ssc/math_physics/fug/051108/Aberration_Julie.ppt + //!< Ref:http://fermi.gsfc.nasa.gov/ssc/library/fug/051108/Aberration_Julie.ppt // Calculated values double* celestial_body_position_from_center_i_m_; //!< Position vector list at inertial frame [m] From 3c142b2174011e5b464e018254adb3104ee17cf7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 07:43:13 +0000 Subject: [PATCH 187/456] Update dependency numpy-quaternion to v2023.0.3 --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 208 ++++++++++++++++++++------------------ 2 files changed, 109 insertions(+), 101 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index 0b9e89182..6ac2b122e 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -9,7 +9,7 @@ matplotlib = "==3.7.2" numpy = "==1.24.3" pandas = "==2.0.3" numpy-stl = "==3.0.1" -numpy-quaternion = "==2023.0.2" +numpy-quaternion = "==2023.0.3" python-utils = "==3.5.2" [dev-packages] diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index ecc9b0a59..e34e59e44 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "df7f65ba3ec6206a2c239ec2a9ee9fffc46478ac37e3cd2a6a8e05cf83dcf3fc" + "sha256": "f1e9adad28dde1efbdd7ba4126b803234663495b72d241fef74b5c6e54627fd7" }, "pipfile-spec": 6, "requires": { @@ -20,23 +20,30 @@ "hashes": [ "sha256:1cb70fe82ea9f49ee6df2ecafeade1e9ef4d5654a3e5c2b6f1b50bbfcfada33a", "sha256:20644986a63d57c9d94afb8aba180d5362c1bd08d61d4537aa6221a70e3df762", + "sha256:22793cf731d6cc06e11cf2760fd2875cd18b2980ce1c5ba15f6ebd9e224b1a1d", "sha256:2985d8d937427a20868dc18cd677bd6a6b4b94efc1b33ab29706d4e0dac418cf", "sha256:2e198e442bae7ad0d25f529788fcb5802192d844d856fa966f6018a46648a375", "sha256:353b2d02bd70fd48b3d0e146a028862b7d9e09ffb7995c70151fb80607a2df25", "sha256:355c984cbde3f098cac49f41e2ab0bbbd49091770eeb58486a001f9ee865f725", + "sha256:3752eec899129a6645170fb1e7a16d0263f8ed2691f9f37916ecb19a2947ab72", "sha256:427a2050dcfbbde5bb4421f87b3f594852160029f8bbdf8d0fff81ad554de2f4", "sha256:4fb6763f4f2bb904fea0afbd8194f14af0b01fb52d719be35dd4b423e8d8dca2", "sha256:500a3d314166057d0b3c065e63147042c996ead1af5d59e319f813b83d4ea220", + "sha256:509bb451ce26f1f7651cc19d27ef049935304c7795a141cfbe05582802554226", + "sha256:51a5e8f2183e7505f4dfbb965048348c2f1e501283b13ad9950409c3da9655f6", "sha256:5c50fa14a71d115a7614b3a659f14d1e65dbf43dbcbedae0c901058860806f5b", "sha256:650e9b2170579193cb89bea2c328740fc13c0327b8ea55173490f760d0f04f8c", "sha256:669d89621f8c7899c061fcf37bc32df24ebeaf5eb0a02b9d9b9896ca6698f6de", "sha256:6822d3d08c11cdc443e3ed01d61d512e7cf62d4b40bbc1d235f0a898f2c54a7a", "sha256:6e0a13ba17ca011c55db44fab9210363154bc67482776d3b149a3ef1b4b01bad", "sha256:7b58e500413dbe655127bbe9da82c9d175eadd130ed66b6a9efea8d46b65881b", + "sha256:7f99f3da41fc3e6bfb726f0fbd3302939a3b03e353ccd2be5ebd7bc09b84c386", "sha256:84918a6e030adc9aedee92fe622adde8b54cc81051a6ce6723c04987081d92f4", "sha256:87091beba0e5f6cfc416d1847a582645b2447cd6bf1e8c4ceaabd98d3493ef41", "sha256:8818fbb5e1133f0955a62ea159a3792124fc06f9b37ea4427612f6def923b711", "sha256:91d03458343d73f6a5e4d42e79df59cf57eba699094b71ce7c57ec40c8de9f59", + "sha256:a6860ab68a461cd36b6eda5d3973bfa1e3a4fdeaf608e8dd4b324b08e8561eed", + "sha256:a8786f23e3f456ab402b8160efb7b8b1c3780d6b84154dfcfdcd3f0401ef3285", "sha256:ad169a9ca573752867b136b62ac70cc12ab0ce86e3c69d57e924eaa21b5f5ec7", "sha256:b196ae9446183deaaedfbd2e757d3edf23225584ce1a47b795cba96febd6acdf", "sha256:b64f000374a41bf19ac8f8b39cbd2a3b244c79673cd686c9eb507c19daef9e78", @@ -44,6 +51,7 @@ "sha256:be103ef8c2cb1e7363e3ab48ae633ec2643f0b8a9226d119ec8681096b81335c", "sha256:c4d80330f00728acfd88be78e0485fd688984db873853f9c75647ec78e653203", "sha256:c76d77ac21b6fb5008ca0283c6f86d24bf7ed6d0d18867edcfc534748cf348b5", + "sha256:c93beda915b0b68e74a8eec986313e4758a0caa1bd57fee8660362c82f78b26f", "sha256:d1600576b21a37883992d5bff0c4485e5468a14fe2df7616e08824103b21465d", "sha256:d273b628adb276200eb9b97f6175f9145b8a280d55d995869ec4bb3c561021c2", "sha256:d56d7ed588a5ca5d364b42c73c933258d394c10b3c4dc224e7d31bb41a6fbef5", @@ -144,59 +152,59 @@ }, "fonttools": { "hashes": [ - "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252", - "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea", - "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4", - "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e", - "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac", - "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61", - "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e", - "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d", - "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348", - "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee", - "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199", - "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01", - "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2", - "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81", - "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814", - "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070", - "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68", - "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5", - "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7", - "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f", - "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a", - "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1", - "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e", - "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a", - "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092", - "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31", - "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7", - "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48", - "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2", - "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec", - "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a", - "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f", - "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5", - "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0", - "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d", - "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a", - "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738", - "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95", - "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e", - "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124", - "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784", - "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703" + "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133", + "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828", + "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc", + "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2", + "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559", + "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42", + "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf", + "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c", + "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036", + "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942", + "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86", + "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22", + "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5", + "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75", + "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a", + "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd", + "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814", + "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b", + "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a", + "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844", + "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034", + "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc", + "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4", + "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18", + "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836", + "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9", + "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880", + "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb", + "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff", + "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7", + "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e", + "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29", + "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532", + "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be", + "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075", + "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717", + "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb", + "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321", + "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e", + "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e", + "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6", + "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb" ], "markers": "python_version >= '3.8'", - "version": "==4.48.1" + "version": "==4.49.0" }, "importlib-resources": { "hashes": [ - "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a", - "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6" + "sha256:4c0269e3580fe2634d364b39b38b961540a7738c02cb984e98add8b4221d793d", + "sha256:56fb4525197b78544a3354ea27793952ab93f935bb4bf746b846bb1015020f2b" ], "markers": "python_version < '3.10'", - "version": "==6.1.1" + "version": "==6.1.3" }, "kiwisolver": { "hashes": [ @@ -393,58 +401,58 @@ }, "numpy-quaternion": { "hashes": [ - "sha256:02b93874723c38ad1e684d0862899d9266bf9855fd5a5bdcba8793169e672c31", - "sha256:04671ea098c0fe879eb07a24ec80dc09efc674e178f9b58a427f9d2368b2c009", - "sha256:04c4536fdb7f22733631b7953e2db82b27964d96f97423901e749c971cb7f6f2", - "sha256:0560b12235aaab7aee56e94c2df2f7879e0c965b8aea3c6bccaad7f2b4fb031a", - "sha256:0c058ee103024dc15b3232e57204934a53be080d5c75246cdec9eb92e9f56c5f", - "sha256:13958c8628b17f9bc725bb54e910c384e211e54b057cbe069f1615aebae8735d", - "sha256:2fdbc31fdac812ed2ff0287a2d51e1b87d5ec6d2aeea4a667adb14f4b6198bc5", - "sha256:32e34d2ebeeed25b238df22eba0030ba8db4a4e82a7eb6f5e32fda45768990ee", - "sha256:333dea61c9628707223dc062e4a6e0a72bbb4fffd58a84231ea24b959e694bde", - "sha256:37f73d7f84c645bd9be95cb4862bd900b7f99bd2f801232006dde00641bf2fd7", - "sha256:3f89e11f89ded410fb34e6f997d4c7f4cf7c31c3eb9537c035756a5d2a6cc4e3", - "sha256:41968027811fa81157c9bc9f2bf00cc22dc8865d7fb5834f9f83bafc5995b6ec", - "sha256:449ba07ec505dd757aa4ba6df8ef086bdd06c85f4681529ddaecd4ce7d62e792", - "sha256:48bb1fc03b580a9bb89da9d4f8916f87101bc75682611c423bafa031b6d96176", - "sha256:4b9421d46d56fbec0dd625c9909550c66bb81265a76efaecc5621166f18069bf", - "sha256:57d99cee91c7356c62d70817d32432db3da58f4d5f3bd29757c5696f56fa2e86", - "sha256:5c5b7dfb7412b582101ae4e576f15bc6af904f66b24b832aa1fafa3a846c71da", - "sha256:5dd15141aecbf32cdb6bf96bdc13df7dd2f31833011a7f0ef51ecc86872cf8f0", - "sha256:5f994628b10bf29461fb50cf3ce022d0a610e173068414942a9efd746b35b38b", - "sha256:60c1e9f9997205949c770702307451eeffd96f3a2824f4dc49ed42336bd698e2", - "sha256:681aaa2cf4d59fc412ee00188dcdc551c8ff91ea63d54d06f37ec66dd383633d", - "sha256:6c7e82014a51c93fe76322654d9c59f03b2e5cd19d0d6535d606bf7a119d4394", - "sha256:6dd56641fddad6c35d86a6d9f3cee4a786d0a4c6b41ed74d60dad97741835280", - "sha256:713e4357868ebd8e4f3500435fcb49a997a8a9a5f8514e3a79d51f46abcdf2ae", - "sha256:86d46c5f220ed2289d7d53c918b0e2432d6ddeae20c5ca232f3dab6fafe6c340", - "sha256:86f931da5893db57c4da4142045b605cc99d469fb3e6238ae487e080dcd7227e", - "sha256:8e218a5207be1a983d3fd54d710067a6638d324015ba695c0509082a29086284", - "sha256:98bfb77597ea56462be3f94e002640ebc6ecf9d2eeea140f5d1c13145af56a31", - "sha256:9b26f4961fef053d552f5dcea0957b1eb34c99fea92efe1544044013d04e1407", - "sha256:ac5e37ed57c0e2ff938c88d4462a126b16c98581dde0c003eba05741188b7f38", - "sha256:b0f8517c268d748cbfe686214bd53ac7064e85106c90e22bd7cf04940a17323e", - "sha256:b144be3dca3330f8ad5866c561cebbfe3273a5b228ece058c014cdbf8916630d", - "sha256:b343649600eb9f30275380b47ee4430f4393ed3370e5fa3fbb1db0ebbd908228", - "sha256:b4df8ffdcab6f773eec518ed09abb81e233afd9a38534e3a1db0cb0bfc54b370", - "sha256:bb3ab05505ccb5c835a6f0401811d64f23c843e622751956ba77734f7dc20493", - "sha256:bca80ceef24364eb4dc07026e3d5c7cc9932b844888a3a15f27941f0ee6ba5c3", - "sha256:bf6a99191d1d0b3289eb256c1eaf7e290d80d4a306bb31d04121bf9a7eb88701", - "sha256:c2ddf7e16a611f1c07a170d9464d69291eeb734ade2ce50b7f4eb38d9620f007", - "sha256:c829f58ebc908f07487d3351a13ba99c3e39eb5e04aea389ca5175642cfdab15", - "sha256:cab8b1626c6d719639360a6af920c25df3f0248ab04635b72919aa1a05cb575f", - "sha256:cf487d6b56883895ddf22307a0cf8e9949604465154d0cd9b78250d800d07a0d", - "sha256:d11f6f030d1cc7b58afe83fa849422a1c8c3a742b7af30232b98acbe32cd2be6", - "sha256:d725796e9f21eb703ae19448ceea0ab34e850c903ab01fef3de06f7217ae17f5", - "sha256:dec65adaac6bf15f31951e25bf5fe908135db6e223cf2df0112c93afe432d5de", - "sha256:e033eef943a904b9c34c1d9e66570a07fa2c3d4a311a357d1aeb305493092c08", - "sha256:e6b4dd4797e6e77fcdd8b3487893f8af3fe934f1f26839d1605f771f700dded6", - "sha256:e6dcfec4c7f615e6c46411c2034631e0a1934ffc3509e7bd61c3aacce4ecb181", - "sha256:eeeb8a6004a649b4a411fb25fb94a6da8e937de25b7c409c62528c937d1bb47d", - "sha256:eeffe622c5cec8396e61c266f65c75ec54fa4c21688a9633e8737276dc7fcc4b" + "sha256:00462f35b7668e45ec626578cbb7f67c6a258b915d77de606e4f5058c882ed4d", + "sha256:05c7b17fea1304e3f3aad8478148c671940abe6303c904c12da472ebb4e3c201", + "sha256:0ba2e4f266a94650d45407ff8507c546951f30a445f3a3f1701e517c6c456dda", + "sha256:13cbd13e3119bbbc2e9c45cae27d5723f94ab758256eaafe75f7bf4deea6537f", + "sha256:151f238ad5bfe51e18a8fad6afc75bec060f9ec3ebd01ad0565fb33ab6714818", + "sha256:1a99125c750ad5c7d17bf4c69b03fb9c86e418c582c9991ef9c119fd97a8a640", + "sha256:1b8fc0d8cdee31cee21d8564726dab3ad8206a4119d60e0732bcd9b8b7d079d2", + "sha256:23f429263e0e6f290ca6f6187a2739567f7fcd5e066259f0098007fa06068d44", + "sha256:241d635791b5aadb798a56baba0d754b8f5b11ac93e6e490de52324dd06ee608", + "sha256:324d19204d7ce7b60cfd9b1a351eb2e6bbfda307e5ea8326a2978f5dc082f334", + "sha256:33fa45a2a7e52173ecc10862377dcccc97b6f97c84aabb70e922d29411836694", + "sha256:3489f172485bb86c7f1875f35a885ebdc671e3b5d45eac0e227d141b36a5bf02", + "sha256:392bf3cb4eee36c0e9271534e93e39e46cdb4f7e2062b08cb38bd0872061ff6c", + "sha256:4285e8e4df7216f9adfe15d2802472c89758d92cbf3c7fde31798ca0e22eb7e0", + "sha256:481d386e4863e2aef88b618ac73e6dec9635737d01c9ccddfd53a855edcfea84", + "sha256:48693acbbb5868d56a370bafd1051d1c7c7ab39f1b852a29e67ac1258938cf4d", + "sha256:55ff80e4a2d6ca5d0e0e00e2ead59757e2816b50e97a19307ea09b56124bf5b1", + "sha256:6175a0555b9e6cf8fb22f88113b55e29dbec26622938e61a79ea4fcfcd8ad8e3", + "sha256:6699dbba41286da391b1ba40d0bebab8c2417cbce799d70c5745a254630bd0cd", + "sha256:68acbb54ea114b258259a588a3de2b190f58855ff6289a71efb26a22f659e863", + "sha256:6992f33b7f0b94a25ff31685eb5ab13d173ccdb996a40b28757da4120e852930", + "sha256:734259bfa8da467812a46ed79fcd9e3429e9aaa26f4449f47e65a709abd8b000", + "sha256:73e10823b0b0fb0f5f1a5fb6e36db3e09d5ed1b547dd5e6a31ac2f126916dfe5", + "sha256:77d98ea3a5c6d005dbda7cf38c3d8bf5de49fa3b5809046083349439930248d0", + "sha256:7c67e35c3f128f8c32b76be448d8b8f102d4fd8d19086afc816fa8908abd91f0", + "sha256:7fb35558e572d17ede74bd295bd39b7b4e430e2454394162a419ec13e398e16f", + "sha256:82158827e53fe84b79bb0e1fa993151dd4b25381c148d0486fe0518f96937c55", + "sha256:85811e0dbf7bb5e0d1d589331ecf452f972f555c1d6be31f3383c5e826184735", + "sha256:8ebc517a59487e2424b98a0d6291d1e7ad77ca36d2702015357f62097953de1f", + "sha256:92be260eccb718f07c67e314601a3cca22bb5cdcba8e6fd6c70febd24f947d4a", + "sha256:a05f00ce120089315d67471e01542e9aeffa3069be05e41690d6de5ac36a1da0", + "sha256:a16cc15587c47fd5ba512c621b2f72e9f7c26b829ef869395f9d16029639849e", + "sha256:a4e22488ce2a5f4d8b93aafa50d2d659719b46fb358648853d52db12d000f13c", + "sha256:ab8912509ff8b6de23c39fa6ae2e6b055893687939382ba2289078f9c8d0f164", + "sha256:b3aec1175b788b74d788fdef7c221707a2f68cbc20653ddc2a3c15e5332c1fb4", + "sha256:c2eef9417c0c7d339846537ce539417aff0e546f05c9c52ae4494966322e0ce7", + "sha256:c2f300ef729e3f0755e5518ef97770c27f29ebd5a1e58699adc2f045aad6958d", + "sha256:cd6bed4d09c141062d6e3745e0fcaae80536a36ffa5ba3248771a7ca8d447734", + "sha256:d0dba8b77df485ca9fdc9b1e8bf57fcbc34e9f08362b73a29df2d5bd72c50fe7", + "sha256:d4e452a95a55bb58016ff5b555cde3ffcf95a4a4ad4d6c92b8f05119324f3229", + "sha256:d65d06b1a8c4f153f3b830601e8c1a1c3d75a92b289c67f5394684de082b36ef", + "sha256:db804fed5bc128f4ff143bedf5ae987efc1f8c75b53956cc3f1194ed8732b4b8", + "sha256:e3579c10c63a40fc466fa051419222fe17010c7ddabcd6300d7ae8ecdf4f68cc", + "sha256:e56939aae3f493acfa7c09dc5476893a61b3a7843e7c22d7cf65a14f9fe5eba3", + "sha256:ed5667e9dd4c16f4d88407f041009374fd53c034b3d9b61a7496a515fb235a9b", + "sha256:f24aee35a72195c3f4002859c48f9a77660385153ea72df7ef3a9dc9c5e6e533", + "sha256:f54a63b34f4207f7bf56dda94aecb7926019ba99d860e305048cb4ec126dcd14", + "sha256:fadc1caa87ac0d7e898250fe30d92e83aa3e0f441edba106d1bffa54b684054e", + "sha256:fcac49e60f26be6db809fec0ce07b36af48cea159c7d5ac4944955814846b3b4" ], "index": "pypi", - "version": "==2023.0.2" + "version": "==2023.0.3" }, "numpy-stl": { "hashes": [ @@ -628,11 +636,11 @@ }, "python-dateutil": { "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", + "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" + "version": "==2.9.0.post0" }, "python-utils": { "hashes": [ From a44949a533906157781d929a0b5262491fd92c2f Mon Sep 17 00:00:00 2001 From: sksat Date: Tue, 12 Mar 2024 17:58:29 +0900 Subject: [PATCH 188/456] split C2A communication functions prototype declaration header --- src/components/real/cdh/c2a_communication.h | 26 +++++++++++++++++++ .../real/cdh/on_board_computer_with_c2a.hpp | 18 +------------ 2 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 src/components/real/cdh/c2a_communication.h diff --git a/src/components/real/cdh/c2a_communication.h b/src/components/real/cdh/c2a_communication.h new file mode 100644 index 000000000..c749d90e3 --- /dev/null +++ b/src/components/real/cdh/c2a_communication.h @@ -0,0 +1,26 @@ +/* + * @file c2a_communication.h + * @brief C2A communication functions + */ + +#ifndef C2A_COMMUNICATION_H_ +#define C2A_COMMUNICATION_H_ + +// If the character encoding of C2A is UTF-8, the following functions are not necessary, +// and users can directory use SendFromObc_C2A and ReceivedByObc_C2A UART +// TODO: Delete these functions since C2A is changed to use UTF-8 + +// C2A communication functions +int OBC_C2A_SendFromObc(int port_id, unsigned char* buffer, int offset, int length); +int OBC_C2A_ReceivedByObc(int port_id, unsigned char* buffer, int offset, int length); + +// I2C +int OBC_C2A_I2cWriteCommand(int port_id, const unsigned char i2c_address, const unsigned char* data, const unsigned char length); +int OBC_C2A_I2cWriteRegister(int port_id, const unsigned char i2c_address, const unsigned char* data, const unsigned char length); +int OBC_C2A_I2cReadRegister(int port_id, const unsigned char i2c_address, unsigned char* data, const unsigned char length); + +// GPIO +int OBC_C2A_GpioWrite(int port_id, const bool is_high); +bool OBC_C2A_GpioRead(int port_id); // return false when the port_id is not used + +#endif // C2A_COMMUNICATION_H_ diff --git a/src/components/real/cdh/on_board_computer_with_c2a.hpp b/src/components/real/cdh/on_board_computer_with_c2a.hpp index c194f70e4..dc05f6661 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.hpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.hpp @@ -9,6 +9,7 @@ #include #include "on_board_computer.hpp" +#include "c2a_communication.h" /* * @class ObcWithC2a @@ -270,21 +271,4 @@ class ObcWithC2a : public OnBoardComputer { static std::map gpio_ports_c2a_; //!< GPIO ports }; -// If the character encoding of C2A is UTF-8, the following functions are not necessary, -// and users can directory use SendFromObc_C2A and ReceivedByObc_C2A UART -// TODO: Delete these functions since C2A is changed to use UTF-8 - -// C2A communication functions -int OBC_C2A_SendFromObc(int port_id, unsigned char* buffer, int offset, int length); -int OBC_C2A_ReceivedByObc(int port_id, unsigned char* buffer, int offset, int length); - -// I2C -int OBC_C2A_I2cWriteCommand(int port_id, const unsigned char i2c_address, const unsigned char* data, const unsigned char length); -int OBC_C2A_I2cWriteRegister(int port_id, const unsigned char i2c_address, const unsigned char* data, const unsigned char length); -int OBC_C2A_I2cReadRegister(int port_id, const unsigned char i2c_address, unsigned char* data, const unsigned char length); - -// GPIO -int OBC_C2A_GpioWrite(int port_id, const bool is_high); -bool OBC_C2A_GpioRead(int port_id); // return false when the port_id is not used - #endif // S2E_COMPONENTS_REAL_CDH_OBC_C2A_HPP_ From 715b1ff5a6c73aca74f7f672c2b1947ee32ea3ca Mon Sep 17 00:00:00 2001 From: "MYCOMPUTER\\nlab" Date: Fri, 15 Mar 2024 17:31:20 +0900 Subject: [PATCH 189/456] modify include --- src/components/CMakeLists.txt | 4 ++-- src/simulation/hils/hils_port_manager.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/CMakeLists.txt b/src/components/CMakeLists.txt index 36d90a7b8..b5d49d1c7 100644 --- a/src/components/CMakeLists.txt +++ b/src/components/CMakeLists.txt @@ -57,8 +57,8 @@ ports/i2c_port.cpp if(USE_HILS) set(SOURCE_FILES ${SOURCE_FILES} - hils/ports/hils_uart_port.cpp - hils/ports/hils_i2c_target_port.cpp + ports/hils_uart_port.cpp + ports/hils_i2c_target_port.cpp ) endif() diff --git a/src/simulation/hils/hils_port_manager.hpp b/src/simulation/hils/hils_port_manager.hpp index d4db5958e..9fbeaf2c7 100644 --- a/src/simulation/hils/hils_port_manager.hpp +++ b/src/simulation/hils/hils_port_manager.hpp @@ -7,8 +7,8 @@ #define S2E_SIMULATION_HILS_HILS_PORT_MANAGER_HPP_ #ifdef USE_HILS -#include "ports/hils_i2c_target_port.hpp" -#include "ports/hils_uart_port.hpp" +#include "../../components/ports/hils_i2c_target_port.hpp" +#include "../../components/ports/hils_uart_port.hpp" #endif #include From 0e79928c9a47248cb9bf17c2bda8f5149fdf05b0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 24 Mar 2024 19:10:47 +0900 Subject: [PATCH 190/456] Fix include path for orbit observer --- src/components/ideal/orbit_observer.cpp | 4 ++-- src/components/ideal/orbit_observer.hpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 61fe2b002..ce6e5035e 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -5,8 +5,8 @@ #include "orbit_observer.hpp" -#include -#include +#include +#include OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const libra::Vector<6> error_standard_deviation, const Orbit& orbit) diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 490489957..976a8d236 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -7,9 +7,9 @@ #define S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ #include -#include -#include -#include +#include +#include +#include #include "../base/component.hpp" From e2480cf4fabf7c087d8c79ae597e38ccf5b409db Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 24 Mar 2024 19:15:24 +0900 Subject: [PATCH 191/456] Fix format --- src/components/ideal/orbit_observer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index ce6e5035e..19d26c8b9 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -5,8 +5,8 @@ #include "orbit_observer.hpp" -#include #include +#include OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const libra::Vector<6> error_standard_deviation, const Orbit& orbit) From 6f95f218ffa2fba659e77b51a3a7bb09e83ebb33 Mon Sep 17 00:00:00 2001 From: hirotaka_sekine Date: Tue, 26 Mar 2024 18:44:41 +0900 Subject: [PATCH 192/456] restore changes --- src/components/ports/hils_i2c_target_port.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/ports/hils_i2c_target_port.hpp b/src/components/ports/hils_i2c_target_port.hpp index a9e2c8663..08437cbc4 100644 --- a/src/components/ports/hils_i2c_target_port.hpp +++ b/src/components/ports/hils_i2c_target_port.hpp @@ -10,6 +10,9 @@ #include "hils_uart_port.hpp" +const unsigned int kDefaultCommandSize = 0xff; //!< Default command size +const unsigned int kDefaultTxSize = 0xff; //!< Default TX size + /** * @class HilsI2cTargetPort * @brief Class to control I2C-USB converter for the target(device) side from COM port @@ -93,8 +96,6 @@ class HilsI2cTargetPort : public HilsUartPort { int GetStoredFrameCounter(); private: - const unsigned int kDefaultCommandSize = 0xff; //!< Default command size - const unsigned int kDefaultTxSize = 0xff; //!< Default TX size unsigned char max_register_number_ = 0xff; //!< Maximum register number unsigned char saved_register_address_ = 0x00; //!< Saved register address unsigned int stored_frame_counter_ = 0; //!< Send a few frames of telemetry to the converter in advance. From 3886a386329645863ba35e5f7c9d87ce6d406096 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:16:52 +0000 Subject: [PATCH 193/456] Update actions/setup-python action to v5.1.0 --- .github/workflows/build.yml | 2 +- .github/workflows/validate-scripts.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3ae0dc23..9bb75dab4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -239,7 +239,7 @@ jobs: ver=$(grep python_version ./Pipfile | sed -e 's/^python_version\s=\s"\(.*\)"$/\1/') echo "version=$ver" >> "$GITHUB_OUTPUT" - - uses: actions/setup-python@v5.0.0 + - uses: actions/setup-python@v5.1.0 with: python-version: ${{ steps.python-version.outputs.version }} diff --git a/.github/workflows/validate-scripts.yml b/.github/workflows/validate-scripts.yml index 97973876c..899eca69a 100644 --- a/.github/workflows/validate-scripts.yml +++ b/.github/workflows/validate-scripts.yml @@ -28,7 +28,7 @@ jobs: ver=$(grep python_version ./Pipfile | sed -e 's/^python_version\s=\s"\(.*\)"$/\1/') echo "version=${ver}" >> "$GITHUB_OUTPUT" - - uses: actions/setup-python@v5.0.0 + - uses: actions/setup-python@v5.1.0 with: python-version: ${{ steps.python-version.outputs.version }} From 058636292371d44c7644bdc772a616cbd6d8eed2 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Mon, 15 Apr 2024 18:13:17 +0900 Subject: [PATCH 194/456] add parameters for flexible structure --- .../initialize_files/sample_structure.ini | 18 ++++++++++++++++++ .../structure/initialize_structure.cpp | 12 +++++++++++- .../structure/kinematics_parameters.cpp | 11 ++++++++++- .../structure/kinematics_parameters.hpp | 15 ++++++++++++--- 4 files changed, 51 insertions(+), 5 deletions(-) diff --git a/data/sample/initialize_files/sample_structure.ini b/data/sample/initialize_files/sample_structure.ini index b7c707cb5..fdd24de37 100644 --- a/data/sample/initialize_files/sample_structure.ini +++ b/data/sample/initialize_files/sample_structure.ini @@ -24,6 +24,24 @@ center_of_gravity_b_m(0) = 0.01 center_of_gravity_b_m(1) = 0.01 center_of_gravity_b_m(2) = 0.01 +// Inertia Tensor of Flexible Structure @ body fixed frame [kg・m2] +// If you want to ignore the flexible structure, set all params of the inertia tensor at 0.0 [kg・m2] +inertia_tensor_flexible_structure_kgm2(0) = 0.1 // I_xx +inertia_tensor_flexible_structure_kgm2(1) = 0.0 // I_xy +inertia_tensor_flexible_structure_kgm2(2) = 0.0 // I_xz +inertia_tensor_flexible_structure_kgm2(3) = 0.0 // I_yx +inertia_tensor_flexible_structure_kgm2(4) = 0.1 // I_yy +inertia_tensor_flexible_structure_kgm2(5) = 0.0 // I_yz +inertia_tensor_flexible_structure_kgm2(6) = 0.0 // I_zx +inertia_tensor_flexible_structure_kgm2(7) = 0.0 // I_zy +inertia_tensor_flexible_structure_kgm2(8) = 0.1 // I_zz + +// Damping ratio of the flexible structure +zeta_flexible_structure = 0.01 + +// Intrinsic angular velocity [rad/s] +omega_flexible_structure_rad_s = 25.5097 // 4.06 Hz + [SURFACES] number_of_surfaces = 6 diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index e1def4ea9..8cfd0af65 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -24,8 +24,18 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { inertia_tensor_b_kgm2[i][j] = inertia_vec[i * 3 + j]; } } + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2; + conf.ReadVector(section, "inertia_tensor_flexible_structure_kgm2", inertia_vec); + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + inertia_tensor_flexible_b_kgm2[i][j] = inertia_vec[i * 3 + j]; + } + } + double zeta_flexible = conf.ReadDouble(section, "zeta_flexible_structure"); + double omega_flexible_rad_s = conf.ReadDouble(section, "omega_flexible_structure_rad_s"); - KinematicsParameters kinematics_params(center_of_gravity_b_m, mass_kg, inertia_tensor_b_kgm2); + KinematicsParameters kinematics_params(center_of_gravity_b_m, mass_kg, inertia_tensor_b_kgm2, inertia_tensor_flexible_b_kgm2, zeta_flexible, + omega_flexible_rad_s); return kinematics_params; } diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index bd2cc3346..014a7f6c5 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -6,4 +6,13 @@ #include "kinematics_parameters.hpp" KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2) - : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} \ No newline at end of file + : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} + +KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2, + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double zeta_flexible, double omega_flexible_rad_s) + : center_of_gravity_b_m_(center_of_gravity_b_m), + mass_kg_(mass_kg), + inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2), + inertia_tensor_flexible_b_kgm2_(inertia_tensor_flexible_b_kgm2), + zeta_flexible_(zeta_flexible), + omega_flexible_rad_s_(omega_flexible_rad_s) {} \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index be864b402..09e2823d8 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -20,6 +20,12 @@ class KinematicsParameters { * @brief Constructor */ KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2); + /** + * @fn KinematicsParameters + * @brief Constructor + */ + KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2, + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double zeta_flexible, double omega_flexible_rad_s); /** * @fn ~KinematicsParameters * @brief Destructor @@ -81,9 +87,12 @@ class KinematicsParameters { } private: - libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] - double mass_kg_; //!< Mass of the satellite [kg] - libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] + libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] + double mass_kg_; //!< Mass of the satellite [kg] + libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2_{0}; //!< Inertia tensor of the flexible structure at body frame [kgm2] + double zeta_flexible_ = 0; //!< Damping ratio of the flexible structure [] + double omega_flexible_rad_s_ = 0; //!< Intrinsic angular velocity [rad/s] }; #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ From 42abb82a88a585f9214bd4c62e5588e5114614a4 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Mon, 15 Apr 2024 22:44:18 +0900 Subject: [PATCH 195/456] calculate flexible structure using RK4 method --- src/dynamics/attitude/attitude_rk4.cpp | 62 ++++++++++++++++--- src/dynamics/attitude/attitude_rk4.hpp | 35 +++++++++-- src/dynamics/attitude/initialize_attitude.cpp | 7 ++- src/dynamics/attitude/initialize_attitude.hpp | 4 +- src/dynamics/dynamics.cpp | 7 ++- .../structure/kinematics_parameters.hpp | 15 +++++ 6 files changed, 112 insertions(+), 18 deletions(-) diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 669b3b61c..717eef90a 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -24,6 +24,28 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const CalcAngularMomentum(); } +AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, + const double zeta_flexible, const double omega_flexible_rad_s, const libra::Vector<3>& torque_b_Nm, + const double propagation_step_s, const std::string& simulation_object_name) + : Attitude(inertia_tensor_kgm2, simulation_object_name) { + angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; + quaternion_i2b_ = quaternion_i2b; + torque_b_Nm_ = torque_b_Nm; + propagation_step_s_ = propagation_step_s; + current_propagation_time_s_ = 0.0; + angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); + previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; + inertia_tensor_flexible_kgm2_ = inertia_tensor_flexible_kgm2; + zeta_flexible_ = zeta_flexible; + omega_flexible_rad_s_ = omega_flexible_rad_s; + inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); + inverse_equivalent_inertia_tensor_flexible_ = CalcInverseMatrix(inertia_tensor_kgm2_) * (inertia_tensor_kgm2_ + inertia_tensor_flexible_kgm2_) * + CalcInverseMatrix(inertia_tensor_flexible_kgm2_); + inverse_inertia_tensor_total_ = CalcInverseMatrix(inertia_tensor_kgm2_ + inertia_tensor_flexible_kgm2_); + CalcAngularMomentum(); +} + AttitudeRk4::~AttitudeRk4() {} void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { @@ -79,18 +101,30 @@ libra::Matrix<4, 4> AttitudeRk4::CalcAngularVelocityMatrix(libra::Vector<3> angu return angular_velocity_matrix; } -libra::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t) { +libra::Vector<10> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<10> x, double t) { UNUSED(t); - libra::Vector<7> dxdt; + libra::Vector<10> dxdt; libra::Vector<3> omega_b; for (int i = 0; i < 3; i++) { omega_b[i] = x[i]; } + libra::Vector<3> omega_flexible; + for (int i = 0; i < 3; i++) { + omega_flexible[i] = x[i + 7]; + } + libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; - libra::Vector<3> rhs = - inverse_inertia_tensor_ * (torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); + libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; + + libra::Vector<3> angular_accelaration_flexible_rad_s2 = + inverse_equivalent_inertia_tensor_flexible_ * + (-2 * zeta_flexible_ * omega_flexible_rad_s_ * inertia_tensor_flexible_kgm2_ * omega_flexible - + omega_flexible_rad_s_ * omega_flexible_rad_s_ * inertia_tensor_flexible_kgm2_ * eular_angular_flexible_rad_) - + inverse_inertia_tensor_ * net_torque_b_Nm; + + libra::Vector<3> rhs = inverse_inertia_tensor_total_ * net_torque_b_Nm - inertia_tensor_flexible_kgm2_ * angular_accelaration_flexible_rad_s2; for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; @@ -107,20 +141,27 @@ libra::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<7> x, dxdt[i + 3] = d_quaternion[i]; } + for (int i = 0; i < 3; i++) { + dxdt[i + 7] = angular_accelaration_flexible_rad_s2[i]; + } + return dxdt; } void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { - libra::Vector<7> x; + libra::Vector<10> x; for (int i = 0; i < 3; i++) { x[i] = angular_velocity_b_rad_s_[i]; } for (int i = 0; i < 4; i++) { x[i + 3] = quaternion_i2b_[i]; } + for (int i = 0; i < 3; i++) { + x[i + 7] = angular_velocity_flexible_rad_s_[i]; + } - libra::Vector<7> k1, k2, k3, k4; - libra::Vector<7> xk2, xk3, xk4; + libra::Vector<10> k1, k2, k3, k4; + libra::Vector<10> xk2, xk3, xk4; k1 = AttitudeDynamicsAndKinematics(x, t); xk2 = x + (dt / 2.0) * k1; @@ -133,7 +174,7 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); - libra::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); + libra::Vector<10> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = next_x[i]; @@ -142,4 +183,9 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { quaternion_i2b_[i] = next_x[i + 3]; } quaternion_i2b_.Normalize(); + + eular_angular_flexible_rad_ += dt * angular_velocity_flexible_rad_s_; + for (int i = 0; i < 3; i++) { + angular_velocity_flexible_rad_s_[i] = next_x[i + 7]; + } } diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 58e09a703..947932901 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -27,6 +27,23 @@ class AttitudeRk4 : public Attitude { AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); + /** + * @fn AttitudeRk4 + * @brief Constructor + * @param [in] angular_velocity_b_rad_s: Initial value of spacecraft angular velocity of the body fixed frame [rad/s] + * @param [in] quaternion_i2b: Initial value of attitude quaternion from the inertial frame to the body fixed frame + * @param [in] inertia_tensor_kgm2: Initial value of inertia tensor of the spacecraft [kg m^2] + * @param [in] inertia_tensor_flexible_kgm2: Initial value of inertia tensor of the flexible structure [kg m^2] + * @param [in] zeta_flexible: Initial value of damping ratio of the flexible structure [] + * @param [in] omega_flexible_rad_s: Initial value of intrinsic angular velocity [rad/s] + * @param [in] torque_b_Nm: Initial torque acting on the spacecraft in the body fixed frame [Nm] + * @param [in] propagation_step_s: Initial value of propagation step width [sec] + * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation + */ + AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double zeta_flexible, + const double omega_flexible_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 * @brief Destructor @@ -48,10 +65,18 @@ class AttitudeRk4 : public Attitude { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); private: - double current_propagation_time_s_; //!< current time [sec] - libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor - libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + double current_propagation_time_s_; //!< current time [sec] + libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor + libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] + libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + libra::Matrix<3, 3> inertia_tensor_flexible_kgm2_; //!< Inertia tensor of the flexible structure [kgm2] + libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_flexible_; //!< Inverse of inertia tensor of the flexible structure + libra::Matrix<3, 3> inverse_inertia_tensor_total_; //!< Inverse of inertia tensor of the spacecraft + double zeta_flexible_; //!< Damping ratio of the flexible structure [] + double omega_flexible_rad_s_; //!< Intrinsic angular velocity [rad/s] + + libra::Vector<3> angular_velocity_flexible_rad_s_; //!< Angular velocity of the flexible structure with respect to the inertial frame [rad/s] + libra::Vector<3> eular_angular_flexible_rad_; //!< Eular angle of the flexible structure with respect to the inertial frame [rad/s] /** * @fn CalcAngularVelocityMatrix @@ -65,7 +90,7 @@ class AttitudeRk4 : public Attitude { * @param [in] x: State vector (angular velocity and quaternion) * @param [in] t: Unused TODO: remove? */ - libra::Vector<7> AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t); + libra::Vector<10> AttitudeDynamicsAndKinematics(libra::Vector<10> x, double t); /** * @fn RungeKuttaOneStep * @brief Equation for one step of Runge-Kutta method diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index da7fd02ab..048adc861 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -7,7 +7,9 @@ #include Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { + const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, + const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double zeta_flexible, const double omega_flexible_rad_s, + const int spacecraft_id) { IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); @@ -25,7 +27,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel libra::Vector<3> torque_b; ini_file.ReadVector(section_, "initial_torque_b_Nm", torque_b); - attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, torque_b, step_width_s, mc_name); + attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, inertia_tensor_flexible_kgm2, zeta_flexible, omega_flexible_rad_s, + torque_b, step_width_s, mc_name); } else if (propagate_mode == "RK4" && initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) IniAccess ini_file_ca(file_name); diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index 964d6cbb0..e48dca266 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -21,6 +21,8 @@ * @param [in] spacecraft_id: Satellite ID */ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); + const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, + const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double zeta_flexible, const double omega_flexible_rad_s, + const int spacecraft_id); #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 04d0886a7..5d2033e04 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -27,8 +27,11 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio orbit_ = InitOrbit(&(local_celestial_information.GetGlobalInformation()), simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetOrbitRkStepTime_s(), simulation_time->GetCurrentTime_jd(), local_celestial_information.GetGlobalInformation().GetCenterBodyGravityConstant_m3_s2(), "ORBIT", relative_information); - attitude_ = InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, - simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), spacecraft_id); + attitude_ = + InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, + simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), + structure->GetKinematicsParameters().GetInertiaTensorFlexible_b_kgm2(), structure->GetKinematicsParameters().GetZetaFlexible(), + structure->GetKinematicsParameters().GetOmegaFlexible_rad_s(), spacecraft_id); temperature_ = InitTemperature(simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetThermalRkStepTime_s(), &(local_environment_->GetSolarRadiationPressure())); diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 09e2823d8..e8ac0cf8c 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -48,6 +48,21 @@ class KinematicsParameters { * @brief Return Inertia tensor at body frame [kgm2] */ inline const libra::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } + /** + * @fn GetInertiaTensorFlexible_b_kgm2 + * @brief Return Inertia tensor of the flexible structure at body frame [kgm2] + */ + inline const libra::Matrix<3, 3>& GetInertiaTensorFlexible_b_kgm2() const { return inertia_tensor_flexible_b_kgm2_; } + /** + * @fn GetZetaFlexible + * @brief Return Damping ratio of the flexible structure [] + */ + inline const double& GetZetaFlexible() const { return zeta_flexible_; } + /** + * @fn GetOmegaFlexible_rad_s + * @brief Return Intrinsic angular velocity [rad/s] + */ + inline const double& GetOmegaFlexible_rad_s() const { return omega_flexible_rad_s_; } // Setter /** From 0595bf23bb694fc064f96f541b9bf8a363bc3cf4 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Tue, 16 Apr 2024 14:23:59 +0900 Subject: [PATCH 196/456] add Logger --- src/dynamics/attitude/attitude_rk4.cpp | 18 ++++++++++++++++++ src/dynamics/attitude/attitude_rk4.hpp | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 717eef90a..acc29ab24 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -48,6 +48,24 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const AttitudeRk4::~AttitudeRk4() {} +std::string AttitudeRk4::GetLogHeader() const { + std::string str_tmp = ""; + + str_tmp += WriteVector("eular_angular_flexible", "c", "rad", 3); + str_tmp += WriteVector("angular_velocity_flexible", "c", "rad/s", 3); + + return str_tmp; +} + +std::string AttitudeRk4::GetLogValue() const { + std::string str_tmp = ""; + + str_tmp += WriteVector(eular_angular_flexible_rad_); + str_tmp += WriteVector(angular_velocity_flexible_rad_s_); + + return str_tmp; +} + void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { Attitude::SetParameters(mc_simulator); GetInitializedMonteCarloParameterVector(mc_simulator, "angular_velocity_b_rad_s", angular_velocity_b_rad_s_); diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 947932901..4e8ca626a 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -57,6 +57,18 @@ class AttitudeRk4 : public Attitude { */ virtual void Propagate(const double end_time_s); + // Override ILoggable + /** + * @fn GetLogHeader + * @brief Override GetLogHeader function of ILoggable + */ + virtual std::string GetLogHeader() const; + /** + * @fn GetLogValue + * @brief Override GetLogValue function of ILoggable + */ + virtual std::string GetLogValue() const; + /** * @fn SetParameters * @brief Set parameters for Monte-Carlo simulation From 429ddf139adddf7879e099a22a522c5b9362945f Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Tue, 16 Apr 2024 19:02:52 +0900 Subject: [PATCH 197/456] fix small --- src/dynamics/attitude/attitude_rk4.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index acc29ab24..6d858b1ae 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -51,6 +51,11 @@ AttitudeRk4::~AttitudeRk4() {} std::string AttitudeRk4::GetLogHeader() const { std::string str_tmp = ""; + str_tmp += WriteVector("spacecraft_angular_velocity", "b", "rad/s", 3); + str_tmp += WriteQuaternion("spacecraft_quaternion", "i2b"); + str_tmp += WriteVector("spacecraft_torque", "b", "Nm", 3); + str_tmp += WriteScalar("spacecraft_total_angular_momentum", "Nms"); + str_tmp += WriteScalar("spacecraft_kinematic_energy", "J"); str_tmp += WriteVector("eular_angular_flexible", "c", "rad", 3); str_tmp += WriteVector("angular_velocity_flexible", "c", "rad/s", 3); @@ -60,6 +65,11 @@ std::string AttitudeRk4::GetLogHeader() const { std::string AttitudeRk4::GetLogValue() const { std::string str_tmp = ""; + str_tmp += WriteVector(angular_velocity_b_rad_s_); + str_tmp += WriteQuaternion(quaternion_i2b_); + str_tmp += WriteVector(torque_b_Nm_); + str_tmp += WriteScalar(angular_momentum_total_Nms_); + str_tmp += WriteScalar(kinetic_energy_J_); str_tmp += WriteVector(eular_angular_flexible_rad_); str_tmp += WriteVector(angular_velocity_flexible_rad_s_); From c1eafd914c657c5bc4cddbfaf19b13c0cd017b43 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 17 Apr 2024 12:09:52 +0900 Subject: [PATCH 198/456] simplify equation --- src/dynamics/attitude/attitude_rk4.cpp | 10 ++++------ src/dynamics/attitude/attitude_rk4.hpp | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 6d858b1ae..a2a831e28 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -37,8 +37,8 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; inertia_tensor_flexible_kgm2_ = inertia_tensor_flexible_kgm2; - zeta_flexible_ = zeta_flexible; - omega_flexible_rad_s_ = omega_flexible_rad_s; + attenuateion_coefficient_ = 2 * zeta_flexible * omega_flexible_rad_s * inertia_tensor_flexible_kgm2; + spring_constant_ = omega_flexible_rad_s * omega_flexible_rad_s * inertia_tensor_flexible_kgm2; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); inverse_equivalent_inertia_tensor_flexible_ = CalcInverseMatrix(inertia_tensor_kgm2_) * (inertia_tensor_kgm2_ + inertia_tensor_flexible_kgm2_) * CalcInverseMatrix(inertia_tensor_flexible_kgm2_); @@ -147,12 +147,10 @@ libra::Vector<10> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<10> x libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; libra::Vector<3> angular_accelaration_flexible_rad_s2 = - inverse_equivalent_inertia_tensor_flexible_ * - (-2 * zeta_flexible_ * omega_flexible_rad_s_ * inertia_tensor_flexible_kgm2_ * omega_flexible - - omega_flexible_rad_s_ * omega_flexible_rad_s_ * inertia_tensor_flexible_kgm2_ * eular_angular_flexible_rad_) - + -(inverse_equivalent_inertia_tensor_flexible_ * (attenuateion_coefficient_ * omega_flexible + spring_constant_ * eular_angular_flexible_rad_)) - inverse_inertia_tensor_ * net_torque_b_Nm; - libra::Vector<3> rhs = inverse_inertia_tensor_total_ * net_torque_b_Nm - inertia_tensor_flexible_kgm2_ * angular_accelaration_flexible_rad_s2; + libra::Vector<3> rhs = inverse_inertia_tensor_total_ * (net_torque_b_Nm - inertia_tensor_flexible_kgm2_ * angular_accelaration_flexible_rad_s2); for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 4e8ca626a..538ba786c 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -84,8 +84,8 @@ class AttitudeRk4 : public Attitude { libra::Matrix<3, 3> inertia_tensor_flexible_kgm2_; //!< Inertia tensor of the flexible structure [kgm2] libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_flexible_; //!< Inverse of inertia tensor of the flexible structure libra::Matrix<3, 3> inverse_inertia_tensor_total_; //!< Inverse of inertia tensor of the spacecraft - double zeta_flexible_; //!< Damping ratio of the flexible structure [] - double omega_flexible_rad_s_; //!< Intrinsic angular velocity [rad/s] + libra::Matrix<3, 3> attenuateion_coefficient_; //!< Attenuation coefficient + libra::Matrix<3, 3> spring_constant_; //!< Spring constant libra::Vector<3> angular_velocity_flexible_rad_s_; //!< Angular velocity of the flexible structure with respect to the inertial frame [rad/s] libra::Vector<3> eular_angular_flexible_rad_; //!< Eular angle of the flexible structure with respect to the inertial frame [rad/s] From a62de895083cedfc7ab4cb653b9c7792ae58fec7 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Thu, 18 Apr 2024 13:33:36 +0900 Subject: [PATCH 199/456] rename variables --- .../initialize_files/sample_structure.ini | 5 ++-- src/dynamics/attitude/attitude_rk4.cpp | 10 ++++---- src/dynamics/attitude/attitude_rk4.hpp | 10 ++++---- src/dynamics/attitude/initialize_attitude.cpp | 8 +++---- src/dynamics/attitude/initialize_attitude.hpp | 4 ++-- src/dynamics/dynamics.cpp | 10 ++++---- .../structure/initialize_structure.cpp | 13 +++++++---- .../structure/kinematics_parameters.cpp | 7 +++--- .../structure/kinematics_parameters.hpp | 23 ++++++++++--------- 9 files changed, 49 insertions(+), 41 deletions(-) diff --git a/data/sample/initialize_files/sample_structure.ini b/data/sample/initialize_files/sample_structure.ini index fdd24de37..5aa7af050 100644 --- a/data/sample/initialize_files/sample_structure.ini +++ b/data/sample/initialize_files/sample_structure.ini @@ -24,6 +24,7 @@ center_of_gravity_b_m(0) = 0.01 center_of_gravity_b_m(1) = 0.01 center_of_gravity_b_m(2) = 0.01 +[KINEMATIC_PARAMETERS_FOR_FLEXIBLE_STRUCTURE] // Inertia Tensor of Flexible Structure @ body fixed frame [kg・m2] // If you want to ignore the flexible structure, set all params of the inertia tensor at 0.0 [kg・m2] inertia_tensor_flexible_structure_kgm2(0) = 0.1 // I_xx @@ -37,10 +38,10 @@ inertia_tensor_flexible_structure_kgm2(7) = 0.0 // I_zy inertia_tensor_flexible_structure_kgm2(8) = 0.1 // I_zz // Damping ratio of the flexible structure -zeta_flexible_structure = 0.01 +damping_ratio_flexible_structure = 0.01 // Intrinsic angular velocity [rad/s] -omega_flexible_structure_rad_s = 25.5097 // 4.06 Hz +intrinsic_angular_velocity_flexible_structure_rad_s = 25.5097 // 4.06 Hz [SURFACES] number_of_surfaces = 6 diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index a2a831e28..a0a027f4b 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -26,8 +26,8 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, - const double zeta_flexible, const double omega_flexible_rad_s, const libra::Vector<3>& torque_b_Nm, - const double propagation_step_s, const std::string& simulation_object_name) + const double damping_ratio_flexible_structure, const double intrinsic_angular_velocity_flexible_structure_rad_s, + const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; quaternion_i2b_ = quaternion_i2b; @@ -37,8 +37,10 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; inertia_tensor_flexible_kgm2_ = inertia_tensor_flexible_kgm2; - attenuateion_coefficient_ = 2 * zeta_flexible * omega_flexible_rad_s * inertia_tensor_flexible_kgm2; - spring_constant_ = omega_flexible_rad_s * omega_flexible_rad_s * inertia_tensor_flexible_kgm2; + attenuateion_coefficient_ = + 2 * damping_ratio_flexible_structure * intrinsic_angular_velocity_flexible_structure_rad_s * inertia_tensor_flexible_kgm2; + spring_constant_ = + intrinsic_angular_velocity_flexible_structure_rad_s * intrinsic_angular_velocity_flexible_structure_rad_s * inertia_tensor_flexible_kgm2; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); inverse_equivalent_inertia_tensor_flexible_ = CalcInverseMatrix(inertia_tensor_kgm2_) * (inertia_tensor_kgm2_ + inertia_tensor_flexible_kgm2_) * CalcInverseMatrix(inertia_tensor_flexible_kgm2_); diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 538ba786c..ea227f550 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -34,16 +34,16 @@ class AttitudeRk4 : public Attitude { * @param [in] quaternion_i2b: Initial value of attitude quaternion from the inertial frame to the body fixed frame * @param [in] inertia_tensor_kgm2: Initial value of inertia tensor of the spacecraft [kg m^2] * @param [in] inertia_tensor_flexible_kgm2: Initial value of inertia tensor of the flexible structure [kg m^2] - * @param [in] zeta_flexible: Initial value of damping ratio of the flexible structure [] - * @param [in] omega_flexible_rad_s: Initial value of intrinsic angular velocity [rad/s] + * @param [in] damping_ratio_flexible_structure: Initial value of damping ratio of the flexible structure [] + * @param [in] intrinsic_angular_velocity_flexible_structure_rad_s: Initial value of intrinsic angular velocity [rad/s] * @param [in] torque_b_Nm: Initial torque acting on the spacecraft in the body fixed frame [Nm] * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double zeta_flexible, - const double omega_flexible_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, - const std::string& simulation_object_name = "attitude"); + const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, + const double damping_ratio_flexible_structure, const double intrinsic_angular_velocity_flexible_structure_rad_s, + const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 * @brief Destructor diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 048adc861..3a9d87068 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -8,8 +8,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, - const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double zeta_flexible, const double omega_flexible_rad_s, - const int spacecraft_id) { + const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double damping_ratio_flexible_structure, + const double intrinsic_angular_velocity_flexible_structure_rad_s, const int spacecraft_id) { IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); @@ -27,8 +27,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel libra::Vector<3> torque_b; ini_file.ReadVector(section_, "initial_torque_b_Nm", torque_b); - attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, inertia_tensor_flexible_kgm2, zeta_flexible, omega_flexible_rad_s, - torque_b, step_width_s, mc_name); + attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, inertia_tensor_flexible_kgm2, damping_ratio_flexible_structure, + intrinsic_angular_velocity_flexible_structure_rad_s, torque_b, step_width_s, mc_name); } else if (propagate_mode == "RK4" && initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) IniAccess ini_file_ca(file_name); diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index e48dca266..fa73d753c 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -22,7 +22,7 @@ */ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, - const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double zeta_flexible, const double omega_flexible_rad_s, - const int spacecraft_id); + const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double damping_ratio_flexible_structure, + const double intrinsic_angular_velocity_flexible_structure_rad_s, const int spacecraft_id); #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 5d2033e04..6180757ea 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -27,11 +27,11 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio orbit_ = InitOrbit(&(local_celestial_information.GetGlobalInformation()), simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetOrbitRkStepTime_s(), simulation_time->GetCurrentTime_jd(), local_celestial_information.GetGlobalInformation().GetCenterBodyGravityConstant_m3_s2(), "ORBIT", relative_information); - attitude_ = - InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, - simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), - structure->GetKinematicsParameters().GetInertiaTensorFlexible_b_kgm2(), structure->GetKinematicsParameters().GetZetaFlexible(), - structure->GetKinematicsParameters().GetOmegaFlexible_rad_s(), spacecraft_id); + attitude_ = InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, + simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), + structure->GetKinematicsParameters().GetInertiaTensorFlexible_b_kgm2(), + structure->GetKinematicsParameters().GetDampingRatioFlexibleStructure(), + structure->GetKinematicsParameters().GetIntrinsicAngularVelocityFlexibleStructure_rad_s(), spacecraft_id); temperature_ = InitTemperature(simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetThermalRkStepTime_s(), &(local_environment_->GetSolarRadiationPressure())); diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 8cfd0af65..3615f12a2 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -24,18 +24,21 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { inertia_tensor_b_kgm2[i][j] = inertia_vec[i * 3 + j]; } } + + const char* section_flexible_structure = "KINEMATIC_PARAMETERS_FOR_FLEXIBLE_STRUCTURE"; libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2; - conf.ReadVector(section, "inertia_tensor_flexible_structure_kgm2", inertia_vec); + conf.ReadVector(section_flexible_structure, "inertia_tensor_flexible_structure_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { inertia_tensor_flexible_b_kgm2[i][j] = inertia_vec[i * 3 + j]; } } - double zeta_flexible = conf.ReadDouble(section, "zeta_flexible_structure"); - double omega_flexible_rad_s = conf.ReadDouble(section, "omega_flexible_structure_rad_s"); + double damping_ratio_flexible_structure = conf.ReadDouble(section_flexible_structure, "damping_ratio_flexible_structure"); + double intrinsic_angular_velocity_flexible_structure_rad_s = + conf.ReadDouble(section_flexible_structure, "intrinsic_angular_velocity_flexible_structure_rad_s"); - KinematicsParameters kinematics_params(center_of_gravity_b_m, mass_kg, inertia_tensor_b_kgm2, inertia_tensor_flexible_b_kgm2, zeta_flexible, - omega_flexible_rad_s); + KinematicsParameters kinematics_params(center_of_gravity_b_m, mass_kg, inertia_tensor_b_kgm2, inertia_tensor_flexible_b_kgm2, + damping_ratio_flexible_structure, intrinsic_angular_velocity_flexible_structure_rad_s); return kinematics_params; } diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 014a7f6c5..33f3d3513 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -9,10 +9,11 @@ KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_ : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2, - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double zeta_flexible, double omega_flexible_rad_s) + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double damping_ratio_flexible_structure, + double intrinsic_angular_velocity_flexible_structure_rad_s) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2), inertia_tensor_flexible_b_kgm2_(inertia_tensor_flexible_b_kgm2), - zeta_flexible_(zeta_flexible), - omega_flexible_rad_s_(omega_flexible_rad_s) {} \ No newline at end of file + damping_ratio_flexible_structure_(damping_ratio_flexible_structure), + intrinsic_angular_velocity_flexible_structure_rad_s_(intrinsic_angular_velocity_flexible_structure_rad_s) {} \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index e8ac0cf8c..7acfc6749 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -25,7 +25,8 @@ class KinematicsParameters { * @brief Constructor */ KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2, - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double zeta_flexible, double omega_flexible_rad_s); + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double damping_ratio_flexible_structure, + double intrinsic_angular_velocity_flexible_structure_rad_s); /** * @fn ~KinematicsParameters * @brief Destructor @@ -54,15 +55,15 @@ class KinematicsParameters { */ inline const libra::Matrix<3, 3>& GetInertiaTensorFlexible_b_kgm2() const { return inertia_tensor_flexible_b_kgm2_; } /** - * @fn GetZetaFlexible + * @fn GetDampingRatioFlexibleStructure * @brief Return Damping ratio of the flexible structure [] */ - inline const double& GetZetaFlexible() const { return zeta_flexible_; } + inline const double& GetDampingRatioFlexibleStructure() const { return damping_ratio_flexible_structure_; } /** - * @fn GetOmegaFlexible_rad_s + * @fn GetIntrinsicAngularVelocityFlexibleStructure_rad_s * @brief Return Intrinsic angular velocity [rad/s] */ - inline const double& GetOmegaFlexible_rad_s() const { return omega_flexible_rad_s_; } + inline const double& GetIntrinsicAngularVelocityFlexibleStructure_rad_s() const { return intrinsic_angular_velocity_flexible_structure_rad_s_; } // Setter /** @@ -102,12 +103,12 @@ class KinematicsParameters { } private: - libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] - double mass_kg_; //!< Mass of the satellite [kg] - libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2_{0}; //!< Inertia tensor of the flexible structure at body frame [kgm2] - double zeta_flexible_ = 0; //!< Damping ratio of the flexible structure [] - double omega_flexible_rad_s_ = 0; //!< Intrinsic angular velocity [rad/s] + libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] + double mass_kg_; //!< Mass of the satellite [kg] + libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] + libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2_{0}; //!< Inertia tensor of the flexible structure at body frame [kgm2] + double damping_ratio_flexible_structure_ = 0; //!< Damping ratio of the flexible structure [] + double intrinsic_angular_velocity_flexible_structure_rad_s_ = 0; //!< Intrinsic angular velocity [rad/s] }; #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ From b00f483235a198b46738e61f8a8ddc4f34064fac Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Thu, 25 Apr 2024 14:59:11 +0900 Subject: [PATCH 200/456] create attitude_with_cantilever_vibration.cpp/hpp --- .../initialize_files/sample_satellite.ini | 3 +- .../initialize_files/sample_structure.ini | 35 ++- src/dynamics/CMakeLists.txt | 1 + src/dynamics/attitude/attitude_rk4.cpp | 90 +------- src/dynamics/attitude/attitude_rk4.hpp | 47 +--- .../attitude_with_cantilever_vibration.cpp | 205 ++++++++++++++++++ .../attitude_with_cantilever_vibration.hpp | 101 +++++++++ src/dynamics/attitude/initialize_attitude.cpp | 59 ++--- src/dynamics/attitude/initialize_attitude.hpp | 5 +- src/dynamics/dynamics.cpp | 5 +- .../structure/initialize_structure.cpp | 15 +- .../structure/kinematics_parameters.cpp | 10 - .../structure/kinematics_parameters.hpp | 31 +-- 13 files changed, 380 insertions(+), 227 deletions(-) create mode 100644 src/dynamics/attitude/attitude_with_cantilever_vibration.cpp create mode 100644 src/dynamics/attitude/attitude_with_cantilever_vibration.hpp diff --git a/data/sample/initialize_files/sample_satellite.ini b/data/sample/initialize_files/sample_satellite.ini index 3bfa7303b..ca0751766 100644 --- a/data/sample/initialize_files/sample_satellite.ini +++ b/data/sample/initialize_files/sample_satellite.ini @@ -1,12 +1,13 @@ [ATTITUDE] // Attitude propagation mode // RK4 : Attitude Propagation with RK4 including disturbances and control torque +// CANTILEVER_VIBRATION : Attitude Propagation with the consideration of the cantilever vibration (flexible structure) including disturbances and control torque. // CONTROLLED : Attitude Calculation with Controlled Attitude mode. All disturbances and control torque are ignored. propagate_mode = RK4 // Initialize Attitude mode // MANUAL : Initialize Quaternion_i2b manually below -// CONTROLLED : Initialize attitude with given condition. Valid only when Attitude propagation mode is RK4. +// CONTROLLED : Initialize attitude with given condition. Valid except when Attitude propagation mode is CONTROLLED. initialize_mode = MANUAL // Initial angular velocity at body frame [rad/s] diff --git a/data/sample/initialize_files/sample_structure.ini b/data/sample/initialize_files/sample_structure.ini index 5aa7af050..4ca6cf64b 100644 --- a/data/sample/initialize_files/sample_structure.ini +++ b/data/sample/initialize_files/sample_structure.ini @@ -24,24 +24,23 @@ center_of_gravity_b_m(0) = 0.01 center_of_gravity_b_m(1) = 0.01 center_of_gravity_b_m(2) = 0.01 -[KINEMATIC_PARAMETERS_FOR_FLEXIBLE_STRUCTURE] -// Inertia Tensor of Flexible Structure @ body fixed frame [kg・m2] -// If you want to ignore the flexible structure, set all params of the inertia tensor at 0.0 [kg・m2] -inertia_tensor_flexible_structure_kgm2(0) = 0.1 // I_xx -inertia_tensor_flexible_structure_kgm2(1) = 0.0 // I_xy -inertia_tensor_flexible_structure_kgm2(2) = 0.0 // I_xz -inertia_tensor_flexible_structure_kgm2(3) = 0.0 // I_yx -inertia_tensor_flexible_structure_kgm2(4) = 0.1 // I_yy -inertia_tensor_flexible_structure_kgm2(5) = 0.0 // I_yz -inertia_tensor_flexible_structure_kgm2(6) = 0.0 // I_zx -inertia_tensor_flexible_structure_kgm2(7) = 0.0 // I_zy -inertia_tensor_flexible_structure_kgm2(8) = 0.1 // I_zz - -// Damping ratio of the flexible structure -damping_ratio_flexible_structure = 0.01 - -// Intrinsic angular velocity [rad/s] -intrinsic_angular_velocity_flexible_structure_rad_s = 25.5097 // 4.06 Hz +[CANTILEVER_PARAMETERS] +// Inertia Tensor of cantilever (flexible structure) @ body fixed frame [kg・m2] +inertia_tensor_cantilever_kgm2(0) = 0.1 // I_xx +inertia_tensor_cantilever_kgm2(1) = 0.0 // I_xy +inertia_tensor_cantilever_kgm2(2) = 0.0 // I_xz +inertia_tensor_cantilever_kgm2(3) = 0.0 // I_yx +inertia_tensor_cantilever_kgm2(4) = 0.1 // I_yy +inertia_tensor_cantilever_kgm2(5) = 0.0 // I_yz +inertia_tensor_cantilever_kgm2(6) = 0.0 // I_zx +inertia_tensor_cantilever_kgm2(7) = 0.0 // I_zy +inertia_tensor_cantilever_kgm2(8) = 0.1 // I_zz + +// Damping ratio of the cantilever +damping_ratio_cantilever = 0.01 + +// Intrinsic angular velocity of the cantilever [rad/s] +intrinsic_angular_velocity_cantilever_rad_s = 25.5097 // 4.06 Hz [SURFACES] number_of_surfaces = 6 diff --git a/src/dynamics/CMakeLists.txt b/src/dynamics/CMakeLists.txt index bc95612b4..eb4de1bca 100644 --- a/src/dynamics/CMakeLists.txt +++ b/src/dynamics/CMakeLists.txt @@ -18,6 +18,7 @@ add_library(${PROJECT_NAME} STATIC attitude/attitude.cpp attitude/attitude_rk4.cpp + attitude/attitude_with_cantilever_vibration.cpp attitude/controlled_attitude.cpp attitude/initialize_attitude.cpp diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index a0a027f4b..669b3b61c 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -24,60 +24,8 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const CalcAngularMomentum(); } -AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, - const double damping_ratio_flexible_structure, const double intrinsic_angular_velocity_flexible_structure_rad_s, - const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) - : Attitude(inertia_tensor_kgm2, simulation_object_name) { - angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; - quaternion_i2b_ = quaternion_i2b; - torque_b_Nm_ = torque_b_Nm; - propagation_step_s_ = propagation_step_s; - current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); - previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; - inertia_tensor_flexible_kgm2_ = inertia_tensor_flexible_kgm2; - attenuateion_coefficient_ = - 2 * damping_ratio_flexible_structure * intrinsic_angular_velocity_flexible_structure_rad_s * inertia_tensor_flexible_kgm2; - spring_constant_ = - intrinsic_angular_velocity_flexible_structure_rad_s * intrinsic_angular_velocity_flexible_structure_rad_s * inertia_tensor_flexible_kgm2; - inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); - inverse_equivalent_inertia_tensor_flexible_ = CalcInverseMatrix(inertia_tensor_kgm2_) * (inertia_tensor_kgm2_ + inertia_tensor_flexible_kgm2_) * - CalcInverseMatrix(inertia_tensor_flexible_kgm2_); - inverse_inertia_tensor_total_ = CalcInverseMatrix(inertia_tensor_kgm2_ + inertia_tensor_flexible_kgm2_); - CalcAngularMomentum(); -} - AttitudeRk4::~AttitudeRk4() {} -std::string AttitudeRk4::GetLogHeader() const { - std::string str_tmp = ""; - - str_tmp += WriteVector("spacecraft_angular_velocity", "b", "rad/s", 3); - str_tmp += WriteQuaternion("spacecraft_quaternion", "i2b"); - str_tmp += WriteVector("spacecraft_torque", "b", "Nm", 3); - str_tmp += WriteScalar("spacecraft_total_angular_momentum", "Nms"); - str_tmp += WriteScalar("spacecraft_kinematic_energy", "J"); - str_tmp += WriteVector("eular_angular_flexible", "c", "rad", 3); - str_tmp += WriteVector("angular_velocity_flexible", "c", "rad/s", 3); - - return str_tmp; -} - -std::string AttitudeRk4::GetLogValue() const { - std::string str_tmp = ""; - - str_tmp += WriteVector(angular_velocity_b_rad_s_); - str_tmp += WriteQuaternion(quaternion_i2b_); - str_tmp += WriteVector(torque_b_Nm_); - str_tmp += WriteScalar(angular_momentum_total_Nms_); - str_tmp += WriteScalar(kinetic_energy_J_); - str_tmp += WriteVector(eular_angular_flexible_rad_); - str_tmp += WriteVector(angular_velocity_flexible_rad_s_); - - return str_tmp; -} - void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { Attitude::SetParameters(mc_simulator); GetInitializedMonteCarloParameterVector(mc_simulator, "angular_velocity_b_rad_s", angular_velocity_b_rad_s_); @@ -131,28 +79,18 @@ libra::Matrix<4, 4> AttitudeRk4::CalcAngularVelocityMatrix(libra::Vector<3> angu return angular_velocity_matrix; } -libra::Vector<10> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<10> x, double t) { +libra::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t) { UNUSED(t); - libra::Vector<10> dxdt; + libra::Vector<7> dxdt; libra::Vector<3> omega_b; for (int i = 0; i < 3; i++) { omega_b[i] = x[i]; } - libra::Vector<3> omega_flexible; - for (int i = 0; i < 3; i++) { - omega_flexible[i] = x[i + 7]; - } - libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; - libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; - - libra::Vector<3> angular_accelaration_flexible_rad_s2 = - -(inverse_equivalent_inertia_tensor_flexible_ * (attenuateion_coefficient_ * omega_flexible + spring_constant_ * eular_angular_flexible_rad_)) - - inverse_inertia_tensor_ * net_torque_b_Nm; - - libra::Vector<3> rhs = inverse_inertia_tensor_total_ * (net_torque_b_Nm - inertia_tensor_flexible_kgm2_ * angular_accelaration_flexible_rad_s2); + libra::Vector<3> rhs = + inverse_inertia_tensor_ * (torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; @@ -169,27 +107,20 @@ libra::Vector<10> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<10> x dxdt[i + 3] = d_quaternion[i]; } - for (int i = 0; i < 3; i++) { - dxdt[i + 7] = angular_accelaration_flexible_rad_s2[i]; - } - return dxdt; } void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { - libra::Vector<10> x; + libra::Vector<7> x; for (int i = 0; i < 3; i++) { x[i] = angular_velocity_b_rad_s_[i]; } for (int i = 0; i < 4; i++) { x[i + 3] = quaternion_i2b_[i]; } - for (int i = 0; i < 3; i++) { - x[i + 7] = angular_velocity_flexible_rad_s_[i]; - } - libra::Vector<10> k1, k2, k3, k4; - libra::Vector<10> xk2, xk3, xk4; + libra::Vector<7> k1, k2, k3, k4; + libra::Vector<7> xk2, xk3, xk4; k1 = AttitudeDynamicsAndKinematics(x, t); xk2 = x + (dt / 2.0) * k1; @@ -202,7 +133,7 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); - libra::Vector<10> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); + libra::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = next_x[i]; @@ -211,9 +142,4 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { quaternion_i2b_[i] = next_x[i + 3]; } quaternion_i2b_.Normalize(); - - eular_angular_flexible_rad_ += dt * angular_velocity_flexible_rad_s_; - for (int i = 0; i < 3; i++) { - angular_velocity_flexible_rad_s_[i] = next_x[i + 7]; - } } diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index ea227f550..58e09a703 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -27,23 +27,6 @@ class AttitudeRk4 : public Attitude { AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); - /** - * @fn AttitudeRk4 - * @brief Constructor - * @param [in] angular_velocity_b_rad_s: Initial value of spacecraft angular velocity of the body fixed frame [rad/s] - * @param [in] quaternion_i2b: Initial value of attitude quaternion from the inertial frame to the body fixed frame - * @param [in] inertia_tensor_kgm2: Initial value of inertia tensor of the spacecraft [kg m^2] - * @param [in] inertia_tensor_flexible_kgm2: Initial value of inertia tensor of the flexible structure [kg m^2] - * @param [in] damping_ratio_flexible_structure: Initial value of damping ratio of the flexible structure [] - * @param [in] intrinsic_angular_velocity_flexible_structure_rad_s: Initial value of intrinsic angular velocity [rad/s] - * @param [in] torque_b_Nm: Initial torque acting on the spacecraft in the body fixed frame [Nm] - * @param [in] propagation_step_s: Initial value of propagation step width [sec] - * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation - */ - AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, - const double damping_ratio_flexible_structure, const double intrinsic_angular_velocity_flexible_structure_rad_s, - const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 * @brief Destructor @@ -57,18 +40,6 @@ class AttitudeRk4 : public Attitude { */ virtual void Propagate(const double end_time_s); - // Override ILoggable - /** - * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable - */ - virtual std::string GetLogHeader() const; - /** - * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable - */ - virtual std::string GetLogValue() const; - /** * @fn SetParameters * @brief Set parameters for Monte-Carlo simulation @@ -77,18 +48,10 @@ class AttitudeRk4 : public Attitude { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); private: - double current_propagation_time_s_; //!< current time [sec] - libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor - libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] - libra::Matrix<3, 3> inertia_tensor_flexible_kgm2_; //!< Inertia tensor of the flexible structure [kgm2] - libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_flexible_; //!< Inverse of inertia tensor of the flexible structure - libra::Matrix<3, 3> inverse_inertia_tensor_total_; //!< Inverse of inertia tensor of the spacecraft - libra::Matrix<3, 3> attenuateion_coefficient_; //!< Attenuation coefficient - libra::Matrix<3, 3> spring_constant_; //!< Spring constant - - libra::Vector<3> angular_velocity_flexible_rad_s_; //!< Angular velocity of the flexible structure with respect to the inertial frame [rad/s] - libra::Vector<3> eular_angular_flexible_rad_; //!< Eular angle of the flexible structure with respect to the inertial frame [rad/s] + double current_propagation_time_s_; //!< current time [sec] + libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor + libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] + libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] /** * @fn CalcAngularVelocityMatrix @@ -102,7 +65,7 @@ class AttitudeRk4 : public Attitude { * @param [in] x: State vector (angular velocity and quaternion) * @param [in] t: Unused TODO: remove? */ - libra::Vector<10> AttitudeDynamicsAndKinematics(libra::Vector<10> x, double t); + libra::Vector<7> AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t); /** * @fn RungeKuttaOneStep * @brief Equation for one step of Runge-Kutta method diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp new file mode 100644 index 000000000..cbe68cff4 --- /dev/null +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -0,0 +1,205 @@ +/** + * @file attitude_with_cantilever_vibration.cpp + * @brief Class to calculate spacecraft attitude with Runge-Kutta method + */ +#include "attitude_with_cantilever_vibration.hpp" + +#include +#include +#include +#include + +AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( + const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, + const libra::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, + const double intrinsic_angular_velocity_cantilever_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const std::string& simulation_object_name) + : Attitude(inertia_tensor_kgm2, simulation_object_name) { + angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; + quaternion_i2b_ = quaternion_i2b; + torque_b_Nm_ = torque_b_Nm; + propagation_step_s_ = propagation_step_s; + current_propagation_time_s_ = 0.0; + angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); + previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; + inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; + attenuateion_coefficient_ = 2 * damping_ratio_cantilever * intrinsic_angular_velocity_cantilever_rad_s; + spring_coefficient_ = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); + inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); + inverse_equivalent_inertia_tensor_cantilever_ = CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2_) * inertia_tensor_kgm2_; + CalcAngularMomentum(); +} + +AttitudeWithCantileverVibration::~AttitudeWithCantileverVibration() {} + +std::string AttitudeWithCantileverVibration::GetLogHeader() const { + std::string str_tmp = Attitude::GetLogHeader(); + + str_tmp += WriteVector("eular_angular_cantilever", "c", "rad", 3); + str_tmp += WriteVector("angular_velocity_cantilever", "c", "rad/s", 3); + + return str_tmp; +} + +std::string AttitudeWithCantileverVibration::GetLogValue() const { + std::string str_tmp = Attitude::GetLogValue(); + + str_tmp += WriteVector(eular_angular_cantilever_rad_); + str_tmp += WriteVector(angular_velocity_cantilever_rad_s_); + + return str_tmp; +} + +void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { + Attitude::SetParameters(mc_simulator); + GetInitializedMonteCarloParameterVector(mc_simulator, "angular_velocity_b_rad_s", angular_velocity_b_rad_s_); + + // TODO: Consider the following calculation is needed here? + current_propagation_time_s_ = 0.0; + angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); //!< Consider how to handle this variable + CalcAngularMomentum(); +} + +void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { + if (!is_calc_enabled_) return; + + libra::Matrix<3, 3> dot_inertia_tensor = + (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); + torque_inertia_tensor_change_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; + inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); + + while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { + RungeKuttaOneStep(current_propagation_time_s_, propagation_step_s_); + current_propagation_time_s_ += propagation_step_s_; + } + RungeKuttaOneStep(current_propagation_time_s_, end_time_s - current_propagation_time_s_); + + // Update information + current_propagation_time_s_ = end_time_s; + previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; + CalcAngularMomentum(); +} + +libra::Matrix<4, 4> AttitudeWithCantileverVibration::CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { + libra::Matrix<4, 4> angular_velocity_matrix; + + angular_velocity_matrix[0][0] = 0.0f; + angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; + angular_velocity_matrix[0][2] = -angular_velocity_b_rad_s[1]; + angular_velocity_matrix[0][3] = angular_velocity_b_rad_s[0]; + angular_velocity_matrix[1][0] = -angular_velocity_b_rad_s[2]; + angular_velocity_matrix[1][1] = 0.0f; + angular_velocity_matrix[1][2] = angular_velocity_b_rad_s[0]; + angular_velocity_matrix[1][3] = angular_velocity_b_rad_s[1]; + angular_velocity_matrix[2][0] = angular_velocity_b_rad_s[1]; + angular_velocity_matrix[2][1] = -angular_velocity_b_rad_s[0]; + angular_velocity_matrix[2][2] = 0.0f; + angular_velocity_matrix[2][3] = angular_velocity_b_rad_s[2]; + angular_velocity_matrix[3][0] = -angular_velocity_b_rad_s[0]; + angular_velocity_matrix[3][1] = -angular_velocity_b_rad_s[1]; + angular_velocity_matrix[3][2] = -angular_velocity_b_rad_s[2]; + angular_velocity_matrix[3][3] = 0.0f; + + return angular_velocity_matrix; +} + +libra::Vector<13> AttitudeWithCantileverVibration::AttitudeDynamicsAndKinematics(libra::Vector<13> x, double t) { + UNUSED(t); + + libra::Vector<13> dxdt; + + libra::Vector<3> omega_b; + for (int i = 0; i < 3; i++) { + omega_b[i] = x[i]; + } + libra::Vector<3> omega_cantilever; + for (int i = 0; i < 3; i++) { + omega_cantilever[i] = x[i + 3]; + } + + libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; + libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; + + libra::Vector<3> angular_accelaration_cantilever_rad_s2 = + -(inverse_equivalent_inertia_tensor_cantilever_ * + (attenuateion_coefficient_ * omega_cantilever + spring_coefficient_ * eular_angular_cantilever_rad_)) - + inverse_inertia_tensor_ * net_torque_b_Nm; + + libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); + + for (int i = 0; i < 3; ++i) { + dxdt[i] = rhs[i]; + } + + for (int i = 0; i < 3; i++) { + dxdt[i + 3] = angular_accelaration_cantilever_rad_s2[i]; + } + + libra::Vector<4> quaternion_i2b; + for (int i = 0; i < 4; i++) { + quaternion_i2b[i] = x[i + 6]; + } + + libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; + + for (int i = 0; i < 4; i++) { + dxdt[i + 6] = d_quaternion[i]; + } + + libra::Vector<3> euler_angle_cantilever_rad; + for (int i = 0; i < 3; i++) { + euler_angle_cantilever_rad[i] = x[i + 3]; + } + + for (int i = 0; i < 3; i++) { + dxdt[i + 10] = euler_angle_cantilever_rad[i]; + } + + return dxdt; +} + +void AttitudeWithCantileverVibration::RungeKuttaOneStep(double t, double dt) { + libra::Vector<13> x; + for (int i = 0; i < 3; i++) { + x[i] = angular_velocity_b_rad_s_[i]; + } + for (int i = 0; i < 3; i++) { + x[i + 3] = angular_velocity_cantilever_rad_s_[i]; + } + for (int i = 0; i < 4; i++) { + x[i + 6] = quaternion_i2b_[i]; + } + for (int i = 0; i < 3; i++) { + x[i + 10] = eular_angular_cantilever_rad_[i]; + } + + libra::Vector<13> k1, k2, k3, k4; + libra::Vector<13> xk2, xk3, xk4; + + k1 = AttitudeDynamicsAndKinematics(x, t); + xk2 = x + (dt / 2.0) * k1; + + k2 = AttitudeDynamicsAndKinematics(xk2, (t + dt / 2.0)); + xk3 = x + (dt / 2.0) * k2; + + k3 = AttitudeDynamicsAndKinematics(xk3, (t + dt / 2.0)); + xk4 = x + dt * k3; + + k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); + + libra::Vector<13> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); + + for (int i = 0; i < 3; i++) { + angular_velocity_b_rad_s_[i] = next_x[i]; + } + for (int i = 0; i < 3; i++) { + angular_velocity_cantilever_rad_s_[i] = next_x[i + 3]; + } + for (int i = 0; i < 4; i++) { + quaternion_i2b_[i] = next_x[i + 6]; + } + quaternion_i2b_.Normalize(); + for (int i = 0; i < 3; i++) { + eular_angular_cantilever_rad_[i] = next_x[i + 10]; + } +} diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp new file mode 100644 index 000000000..bded5f89e --- /dev/null +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -0,0 +1,101 @@ +/** + * @file attitude_with_cantilever_vibration.hpp + * @brief Class to calculate spacecraft attitude with Runge-Kutta method + */ + +#ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ +#define S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ + +#include "attitude.hpp" + +/** + * @class AttitudeWithCantileverVibration + * @brief Class to calculate spacecraft attitude with Runge-Kutta method + */ +class AttitudeWithCantileverVibration : public Attitude { + public: + /** + * @fn AttitudeWithCantileverVibration + * @brief Constructor + * @param [in] angular_velocity_b_rad_s: Initial value of spacecraft angular velocity of the body fixed frame [rad/s] + * @param [in] quaternion_i2b: Initial value of attitude quaternion from the inertial frame to the body fixed frame + * @param [in] inertia_tensor_kgm2: Initial value of inertia tensor of the spacecraft [kg m^2] + * @param [in] inertia_tensor_cantilever_kgm2: Initial value of inertia tensor of the cantilever [kg m^2] + * @param [in] damping_ratio_cantilever: Initial value of damping ratio of the cantilever [] + * @param [in] intrinsic_angular_velocity_cantilever_rad_s: Initial value of intrinsic angular velocity [rad/s] + * @param [in] torque_b_Nm: Initial torque acting on the spacecraft in the body fixed frame [Nm] + * @param [in] propagation_step_s: Initial value of propagation step width [sec] + * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation + */ + AttitudeWithCantileverVibration(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, + const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, + const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const std::string& simulation_object_name = "attitude"); + /** + * @fn ~AttitudeWithCantileverVibration + * @brief Destructor + */ + ~AttitudeWithCantileverVibration(); + + /** + * @fn Propagate + * @brief Attitude propagation + * @param [in] end_time_s: Propagation endtime [sec] + */ + virtual void Propagate(const double end_time_s); + + // Override ILoggable + /** + * @fn GetLogHeader + * @brief Override GetLogHeader function of ILoggable + */ + virtual std::string GetLogHeader() const; + /** + * @fn GetLogValue + * @brief Override GetLogValue function of ILoggable + */ + virtual std::string GetLogValue() const; + + /** + * @fn SetParameters + * @brief Set parameters for Monte-Carlo simulation + * @param [in] mc_simulator: Monte-Carlo simulation executor + */ + virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); + + private: + double current_propagation_time_s_; //!< current time [sec] + libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor + libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] + libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2_; //!< Inertia tensor of the cantilever [kgm2] + libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_; //!< Inverse of inertia tensor of the cantilever + double attenuateion_coefficient_; //!< Attenuation coefficient + double spring_coefficient_; //!< Spring coefficient + libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] + libra::Vector<3> eular_angular_cantilever_rad_; //!< Eular angle of the cantilever with respect to the body frame [rad/s] + + /** + * @fn CalcAngularVelocityMatrix + * @brief Generate angular velocity matrix for kinematics calculation + * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] + */ + libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); + /** + * @fn AttitudeDynamicsAndKinematics + * @brief Dynamics equation with kinematics + * @param [in] x: State vector (angular velocity and quaternion) + * @param [in] t: Unused TODO: remove? + */ + libra::Vector<13> AttitudeDynamicsAndKinematics(libra::Vector<13> x, double t); + /** + * @fn RungeKuttaOneStep + * @brief Equation for one step of Runge-Kutta method + * @param [in] t: Unused TODO: remove? + * @param [in] dt: Step width [sec] + */ + void RungeKuttaOneStep(double t, double dt); +}; + +#endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 3a9d87068..0f3962b79 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -7,9 +7,7 @@ #include Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, - const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double damping_ratio_flexible_structure, - const double intrinsic_angular_velocity_flexible_structure_rad_s, const int spacecraft_id) { + const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); @@ -18,18 +16,10 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel const std::string propagate_mode = ini_file.ReadString(section_, "propagate_mode"); const std::string initialize_mode = ini_file.ReadString(section_, "initialize_mode"); - if (propagate_mode == "RK4" && initialize_mode == "MANUAL") { - // RK4 propagator - libra::Vector<3> omega_b; - ini_file.ReadVector(section_, "initial_angular_velocity_b_rad_s", omega_b); - libra::Quaternion quaternion_i2b; - ini_file.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - libra::Vector<3> torque_b; - ini_file.ReadVector(section_, "initial_torque_b_Nm", torque_b); - - attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, inertia_tensor_flexible_kgm2, damping_ratio_flexible_structure, - intrinsic_angular_velocity_flexible_structure_rad_s, torque_b, step_width_s, mc_name); - } else if (propagate_mode == "RK4" && initialize_mode == "CONTROLLED") { + libra::Vector<3> omega_b; + libra::Quaternion quaternion_i2b; + libra::Vector<3> torque_b; + if (initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) IniAccess ini_file_ca(file_name); const char* section_ca_ = "CONTROLLED_ATTITUDE"; @@ -38,7 +28,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode main_mode = ConvertStringToCtrlMode(main_mode_in); AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); - libra::Quaternion quaternion_i2b; + ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); libra::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); @@ -48,10 +38,36 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel inertia_tensor_kgm2, local_celestial_information, orbit, mc_name_temp); attitude_temp->Propagate(step_width_s); quaternion_i2b = attitude_temp->GetQuaternion_i2b(); - libra::Vector<3> omega_b = libra::Vector<3>(0.0); - libra::Vector<3> torque_b = libra::Vector<3>(0.0); + omega_b = libra::Vector<3>(0.0); + torque_b = libra::Vector<3>(0.0); + } else { + // Including the case: initialize_mode == "MANUAL" + ini_file.ReadVector(section_, "initial_angular_velocity_b_rad_s", omega_b); + ini_file.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); + ini_file.ReadVector(section_, "initial_torque_b_Nm", torque_b); + } + if (propagate_mode == "RK4") { attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, torque_b, step_width_s, mc_name); + } else if (propagate_mode == "CANTILEVER_VIBRATION") { + std::string ini_structure_name = ini_file.ReadString("SETTING_FILES", "structure_file"); + IniAccess ini_structure(ini_structure_name); + + const char* section_cantilever = "CANTILEVER_PARAMETERS"; + libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2; + libra::Vector<9> inertia_vec; + ini_structure.ReadVector(section_cantilever, "inertia_tensor_cantilever_kgm2", inertia_vec); + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + inertia_tensor_cantilever_kgm2[i][j] = inertia_vec[i * 3 + j]; + } + } + double damping_ratio_cantilever = ini_structure.ReadDouble(section_cantilever, "damping_ratio_cantilever"); + double intrinsic_angular_velocity_cantilever_rad_s = ini_structure.ReadDouble(section_cantilever, "intrinsic_angular_velocity_cantilever_rad_s"); + + attitude = + new AttitudeWithCantileverVibration(omega_b, quaternion_i2b, inertia_tensor_kgm2, inertia_tensor_cantilever_kgm2, damping_ratio_cantilever, + intrinsic_angular_velocity_cantilever_rad_s, torque_b, step_width_s, mc_name); } else if (propagate_mode == "CONTROLLED") { // Controlled attitude IniAccess ini_file_ca(file_name); @@ -73,13 +89,6 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel std::cerr << "ERROR: attitude propagation mode: " << propagate_mode << " is not defined!" << std::endl; std::cerr << "The attitude mode is automatically set as RK4" << std::endl; - libra::Vector<3> omega_b; - ini_file.ReadVector(section_, "initial_angular_velocity_b_rad_s", omega_b); - libra::Quaternion quaternion_i2b; - ini_file.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - libra::Vector<3> torque_b; - ini_file.ReadVector(section_, "initial_torque_b_Nm", torque_b); - attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, torque_b, step_width_s, mc_name); } diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index fa73d753c..8d6ec1e5c 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -8,6 +8,7 @@ #include "attitude.hpp" #include "attitude_rk4.hpp" +#include "attitude_with_cantilever_vibration.hpp" #include "controlled_attitude.hpp" /** @@ -21,8 +22,6 @@ * @param [in] spacecraft_id: Satellite ID */ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, - const libra::Matrix<3, 3>& inertia_tensor_flexible_kgm2, const double damping_ratio_flexible_structure, - const double intrinsic_angular_velocity_flexible_structure_rad_s, const int spacecraft_id); + const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 6180757ea..04d0886a7 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -28,10 +28,7 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio simulation_time->GetOrbitRkStepTime_s(), simulation_time->GetCurrentTime_jd(), local_celestial_information.GetGlobalInformation().GetCenterBodyGravityConstant_m3_s2(), "ORBIT", relative_information); attitude_ = InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, - simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), - structure->GetKinematicsParameters().GetInertiaTensorFlexible_b_kgm2(), - structure->GetKinematicsParameters().GetDampingRatioFlexibleStructure(), - structure->GetKinematicsParameters().GetIntrinsicAngularVelocityFlexibleStructure_rad_s(), spacecraft_id); + simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), spacecraft_id); temperature_ = InitTemperature(simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetThermalRkStepTime_s(), &(local_environment_->GetSolarRadiationPressure())); diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 3615f12a2..e1def4ea9 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -25,20 +25,7 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { } } - const char* section_flexible_structure = "KINEMATIC_PARAMETERS_FOR_FLEXIBLE_STRUCTURE"; - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2; - conf.ReadVector(section_flexible_structure, "inertia_tensor_flexible_structure_kgm2", inertia_vec); - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - inertia_tensor_flexible_b_kgm2[i][j] = inertia_vec[i * 3 + j]; - } - } - double damping_ratio_flexible_structure = conf.ReadDouble(section_flexible_structure, "damping_ratio_flexible_structure"); - double intrinsic_angular_velocity_flexible_structure_rad_s = - conf.ReadDouble(section_flexible_structure, "intrinsic_angular_velocity_flexible_structure_rad_s"); - - KinematicsParameters kinematics_params(center_of_gravity_b_m, mass_kg, inertia_tensor_b_kgm2, inertia_tensor_flexible_b_kgm2, - damping_ratio_flexible_structure, intrinsic_angular_velocity_flexible_structure_rad_s); + KinematicsParameters kinematics_params(center_of_gravity_b_m, mass_kg, inertia_tensor_b_kgm2); return kinematics_params; } diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 33f3d3513..752ed08f1 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -7,13 +7,3 @@ KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} - -KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2, - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double damping_ratio_flexible_structure, - double intrinsic_angular_velocity_flexible_structure_rad_s) - : center_of_gravity_b_m_(center_of_gravity_b_m), - mass_kg_(mass_kg), - inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2), - inertia_tensor_flexible_b_kgm2_(inertia_tensor_flexible_b_kgm2), - damping_ratio_flexible_structure_(damping_ratio_flexible_structure), - intrinsic_angular_velocity_flexible_structure_rad_s_(intrinsic_angular_velocity_flexible_structure_rad_s) {} \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 7acfc6749..be864b402 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -20,13 +20,6 @@ class KinematicsParameters { * @brief Constructor */ KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2); - /** - * @fn KinematicsParameters - * @brief Constructor - */ - KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2, - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2, double damping_ratio_flexible_structure, - double intrinsic_angular_velocity_flexible_structure_rad_s); /** * @fn ~KinematicsParameters * @brief Destructor @@ -49,21 +42,6 @@ class KinematicsParameters { * @brief Return Inertia tensor at body frame [kgm2] */ inline const libra::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } - /** - * @fn GetInertiaTensorFlexible_b_kgm2 - * @brief Return Inertia tensor of the flexible structure at body frame [kgm2] - */ - inline const libra::Matrix<3, 3>& GetInertiaTensorFlexible_b_kgm2() const { return inertia_tensor_flexible_b_kgm2_; } - /** - * @fn GetDampingRatioFlexibleStructure - * @brief Return Damping ratio of the flexible structure [] - */ - inline const double& GetDampingRatioFlexibleStructure() const { return damping_ratio_flexible_structure_; } - /** - * @fn GetIntrinsicAngularVelocityFlexibleStructure_rad_s - * @brief Return Intrinsic angular velocity [rad/s] - */ - inline const double& GetIntrinsicAngularVelocityFlexibleStructure_rad_s() const { return intrinsic_angular_velocity_flexible_structure_rad_s_; } // Setter /** @@ -103,12 +81,9 @@ class KinematicsParameters { } private: - libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] - double mass_kg_; //!< Mass of the satellite [kg] - libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] - libra::Matrix<3, 3> inertia_tensor_flexible_b_kgm2_{0}; //!< Inertia tensor of the flexible structure at body frame [kgm2] - double damping_ratio_flexible_structure_ = 0; //!< Damping ratio of the flexible structure [] - double intrinsic_angular_velocity_flexible_structure_rad_s_ = 0; //!< Intrinsic angular velocity [rad/s] + libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] + double mass_kg_; //!< Mass of the satellite [kg] + libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ From 0965cf75ecdf7980f757429e68775a978c3afda0 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Sun, 28 Apr 2024 16:05:24 +0900 Subject: [PATCH 201/456] fix small --- .../attitude/attitude_with_cantilever_vibration.cpp | 10 +++++----- .../attitude/attitude_with_cantilever_vibration.hpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index cbe68cff4..85fae7a19 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -35,7 +35,7 @@ AttitudeWithCantileverVibration::~AttitudeWithCantileverVibration() {} std::string AttitudeWithCantileverVibration::GetLogHeader() const { std::string str_tmp = Attitude::GetLogHeader(); - str_tmp += WriteVector("eular_angular_cantilever", "c", "rad", 3); + str_tmp += WriteVector("euler_angular_cantilever", "c", "rad", 3); str_tmp += WriteVector("angular_velocity_cantilever", "c", "rad/s", 3); return str_tmp; @@ -44,7 +44,7 @@ std::string AttitudeWithCantileverVibration::GetLogHeader() const { std::string AttitudeWithCantileverVibration::GetLogValue() const { std::string str_tmp = Attitude::GetLogValue(); - str_tmp += WriteVector(eular_angular_cantilever_rad_); + str_tmp += WriteVector(euler_angular_cantilever_rad_); str_tmp += WriteVector(angular_velocity_cantilever_rad_s_); return str_tmp; @@ -122,7 +122,7 @@ libra::Vector<13> AttitudeWithCantileverVibration::AttitudeDynamicsAndKinematics libra::Vector<3> angular_accelaration_cantilever_rad_s2 = -(inverse_equivalent_inertia_tensor_cantilever_ * - (attenuateion_coefficient_ * omega_cantilever + spring_coefficient_ * eular_angular_cantilever_rad_)) - + (attenuateion_coefficient_ * omega_cantilever + spring_coefficient_ * euler_angular_cantilever_rad_)) - inverse_inertia_tensor_ * net_torque_b_Nm; libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); @@ -170,7 +170,7 @@ void AttitudeWithCantileverVibration::RungeKuttaOneStep(double t, double dt) { x[i + 6] = quaternion_i2b_[i]; } for (int i = 0; i < 3; i++) { - x[i + 10] = eular_angular_cantilever_rad_[i]; + x[i + 10] = euler_angular_cantilever_rad_[i]; } libra::Vector<13> k1, k2, k3, k4; @@ -200,6 +200,6 @@ void AttitudeWithCantileverVibration::RungeKuttaOneStep(double t, double dt) { } quaternion_i2b_.Normalize(); for (int i = 0; i < 3; i++) { - eular_angular_cantilever_rad_[i] = next_x[i + 10]; + euler_angular_cantilever_rad_[i] = next_x[i + 10]; } } diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index bded5f89e..577805206 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -74,7 +74,7 @@ class AttitudeWithCantileverVibration : public Attitude { double attenuateion_coefficient_; //!< Attenuation coefficient double spring_coefficient_; //!< Spring coefficient libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] - libra::Vector<3> eular_angular_cantilever_rad_; //!< Eular angle of the cantilever with respect to the body frame [rad/s] + libra::Vector<3> euler_angular_cantilever_rad_; //!< Euler angle of the cantilever with respect to the body frame [rad/s] /** * @fn CalcAngularVelocityMatrix From c2cfbce784e0b5884ea82995b333315b687312fc Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Mon, 29 Apr 2024 16:35:40 +0900 Subject: [PATCH 202/456] rename variables and fix algorithm --- .../attitude_with_cantilever_vibration.cpp | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 85fae7a19..b9d71ce70 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -108,21 +108,27 @@ libra::Vector<13> AttitudeWithCantileverVibration::AttitudeDynamicsAndKinematics libra::Vector<13> dxdt; - libra::Vector<3> omega_b; + libra::Vector<3> omega_b_rad_s; for (int i = 0; i < 3; i++) { - omega_b[i] = x[i]; + omega_b_rad_s[i] = x[i]; } - libra::Vector<3> omega_cantilever; + libra::Vector<3> omega_cantilever_rad_s; for (int i = 0; i < 3; i++) { - omega_cantilever[i] = x[i + 3]; + omega_cantilever_rad_s[i] = x[i + 3]; } - libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; - libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; + libra::Vector<3> euler_angle_cantilever_rad; + for (int i = 0; i < 3; i++) { + euler_angle_cantilever_rad[i] = x[i + 10]; + } + + libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; + libra::Vector<3> net_torque_b_Nm = + torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; libra::Vector<3> angular_accelaration_cantilever_rad_s2 = -(inverse_equivalent_inertia_tensor_cantilever_ * - (attenuateion_coefficient_ * omega_cantilever + spring_coefficient_ * euler_angular_cantilever_rad_)) - + (attenuateion_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) - inverse_inertia_tensor_ * net_torque_b_Nm; libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); @@ -140,19 +146,14 @@ libra::Vector<13> AttitudeWithCantileverVibration::AttitudeDynamicsAndKinematics quaternion_i2b[i] = x[i + 6]; } - libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; + libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * quaternion_i2b; for (int i = 0; i < 4; i++) { dxdt[i + 6] = d_quaternion[i]; } - libra::Vector<3> euler_angle_cantilever_rad; - for (int i = 0; i < 3; i++) { - euler_angle_cantilever_rad[i] = x[i + 3]; - } - for (int i = 0; i < 3; i++) { - dxdt[i + 10] = euler_angle_cantilever_rad[i]; + dxdt[i + 10] = omega_cantilever_rad_s[i]; } return dxdt; From 1f64ba6c1a916c62b60cd4a8db3bc39584d8bd7c Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Tue, 30 Apr 2024 21:28:09 +0900 Subject: [PATCH 203/456] fix small --- src/dynamics/attitude/attitude_with_cantilever_vibration.cpp | 2 -- src/simulation/spacecraft/structure/kinematics_parameters.cpp | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index b9d71ce70..66b8d6d33 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -4,9 +4,7 @@ */ #include "attitude_with_cantilever_vibration.hpp" -#include #include -#include #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 752ed08f1..bd2cc3346 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -6,4 +6,4 @@ #include "kinematics_parameters.hpp" KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2) - : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} + : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} \ No newline at end of file From c2f09e9ec3753664775050ed19afd26235b548a3 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 22 May 2024 10:21:35 +0900 Subject: [PATCH 204/456] move function CalcAngularVelocityMatrix --- src/dynamics/attitude/attitude.cpp | 23 +++++++++++++++++++ src/dynamics/attitude/attitude.hpp | 17 ++++++++++---- src/dynamics/attitude/attitude_rk4.cpp | 23 ------------------- src/dynamics/attitude/attitude_rk4.hpp | 6 ----- .../attitude_with_cantilever_vibration.cpp | 23 ------------------- .../attitude_with_cantilever_vibration.hpp | 6 ----- 6 files changed, 35 insertions(+), 63 deletions(-) diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index fa73b6c98..943111e10 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -56,3 +56,26 @@ void Attitude::CalcAngularMomentum(void) { kinetic_energy_J_ = 0.5 * libra::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } + +libra::Matrix<4, 4> Attitude::CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { + libra::Matrix<4, 4> angular_velocity_matrix; + + angular_velocity_matrix[0][0] = 0.0f; + angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; + angular_velocity_matrix[0][2] = -angular_velocity_b_rad_s[1]; + angular_velocity_matrix[0][3] = angular_velocity_b_rad_s[0]; + angular_velocity_matrix[1][0] = -angular_velocity_b_rad_s[2]; + angular_velocity_matrix[1][1] = 0.0f; + angular_velocity_matrix[1][2] = angular_velocity_b_rad_s[0]; + angular_velocity_matrix[1][3] = angular_velocity_b_rad_s[1]; + angular_velocity_matrix[2][0] = angular_velocity_b_rad_s[1]; + angular_velocity_matrix[2][1] = -angular_velocity_b_rad_s[0]; + angular_velocity_matrix[2][2] = 0.0f; + angular_velocity_matrix[2][3] = angular_velocity_b_rad_s[2]; + angular_velocity_matrix[3][0] = -angular_velocity_b_rad_s[0]; + angular_velocity_matrix[3][1] = -angular_velocity_b_rad_s[1]; + angular_velocity_matrix[3][2] = -angular_velocity_b_rad_s[2]; + angular_velocity_matrix[3][3] = 0.0f; + + return angular_velocity_matrix; +} diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 54f63def9..28ae9fb82 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -114,11 +114,11 @@ class Attitude : public ILoggable, public SimulationObject { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); protected: - bool is_calc_enabled_ = true; //!< Calculation flag - double propagation_step_s_; //!< Propagation step [sec] - libra::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] - libra::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame - libra::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] + bool is_calc_enabled_ = true; //!< Calculation flag + double propagation_step_s_; //!< Propagation step [sec] + libra::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] + libra::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame + libra::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] const libra::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] @@ -134,6 +134,13 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Calculate angular momentum */ void CalcAngularMomentum(void); + + /** + * @fn CalcAngularVelocityMatrix + * @brief Generate angular velocity matrix for kinematics calculation + * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] + */ + libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); }; #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 669b3b61c..1c2b9c838 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -56,29 +56,6 @@ void AttitudeRk4::Propagate(const double end_time_s) { CalcAngularMomentum(); } -libra::Matrix<4, 4> AttitudeRk4::CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { - libra::Matrix<4, 4> angular_velocity_matrix; - - angular_velocity_matrix[0][0] = 0.0f; - angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; - angular_velocity_matrix[0][2] = -angular_velocity_b_rad_s[1]; - angular_velocity_matrix[0][3] = angular_velocity_b_rad_s[0]; - angular_velocity_matrix[1][0] = -angular_velocity_b_rad_s[2]; - angular_velocity_matrix[1][1] = 0.0f; - angular_velocity_matrix[1][2] = angular_velocity_b_rad_s[0]; - angular_velocity_matrix[1][3] = angular_velocity_b_rad_s[1]; - angular_velocity_matrix[2][0] = angular_velocity_b_rad_s[1]; - angular_velocity_matrix[2][1] = -angular_velocity_b_rad_s[0]; - angular_velocity_matrix[2][2] = 0.0f; - angular_velocity_matrix[2][3] = angular_velocity_b_rad_s[2]; - angular_velocity_matrix[3][0] = -angular_velocity_b_rad_s[0]; - angular_velocity_matrix[3][1] = -angular_velocity_b_rad_s[1]; - angular_velocity_matrix[3][2] = -angular_velocity_b_rad_s[2]; - angular_velocity_matrix[3][3] = 0.0f; - - return angular_velocity_matrix; -} - libra::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t) { UNUSED(t); diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 58e09a703..2b754cbc7 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -53,12 +53,6 @@ class AttitudeRk4 : public Attitude { libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] - /** - * @fn CalcAngularVelocityMatrix - * @brief Generate angular velocity matrix for kinematics calculation - * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] - */ - libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); /** * @fn AttitudeDynamicsAndKinematics * @brief Dynamics equation with kinematics diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 66b8d6d33..cfd6af30e 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -78,29 +78,6 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { CalcAngularMomentum(); } -libra::Matrix<4, 4> AttitudeWithCantileverVibration::CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { - libra::Matrix<4, 4> angular_velocity_matrix; - - angular_velocity_matrix[0][0] = 0.0f; - angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; - angular_velocity_matrix[0][2] = -angular_velocity_b_rad_s[1]; - angular_velocity_matrix[0][3] = angular_velocity_b_rad_s[0]; - angular_velocity_matrix[1][0] = -angular_velocity_b_rad_s[2]; - angular_velocity_matrix[1][1] = 0.0f; - angular_velocity_matrix[1][2] = angular_velocity_b_rad_s[0]; - angular_velocity_matrix[1][3] = angular_velocity_b_rad_s[1]; - angular_velocity_matrix[2][0] = angular_velocity_b_rad_s[1]; - angular_velocity_matrix[2][1] = -angular_velocity_b_rad_s[0]; - angular_velocity_matrix[2][2] = 0.0f; - angular_velocity_matrix[2][3] = angular_velocity_b_rad_s[2]; - angular_velocity_matrix[3][0] = -angular_velocity_b_rad_s[0]; - angular_velocity_matrix[3][1] = -angular_velocity_b_rad_s[1]; - angular_velocity_matrix[3][2] = -angular_velocity_b_rad_s[2]; - angular_velocity_matrix[3][3] = 0.0f; - - return angular_velocity_matrix; -} - libra::Vector<13> AttitudeWithCantileverVibration::AttitudeDynamicsAndKinematics(libra::Vector<13> x, double t) { UNUSED(t); diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 577805206..fe5e9b8cd 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -76,12 +76,6 @@ class AttitudeWithCantileverVibration : public Attitude { libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] libra::Vector<3> euler_angular_cantilever_rad_; //!< Euler angle of the cantilever with respect to the body frame [rad/s] - /** - * @fn CalcAngularVelocityMatrix - * @brief Generate angular velocity matrix for kinematics calculation - * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] - */ - libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); /** * @fn AttitudeDynamicsAndKinematics * @brief Dynamics equation with kinematics From 00efcf3ded8a2199f34a02e8e5b430a8f2dc829b Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 16:53:41 +0900 Subject: [PATCH 205/456] [update] use the library libra::numerical_integrator --- src/dynamics/attitude/attitude.cpp | 2 +- src/dynamics/attitude/attitude.hpp | 14 +- .../attitude_with_cantilever_vibration.cpp | 123 +++++---------- .../attitude_with_cantilever_vibration.hpp | 44 ++++-- ...ode_attitude_with_cantilever_vibration.hpp | 147 ++++++++++++++++++ 5 files changed, 224 insertions(+), 106 deletions(-) create mode 100644 src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 943111e10..505f081c9 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -57,7 +57,7 @@ void Attitude::CalcAngularMomentum(void) { kinetic_energy_J_ = 0.5 * libra::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } -libra::Matrix<4, 4> Attitude::CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { +libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { libra::Matrix<4, 4> angular_velocity_matrix; angular_velocity_matrix[0][0] = 0.0f; diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 28ae9fb82..b17a92162 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -134,13 +134,13 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Calculate angular momentum */ void CalcAngularMomentum(void); - - /** - * @fn CalcAngularVelocityMatrix - * @brief Generate angular velocity matrix for kinematics calculation - * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] - */ - libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); }; +/** + * @fn CalcAngularVelocityMatrix + * @brief Generate angular velocity matrix for kinematics calculation + * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] + */ +libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); + #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index cfd6af30e..1ec339e0f 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -5,6 +5,7 @@ #include "attitude_with_cantilever_vibration.hpp" #include +#include #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( @@ -12,7 +13,8 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( const libra::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) - : Attitude(inertia_tensor_kgm2, simulation_object_name) { + : Attitude(inertia_tensor_kgm2, simulation_object_name), + numerical_integrator_(propagation_step_s, attitude_ode_, libra::numerical_integration::NumericalIntegrationMethod::kRk4) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; quaternion_i2b_ = quaternion_i2b; torque_b_Nm_ = torque_b_Nm; @@ -21,11 +23,12 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; - attenuateion_coefficient_ = 2 * damping_ratio_cantilever * intrinsic_angular_velocity_cantilever_rad_s; + attenuation_coefficient_ = 2 * damping_ratio_cantilever * intrinsic_angular_velocity_cantilever_rad_s; spring_coefficient_ = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); inverse_equivalent_inertia_tensor_cantilever_ = CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2_) * inertia_tensor_kgm2_; CalcAngularMomentum(); + SetOdeParameters(); } AttitudeWithCantileverVibration::~AttitudeWithCantileverVibration() {} @@ -58,19 +61,36 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx CalcAngularMomentum(); } +void AttitudeWithCantileverVibration::SetOdeParameters() { + attitude_ode_.SetAttenuationCoefficient(attenuation_coefficient_); + attitude_ode_.SetSpringCoefficient(spring_coefficient_); + attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); + attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm_); + attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); + attitude_ode_.SetInverseInertiaTensor(inverse_inertia_tensor_); + attitude_ode_.SetPreviousInertiaTensor_kgm2(previous_inertia_tensor_kgm2_); + attitude_ode_.SetInertiaTensorCantilever_kgm2(inertia_tensor_cantilever_kgm2_); + attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever_); +} + void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; libra::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); - torque_inertia_tensor_change_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; + torque_inertia_tensor_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); + SetOdeParameters(); + libra::Vector<13> state = SetStateFromPhysicalQuantities(); + numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { - RungeKuttaOneStep(current_propagation_time_s_, propagation_step_s_); + numerical_integrator_.GetIntegrator()->Integrate(); current_propagation_time_s_ += propagation_step_s_; } - RungeKuttaOneStep(current_propagation_time_s_, end_time_s - current_propagation_time_s_); + numerical_integrator_.GetIntegrator()->SetState(end_time_s - current_propagation_time_s_, numerical_integrator_.GetIntegrator()->GetState()); + numerical_integrator_.GetIntegrator()->Integrate(); + SetPhysicalQuantitiesFromState(numerical_integrator_.GetIntegrator()->GetState()); // Update information current_propagation_time_s_ = end_time_s; @@ -78,104 +98,35 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { CalcAngularMomentum(); } -libra::Vector<13> AttitudeWithCantileverVibration::AttitudeDynamicsAndKinematics(libra::Vector<13> x, double t) { - UNUSED(t); - - libra::Vector<13> dxdt; - - libra::Vector<3> omega_b_rad_s; - for (int i = 0; i < 3; i++) { - omega_b_rad_s[i] = x[i]; - } - libra::Vector<3> omega_cantilever_rad_s; +libra::Vector<13> AttitudeWithCantileverVibration::SetStateFromPhysicalQuantities() { + libra::Vector<13> state; for (int i = 0; i < 3; i++) { - omega_cantilever_rad_s[i] = x[i + 3]; + state[i] = angular_velocity_b_rad_s_[i]; } - - libra::Vector<3> euler_angle_cantilever_rad; for (int i = 0; i < 3; i++) { - euler_angle_cantilever_rad[i] = x[i + 10]; + state[i + 3] = angular_velocity_cantilever_rad_s_[i]; } - - libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; - libra::Vector<3> net_torque_b_Nm = - torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_; - - libra::Vector<3> angular_accelaration_cantilever_rad_s2 = - -(inverse_equivalent_inertia_tensor_cantilever_ * - (attenuateion_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) - - inverse_inertia_tensor_ * net_torque_b_Nm; - - libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); - - for (int i = 0; i < 3; ++i) { - dxdt[i] = rhs[i]; - } - - for (int i = 0; i < 3; i++) { - dxdt[i + 3] = angular_accelaration_cantilever_rad_s2[i]; - } - - libra::Vector<4> quaternion_i2b; for (int i = 0; i < 4; i++) { - quaternion_i2b[i] = x[i + 6]; + state[i + 6] = quaternion_i2b_[i]; } - - libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * quaternion_i2b; - - for (int i = 0; i < 4; i++) { - dxdt[i + 6] = d_quaternion[i]; - } - for (int i = 0; i < 3; i++) { - dxdt[i + 10] = omega_cantilever_rad_s[i]; + state[i + 10] = euler_angular_cantilever_rad_[i]; } - - return dxdt; + return state; } -void AttitudeWithCantileverVibration::RungeKuttaOneStep(double t, double dt) { - libra::Vector<13> x; - for (int i = 0; i < 3; i++) { - x[i] = angular_velocity_b_rad_s_[i]; - } - for (int i = 0; i < 3; i++) { - x[i + 3] = angular_velocity_cantilever_rad_s_[i]; - } - for (int i = 0; i < 4; i++) { - x[i + 6] = quaternion_i2b_[i]; - } - for (int i = 0; i < 3; i++) { - x[i + 10] = euler_angular_cantilever_rad_[i]; - } - - libra::Vector<13> k1, k2, k3, k4; - libra::Vector<13> xk2, xk3, xk4; - - k1 = AttitudeDynamicsAndKinematics(x, t); - xk2 = x + (dt / 2.0) * k1; - - k2 = AttitudeDynamicsAndKinematics(xk2, (t + dt / 2.0)); - xk3 = x + (dt / 2.0) * k2; - - k3 = AttitudeDynamicsAndKinematics(xk3, (t + dt / 2.0)); - xk4 = x + dt * k3; - - k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); - - libra::Vector<13> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); - +void AttitudeWithCantileverVibration::SetPhysicalQuantitiesFromState(libra::Vector<13> state) { for (int i = 0; i < 3; i++) { - angular_velocity_b_rad_s_[i] = next_x[i]; + angular_velocity_b_rad_s_[i] = state[i]; } for (int i = 0; i < 3; i++) { - angular_velocity_cantilever_rad_s_[i] = next_x[i + 3]; + angular_velocity_cantilever_rad_s_[i] = state[i + 3]; } for (int i = 0; i < 4; i++) { - quaternion_i2b_[i] = next_x[i + 6]; + quaternion_i2b_[i] = state[i + 6]; } quaternion_i2b_.Normalize(); for (int i = 0; i < 3; i++) { - euler_angular_cantilever_rad_[i] = next_x[i + 10]; + euler_angular_cantilever_rad_[i] = state[i + 10]; } } diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index fe5e9b8cd..8b01c0fb4 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -6,7 +6,11 @@ #ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ #define S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ +#include +#include + #include "attitude.hpp" +#include "ode_attitude_with_cantilever_vibration.hpp" /** * @class AttitudeWithCantileverVibration @@ -56,6 +60,16 @@ class AttitudeWithCantileverVibration : public Attitude { * @brief Override GetLogValue function of ILoggable */ virtual std::string GetLogValue() const; + /** + * @fn GetPreviousInertiaTensor_b_kgm2 + * @brief Return previous inertia tensor [kg m^2] + */ + inline libra::Matrix<3, 3> GetPreviousInertiaTensor_b_kgm2() const { return previous_inertia_tensor_kgm2_; } + /** + * @fn GetTorqueInertiaTensor_b_Nm + * @brief Return torque generated by inertia tensor [Nm] + */ + inline libra::Vector<3> GetTorqueInertiaTensor_b_Nm() const { return torque_inertia_tensor_b_Nm_; } /** * @fn SetParameters @@ -64,32 +78,38 @@ class AttitudeWithCantileverVibration : public Attitude { */ virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); + /** + * @fn SetOdeParameters + * @brief Set parameters for ordinary differential equations + */ + void SetOdeParameters(); + private: double current_propagation_time_s_; //!< current time [sec] libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + libra::Vector<3> torque_inertia_tensor_b_Nm_; //!< Torque generated by inertia tensor [Nm] libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2_; //!< Inertia tensor of the cantilever [kgm2] libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_; //!< Inverse of inertia tensor of the cantilever - double attenuateion_coefficient_; //!< Attenuation coefficient + double attenuation_coefficient_; //!< Attenuation coefficient double spring_coefficient_; //!< Spring coefficient libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] libra::Vector<3> euler_angular_cantilever_rad_; //!< Euler angle of the cantilever with respect to the body frame [rad/s] + libra::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; + libra::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; + /** - * @fn AttitudeDynamicsAndKinematics - * @brief Dynamics equation with kinematics - * @param [in] x: State vector (angular velocity and quaternion) - * @param [in] t: Unused TODO: remove? + * @fn SetStateFromPhysicalQuantities + * @brief Set state for calculating the ordinary differential equation from physical quantities */ - libra::Vector<13> AttitudeDynamicsAndKinematics(libra::Vector<13> x, double t); + libra::Vector<13> SetStateFromPhysicalQuantities(); + /** - * @fn RungeKuttaOneStep - * @brief Equation for one step of Runge-Kutta method - * @param [in] t: Unused TODO: remove? - * @param [in] dt: Step width [sec] + * @fn SetPhysicalQuantitiesFromState + * @brief Set physical quantities from state acquired by calculation of the ordinary differential equation */ - void RungeKuttaOneStep(double t, double dt); + void SetPhysicalQuantitiesFromState(libra::Vector<13> state); }; #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp new file mode 100644 index 000000000..ce428057b --- /dev/null +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -0,0 +1,147 @@ +/** + * @file ode_attitude.hpp + * @brief Class to implement Ordinary Differential Equations for Attitude + */ + +#ifndef S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_HPP_ +#define S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_HPP_ + +#include +#include + +#include "attitude.hpp" + +namespace libra::numerical_integration { +/** + * @class AttitudeWithCantileverVibrationOde + * @brief Class to implement Ordinary Differential Equations for Attitude with Cantilever Vibration + */ +class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { + public: + Vector<13> DerivativeFunction(const double time_s, const Vector<13>& state) const override { + UNUSED(time_s); + + libra::Vector<13> output; + + libra::Vector<3> omega_b_rad_s; + for (int i = 0; i < 3; i++) { + omega_b_rad_s[i] = state[i]; + } + libra::Vector<3> omega_cantilever_rad_s; + for (int i = 0; i < 3; i++) { + omega_cantilever_rad_s[i] = state[i + 3]; + } + + libra::Vector<3> euler_angle_cantilever_rad; + for (int i = 0; i < 3; i++) { + euler_angle_cantilever_rad[i] = state[i + 10]; + } + + libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; + libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; + + libra::Vector<3> angular_accelaration_cantilever_rad_s2 = + -(inverse_equivalent_inertia_tensor_cantilever_ * + (attenuation_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) - + inverse_inertia_tensor_ * net_torque_b_Nm; + + libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); + + for (int i = 0; i < 3; ++i) { + output[i] = rhs[i]; + } + + for (int i = 0; i < 3; i++) { + output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; + } + + libra::Vector<4> quaternion_i2b; + for (int i = 0; i < 4; i++) { + quaternion_i2b[i] = state[i + 6]; + } + + libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * quaternion_i2b; + + for (int i = 0; i < 4; i++) { + output[i + 6] = d_quaternion[i]; + } + + for (int i = 0; i < 3; i++) { + output[i + 10] = omega_cantilever_rad_s[i]; + } + + return output; + } + + // Setter + /** + * @fn SetAttenuationCoefficient + * @brief Set attenuation coefficient + */ + inline void SetAttenuationCoefficient(const double attenuation_coefficient) { attenuation_coefficient_ = attenuation_coefficient; } + /** + * @fn SetSpringCoefficient + * @brief Set spring coefficient + */ + inline void SetSpringCoefficient(const double spring_coefficient) { spring_coefficient_ = spring_coefficient; } + /** + * @fn SetTorque_b_Nm + * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] + */ + inline void SetTorque_b_Nm(const libra::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + /** + * @fn SetTorqueInertiaTensor_b_Nm + * @brief Set torque generated by inertia tensor [Nm] + */ + inline void SetTorqueInertiaTensor_b_Nm(const libra::Vector<3> torque_inertia_tensor_b_Nm) { + torque_inertia_tensor_b_Nm_ = torque_inertia_tensor_b_Nm; + } + /** + * @fn SetAngularMomentumReactionWheel_b_Nms + * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] + */ + inline void SetAngularMomentumReactionWheel_b_Nms(const libra::Vector<3> angular_momentum_reaction_wheel_b_Nms) { + angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_reaction_wheel_b_Nms; + } + /** + * @fn SetInverseInertiaTensor + * @brief Set inverse of inertia tensor + */ + inline void SetInverseInertiaTensor(const libra::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } + /** + * @fn SetPreviousInertiaTensor_kgm2 + * @brief Set previous inertia tensor [kgm2] + */ + inline void SetPreviousInertiaTensor_kgm2(const libra::Matrix<3, 3> previous_inertia_tensor_kgm2) { + previous_inertia_tensor_kgm2_ = previous_inertia_tensor_kgm2; + } + /** + * @fn SetInertiaTensorCantilever_kgm2 + * @brief Set inertia tensor of the cantilever [kgm2] + */ + inline void SetInertiaTensorCantilever_kgm2(const libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { + inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; + } + /** + * @fn SetInverseEquivalentInertiaTensorCantilever + * @brief Set inverse of inertia tensor of the cantilever + */ + inline void SetInverseEquivalentInertiaTensorCantilever(const libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { + inverse_equivalent_inertia_tensor_cantilever_ = inverse_equivalent_inertia_tensor_cantilever; + } + + protected: + double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient + double spring_coefficient_ = 0.0; //!< Spring coefficient + libra::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] + libra::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] + libra::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + libra::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor + libra::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] + libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] + libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever +}; + +} // namespace libra::numerical_integration + +#endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_HPP_ From 1e0939aeccbb1c68bef9cfc7b5f8ace8c2f72afb Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 16:57:18 +0900 Subject: [PATCH 206/456] remove unnecessary includes --- src/dynamics/attitude/attitude_with_cantilever_vibration.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 1ec339e0f..b2792dc80 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -5,7 +5,6 @@ #include "attitude_with_cantilever_vibration.hpp" #include -#include #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( From 190c37b07102dccc214b7487f746d98392ae4c74 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 18:23:56 +0900 Subject: [PATCH 207/456] add python script --- scripts/Plot/plot_euler_angle_observer.py | 75 +++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 scripts/Plot/plot_euler_angle_observer.py diff --git a/scripts/Plot/plot_euler_angle_observer.py b/scripts/Plot/plot_euler_angle_observer.py new file mode 100644 index 000000000..554579786 --- /dev/null +++ b/scripts/Plot/plot_euler_angle_observer.py @@ -0,0 +1,75 @@ +# +# Plot Angular Velocity Observer +# +# arg[1] : read_file_tag : time tag for default CSV output log file. ex. 220627_142946 +# + +# +# Import +# +# plots +import matplotlib.pyplot as plt +# local function +from common import find_latest_log_tag +from common import add_log_file_arguments +from common import read_3d_vector_from_csv +from common import read_scalar_from_csv +# arguments +import argparse + +# Arguments +aparser = argparse.ArgumentParser() +aparser = add_log_file_arguments(aparser) +aparser.add_argument('--no-gui', action='store_true') +args = aparser.parse_args() + +# +# Read Arguments +# +# log file path +path_to_logs = args.logs_dir + +read_file_tag = args.file_tag +if read_file_tag == None: + print("file tag does not found. use latest.") + read_file_tag = find_latest_log_tag(path_to_logs) + +print("log: " + read_file_tag) + +# +# CSV file name +# +read_file_name = path_to_logs + '/' + 'logs_' + read_file_tag + '/' + read_file_tag + '_default.csv' + +# +# Data read and edit +# +# Read S2E CSV +time = read_scalar_from_csv(read_file_name, 'elapsed_time[s]') + +euler_angle_cantilever_rad = read_3d_vector_from_csv(read_file_name, 'euler_angular_cantilever_c', 'rad') + +# +# Plot +# +unit = ' rad' + +fig, axis = plt.subplots(3, 1, squeeze = False, tight_layout = True, sharex = True) +axis[0, 0].plot(time[0][0:1200], euler_angle_cantilever_rad[0][0:1200], c="orange", label="TRUE-X") +axis[0, 0].legend(loc = 'upper right') + +axis[1, 0].plot(time[0][0:1200], euler_angle_cantilever_rad[1][0:1200], c="green", label="TRUE-Y") +axis[1, 0].legend(loc = 'upper right') + +axis[2, 0].plot(time[0][0:1200], euler_angle_cantilever_rad[2][0:1200], c="blue", label="TRUE-Z") +axis[2, 0].legend(loc = 'upper right') + +fig.suptitle("Euler Angle Observer") +fig.supylabel("Euler Angle [" + unit + "]") +fig.supxlabel("Time [s]") + +# Data save +if args.no_gui: + plt.savefig(read_file_tag + "_angular_velocity_observer.png") # save last figure only +else: + plt.show() From b1378eb7c6e7483fec0d297b89554948347be85a Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 18:58:13 +0900 Subject: [PATCH 208/456] fix based on comments --- .../attitude_with_cantilever_vibration.cpp | 18 +++++++++--------- .../attitude_with_cantilever_vibration.hpp | 4 ++-- .../ode_attitude_with_cantilever_vibration.hpp | 12 +++++++----- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index b2792dc80..2c18f4086 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -1,6 +1,6 @@ /** * @file attitude_with_cantilever_vibration.cpp - * @brief Class to calculate spacecraft attitude with Runge-Kutta method + * @brief Class to calculate spacecraft attitude with cantilever vibration */ #include "attitude_with_cantilever_vibration.hpp" @@ -99,33 +99,33 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { libra::Vector<13> AttitudeWithCantileverVibration::SetStateFromPhysicalQuantities() { libra::Vector<13> state; - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { state[i] = angular_velocity_b_rad_s_[i]; } - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { state[i + 3] = angular_velocity_cantilever_rad_s_[i]; } - for (int i = 0; i < 4; i++) { + for (size_t i = 0; i < 4; i++) { state[i + 6] = quaternion_i2b_[i]; } - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { state[i + 10] = euler_angular_cantilever_rad_[i]; } return state; } void AttitudeWithCantileverVibration::SetPhysicalQuantitiesFromState(libra::Vector<13> state) { - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = state[i]; } - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { angular_velocity_cantilever_rad_s_[i] = state[i + 3]; } - for (int i = 0; i < 4; i++) { + for (size_t i = 0; i < 4; i++) { quaternion_i2b_[i] = state[i + 6]; } quaternion_i2b_.Normalize(); - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { euler_angular_cantilever_rad_[i] = state[i + 10]; } } diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 8b01c0fb4..4850da55b 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -1,6 +1,6 @@ /** * @file attitude_with_cantilever_vibration.hpp - * @brief Class to calculate spacecraft attitude with Runge-Kutta method + * @brief Class to calculate spacecraft attitude with cantilever vibration */ #ifndef S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ @@ -14,7 +14,7 @@ /** * @class AttitudeWithCantileverVibration - * @brief Class to calculate spacecraft attitude with Runge-Kutta method + * @brief Class to calculate spacecraft attitude with cantilever vibration */ class AttitudeWithCantileverVibration : public Attitude { public: diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index ce428057b..9d57f0675 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -1,10 +1,10 @@ /** - * @file ode_attitude.hpp - * @brief Class to implement Ordinary Differential Equations for Attitude + * @file ode_attitude_with_cantilever_vibration.hpp + * @brief Class to implement Ordinary Differential Equations for Attitude propagator with cantilever vibration */ -#ifndef S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_HPP_ -#define S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_HPP_ +#ifndef S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ +#define S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ #include #include @@ -15,6 +15,8 @@ namespace libra::numerical_integration { /** * @class AttitudeWithCantileverVibrationOde * @brief Class to implement Ordinary Differential Equations for Attitude with Cantilever Vibration + * @note State variables in this ODE compose the following elenents (in order): angular_velocity_b_rad_s_ (3-dimension), + * angular_velocity_cantilever_rad_s_ (3-dimension), quaternion_i2b_ (4-dmension), and euler_angular_cantilever_rad_ (3-dimension) */ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { public: @@ -144,4 +146,4 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } // namespace libra::numerical_integration -#endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_HPP_ +#endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ From 6016ffb65de2db42205cb2e0df8d9bc0e1f5454c Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 18:59:02 +0900 Subject: [PATCH 209/456] fix small --- .../ode_attitude_with_cantilever_vibration.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 9d57f0675..36a04a691 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -26,16 +26,16 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { libra::Vector<13> output; libra::Vector<3> omega_b_rad_s; - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { omega_b_rad_s[i] = state[i]; } libra::Vector<3> omega_cantilever_rad_s; - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { omega_cantilever_rad_s[i] = state[i + 3]; } libra::Vector<3> euler_angle_cantilever_rad; - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { euler_angle_cantilever_rad[i] = state[i + 10]; } @@ -49,26 +49,26 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); - for (int i = 0; i < 3; ++i) { + for (size_t i = 0; i < 3; ++i) { output[i] = rhs[i]; } - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; } libra::Vector<4> quaternion_i2b; - for (int i = 0; i < 4; i++) { + for (size_t i = 0; i < 4; i++) { quaternion_i2b[i] = state[i + 6]; } libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * quaternion_i2b; - for (int i = 0; i < 4; i++) { + for (size_t i = 0; i < 4; i++) { output[i + 6] = d_quaternion[i]; } - for (int i = 0; i < 3; i++) { + for (size_t i = 0; i < 3; i++) { output[i + 10] = omega_cantilever_rad_s[i]; } From 0061c26889a42cc9ed7434a2ee5da295fb85a056 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 19:02:49 +0900 Subject: [PATCH 210/456] change order to define variables --- .../ode_attitude_with_cantilever_vibration.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 36a04a691..cabadaacc 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -34,6 +34,11 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { omega_cantilever_rad_s[i] = state[i + 3]; } + libra::Vector<4> quaternion_i2b; + for (size_t i = 0; i < 4; i++) { + quaternion_i2b[i] = state[i + 6]; + } + libra::Vector<3> euler_angle_cantilever_rad; for (size_t i = 0; i < 3; i++) { euler_angle_cantilever_rad[i] = state[i + 10]; @@ -57,11 +62,6 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; } - libra::Vector<4> quaternion_i2b; - for (size_t i = 0; i < 4; i++) { - quaternion_i2b[i] = state[i + 6]; - } - libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * quaternion_i2b; for (size_t i = 0; i < 4; i++) { From c6ef5da20323dbed918e874897b47b29a7a2af38 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Wed, 5 Jun 2024 20:17:24 +0900 Subject: [PATCH 211/456] replace pravate variables --- .../attitude_with_cantilever_vibration.cpp | 47 +++++++++---------- .../attitude_with_cantilever_vibration.hpp | 29 ++---------- ...ode_attitude_with_cantilever_vibration.hpp | 37 +++++++++++++++ 3 files changed, 62 insertions(+), 51 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 2c18f4086..83f432144 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -20,14 +20,21 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); - previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; - inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; - attenuation_coefficient_ = 2 * damping_ratio_cantilever * intrinsic_angular_velocity_cantilever_rad_s; - spring_coefficient_ = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); - inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); - inverse_equivalent_inertia_tensor_cantilever_ = CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2_) * inertia_tensor_kgm2_; + + attitude_ode_.SetInertiaTensorCantilever_kgm2(inertia_tensor_cantilever_kgm2); + attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); + double attenuation_coefficient = 2 * damping_ratio_cantilever * intrinsic_angular_velocity_cantilever_rad_s; + attitude_ode_.SetAttenuationCoefficient(attenuation_coefficient); + double spring_coefficient = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); + attitude_ode_.SetSpringCoefficient(spring_coefficient); + attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); + libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = + CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2) * inertia_tensor_kgm2_; + attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever); + attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); + attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); + CalcAngularMomentum(); - SetOdeParameters(); } AttitudeWithCantileverVibration::~AttitudeWithCantileverVibration() {} @@ -60,26 +67,16 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx CalcAngularMomentum(); } -void AttitudeWithCantileverVibration::SetOdeParameters() { - attitude_ode_.SetAttenuationCoefficient(attenuation_coefficient_); - attitude_ode_.SetSpringCoefficient(spring_coefficient_); - attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); - attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm_); - attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); - attitude_ode_.SetInverseInertiaTensor(inverse_inertia_tensor_); - attitude_ode_.SetPreviousInertiaTensor_kgm2(previous_inertia_tensor_kgm2_); - attitude_ode_.SetInertiaTensorCantilever_kgm2(inertia_tensor_cantilever_kgm2_); - attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever_); -} - void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - libra::Matrix<3, 3> dot_inertia_tensor = - (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); - torque_inertia_tensor_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; - inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); - SetOdeParameters(); + libra::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); + libra::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); + libra::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; + attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm); + attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); + attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); + attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); libra::Vector<13> state = SetStateFromPhysicalQuantities(); numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); @@ -93,7 +90,7 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { // Update information current_propagation_time_s_ = end_time_s; - previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; + attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); CalcAngularMomentum(); } diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 4850da55b..612141cce 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -60,16 +60,6 @@ class AttitudeWithCantileverVibration : public Attitude { * @brief Override GetLogValue function of ILoggable */ virtual std::string GetLogValue() const; - /** - * @fn GetPreviousInertiaTensor_b_kgm2 - * @brief Return previous inertia tensor [kg m^2] - */ - inline libra::Matrix<3, 3> GetPreviousInertiaTensor_b_kgm2() const { return previous_inertia_tensor_kgm2_; } - /** - * @fn GetTorqueInertiaTensor_b_Nm - * @brief Return torque generated by inertia tensor [Nm] - */ - inline libra::Vector<3> GetTorqueInertiaTensor_b_Nm() const { return torque_inertia_tensor_b_Nm_; } /** * @fn SetParameters @@ -78,23 +68,10 @@ class AttitudeWithCantileverVibration : public Attitude { */ virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); - /** - * @fn SetOdeParameters - * @brief Set parameters for ordinary differential equations - */ - void SetOdeParameters(); - private: - double current_propagation_time_s_; //!< current time [sec] - libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor - libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - libra::Vector<3> torque_inertia_tensor_b_Nm_; //!< Torque generated by inertia tensor [Nm] - libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2_; //!< Inertia tensor of the cantilever [kgm2] - libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_; //!< Inverse of inertia tensor of the cantilever - double attenuation_coefficient_; //!< Attenuation coefficient - double spring_coefficient_; //!< Spring coefficient - libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] - libra::Vector<3> euler_angular_cantilever_rad_; //!< Euler angle of the cantilever with respect to the body frame [rad/s] + double current_propagation_time_s_; //!< current time [sec] + libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] + libra::Vector<3> euler_angular_cantilever_rad_; //!< Euler angle of the cantilever with respect to the body frame [rad/s] libra::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; libra::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index cabadaacc..48d73373e 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -75,6 +75,43 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { return output; } + // Getter + /** + * @fn GetAttenuationCoefficient + * @brief Get attenuation coefficient + */ + inline double GetAttenuationCoefficient() { return attenuation_coefficient_; } + /** + * @fn GetSpringCoefficient + * @brief Get spring coefficient + */ + inline double GetSpringCoefficient() { return spring_coefficient_; } + /** + * @fn GetTorqueInertiaTensor_b_Nm + * @brief Get torque generated by inertia tensor [Nm] + */ + inline libra::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } + /** + * @fn GetInverseInertiaTensor + * @brief Get inverse of inertia tensor + */ + inline libra::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } + /** + * @fn GetPreviousInertiaTensor_kgm2 + * @brief Get previous inertia tensor [kgm2] + */ + inline libra::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } + /** + * @fn GetInertiaTensorCantilever_kgm2 + * @brief Get inertia tensor of the cantilever [kgm2] + */ + inline libra::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } + /** + * @fn GetInverseEquivalentInertiaTensorCantilever + * @brief Get inverse of inertia tensor of the cantilever + */ + inline libra::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } + // Setter /** * @fn SetAttenuationCoefficient From 1effa87e64b0b934d9d75ceb5f3193b2fa242d7c Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Thu, 6 Jun 2024 10:40:03 +0900 Subject: [PATCH 212/456] rename python file --- ...ngle_observer.py => plot_euler_angle_cantilever_observer.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename scripts/Plot/{plot_euler_angle_observer.py => plot_euler_angle_cantilever_observer.py} (97%) diff --git a/scripts/Plot/plot_euler_angle_observer.py b/scripts/Plot/plot_euler_angle_cantilever_observer.py similarity index 97% rename from scripts/Plot/plot_euler_angle_observer.py rename to scripts/Plot/plot_euler_angle_cantilever_observer.py index 554579786..975d7fc7f 100644 --- a/scripts/Plot/plot_euler_angle_observer.py +++ b/scripts/Plot/plot_euler_angle_cantilever_observer.py @@ -1,5 +1,5 @@ # -# Plot Angular Velocity Observer +# Plot Euler Angle of Cantilever Observer # # arg[1] : read_file_tag : time tag for default CSV output log file. ex. 220627_142946 # From 0545a049c6311724c475472009c3781011fd6164 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Thu, 6 Jun 2024 10:58:09 +0900 Subject: [PATCH 213/456] add comment --- data/sample/initialize_files/sample_structure.ini | 1 + src/dynamics/attitude/attitude_with_cantilever_vibration.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/data/sample/initialize_files/sample_structure.ini b/data/sample/initialize_files/sample_structure.ini index 4ca6cf64b..62bc8c4ac 100644 --- a/data/sample/initialize_files/sample_structure.ini +++ b/data/sample/initialize_files/sample_structure.ini @@ -25,6 +25,7 @@ center_of_gravity_b_m(1) = 0.01 center_of_gravity_b_m(2) = 0.01 [CANTILEVER_PARAMETERS] +// Currently, the cantilever frame has the same coordinate system as the body frame of the satellite // Inertia Tensor of cantilever (flexible structure) @ body fixed frame [kg・m2] inertia_tensor_cantilever_kgm2(0) = 0.1 // I_xx inertia_tensor_cantilever_kgm2(1) = 0.0 // I_xy diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 83f432144..e38f82741 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -4,6 +4,7 @@ */ #include "attitude_with_cantilever_vibration.hpp" +#include #include #include @@ -63,7 +64,7 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); //!< Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); //!< TODO: Consider how to handle this variable CalcAngularMomentum(); } @@ -71,6 +72,7 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; libra::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); + assert(end_time_s - current_propagation_time_s_ > 1e-6); libra::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); libra::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm); From fbe212ccac78b9f063f5d0d853c32d4daf61c309 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Thu, 6 Jun 2024 15:57:32 +0900 Subject: [PATCH 214/456] remove SetStateFromPhysicalQuantities --- .../attitude_with_cantilever_vibration.cpp | 43 ++---------- .../attitude_with_cantilever_vibration.hpp | 12 ---- ...ode_attitude_with_cantilever_vibration.hpp | 68 +++++++++++++++---- 3 files changed, 61 insertions(+), 62 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index e38f82741..9c4f339f4 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -14,7 +14,8 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( const double intrinsic_angular_velocity_cantilever_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), - numerical_integrator_(propagation_step_s, attitude_ode_, libra::numerical_integration::NumericalIntegrationMethod::kRk4) { + numerical_integrator_(propagation_step_s, attitude_ode_, + libra::numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; quaternion_i2b_ = quaternion_i2b; torque_b_Nm_ = torque_b_Nm; @@ -80,7 +81,8 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); - libra::Vector<13> state = SetStateFromPhysicalQuantities(); + libra::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, + quaternion_i2b_, euler_angular_cantilever_rad_); numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { numerical_integrator_.GetIntegrator()->Integrate(); @@ -88,43 +90,12 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { } numerical_integrator_.GetIntegrator()->SetState(end_time_s - current_propagation_time_s_, numerical_integrator_.GetIntegrator()->GetState()); numerical_integrator_.GetIntegrator()->Integrate(); - SetPhysicalQuantitiesFromState(numerical_integrator_.GetIntegrator()->GetState()); + attitude_ode_.SetPhysicalQuantitiesFromState(numerical_integrator_.GetIntegrator()->GetState(), angular_velocity_b_rad_s_, + angular_velocity_cantilever_rad_s_, quaternion_i2b_, euler_angular_cantilever_rad_); + quaternion_i2b_.Normalize(); // Update information current_propagation_time_s_ = end_time_s; attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); CalcAngularMomentum(); } - -libra::Vector<13> AttitudeWithCantileverVibration::SetStateFromPhysicalQuantities() { - libra::Vector<13> state; - for (size_t i = 0; i < 3; i++) { - state[i] = angular_velocity_b_rad_s_[i]; - } - for (size_t i = 0; i < 3; i++) { - state[i + 3] = angular_velocity_cantilever_rad_s_[i]; - } - for (size_t i = 0; i < 4; i++) { - state[i + 6] = quaternion_i2b_[i]; - } - for (size_t i = 0; i < 3; i++) { - state[i + 10] = euler_angular_cantilever_rad_[i]; - } - return state; -} - -void AttitudeWithCantileverVibration::SetPhysicalQuantitiesFromState(libra::Vector<13> state) { - for (size_t i = 0; i < 3; i++) { - angular_velocity_b_rad_s_[i] = state[i]; - } - for (size_t i = 0; i < 3; i++) { - angular_velocity_cantilever_rad_s_[i] = state[i + 3]; - } - for (size_t i = 0; i < 4; i++) { - quaternion_i2b_[i] = state[i + 6]; - } - quaternion_i2b_.Normalize(); - for (size_t i = 0; i < 3; i++) { - euler_angular_cantilever_rad_[i] = state[i + 10]; - } -} diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 612141cce..c2383d716 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -75,18 +75,6 @@ class AttitudeWithCantileverVibration : public Attitude { libra::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; libra::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; - - /** - * @fn SetStateFromPhysicalQuantities - * @brief Set state for calculating the ordinary differential equation from physical quantities - */ - libra::Vector<13> SetStateFromPhysicalQuantities(); - - /** - * @fn SetPhysicalQuantitiesFromState - * @brief Set physical quantities from state acquired by calculation of the ordinary differential equation - */ - void SetPhysicalQuantitiesFromState(libra::Vector<13> state); }; #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 48d73373e..da10a3e7d 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -20,29 +20,66 @@ namespace libra::numerical_integration { */ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { public: - Vector<13> DerivativeFunction(const double time_s, const Vector<13>& state) const override { - UNUSED(time_s); - - libra::Vector<13> output; - - libra::Vector<3> omega_b_rad_s; + /** + * @fn SetStateFromPhysicalQuantities + * @brief Set state for calculating the ordinary differential equation from physical quantities + * @param [in] angular_velocity_b_rad_s: Angular velocity of the spacecraft @ body-fixed frame [rad/s] + * @param [in] angular_velocity_cantilever_rad_s: Angular velocity of the cantilever @ body frame [rad/s] + * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame + * @param [in] euler_angule_cantilever_rad: Euler angle of the cantilever@ body-fixed frame [rad] + */ + libra::Vector<13> SetStateFromPhysicalQuantities(const libra::Vector<3> angular_velocity_b_rad_s, + const libra::Vector<3> angular_velocity_cantilever_rad_s, const libra::Quaternion quaternion_i2b, + const libra::Vector<3> euler_angule_cantilever_rad) const { + libra::Vector<13> state; for (size_t i = 0; i < 3; i++) { - omega_b_rad_s[i] = state[i]; + state[i] = angular_velocity_b_rad_s[i]; } - libra::Vector<3> omega_cantilever_rad_s; for (size_t i = 0; i < 3; i++) { - omega_cantilever_rad_s[i] = state[i + 3]; + state[i + 3] = angular_velocity_cantilever_rad_s[i]; } + for (size_t i = 0; i < 4; i++) { + state[i + 6] = quaternion_i2b[i]; + } + for (size_t i = 0; i < 3; i++) { + state[i + 10] = euler_angule_cantilever_rad[i]; + } + return state; + } - libra::Vector<4> quaternion_i2b; + /** + * @fn SetPhysicalQuantitiesFromState + * @brief Set physical quantities from state acquired by calculation of the ordinary differential equation + * @param [in] state: state variables used to calculate the ordinary differential equation + */ + void SetPhysicalQuantitiesFromState(const libra::Vector<13> state, libra::Vector<3>& angular_velocity_b_rad_s, + libra::Vector<3>& angular_velocity_cantilever_rad_s, libra::Quaternion& quaternion_i2b, + libra::Vector<3>& euler_angular_cantilever_rad) const { + for (size_t i = 0; i < 3; i++) { + angular_velocity_b_rad_s[i] = state[i]; + } + for (size_t i = 0; i < 3; i++) { + angular_velocity_cantilever_rad_s[i] = state[i + 3]; + } for (size_t i = 0; i < 4; i++) { quaternion_i2b[i] = state[i + 6]; } - - libra::Vector<3> euler_angle_cantilever_rad; for (size_t i = 0; i < 3; i++) { - euler_angle_cantilever_rad[i] = state[i + 10]; + euler_angular_cantilever_rad[i] = state[i + 10]; } + } + + Vector<13> DerivativeFunction(const double time_s, const Vector<13>& state) const override { + UNUSED(time_s); + + libra::Vector<13> output; + + libra::Vector<3> omega_b_rad_s; + libra::Vector<3> omega_cantilever_rad_s; + libra::Quaternion quaternion_i2b; + libra::Vector<3> euler_angle_cantilever_rad; + + SetPhysicalQuantitiesFromState(state, omega_b_rad_s, omega_cantilever_rad_s, quaternion_i2b, euler_angle_cantilever_rad); libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; @@ -62,7 +99,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; } - libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * quaternion_i2b; + libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (libra::Vector<4>(quaternion_i2b)); for (size_t i = 0; i < 4; i++) { output[i + 6] = d_quaternion[i]; @@ -72,6 +109,9 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { output[i + 10] = omega_cantilever_rad_s[i]; } + // The function is used to output the derivative of each corresponding physical quantity. + output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, libra::Quaternion(d_quaternion), omega_cantilever_rad_s); + return output; } From d243540a1acefde7df0b8b37357df6840dea7339 Mon Sep 17 00:00:00 2001 From: TomokiMochizuki Date: Fri, 7 Jun 2024 10:22:58 +0900 Subject: [PATCH 215/456] fix small --- src/dynamics/attitude/attitude.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index b17a92162..94f63d882 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -119,7 +119,6 @@ class Attitude : public ILoggable, public SimulationObject { libra::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] libra::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame libra::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] - const libra::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] libra::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] From 1d971db9a292e7e05011b77ed38a3b863b98b56b Mon Sep 17 00:00:00 2001 From: TomokiM Date: Thu, 27 Jun 2024 10:03:16 +0900 Subject: [PATCH 216/456] initialize variables --- .../attitude/attitude_with_cantilever_vibration.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index c2383d716..e24f3e489 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -69,9 +69,9 @@ class AttitudeWithCantileverVibration : public Attitude { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); private: - double current_propagation_time_s_; //!< current time [sec] - libra::Vector<3> angular_velocity_cantilever_rad_s_; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] - libra::Vector<3> euler_angular_cantilever_rad_; //!< Euler angle of the cantilever with respect to the body frame [rad/s] + double current_propagation_time_s_; //!< current time [sec] + libra::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] + libra::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] libra::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; libra::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; From 834480524e2274eba0a9fe82dafefef627d3feb2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 01:24:36 +0000 Subject: [PATCH 217/456] Update dependency numpy-quaternion to v2023.0.4 --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 347 +++++++++++++++++++------------------- 2 files changed, 175 insertions(+), 174 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index 6ac2b122e..38356acf7 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -9,7 +9,7 @@ matplotlib = "==3.7.2" numpy = "==1.24.3" pandas = "==2.0.3" numpy-stl = "==3.0.1" -numpy-quaternion = "==2023.0.3" +numpy-quaternion = "==2023.0.4" python-utils = "==3.5.2" [dev-packages] diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index e34e59e44..67cf279cc 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f1e9adad28dde1efbdd7ba4126b803234663495b72d241fef74b5c6e54627fd7" + "sha256": "f4ca1dee72da4042d6b1600578b0e579b9f98edbac9f1bd220a102f936f25c76" }, "pipfile-spec": 6, "requires": { @@ -78,11 +78,11 @@ }, "certifi": { "hashes": [ - "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f", - "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1" + "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516", + "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56" ], "markers": "python_version >= '3.6'", - "version": "==2024.2.2" + "version": "==2024.6.2" }, "contourpy": { "hashes": [ @@ -152,59 +152,59 @@ }, "fonttools": { "hashes": [ - "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133", - "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828", - "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc", - "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2", - "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559", - "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42", - "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf", - "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c", - "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036", - "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942", - "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86", - "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22", - "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5", - "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75", - "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a", - "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd", - "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814", - "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b", - "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a", - "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844", - "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034", - "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc", - "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4", - "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18", - "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836", - "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9", - "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880", - "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb", - "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff", - "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7", - "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e", - "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29", - "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532", - "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be", - "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075", - "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717", - "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb", - "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321", - "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e", - "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e", - "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6", - "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb" + "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d", + "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64", + "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2", + "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4", + "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6", + "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b", + "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f", + "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380", + "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e", + "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749", + "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20", + "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0", + "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4", + "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5", + "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206", + "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9", + "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac", + "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1", + "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce", + "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4", + "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12", + "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca", + "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d", + "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068", + "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796", + "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec", + "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea", + "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f", + "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005", + "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2", + "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06", + "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109", + "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002", + "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9", + "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a", + "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68", + "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6", + "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161", + "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd", + "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d", + "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee", + "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af" ], "markers": "python_version >= '3.8'", - "version": "==4.49.0" + "version": "==4.53.0" }, "importlib-resources": { "hashes": [ - "sha256:4c0269e3580fe2634d364b39b38b961540a7738c02cb984e98add8b4221d793d", - "sha256:56fb4525197b78544a3354ea27793952ab93f935bb4bf746b846bb1015020f2b" + "sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c", + "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145" ], "markers": "python_version < '3.10'", - "version": "==6.1.3" + "version": "==6.4.0" }, "kiwisolver": { "hashes": [ @@ -401,58 +401,58 @@ }, "numpy-quaternion": { "hashes": [ - "sha256:00462f35b7668e45ec626578cbb7f67c6a258b915d77de606e4f5058c882ed4d", - "sha256:05c7b17fea1304e3f3aad8478148c671940abe6303c904c12da472ebb4e3c201", - "sha256:0ba2e4f266a94650d45407ff8507c546951f30a445f3a3f1701e517c6c456dda", - "sha256:13cbd13e3119bbbc2e9c45cae27d5723f94ab758256eaafe75f7bf4deea6537f", - "sha256:151f238ad5bfe51e18a8fad6afc75bec060f9ec3ebd01ad0565fb33ab6714818", - "sha256:1a99125c750ad5c7d17bf4c69b03fb9c86e418c582c9991ef9c119fd97a8a640", - "sha256:1b8fc0d8cdee31cee21d8564726dab3ad8206a4119d60e0732bcd9b8b7d079d2", - "sha256:23f429263e0e6f290ca6f6187a2739567f7fcd5e066259f0098007fa06068d44", - "sha256:241d635791b5aadb798a56baba0d754b8f5b11ac93e6e490de52324dd06ee608", - "sha256:324d19204d7ce7b60cfd9b1a351eb2e6bbfda307e5ea8326a2978f5dc082f334", - "sha256:33fa45a2a7e52173ecc10862377dcccc97b6f97c84aabb70e922d29411836694", - "sha256:3489f172485bb86c7f1875f35a885ebdc671e3b5d45eac0e227d141b36a5bf02", - "sha256:392bf3cb4eee36c0e9271534e93e39e46cdb4f7e2062b08cb38bd0872061ff6c", - "sha256:4285e8e4df7216f9adfe15d2802472c89758d92cbf3c7fde31798ca0e22eb7e0", - "sha256:481d386e4863e2aef88b618ac73e6dec9635737d01c9ccddfd53a855edcfea84", - "sha256:48693acbbb5868d56a370bafd1051d1c7c7ab39f1b852a29e67ac1258938cf4d", - "sha256:55ff80e4a2d6ca5d0e0e00e2ead59757e2816b50e97a19307ea09b56124bf5b1", - "sha256:6175a0555b9e6cf8fb22f88113b55e29dbec26622938e61a79ea4fcfcd8ad8e3", - "sha256:6699dbba41286da391b1ba40d0bebab8c2417cbce799d70c5745a254630bd0cd", - "sha256:68acbb54ea114b258259a588a3de2b190f58855ff6289a71efb26a22f659e863", - "sha256:6992f33b7f0b94a25ff31685eb5ab13d173ccdb996a40b28757da4120e852930", - "sha256:734259bfa8da467812a46ed79fcd9e3429e9aaa26f4449f47e65a709abd8b000", - "sha256:73e10823b0b0fb0f5f1a5fb6e36db3e09d5ed1b547dd5e6a31ac2f126916dfe5", - "sha256:77d98ea3a5c6d005dbda7cf38c3d8bf5de49fa3b5809046083349439930248d0", - "sha256:7c67e35c3f128f8c32b76be448d8b8f102d4fd8d19086afc816fa8908abd91f0", - "sha256:7fb35558e572d17ede74bd295bd39b7b4e430e2454394162a419ec13e398e16f", - "sha256:82158827e53fe84b79bb0e1fa993151dd4b25381c148d0486fe0518f96937c55", - "sha256:85811e0dbf7bb5e0d1d589331ecf452f972f555c1d6be31f3383c5e826184735", - "sha256:8ebc517a59487e2424b98a0d6291d1e7ad77ca36d2702015357f62097953de1f", - "sha256:92be260eccb718f07c67e314601a3cca22bb5cdcba8e6fd6c70febd24f947d4a", - "sha256:a05f00ce120089315d67471e01542e9aeffa3069be05e41690d6de5ac36a1da0", - "sha256:a16cc15587c47fd5ba512c621b2f72e9f7c26b829ef869395f9d16029639849e", - "sha256:a4e22488ce2a5f4d8b93aafa50d2d659719b46fb358648853d52db12d000f13c", - "sha256:ab8912509ff8b6de23c39fa6ae2e6b055893687939382ba2289078f9c8d0f164", - "sha256:b3aec1175b788b74d788fdef7c221707a2f68cbc20653ddc2a3c15e5332c1fb4", - "sha256:c2eef9417c0c7d339846537ce539417aff0e546f05c9c52ae4494966322e0ce7", - "sha256:c2f300ef729e3f0755e5518ef97770c27f29ebd5a1e58699adc2f045aad6958d", - "sha256:cd6bed4d09c141062d6e3745e0fcaae80536a36ffa5ba3248771a7ca8d447734", - "sha256:d0dba8b77df485ca9fdc9b1e8bf57fcbc34e9f08362b73a29df2d5bd72c50fe7", - "sha256:d4e452a95a55bb58016ff5b555cde3ffcf95a4a4ad4d6c92b8f05119324f3229", - "sha256:d65d06b1a8c4f153f3b830601e8c1a1c3d75a92b289c67f5394684de082b36ef", - "sha256:db804fed5bc128f4ff143bedf5ae987efc1f8c75b53956cc3f1194ed8732b4b8", - "sha256:e3579c10c63a40fc466fa051419222fe17010c7ddabcd6300d7ae8ecdf4f68cc", - "sha256:e56939aae3f493acfa7c09dc5476893a61b3a7843e7c22d7cf65a14f9fe5eba3", - "sha256:ed5667e9dd4c16f4d88407f041009374fd53c034b3d9b61a7496a515fb235a9b", - "sha256:f24aee35a72195c3f4002859c48f9a77660385153ea72df7ef3a9dc9c5e6e533", - "sha256:f54a63b34f4207f7bf56dda94aecb7926019ba99d860e305048cb4ec126dcd14", - "sha256:fadc1caa87ac0d7e898250fe30d92e83aa3e0f441edba106d1bffa54b684054e", - "sha256:fcac49e60f26be6db809fec0ce07b36af48cea159c7d5ac4944955814846b3b4" + "sha256:0d3003987bfb309aa2cad3ca47e74845abd7cce350d04f0e15d122d4d327b26f", + "sha256:0dfc980395e230b3ec0ab764ee9417c580efc38e6cb1774f8c81385ecf562e8d", + "sha256:16c13173031d7fa4570418078c63e4a83119c863c5e0201f366738a551c6799d", + "sha256:2154b5e96a3214aab3949215216800a101fc5ad9740ab647d0f0790bca5c0213", + "sha256:217d8a93e52ebd765409729818988d752254e1fe850702069901516d8ea4c4bf", + "sha256:22ad06898f7179320043f7c8d1937cca7ffd982e8ed39e4e2cb39392e52bf302", + "sha256:25bae3075737cf9a37445b3bff792aefd87f7626aeafe399a5c5ab0c8e56df61", + "sha256:3148f93231ff80d32772bbea78d223ce1766acf69227bd64ca8667ad41ffd6f0", + "sha256:31e910858a344f1cf03f3ed3ee05bfd156c7a58db0d09cbadd4581aee163000b", + "sha256:342d0d7c12e657adee7898b299c20dc75e1f5ea50dbd38b5df7f146304808d5b", + "sha256:4925a1b1f4e59c2977fffe5098de0cfed0fa72fe4c2335499abd3c8e6a068fb3", + "sha256:4ab31a89c9c36b2bc147181e2dda8192cb92f53bd722af41667bb3d472270719", + "sha256:4b17971d99fb69d9491ef0642a8e08197ea73e786cb0f3020ae072358829e726", + "sha256:4b7b97c2be631ea2aa4b8a1061d06562839ae92f4b27c7e66315121ceaeef438", + "sha256:55ed2432c0d4b2fb713f0508db49970b13f73082887267b84c75a29a816abd77", + "sha256:5853f768f368d8f5f5048043ee8bef8a950a3ec6b092b5a161d77fa335356419", + "sha256:619d708553394062b22089e7d89b5918f4df3d77c9c3a9906f0c80590b1221eb", + "sha256:65c7c100cb673c67f56e8457800c6e183013c7b68e940f03ad02a8f254704f2b", + "sha256:6953697db28fa26df84dbc484abd827ac0d258055c14387ebd0592b1e3d36ae0", + "sha256:6c9dff45ba0a7825ffa27bce13ffa5ca09e5353a4e86a3168d58726780241495", + "sha256:6e6ca6f7d0de9499ba33c62a606ddeb625cad146ddd987c8045d35d85c104d08", + "sha256:71406dc86f741d3f8edcd14a0713b4cbda676d151b77feb640110a5c8642977c", + "sha256:752289acf14e3261e201f11fab9a0d0dedc0c6fa192d3e1d61758a50d3781391", + "sha256:7c8640368cf93a78939e0998aad147ab8f644dc12e4ac096b3cb431874e1c12b", + "sha256:7f764215c381c2b9d03706023a2a2971fa802af9c2f1c54bfe23cdfe5053c14a", + "sha256:880895358b8905a25e6c7e9db76ca03e9e0e91f1b36574d148b4c04c9e0a6dfd", + "sha256:8902b9244cd1a71fb2a0aca1c756450cf876cddf2e2677ece1796dddad3d4146", + "sha256:8e2d87f24a1ec916a8ee708bd067e1ee8dbaa6c472c65e58e2446728462bcec4", + "sha256:98ac68abe59cd716c6cdf56a525af81d8acc6f01d410f386f46898413b0d5591", + "sha256:9ae88f756e247ed5a5e0eca2d106f11b5764360c23536ba91616b7ad36194082", + "sha256:a5d03e5f11247acd55425b28bc855905bbe1ea7e564d60782252708ea1721383", + "sha256:aa33960c7ae0a203f1d04d3ed3458200f56be76d81d2d6124c969b1262376d05", + "sha256:b0bee91d05e276d216c8bd4b63e9f798e3a913e84d50975745cfa30b0b36b25a", + "sha256:b57fdc1b3fc1dd0961430518ea0929a6ab671cc786942377fbf34f748f6308c7", + "sha256:b6001d43b3ef6f15ba402cfeec5cabe654c87b458e8b899852b59be60ccddb2f", + "sha256:b80103dd3bc0d02d5cc13003fb721bc14e234595c2dd796f799971c02889f001", + "sha256:bf08ab32d8f8b05c9c00b28aea0f83ae6eae7773d4a6218575223f8de3a92908", + "sha256:c6fd1f8c8f74637cc1660e1f8b6121b640c2061aac0237cf32021960d80e4d5e", + "sha256:c9726d8d7bfde2ccf1b4b74922d3e59f96c7592591f92b6bea6f7d28d55edbd6", + "sha256:caff96a569605051c5cd485c933d0ae6ee5edc2332cc2004982d7066376defb8", + "sha256:cc68674de1090f2000dce84c5a807294e286136accb2509a8df205e479a79bcd", + "sha256:d03b38f95e33198bb1c2aa055faa7b1998cf83e4ea65d4071016c9fb78fe2ad0", + "sha256:d157e4eadb1eedbc050b98110748fa09af11dd0bcffd9c3ccf93fe7b3b98ce1e", + "sha256:d4401fd3310853a49198a44e88b2c9d4e064538b9d8c7326fe407d3a448cb780", + "sha256:d85ce3c582569d52d5133c29a9b63e12ec457ba47dd188133b7b30857db4f1a8", + "sha256:e90fcf750786ea3e55e33e52e5e2baac334a1102a8719b2d06cff71a96b34c3c", + "sha256:ebaf1b7f5b1fce8b0fbc0ff1a48abede595f2f734168f1a48843a77ae617113f", + "sha256:fa427d0e309ff3d97fbe03c7e23024f601ddf5dc5b7ca1e7ace644d77aafae85", + "sha256:fac5766180b2098488d84490a49ea21c835d786ab7a068f9791ed848d806973c" ], "index": "pypi", - "version": "==2023.0.3" + "version": "==2023.0.4" }, "numpy-stl": { "hashes": [ @@ -468,7 +468,7 @@ "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], - "markers": "python_version >= '3.5'", + "markers": "python_version >= '3.7'", "version": "==23.2" }, "pandas": { @@ -505,77 +505,78 @@ }, "pillow": { "hashes": [ - "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8", - "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39", - "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac", - "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869", - "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e", - "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04", - "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9", - "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e", - "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe", - "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef", - "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56", - "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa", - "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f", - "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f", - "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e", - "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a", - "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2", - "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2", - "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5", - "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a", - "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2", - "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213", - "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563", - "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591", - "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c", - "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2", - "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb", - "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757", - "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0", - "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452", - "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad", - "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01", - "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f", - "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5", - "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61", - "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e", - "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b", - "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068", - "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9", - "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588", - "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483", - "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f", - "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67", - "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7", - "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311", - "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6", - "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72", - "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6", - "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129", - "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13", - "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67", - "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c", - "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516", - "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e", - "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e", - "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364", - "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023", - "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1", - "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04", - "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d", - "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a", - "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7", - "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb", - "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4", - "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e", - "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1", - "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48", - "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868" + "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c", + "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2", + "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb", + "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d", + "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa", + "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3", + "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1", + "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a", + "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd", + "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8", + "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999", + "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599", + "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936", + "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375", + "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d", + "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b", + "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60", + "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572", + "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3", + "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced", + "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f", + "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b", + "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19", + "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f", + "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d", + "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383", + "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795", + "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355", + "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57", + "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09", + "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b", + "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462", + "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf", + "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f", + "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a", + "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad", + "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9", + "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d", + "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45", + "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994", + "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d", + "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338", + "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463", + "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451", + "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591", + "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c", + "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd", + "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32", + "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9", + "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf", + "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5", + "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828", + "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3", + "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5", + "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2", + "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b", + "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2", + "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475", + "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3", + "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb", + "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef", + "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015", + "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002", + "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170", + "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84", + "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57", + "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f", + "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27", + "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a" ], "markers": "python_version >= '3.8'", - "version": "==10.2.0" + "version": "==10.3.0" }, "pyparsing": { "hashes": [ @@ -676,11 +677,11 @@ }, "zipp": { "hashes": [ - "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", - "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" + "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19", + "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c" ], "markers": "python_version < '3.10'", - "version": "==3.17.0" + "version": "==3.19.2" } }, "develop": {} From dfecbd43e49d08f4089ab646aa94284782e257f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 14:52:58 +0000 Subject: [PATCH 218/456] Bump certifi from 2024.6.2 to 2024.7.4 in /scripts/Plot Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.6.2 to 2024.7.4. - [Commits](https://github.com/certifi/python-certifi/compare/2024.06.02...2024.07.04) --- updated-dependencies: - dependency-name: certifi dependency-type: indirect ... Signed-off-by: dependabot[bot] --- scripts/Plot/Pipfile.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index 67cf279cc..7a98a2a8a 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -78,11 +78,12 @@ }, "certifi": { "hashes": [ - "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516", - "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56" + "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", + "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" ], + "index": "pypi", "markers": "python_version >= '3.6'", - "version": "==2024.6.2" + "version": "==2024.7.4" }, "contourpy": { "hashes": [ From f85a003171ab9a2438c74a5ead340fad754c90c6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:11:16 +0900 Subject: [PATCH 219/456] Rename namespace libra to namespace math in math directory --- src/math_physics/math/constants.hpp | 2 +- src/math_physics/math/interpolation.cpp | 2 +- src/math_physics/math/interpolation.hpp | 2 +- src/math_physics/math/matrix.hpp | 2 +- src/math_physics/math/matrix_template_functions.hpp | 2 +- src/math_physics/math/matrix_vector.hpp | 2 +- src/math_physics/math/matrix_vector_template_functions.hpp | 2 +- src/math_physics/math/ordinary_differential_equation.hpp | 2 +- .../math/ordinary_differential_equation_template_functions.hpp | 2 +- src/math_physics/math/quaternion.cpp | 2 +- src/math_physics/math/quaternion.hpp | 2 +- src/math_physics/math/s2e_math.cpp | 2 +- src/math_physics/math/s2e_math.hpp | 2 +- src/math_physics/math/vector.cpp | 2 +- src/math_physics/math/vector.hpp | 2 +- src/math_physics/math/vector_template_functions.hpp | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/math_physics/math/constants.hpp b/src/math_physics/math/constants.hpp index 998b265fd..bcae848b9 100644 --- a/src/math_physics/math/constants.hpp +++ b/src/math_physics/math/constants.hpp @@ -8,7 +8,7 @@ #include // std::is_floating_point_v -namespace libra { +namespace math // instead of C++20 std::numbers inline namespace numbers { diff --git a/src/math_physics/math/interpolation.cpp b/src/math_physics/math/interpolation.cpp index c787d98f5..33cb52bd5 100644 --- a/src/math_physics/math/interpolation.cpp +++ b/src/math_physics/math/interpolation.cpp @@ -7,7 +7,7 @@ #include -namespace libra { +namespace math double Interpolation::CalcPolynomial(const double x) const { // Search nearest point diff --git a/src/math_physics/math/interpolation.hpp b/src/math_physics/math/interpolation.hpp index ef71186b4..166498ebd 100644 --- a/src/math_physics/math/interpolation.hpp +++ b/src/math_physics/math/interpolation.hpp @@ -9,7 +9,7 @@ #include #include -namespace libra { +namespace math /** * @class Interpolation diff --git a/src/math_physics/math/matrix.hpp b/src/math_physics/math/matrix.hpp index 4b9f6b91f..c54052475 100644 --- a/src/math_physics/math/matrix.hpp +++ b/src/math_physics/math/matrix.hpp @@ -9,7 +9,7 @@ #include // for size_t #include // for ostream, cout -namespace libra { +namespace math /** * @class Matrix diff --git a/src/math_physics/math/matrix_template_functions.hpp b/src/math_physics/math/matrix_template_functions.hpp index a31c74a35..521114e3d 100644 --- a/src/math_physics/math/matrix_template_functions.hpp +++ b/src/math_physics/math/matrix_template_functions.hpp @@ -9,7 +9,7 @@ #include #include // for cout -namespace libra { +namespace math template Matrix::Matrix(const T& n) { diff --git a/src/math_physics/math/matrix_vector.hpp b/src/math_physics/math/matrix_vector.hpp index 5e932fbb3..1ee34c228 100644 --- a/src/math_physics/math/matrix_vector.hpp +++ b/src/math_physics/math/matrix_vector.hpp @@ -9,7 +9,7 @@ #include "matrix.hpp" #include "vector.hpp" -namespace libra { +namespace math /** * @fn operator* diff --git a/src/math_physics/math/matrix_vector_template_functions.hpp b/src/math_physics/math/matrix_vector_template_functions.hpp index 5955dad48..b1229fae5 100644 --- a/src/math_physics/math/matrix_vector_template_functions.hpp +++ b/src/math_physics/math/matrix_vector_template_functions.hpp @@ -8,7 +8,7 @@ #include // for invalid_argument. -namespace libra { +namespace math template Vector operator*(const Matrix& matrix, const Vector& vector) { diff --git a/src/math_physics/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp index 4ac81717b..87fb1fe84 100644 --- a/src/math_physics/math/ordinary_differential_equation.hpp +++ b/src/math_physics/math/ordinary_differential_equation.hpp @@ -8,7 +8,7 @@ #include "./vector.hpp" -namespace libra { +namespace math /** * @class OrdinaryDifferentialEquation diff --git a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp index 644a77589..9ba56d399 100644 --- a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp +++ b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp @@ -5,7 +5,7 @@ #ifndef S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ #define S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ -namespace libra { +namespace math template OrdinaryDifferentialEquation::OrdinaryDifferentialEquation(double step_width_s) diff --git a/src/math_physics/math/quaternion.cpp b/src/math_physics/math/quaternion.cpp index a6b398a1c..512fff855 100644 --- a/src/math_physics/math/quaternion.cpp +++ b/src/math_physics/math/quaternion.cpp @@ -9,7 +9,7 @@ #include #include -namespace libra { +namespace math Quaternion::Quaternion(const Vector<3>& rotation_axis, const double rotation_angle_rad) { double half_rotation_angle_rad = rotation_angle_rad * 0.5; diff --git a/src/math_physics/math/quaternion.hpp b/src/math_physics/math/quaternion.hpp index e49722e64..c22cb7c66 100644 --- a/src/math_physics/math/quaternion.hpp +++ b/src/math_physics/math/quaternion.hpp @@ -9,7 +9,7 @@ #include "matrix.hpp" #include "vector.hpp" -namespace libra { +namespace math /** * @class Quaternion diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index 7ae8f5777..916a3e6b5 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -7,7 +7,7 @@ #include -namespace libra { +namespace math double WrapTo2Pi(const double angle_rad) { double angle_out = angle_rad; if (angle_out < 0.0) { diff --git a/src/math_physics/math/s2e_math.hpp b/src/math_physics/math/s2e_math.hpp index b2095ad21..d235bb023 100644 --- a/src/math_physics/math/s2e_math.hpp +++ b/src/math_physics/math/s2e_math.hpp @@ -8,7 +8,7 @@ #include -namespace libra { +namespace math /** * @fn WrapTo2Pi diff --git a/src/math_physics/math/vector.cpp b/src/math_physics/math/vector.cpp index bd4f3501f..cde34ea28 100644 --- a/src/math_physics/math/vector.cpp +++ b/src/math_physics/math/vector.cpp @@ -7,7 +7,7 @@ #include "constants.hpp" -namespace libra { +namespace math Vector<3, double> ConvertFrameOrthogonal2Polar(const Vector<3, double>& orthogonal) { Vector<3, double> polar; // vector on the polar coordinate polar.FillUp(0.0); diff --git a/src/math_physics/math/vector.hpp b/src/math_physics/math/vector.hpp index 5901c34c4..08870ac7b 100644 --- a/src/math_physics/math/vector.hpp +++ b/src/math_physics/math/vector.hpp @@ -12,7 +12,7 @@ #define dot InnerProduct #define cross OuterProduct -namespace libra { +namespace math /** * @class Vector * @brief Class for mathematical vector diff --git a/src/math_physics/math/vector_template_functions.hpp b/src/math_physics/math/vector_template_functions.hpp index 4706eab2a..065ab4c1e 100644 --- a/src/math_physics/math/vector_template_functions.hpp +++ b/src/math_physics/math/vector_template_functions.hpp @@ -8,7 +8,7 @@ #include -namespace libra { +namespace math template Vector::Vector(const T& n) { From 09020aa3442c887b0a1c6a38ae48b114c72af2da Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:20:44 +0900 Subject: [PATCH 220/456] Replace libra::Matrix to math::Matrix --- src/components/base/sensor.hpp | 4 +- .../base/sensor_template_functions.hpp | 4 +- .../examples/example_change_structure.cpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 8 +-- src/components/real/aocs/magnetorquer.hpp | 6 +-- .../aocs/mtq_magnetometer_interference.cpp | 2 +- .../aocs/mtq_magnetometer_interference.hpp | 2 +- src/components/real/mission/telescope.cpp | 2 +- src/disturbances/air_drag.cpp | 2 +- src/disturbances/geopotential.cpp | 4 +- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 4 +- src/dynamics/attitude/attitude.cpp | 6 +-- src/dynamics/attitude/attitude.hpp | 8 +-- src/dynamics/attitude/attitude_rk4.cpp | 4 +- src/dynamics/attitude/attitude_rk4.hpp | 6 +-- .../attitude_with_cantilever_vibration.cpp | 10 ++-- .../attitude_with_cantilever_vibration.hpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 16 +++--- src/dynamics/attitude/controlled_attitude.hpp | 4 +- src/dynamics/attitude/initialize_attitude.cpp | 4 +- src/dynamics/attitude/initialize_attitude.hpp | 2 +- ...ode_attitude_with_cantilever_vibration.hpp | 24 ++++----- src/dynamics/orbit/orbit.cpp | 4 +- src/dynamics/orbit/relative_orbit.hpp | 4 +- src/environment/global/earth_rotation.cpp | 34 ++++++------ src/environment/global/earth_rotation.hpp | 16 +++--- src/environment/global/moon_rotation.hpp | 4 +- src/logger/log_utility.hpp | 4 +- .../geodesy/geodetic_position.cpp | 2 +- .../gravity/gravity_potential.cpp | 4 +- .../gravity/gravity_potential.hpp | 2 +- .../gravity/test_gravity_potential.cpp | 12 ++--- src/math_physics/math/test_matrix.cpp | 54 +++++++++---------- src/math_physics/math/test_matrix_vector.cpp | 6 +-- src/math_physics/math/test_quaternion.cpp | 4 +- src/math_physics/orbit/kepler_orbit.cpp | 8 +-- src/math_physics/orbit/kepler_orbit.hpp | 2 +- .../orbit/relative_orbit_models.cpp | 8 +-- .../orbit/relative_orbit_models.hpp | 4 +- .../moon_rotation_utilities.cpp | 14 ++--- .../moon_rotation_utilities.hpp | 6 +-- .../ground_station/ground_station.cpp | 2 +- .../structure/initialize_structure.cpp | 2 +- .../structure/kinematics_parameters.cpp | 2 +- .../structure/kinematics_parameters.hpp | 8 +-- 47 files changed, 168 insertions(+), 168 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 66b1bb1ce..df7d67baf 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -31,7 +31,7 @@ class Sensor { * @param [in] random_walk_standard_deviation_c: Standard deviation of random wark at the component frame * @param [in] random_walk_limit_c: Limit of random walk at the component frame */ - Sensor(const libra::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, + Sensor(const math::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, const libra::Vector& bias_noise_c, const libra::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c, const libra::Vector& random_walk_limit_c); /** @@ -52,7 +52,7 @@ class Sensor { libra::Vector Measure(const libra::Vector true_value_c); private: - libra::Matrix scale_factor_; //!< Scale factor matrix + math::Matrix scale_factor_; //!< Scale factor matrix libra::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame libra::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame libra::NormalRand normal_random_noise_c_[N]; //!< Normal random diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index e7c66b7d7..305b066f5 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -10,7 +10,7 @@ #include template -Sensor::Sensor(const libra::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, +Sensor::Sensor(const math::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, const libra::Vector& bias_noise_c, const libra::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c, const libra::Vector& random_walk_limit_c) @@ -82,7 +82,7 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w libra::Vector scale_factor_vector; ini_file.ReadVector(section.c_str(), "scale_factor_c", scale_factor_vector); - libra::Matrix scale_factor_c; + math::Matrix scale_factor_c; if (scale_factor_vector.CalcNorm() == 0.0) { scale_factor_c = libra::MakeIdentityMatrix(); } else { diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index 21bc129d0..87e589700 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -35,7 +35,7 @@ void ExampleChangeStructure::MainRoutine(const int time_count) { structure_->GetToSetSurfaces()[0].SetArea_m2(0.5); // Inertia Tensor - libra::Matrix<3, 3> inertia_tensor_b_kgm2(0.0); + math::Matrix<3, 3> inertia_tensor_b_kgm2(0.0); inertia_tensor_b_kgm2[0][0] = 0.2; inertia_tensor_b_kgm2[1][1] = 0.2; inertia_tensor_b_kgm2[2][2] = 0.2; diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 135a3782f..c727f91d7 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -12,7 +12,7 @@ #include Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, - const libra::Matrix& scale_factor, + const math::Matrix& scale_factor, const libra::Vector& max_magnetic_moment_c_Am2, const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, @@ -34,7 +34,7 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, } Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const libra::Matrix& scale_factor, + const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const libra::Vector& max_magnetic_moment_c_Am2, const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, @@ -123,7 +123,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, libra::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); - libra::Matrix scale_factor; + math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { for (size_t j = 0; j < kMtqDimension; j++) { scale_factor[i][j] = sf_vec[i * kMtqDimension + j]; @@ -168,7 +168,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_ libra::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); - libra::Matrix scale_factor; + math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { for (size_t j = 0; j < kMtqDimension; j++) { scale_factor[i][j] = sf_vec[i * kMtqDimension + j]; diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 8a8bbc1a7..541466933 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -42,7 +42,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, - const libra::Matrix& scale_factor, const libra::Vector& max_magnetic_moment_c_Am2, + const math::Matrix& scale_factor, const libra::Vector& max_magnetic_moment_c_Am2, const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, const libra::Vector& random_walk_limit_c_Am2, @@ -66,7 +66,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const libra::Matrix& scale_factor, + const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const libra::Vector& max_magnetic_moment_c_Am2, const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, const libra::Vector& random_walk_limit_c_Am2, @@ -128,7 +128,7 @@ class Magnetorquer : public Component, public ILoggable { libra::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame libra::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame - libra::Matrix scale_factor_; //!< Scale factor matrix + math::Matrix scale_factor_; //!< Scale factor matrix libra::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] libra::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index 617cec6d3..8c3b5ae8d 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -19,7 +19,7 @@ MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_ for (size_t degree = 1; degree <= polynomial_degree_; degree++) { const std::string key_name = "additional_bias_by_mtq_coefficients_" + std::to_string(static_cast(degree)); libra::Vector<9> additional_bias_by_mtq_coefficients_vec; - libra::Matrix<3, 3> additional_bias_by_mtq_coefficients; + math::Matrix<3, 3> additional_bias_by_mtq_coefficients; ini_file.ReadVector(section.c_str(), key_name.c_str(), additional_bias_by_mtq_coefficients_vec); for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index 5afe4a54e..10d48a88e 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -31,7 +31,7 @@ class MtqMagnetometerInterference { protected: size_t polynomial_degree_; //!< Polynomial degree - std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise + std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise libra::Vector<3> previous_added_bias_c_nT_{0.0}; Magnetometer& magnetometer_; //!< Magnetometer diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 6112d2def..3652e6895 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -176,7 +176,7 @@ void Telescope::ObserveGroundPositionDeviation() { Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); libra::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); libra::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); - libra::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); libra::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); libra::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); libra::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index c3df5cc19..ed8e274c7 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -26,7 +26,7 @@ AirDrag::AirDrag(const std::vector& surfaces, const libra::Vector<3>& c void AirDrag::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { double air_density_kg_m3 = local_environment.GetAtmosphere().GetAirDensity_kg_m3(); - libra::Matrix<3, 3> dcm_ecef2eci = + math::Matrix<3, 3> dcm_ecef2eci = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); libra::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); libra::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 7be1ceba6..412e0de07 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -83,8 +83,8 @@ void Geopotential::Update(const LocalEnvironment &local_environment, const Dynam UNUSED(time_ms_); #endif - libra::Matrix<3, 3> trans_eci2ecef_ = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef(); - libra::Matrix<3, 3> trans_ecef2eci = trans_eci2ecef_.Transpose(); + math::Matrix<3, 3> trans_eci2ecef_ = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef(); + math::Matrix<3, 3> trans_ecef2eci = trans_eci2ecef_.Transpose(); acceleration_i_m_s2_ = trans_ecef2eci * acceleration_ecef_m_s2_; } diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index d59c02dbd..17daa5ba5 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -24,7 +24,7 @@ void GravityGradient::Update(const LocalEnvironment& local_environment, const Dy } libra::Vector<3> GravityGradient::CalcTorque_b_Nm(const libra::Vector<3> earth_position_from_sc_b_m, - const libra::Matrix<3, 3> inertia_tensor_b_kgm2) { + const math::Matrix<3, 3> inertia_tensor_b_kgm2) { double r_norm_m = earth_position_from_sc_b_m.CalcNorm(); libra::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector u_b /= r_norm_m; diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index c43b328e8..327c4873e 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -65,7 +65,7 @@ class GravityGradient : public Disturbance { * @param [in] inertia_tensor_b_kgm2: Inertia Tensor at body frame [kg*m^2] * @return Calculated torque at body frame [Nm] */ - libra::Vector<3> CalcTorque_b_Nm(const libra::Vector<3> earth_position_from_sc_b_m, const libra::Matrix<3, 3> inertia_tensor_b_kgm2); + libra::Vector<3> CalcTorque_b_Nm(const libra::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2); }; /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 8de4db364..a794f8c71 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -88,7 +88,7 @@ bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { void LunarGravityField::Update(const LocalEnvironment &local_environment, const Dynamics &dynamics) { const CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); - libra::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); + math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); libra::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); libra::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; @@ -107,7 +107,7 @@ void LunarGravityField::Update(const LocalEnvironment &local_environment, const UNUSED(time_ms_); #endif - libra::Matrix<3, 3> dcm_mcmf2i = dcm_mci2mcmf_.Transpose(); + math::Matrix<3, 3> dcm_mcmf2i = dcm_mci2mcmf_.Transpose(); acceleration_i_m_s2_ = dcm_mcmf2i * acceleration_mcmf_m_s2_; } diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 505f081c9..fb3621da0 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -6,7 +6,7 @@ #include -Attitude::Attitude(const libra::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) +Attitude::Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { angular_velocity_b_rad_s_ = libra::Vector<3>(0.0); quaternion_i2b_ = libra::Quaternion(0.0, 0.0, 0.0, 1.0); @@ -57,8 +57,8 @@ void Attitude::CalcAngularMomentum(void) { kinetic_energy_J_ = 0.5 * libra::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } -libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { - libra::Matrix<4, 4> angular_velocity_matrix; +math::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { + math::Matrix<4, 4> angular_velocity_matrix; angular_velocity_matrix[0][0] = 0.0f; angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 94f63d882..1ff73967b 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -23,7 +23,7 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Constructor * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - Attitude(const libra::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name = "attitude"); + Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name = "attitude"); /** * @fn ~Attitude * @brief Destructor @@ -60,7 +60,7 @@ class Attitude : public ILoggable, public SimulationObject { * @fn GetInertiaTensor_b_kgm2 * @brief Return inertia tensor [kg m^2] */ - inline libra::Matrix<3, 3> GetInertiaTensor_b_kgm2() const { return inertia_tensor_kgm2_; } + inline math::Matrix<3, 3> GetInertiaTensor_b_kgm2() const { return inertia_tensor_kgm2_; } // Setter /** @@ -119,7 +119,7 @@ class Attitude : public ILoggable, public SimulationObject { libra::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] libra::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame libra::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] - const libra::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] + const math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] libra::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] libra::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] @@ -140,6 +140,6 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Generate angular velocity matrix for kinematics calculation * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] */ -libra::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); +math::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 1c2b9c838..d92a34e31 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -10,7 +10,7 @@ #include AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; @@ -39,7 +39,7 @@ void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator void AttitudeRk4::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - libra::Matrix<3, 3> dot_inertia_tensor = + math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); torque_inertia_tensor_change_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 2b754cbc7..1898d4355 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -25,7 +25,7 @@ class AttitudeRk4 : public Attitude { * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 @@ -49,8 +49,8 @@ class AttitudeRk4 : public Attitude { private: double current_propagation_time_s_; //!< current time [sec] - libra::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor - libra::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] + math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor + math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] /** diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 9c4f339f4..20aa3f234 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -9,8 +9,8 @@ #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( - const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, - const libra::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, + const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), @@ -30,7 +30,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( double spring_coefficient = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); attitude_ode_.SetSpringCoefficient(spring_coefficient); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); - libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = + math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2) * inertia_tensor_kgm2_; attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever); attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); @@ -72,9 +72,9 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - libra::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); + math::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); assert(end_time_s - current_propagation_time_s_ > 1e-6); - libra::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); + math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); libra::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index e24f3e489..d917fc1e0 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -32,7 +32,7 @@ class AttitudeWithCantileverVibration : public Attitude { * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ AttitudeWithCantileverVibration(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index a77002962..155445ffc 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -9,7 +9,7 @@ ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const libra::Quaternion quaternion_i2b, const libra::Vector<3> main_target_direction_b, - const libra::Vector<3> sub_target_direction_b, const libra::Matrix<3, 3>& inertia_tensor_kgm2, + const libra::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), @@ -94,7 +94,7 @@ libra::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode m } else if (mode == AttitudeControlMode::kVelocityDirectionPointing) { direction = orbit_->GetVelocity_i_m_s(); } else if (mode == AttitudeControlMode::kGroundSpeedDirectionPointing) { - libra::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + math::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); direction = dcm_ecef2eci * orbit_->GetVelocity_ecef_m_s(); } else if (mode == AttitudeControlMode::kOrbitNormalPointing) { direction = OuterProduct(orbit_->GetPosition_i_m(), orbit_->GetVelocity_i_m_s()); @@ -105,16 +105,16 @@ libra::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode m void ControlledAttitude::PointingControl(const libra::Vector<3> main_direction_i, const libra::Vector<3> sub_direction_i) { // Calc DCM ECI->Target - libra::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); + math::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); // Calc DCM Target->body - libra::Matrix<3, 3> dcm_t2b = CalcDcm(main_target_direction_b_, sub_target_direction_b_); + math::Matrix<3, 3> dcm_t2b = CalcDcm(main_target_direction_b_, sub_target_direction_b_); // Calc DCM ECI->body - libra::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); + math::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); // Convert to Quaternion quaternion_i2b_ = libra::Quaternion::ConvertFromDcm(dcm_i2b); } -libra::Matrix<3, 3> ControlledAttitude::CalcDcm(const libra::Vector<3> main_direction, const libra::Vector<3> sub_direction) { +math::Matrix<3, 3> ControlledAttitude::CalcDcm(const libra::Vector<3> main_direction, const libra::Vector<3> sub_direction) { // Calc basis vectors libra::Vector<3> ex, ey, ez; ex = main_direction; @@ -125,7 +125,7 @@ libra::Matrix<3, 3> ControlledAttitude::CalcDcm(const libra::Vector<3> main_dire ez = tmp3.CalcNormalizedVector(); // Generate DCM - libra::Matrix<3, 3> dcm; + math::Matrix<3, 3> dcm; for (int i = 0; i < 3; i++) { dcm[i][0] = ex[i]; dcm[i][1] = ey[i]; @@ -166,7 +166,7 @@ void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { angular_velocity_b_rad_s_[i] = q_diff[i]; angular_acc_b_rad_s2_[i] = (previous_omega_b_rad_s_[i] - angular_velocity_b_rad_s_[i]) / time_diff_sec; } - libra::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); + math::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); controlled_torque_b_Nm = inv_inertia_tensor * angular_acc_b_rad_s2_; } else { angular_velocity_b_rad_s_ = libra::Vector<3>(0.0); diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index dbc7debe1..c41ff82be 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -56,7 +56,7 @@ class ControlledAttitude : public Attitude { */ ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const libra::Quaternion quaternion_i2b, const libra::Vector<3> main_target_direction_b, const libra::Vector<3> sub_target_direction_b, - const libra::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name = "attitude"); /** * @fn ~ControlledAttitude @@ -146,7 +146,7 @@ class ControlledAttitude : public Attitude { * @param [in] main_direction: Main target direction * @param [in] sub_direction: Sub target direction */ - libra::Matrix<3, 3> CalcDcm(const libra::Vector<3> main_direction, const libra::Vector<3> sub_direction); + math::Matrix<3, 3> CalcDcm(const libra::Vector<3> main_direction, const libra::Vector<3> sub_direction); }; #endif // S2E_DYNAMICS_ATTITUDE_CONTROLLED_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 0f3962b79..daee72780 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -7,7 +7,7 @@ #include Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { + const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); @@ -54,7 +54,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel IniAccess ini_structure(ini_structure_name); const char* section_cantilever = "CANTILEVER_PARAMETERS"; - libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2; + math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; libra::Vector<9> inertia_vec; ini_structure.ReadVector(section_cantilever, "inertia_tensor_cantilever_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index 8d6ec1e5c..f9b1bebd4 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -22,6 +22,6 @@ * @param [in] spacecraft_id: Satellite ID */ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const libra::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); + const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index da10a3e7d..4f6ec3745 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -135,22 +135,22 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn GetInverseInertiaTensor * @brief Get inverse of inertia tensor */ - inline libra::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } + inline math::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } /** * @fn GetPreviousInertiaTensor_kgm2 * @brief Get previous inertia tensor [kgm2] */ - inline libra::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } + inline math::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } /** * @fn GetInertiaTensorCantilever_kgm2 * @brief Get inertia tensor of the cantilever [kgm2] */ - inline libra::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } + inline math::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } /** * @fn GetInverseEquivalentInertiaTensorCantilever * @brief Get inverse of inertia tensor of the cantilever */ - inline libra::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } + inline math::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } // Setter /** @@ -186,26 +186,26 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn SetInverseInertiaTensor * @brief Set inverse of inertia tensor */ - inline void SetInverseInertiaTensor(const libra::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } + inline void SetInverseInertiaTensor(const math::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } /** * @fn SetPreviousInertiaTensor_kgm2 * @brief Set previous inertia tensor [kgm2] */ - inline void SetPreviousInertiaTensor_kgm2(const libra::Matrix<3, 3> previous_inertia_tensor_kgm2) { + inline void SetPreviousInertiaTensor_kgm2(const math::Matrix<3, 3> previous_inertia_tensor_kgm2) { previous_inertia_tensor_kgm2_ = previous_inertia_tensor_kgm2; } /** * @fn SetInertiaTensorCantilever_kgm2 * @brief Set inertia tensor of the cantilever [kgm2] */ - inline void SetInertiaTensorCantilever_kgm2(const libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { + inline void SetInertiaTensorCantilever_kgm2(const math::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; } /** * @fn SetInverseEquivalentInertiaTensorCantilever * @brief Set inverse of inertia tensor of the cantilever */ - inline void SetInverseEquivalentInertiaTensorCantilever(const libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { + inline void SetInverseEquivalentInertiaTensorCantilever(const math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { inverse_equivalent_inertia_tensor_cantilever_ = inverse_equivalent_inertia_tensor_cantilever; } @@ -215,10 +215,10 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { libra::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] libra::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] libra::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] - libra::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor - libra::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] - libra::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] - libra::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever + math::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor + math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] + math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] + math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; } // namespace libra::numerical_integration diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index 80a03d6a0..ca204c69f 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -13,7 +13,7 @@ libra::Quaternion Orbit::CalcQuaternion_i2lvlh() const { libra::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); libra::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); - libra::Matrix<3, 3> dcm_i2lvlh; + math::Matrix<3, 3> dcm_i2lvlh; dcm_i2lvlh[0][0] = lvlh_ex[0]; dcm_i2lvlh[0][1] = lvlh_ex[1]; dcm_i2lvlh[0][2] = lvlh_ex[2]; @@ -29,7 +29,7 @@ libra::Quaternion Orbit::CalcQuaternion_i2lvlh() const { } void Orbit::TransformEciToEcef(void) { - libra::Matrix<3, 3> dcm_i_to_xcxf = celestial_information_->GetEarthRotation().GetDcmJ2000ToEcef(); + math::Matrix<3, 3> dcm_i_to_xcxf = celestial_information_->GetEarthRotation().GetDcmJ2000ToEcef(); spacecraft_position_ecef_m_ = dcm_i_to_xcxf * spacecraft_position_i_m_; // convert velocity vector in ECI to the vector in ECEF diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index f7445d101..79b016d3e 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -73,8 +73,8 @@ class RelativeOrbit : public Orbit, public libra::OrdinaryDifferentialEquation<6 double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 [sec] double propagation_step_s_; //!< Step width for RK4 [sec] - libra::Matrix<6, 6> system_matrix_; //!< System matrix - libra::Matrix<6, 6> stm_; //!< State transition matrix + math::Matrix<6, 6> system_matrix_; //!< System matrix + math::Matrix<6, 6> stm_; //!< State transition matrix libra::Vector<6> initial_state_; //!< Initial state (Position and Velocity) libra::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 569c4a293..c7550537d 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -125,10 +125,10 @@ void EarthRotation::Update(const double julian_date) { terrestrial_time_julian_century[i + 1] = terrestrial_time_julian_century[i] * terrestrial_time_julian_century[0]; } - libra::Matrix<3, 3> dcm_precession; - libra::Matrix<3, 3> dcm_nutation; - libra::Matrix<3, 3> dcm_rotation; - libra::Matrix<3, 3> dcm_polar_motion; + math::Matrix<3, 3> dcm_precession; + math::Matrix<3, 3> dcm_nutation; + math::Matrix<3, 3> dcm_rotation; + math::Matrix<3, 3> dcm_polar_motion; // Nutation + Precession dcm_precession = Precession(terrestrial_time_julian_century); dcm_nutation = Nutation(terrestrial_time_julian_century); // epsilon_rad_, d_epsilon_rad_, d_psi_rad_ are updated in this procedure @@ -154,9 +154,9 @@ void EarthRotation::Update(const double julian_date) { } } -libra::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return libra::MakeRotationMatrixZ(gast_rad); } +math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return libra::MakeRotationMatrixZ(gast_rad); } -libra::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { +math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { // Mean obliquity of the ecliptic epsilon_rad_ = c_epsilon_rad_[0]; for (int i = 0; i < 3; i++) { @@ -208,17 +208,17 @@ libra::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { c_d_epsilon_rad_[7] * cos(2 * l_rad + lm_rad) + c_d_epsilon_rad_[8] * cos(2 * ld_rad - ls_rad); double epsi_mod_rad = epsilon_rad_ + d_epsilon_rad_; - libra::Matrix<3, 3> x_epsi_1st = libra::MakeRotationMatrixX(epsilon_rad_); - libra::Matrix<3, 3> z_d_psi = libra::MakeRotationMatrixZ(-d_psi_rad_); - libra::Matrix<3, 3> x_epsi_2nd = libra::MakeRotationMatrixX(-epsi_mod_rad); + math::Matrix<3, 3> x_epsi_1st = libra::MakeRotationMatrixX(epsilon_rad_); + math::Matrix<3, 3> z_d_psi = libra::MakeRotationMatrixZ(-d_psi_rad_); + math::Matrix<3, 3> x_epsi_2nd = libra::MakeRotationMatrixX(-epsi_mod_rad); - libra::Matrix<3, 3> dcm_nutation; + math::Matrix<3, 3> dcm_nutation; dcm_nutation = x_epsi_2nd * z_d_psi * x_epsi_1st; return dcm_nutation; } -libra::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { +math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { // Compute precession angles(zeta, theta, z) double zeta_rad = 0.0; for (int i = 0; i < 3; i++) { @@ -234,18 +234,18 @@ libra::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { } // Develop transformation matrix - libra::Matrix<3, 3> z_zeta = libra::MakeRotationMatrixZ(-zeta_rad); - libra::Matrix<3, 3> y_theta = libra::MakeRotationMatrixY(theta_rad); - libra::Matrix<3, 3> z_z = libra::MakeRotationMatrixZ(-z_rad); + math::Matrix<3, 3> z_zeta = libra::MakeRotationMatrixZ(-zeta_rad); + math::Matrix<3, 3> y_theta = libra::MakeRotationMatrixY(theta_rad); + math::Matrix<3, 3> z_z = libra::MakeRotationMatrixZ(-z_rad); - libra::Matrix<3, 3> dcm_precession; + math::Matrix<3, 3> dcm_precession; dcm_precession = z_z * y_theta * z_zeta; return dcm_precession; } -libra::Matrix<3, 3> EarthRotation::PolarMotion(const double x_p, const double y_p) { - libra::Matrix<3, 3> dcm_polar_motion; +math::Matrix<3, 3> EarthRotation::PolarMotion(const double x_p, const double y_p) { + math::Matrix<3, 3> dcm_polar_motion; dcm_polar_motion[0][0] = 1.0; dcm_polar_motion[0][1] = 0.0; diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index 118e55818..2376ff434 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -45,20 +45,20 @@ class EarthRotation { * @fn GetDcmJ2000ToEcef * @brief Return the DCM between J2000 inertial frame and the Earth Centered Earth Fixed frame */ - inline const libra::Matrix<3, 3> GetDcmJ2000ToEcef() const { return dcm_j2000_to_ecef_; }; + inline const math::Matrix<3, 3> GetDcmJ2000ToEcef() const { return dcm_j2000_to_ecef_; }; /** * @fn GetDcmTemeToEcef * @brief Return the DCM between TEME (Inertial frame used in SGP4) and the Earth Centered Earth Fixed frame */ - inline const libra::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; + inline const math::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; private: double d_psi_rad_; //!< Nutation in obliquity [rad] double d_epsilon_rad_; //!< Nutation in longitude [rad] double epsilon_rad_; //!< Mean obliquity of the ecliptic [rad] - libra::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF - libra::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF + math::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF + math::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF EarthRotationMode rotation_mode_; //!< Designation of dynamics model // Definitions of coefficients @@ -94,7 +94,7 @@ class EarthRotation { * @param [in] gast_rad: Greenwich 'Apparent' Sidereal Time [rad] * @return Rotation matrix */ - libra::Matrix<3, 3> AxialRotation(const double gast_rad); + math::Matrix<3, 3> AxialRotation(const double gast_rad); /** * @fn Nutation @@ -102,7 +102,7 @@ class EarthRotation { * @param [in] t_tt_century: nth power of julian century for terrestrial time * @return Rotation matrix */ - libra::Matrix<3, 3> Nutation(const double (&t_tt_century)[4]); + math::Matrix<3, 3> Nutation(const double (&t_tt_century)[4]); /** * @fn Precession @@ -110,14 +110,14 @@ class EarthRotation { * @param [in] t_tt_century: nth power of julian century for terrestrial time * @return Rotation matrix */ - libra::Matrix<3, 3> Precession(const double (&t_tt_century)[4]); + math::Matrix<3, 3> Precession(const double (&t_tt_century)[4]); /** * @fn PolarMotion * @brief Calculate movement of the coordinate axes due to Polar Motion * @note Currently, this function is not used. */ - libra::Matrix<3, 3> PolarMotion(const double x_p, const double y_p); + math::Matrix<3, 3> PolarMotion(const double x_p, const double y_p); }; EarthRotationMode ConvertEarthRotationMode(const std::string mode); diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index 754f6fde4..ba4fb2947 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -53,11 +53,11 @@ class MoonRotation { * @brief Return the DCM between J2000 inertial frame and the Moon Centered Moon Fixed frame * @note Because this is just a DCM, users need to consider the origin of the vector, which you want to convert with this matrix. */ - inline const libra::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; + inline const math::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; private: MoonRotationMode mode_; //!< Rotation mode - libra::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) + math::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) const CelestialInformation &celestial_information_; //!< Celestial Information to get moon orbit }; diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index c47e373cd..4b5a18e31 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -52,7 +52,7 @@ inline std::string WriteVector(const std::string name, const std::string frame, * @param [in] matrix: matrix value */ template -inline std::string WriteMatrix(const libra::Matrix matrix, const int precision = 6); +inline std::string WriteMatrix(const math::Matrix matrix, const int precision = 6); /** * @fn WriteMatrix * @brief Write header for matrix value @@ -115,7 +115,7 @@ std::string WriteVector(const std::string name, const std::string frame, const s } template -std::string WriteMatrix(const libra::Matrix matrix, const int precision) { +std::string WriteMatrix(const math::Matrix matrix, const int precision) { std::stringstream str_tmp; for (size_t n = 0; n < ROW; n++) { diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index cd491b920..7ca1051ee 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -70,7 +70,7 @@ libra::Vector<3> GeodeticPosition::CalcEcefPosition() const { } void GeodeticPosition::CalcQuaternionXcxfToLtc() { - libra::Matrix<3, 3> dcm_xcxf_to_ltc; + math::Matrix<3, 3> dcm_xcxf_to_ltc; dcm_xcxf_to_ltc[0][0] = -sin(longitude_rad_); dcm_xcxf_to_ltc[0][1] = cos(longitude_rad_); dcm_xcxf_to_ltc[0][2] = 0; diff --git a/src/math_physics/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp index 895273523..c784dc1a6 100644 --- a/src/math_physics/gravity/gravity_potential.cpp +++ b/src/math_physics/gravity/gravity_potential.cpp @@ -93,8 +93,8 @@ libra::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const libra::Vecto return acceleration_xcxf_m_s2; } -libra::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const libra::Vector<3> &position_xcxf_m) { - libra::Matrix<3, 3> partial_derivative(0.0); +math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const libra::Vector<3> &position_xcxf_m) { + math::Matrix<3, 3> partial_derivative(0.0); if (degree_ <= 0) return partial_derivative; xcxf_x_m_ = position_xcxf_m[0]; diff --git a/src/math_physics/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp index 37af3c634..b0cc45f7f 100644 --- a/src/math_physics/gravity/gravity_potential.hpp +++ b/src/math_physics/gravity/gravity_potential.hpp @@ -54,7 +54,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Partial derivative of acceleration in XCXF frame [-/s2] */ - libra::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const libra::Vector<3> &position_xcxf_m); + math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const libra::Vector<3> &position_xcxf_m); private: size_t degree_ = 0; //!< Maximum degree diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index 47b745788..ea0539511 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -66,7 +66,7 @@ TEST(GravityPotential, PartialDerivative1) { // Calculation check libra::Vector<3> position_xcxf_m; - libra::Matrix<3, 3> partial_derivative_xcxf_s2; + math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -77,7 +77,7 @@ TEST(GravityPotential, PartialDerivative1) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - libra::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { libra::Vector<3> position_1_xcxf_m = position_xcxf_m; libra::Vector<3> position_2_xcxf_m = position_xcxf_m; @@ -92,7 +92,7 @@ TEST(GravityPotential, PartialDerivative1) { } // Compare numerical and analytical calculation - libra::Matrix<3, 3> diff; + math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); @@ -119,7 +119,7 @@ TEST(GravityPotential, PartialDerivative2) { // Calculation check libra::Vector<3> position_xcxf_m; - libra::Matrix<3, 3> partial_derivative_xcxf_s2; + math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -130,7 +130,7 @@ TEST(GravityPotential, PartialDerivative2) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - libra::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { libra::Vector<3> position_1_xcxf_m = position_xcxf_m; libra::Vector<3> position_2_xcxf_m = position_xcxf_m; @@ -145,7 +145,7 @@ TEST(GravityPotential, PartialDerivative2) { } // Compare numerical and analytical calculation - libra::Matrix<3, 3> diff; + math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); diff --git a/src/math_physics/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp index 87080d601..1db12d6cd 100644 --- a/src/math_physics/math/test_matrix.cpp +++ b/src/math_physics/math/test_matrix.cpp @@ -14,7 +14,7 @@ TEST(Matrix, ConstructorWithNumber) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - libra::Matrix m(initialize_value); + math::Matrix m(initialize_value); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -30,7 +30,7 @@ TEST(Matrix, ConstructorWithNumber) { TEST(Matrix, GetLength) { const size_t R = 6; const size_t C = 3; - libra::Matrix m; + math::Matrix m; EXPECT_EQ(R, m.GetRowLength()); EXPECT_EQ(C, m.GetColumnLength()); @@ -43,8 +43,8 @@ TEST(Matrix, OperatorPlusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - libra::Matrix m(initialize_value); - libra::Matrix adding; + math::Matrix m(initialize_value); + math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -71,8 +71,8 @@ TEST(Matrix, OperatorMinusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - libra::Matrix m(initialize_value); - libra::Matrix subtracting; + math::Matrix m(initialize_value); + math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -99,7 +99,7 @@ TEST(Matrix, OperatorMultiplyEqual) { const size_t R = 6; const size_t C = 3; - libra::Matrix m; + math::Matrix m; double multiplying = 2.0; for (size_t r = 0; r < R; r++) { @@ -125,7 +125,7 @@ TEST(Matrix, OperatorDivideEqual) { const size_t R = 6; const size_t C = 3; - libra::Matrix m; + math::Matrix m; double dividing = 2.0; for (size_t r = 0; r < R; r++) { @@ -152,7 +152,7 @@ TEST(Matrix, FillUp) { const size_t C = 3; double value = 3.0; - libra::Matrix m; + math::Matrix m; m.FillUp(value); @@ -169,7 +169,7 @@ TEST(Matrix, FillUp) { */ TEST(Matrix, CalcTrace) { const size_t N = 6; - libra::Matrix m; + math::Matrix m; for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -201,8 +201,8 @@ TEST(Matrix, OperatorPlus) { const size_t R = 6; const size_t C = 3; double initialize_value = -2.0; - libra::Matrix m(initialize_value); - libra::Matrix adding; + math::Matrix m(initialize_value); + math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -210,7 +210,7 @@ TEST(Matrix, OperatorPlus) { } } - libra::Matrix added = m + adding; + math::Matrix added = m + adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -230,8 +230,8 @@ TEST(Matrix, OperatorMinus) { const size_t R = 6; const size_t C = 3; double initialize_value = 0.6; - libra::Matrix m(initialize_value); - libra::Matrix subtracting; + math::Matrix m(initialize_value); + math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -239,7 +239,7 @@ TEST(Matrix, OperatorMinus) { } } - libra::Matrix subtracted = m - subtracting; + math::Matrix subtracted = m - subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -259,7 +259,7 @@ TEST(Matrix, OperatorMultiplyScalar) { const size_t R = 6; const size_t C = 3; - libra::Matrix m; + math::Matrix m; double multiplying = 0.3; for (size_t r = 0; r < R; r++) { @@ -268,7 +268,7 @@ TEST(Matrix, OperatorMultiplyScalar) { } } - libra::Matrix subtracted = multiplying * m; + math::Matrix subtracted = multiplying * m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -287,8 +287,8 @@ TEST(Matrix, OperatorMultiplyMatrix) { const size_t R = 2; const size_t C = 3; - libra::Matrix a; - libra::Matrix b; + math::Matrix a; + math::Matrix b; a[0][0] = 1.0; a[0][1] = 2.0; @@ -304,7 +304,7 @@ TEST(Matrix, OperatorMultiplyMatrix) { b[2][0] = 5.0; b[2][1] = 6.0; - libra::Matrix result = a * b; + math::Matrix result = a * b; EXPECT_DOUBLE_EQ(22.0, result[0][0]); EXPECT_DOUBLE_EQ(28.0, result[0][1]); @@ -319,14 +319,14 @@ TEST(Matrix, Transpose) { const size_t R = 6; const size_t C = 3; - libra::Matrix m; + math::Matrix m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { m[r][c] = r * c; } } - libra::Matrix transposed = m.Transpose(); + math::Matrix transposed = m.Transpose(); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -344,7 +344,7 @@ TEST(Matrix, Transpose) { TEST(Matrix, MakeIdentityMatrix) { const size_t N = 6; - libra::Matrix m = libra::MakeIdentityMatrix(); + math::Matrix m = libra::MakeIdentityMatrix(); for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -364,7 +364,7 @@ TEST(Matrix, MakeRotationMatrixX) { const size_t N = 3; double theta_rad = -45.0 * libra::deg_to_rad; - libra::Matrix m = libra::MakeRotationMatrixX(theta_rad); + math::Matrix m = libra::MakeRotationMatrixX(theta_rad); EXPECT_DOUBLE_EQ(1.0, m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -384,7 +384,7 @@ TEST(Matrix, MakeRotationMatrixY) { const size_t N = 3; double theta_rad = 120.0 * libra::deg_to_rad; - libra::Matrix m = libra::MakeRotationMatrixY(theta_rad); + math::Matrix m = libra::MakeRotationMatrixY(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -404,7 +404,7 @@ TEST(Matrix, MakeRotationMatrixZ) { const size_t N = 3; double theta_rad = 30.0 * libra::deg_to_rad; - libra::Matrix m = libra::MakeRotationMatrixZ(theta_rad); + math::Matrix m = libra::MakeRotationMatrixZ(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(sin(theta_rad), m[0][1]); diff --git a/src/math_physics/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp index af17b6fe2..25e9f56c5 100644 --- a/src/math_physics/math/test_matrix_vector.cpp +++ b/src/math_physics/math/test_matrix_vector.cpp @@ -14,7 +14,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { const size_t R = 3; const size_t C = 2; - libra::Matrix m; + math::Matrix m; libra::Vector v; m[0][0] = 1.0; @@ -40,7 +40,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { TEST(MatrixVector, CalcInverseMatrix) { const size_t N = 3; - libra::Matrix m; + math::Matrix m; m[0][0] = 1.0; m[0][1] = 1.0; @@ -52,7 +52,7 @@ TEST(MatrixVector, CalcInverseMatrix) { m[2][1] = -2.0; m[2][2] = 1.0; - libra::Matrix inverse = libra::CalcInverseMatrix(m); + math::Matrix inverse = libra::CalcInverseMatrix(m); EXPECT_NEAR(-1.0, inverse[0][0], 1e-10); EXPECT_NEAR(-1.0, inverse[0][1], 1e-10); diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index 12053cca2..ae66539c8 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -232,7 +232,7 @@ TEST(Quaternion, ConvertToDcmY) { libra::Quaternion q(0.0, 1.0, 0.0, 1.0); q.Normalize(); - libra::Matrix<3, 3> dcm = q.ConvertToDcm(); + math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.0, q[0]); @@ -266,7 +266,7 @@ TEST(Quaternion, ConvertToDcm) { libra::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - libra::Matrix<3, 3> dcm = q.ConvertToDcm(); + math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function const double accuracy = 1.0e-5; diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index 4c2714925..5b6d2622c 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -22,10 +22,10 @@ void KeplerOrbit::CalcConstKeplerMotion() { mean_motion_rad_s_ = sqrt(gravity_constant_m3_s2_ / a_m3); // DCM - libra::Matrix<3, 3> dcm_arg_perigee = libra::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); - libra::Matrix<3, 3> dcm_inclination = libra::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); - libra::Matrix<3, 3> dcm_raan = libra::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); - libra::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; + math::Matrix<3, 3> dcm_arg_perigee = libra::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); + math::Matrix<3, 3> dcm_inclination = libra::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); + math::Matrix<3, 3> dcm_raan = libra::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); + math::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; dcm_inplane_to_i_ = dcm_raan * dcm_inc_arg; } diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index 0d83142eb..7b6697f79 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -60,7 +60,7 @@ class KeplerOrbit { double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] OrbitalElements oe_; //!< Orbital elements double mean_motion_rad_s_; //!< Mean motion of the orbit [rad/s] - libra::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame + math::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame /** * @fn CalcConstKeplerMotion diff --git a/src/math_physics/orbit/relative_orbit_models.cpp b/src/math_physics/orbit/relative_orbit_models.cpp index 95263cd93..e7c83ca9a 100644 --- a/src/math_physics/orbit/relative_orbit_models.cpp +++ b/src/math_physics/orbit/relative_orbit_models.cpp @@ -4,8 +4,8 @@ */ #include "relative_orbit_models.hpp" -libra::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { - libra::Matrix<6, 6> system_matrix; +math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { + math::Matrix<6, 6> system_matrix; double n = sqrt(gravity_constant_m3_s2 / pow(orbit_radius_m, 3)); system_matrix[0][0] = 0.0; @@ -48,8 +48,8 @@ libra::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_c return system_matrix; } -libra::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_s2, double elapsed_time_s) { - libra::Matrix<6, 6> stm; +math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_s2, double elapsed_time_s) { + math::Matrix<6, 6> stm; double n = sqrt(gravity_constant_m3_s2 / pow(orbit_radius_m, 3)); double t = elapsed_time_s; diff --git a/src/math_physics/orbit/relative_orbit_models.hpp b/src/math_physics/orbit/relative_orbit_models.hpp index a77fb5d45..ff120823d 100644 --- a/src/math_physics/orbit/relative_orbit_models.hpp +++ b/src/math_physics/orbit/relative_orbit_models.hpp @@ -29,7 +29,7 @@ enum class StmModel { kHcw = 0 }; * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @return System matrix */ -libra::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const double gravity_constant_m3_s2); +math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const double gravity_constant_m3_s2); // STMs /** @@ -40,6 +40,6 @@ libra::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const doub * @param [in] elapsed_time_s: Elapsed time [s] * @return State Transition Matrix */ -libra::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); +math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); #endif // S2E_LIBRARY_ORBIT_RELATIVE_ORBIT_MODEL_HPP_ diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index e31574783..08f2670a9 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -10,14 +10,14 @@ #include -libra::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { - libra::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); - libra::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); +math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { + math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); + math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); return dcm_me2pa * dcm_eci2me; } -libra::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { +math::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { libra::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); libra::Vector<3> moon_orbit_norm = libra::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); @@ -25,7 +25,7 @@ libra::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_e libra::Vector<3> me_ey_eci = libra::OuterProduct(me_ez_eci, me_ex_eci); - libra::Matrix<3, 3> dcm_eci_to_me; + math::Matrix<3, 3> dcm_eci_to_me; for (size_t i = 0; i < 3; i++) { dcm_eci_to_me[0][i] = me_ex_eci[i]; dcm_eci_to_me[1][i] = me_ey_eci[i]; @@ -35,13 +35,13 @@ libra::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_e return dcm_eci_to_me; } -libra::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { +math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { // The correction values between DE430 Principal Axis and Mean Earth frame const double theta_x_rad = 0.285 * libra::arcsec_to_rad; const double theta_y_rad = 78.580 * libra::arcsec_to_rad; const double theta_z_rad = 67.573 * libra::arcsec_to_rad; - libra::Matrix<3, 3> dcm_me_pa = + math::Matrix<3, 3> dcm_me_pa = libra::MakeRotationMatrixZ(theta_z_rad) * libra::MakeRotationMatrixY(theta_y_rad) * libra::MakeRotationMatrixX(theta_x_rad); return dcm_me_pa; diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index 314bbdaeb..79cc6e6f6 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -18,7 +18,7 @@ * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -libra::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s); +math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmEciToMeanEarth @@ -26,12 +26,12 @@ libra::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_positi * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -libra::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s); +math::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmMeToPrincipalAxis * @brief Calculate DCM from ME (Mean Earth) moon fixed frame to PA (Principal Axis) moon fixed frame */ -libra::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); +math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); #endif // S2E_LIBRARY_PLANET_ROTATION_MOON_MEAN_EARTH_PRINCIPAL_AXIS_FRAME_HPP_ diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 32805e502..cfe2bff44 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -46,7 +46,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con void GroundStation::LogSetup(Logger& logger) { logger.AddLogList(this); } void GroundStation::Update(const EarthRotation& celestial_rotation, const Spacecraft& spacecraft) { - libra::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); + math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); position_i_m_ = dcm_ecef2eci * position_ecef_m_; is_visible_[spacecraft.GetSpacecraftId()] = CalcIsVisible(spacecraft.GetDynamics().GetOrbit().GetPosition_ecef_m()); diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index e1def4ea9..463c06285 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -17,7 +17,7 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { conf.ReadVector(section, "center_of_gravity_b_m", center_of_gravity_b_m); double mass_kg = conf.ReadDouble(section, "mass_kg"); libra::Vector<9> inertia_vec; - libra::Matrix<3, 3> inertia_tensor_b_kgm2; + math::Matrix<3, 3> inertia_tensor_b_kgm2; conf.ReadVector(section, "inertia_tensor_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index bd2cc3346..37cefb0a9 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -5,5 +5,5 @@ #include "kinematics_parameters.hpp" -KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2) +KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index be864b402..91916000b 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -19,7 +19,7 @@ class KinematicsParameters { * @fn KinematicsParameters * @brief Constructor */ - KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, libra::Matrix<3, 3> inertia_tensor_b_kgm2); + KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2); /** * @fn ~KinematicsParameters * @brief Destructor @@ -41,7 +41,7 @@ class KinematicsParameters { * @fn GetInertiaTensor_b_kgm2 * @brief Return Inertia tensor at body frame [kgm2] */ - inline const libra::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } + inline const math::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } // Setter /** @@ -75,7 +75,7 @@ class KinematicsParameters { * @brief Inertia tensor at body frame * @param [in] inertia_tensor_b_kgm2: Inertia tensor at body frame [kgm2] */ - inline void SetInertiaTensor_b_kgm2(const libra::Matrix<3, 3> inertia_tensor_b_kgm2) { + inline void SetInertiaTensor_b_kgm2(const math::Matrix<3, 3> inertia_tensor_b_kgm2) { // TODO add assertion check inertia_tensor_b_kgm2_ = inertia_tensor_b_kgm2; } @@ -83,7 +83,7 @@ class KinematicsParameters { private: libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] double mass_kg_; //!< Mass of the satellite [kg] - libra::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] + math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ From f3d4ebfead1fd79600f7a5f1b1279ef1705e455e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:21:21 +0900 Subject: [PATCH 221/456] Replace libra::Vector to math::Vector --- src/components/base/sensor.hpp | 16 ++-- .../base/sensor_template_functions.hpp | 30 +++---- .../ideal/angular_velocity_observer.hpp | 4 +- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ideal/force_generator.cpp | 16 ++-- src/components/ideal/force_generator.hpp | 16 ++-- src/components/ideal/orbit_observer.cpp | 12 +-- src/components/ideal/orbit_observer.hpp | 10 +-- src/components/ideal/torque_generator.cpp | 10 +-- src/components/ideal/torque_generator.hpp | 8 +- src/components/real/aocs/gnss_receiver.cpp | 54 ++++++------ src/components/real/aocs/gnss_receiver.hpp | 30 +++---- src/components/real/aocs/gyro_sensor.hpp | 4 +- src/components/real/aocs/magnetometer.hpp | 10 +-- src/components/real/aocs/magnetorquer.cpp | 50 +++++------ src/components/real/aocs/magnetorquer.hpp | 40 ++++----- .../aocs/mtq_magnetometer_interference.cpp | 8 +- .../aocs/mtq_magnetometer_interference.hpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 22 ++--- src/components/real/aocs/reaction_wheel.hpp | 22 ++--- .../real/aocs/reaction_wheel_jitter.hpp | 36 ++++---- .../real/aocs/reaction_wheel_ode.cpp | 4 +- .../real/aocs/reaction_wheel_ode.hpp | 2 +- src/components/real/aocs/star_sensor.cpp | 26 +++--- src/components/real/aocs/star_sensor.hpp | 16 ++-- src/components/real/aocs/sun_sensor.cpp | 10 +-- src/components/real/aocs/sun_sensor.hpp | 8 +- src/components/real/communication/antenna.hpp | 2 +- src/components/real/mission/telescope.cpp | 24 +++--- src/components/real/mission/telescope.hpp | 22 ++--- .../real/power/csv_scenario_interface.cpp | 4 +- .../real/power/csv_scenario_interface.hpp | 2 +- .../real/power/solar_array_panel.cpp | 18 ++-- .../real/power/solar_array_panel.hpp | 8 +- .../real/propulsion/simple_thruster.cpp | 18 ++-- src/disturbances/air_drag.cpp | 8 +- src/disturbances/air_drag.hpp | 6 +- src/disturbances/disturbance.hpp | 24 +++--- src/disturbances/disturbances.hpp | 6 +- src/disturbances/geopotential.cpp | 4 +- src/disturbances/geopotential.hpp | 2 +- src/disturbances/gravity_gradient.cpp | 4 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 8 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 4 +- src/disturbances/magnetic_disturbance.hpp | 4 +- .../solar_radiation_pressure_disturbance.cpp | 6 +- .../solar_radiation_pressure_disturbance.hpp | 4 +- src/disturbances/surface_force.cpp | 24 +++--- src/disturbances/surface_force.hpp | 10 +-- src/disturbances/third_body_gravity.cpp | 14 +-- src/disturbances/third_body_gravity.hpp | 4 +- src/dynamics/attitude/attitude.cpp | 14 +-- src/dynamics/attitude/attitude.hpp | 24 +++--- src/dynamics/attitude/attitude_rk4.cpp | 30 +++---- src/dynamics/attitude/attitude_rk4.hpp | 8 +- .../attitude_with_cantilever_vibration.cpp | 12 +-- .../attitude_with_cantilever_vibration.hpp | 8 +- src/dynamics/attitude/controlled_attitude.cpp | 38 ++++---- src/dynamics/attitude/controlled_attitude.hpp | 18 ++-- src/dynamics/attitude/initialize_attitude.cpp | 14 +-- ...ode_attitude_with_cantilever_vibration.hpp | 46 +++++----- src/dynamics/dynamics.cpp | 2 +- src/dynamics/dynamics.hpp | 6 +- .../orbit/encke_orbit_propagation.cpp | 16 ++-- .../orbit/encke_orbit_propagation.hpp | 16 ++-- src/dynamics/orbit/initialize_orbit.cpp | 34 ++++---- src/dynamics/orbit/initialize_orbit.hpp | 2 +- src/dynamics/orbit/orbit.cpp | 18 ++-- src/dynamics/orbit/orbit.hpp | 36 ++++---- src/dynamics/orbit/relative_orbit.cpp | 18 ++-- src/dynamics/orbit/relative_orbit.hpp | 10 +-- src/dynamics/orbit/rk4_orbit_propagation.cpp | 8 +- src/dynamics/orbit/rk4_orbit_propagation.hpp | 6 +- src/dynamics/thermal/node.cpp | 6 +- src/dynamics/thermal/node.hpp | 6 +- src/dynamics/thermal/temperature.cpp | 8 +- src/dynamics/thermal/temperature.hpp | 6 +- .../global/celestial_information.hpp | 30 +++---- src/environment/global/gnss_satellites.cpp | 8 +- src/environment/global/gnss_satellites.hpp | 4 +- .../global/hipparcos_catalogue.cpp | 10 +-- .../global/hipparcos_catalogue.hpp | 4 +- src/environment/global/moon_rotation.cpp | 4 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 4 +- src/environment/local/geomagnetic_field.hpp | 8 +- .../local/local_celestial_information.cpp | 44 +++++----- .../local/local_celestial_information.hpp | 18 ++-- .../solar_radiation_pressure_environment.cpp | 8 +- src/logger/log_utility.hpp | 4 +- .../atmosphere/harris_priester_model.cpp | 6 +- .../atmosphere/harris_priester_model.hpp | 2 +- .../geodesy/geodetic_position.cpp | 6 +- .../geodesy/geodetic_position.hpp | 4 +- src/math_physics/gnss/antex_file_reader.cpp | 2 +- src/math_physics/gnss/antex_file_reader.hpp | 6 +- src/math_physics/gnss/sp3_file_reader.cpp | 10 +-- src/math_physics/gnss/sp3_file_reader.hpp | 10 +-- .../gravity/gravity_potential.cpp | 6 +- .../gravity/gravity_potential.hpp | 4 +- .../gravity/test_gravity_potential.cpp | 28 +++--- .../math/ordinary_differential_equation.hpp | 2 +- src/math_physics/math/test_matrix_vector.cpp | 4 +- src/math_physics/math/test_quaternion.cpp | 44 +++++----- src/math_physics/math/test_vector.cpp | 86 +++++++++---------- .../dormand_prince_5.hpp | 2 +- .../dormand_prince_5_implementation.hpp | 2 +- .../test_runge_kutta.cpp | 86 +++++++++---------- .../optics/gaussian_beam_base.cpp | 4 +- .../optics/gaussian_beam_base.hpp | 12 +-- .../orbit/interpolation_orbit.cpp | 6 +- .../orbit/interpolation_orbit.hpp | 4 +- src/math_physics/orbit/kepler_orbit.cpp | 4 +- src/math_physics/orbit/kepler_orbit.hpp | 8 +- src/math_physics/orbit/orbital_elements.cpp | 12 +-- src/math_physics/orbit/orbital_elements.hpp | 8 +- .../orbit/test_interpolation_orbit.cpp | 4 +- .../moon_rotation_utilities.cpp | 12 +-- .../moon_rotation_utilities.hpp | 4 +- .../randomization/random_walk.hpp | 6 +- .../random_walk_template_functions.hpp | 4 +- .../initialize_file_access.hpp | 4 +- .../ground_station/ground_station.cpp | 6 +- .../initialize_monte_carlo_parameters.cpp | 38 ++++---- .../initialize_monte_carlo_parameters.hpp | 18 ++-- .../initialize_monte_carlo_simulation.cpp | 4 +- .../monte_carlo_simulation_executor.hpp | 10 +-- .../simulation_object.hpp | 4 +- .../relative_information.cpp | 44 +++++----- .../relative_information.hpp | 20 ++--- .../spacecraft/installed_components.cpp | 8 +- .../spacecraft/installed_components.hpp | 4 +- .../structure/initialize_structure.cpp | 6 +- .../structure/kinematics_parameters.cpp | 2 +- .../structure/kinematics_parameters.hpp | 8 +- .../structure/residual_magnetic_moment.hpp | 2 +- .../spacecraft/structure/surface.cpp | 2 +- .../spacecraft/structure/surface.hpp | 14 +-- .../spacecraft/sample_components.cpp | 14 +-- .../spacecraft/sample_components.hpp | 4 +- 142 files changed, 935 insertions(+), 935 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index df7d67baf..382cb6f1f 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -31,9 +31,9 @@ class Sensor { * @param [in] random_walk_standard_deviation_c: Standard deviation of random wark at the component frame * @param [in] random_walk_limit_c: Limit of random walk at the component frame */ - Sensor(const math::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, - const libra::Vector& bias_noise_c, const libra::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, - const libra::Vector& random_walk_standard_deviation_c, const libra::Vector& random_walk_limit_c); + Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_const_c, const math::Vector& range_to_zero_c, + const math::Vector& bias_noise_c, const math::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c, const math::Vector& random_walk_limit_c); /** * @fn ~Sensor * @brief Destructor @@ -41,7 +41,7 @@ class Sensor { ~Sensor(); protected: - libra::Vector bias_noise_c_; //!< Constant bias noise at the component frame + math::Vector bias_noise_c_; //!< Constant bias noise at the component frame /** * @fn Measure @@ -49,12 +49,12 @@ class Sensor { * @param [in] true_value_c: True value at the component frame * @return Observed value with noise at the component frame */ - libra::Vector Measure(const libra::Vector true_value_c); + math::Vector Measure(const math::Vector true_value_c); private: math::Matrix scale_factor_; //!< Scale factor matrix - libra::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - libra::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame libra::NormalRand normal_random_noise_c_[N]; //!< Normal random RandomWalk random_walk_noise_c_; //!< Random Walk @@ -64,7 +64,7 @@ class Sensor { * @param [in] input_c: Input value at the component frame * @return Clipped value */ - libra::Vector Clip(const libra::Vector input_c); + math::Vector Clip(const math::Vector input_c); /** * @fn RangeCheck * @brief Check the range_to_const_c_ and range_to_zero_c_ is correct and fixed the values diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 305b066f5..c488e7958 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -10,10 +10,10 @@ #include template -Sensor::Sensor(const math::Matrix& scale_factor, const libra::Vector& range_to_const_c, const libra::Vector& range_to_zero_c, - const libra::Vector& bias_noise_c, const libra::Vector& normal_random_standard_deviation_c, - const double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c, - const libra::Vector& random_walk_limit_c) +Sensor::Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_const_c, const math::Vector& range_to_zero_c, + const math::Vector& bias_noise_c, const math::Vector& normal_random_standard_deviation_c, + const double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c, + const math::Vector& random_walk_limit_c) : bias_noise_c_(bias_noise_c), scale_factor_(scale_factor), range_to_const_c_(range_to_const_c), @@ -29,8 +29,8 @@ template Sensor::~Sensor() {} template -libra::Vector Sensor::Measure(const libra::Vector true_value_c) { - libra::Vector calc_value_c; +math::Vector Sensor::Measure(const math::Vector true_value_c) { + math::Vector calc_value_c; calc_value_c = scale_factor_ * true_value_c; calc_value_c += bias_noise_c_; for (size_t i = 0; i < N; ++i) { @@ -42,8 +42,8 @@ libra::Vector Sensor::Measure(const libra::Vector true_value_c) { } template -libra::Vector Sensor::Clip(const libra::Vector input_c) { - libra::Vector output_c; +math::Vector Sensor::Clip(const math::Vector input_c) { + math::Vector output_c; for (size_t i = 0; i < N; ++i) { if (input_c[i] >= range_to_const_c_[i] && input_c[i] < range_to_zero_c_[i]) { output_c[i] = range_to_const_c_[i]; @@ -80,7 +80,7 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w IniAccess ini_file(file_name); std::string section = "SENSOR_BASE_" + component_name; - libra::Vector scale_factor_vector; + math::Vector scale_factor_vector; ini_file.ReadVector(section.c_str(), "scale_factor_c", scale_factor_vector); math::Matrix scale_factor_c; if (scale_factor_vector.CalcNorm() == 0.0) { @@ -94,26 +94,26 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w } std::string key_name; - libra::Vector constant_bias_c; + math::Vector constant_bias_c; key_name = "constant_bias_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), constant_bias_c); - libra::Vector normal_random_standard_deviation_c; + math::Vector normal_random_standard_deviation_c; key_name = "normal_random_standard_deviation_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), normal_random_standard_deviation_c); - libra::Vector random_walk_standard_deviation_c; + math::Vector random_walk_standard_deviation_c; key_name = "random_walk_standard_deviation_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), random_walk_standard_deviation_c); - libra::Vector random_walk_limit_c; + math::Vector random_walk_limit_c; key_name = "random_walk_limit_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), random_walk_limit_c); key_name = "range_to_constant_" + unit; double range_to_const = ini_file.ReadDouble(section.c_str(), key_name.c_str()); - libra::Vector range_to_const_c{range_to_const}; + math::Vector range_to_const_c{range_to_const}; key_name = "range_to_zero_" + unit; double range_to_zero = ini_file.ReadDouble(section.c_str(), key_name.c_str()); - libra::Vector range_to_zero_c{range_to_zero}; + math::Vector range_to_zero_c{range_to_zero}; Sensor sensor_base(scale_factor_c, range_to_const_c, range_to_zero_c, constant_bias_c, normal_random_standard_deviation_c, step_width_s, random_walk_standard_deviation_c, random_walk_limit_c); diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 5ec2e69c4..82d509f5d 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -57,10 +57,10 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg * @fn GetAngularVelocity_b_rad_s * @brief Return observed angular velocity */ - inline libra::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } + inline math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } protected: - libra::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] + math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] const Attitude& attitude_; //!< Dynamics information }; diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index b098c0b22..58dd24d60 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -18,7 +18,7 @@ void AttitudeObserver::MainRoutine(const int time_count) { UNUSED(time_count); // Error calculation - libra::Vector<3> random_direction; + math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 13efaa32b..cf5105f5c 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -29,9 +29,9 @@ void ForceGenerator::MainRoutine(const int time_count) { double norm_ordered_force = ordered_force_b_N_.CalcNorm(); if (norm_ordered_force > 0.0 + DBL_EPSILON) { // Add noise only when the force is generated - libra::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); + math::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); libra::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); - libra::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); + math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double force_norm_with_error = norm_ordered_force + magnitude_noise_; generated_force_b_N_ = force_norm_with_error * converted_direction; } @@ -49,16 +49,16 @@ void ForceGenerator::PowerOffRoutine() { generated_force_rtn_N_ *= 0.0; } -void ForceGenerator::SetForce_i_N(const libra::Vector<3> force_i_N) { +void ForceGenerator::SetForce_i_N(const math::Vector<3> force_i_N) { libra::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } -void ForceGenerator::SetForce_rtn_N(const libra::Vector<3> force_rtn_N) { +void ForceGenerator::SetForce_rtn_N(const math::Vector<3> force_rtn_N) { libra::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); libra::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); - libra::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); + math::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } @@ -85,14 +85,14 @@ std::string ForceGenerator::GetLogValue() const { return str_tmp; } -libra::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(libra::Vector<3> true_direction, const double error_standard_deviation_rad) { - libra::Vector<3> random_direction; +libra::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { + math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); - libra::Vector<3> rotation_axis; + math::Vector<3> rotation_axis; rotation_axis = OuterProduct(true_direction, random_direction); double norm_rotation_axis = rotation_axis.CalcNorm(); if (norm_rotation_axis < 0.0 + DBL_EPSILON) { diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 53adf392c..f4395663e 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -81,23 +81,23 @@ class ForceGenerator : public Component, public ILoggable { * @fn SetForce_b_N * @brief Set ordered force in the body fixed frame [N] */ - inline void SetForce_b_N(const libra::Vector<3> force_b_N) { ordered_force_b_N_ = force_b_N; }; + inline void SetForce_b_N(const math::Vector<3> force_b_N) { ordered_force_b_N_ = force_b_N; }; /** * @fn SetForce_i_N * @brief Set ordered force in the inertial frame [N] */ - void SetForce_i_N(const libra::Vector<3> force_i_N); + void SetForce_i_N(const math::Vector<3> force_i_N); /** * @fn SetForce_rtn_N * @brief Set ordered force in the RTN frame [N] */ - void SetForce_rtn_N(const libra::Vector<3> force_rtn_N); + void SetForce_rtn_N(const math::Vector<3> force_rtn_N); protected: - libra::Vector<3> ordered_force_b_N_{0.0}; //!< Ordered force in the body fixed frame [N] - libra::Vector<3> generated_force_b_N_{0.0}; //!< Generated force in the body fixed frame [N] - libra::Vector<3> generated_force_i_N_{0.0}; //!< Generated force in the inertial frame [N] - libra::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] + math::Vector<3> ordered_force_b_N_{0.0}; //!< Ordered force in the body fixed frame [N] + math::Vector<3> generated_force_b_N_{0.0}; //!< Generated force in the body fixed frame [N] + math::Vector<3> generated_force_i_N_{0.0}; //!< Generated force in the inertial frame [N] + math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise libra::NormalRand magnitude_noise_; //!< Normal random for magnitude noise @@ -110,7 +110,7 @@ class ForceGenerator : public Component, public ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - libra::Quaternion GenerateDirectionNoiseQuaternion(libra::Vector<3> true_direction, const double error_standard_deviation_rad); + libra::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); const Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 19d26c8b9..b287ee680 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -9,7 +9,7 @@ #include OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, - const libra::Vector<6> error_standard_deviation, const Orbit& orbit) + const math::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], global_randomization.MakeSeed()); @@ -20,10 +20,10 @@ void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); // Calc noise - libra::Vector<3> position_error_i_m{0.0}; - libra::Vector<3> position_error_rtn_m{0.0}; - libra::Vector<3> velocity_error_i_m_s{0.0}; - libra::Vector<3> velocity_error_rtn_m_s{0.0}; + math::Vector<3> position_error_i_m{0.0}; + math::Vector<3> position_error_rtn_m{0.0}; + math::Vector<3> velocity_error_i_m_s{0.0}; + math::Vector<3> velocity_error_rtn_m_s{0.0}; libra::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (noise_frame_) { case NoiseFrame::kInertial: @@ -93,7 +93,7 @@ OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std // Noise const NoiseFrame noise_frame = SetNoiseFrame(ini_file.ReadString("ORBIT_OBSERVER", "noise_frame")); - libra::Vector<6> noise_standard_deviation; + math::Vector<6> noise_standard_deviation; ini_file.ReadVector("ORBIT_OBSERVER", "noise_standard_deviation", noise_standard_deviation); OrbitObserver orbit_observer(prescaler, clock_generator, noise_frame, noise_standard_deviation, orbit); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 976a8d236..c1746af81 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -37,7 +37,7 @@ class OrbitObserver : public Component, public ILoggable { * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const libra::Vector<6> error_standard_deviation, + OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const math::Vector<6> error_standard_deviation, const Orbit& orbit); /** @@ -69,17 +69,17 @@ class OrbitObserver : public Component, public ILoggable { * @fn GetPosition_i_m * @brief Return observed position */ - inline const libra::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; + inline const math::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; /** * @fn GetVelocity_i_m_s * @brief Return observed velocity */ - inline const libra::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; + inline const math::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; protected: - libra::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] - libra::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] + math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] NoiseFrame noise_frame_; //!< Noise definition frame libra::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index a2adb097c..b0a137d9b 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -29,9 +29,9 @@ void TorqueGenerator::MainRoutine(const int time_count) { double norm_ordered_torque = ordered_torque_b_Nm_.CalcNorm(); if (norm_ordered_torque > 0.0 + DBL_EPSILON) { // Add noise only when the torque is generated - libra::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); + math::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); libra::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); - libra::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); + math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double torque_norm_with_error = norm_ordered_torque + magnitude_noise_; generated_torque_b_Nm_ = torque_norm_with_error * converted_direction; } @@ -58,14 +58,14 @@ std::string TorqueGenerator::GetLogValue() const { return str_tmp; } -libra::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(libra::Vector<3> true_direction, const double error_standard_deviation_rad) { - libra::Vector<3> random_direction; +libra::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { + math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); - libra::Vector<3> rotation_axis; + math::Vector<3> rotation_axis; rotation_axis = OuterProduct(true_direction, random_direction); double norm_rotation_axis = rotation_axis.CalcNorm(); if (norm_rotation_axis < 0.0 + DBL_EPSILON) { diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 10aacf19d..5fafc2c4c 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -71,11 +71,11 @@ class TorqueGenerator : public Component, public ILoggable { * @fn SetTorque_b_Nm * @brief Set ordered torque in the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const libra::Vector<3> torque_b_Nm) { ordered_torque_b_Nm_ = torque_b_Nm; }; + inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { ordered_torque_b_Nm_ = torque_b_Nm; }; protected: - libra::Vector<3> ordered_torque_b_Nm_{0.0}; //!< Ordered torque in the body fixed frame [Nm] - libra::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] + math::Vector<3> ordered_torque_b_Nm_{0.0}; //!< Ordered torque in the body fixed frame [Nm] + math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise libra::NormalRand magnitude_noise_; //!< Normal random for magnitude noise @@ -88,7 +88,7 @@ class TorqueGenerator : public Component, public ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - libra::Quaternion GenerateDirectionNoiseQuaternion(libra::Vector<3> true_direction, const double error_standard_deviation_rad); + libra::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); const Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index a1f11880b..d9bd1a4fd 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -12,9 +12,9 @@ #include GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, - const libra::Vector<3> position_noise_standard_deviation_ecef_m, - const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const math::Vector<3> position_noise_standard_deviation_ecef_m, + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), @@ -32,9 +32,9 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, } GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, - const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), @@ -56,7 +56,7 @@ void GnssReceiver::MainRoutine(const int time_count) { // Antenna checking // TODO: Use ECEF position only - libra::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); + math::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); libra::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); CheckAntenna(position_true_eci, quaternion_i2b); @@ -74,7 +74,7 @@ void GnssReceiver::MainRoutine(const int time_count) { ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } -void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { if (antenna_model_ == AntennaModel::kSimple) { CheckAntennaSimple(position_true_eci_m, quaternion_i2b); } else if (antenna_model_ == AntennaModel::kCone) { @@ -84,15 +84,15 @@ void GnssReceiver::CheckAntenna(const libra::Vector<3> position_true_eci_m, cons } } -void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction // Antenna normal vector at inertial frame - libra::Vector<3> antenna_direction_c(0.0); + math::Vector<3> antenna_direction_c(0.0); antenna_direction_c[2] = 1.0; - libra::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); - libra::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); + math::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); + math::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); double inner = InnerProduct(position_true_eci_m, antenna_direction_i); if (inner <= 0.0) { @@ -102,18 +102,18 @@ void GnssReceiver::CheckAntennaSimple(const libra::Vector<3> position_true_eci_m } } -void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { // Cone model gnss_information_list_.clear(); // Antenna pointing direction vector at inertial frame - libra::Vector<3> antenna_pointing_direction_c(0.0); + math::Vector<3> antenna_pointing_direction_c(0.0); antenna_pointing_direction_c[2] = 1.0; - libra::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); - libra::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); + math::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); + math::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); // Antenna position vector at inertial frame - libra::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); + math::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); // initialize visible_satellite_number_ = 0; @@ -122,9 +122,9 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, for (size_t i = 0; i < number_of_calculated_gnss_satellites; i++) { // compute direction from sat to gnss in body-fixed frame - libra::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); - libra::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; - libra::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); + math::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); + math::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; + math::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); // Check GNSS satellites are visible from the receiver(not care antenna direction) bool is_gnss_satellite_visible_from_receiver = false; @@ -161,10 +161,10 @@ void GnssReceiver::CheckAntennaCone(const libra::Vector<3> position_true_eci_m, } } -void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, +void GnssReceiver::SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const std::size_t gnss_system_id) { - libra::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); - libra::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); + math::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); + math::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); double distance_m = antenna_to_satellite_i_m.CalcNorm(); double longitude_rad = AcTan(antenna_to_satellite_direction_c[1], antenna_to_satellite_direction_c[0]); @@ -175,7 +175,7 @@ void GnssReceiver::SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, gnss_information_list_.push_back(gnss_info_new); } -void GnssReceiver::AddNoise(const libra::Vector<3> position_true_ecef_m, const libra::Vector<3> velocity_true_ecef_m_s) { +void GnssReceiver::AddNoise(const math::Vector<3> position_true_ecef_m, const math::Vector<3> velocity_true_ecef_m_s) { for (size_t i = 0; i < 3; i++) { position_ecef_m_[i] = position_true_ecef_m[i] + position_random_noise_ecef_m_[i]; velocity_ecef_m_s_[i] = velocity_true_ecef_m_s[i] + velocity_random_noise_ecef_m_s_[i]; @@ -252,11 +252,11 @@ AntennaModel SetAntennaModel(const std::string antenna_model) { typedef struct _gnss_receiver_param { int prescaler; AntennaModel antenna_model; - libra::Vector<3> antenna_pos_b; + math::Vector<3> antenna_pos_b; libra::Quaternion quaternion_b2c; double half_width_deg; - libra::Vector<3> position_noise_standard_deviation_ecef_m; - libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s; + math::Vector<3> position_noise_standard_deviation_ecef_m; + math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const size_t component_id) { diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 1345217b5..5b1acb425 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -59,8 +59,8 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, - const libra::Vector<3> position_noise_standard_deviation_ecef_m, const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, + const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver @@ -79,9 +79,9 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const libra::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, - const double half_width_deg, const libra::Vector<3> position_noise_standard_deviation_ecef_m, - const libra::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component @@ -102,7 +102,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredPosition_ecef_m * @brief Return Observed position in the ECEF frame [m] */ - inline const libra::Vector<3> GetMeasuredPosition_ecef_m(void) const { return position_ecef_m_; } + inline const math::Vector<3> GetMeasuredPosition_ecef_m(void) const { return position_ecef_m_; } /** * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] @@ -112,7 +112,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] */ - inline const libra::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } + inline const math::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } // Override ILoggable /** @@ -131,7 +131,7 @@ class GnssReceiver : public Component, public ILoggable { const size_t component_id_; //!< Receiver ID // Antenna - libra::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] + math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] AntennaModel antenna_model_; //!< Antenna model @@ -139,8 +139,8 @@ class GnssReceiver : public Component, public ILoggable { // Simple position observation libra::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] libra::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - libra::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - libra::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation @@ -166,7 +166,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntenna(const libra::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); + void CheckAntenna(const math::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); /** * @fn CheckAntennaSimple * @brief Check the antenna can detect GNSS signal with Simple mode @@ -174,7 +174,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaSimple(const libra::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); + void CheckAntennaSimple(const math::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); /** * @fn CheckAntennaCone * @brief Check the antenna can detect GNSS signal with Cone mode @@ -182,7 +182,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaCone(const libra::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); + void CheckAntennaCone(const math::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); /** * @fn SetGnssInfo * @brief Calculate and set the GnssInfo values of target GNSS satellite @@ -190,14 +190,14 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] gnss_system_id: ID of target GNSS satellite */ - void SetGnssInfo(const libra::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const size_t gnss_system_id); + void SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const size_t gnss_system_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class * @param [in] position_true_ecef_m: True position of the spacecraft in the ECEF frame [m] * @param [in] velocity_true_ecef_m_s: True velocity of the spacecraft in the ECEF frame [m/s] */ - void AddNoise(const libra::Vector<3> position_true_ecef_m, const libra::Vector<3> velocity_true_ecef_m_s); + void AddNoise(const math::Vector<3> position_true_ecef_m, const math::Vector<3> velocity_true_ecef_m_s); /** * @fn ConvertJulianDayToGpsTime * @brief Convert Julian day to GPS time diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index 239bb29df..cece441a3 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -75,10 +75,10 @@ class GyroSensor : public Component, public Sensor, public ILogg * @fn GetMeasuredAngularVelocity_c_rad_s * @brief Return observed angular velocity of the component frame with respect to the inertial frame */ - inline const libra::Vector& GetMeasuredAngularVelocity_c_rad_s(void) const { return angular_velocity_c_rad_s_; } + inline const math::Vector& GetMeasuredAngularVelocity_c_rad_s(void) const { return angular_velocity_c_rad_s_; } protected: - libra::Vector angular_velocity_c_rad_s_{ + math::Vector angular_velocity_c_rad_s_{ 0.0}; //!< Observed angular velocity of the component frame with respect to the inertial frame [rad/s] unsigned int sensor_id_ = 0; //!< Sensor ID libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 5140eb7ef..376f6fed7 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -75,30 +75,30 @@ class Magnetometer : public Component, public Sensor, pu * @fn GetMeasuredMagneticField_c_nT * @brief Return observed magnetic field on the component frame */ - inline const libra::Vector& GetMeasuredMagneticField_c_nT(void) const { return magnetic_field_c_nT_; } + inline const math::Vector& GetMeasuredMagneticField_c_nT(void) const { return magnetic_field_c_nT_; } /** * @fn SetConstantBiasNoise_c_nT * @brief Set constant bias noise at component frame [nT] * @param [in] constant_noise_c_nT: Constant bias noise at component frame [nT] */ - inline void SetConstantBiasNoise_c_nT(libra::Vector constant_noise_c_nT) { bias_noise_c_ = constant_noise_c_nT; } + inline void SetConstantBiasNoise_c_nT(math::Vector constant_noise_c_nT) { bias_noise_c_ = constant_noise_c_nT; } /** * @fn AddConstantBiasNoise_c_nT * @brief Add constant bias noise at component frame [nT] * @param [in] constant_noise_c_nT: Additional constant bias noise at component frame [nT] */ - inline void AddConstantBiasNoise_c_nT(libra::Vector constant_noise_c_nT) { bias_noise_c_ += constant_noise_c_nT; } + inline void AddConstantBiasNoise_c_nT(math::Vector constant_noise_c_nT) { bias_noise_c_ += constant_noise_c_nT; } /** * @fn GetConstantBiasNoise_c_nT * @brief Get constant bias noise at component frame [nT] */ - inline libra::Vector GetConstantBiasNoise_c_nT() const { return bias_noise_c_; } + inline math::Vector GetConstantBiasNoise_c_nT() const { return bias_noise_c_; } protected: - libra::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] + math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] unsigned int sensor_id_ = 0; //!< Sensor ID libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index c727f91d7..9d51a50dc 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -13,11 +13,11 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const libra::Vector& max_magnetic_moment_c_Am2, - const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, - const libra::Vector& random_walk_limit_c_Am2, - const libra::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) + const math::Vector& max_magnetic_moment_c_Am2, + const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, + double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -35,11 +35,11 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const libra::Vector& max_magnetic_moment_c_Am2, - const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, - const libra::Vector& random_walk_limit_c_Am2, - const libra::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) + const math::Vector& max_magnetic_moment_c_Am2, + const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, + double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -67,7 +67,7 @@ void Magnetorquer::PowerOffRoutine() { output_magnetic_moment_b_Am2_ *= 0.0; } -libra::Vector Magnetorquer::CalcOutputTorque(void) { +math::Vector Magnetorquer::CalcOutputTorque(void) { for (size_t i = 0; i < kMtqDimension; ++i) { // Limit Check if (output_magnetic_moment_c_Am2_[i] > max_magnetic_moment_c_Am2_[i]) { @@ -121,7 +121,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, int prescaler = magtorquer_conf.ReadInt(MTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - libra::Vector sf_vec; + math::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { @@ -133,21 +133,21 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, libra::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); - libra::Vector max_magnetic_moment_c_Am2; + math::Vector max_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "max_output_magnetic_moment_c_Am2", max_magnetic_moment_c_Am2); - libra::Vector min_magnetic_moment_c_Am2; + math::Vector min_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "min_output_magnetic_moment_c_Am2", min_magnetic_moment_c_Am2); - libra::Vector bias_noise_c_Am2; + math::Vector bias_noise_c_Am2; magtorquer_conf.ReadVector(MTSection, "constant_bias_noise_c_Am2", bias_noise_c_Am2); double random_walk_step_width_s = component_step_time_s * (double)prescaler; - libra::Vector random_walk_standard_deviation_c_Am2; + math::Vector random_walk_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_standard_deviation_c_Am2", random_walk_standard_deviation_c_Am2); - libra::Vector random_walk_limit_c_Am2; + math::Vector random_walk_limit_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_limit_c_Am2", random_walk_limit_c_Am2); - libra::Vector normal_random_standard_deviation_c_Am2; + math::Vector normal_random_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "white_noise_standard_deviation_c_Am2", normal_random_standard_deviation_c_Am2); Magnetorquer magtorquer(prescaler, clock_generator, actuator_id, quaternion_b2c, scale_factor, max_magnetic_moment_c_Am2, min_magnetic_moment_c_Am2, @@ -166,7 +166,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_ int prescaler = magtorquer_conf.ReadInt(MTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - libra::Vector sf_vec; + math::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { @@ -178,21 +178,21 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_ libra::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); - libra::Vector max_magnetic_moment_c_Am2; + math::Vector max_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "max_output_magnetic_moment_c_Am2", max_magnetic_moment_c_Am2); - libra::Vector min_magnetic_moment_c_Am2; + math::Vector min_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "min_output_magnetic_moment_c_Am2", min_magnetic_moment_c_Am2); - libra::Vector bias_noise_c_Am2; + math::Vector bias_noise_c_Am2; magtorquer_conf.ReadVector(MTSection, "constant_bias_noise_c_Am2", bias_noise_c_Am2); double random_walk_step_width_s = component_step_time_s * (double)prescaler; - libra::Vector random_walk_standard_deviation_c_Am2; + math::Vector random_walk_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_standard_deviation_c_Am2", random_walk_standard_deviation_c_Am2); - libra::Vector random_walk_limit_c_Am2; + math::Vector random_walk_limit_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_limit_c_Am2", random_walk_limit_c_Am2); - libra::Vector normal_random_standard_deviation_c_Am2; + math::Vector normal_random_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "white_noise_standard_deviation_c_Am2", normal_random_standard_deviation_c_Am2); // PowerPort diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 541466933..19abefdf7 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -42,11 +42,11 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, - const math::Matrix& scale_factor, const libra::Vector& max_magnetic_moment_c_Am2, - const libra::Vector& min_magnetic_moment_c_Am2, const libra::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const libra::Vector& random_walk_standard_deviation_c_Am2, - const libra::Vector& random_walk_limit_c_Am2, - const libra::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); + const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, + const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, + double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); /** * @fn Magnetorquer * @brief Constructor with power port @@ -67,10 +67,10 @@ class Magnetorquer : public Component, public ILoggable { */ Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const libra::Vector& max_magnetic_moment_c_Am2, const libra::Vector& min_magnetic_moment_c_Am2, - const libra::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const libra::Vector& random_walk_standard_deviation_c_Am2, const libra::Vector& random_walk_limit_c_Am2, - const libra::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); + const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, + const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); // Override functions for Component /** @@ -100,39 +100,39 @@ class Magnetorquer : public Component, public ILoggable { * @fn GetOutputTorque_b_Nm * @brief Return output torque in the body fixed frame [Nm] */ - inline const libra::Vector& GetOutputTorque_b_Nm(void) const { return torque_b_Nm_; }; + inline const math::Vector& GetOutputTorque_b_Nm(void) const { return torque_b_Nm_; }; /** * @fn SetOutputMagneticMoment_c_Am2 * @brief Set output magnetic moment in the component frame [Am2] */ - inline void SetOutputMagneticMoment_c_Am2(const libra::Vector mag_moment_c) { output_magnetic_moment_c_Am2_ = mag_moment_c; }; + inline void SetOutputMagneticMoment_c_Am2(const math::Vector mag_moment_c) { output_magnetic_moment_c_Am2_ = mag_moment_c; }; /** * @fn SetOutputMagneticMoment_b_Am2 * @brief Return output magnetic moment in the body fixed frame [Am2] */ - inline const libra::Vector& SetOutputMagneticMoment_b_Am2(void) const { return output_magnetic_moment_b_Am2_; }; + inline const math::Vector& SetOutputMagneticMoment_b_Am2(void) const { return output_magnetic_moment_b_Am2_; }; /** * @fn GetOutputMagneticMoment_b_Am2 * @brief Return output magnetic moment in the body fixed frame [Am2] */ - inline const libra::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; + inline const math::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; protected: const int component_id_ = 0; //!< Actuator ID const double kConvertNanoT2T = 1.0e-9; //!< Constant to convert nT to T - libra::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] - libra::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] - libra::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] + math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] + math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] + math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame libra::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame math::Matrix scale_factor_; //!< Scale factor matrix - libra::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] - libra::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] + math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] + math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] - libra::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] + math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] RandomWalk random_walk_c_Am2_; //!< Random walk noise libra::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise @@ -143,7 +143,7 @@ class Magnetorquer : public Component, public ILoggable { * @brief Calculate output torque * @return Output torque in the body fixed frame [Nm] */ - libra::Vector CalcOutputTorque(void); + math::Vector CalcOutputTorque(void); }; /** diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index 8c3b5ae8d..9aa2bb1e2 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -18,7 +18,7 @@ MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_ for (size_t degree = 1; degree <= polynomial_degree_; degree++) { const std::string key_name = "additional_bias_by_mtq_coefficients_" + std::to_string(static_cast(degree)); - libra::Vector<9> additional_bias_by_mtq_coefficients_vec; + math::Vector<9> additional_bias_by_mtq_coefficients_vec; math::Matrix<3, 3> additional_bias_by_mtq_coefficients; ini_file.ReadVector(section.c_str(), key_name.c_str(), additional_bias_by_mtq_coefficients_vec); for (size_t i = 0; i < 3; i++) { @@ -35,10 +35,10 @@ void MtqMagnetometerInterference::UpdateInterference(void) { magnetometer_.AddConstantBiasNoise_c_nT(-1.0 * previous_added_bias_c_nT_); // Calculate bias - libra::Vector<3> additional_bias_c_nT{0.0}; - libra::Vector<3> mtq_output_c_Am2 = magnetorquer_.GetOutputMagneticMoment_c_Am2(); + math::Vector<3> additional_bias_c_nT{0.0}; + math::Vector<3> mtq_output_c_Am2 = magnetorquer_.GetOutputMagneticMoment_c_Am2(); for (size_t degree = 1; degree <= polynomial_degree_; degree++) { - libra::Vector<3> hadamard_mtq; + math::Vector<3> hadamard_mtq; for (size_t axis = 0; axis < 3; axis++) { hadamard_mtq[axis] = pow(mtq_output_c_Am2[axis], degree); } diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index 10d48a88e..7c93c64d8 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -32,7 +32,7 @@ class MtqMagnetometerInterference { protected: size_t polynomial_degree_; //!< Polynomial degree std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise - libra::Vector<3> previous_added_bias_c_nT_{0.0}; + math::Vector<3> previous_added_bias_c_nT_{0.0}; Magnetometer& magnetometer_; //!< Magnetometer const Magnetorquer& magnetorquer_; //!< Magnetorquer diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index cd275985c..1c16d6376 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -13,7 +13,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const libra::Quaternion quaternion_b2c, const libra::Vector<3> position_b_m, const double dead_time_s, + const libra::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, bool drive_flag, const double init_velocity_rad_s) @@ -40,7 +40,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const libra::Quaternion quaternion_b2c, const libra::Vector<3> position_b_m, const double dead_time_s, + const libra::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag, const double init_velocity_rad_s) @@ -66,7 +66,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato } void ReactionWheel::Initialize() { - rotation_axis_c_ = libra::Vector<3>(0.0); + rotation_axis_c_ = math::Vector<3>(0.0); rotation_axis_c_[2] = 1.0; rotation_axis_b_ = quaternion_b2c_.InverseFrameConversion(rotation_axis_c_); @@ -99,7 +99,7 @@ void ReactionWheel::FastUpdate() { } } -libra::Vector<3> ReactionWheel::CalcTorque() { +math::Vector<3> ReactionWheel::CalcTorque() { if (!drive_flag_) // RW idle mode -> coasting mode { // Clear delay buffer @@ -116,7 +116,7 @@ libra::Vector<3> ReactionWheel::CalcTorque() { if (abs_angular_velocity_rad_s < stop_limit_angular_velocity_rad_s_) { // Stop rotation rotation_direction = 0.0; - libra::Vector<1> zero_rad_s{0.0}; + math::Vector<1> zero_rad_s{0.0}; ode_angular_velocity_.Setup(0.0, zero_rad_s); } else if (angular_velocity_rad_s_ > 0.0) { rotation_direction = -1.0; @@ -150,7 +150,7 @@ libra::Vector<3> ReactionWheel::CalcTorque() { return output_torque_b_Nm_; } -const libra::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { +const math::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { if (is_calculated_jitter_) { // Add jitter_force_b_N_-derived torque and jitter_torque_b_Nm_ to output_torque_b return output_torque_b_Nm_ - libra::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); @@ -159,11 +159,11 @@ const libra::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { } } -const libra::Vector<3> ReactionWheel::GetJitterForce_b_N() const { +const math::Vector<3> ReactionWheel::GetJitterForce_b_N() const { if (is_calculated_jitter_) { return rw_jitter_.GetJitterForce_b_N(); } else { - libra::Vector<3> zero{0.0}; + math::Vector<3> zero{0.0}; return zero; } } @@ -239,7 +239,7 @@ double max_torque_Nm; double max_velocity_rpm; // Mounting libra::Quaternion quaternion_b2c; -libra::Vector<3> position_b_m; +math::Vector<3> position_b_m; // Time delay double dead_time_s; double time_constant_s; @@ -279,9 +279,9 @@ void InitParams(int actuator_id, std::string file_name, double compo_update_step rw_ini_file.ReadQuaternion(rw_section, "quaternion_b2c", quaternion_b2c); } else // direction_determination_mode == "DIRECTION" { - libra::Vector<3> direction_b; + math::Vector<3> direction_b; rw_ini_file.ReadVector(rw_section, "direction_b", direction_b); - libra::Vector<3> direction_c(0.0); + math::Vector<3> direction_c(0.0); direction_c[2] = 1.0; libra::Quaternion q(direction_b, direction_c); quaternion_b2c = q.Conjugate(); diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 6e684db1f..48b3d258b 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -50,7 +50,7 @@ class ReactionWheel : public Component, public ILoggable { */ ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const libra::Quaternion quaternion_b2c, - const libra::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -80,7 +80,7 @@ class ReactionWheel : public Component, public ILoggable { */ ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const libra::Quaternion quaternion_b2c, - const libra::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -119,12 +119,12 @@ class ReactionWheel : public Component, public ILoggable { * @fn GetOutputTorque_b_Nm * @brief Return output torque in the body fixed frame [Nm] */ - const libra::Vector<3> GetOutputTorque_b_Nm() const; + const math::Vector<3> GetOutputTorque_b_Nm() const; /** * @fn GetJitterForce_b_N * @brief Return output force by jitter in the body fixed frame [N] */ - inline const libra::Vector<3> GetJitterForce_b_N() const; + inline const math::Vector<3> GetJitterForce_b_N() const; /** * @fn GetDriveFlag * @brief Return drive flag @@ -144,7 +144,7 @@ class ReactionWheel : public Component, public ILoggable { * @fn GetAngularMomentum_b_Nms * @brief Return angular momentum of RW [Nms] */ - inline const libra::Vector<3> GetAngularMomentum_b_Nms() const { return angular_momentum_b_Nms_; }; + inline const math::Vector<3> GetAngularMomentum_b_Nms() const { return angular_momentum_b_Nms_; }; // Setter /** @@ -175,9 +175,9 @@ class ReactionWheel : public Component, public ILoggable { const double max_torque_Nm_; //!< Maximum output torque [Nm] const double max_velocity_rpm_; //!< Maximum angular velocity of rotor [rpm] const libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame - const libra::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] - libra::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) - libra::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. + const math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] + math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) + math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. // Parameters for control delay const double step_width_s_; //!< step width for ReactionWheelOde [sec] @@ -199,8 +199,8 @@ class ReactionWheel : public Component, public ILoggable { double angular_velocity_rpm_ = 0.0; //!< Current angular velocity [rpm] double angular_velocity_rad_s_ = 0.0; //!< Current angular velocity [rad/s] // Output at body frame - libra::Vector<3> output_torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] - libra::Vector<3> angular_momentum_b_Nms_{0.0}; //!< Angular momentum of RW [Nms] + math::Vector<3> output_torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] + math::Vector<3> angular_momentum_b_Nms_{0.0}; //!< Angular momentum of RW [Nms] // ODE double velocity_limit_rpm_; //!< Velocity limit defined by users [RPM] @@ -216,7 +216,7 @@ class ReactionWheel : public Component, public ILoggable { * @fn CalcTorque * @brief Calculation of generated torque */ - libra::Vector<3> CalcTorque(); + math::Vector<3> CalcTorque(); /** * @fn Initialize * @brief Initialize function diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index 9eb241525..1034c75c7 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -55,24 +55,24 @@ class ReactionWheelJitter { * @fn GetJitterForce_b_N * @brief Return generated jitter force in the body fixed frame [N] */ - const libra::Vector<3> GetJitterForce_b_N() const { return jitter_force_b_N_; } + const math::Vector<3> GetJitterForce_b_N() const { return jitter_force_b_N_; } /** * @fn GetJitterTorque_b_Nm * @brief Return generated jitter torque in the body fixed frame [Nm] */ - const libra::Vector<3> GetJitterTorque_b_Nm() const { return jitter_torque_b_Nm_; } + const math::Vector<3> GetJitterTorque_b_Nm() const { return jitter_torque_b_Nm_; } /** * @fn GetJitterForce_c_N * @brief Return generated jitter force in the components frame [N] */ - const libra::Vector<3> GetJitterForce_c_N() const { + const math::Vector<3> GetJitterForce_c_N() const { return considers_structural_resonance_ ? filtered_jitter_force_n_c_ : unfiltered_jitter_force_n_c_; } /** * @fn GetJitterTorque_c_Nm * @brief Return generated jitter torque in the component frame [Nm] */ - const libra::Vector<3> GetJitterTorque_c_Nm() const { + const math::Vector<3> GetJitterTorque_c_Nm() const { return considers_structural_resonance_ ? filtered_jitter_torque_n_c_ : unfiltered_jitter_torque_n_c_; } @@ -94,22 +94,22 @@ class ReactionWheelJitter { std::vector jitter_torque_rotation_phase_; //!< 2 * pi * h_i * Omega * t [rad] // Variables for solving difference equations in component frame - libra::Vector<3> unfiltered_jitter_force_n_c_{0.0}; - libra::Vector<3> unfiltered_jitter_force_n_1_c_{0.0}; - libra::Vector<3> unfiltered_jitter_force_n_2_c_{0.0}; - libra::Vector<3> unfiltered_jitter_torque_n_c_{0.0}; - libra::Vector<3> unfiltered_jitter_torque_n_1_c_{0.0}; - libra::Vector<3> unfiltered_jitter_torque_n_2_c_{0.0}; - libra::Vector<3> filtered_jitter_force_n_c_{0.0}; - libra::Vector<3> filtered_jitter_force_n_1_c_{0.0}; - libra::Vector<3> filtered_jitter_force_n_2_c_{0.0}; - libra::Vector<3> filtered_jitter_torque_n_c_{0.0}; - libra::Vector<3> filtered_jitter_torque_n_1_c_{0.0}; - libra::Vector<3> filtered_jitter_torque_n_2_c_{0.0}; + math::Vector<3> unfiltered_jitter_force_n_c_{0.0}; + math::Vector<3> unfiltered_jitter_force_n_1_c_{0.0}; + math::Vector<3> unfiltered_jitter_force_n_2_c_{0.0}; + math::Vector<3> unfiltered_jitter_torque_n_c_{0.0}; + math::Vector<3> unfiltered_jitter_torque_n_1_c_{0.0}; + math::Vector<3> unfiltered_jitter_torque_n_2_c_{0.0}; + math::Vector<3> filtered_jitter_force_n_c_{0.0}; + math::Vector<3> filtered_jitter_force_n_1_c_{0.0}; + math::Vector<3> filtered_jitter_force_n_2_c_{0.0}; + math::Vector<3> filtered_jitter_torque_n_c_{0.0}; + math::Vector<3> filtered_jitter_torque_n_1_c_{0.0}; + math::Vector<3> filtered_jitter_torque_n_2_c_{0.0}; double coefficients_[6]; //!< Coefficients of difference equation - libra::Vector<3> jitter_force_b_N_{0.0}; //!< Generated jitter force in the body frame [N] - libra::Vector<3> jitter_torque_b_Nm_{0.0}; //!< Generated jitter torque in the body frame [Nm] + math::Vector<3> jitter_force_b_N_{0.0}; //!< Generated jitter force in the body frame [N] + math::Vector<3> jitter_torque_b_Nm_{0.0}; //!< Generated jitter torque in the body frame [Nm] /** * @fn AddStructuralResonance diff --git a/src/components/real/aocs/reaction_wheel_ode.cpp b/src/components/real/aocs/reaction_wheel_ode.cpp index 2ef53768e..48b440089 100644 --- a/src/components/real/aocs/reaction_wheel_ode.cpp +++ b/src/components/real/aocs/reaction_wheel_ode.cpp @@ -8,10 +8,10 @@ ReactionWheelOde::ReactionWheelOde(const double step_width_s, const double velocity_limit_rad_s, const double initial_angular_velocity_rad_s) : OrdinaryDifferentialEquation<1>(step_width_s), velocity_limit_rad_s_(velocity_limit_rad_s) { - this->Setup(0.0, libra::Vector<1>(initial_angular_velocity_rad_s)); + this->Setup(0.0, math::Vector<1>(initial_angular_velocity_rad_s)); } -void ReactionWheelOde::DerivativeFunction(double x, const libra::Vector<1> &state, libra::Vector<1> &rhs) { +void ReactionWheelOde::DerivativeFunction(double x, const math::Vector<1> &state, math::Vector<1> &rhs) { UNUSED(x); double angular_velocity_rad_s = state[0]; diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index 6a4b333ae..d36792e88 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -53,7 +53,7 @@ class ReactionWheelOde : public libra::OrdinaryDifferentialEquation<1> { * @param [in] state: State vector * @param [out] rhs: Differentiated value of state vector */ - void DerivativeFunction(double x, const libra::Vector<1>& state, libra::Vector<1>& rhs) override; + void DerivativeFunction(double x, const math::Vector<1>& state, math::Vector<1>& rhs) override; double velocity_limit_rad_s_; double angular_acceleration_rad_s2_ = 0.0; //!< Angular acceleration [rad/s2] diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 86826b98c..c698533a9 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -79,9 +79,9 @@ void StarSensor::Initialize() { delay_buffer_[i] = measured_quaternion_i2c_; } - sight_direction_c_ = libra::Vector<3>(0.0); - first_orthogonal_direction_c = libra::Vector<3>(0.0); - second_orthogonal_direction_c = libra::Vector<3>(0.0); + sight_direction_c_ = math::Vector<3>(0.0); + first_orthogonal_direction_c = math::Vector<3>(0.0); + second_orthogonal_direction_c = math::Vector<3>(0.0); sight_direction_c_[0] = 1.0; //(1,0,0)@Component coordinates, viewing direction first_orthogonal_direction_c[1] = 1.0; //(0,1,0)@Component coordinates, line-of-sight orthogonal direction second_orthogonal_direction_c[2] = 1.0; //(0,0,1)@Component coordinates, line-of-sight orthogonal direction @@ -112,7 +112,7 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa // Random noise on orthogonal direction of sight. Range [0:2pi] double rot = libra::tau * double(rotation_noise_); // Calc observation error on orthogonal direction of sight - libra::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; + math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; libra::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); // Judge errors AllJudgement(local_celestial_information, attitude); @@ -137,9 +137,9 @@ void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_i error_flag_ = false; } -int StarSensor::SunJudgement(const libra::Vector<3>& sun_b) { +int StarSensor::SunJudgement(const math::Vector<3>& sun_b) { libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - libra::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double sun_angle_rad = CalAngleVector_rad(sun_b, sight_b); if (sun_angle_rad < sun_forbidden_angle_rad_) return 1; @@ -147,9 +147,9 @@ int StarSensor::SunJudgement(const libra::Vector<3>& sun_b) { return 0; } -int StarSensor::EarthJudgement(const libra::Vector<3>& earth_b) { +int StarSensor::EarthJudgement(const math::Vector<3>& earth_b) { libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - libra::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double earth_size_rad = atan2(environment::earth_equatorial_radius_m, earth_b.CalcNorm()); // angles between sat<->earth_center & sat<->earth_edge double earth_center_angle_rad = CalAngleVector_rad(earth_b, sight_b); // angles between sat<->earth_center & sat_sight @@ -160,9 +160,9 @@ int StarSensor::EarthJudgement(const libra::Vector<3>& earth_b) { return 0; } -int StarSensor::MoonJudgement(const libra::Vector<3>& moon_b) { +int StarSensor::MoonJudgement(const math::Vector<3>& moon_b) { libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - libra::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double moon_angle_rad = CalAngleVector_rad(moon_b, sight_b); if (moon_angle_rad < moon_forbidden_angle_rad_) return 1; @@ -170,7 +170,7 @@ int StarSensor::MoonJudgement(const libra::Vector<3>& moon_b) { return 0; } -int StarSensor::CaptureRateJudgement(const libra::Vector<3>& omega_b_rad_s) { +int StarSensor::CaptureRateJudgement(const math::Vector<3>& omega_b_rad_s) { double omega_norm = omega_b_rad_s.CalcNorm(); if (omega_norm > capture_rate_limit_rad_s_) return 1; @@ -199,8 +199,8 @@ std::string StarSensor::GetLogValue() const { } double StarSensor::CalAngleVector_rad(const Vector<3>& vector1, const Vector<3>& vector2) { - libra::Vector<3> vect1_normal = vector1.CalcNormalizedVector(); - libra::Vector<3> vect2_normal = vector2.CalcNormalizedVector(); + math::Vector<3> vect1_normal = vector1.CalcNormalizedVector(); + math::Vector<3> vect2_normal = vector2.CalcNormalizedVector(); double cosTheta = InnerProduct(vect1_normal, vect2_normal); // Calc cos value double theta_rad = acos(cosTheta); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 67ba9c3c9..5bda47f79 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -110,9 +110,9 @@ class StarSensor : public Component, public ILoggable { const int component_id_; //!< Sensor ID libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame libra::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion - libra::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame - libra::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame - libra::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame + math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame + math::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame + math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame // Noise parameters libra::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction @@ -168,28 +168,28 @@ class StarSensor : public Component, public ILoggable { * @param [in] sun_b: Sun direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int SunJudgement(const libra::Vector<3>& sun_b); + int SunJudgement(const math::Vector<3>& sun_b); /** * @fn EarthJudgement * @brief Judge violation of earth forbidden angle * @param [in] earth_b: Earth direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int EarthJudgement(const libra::Vector<3>& earth_b); + int EarthJudgement(const math::Vector<3>& earth_b); /** * @fn MoonJudgement * @brief Judge violation of moon forbidden angle * @param [in] moon_b: Moon direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int MoonJudgement(const libra::Vector<3>& moon_b); + int MoonJudgement(const math::Vector<3>& moon_b); /** * @fn CaptureRateJudgement * @brief Judge violation of angular velocity limit * @param [in] omega_b_rad_s: Angular velocity of spacecraft in the body fixed frame * @return 1: violated, 0: not violated */ - int CaptureRateJudgement(const libra::Vector<3>& omega_b_rad_s); + int CaptureRateJudgement(const math::Vector<3>& omega_b_rad_s); /** * @fn CalAngleVector_rad * @brief Calculate angle between two vectors @@ -197,7 +197,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] vector2: Second vector * @return Angle between two vectors [rad] */ - double CalAngleVector_rad(const libra::Vector<3>& vector1, const libra::Vector<3>& vector2); + double CalAngleVector_rad(const math::Vector<3>& vector1, const math::Vector<3>& vector2); /** * @fn Initialize diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index d0d9b599f..8b0164114 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -59,8 +59,8 @@ void SunSensor::MainRoutine(const int time_count) { } void SunSensor::Measure() { - libra::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); - libra::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); + math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); + math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); sun_direction_true_c_ = quaternion_b2c_.FrameConversion(sun_dir_b); // Frame conversion from body to component @@ -87,7 +87,7 @@ void SunSensor::Measure() { measured_sun_direction_c_ = measured_sun_direction_c_.CalcNormalizedVector(); } else { - measured_sun_direction_c_ = libra::Vector<3>(0); + measured_sun_direction_c_ = math::Vector<3>(0); alpha_rad_ = 0.0; beta_rad_ = 0.0; } @@ -96,7 +96,7 @@ void SunSensor::Measure() { } void SunSensor::SunDetectionJudgement() { - libra::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); + math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); @@ -112,7 +112,7 @@ void SunSensor::SunDetectionJudgement() { } void SunSensor::CalcSolarIlluminance() { - libra::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); + math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); if (sun_angle_ > libra::pi_2) { diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 255c834a7..28b40575e 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -80,8 +80,8 @@ class SunSensor : public Component, public ILoggable { // Getter inline bool GetSunDetectedFlag() const { return sun_detected_flag_; }; - inline const libra::Vector<3> GetMeasuredSunDirection_c() const { return measured_sun_direction_c_; }; - inline const libra::Vector<3> GetMeasuredSunDirection_b() const { return quaternion_b2c_.Conjugate().FrameConversion(measured_sun_direction_c_); }; + inline const math::Vector<3> GetMeasuredSunDirection_c() const { return measured_sun_direction_c_; }; + inline const math::Vector<3> GetMeasuredSunDirection_b() const { return quaternion_b2c_.Conjugate().FrameConversion(measured_sun_direction_c_); }; inline double GetSunAngleAlpha_rad() const { return alpha_rad_; }; inline double GetSunAngleBeta_rad() const { return beta_rad_; }; inline double GetSolarIlluminance_W_m2() const { return solar_illuminance_W_m2_; }; @@ -91,8 +91,8 @@ class SunSensor : public Component, public ILoggable { libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) double intensity_lower_threshold_percent_; //!< If the light intensity becomes smaller than this, it becomes impossible to get the sun direction - libra::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame - libra::Vector<3> measured_sun_direction_c_{0.0}; //!< Measured sun vector in the component frame + math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame + math::Vector<3> measured_sun_direction_c_{0.0}; //!< Measured sun vector in the component frame double alpha_rad_ = 0.0; //!< Angle between Z-axis and the sun direction projected on XZ plane [rad] double beta_rad_ = 0.0; //!< Angle between Z-axis and the sun direction projected on YZ plane [rad] diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index acee9935f..d83f03e3a 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -9,7 +9,7 @@ #include #include using libra::Quaternion; -using libra::Vector; +using math::Vector; #include #include "./antenna_radiation_pattern.hpp" diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 3652e6895..df87a245b 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -58,7 +58,7 @@ Telescope::Telescope(ClockGenerator* clock_generator, const libra::Quaternion& q } // Get initial spacecraft position in ECEF if (orbit_ != nullptr) { - libra::Vector<3> initial_spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); + math::Vector<3> initial_spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); initial_ground_position_ecef_m_ = environment::earth_equatorial_radius_m * initial_spacecraft_position_ecef_m; initial_ground_position_ecef_m_ /= (orbit_->GetGeodeticPosition().GetAltitude_m() + environment::earth_equatorial_radius_m); } @@ -91,9 +91,9 @@ void Telescope::MainRoutine(const int time_count) { ObserveGroundPositionDeviation(); } -bool Telescope::JudgeForbiddenAngle(const libra::Vector<3>& target_b, const double forbidden_angle) { +bool Telescope::JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle) { libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - libra::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double angle_rad = libra::CalcAngleTwoVectors_rad(target_b, sight_b); if (angle_rad < forbidden_angle) { return true; @@ -101,8 +101,8 @@ bool Telescope::JudgeForbiddenAngle(const libra::Vector<3>& target_b, const doub return false; } -void Telescope::Observe(libra::Vector<2>& position_image_sensor, const libra::Vector<3, double> target_b) { - libra::Vector<3, double> target_c = quaternion_b2c_.FrameConversion(target_b); +void Telescope::Observe(math::Vector<2>& position_image_sensor, const math::Vector<3, double> target_b) { + math::Vector<3, double> target_c = quaternion_b2c_.FrameConversion(target_b); double arg_x = atan2(target_c[2], target_c[0]); // Angle from X-axis on XZ plane in the component frame double arg_y = atan2(target_c[1], target_c[0]); // Angle from X-axis on XY plane in the component frame @@ -122,8 +122,8 @@ void Telescope::ObserveStars() { size_t count = 0; // Counter for while loop while (star_list_in_sight.size() < number_of_logged_stars_) { - libra::Vector<3> target_b = hipparcos_->GetStarDirection_b(count, quaternion_i2b); - libra::Vector<3> target_c = quaternion_b2c_.FrameConversion(target_b); + math::Vector<3> target_b = hipparcos_->GetStarDirection_b(count, quaternion_i2b); + math::Vector<3> target_c = quaternion_b2c_.FrameConversion(target_b); double arg_x = atan2(target_c[2], target_c[0]); // Angle from X-axis on XZ plane in the component frame double arg_y = atan2(target_c[1], target_c[0]); // Angle from X-axis on XY plane in the component frame @@ -174,12 +174,12 @@ void Telescope::ObserveGroundPositionDeviation() { } Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); - libra::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); - libra::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); + math::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); + math::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); - libra::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); - libra::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); - libra::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); + math::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); + math::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); + math::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); // Ground position in the image sensor in the satellite frame double ground_angle_z_rad = atan2(target_c[2], target_c[0]); diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 6151c070e..12a87b064 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -23,7 +23,7 @@ */ struct Star { HipparcosData hipparcos_data; //!< Hipparcos data - libra::Vector<2> position_image_sensor; //!< Position of image sensor + math::Vector<2> position_image_sensor; //!< Position of image sensor }; /* @@ -68,7 +68,7 @@ class Telescope : public Component, public ILoggable { protected: private: libra::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame - libra::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame + math::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame double sun_forbidden_angle_rad_; //!< Sun forbidden angle [rad] double earth_forbidden_angle_rad_; //!< Earth forbidden angle [rad] @@ -89,10 +89,10 @@ class Telescope : public Component, public ILoggable { size_t number_of_logged_stars_; //!< Number of logged stars - libra::Vector<2> sun_position_image_sensor{-1}; //!< Position of the sun on the image plane - libra::Vector<2> earth_position_image_sensor{-1}; //!< Position of the earth on the image plane - libra::Vector<2> moon_position_image_sensor{-1}; //!< Position of the moon on the image plane - libra::Vector<3> initial_ground_position_ecef_m_; //!< Initial spacecraft position + math::Vector<2> sun_position_image_sensor{-1}; //!< Position of the sun on the image plane + math::Vector<2> earth_position_image_sensor{-1}; //!< Position of the earth on the image plane + math::Vector<2> moon_position_image_sensor{-1}; //!< Position of the moon on the image plane + math::Vector<3> initial_ground_position_ecef_m_; //!< Initial spacecraft position std::vector star_list_in_sight; //!< Star information in the field of view @@ -102,7 +102,7 @@ class Telescope : public Component, public ILoggable { * @param [in] target_b: Direction vector of target on the body fixed frame * @param [in] forbidden_angle: Forbidden angle [rad] */ - bool JudgeForbiddenAngle(const libra::Vector<3>& target_b, const double forbidden_angle); + bool JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle); // Override functions for Component /** @@ -117,7 +117,7 @@ class Telescope : public Component, public ILoggable { * @param [out] position_image_sensor: Position on image sensor plane * @param [in] target_b: Direction vector of target on the body fixed frame */ - void Observe(libra::Vector<2>& position_image_sensor, const libra::Vector<3, double> target_b); + void Observe(math::Vector<2>& position_image_sensor, const math::Vector<3, double> target_b); /** * @fn ObserveStars * @brief Observe stars from Hipparcos catalogue @@ -147,9 +147,9 @@ class Telescope : public Component, public ILoggable { virtual std::string GetLogValue() const; // For debug ********************************************** - // libra::Vector<3> sun_pos_c; - // libra::Vector<3> earth_pos_c; - // libra::Vector<3> moon_pos_c; + // math::Vector<3> sun_pos_c; + // math::Vector<3> earth_pos_c; + // math::Vector<3> moon_pos_c; // double angle_sun; // double angle_earth; // double angle_moon; diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index 2f30e38a6..d0b5c1beb 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -36,8 +36,8 @@ void CsvScenarioInterface::Initialize(const std::string file_name) { bool CsvScenarioInterface::IsCsvScenarioEnabled() { return CsvScenarioInterface::is_csv_scenario_enabled_; } -libra::Vector<3> CsvScenarioInterface::GetSunDirectionBody(const double time_query) { - libra::Vector<3> sun_dir_b; +math::Vector<3> CsvScenarioInterface::GetSunDirectionBody(const double time_query) { + math::Vector<3> sun_dir_b; sun_dir_b[0] = GetValueFromBuffer("sun_dir_b_x", time_query); sun_dir_b[1] = GetValueFromBuffer("sun_dir_b_y", time_query); sun_dir_b[2] = GetValueFromBuffer("sun_dir_b_z", time_query); diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index 6e54f3d6f..30f96ead1 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -36,7 +36,7 @@ class CsvScenarioInterface { * @brief Return sun direction vector in the body fixed frame * @param [in] time_query: Time query */ - static libra::Vector<3> GetSunDirectionBody(const double time_query); + static math::Vector<3> GetSunDirectionBody(const double time_query); /** * @fn GetSunFlag * @brief Return sun flag diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index 3ea0df5e9..43a22afa8 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -10,7 +10,7 @@ #include SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) : Component(prescaler, clock_generator), @@ -29,7 +29,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_gene } SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), @@ -46,7 +46,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_gene } SolarArrayPanel::SolarArrayPanel(ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(10, clock_generator), @@ -99,14 +99,14 @@ void SolarArrayPanel::MainRoutine(const int time_count) { if (CsvScenarioInterface::IsCsvScenarioEnabled()) { double time_query = compo_step_time_s_ * time_count; const auto solar_constant = srp_environment_->GetSolarConstant_W_m2(); - libra::Vector<3> sun_direction_body = CsvScenarioInterface::GetSunDirectionBody(time_query); - libra::Vector<3> normalized_sun_direction_body = sun_direction_body.CalcNormalizedVector(); + math::Vector<3> sun_direction_body = CsvScenarioInterface::GetSunDirectionBody(time_query); + math::Vector<3> normalized_sun_direction_body = sun_direction_body.CalcNormalizedVector(); power_generation_W_ = cell_efficiency_ * transmission_efficiency_ * solar_constant * (int)CsvScenarioInterface::GetSunFlag(time_query) * cell_area_m2_ * number_of_parallel_ * number_of_series_ * InnerProduct(normal_vector_, normalized_sun_direction_body); } else { const auto power_density = srp_environment_->GetPowerDensity_W_m2(); - libra::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); - libra::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); + math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); + math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); power_generation_W_ = cell_efficiency_ * transmission_efficiency_ * power_density * cell_area_m2_ * number_of_parallel_ * number_of_series_ * InnerProduct(normal_vector_, sun_dir_b); // TODO: Improve implementation. For example, update IV curve with sun direction and calculate generated power @@ -133,7 +133,7 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: double cell_area_m2; cell_area_m2 = sap_conf.ReadDouble(section_name.c_str(), "cell_area_m2"); - libra::Vector<3> normal_vector; + math::Vector<3> normal_vector; sap_conf.ReadVector(section_name.c_str(), "normal_vector_b", normal_vector); double cell_efficiency; @@ -166,7 +166,7 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: double cell_area_m2; cell_area_m2 = sap_conf.ReadDouble(section_name.c_str(), "cell_area_m2"); - libra::Vector<3> normal_vector; + math::Vector<3> normal_vector; sap_conf.ReadVector(section_name.c_str(), "normal_vector_b", normal_vector); double cell_efficiency; diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index e7150e911..e7cd68377 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -32,7 +32,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s); /** @@ -51,7 +51,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); /** * @fn SolarArrayPanel @@ -69,7 +69,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information */ SolarArrayPanel(ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - libra::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); /** * @fn SolarArrayPanel @@ -111,7 +111,7 @@ class SolarArrayPanel : public Component, public ILoggable { const int number_of_series_; //!< Number of series connected solar cells const int number_of_parallel_; //!< Number of parallel connected solar cells const double cell_area_m2_; //!< Solar cell area [m^2] - const libra::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame + const math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame const double cell_efficiency_; //!< Power generation efficiency of solar cell const double transmission_efficiency_; //!< Efficiency of transmission to PCU diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 252204cda..f22953960 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -11,7 +11,7 @@ // Constructor SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, const int component_id, - const libra::Vector<3> thruster_position_b_m, const libra::Vector<3> thrust_direction_b, const double max_magnitude_N, + const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics) : Component(prescaler, clock_generator), @@ -26,7 +26,7 @@ SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_genera } SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Vector<3> thruster_position_b_m, const libra::Vector<3> thrust_direction_b, const double max_magnitude_N, + const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), @@ -66,9 +66,9 @@ void SimpleThruster::CalcThrust() { output_thrust_b_N_ = mag * CalcThrustDirection(); } -void SimpleThruster::CalcTorque(const libra::Vector<3> center_of_mass_b_m) { - libra::Vector<3> vector_center2thruster = thruster_position_b_m_ - center_of_mass_b_m; - libra::Vector<3> torque = OuterProduct(vector_center2thruster, output_thrust_b_N_); +void SimpleThruster::CalcTorque(const math::Vector<3> center_of_mass_b_m) { + math::Vector<3> vector_center2thruster = thruster_position_b_m_ - center_of_mass_b_m; + math::Vector<3> torque = OuterProduct(vector_center2thruster, output_thrust_b_N_); output_torque_b_Nm_ = torque; } @@ -95,10 +95,10 @@ std::string SimpleThruster::GetLogValue() const { double SimpleThruster::CalcThrustMagnitude() { return duty_ * thrust_magnitude_max_N_; } -libra::Vector<3> SimpleThruster::CalcThrustDirection() { - libra::Vector<3> thrust_dir_b_true = thrust_direction_b_; +math::Vector<3> SimpleThruster::CalcThrustDirection() { + math::Vector<3> thrust_dir_b_true = thrust_direction_b_; if (direction_noise_standard_deviation_rad_ > 0.0 + DBL_EPSILON) { - libra::Vector<3> ex; // Fixme: to use outer product to generate orthogonal vector + math::Vector<3> ex; // Fixme: to use outer product to generate orthogonal vector ex[0] = 1.0; ex[1] = 0.0; ex[2] = 0.0; @@ -111,7 +111,7 @@ libra::Vector<3> SimpleThruster::CalcThrustDirection() { } libra::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); - libra::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); + math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); libra::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion thrust_dir_b_true = err_rot.FrameConversion(thrust_dir_b_true); // Add error diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index ed8e274c7..d9123f17b 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -12,7 +12,7 @@ #include "../logger/log_utility.hpp" -AirDrag::AirDrag(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, +AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled), wall_temperature_K_(wall_temperature_K), @@ -28,13 +28,13 @@ void AirDrag::Update(const LocalEnvironment& local_environment, const Dynamics& math::Matrix<3, 3> dcm_ecef2eci = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); - libra::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); + math::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); libra::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); - libra::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); + math::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); CalcTorqueForce(velocity_b_m_s, air_density_kg_m3); } -void AirDrag::CalcCoefficients(const libra::Vector<3>& velocity_b_m_s, const double air_density_kg_m3) { +void AirDrag::CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3) { double velocity_norm_m_s = velocity_b_m_s.CalcNorm(); CalcCnCt(velocity_b_m_s); for (size_t i = 0; i < surfaces_.size(); i++) { diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index b794cd3b4..6d5fe54fd 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -30,7 +30,7 @@ class AirDrag : public SurfaceForce { * @param [in] molecular_weight_g_mol: Molecular weight [g/mol] * @param [in] is_calculation_enabled: Calculation flag */ - AirDrag(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, + AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled = true); /** @@ -66,7 +66,7 @@ class AirDrag : public SurfaceForce { * @param [in] velocity_b_m_s: Spacecraft's velocity vector in the body frame [m/s] * @param [in] air_density_kg_m3: Air density around the spacecraft [kg/m^3] */ - void CalcCoefficients(const libra::Vector<3>& velocity_b_m_s, const double air_density_kg_m3); + void CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3); // internal function for calculation /** @@ -74,7 +74,7 @@ class AirDrag : public SurfaceForce { * @brief Calculate the Cn and Ct * @param [in] velocity_b_m_s: Spacecraft's velocity vector in the body frame [m/s] */ - void CalcCnCt(const libra::Vector<3>& velocity_b_m_s); + void CalcCnCt(const math::Vector<3>& velocity_b_m_s); /** * @fn CalcFunctionPi * @brief Calculate The Pi function in the algorithm diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index c898f18f0..b59bc7735 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -23,10 +23,10 @@ class Disturbance : public ILoggable { */ Disturbance(const bool is_calculation_enabled = true, const bool is_attitude_dependent = true) : is_calculation_enabled_(is_calculation_enabled), is_attitude_dependent_(is_attitude_dependent) { - force_b_N_ = libra::Vector<3>(0.0); - torque_b_Nm_ = libra::Vector<3>(0.0); - acceleration_i_m_s2_ = libra::Vector<3>(0.0); - acceleration_b_m_s2_ = libra::Vector<3>(0.0); + force_b_N_ = math::Vector<3>(0.0); + torque_b_Nm_ = math::Vector<3>(0.0); + acceleration_i_m_s2_ = math::Vector<3>(0.0); + acceleration_b_m_s2_ = math::Vector<3>(0.0); } /** @@ -60,22 +60,22 @@ class Disturbance : public ILoggable { * @fn GetTorque_b_Nm * @brief Return the disturbance torque in the body frame [Nm] */ - virtual inline libra::Vector<3> GetTorque_b_Nm() { return torque_b_Nm_; } + virtual inline math::Vector<3> GetTorque_b_Nm() { return torque_b_Nm_; } /** * @fn GetForce_b_N * @brief Return the disturbance force in the body frame [N] */ - virtual inline libra::Vector<3> GetForce_b_N() { return force_b_N_; } + virtual inline math::Vector<3> GetForce_b_N() { return force_b_N_; } /** * @fn GetAcceleration_b_m_s2 * @brief Return the disturbance acceleration in the body frame [m/s2] */ - virtual inline libra::Vector<3> GetAcceleration_b_m_s2() { return acceleration_b_m_s2_; } + virtual inline math::Vector<3> GetAcceleration_b_m_s2() { return acceleration_b_m_s2_; } /** * @fn GetAcceleration_i_m_s2 * @brief Return the disturbance acceleration in the inertial frame [m/s2] */ - virtual inline libra::Vector<3> GetAcceleration_i_m_s2() { return acceleration_i_m_s2_; } + virtual inline math::Vector<3> GetAcceleration_i_m_s2() { return acceleration_i_m_s2_; } /** * @fn IsAttitudeDependent * @brief Return the attitude dependent flag @@ -85,10 +85,10 @@ class Disturbance : public ILoggable { protected: bool is_calculation_enabled_; //!< Flag to calculate the disturbance bool is_attitude_dependent_; //!< Flag to show the disturbance depends on attitude information - libra::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] - libra::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] - libra::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] - libra::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] + math::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] + math::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] + math::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] + math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] }; #endif // S2E_DISTURBANCES_DISTURBANCE_HPP_ diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index d5eeaaa40..62af465ba 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -55,19 +55,19 @@ class Disturbances { * @fn GetTorque * @brief Return total disturbance torque in the body frame [Nm] */ - inline libra::Vector<3> GetTorque_b_Nm() { return total_torque_b_Nm_; } + inline math::Vector<3> GetTorque_b_Nm() { return total_torque_b_Nm_; } /** * @fn GetTorque * @brief Return total disturbance force in the body frame [N] */ - inline libra::Vector<3> GetForce_b_N() { return total_force_b_N_; } + inline math::Vector<3> GetForce_b_N() { return total_force_b_N_; } /** * @fn GetTorque * @brief Return total disturbance acceleration in the inertial frame [m/s2] */ - inline libra::Vector<3> GetAcceleration_i_m_s2() { return total_acceleration_i_m_s2_; } + inline math::Vector<3> GetAcceleration_i_m_s2() { return total_acceleration_i_m_s2_; } private: std::string initialize_file_name_; //!< Initialization file name diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 412e0de07..cd2d1b03f 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -20,8 +20,8 @@ Geopotential::Geopotential(const int degree, const std::string file_path, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), degree_(degree) { // Initialize - acceleration_ecef_m_s2_ = libra::Vector<3>(0.0); - debug_pos_ecef_m_ = libra::Vector<3>(0.0); + acceleration_ecef_m_s2_ = math::Vector<3>(0.0); + debug_pos_ecef_m_ = math::Vector<3>(0.0); // degree if (degree_ > 360) { degree_ = 360; diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 1360183fb..8eee6692d 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -67,7 +67,7 @@ class Geopotential : public Disturbance { Vector<3> acceleration_ecef_m_s2_; //!< Calculated acceleration in the ECEF frame [m/s2] // debug - libra::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] + math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] double time_ms_ = 0.0; //!< Calculation time [ms] /** diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 17daa5ba5..853aa40b9 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -23,10 +23,10 @@ void GravityGradient::Update(const LocalEnvironment& local_environment, const Dy dynamics.GetAttitude().GetInertiaTensor_b_kgm2()); } -libra::Vector<3> GravityGradient::CalcTorque_b_Nm(const libra::Vector<3> earth_position_from_sc_b_m, +math::Vector<3> GravityGradient::CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2) { double r_norm_m = earth_position_from_sc_b_m.CalcNorm(); - libra::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector + math::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector u_b /= r_norm_m; double coeff = 3.0 * gravity_constant_m3_s2_ / pow(r_norm_m, 3.0); diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 327c4873e..be957e19c 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -65,7 +65,7 @@ class GravityGradient : public Disturbance { * @param [in] inertia_tensor_b_kgm2: Inertia Tensor at body frame [kg*m^2] * @return Calculated torque at body frame [Nm] */ - libra::Vector<3> CalcTorque_b_Nm(const libra::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2); + math::Vector<3> CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2); }; /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index a794f8c71..769372476 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -20,8 +20,8 @@ LunarGravityField::LunarGravityField(const int degree, const std::string file_path, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), degree_(degree) { // Initialize - acceleration_mcmf_m_s2_ = libra::Vector<3>(0.0); - debug_pos_mcmf_m_ = libra::Vector<3>(0.0); + acceleration_mcmf_m_s2_ = math::Vector<3>(0.0); + debug_pos_mcmf_m_ = math::Vector<3>(0.0); debug_pos_mcmf_m_[0] = 2000000; debug_pos_mcmf_m_[1] = 2000000; debug_pos_mcmf_m_[2] = 2000000; @@ -90,8 +90,8 @@ void LunarGravityField::Update(const LocalEnvironment &local_environment, const const CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); - libra::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); - libra::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; + math::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); + math::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; #ifdef DEBUG_LUNAR_GRAVITY_FIELD std::chrono::system_clock::time_point start, end; diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 61c592ab3..5818b619f 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -71,7 +71,7 @@ class LunarGravityField : public Disturbance { Vector<3> acceleration_mcmf_m_s2_; //!< Calculated acceleration in the MCMF(Moon Centered Moon Fixed) frame [m/s2] // debug - libra::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] + math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] double time_ms_ = 0.0; //!< Calculation time [ms] /** diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 0dce38b1e..2b3c4c069 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -31,8 +31,8 @@ void MagneticDisturbance::Update(const LocalEnvironment& local_environment, cons } void MagneticDisturbance::CalcRMM() { - static libra::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); - static libra::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); + static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); + static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant static libra::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), global_randomization.MakeSeed()); diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index d056cc43f..38683a33b 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -50,7 +50,7 @@ class MagneticDisturbance : public Disturbance { private: const double kMagUnit_ = 1.0e-9; //!< Constant value to change the unit [nT] -> [T] - libra::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] + math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] const ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters /** @@ -64,7 +64,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] magnetic_field_b_nT: Magnetic field vector at the body frame [nT] * @return Calculated disturbance torque in body frame [Nm] */ - libra::Vector<3> CalcTorque_b_Nm(const libra::Vector<3>& magnetic_field_b_nT); + math::Vector<3> CalcTorque_b_Nm(const math::Vector<3>& magnetic_field_b_nT); }; /** diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index 3ecd0ca8d..b07d2a858 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -11,17 +11,17 @@ #include "../logger/log_utility.hpp" SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, - const libra::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) + const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} void SolarRadiationPressureDisturbance::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { UNUSED(dynamics); - libra::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); + math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); CalcTorqueForce(sun_position_from_sc_b_m, local_environment.GetSolarRadiationPressure().GetPressure_N_m2()); } -void SolarRadiationPressureDisturbance::CalcCoefficients(const libra::Vector<3>& input_direction_b, const double item) { +void SolarRadiationPressureDisturbance::CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) { UNUSED(input_direction_b); for (size_t i = 0; i < surfaces_.size(); i++) { // Calculate for each surface diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 5dc04a51c..7ec4e9bbc 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -25,7 +25,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SolarRadiationPressureDisturbance(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, + SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** @@ -55,7 +55,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] input_direction_b: Direction vector of the sun at the body frame * @param [in] item: Solar pressure [N/m^2] */ - void CalcCoefficients(const libra::Vector<3>& input_direction_b, const double item); + void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item); }; /** diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 8cf5c7278..348944267 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -7,7 +7,7 @@ #include "../math_physics/math/vector.hpp" -SurfaceForce::SurfaceForce(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) +SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { // Initialize vectors size_t num = surfaces_.size(); @@ -17,23 +17,23 @@ SurfaceForce::SurfaceForce(const std::vector& surfaces, const libra::Ve sin_theta_.assign(num, 0.0); } -libra::Vector<3> SurfaceForce::CalcTorqueForce(libra::Vector<3>& input_direction_b, double item) { +math::Vector<3> SurfaceForce::CalcTorqueForce(math::Vector<3>& input_direction_b, double item) { CalcTheta(input_direction_b); CalcCoefficients(input_direction_b, item); - libra::Vector<3> force_b_N(0.0); - libra::Vector<3> torque_b_Nm(0.0); - libra::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); + math::Vector<3> force_b_N(0.0); + math::Vector<3> torque_b_Nm(0.0); + math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); for (size_t i = 0; i < surfaces_.size(); i++) { if (cos_theta_[i] > 0.0) { // if the surface faces to the disturbance source (sun or air) // calc direction of in-plane force - libra::Vector<3> normal = surfaces_[i].GetNormal_b(); - libra::Vector<3> ncu = OuterProduct(input_b_normal, normal); - libra::Vector<3> ncu_normalized = ncu.CalcNormalizedVector(); - libra::Vector<3> in_plane_force_direction = OuterProduct(ncu_normalized, normal); + math::Vector<3> normal = surfaces_[i].GetNormal_b(); + math::Vector<3> ncu = OuterProduct(input_b_normal, normal); + math::Vector<3> ncu_normalized = ncu.CalcNormalizedVector(); + math::Vector<3> in_plane_force_direction = OuterProduct(ncu_normalized, normal); // calc force - libra::Vector<3> force_per_surface_b_N = -1.0 * normal_coefficients_[i] * normal + tangential_coefficients_[i] * in_plane_force_direction; + math::Vector<3> force_per_surface_b_N = -1.0 * normal_coefficients_[i] * normal + tangential_coefficients_[i] * in_plane_force_direction; force_b_N += force_per_surface_b_N; // calc torque torque_b_Nm += OuterProduct(surfaces_[i].GetPosition_b_m() - center_of_gravity_b_m_, force_per_surface_b_N); @@ -44,8 +44,8 @@ libra::Vector<3> SurfaceForce::CalcTorqueForce(libra::Vector<3>& input_direction return torque_b_Nm_; } -void SurfaceForce::CalcTheta(libra::Vector<3>& input_direction_b) { - libra::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); +void SurfaceForce::CalcTheta(math::Vector<3>& input_direction_b) { + math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); for (size_t i = 0; i < surfaces_.size(); i++) { cos_theta_[i] = InnerProduct(surfaces_[i].GetNormal_b(), input_b_normal); diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index b07b7101f..49e4bd46d 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -28,7 +28,7 @@ class SurfaceForce : public Disturbance { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SurfaceForce(const std::vector& surfaces, const libra::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); + SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** * @fn ~SurfaceForce * @brief Destructor @@ -38,7 +38,7 @@ class SurfaceForce : public Disturbance { protected: // Spacecraft Structure parameters const std::vector& surfaces_; //!< List of surfaces - const libra::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] + const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] // Internal calculated variables std::vector normal_coefficients_; //!< coefficients for out-plane force for each surface @@ -54,13 +54,13 @@ class SurfaceForce : public Disturbance { * @param [in] item: Parameter which decide the magnitude of the disturbances (e.g., Solar flux, air density) * @return Calculated disturbance torque in body frame [Nm] */ - libra::Vector<3> CalcTorqueForce(libra::Vector<3>& input_direction_b, double item); + math::Vector<3> CalcTorqueForce(math::Vector<3>& input_direction_b, double item); /** * @fn CalcTheta * @brief Calculate cosX and sinX * @param [in] input_direction_b: Direction of disturbance source at the body frame */ - void CalcTheta(libra::Vector<3>& input_direction_b); + void CalcTheta(math::Vector<3>& input_direction_b); /** * @fn CalcCoefficients @@ -68,7 +68,7 @@ class SurfaceForce : public Disturbance { * @param [in] input_direction_b: Direction of disturbance source at the body frame * @param [in] item: Parameter which decide the magnitude of the disturbances (e.g., Solar flux, air density) */ - virtual void CalcCoefficients(const libra::Vector<3>& input_direction_b, const double item) = 0; + virtual void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) = 0; }; #endif // S2E_DISTURBANCES_SURFACE_FORCE_HPP_ diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 86917898d..72bb2d24f 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -9,18 +9,18 @@ ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), third_body_list_(third_body_list) { - acceleration_i_m_s2_ = libra::Vector<3>(0.0); + acceleration_i_m_s2_ = math::Vector<3>(0.0); } ThirdBodyGravity::~ThirdBodyGravity() {} void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { - acceleration_i_m_s2_ = libra::Vector<3>(0.0); // initialize + acceleration_i_m_s2_ = math::Vector<3>(0.0); // initialize - libra::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); + math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); for (auto third_body : third_body_list_) { - libra::Vector<3> third_body_position_from_sc_i_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_i_m(third_body.c_str()); - libra::Vector<3> third_body_pos_i_m = sc_position_i_m + third_body_position_from_sc_i_m; + math::Vector<3> third_body_position_from_sc_i_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_i_m(third_body.c_str()); + math::Vector<3> third_body_pos_i_m = sc_position_i_m + third_body_position_from_sc_i_m; double gravity_constant = local_environment.GetCelestialInformation().GetGlobalInformation().GetGravityConstant_m3_s2(third_body.c_str()); third_body_acceleration_i_m_s2_ = CalcAcceleration_i_m_s2(third_body_pos_i_m, third_body_position_from_sc_i_m, gravity_constant); @@ -28,8 +28,8 @@ void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const D } } -libra::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const libra::Vector<3> s, const libra::Vector<3> sr, const double gravity_constant_m_s2) { - libra::Vector<3> acceleration_i_m_s2; +math::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const math::Vector<3> s, const math::Vector<3> sr, const double gravity_constant_m_s2) { + math::Vector<3> acceleration_i_m_s2; double s_norm = s.CalcNorm(); double s_norm3 = s_norm * s_norm * s_norm; diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 564a823ce..9d95d2ed1 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -43,7 +43,7 @@ class ThirdBodyGravity : public Disturbance { private: std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances - libra::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] + math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] // Override classes for ILoggable /** @@ -65,7 +65,7 @@ class ThirdBodyGravity : public Disturbance { * @param [in] GM: The gravitational constants of the third celestial body [m3/s2] * @return Third body disturbance acceleration in the inertial frame in unit [m/s2] */ - libra::Vector<3> CalcAcceleration_i_m_s2(const libra::Vector<3> s, const libra::Vector<3> sr, const double gravity_constant_m_s2); + math::Vector<3> CalcAcceleration_i_m_s2(const math::Vector<3> s, const math::Vector<3> sr, const double gravity_constant_m_s2); }; /** diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index fb3621da0..3e7fe70c5 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -8,13 +8,13 @@ Attitude::Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { - angular_velocity_b_rad_s_ = libra::Vector<3>(0.0); + angular_velocity_b_rad_s_ = math::Vector<3>(0.0); quaternion_i2b_ = libra::Quaternion(0.0, 0.0, 0.0, 1.0); - torque_b_Nm_ = libra::Vector<3>(0.0); - angular_momentum_spacecraft_b_Nms_ = libra::Vector<3>(0.0); - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); - angular_momentum_total_b_Nms_ = libra::Vector<3>(0.0); - angular_momentum_total_i_Nms_ = libra::Vector<3>(0.0); + torque_b_Nm_ = math::Vector<3>(0.0); + angular_momentum_spacecraft_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_total_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_total_i_Nms_ = math::Vector<3>(0.0); angular_momentum_total_Nms_ = 0.0; kinetic_energy_J_ = 0.0; } @@ -57,7 +57,7 @@ void Attitude::CalcAngularMomentum(void) { kinetic_energy_J_ = 0.5 * libra::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } -math::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s) { +math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s) { math::Matrix<4, 4> angular_velocity_matrix; angular_velocity_matrix[0][0] = 0.0f; diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 1ff73967b..89449af15 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -40,7 +40,7 @@ class Attitude : public ILoggable, public SimulationObject { * @fn GetAngularVelocity_b_rad_s * @brief Return angular velocity of spacecraft body-fixed frame with respect to the inertial frame [rad/s] */ - inline libra::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } + inline math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } /** * @fn GetQuaternion_i2b * @brief Return attitude quaternion from the inertial frame to the body fixed frame @@ -67,7 +67,7 @@ class Attitude : public ILoggable, public SimulationObject { * @fn SetAngularVelocity_b_rad_s * @brief Set angular velocity of the body fixed frame with respect to the inertial frame [rad/s] */ - inline void SetAngularVelocity_b_rad_s(const libra::Vector<3> angular_velocity_b_rad_s) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; } + inline void SetAngularVelocity_b_rad_s(const math::Vector<3> angular_velocity_b_rad_s) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; } /** * @fn SetQuaternion_i2b * @brief Set attitude quaternion from the inertial frame to the body frame @@ -77,17 +77,17 @@ class Attitude : public ILoggable, public SimulationObject { * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const libra::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } /** * @fn AddTorque_b_Nm * @brief Add torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void AddTorque_b_Nm(const libra::Vector<3> torque_b_Nm) { torque_b_Nm_ += torque_b_Nm; } + inline void AddTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ += torque_b_Nm; } /** * @fn SetRwAngularMomentum_b_Nms * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] */ - inline void SetRwAngularMomentum_b_Nms(const libra::Vector<3> angular_momentum_rw_b_Nms) { + inline void SetRwAngularMomentum_b_Nms(const math::Vector<3> angular_momentum_rw_b_Nms) { angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_rw_b_Nms; } @@ -116,15 +116,15 @@ class Attitude : public ILoggable, public SimulationObject { protected: bool is_calc_enabled_ = true; //!< Calculation flag double propagation_step_s_; //!< Propagation step [sec] - libra::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] + math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] libra::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame - libra::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] + math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] const math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] - libra::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] - libra::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] - libra::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] - libra::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] + math::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] + math::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + math::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] + math::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] double angular_momentum_total_Nms_; //!< Norm of total angular momentum [Nms] double kinetic_energy_J_; //!< Rotational Kinetic Energy of Spacecraft [J] @@ -140,6 +140,6 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Generate angular velocity matrix for kinematics calculation * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] */ -math::Matrix<4, 4> CalcAngularVelocityMatrix(libra::Vector<3> angular_velocity_b_rad_s); +math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s); #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index d92a34e31..40ee81dc3 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -9,8 +9,8 @@ #include #include -AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, +AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; @@ -18,7 +18,7 @@ AttitudeRk4::AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const torque_b_Nm_ = torque_b_Nm; propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); CalcAngularMomentum(); @@ -32,7 +32,7 @@ void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); //!< Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); //!< Consider how to handle this variable CalcAngularMomentum(); } @@ -56,29 +56,29 @@ void AttitudeRk4::Propagate(const double end_time_s) { CalcAngularMomentum(); } -libra::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t) { +math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(math::Vector<7> x, double t) { UNUSED(t); - libra::Vector<7> dxdt; + math::Vector<7> dxdt; - libra::Vector<3> omega_b; + math::Vector<3> omega_b; for (int i = 0; i < 3; i++) { omega_b[i] = x[i]; } - libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; - libra::Vector<3> rhs = + math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; + math::Vector<3> rhs = inverse_inertia_tensor_ * (torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; } - libra::Vector<4> quaternion_i2b; + math::Vector<4> quaternion_i2b; for (int i = 0; i < 4; i++) { quaternion_i2b[i] = x[i + 3]; } - libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; + math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; for (int i = 0; i < 4; i++) { dxdt[i + 3] = d_quaternion[i]; @@ -88,7 +88,7 @@ libra::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(libra::Vector<7> x, } void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { - libra::Vector<7> x; + math::Vector<7> x; for (int i = 0; i < 3; i++) { x[i] = angular_velocity_b_rad_s_[i]; } @@ -96,8 +96,8 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { x[i + 3] = quaternion_i2b_[i]; } - libra::Vector<7> k1, k2, k3, k4; - libra::Vector<7> xk2, xk3, xk4; + math::Vector<7> k1, k2, k3, k4; + math::Vector<7> xk2, xk3, xk4; k1 = AttitudeDynamicsAndKinematics(x, t); xk2 = x + (dt / 2.0) * k1; @@ -110,7 +110,7 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); - libra::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); + math::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = next_x[i]; diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 1898d4355..33dd8002e 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -24,8 +24,8 @@ class AttitudeRk4 : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeRk4(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 @@ -51,7 +51,7 @@ class AttitudeRk4 : public Attitude { double current_propagation_time_s_; //!< current time [sec] math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - libra::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + math::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] /** * @fn AttitudeDynamicsAndKinematics @@ -59,7 +59,7 @@ class AttitudeRk4 : public Attitude { * @param [in] x: State vector (angular velocity and quaternion) * @param [in] t: Unused TODO: remove? */ - libra::Vector<7> AttitudeDynamicsAndKinematics(libra::Vector<7> x, double t); + math::Vector<7> AttitudeDynamicsAndKinematics(math::Vector<7> x, double t); /** * @fn RungeKuttaOneStep * @brief Equation for one step of Runge-Kutta method diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 20aa3f234..ecee04374 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -9,9 +9,9 @@ #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( - const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, - const double intrinsic_angular_velocity_cantilever_rad_s, const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const double intrinsic_angular_velocity_cantilever_rad_s, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), numerical_integrator_(propagation_step_s, attitude_ode_, @@ -21,7 +21,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( torque_b_Nm_ = torque_b_Nm; propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); attitude_ode_.SetInertiaTensorCantilever_kgm2(inertia_tensor_cantilever_kgm2); attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); @@ -65,7 +65,7 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = libra::Vector<3>(0.0); //!< TODO: Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); //!< TODO: Consider how to handle this variable CalcAngularMomentum(); } @@ -75,13 +75,13 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { math::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); assert(end_time_s - current_propagation_time_s_ > 1e-6); math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); - libra::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; + math::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); - libra::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, + math::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, quaternion_i2b_, euler_angular_cantilever_rad_); numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index d917fc1e0..e336bafad 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -31,10 +31,10 @@ class AttitudeWithCantileverVibration : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeWithCantileverVibration(const libra::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + AttitudeWithCantileverVibration(const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, - const libra::Vector<3>& torque_b_Nm, const double propagation_step_s, + const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeWithCantileverVibration @@ -70,8 +70,8 @@ class AttitudeWithCantileverVibration : public Attitude { private: double current_propagation_time_s_; //!< current time [sec] - libra::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] - libra::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] + math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] + math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] libra::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; libra::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 155445ffc..d28b2c178 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -8,8 +8,8 @@ #include ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, - const libra::Quaternion quaternion_i2b, const libra::Vector<3> main_target_direction_b, - const libra::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const libra::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, + const math::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), @@ -54,7 +54,7 @@ void ControlledAttitude::Initialize(void) { } void ControlledAttitude::Propagate(const double end_time_s) { - libra::Vector<3> main_direction_i, sub_direction_i; + math::Vector<3> main_direction_i, sub_direction_i; if (!is_calc_enabled_) return; if (main_mode_ == AttitudeControlMode::kInertialStabilize) { @@ -73,22 +73,22 @@ void ControlledAttitude::Propagate(const double end_time_s) { return; } -libra::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mode) { - libra::Vector<3> direction; +math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mode) { + math::Vector<3> direction; if (mode == AttitudeControlMode::kSunPointing) { direction = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); // When the local_celestial_information is not initialized. FIXME: This is temporary codes for attitude initialize. if (direction.CalcNorm() == 0.0) { - libra::Vector<3> sun_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN"); - libra::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); + math::Vector<3> sun_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN"); + math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); direction = sun_position_i_m - spacecraft_position_i_m; } } else if (mode == AttitudeControlMode::kEarthCenterPointing) { direction = local_celestial_information_->GetPositionFromSpacecraft_i_m("EARTH"); // When the local_celestial_information is not initialized. FIXME: This is temporary codes for attitude initialize. if (direction.CalcNorm() == 0.0) { - libra::Vector<3> earth_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("EARTH"); - libra::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); + math::Vector<3> earth_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("EARTH"); + math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); direction = earth_position_i_m - spacecraft_position_i_m; } } else if (mode == AttitudeControlMode::kVelocityDirectionPointing) { @@ -103,7 +103,7 @@ libra::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode m return direction; } -void ControlledAttitude::PointingControl(const libra::Vector<3> main_direction_i, const libra::Vector<3> sub_direction_i) { +void ControlledAttitude::PointingControl(const math::Vector<3> main_direction_i, const math::Vector<3> sub_direction_i) { // Calc DCM ECI->Target math::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); // Calc DCM Target->body @@ -114,14 +114,14 @@ void ControlledAttitude::PointingControl(const libra::Vector<3> main_direction_i quaternion_i2b_ = libra::Quaternion::ConvertFromDcm(dcm_i2b); } -math::Matrix<3, 3> ControlledAttitude::CalcDcm(const libra::Vector<3> main_direction, const libra::Vector<3> sub_direction) { +math::Matrix<3, 3> ControlledAttitude::CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction) { // Calc basis vectors - libra::Vector<3> ex, ey, ez; + math::Vector<3> ex, ey, ez; ex = main_direction; - libra::Vector<3> tmp1 = OuterProduct(ex, sub_direction); - libra::Vector<3> tmp2 = OuterProduct(tmp1, ex); + math::Vector<3> tmp1 = OuterProduct(ex, sub_direction); + math::Vector<3> tmp2 = OuterProduct(tmp1, ex); ey = tmp2.CalcNormalizedVector(); - libra::Vector<3> tmp3 = OuterProduct(ex, ey); + math::Vector<3> tmp3 = OuterProduct(ex, ey); ez = tmp3.CalcNormalizedVector(); // Generate DCM @@ -153,7 +153,7 @@ AttitudeControlMode ConvertStringToCtrlMode(const std::string mode) { } void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { - libra::Vector<3> controlled_torque_b_Nm(0.0); + math::Vector<3> controlled_torque_b_Nm(0.0); if (previous_calc_time_s_ > 0.0) { double time_diff_sec = current_time_s - previous_calc_time_s_; @@ -161,7 +161,7 @@ void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { libra::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; q_diff = (2.0 / time_diff_sec) * q_diff; - libra::Vector<3> angular_acc_b_rad_s2_; + math::Vector<3> angular_acc_b_rad_s2_; for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = q_diff[i]; angular_acc_b_rad_s2_[i] = (previous_omega_b_rad_s_[i] - angular_velocity_b_rad_s_[i]) / time_diff_sec; @@ -169,8 +169,8 @@ void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { math::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); controlled_torque_b_Nm = inv_inertia_tensor * angular_acc_b_rad_s2_; } else { - angular_velocity_b_rad_s_ = libra::Vector<3>(0.0); - controlled_torque_b_Nm = libra::Vector<3>(0.0); + angular_velocity_b_rad_s_ = math::Vector<3>(0.0); + controlled_torque_b_Nm = math::Vector<3>(0.0); } // Add torque with disturbances AddTorque_b_Nm(controlled_torque_b_Nm); diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index c41ff82be..35fe317f9 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -55,7 +55,7 @@ class ControlledAttitude : public Attitude { * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const libra::Quaternion quaternion_i2b, - const libra::Vector<3> main_target_direction_b, const libra::Vector<3> sub_target_direction_b, + const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name = "attitude"); /** @@ -84,12 +84,12 @@ class ControlledAttitude : public Attitude { * @fn SetMainTargetDirection_b * @brief Set main target direction on the body fixed frame */ - inline void SetMainTargetDirection_b(libra::Vector<3> main_target_direction_b) { main_target_direction_b_ = main_target_direction_b; } + inline void SetMainTargetDirection_b(math::Vector<3> main_target_direction_b) { main_target_direction_b_ = main_target_direction_b; } /** * @fn SetSubTargetDirection_b * @brief Set sub target direction on the body fixed frame */ - inline void SetSubTargetDirection_b(libra::Vector<3> sub_target_direction_b) { sub_target_direction_b_ = sub_target_direction_b; } + inline void SetSubTargetDirection_b(math::Vector<3> sub_target_direction_b) { sub_target_direction_b_ = sub_target_direction_b; } /** * @fn Propagate @@ -101,11 +101,11 @@ class ControlledAttitude : public Attitude { private: AttitudeControlMode main_mode_; //!< Main control mode AttitudeControlMode sub_mode_; //!< Sub control mode - libra::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame - libra::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame + math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame + math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame double previous_calc_time_s_ = -1.0; //!< Previous time of velocity calculation [sec] libra::Quaternion previous_quaternion_i2b_; //!< Previous quaternion - libra::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] + math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] const double kMinDirectionAngle_rad = 30.0 * libra::deg_to_rad; //!< Minimum angle b/w main and sub direction // TODO Change with ini file @@ -126,14 +126,14 @@ class ControlledAttitude : public Attitude { * @param [in] mode: Attitude control mode * @return Target direction at the inertia frame */ - libra::Vector<3> CalcTargetDirection_i(AttitudeControlMode mode); + math::Vector<3> CalcTargetDirection_i(AttitudeControlMode mode); /** * @fn PointingControl * @brief Calculate attitude quaternion * @param [in] main_direction_i: Main target direction in the inertial frame * @param [in] sub_direction_i: Sub target direction in the inertial frame */ - void PointingControl(const libra::Vector<3> main_direction_i, const libra::Vector<3> sub_direction_i); + void PointingControl(const math::Vector<3> main_direction_i, const math::Vector<3> sub_direction_i); /** * @fn CalcAngularVelocity * @brief Calculate angular velocity @@ -146,7 +146,7 @@ class ControlledAttitude : public Attitude { * @param [in] main_direction: Main target direction * @param [in] sub_direction: Sub target direction */ - math::Matrix<3, 3> CalcDcm(const libra::Vector<3> main_direction, const libra::Vector<3> sub_direction); + math::Matrix<3, 3> CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction); }; #endif // S2E_DYNAMICS_ATTITUDE_CONTROLLED_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index daee72780..a57f34e65 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -16,9 +16,9 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel const std::string propagate_mode = ini_file.ReadString(section_, "propagate_mode"); const std::string initialize_mode = ini_file.ReadString(section_, "initialize_mode"); - libra::Vector<3> omega_b; + math::Vector<3> omega_b; libra::Quaternion quaternion_i2b; - libra::Vector<3> torque_b; + math::Vector<3> torque_b; if (initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) IniAccess ini_file_ca(file_name); @@ -30,7 +30,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - libra::Vector<3> main_target_direction_b, sub_target_direction_b; + math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); ini_file_ca.ReadVector(section_ca_, "sub_pointing_direction_b", sub_target_direction_b); std::string mc_name_temp = section_ + std::to_string(spacecraft_id) + "_TEMP"; @@ -38,8 +38,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel inertia_tensor_kgm2, local_celestial_information, orbit, mc_name_temp); attitude_temp->Propagate(step_width_s); quaternion_i2b = attitude_temp->GetQuaternion_i2b(); - omega_b = libra::Vector<3>(0.0); - torque_b = libra::Vector<3>(0.0); + omega_b = math::Vector<3>(0.0); + torque_b = math::Vector<3>(0.0); } else { // Including the case: initialize_mode == "MANUAL" ini_file.ReadVector(section_, "initial_angular_velocity_b_rad_s", omega_b); @@ -55,7 +55,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel const char* section_cantilever = "CANTILEVER_PARAMETERS"; math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; - libra::Vector<9> inertia_vec; + math::Vector<9> inertia_vec; ini_structure.ReadVector(section_cantilever, "inertia_tensor_cantilever_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { @@ -79,7 +79,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); libra::Quaternion quaternion_i2b; ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - libra::Vector<3> main_target_direction_b, sub_target_direction_b; + math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); ini_file_ca.ReadVector(section_ca_, "sub_pointing_direction_b", sub_target_direction_b); diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 4f6ec3745..28f4b5ac9 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -28,10 +28,10 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] euler_angule_cantilever_rad: Euler angle of the cantilever@ body-fixed frame [rad] */ - libra::Vector<13> SetStateFromPhysicalQuantities(const libra::Vector<3> angular_velocity_b_rad_s, - const libra::Vector<3> angular_velocity_cantilever_rad_s, const libra::Quaternion quaternion_i2b, - const libra::Vector<3> euler_angule_cantilever_rad) const { - libra::Vector<13> state; + math::Vector<13> SetStateFromPhysicalQuantities(const math::Vector<3> angular_velocity_b_rad_s, + const math::Vector<3> angular_velocity_cantilever_rad_s, const libra::Quaternion quaternion_i2b, + const math::Vector<3> euler_angule_cantilever_rad) const { + math::Vector<13> state; for (size_t i = 0; i < 3; i++) { state[i] = angular_velocity_b_rad_s[i]; } @@ -52,9 +52,9 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @brief Set physical quantities from state acquired by calculation of the ordinary differential equation * @param [in] state: state variables used to calculate the ordinary differential equation */ - void SetPhysicalQuantitiesFromState(const libra::Vector<13> state, libra::Vector<3>& angular_velocity_b_rad_s, - libra::Vector<3>& angular_velocity_cantilever_rad_s, libra::Quaternion& quaternion_i2b, - libra::Vector<3>& euler_angular_cantilever_rad) const { + void SetPhysicalQuantitiesFromState(const math::Vector<13> state, math::Vector<3>& angular_velocity_b_rad_s, + math::Vector<3>& angular_velocity_cantilever_rad_s, libra::Quaternion& quaternion_i2b, + math::Vector<3>& euler_angular_cantilever_rad) const { for (size_t i = 0; i < 3; i++) { angular_velocity_b_rad_s[i] = state[i]; } @@ -72,24 +72,24 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { Vector<13> DerivativeFunction(const double time_s, const Vector<13>& state) const override { UNUSED(time_s); - libra::Vector<13> output; + math::Vector<13> output; - libra::Vector<3> omega_b_rad_s; - libra::Vector<3> omega_cantilever_rad_s; + math::Vector<3> omega_b_rad_s; + math::Vector<3> omega_cantilever_rad_s; libra::Quaternion quaternion_i2b; - libra::Vector<3> euler_angle_cantilever_rad; + math::Vector<3> euler_angle_cantilever_rad; SetPhysicalQuantitiesFromState(state, omega_b_rad_s, omega_cantilever_rad_s, quaternion_i2b, euler_angle_cantilever_rad); - libra::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; - libra::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; + math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; + math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; - libra::Vector<3> angular_accelaration_cantilever_rad_s2 = + math::Vector<3> angular_accelaration_cantilever_rad_s2 = -(inverse_equivalent_inertia_tensor_cantilever_ * (attenuation_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) - inverse_inertia_tensor_ * net_torque_b_Nm; - libra::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); + math::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); for (size_t i = 0; i < 3; ++i) { output[i] = rhs[i]; @@ -99,7 +99,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; } - libra::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (libra::Vector<4>(quaternion_i2b)); + math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (math::Vector<4>(quaternion_i2b)); for (size_t i = 0; i < 4; i++) { output[i + 6] = d_quaternion[i]; @@ -130,7 +130,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn GetTorqueInertiaTensor_b_Nm * @brief Get torque generated by inertia tensor [Nm] */ - inline libra::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } + inline math::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } /** * @fn GetInverseInertiaTensor * @brief Get inverse of inertia tensor @@ -167,19 +167,19 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const libra::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } /** * @fn SetTorqueInertiaTensor_b_Nm * @brief Set torque generated by inertia tensor [Nm] */ - inline void SetTorqueInertiaTensor_b_Nm(const libra::Vector<3> torque_inertia_tensor_b_Nm) { + inline void SetTorqueInertiaTensor_b_Nm(const math::Vector<3> torque_inertia_tensor_b_Nm) { torque_inertia_tensor_b_Nm_ = torque_inertia_tensor_b_Nm; } /** * @fn SetAngularMomentumReactionWheel_b_Nms * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] */ - inline void SetAngularMomentumReactionWheel_b_Nms(const libra::Vector<3> angular_momentum_reaction_wheel_b_Nms) { + inline void SetAngularMomentumReactionWheel_b_Nms(const math::Vector<3> angular_momentum_reaction_wheel_b_Nms) { angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_reaction_wheel_b_Nms; } /** @@ -212,9 +212,9 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { protected: double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient double spring_coefficient_ = 0.0; //!< Spring coefficient - libra::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] - libra::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] - libra::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + math::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] + math::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] + math::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] math::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 04d0886a7..ef54a9f29 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -59,7 +59,7 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia } void Dynamics::ClearForceTorque(void) { - libra::Vector<3> zero(0.0); + math::Vector<3> zero(0.0); attitude_->SetTorque_b_Nm(zero); orbit_->SetAcceleration_i_m_s2(zero); } diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index e8a366555..327cc399a 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -63,13 +63,13 @@ class Dynamics { * @brief Add input torque for the attitude dynamics propagation * @param [in] torque_b_Nm: Torque in the body fixed frame [Nm] */ - inline void AddTorque_b_Nm(libra::Vector<3> torque_b_Nm) { attitude_->AddTorque_b_Nm(torque_b_Nm); } + inline void AddTorque_b_Nm(math::Vector<3> torque_b_Nm) { attitude_->AddTorque_b_Nm(torque_b_Nm); } /** * @fn AddForce_b_N * @brief Add input force for the orbit dynamics propagation * @param [in] force_b_N: Force in the body fixed frame [N] */ - inline void AddForce_b_N(libra::Vector<3> force_b_N) { + inline void AddForce_b_N(math::Vector<3> force_b_N) { orbit_->AddForce_b_N(force_b_N, attitude_->GetQuaternion_i2b(), structure_->GetKinematicsParameters().GetMass_kg()); } /** @@ -77,7 +77,7 @@ class Dynamics { * @brief Add input acceleration for the orbit dynamics propagation * @param [in] acceleration_i_m_s2: Acceleration in the inertial fixed frame [N] */ - inline void AddAcceleration_i_m_s2(libra::Vector<3> acceleration_i_m_s2) { orbit_->AddAcceleration_i_m_s2(acceleration_i_m_s2); } + inline void AddAcceleration_i_m_s2(math::Vector<3> acceleration_i_m_s2) { orbit_->AddAcceleration_i_m_s2(acceleration_i_m_s2); } /** * @fn ClearForceTorque diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index 55dd09adc..7cb480bca 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -10,8 +10,8 @@ #include "../../math_physics/orbit/orbital_elements.hpp" EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, - const double propagation_step_s, const double current_time_jd, const libra::Vector<3> position_i_m, - const libra::Vector<3> velocity_i_m_s, const double error_tolerance) + const double propagation_step_s, const double current_time_jd, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s, const double error_tolerance) : Orbit(celestial_information), libra::OrdinaryDifferentialEquation<6>(propagation_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), @@ -60,9 +60,9 @@ void EnckeOrbitPropagation::Propagate(const double end_time_s, const double curr } // Functions for OrdinaryDifferentialEquation -void EnckeOrbitPropagation::DerivativeFunction(double t, const libra::Vector<6>& state, libra::Vector<6>& rhs) { +void EnckeOrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs) { UNUSED(t); - libra::Vector<3> difference_position_i_m_m, difference_acc_i_m_s2; + math::Vector<3> difference_position_i_m_m, difference_acc_i_m_s2; for (int i = 0; i < 3; i++) { difference_position_i_m_m[i] = state[i]; } @@ -83,7 +83,7 @@ void EnckeOrbitPropagation::DerivativeFunction(double t, const libra::Vector<6>& } // Private Functions -void EnckeOrbitPropagation::Initialize(double current_time_jd, libra::Vector<3> reference_position_i_m, libra::Vector<3> reference_velocity_i_m_s) { +void EnckeOrbitPropagation::Initialize(double current_time_jd, math::Vector<3> reference_position_i_m, math::Vector<3> reference_velocity_i_m_s) { // General spacecraft_acceleration_i_m_s2_.FillUp(0.0); @@ -97,7 +97,7 @@ void EnckeOrbitPropagation::Initialize(double current_time_jd, libra::Vector<3> difference_position_i_m_.FillUp(0.0); difference_velocity_i_m_s_.FillUp(0.0); - libra::Vector<6> zero(0.0f); + math::Vector<6> zero(0.0f); Setup(0.0, zero); UpdateSatOrbit(); @@ -111,11 +111,11 @@ void EnckeOrbitPropagation::UpdateSatOrbit() { TransformEcefToGeodetic(); } -double EnckeOrbitPropagation::CalcQFunction(libra::Vector<3> difference_position_i_m) { +double EnckeOrbitPropagation::CalcQFunction(math::Vector<3> difference_position_i_m) { double r2; r2 = InnerProduct(spacecraft_position_i_m_, spacecraft_position_i_m_); - libra::Vector<3> dr_2r; + math::Vector<3> dr_2r; dr_2r = difference_position_i_m - 2.0 * spacecraft_position_i_m_; double q = InnerProduct(difference_position_i_m, dr_2r) / r2; diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index f8648730a..54b324fe1 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -28,7 +28,7 @@ class EnckeOrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEq * @param [in] error_tolerance: Error tolerance threshold */ EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, - const double current_time_jd, const libra::Vector<3> position_i_m, const libra::Vector<3> velocity_i_m_s, + const double current_time_jd, const math::Vector<3> position_i_m, const math::Vector<3> velocity_i_m_s, const double error_tolerance); /** * @fn ~EnckeOrbitPropagation @@ -53,7 +53,7 @@ class EnckeOrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEq * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const libra::Vector<6>& state, libra::Vector<6>& rhs); + virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); private: // General @@ -63,13 +63,13 @@ class EnckeOrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEq double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 // reference orbit - libra::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] - libra::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] + math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] + math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit - libra::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] - libra::Vector<3> difference_velocity_i_m_s_; //!< Difference orbit velocity in the inertial frame [m/s] + math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] + math::Vector<3> difference_velocity_i_m_s_; //!< Difference orbit velocity in the inertial frame [m/s] // functions /** @@ -79,7 +79,7 @@ class EnckeOrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEq * @param [in] reference_position_i_m: Initial value of reference orbit position in the inertial frame [m] * @param [in] reference_velocity_i_m_s: Initial value of reference orbit position in the inertial frame [m] */ - void Initialize(const double current_time_jd, const libra::Vector<3> reference_position_i_m, const libra::Vector<3> reference_velocity_i_m_s); + void Initialize(const double current_time_jd, const math::Vector<3> reference_position_i_m, const math::Vector<3> reference_velocity_i_m_s); /** * @fn UpdateSatOrbit * @brief Update satellite orbit @@ -90,7 +90,7 @@ class EnckeOrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEq * @brief Calculate Q function * @param [in] difference_position_i_m: Difference of position in the inertial frame [m] */ - double CalcQFunction(const libra::Vector<3> difference_position_i_m); + double CalcQFunction(const math::Vector<3> difference_position_i_m); }; #endif // S2E_DYNAMICS_ORBIT_ENCKE_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 4ab11afdb..9921da134 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -26,9 +26,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string if (propagate_mode == "RK4") { // initialize RK4 orbit propagator - libra::Vector<3> position_i_m; - libra::Vector<3> velocity_i_m_s; - libra::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -49,9 +49,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string RelativeOrbitModel relative_dynamics_model_type = (RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); StmModel stm_model_type = (StmModel)(conf.ReadInt(section_, "stm_model_type")); - libra::Vector<3> init_relative_position_lvlh; + math::Vector<3> init_relative_position_lvlh; conf.ReadVector<3>(section_, "initial_relative_position_lvlh_m", init_relative_position_lvlh); - libra::Vector<3> init_relative_velocity_lvlh; + math::Vector<3> init_relative_velocity_lvlh; conf.ReadVector<3>(section_, "initial_relative_velocity_lvlh_m_s", init_relative_velocity_lvlh); // There is a possibility that the orbit of the reference sat is not initialized when RelativeOrbit initialization is called To ensure that @@ -66,9 +66,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string // TODO: init_mode_kepler should be removed in the next major update if (initialize_mode == OrbitInitializeMode::kInertialPositionAndVelocity) { // initialize with position and velocity - libra::Vector<3> init_pos_m; + math::Vector<3> init_pos_m; conf.ReadVector<3>(section_, "initial_position_i_m", init_pos_m); - libra::Vector<3> init_vel_m_s; + math::Vector<3> init_vel_m_s; conf.ReadVector<3>(section_, "initial_velocity_i_m_s", init_vel_m_s); oe = OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); } else { @@ -85,9 +85,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string orbit = new KeplerOrbitPropagation(celestial_information, current_time_jd, kepler_orbit); } else if (propagate_mode == "ENCKE") { // initialize orbit for Encke's method - libra::Vector<3> position_i_m; - libra::Vector<3> velocity_i_m_s; - libra::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -100,9 +100,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string std::cerr << "ERROR: orbit propagation mode: " << propagate_mode << " is not defined!" << std::endl; std::cerr << "The orbit mode is automatically set as RK4" << std::endl; - libra::Vector<3> position_i_m; - libra::Vector<3> velocity_i_m_s; - libra::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -115,12 +115,12 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string return orbit; } -libra::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { +math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { auto conf = IniAccess(initialize_file); const char* section_ = section.c_str(); - libra::Vector<3> position_i_m; - libra::Vector<3> velocity_i_m_s; - libra::Vector<6> pos_vel; + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel; OrbitInitializeMode initialize_mode = SetOrbitInitializeMode(conf.ReadString(section_, "initialize_mode")); if (initialize_mode == OrbitInitializeMode::kOrbitalElements) { diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index e2b8363a8..6b3aad69f 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -35,6 +35,6 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string * @param [in] gravity_constant_m3_s2: Gravity constant [m3/s2] * @param [in] section: Section name */ -libra::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); +math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); #endif // S2E_DYNAMICS_ORBIT_INITIALIZE_ORBIT_HPP_ diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index ca204c69f..9a89390a6 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -5,13 +5,13 @@ #include "orbit.hpp" libra::Quaternion Orbit::CalcQuaternion_i2lvlh() const { - libra::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite - libra::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); - libra::Vector<3> lvlh_z = + math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite + math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); + math::Vector<3> lvlh_z = OuterProduct(spacecraft_position_i_m_, spacecraft_velocity_i_m_s_); // z-axis in LVLH frame is angular momentum vector direction of orbit - libra::Vector<3> lvlh_ez = lvlh_z.CalcNormalizedVector(); - libra::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); - libra::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); + math::Vector<3> lvlh_ez = lvlh_z.CalcNormalizedVector(); + math::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); + math::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); math::Matrix<3, 3> dcm_i2lvlh; dcm_i2lvlh[0][0] = lvlh_ex[0]; @@ -33,10 +33,10 @@ void Orbit::TransformEciToEcef(void) { spacecraft_position_ecef_m_ = dcm_i_to_xcxf * spacecraft_position_i_m_; // convert velocity vector in ECI to the vector in ECEF - libra::Vector<3> earth_angular_velocity_i_rad_s{0.0}; + math::Vector<3> earth_angular_velocity_i_rad_s{0.0}; earth_angular_velocity_i_rad_s[2] = environment::earth_mean_angular_velocity_rad_s; - libra::Vector<3> we_cross_r = OuterProduct(earth_angular_velocity_i_rad_s, spacecraft_position_i_m_); - libra::Vector<3> velocity_we_cross_r = spacecraft_velocity_i_m_s_ - we_cross_r; + math::Vector<3> we_cross_r = OuterProduct(earth_angular_velocity_i_rad_s, spacecraft_position_i_m_); + math::Vector<3> velocity_we_cross_r = spacecraft_velocity_i_m_s_ - we_cross_r; spacecraft_velocity_ecef_m_s_ = dcm_i_to_xcxf * velocity_we_cross_r; } diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 6ddcfe289..496774cf3 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -88,27 +88,27 @@ class Orbit : public ILoggable { * @fn GetPosition_i_m * @brief Return spacecraft position in the inertial frame [m] */ - inline libra::Vector<3> GetPosition_i_m() const { return spacecraft_position_i_m_; } + inline math::Vector<3> GetPosition_i_m() const { return spacecraft_position_i_m_; } /** * @fn GetPosition_ecef_m * @brief Return spacecraft position in the ECEF frame [m] */ - inline libra::Vector<3> GetPosition_ecef_m() const { return spacecraft_position_ecef_m_; } + inline math::Vector<3> GetPosition_ecef_m() const { return spacecraft_position_ecef_m_; } /** * @fn GetVelocity_i_m_s * @brief Return spacecraft velocity in the inertial frame [m/s] */ - inline libra::Vector<3> GetVelocity_i_m_s() const { return spacecraft_velocity_i_m_s_; } + inline math::Vector<3> GetVelocity_i_m_s() const { return spacecraft_velocity_i_m_s_; } /** * @fn GetVelocity_b_m_s * @brief Return spacecraft velocity in the body fixed frame [m/s] */ - inline libra::Vector<3> GetVelocity_b_m_s() const { return spacecraft_velocity_b_m_s_; } + inline math::Vector<3> GetVelocity_b_m_s() const { return spacecraft_velocity_b_m_s_; } /** * @fn GetVelocity_ecef_m_s * @brief Return spacecraft velocity in the ECEF frame [m/s] */ - inline libra::Vector<3> GetVelocity_ecef_m_s() const { return spacecraft_velocity_ecef_m_s_; } + inline math::Vector<3> GetVelocity_ecef_m_s() const { return spacecraft_velocity_ecef_m_s_; } /** * @fn GetGeodeticPosition * @brief Return spacecraft position in the geodetic frame [m] @@ -119,8 +119,8 @@ class Orbit : public ILoggable { inline double GetLatitude_rad() const { return spacecraft_geodetic_position_.GetLatitude_rad(); } inline double GetLongitude_rad() const { return spacecraft_geodetic_position_.GetLongitude_rad(); } inline double GetAltitude_m() const { return spacecraft_geodetic_position_.GetAltitude_m(); } - inline libra::Vector<3> GetLatLonAlt() const { - libra::Vector<3> vec; + inline math::Vector<3> GetLatLonAlt() const { + math::Vector<3> vec; vec(0) = spacecraft_geodetic_position_.GetLatitude_rad(); vec(1) = spacecraft_geodetic_position_.GetLongitude_rad(); vec(2) = spacecraft_geodetic_position_.GetAltitude_m(); @@ -137,15 +137,15 @@ class Orbit : public ILoggable { * @fn SetAcceleration_i_m_s2 * @brief Set acceleration in the inertial frame [m/s2] */ - inline void SetAcceleration_i_m_s2(const libra::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ = acceleration_i_m_s2; } + inline void SetAcceleration_i_m_s2(const math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ = acceleration_i_m_s2; } /** * @fn AddForce_i_N * @brief Add force * @param [in] force_i: Force in the inertial frame [N] * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_i_N(const libra::Vector<3> force_i_N, double spacecraft_mass_kg) { - libra::Vector<3> acceleration_i_m_s2 = force_i_N; + inline void AddForce_i_N(const math::Vector<3> force_i_N, double spacecraft_mass_kg) { + math::Vector<3> acceleration_i_m_s2 = force_i_N; acceleration_i_m_s2 /= spacecraft_mass_kg; // FIXME spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } @@ -153,7 +153,7 @@ class Orbit : public ILoggable { * @fn AddAcceleration_i_m_s2 * @brief Add acceleration in the inertial frame [m/s2] */ - inline void AddAcceleration_i_m_s2(const libra::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } + inline void AddAcceleration_i_m_s2(const math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } /** * @fn AddForce_i_N * @brief Add force @@ -161,7 +161,7 @@ class Orbit : public ILoggable { * @param [in] quaternion_i2b: Quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_b_N(const libra::Vector<3> force_b_N, const libra::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { + inline void AddForce_b_N(const math::Vector<3> force_b_N, const libra::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { auto force_i = quaternion_i2b.InverseFrameConversion(force_b_N); AddForce_i_N(force_i, spacecraft_mass_kg); } @@ -191,15 +191,15 @@ class Orbit : public ILoggable { bool is_calc_enabled_ = false; //!< Calculate flag OrbitPropagateMode propagate_mode_; //!< Propagation mode - libra::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] - libra::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] + math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] + math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame - libra::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] - libra::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] - libra::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] + math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] + math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] + math::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] - libra::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] + math::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] //!< NOTE: Clear to zero at the end of the Propagate function // Frame Conversion TODO: consider other planet diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 402129504..bc05b06d8 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -9,7 +9,7 @@ #include "rk4_orbit_propagation.hpp" RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - int reference_spacecraft_id, libra::Vector<3> relative_position_lvlh_m, libra::Vector<3> relative_velocity_lvlh_m_s, + int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, RelativeOrbitModel relative_dynamics_model_type, StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), @@ -30,7 +30,7 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, RelativeOrbit::~RelativeOrbit() {} -void RelativeOrbit::InitializeState(libra::Vector<3> relative_position_lvlh_m, libra::Vector<3> relative_velocity_lvlh_m_s, +void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, double initial_time_s) { relative_position_lvlh_m_ = relative_position_lvlh_m; relative_velocity_lvlh_m_s_ = relative_velocity_lvlh_m_s; @@ -38,8 +38,8 @@ void RelativeOrbit::InitializeState(libra::Vector<3> relative_position_lvlh_m, l // Disturbance acceleration are not considered in relative orbit propagation spacecraft_acceleration_i_m_s2_ *= 0.0; - libra::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> reference_sat_velocity_i = + math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); libra::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); libra::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); @@ -108,8 +108,8 @@ void RelativeOrbit::Propagate(const double end_time_s, const double current_time PropagateStm(end_time_s); } - libra::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> reference_sat_velocity_i = + math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); libra::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); libra::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); @@ -139,7 +139,7 @@ void RelativeOrbit::PropagateRk4(double elapsed_sec) { } void RelativeOrbit::PropagateStm(double elapsed_sec) { - libra::Vector<6> current_state; + math::Vector<6> current_state; CalculateStm(stm_model_type_, &(relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit()), gravity_constant_m3_s2_, elapsed_sec); current_state = stm_ * initial_state_; @@ -152,8 +152,8 @@ void RelativeOrbit::PropagateStm(double elapsed_sec) { relative_velocity_lvlh_m_s_[2] = current_state[5]; } -void RelativeOrbit::DerivativeFunction(double t, const libra::Vector<6>& state, - libra::Vector<6>& rhs) // only for RK4 relative dynamics propagation +void RelativeOrbit::DerivativeFunction(double t, const math::Vector<6>& state, + math::Vector<6>& rhs) // only for RK4 relative dynamics propagation { rhs = system_matrix_ * state; (void)t; diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 79b016d3e..eaa1e56cd 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -40,7 +40,7 @@ class RelativeOrbit : public Orbit, public libra::OrdinaryDifferentialEquation<6 * @param [in] relative_information: Relative information */ RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, - libra::Vector<3> relative_position_lvlh_m, libra::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, + math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, RelativeOrbitModel relative_dynamics_model_type, StmModel stm_model_type, RelativeInformation* relative_information); /** * @fn ~RelativeOrbit @@ -76,9 +76,9 @@ class RelativeOrbit : public Orbit, public libra::OrdinaryDifferentialEquation<6 math::Matrix<6, 6> system_matrix_; //!< System matrix math::Matrix<6, 6> stm_; //!< State transition matrix - libra::Vector<6> initial_state_; //!< Initial state (Position and Velocity) - libra::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame - libra::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame + math::Vector<6> initial_state_; //!< Initial state (Position and Velocity) + math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame + math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame RelativeOrbitUpdateMethod update_method_; //!< Update method RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type @@ -93,7 +93,7 @@ class RelativeOrbit : public Orbit, public libra::OrdinaryDifferentialEquation<6 * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @param [in] initial_time_s: Initialize time [sec] */ - void InitializeState(libra::Vector<3> relative_position_lvlh_m, libra::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, + void InitializeState(math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, double initial_time_s = 0); /** * @fn CalculateSystemMatrix diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index ff14b33cc..38a6e39b2 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -9,7 +9,7 @@ #include Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - libra::Vector<3> position_i_m, libra::Vector<3> velocity_i_m_s, double initial_time_s) + math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) : Orbit(celestial_information), OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2) { propagate_mode_ = OrbitPropagateMode::kRk4; @@ -22,7 +22,7 @@ Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_i Rk4OrbitPropagation::~Rk4OrbitPropagation() {} -void Rk4OrbitPropagation::DerivativeFunction(double t, const libra::Vector<6>& state, libra::Vector<6>& rhs) { +void Rk4OrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs) { double x = state[0], y = state[1], z = state[2]; double vx = state[3], vy = state[4], vz = state[5]; @@ -38,9 +38,9 @@ void Rk4OrbitPropagation::DerivativeFunction(double t, const libra::Vector<6>& s (void)t; } -void Rk4OrbitPropagation::Initialize(libra::Vector<3> position_i_m, libra::Vector<3> velocity_i_m_s, double initial_time_s) { +void Rk4OrbitPropagation::Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) { // state vector [x,y,z,vx,vy,vz] - libra::Vector<6> init_state; + math::Vector<6> init_state; init_state[0] = position_i_m[0]; init_state[1] = position_i_m[1]; init_state[2] = position_i_m[2]; diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index 253a3178b..5291d7e56 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -28,7 +28,7 @@ class Rk4OrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEqua * @param [in] initial_time_s: Initial time [sec] */ Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - libra::Vector<3> position_i_m, libra::Vector<3> velocity_i_m_s, double initial_time_s = 0); + math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); /** * @fn ~Rk4OrbitPropagation * @brief Destructor @@ -43,7 +43,7 @@ class Rk4OrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEqua * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const libra::Vector<6>& state, libra::Vector<6>& rhs); + virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); // Override Orbit /** @@ -66,7 +66,7 @@ class Rk4OrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEqua * @param [in] velocity_i_m_s: Initial value of velocity in the inertial frame [m/s] * @param [in] initial_time_s: Initial time [sec] */ - void Initialize(libra::Vector<3> position_i_m, libra::Vector<3> velocity_i_m_s, double initial_time_s = 0); + void Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); }; #endif // S2E_DYNAMICS_ORBIT_RK4_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index e641ca2df..c40038d5f 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -13,7 +13,7 @@ using namespace std; using namespace libra; Node::Node(const size_t node_id, const string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, - const double capacity_J_K, const double alpha, const double area_m2, libra::Vector<3> normal_vector_b) + const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b) : node_id_(node_id), node_name_(node_name), heater_id_(heater_id), @@ -29,7 +29,7 @@ Node::Node(const size_t node_id, const string node_name, const NodeType node_typ Node::~Node() {} -double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar_flux_W_m2) { +double Node::CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_flux_W_m2) { double cos_theta = InnerProduct(sun_direction_b, normal_vector_b_); // calculate sun_power @@ -147,7 +147,7 @@ Node InitNode(const std::vector& node_str) { capacity_J_K = stod(node_str[index_capacity]); alpha = stod(node_str[index_alpha]); area_m2 = stod(node_str[index_area]); - libra::Vector<3> normal_v_b; + math::Vector<3> normal_v_b; for (size_t i = 0; i < 3; i++) { normal_v_b[i] = stod(node_str[index_normal_v_b_head + i]); } diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 23640a13a..de4653d3e 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -45,7 +45,7 @@ class Node { * @param[in] normal_vector_b: Normal vector of face with possibility of solar incidence (Body frame) */ Node(const size_t node_id, const std::string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, - const double capacity_J_K, const double alpha, const double area_m2, libra::Vector<3> normal_vector_b); + const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b); /** * @fn ~Node * @brief Destroy the Node object @@ -58,7 +58,7 @@ class Node { * @param sun_direction_b: Sun direction in body frame * @return double: Solar Radiation [W] */ - double CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar_flux_W_m2); + double CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_flux_W_m2); // Getter /** @@ -136,7 +136,7 @@ class Node { double area_m2_; double solar_radiation_W_; NodeType node_type_; - libra::Vector<3> normal_vector_b_; + math::Vector<3> normal_vector_b_; /** * @fn AssertNodeParams diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index deb464820..b86e873fe 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -47,10 +47,10 @@ Temperature::Temperature() { Temperature::~Temperature() {} -void Temperature::Propagate(libra::Vector<3> sun_position_b_m, const double time_end_s) { +void Temperature::Propagate(math::Vector<3> sun_position_b_m, const double time_end_s) { if (!is_calc_enabled_) return; double sun_distance_m = sun_position_b_m.CalcNorm(); - libra::Vector<3> sun_direction_b; + math::Vector<3> sun_direction_b; for (size_t i = 0; i < 3; i++) { sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; } @@ -84,7 +84,7 @@ void Temperature::Propagate(libra::Vector<3> sun_position_b_m, const double time } } -void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, libra::Vector<3> sun_direction_b, size_t node_num) { +void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, math::Vector<3> sun_direction_b, size_t node_num) { vector temperatures_now_K(node_num); for (size_t i = 0; i < node_num; i++) { temperatures_now_K[i] = nodes_[i].GetTemperature_K(); @@ -120,7 +120,7 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, libra: } } -vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, libra::Vector<3> sun_direction_b, size_t node_num) { +vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, math::Vector<3> sun_direction_b, size_t node_num) { // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 2b9105217..08eceb28f 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -54,7 +54,7 @@ class Temperature : public ILoggable { * @param[in] sun_direction_b: Sun position in body frame [m] * @param[in] node_num: Number of nodes */ - void CalcRungeOneStep(double time_now_s, double time_step_s, libra::Vector<3> sun_direction_b, size_t node_num); + void CalcRungeOneStep(double time_now_s, double time_step_s, math::Vector<3> sun_direction_b, size_t node_num); /** * @fn CalcTemperatureDifferentials * @brief Calculate differential of thermal equilibrium equation @@ -65,7 +65,7 @@ class Temperature : public ILoggable { * @param node_num: Number of nodes * @return std::vector: Differential of thermal equilibrium equation at time now */ - std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const libra::Vector<3> sun_direction_b, + std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const math::Vector<3> sun_direction_b, size_t node_num); public: @@ -108,7 +108,7 @@ class Temperature : public ILoggable { * @param[in] sun_position_b_m: Sun position in body frame [m] * @param time_end_s: Time to finish propagation [s] */ - void Propagate(libra::Vector<3> sun_position_b_m, const double time_end_s); + void Propagate(math::Vector<3> sun_position_b_m, const double time_end_s); // Getter /** diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 676ed1ce8..50103ffca 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -73,8 +73,8 @@ class CelestialInformation : public ILoggable { * @brief Return position from the center body in the inertial frame [m] * @param [in] id: ID of CelestialInformation list */ - inline libra::Vector<3> GetPositionFromCenter_i_m(const unsigned int id) const { - libra::Vector<3> pos(0.0); + inline math::Vector<3> GetPositionFromCenter_i_m(const unsigned int id) const { + math::Vector<3> pos(0.0); if (id > number_of_selected_bodies_) return pos; for (int i = 0; i < 3; i++) pos[i] = celestial_body_position_from_center_i_m_[id * 3 + i]; return pos; @@ -84,7 +84,7 @@ class CelestialInformation : public ILoggable { * @brief Return position from the center body in the inertial frame [m] * @param [in] body_name: Name of the body defined in the SPICE */ - inline libra::Vector<3> GetPositionFromCenter_i_m(const char* body_name) const { + inline math::Vector<3> GetPositionFromCenter_i_m(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetPositionFromCenter_i_m(id); } @@ -94,11 +94,11 @@ class CelestialInformation : public ILoggable { * @param [in] target_body_name: Name of the target body defined in the SPICE * @param [in] reference_body_name: Name of the reference body defined in the SPICE */ - inline libra::Vector<3> GetPositionFromSelectedBody_i_m(const char* target_body_name, const char* reference_body_name) const { + inline math::Vector<3> GetPositionFromSelectedBody_i_m(const char* target_body_name, const char* reference_body_name) const { int target_id = CalcBodyIdFromName(target_body_name); - libra::Vector<3> target_body_position_i_m = GetPositionFromCenter_i_m(target_id); + math::Vector<3> target_body_position_i_m = GetPositionFromCenter_i_m(target_id); int reference_id = CalcBodyIdFromName(reference_body_name); - libra::Vector<3> reference_body_position_i_m = GetPositionFromCenter_i_m(reference_id); + math::Vector<3> reference_body_position_i_m = GetPositionFromCenter_i_m(reference_id); return target_body_position_i_m - reference_body_position_i_m; } @@ -108,8 +108,8 @@ class CelestialInformation : public ILoggable { * @brief Return velocity from the center body in the inertial frame [m/s] * @param [in] id: ID of CelestialInformation list */ - inline libra::Vector<3> GetVelocityFromCenter_i_m_s(const unsigned int id) const { - libra::Vector<3> vel(0.0); + inline math::Vector<3> GetVelocityFromCenter_i_m_s(const unsigned int id) const { + math::Vector<3> vel(0.0); if (id > number_of_selected_bodies_) return vel; for (int i = 0; i < 3; i++) vel[i] = celestial_body_velocity_from_center_i_m_s_[id * 3 + i]; return vel; @@ -119,7 +119,7 @@ class CelestialInformation : public ILoggable { * @brief Return velocity from the center body in the inertial frame [m/s] * @param [in] body_name: Name of the body defined in the SPICE */ - inline libra::Vector<3> GetVelocityFromCenter_i_m_s(const char* body_name) const { + inline math::Vector<3> GetVelocityFromCenter_i_m_s(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetVelocityFromCenter_i_m_s(id); } @@ -129,11 +129,11 @@ class CelestialInformation : public ILoggable { * @param [in] target_body_name: Name of the target body defined in the SPICE * @param [in] reference_body_name: Name of the reference body defined in the SPICE */ - inline libra::Vector<3> GetVelocityFromSelectedBody_i_m_s(const char* target_body_name, const char* reference_body_name) const { + inline math::Vector<3> GetVelocityFromSelectedBody_i_m_s(const char* target_body_name, const char* reference_body_name) const { int target_id = CalcBodyIdFromName(target_body_name); - libra::Vector<3> target_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(target_id); + math::Vector<3> target_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(target_id); int reference_id = CalcBodyIdFromName(reference_body_name); - libra::Vector<3> reference_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(reference_id); + math::Vector<3> reference_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(reference_id); return target_body_velocity_i_m_s - reference_body_velocity_i_m_s; } @@ -160,8 +160,8 @@ class CelestialInformation : public ILoggable { * @brief Return 3 axis planetographic radii of a celestial body [m] * @param [in] id: ID of CelestialInformation list */ - inline libra::Vector<3> GetRadii_m(const unsigned int id) const { - libra::Vector<3> radii(0.0); + inline math::Vector<3> GetRadii_m(const unsigned int id) const { + math::Vector<3> radii(0.0); if (id > number_of_selected_bodies_) return radii; for (int i = 0; i < 3; i++) radii[i] = celestial_body_planetographic_radii_m_[id * 3 + i]; return radii; @@ -171,7 +171,7 @@ class CelestialInformation : public ILoggable { * @brief Return 3 axis planetographic radii of a celestial body [m] * @param [in] body_name: Name of the body defined in the SPICE */ - inline libra::Vector<3> GetRadiiFromName_m(const char* body_name) const { + inline math::Vector<3> GetRadiiFromName_m(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetRadii_m(id); } diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 1ecf7c6a7..4d4c9ee14 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -72,8 +72,8 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } -libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time) const { - if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return libra::Vector<3>(0.0); +math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time) const { + if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return math::Vector<3>(0.0); EpochTime target_time; @@ -84,7 +84,7 @@ libra::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_ } double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return libra::Vector<3>(0.0); + if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, libra::tau / kOrbitalPeriodCorrection_s); @@ -129,7 +129,7 @@ bool GnssSatellites::UpdateInterpolationInformation() { for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { EpochTime sp3_time = EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - libra::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); + math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); orbit_[gnss_id].PushAndPopData(time_diff_s, sp3_position_m); clock_[gnss_id].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_id)); diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 533af1a26..c9d475416 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -75,7 +75,7 @@ class GnssSatellites : public ILoggable { */ void Update(const SimulationTime& simulation_time); - inline libra::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { + inline math::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { // TODO: Add target time for earth rotation calculation return earth_rotation_.GetDcmJ2000ToEcef().Transpose() * GetPosition_ecef_m(gnss_satellite_id); } @@ -87,7 +87,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - libra::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; + math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 5ab550fe7..014dce7f8 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -50,8 +50,8 @@ bool HipparcosCatalogue::ReadContents(const std::string& file_name, const char d return true; } -libra::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { - libra::Vector<3> direction_i; +math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { + math::Vector<3> direction_i; double ra_rad = GetRightAscension_deg(rank) * libra::deg_to_rad; double de_rad = GetDeclination_deg(rank) * libra::deg_to_rad; @@ -62,9 +62,9 @@ libra::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { return direction_i; } -libra::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, libra::Quaternion quaternion_i2b) const { - libra::Vector<3> direction_i; - libra::Vector<3> direction_b; +math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, libra::Quaternion quaternion_i2b) const { + math::Vector<3> direction_i; + math::Vector<3> direction_b; direction_i = GetStarDirection_i(rank); direction_b = quaternion_i2b.FrameConversion(direction_i); diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index a1b9540a3..c22a831a7 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -82,14 +82,14 @@ class HipparcosCatalogue : public ILoggable { *@brief Return direction vector of a star in the inertial frame *@param [in] rank: Rank of star magnitude in read catalogue */ - libra::Vector<3> GetStarDirection_i(size_t rank) const; + math::Vector<3> GetStarDirection_i(size_t rank) const; /** *@fn GetStarDir_b *@brief Return direction vector of a star in the body-fixed frame *@param [in] rank: Rank of star magnitude in read catalogue *@param [in] quaternion_i2b: Quaternion from the inertial frame to the body-fixed frame */ - libra::Vector<3> GetStarDirection_b(size_t rank, libra::Quaternion quaternion_i2b) const; + math::Vector<3> GetStarDirection_b(size_t rank, libra::Quaternion quaternion_i2b) const; // Override ILoggable /** diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index d80c4adf3..b1a28dcf4 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -17,8 +17,8 @@ MoonRotation::MoonRotation(const CelestialInformation& celestial_information, Mo void MoonRotation::Update(const SimulationTime& simulation_time) { if (mode_ == MoonRotationMode::kSimple) { - libra::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); - libra::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); + math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); + math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); dcm_j2000_to_mcmf_ = CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); } else if (mode_ == MoonRotationMode::kIauMoon) { ConstSpiceChar from[] = "J2000"; diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 87fbdbabc..c8199102d 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -66,7 +66,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& manual_average_f107_, manual_ap_); } else if (model_ == "HARRIS_PRIESTER") { // Harris-Priester - libra::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); + math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); air_density_kg_m3_ = libra::atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); } else { // No suitable model diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 6c9390d78..6ee47afe7 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -40,8 +40,8 @@ void GeomagneticField::CalcMagneticField(const double decimal_year, const double } void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { - static libra::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); - static libra::Vector<3> limit(random_walk_limit_nT_); + static math::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); + static math::Vector<3> limit(random_walk_limit_nT_); static RandomWalk<3> random_walk(0.1, standard_deviation, limit); static libra::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 8a4e6ba99..acda8a2bf 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -50,12 +50,12 @@ class GeomagneticField : public ILoggable { * @fn GetGeomagneticField_i_nT * @brief Return magnetic field vector in the inertial frame [nT] */ - inline libra::Vector<3> GetGeomagneticField_i_nT() const { return magnetic_field_i_nT_; } + inline math::Vector<3> GetGeomagneticField_i_nT() const { return magnetic_field_i_nT_; } /** * @fn GetGeomagneticField_b_nT * @brief Return magnetic field vector in the body fixed frame [nT] */ - inline libra::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } + inline math::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } // Override ILoggable /** @@ -70,8 +70,8 @@ class GeomagneticField : public ILoggable { virtual std::string GetLogValue() const; private: - libra::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] - libra::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] + math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] + math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] double random_walk_standard_deviation_nT_; //!< Standard deviation of Random Walk [nT] double random_walk_limit_nT_; //!< Limit of Random Walk [nT] double white_noise_standard_deviation_nT_; //!< Standard deviation of white noise [nT] diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index b980a4263..0fd6213f6 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -43,11 +43,11 @@ LocalCelestialInformation::~LocalCelestialInformation() { delete[] celestial_body_velocity_from_spacecraft_b_m_s_; } -void LocalCelestialInformation::UpdateAllObjectsInformation(const libra::Vector<3> spacecraft_position_from_center_i_m, - const libra::Vector<3> spacecraft_velocity_from_center_i_m_s, +void LocalCelestialInformation::UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, + const math::Vector<3> spacecraft_velocity_from_center_i_m_s, const libra::Quaternion quaternion_i2b, - const libra::Vector<3> spacecraft_angular_velocity_rad_s) { - libra::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; + const math::Vector<3> spacecraft_angular_velocity_rad_s) { + math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { celestial_body_position_i_m = global_celestial_information_->GetPositionFromCenter_i_m(i); celestial_body_velocity_i_m_s = global_celestial_information_->GetVelocityFromCenter_i_m_s(i); @@ -62,8 +62,8 @@ void LocalCelestialInformation::UpdateAllObjectsInformation(const libra::Vector< return; } -void LocalCelestialInformation::CalcAllPosVel_b(const libra::Quaternion quaternion_i2b, const libra::Vector<3> spacecraft_angular_velocity_rad_s) { - libra::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; +void LocalCelestialInformation::CalcAllPosVel_b(const libra::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s) { + math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; double r_buf1_i[3], velocity_buf1_i[3], r_buf1_b[3], velocity_buf1_b[3]; double r_buf2_i[3], velocity_buf2_i[3], r_buf2_b[3], velocity_buf2_b[3]; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { @@ -90,49 +90,49 @@ void LocalCelestialInformation::CalcAllPosVel_b(const libra::Quaternion quaterni } void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, libra::Quaternion quaternion_i2b) { - libra::Vector<3> temp_i; + math::Vector<3> temp_i; for (int i = 0; i < 3; i++) { temp_i[i] = input_i[i]; } - libra::Vector<3> temp_b = quaternion_i2b.FrameConversion(temp_i); + math::Vector<3> temp_b = quaternion_i2b.FrameConversion(temp_i); for (int i = 0; i < 3; i++) { output_b[i] = temp_b[i]; } } void LocalCelestialInformation::ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, - const libra::Quaternion quaternion_i2b, const libra::Vector<3> angular_velocity_b) { + const libra::Quaternion quaternion_i2b, const math::Vector<3> angular_velocity_b) { // copy input vector - libra::Vector<3> vi; + math::Vector<3> vi; for (int i = 0; i < 3; i++) { vi[i] = velocity_i[i]; } - libra::Vector<3> ri; + math::Vector<3> ri; for (int i = 0; i < 3; i++) { ri[i] = position_i[i]; } // convert body rate vector into that in inertial coordinate - libra::Vector<3> wb; + math::Vector<3> wb; for (int i = 0; i < 3; i++) { wb[i] = angular_velocity_b[i]; } // compute cross term wxr - libra::Vector<3> wxposition_i = OuterProduct(wb, ri); + math::Vector<3> wxposition_i = OuterProduct(wb, ri); // compute dr/dt + wxr for (int i = 0; i < 3; i++) { vi[i] = vi[i] - wxposition_i[i]; } // convert vector in inertial coordinate into that in body coordinate - libra::Vector<3> temp_b = quaternion_i2b.FrameConversion(vi); + math::Vector<3> temp_b = quaternion_i2b.FrameConversion(vi); for (int i = 0; i < 3; i++) { velocity_b[i] = temp_b[i]; } } -libra::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const char* body_name) const { - libra::Vector<3> position; +math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const char* body_name) const { + math::Vector<3> position; int index = 0; index = global_celestial_information_->CalcBodyIdFromName(body_name); for (int i = 0; i < 3; i++) { @@ -141,14 +141,14 @@ libra::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const return position; } -libra::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_i_m() const { +math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_i_m() const { std::string body_name = global_celestial_information_->GetCenterBodyName(); - libra::Vector<3> position = GetPositionFromSpacecraft_i_m(body_name.c_str()); + math::Vector<3> position = GetPositionFromSpacecraft_i_m(body_name.c_str()); return position; } -libra::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const char* body_name) const { - libra::Vector<3> position; +math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const char* body_name) const { + math::Vector<3> position; int index = 0; index = global_celestial_information_->CalcBodyIdFromName(body_name); for (int i = 0; i < 3; i++) { @@ -157,9 +157,9 @@ libra::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const return position; } -libra::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_b_m(void) const { +math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_b_m(void) const { std::string body_name = global_celestial_information_->GetCenterBodyName(); - libra::Vector<3> position = GetPositionFromSpacecraft_b_m(body_name.c_str()); + math::Vector<3> position = GetPositionFromSpacecraft_b_m(body_name.c_str()); return position; } diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index 5d21b7da1..f8b14b097 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -34,33 +34,33 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void UpdateAllObjectsInformation(const libra::Vector<3> spacecraft_position_from_center_i_m, - const libra::Vector<3> spacecraft_velocity_from_center_i_m_s, const libra::Quaternion quaternion_i2b, - const libra::Vector<3> spacecraft_angular_velocity_rad_s); + void UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, + const math::Vector<3> spacecraft_velocity_from_center_i_m_s, const libra::Quaternion quaternion_i2b, + const math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn GetPositionFromSpacecraft_i_m * @brief Return position of a selected body (Origin: Spacecraft, Frame: Inertial frame) * @param [in] body_name Celestial body name */ - libra::Vector<3> GetPositionFromSpacecraft_i_m(const char* body_name) const; + math::Vector<3> GetPositionFromSpacecraft_i_m(const char* body_name) const; /** * @fn GetCenterBodyPositionFromSpacecraft_i_m * @brief Return position of the center body (Origin: Spacecraft, Frame: Inertial frame) */ - libra::Vector<3> GetCenterBodyPositionFromSpacecraft_i_m(void) const; + math::Vector<3> GetCenterBodyPositionFromSpacecraft_i_m(void) const; /** * @fn GetPositionFromSpacecraft_b_m * @brief Return position of a selected body (Origin: Spacecraft, Frame: Body fixed frame) * @param [in] body_name Celestial body name */ - libra::Vector<3> GetPositionFromSpacecraft_b_m(const char* body_name) const; + math::Vector<3> GetPositionFromSpacecraft_b_m(const char* body_name) const; /** * @fn GetCenterBodyPositionFromSpacecraft_b_m * @brief Return position of the center body (Origin: Spacecraft, Frame: Body fixed frame) */ - libra::Vector<3> GetCenterBodyPositionFromSpacecraft_b_m(void) const; + math::Vector<3> GetCenterBodyPositionFromSpacecraft_b_m(void) const; /** * @fn GetGlobalInfo @@ -96,7 +96,7 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void CalcAllPosVel_b(const libra::Quaternion quaternion_i2b, const libra::Vector<3> spacecraft_angular_velocity_rad_s); + void CalcAllPosVel_b(const libra::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn ConvertInertialToBody @@ -117,7 +117,7 @@ class LocalCelestialInformation : public ILoggable { * @param [in] angular_velocity_b: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const libra::Quaternion quaternion_i2b, - const libra::Vector<3> angular_velocity_b); + const math::Vector<3> angular_velocity_b); }; #endif // S2E_ENVIRONMENT_LOCAL_LOCAL_CELESTIAL_INFORMATION_HPP_ diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 16d380a54..2a088127d 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -31,7 +31,7 @@ void SolarRadiationPressureEnvironment::UpdateAllStates() { } void SolarRadiationPressureEnvironment::UpdatePressure() { - const libra::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); + const math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); const double distance_sat_to_sun = r_sc2sun_eci.CalcNorm(); solar_radiation_pressure_N_m2_ = solar_constant_W_m2_ / environment::speed_of_light_m_s / pow(distance_sat_to_sun / environment::astronomical_unit_m, 2.0); @@ -61,8 +61,8 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow return; } - const libra::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); - const libra::Vector<3> r_sc2source_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m(shadow_source_name.c_str()); + const math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); + const math::Vector<3> r_sc2source_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m(shadow_source_name.c_str()); const double shadow_source_radius_m = local_celestial_information_->GetGlobalInformation().GetMeanRadiusFromName_m(shadow_source_name.c_str()); @@ -71,7 +71,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow const double sd_source = asin(shadow_source_radius_m / r_sc2source_eci.CalcNorm()); // Apparent radius of the shadow source // Angle of deviation from shadow source center to sun center - libra::Vector<3> r_source2sun_eci = r_sc2sun_eci - r_sc2source_eci; + math::Vector<3> r_source2sun_eci = r_sc2sun_eci - r_sc2source_eci; const double delta = acos(InnerProduct(r_sc2source_eci, r_sc2sun_eci - r_sc2source_eci) / r_sc2source_eci.CalcNorm() / r_source2sun_eci.CalcNorm()); // The angle between the center of the sun and the common chord const double x = (delta * delta + sd_sun * sd_sun - sd_source * sd_source) / (2.0 * delta); diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 4b5a18e31..0f9884091 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -35,7 +35,7 @@ inline std::string WriteScalar(const std::string name, const std::string unit); * @param [in] precision: precision for the value (number of digit) */ template -inline std::string WriteVector(const libra::Vector vector, const int precision = 6); +inline std::string WriteVector(const math::Vector vector, const int precision = 6); /** * @fn WriteVector * @brief Write header for vector value @@ -91,7 +91,7 @@ std::string WriteScalar(const T scalar, const int precision) { std::string WriteScalar(const std::string name, const std::string unit) { return name + "[" + unit + "],"; } template -std::string WriteVector(const libra::Vector vector, const int precision) { +std::string WriteVector(const math::Vector vector, const int precision) { std::stringstream str_tmp; for (size_t n = 0; n < NUM; n++) { diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 70ac6c5e4..ccaef17f3 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -28,20 +28,20 @@ double CalcScaleHeight_km(const std::map::const_iterator density */ double CalcApexDensity_g_km3(const std::map::const_iterator density_itr, const double altitude_km); -double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const libra::Vector<3> sun_direction_eci, const double f10_7, +double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7, const double exponent_parameter) { // Altitude double altitude_km = geodetic_position.GetAltitude_m() / 1000.0; // Position - libra::Vector<3> position_ecef_m = geodetic_position.CalcEcefPosition(); + math::Vector<3> position_ecef_m = geodetic_position.CalcEcefPosition(); // Phi: angle between the satellite position and apex of the diurnal bulge double sun_ra_rad; //!< Right ascension of the sun phi double sun_dec_rad; //!< Declination of the sun theta sun_ra_rad = atan2(sun_direction_eci[1], sun_direction_eci[0]); sun_dec_rad = atan2(sun_direction_eci[2], sqrt(sun_direction_eci[0] * sun_direction_eci[0] + sun_direction_eci[1] * sun_direction_eci[1])); - libra::Vector<3> apex_direction; + math::Vector<3> apex_direction; const double lag_angle_rad = 30.0 * libra::deg_to_rad; double apex_ra_rad = sun_ra_rad + lag_angle_rad; apex_direction[0] = cos(sun_dec_rad) * cos(apex_ra_rad); diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index 77e9e7f46..ea40eeaf4 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -20,7 +20,7 @@ namespace libra::atmosphere { * @param [in] exponent_parameter: n in the equation. n=2 for low inclination orbit and n=6 for polar orbit. * @return Atmospheric density [kg/m^3] */ -double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const libra::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); } // namespace libra::atmosphere diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 7ca1051ee..8a59652a0 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -23,7 +23,7 @@ GeodeticPosition::GeodeticPosition(const double latitude_rad, const double longi CalcQuaternionXcxfToLtc(); } -void GeodeticPosition::UpdateFromEcef(const libra::Vector<3> position_ecef_m) { +void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { const double earth_radius_m = environment::earth_equatorial_radius_m; const double flattening = environment::earth_flattening; @@ -52,7 +52,7 @@ void GeodeticPosition::UpdateFromEcef(const libra::Vector<3> position_ecef_m) { return; } -libra::Vector<3> GeodeticPosition::CalcEcefPosition() const { +math::Vector<3> GeodeticPosition::CalcEcefPosition() const { const double earth_radius_m = environment::earth_equatorial_radius_m; const double flattening = environment::earth_flattening; @@ -61,7 +61,7 @@ libra::Vector<3> GeodeticPosition::CalcEcefPosition() const { double c = 1.0 / sqrt(1.0 - e2 * sin(latitude_rad_) * sin(latitude_rad_)); double n = c * earth_radius_m; - libra::Vector<3> pos_ecef_m; + math::Vector<3> pos_ecef_m; pos_ecef_m(0) = (n + altitude_m_) * cos(latitude_rad_) * cos(theta); pos_ecef_m(1) = (n + altitude_m_) * cos(latitude_rad_) * sin(theta); pos_ecef_m(2) = (n * (1.0 - e2) + altitude_m_) * sin(latitude_rad_); diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index 8a60cfa68..4b5f82cc3 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -34,13 +34,13 @@ class GeodeticPosition { * @brief Update geodetic position with position vector in the ECEF frame * @param [in] position_ecef_m: Position vector in the ECEF frame [m] */ - void UpdateFromEcef(const libra::Vector<3> position_ecef_m); + void UpdateFromEcef(const math::Vector<3> position_ecef_m); /** * @fn CalcEcefPosition * @brief Calculate and return the ECEF position from the geodetic position */ - libra::Vector<3> CalcEcefPosition() const; + math::Vector<3> CalcEcefPosition() const; // Getter /** diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index 6baf196e1..e9c379787 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -169,7 +169,7 @@ AntexPhaseCenterData AntexFileReader::ReadPhaseCenterData(std::ifstream& antex_f } // Phase center offset if (line.find("NORTH / EAST / UP") == ANTEX_LINE_TYPE_POSITION) { - libra::Vector<3> offset{0.0}; + math::Vector<3> offset{0.0}; sscanf(line.c_str(), "%lf %lf %lf", &offset[0], &offset[1], &offset[2]); phase_center_data.SetPhaseCenterOffset_mm(offset); } diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 953800d9f..0cbf59d44 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -126,7 +126,7 @@ class AntexPhaseCenterData { * @fn SetPhaseCenterOffset_mm * @param[in] phase_center_offset_mm: Phase center offset vector [mm] */ - inline void SetPhaseCenterOffset_mm(const libra::Vector<3> phase_center_offset_mm) { phase_center_offset_mm_ = phase_center_offset_mm; } + inline void SetPhaseCenterOffset_mm(const math::Vector<3> phase_center_offset_mm) { phase_center_offset_mm_ = phase_center_offset_mm; } /** * @fn SetGridInformation * @param[in] grid_information: Grid information @@ -150,7 +150,7 @@ class AntexPhaseCenterData { * @fn GetPhaseCenterOffset_mm * @return Phase center offset vector [mm] */ - inline libra::Vector<3> GetPhaseCenterOffset_mm() const { return phase_center_offset_mm_; } + inline math::Vector<3> GetPhaseCenterOffset_mm() const { return phase_center_offset_mm_; } /** * @fn GetGridInformation * @return Grid information @@ -164,7 +164,7 @@ class AntexPhaseCenterData { private: std::string frequency_name_ = ""; //!< Frequency name - libra::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] + math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] AntexGridDefinition grid_information_; //!< Grid information std::vector> phase_center_variation_matrix_mm_; //!< Phase center variation [mm] (column, row definition: [azimuth][zenith]) }; diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index f4a2a37fb..10043e10d 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -38,7 +38,7 @@ double Sp3FileReader::GetSatelliteClockOffset(const size_t epoch_id, const size_ return position_clock.clock_us_; } -libra::Vector<3> Sp3FileReader::GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id) { +math::Vector<3> Sp3FileReader::GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id) { Sp3PositionClock position_clock = GetPositionClock(epoch_id, satellite_id); return position_clock.position_km_; } @@ -312,7 +312,7 @@ Sp3PositionClock Sp3FileReader::DecodePositionClockData(std::string line) { position_clock.satellite_id_ = line.substr(1, 3); // Position and clock - libra::Vector<3> position_km; + math::Vector<3> position_km; for (size_t axis = 0; axis < 3; axis++) { position_km[axis] = stod(line.substr(4 + axis * 14, 14)); } @@ -321,7 +321,7 @@ Sp3PositionClock Sp3FileReader::DecodePositionClockData(std::string line) { // Standard deviations if (line.size() > 61) { - libra::Vector<3> position_standard_deviation; + math::Vector<3> position_standard_deviation; for (size_t axis = 0; axis < 3; axis++) { try { position_standard_deviation[axis] = stod(line.substr(61 + axis * 3, 2)); @@ -382,7 +382,7 @@ Sp3VelocityClockRate Sp3FileReader::DecodeVelocityClockRateData(std::string line velocity_clock_rate.satellite_id_ = line.substr(1, 3); // Velocity and clock rate - libra::Vector<3> velocity_dm_s; + math::Vector<3> velocity_dm_s; for (size_t axis = 0; axis < 3; axis++) { velocity_dm_s[axis] = stod(line.substr(4 + axis * 14, 14)); } @@ -391,7 +391,7 @@ Sp3VelocityClockRate Sp3FileReader::DecodeVelocityClockRateData(std::string line // Standard deviations if (line.size() > 60) { - libra::Vector<3> velocity_standard_deviation; + math::Vector<3> velocity_standard_deviation; for (size_t axis = 0; axis < 3; axis++) { velocity_standard_deviation[axis] = stod(line.substr(61 + axis * 2, 2)); } diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 565382899..6b12e0be5 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -93,9 +93,9 @@ struct Sp3Header { */ struct Sp3PositionClock { std::string satellite_id_; //!< GNSS satellite ID - libra::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] + math::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] double clock_us_ = SP3_BAD_CLOCK_VALUE; //!< Satellite clock offset [us] - libra::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] + math::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] double clock_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] bool clock_event_flag_ = false; //!< true when clock discontinuity is happened bool clock_prediction_flag_ = false; //!< true when clock data is predicted @@ -128,9 +128,9 @@ struct Sp3PositionClockCorrelation { */ struct Sp3VelocityClockRate { std::string satellite_id_; //!< GNSS satellite ID - libra::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] + math::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] double clock_rate_ = 0.0; //!< Satellite clock offset change rate [-] - libra::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] + math::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] double clock_rate_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] }; @@ -176,7 +176,7 @@ class Sp3FileReader { DateTime GetEpochData(const size_t epoch_id) const; Sp3PositionClock GetPositionClock(const size_t epoch_id, const size_t satellite_id); double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); - libra::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); + math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); size_t SearchNearestEpochId(const EpochTime time); diff --git a/src/math_physics/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp index c784dc1a6..f959b566a 100644 --- a/src/math_physics/gravity/gravity_potential.cpp +++ b/src/math_physics/gravity/gravity_potential.cpp @@ -26,8 +26,8 @@ GravityPotential::GravityPotential(const size_t degree, const std::vector GravityPotential::CalcAcceleration_xcxf_m_s2(const libra::Vector<3> &position_xcxf_m) { - libra::Vector<3> acceleration_xcxf_m_s2(0.0); +math::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const math::Vector<3> &position_xcxf_m) { + math::Vector<3> acceleration_xcxf_m_s2(0.0); if (degree_ <= 0) return acceleration_xcxf_m_s2; // TODO: Consider this assertion is needed xcxf_x_m_ = position_xcxf_m[0]; @@ -93,7 +93,7 @@ libra::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const libra::Vecto return acceleration_xcxf_m_s2; } -math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const libra::Vector<3> &position_xcxf_m) { +math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const math::Vector<3> &position_xcxf_m) { math::Matrix<3, 3> partial_derivative(0.0); if (degree_ <= 0) return partial_derivative; diff --git a/src/math_physics/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp index b0cc45f7f..aafefda57 100644 --- a/src/math_physics/gravity/gravity_potential.hpp +++ b/src/math_physics/gravity/gravity_potential.hpp @@ -46,7 +46,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Acceleration in XCXF frame [m/s2] */ - libra::Vector<3> CalcAcceleration_xcxf_m_s2(const libra::Vector<3> &position_xcxf_m); + math::Vector<3> CalcAcceleration_xcxf_m_s2(const math::Vector<3> &position_xcxf_m); /** * @fn CalcAcceleration_xcxf_m_s2 @@ -54,7 +54,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Partial derivative of acceleration in XCXF frame [-/s2] */ - math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const libra::Vector<3> &position_xcxf_m); + math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const math::Vector<3> &position_xcxf_m); private: size_t degree_ = 0; //!< Maximum degree diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index ea0539511..df177e38f 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -23,8 +23,8 @@ TEST(GravityPotential, Acceleration) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Acceleration Calculation check - libra::Vector<3> position_xcxf_m; - libra::Vector<3> acceleration_xcxf_m_s2; + math::Vector<3> position_xcxf_m; + math::Vector<3> acceleration_xcxf_m_s2; const double accuracy = 1.0e-3; // Calc Acceleration @@ -65,7 +65,7 @@ TEST(GravityPotential, PartialDerivative1) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - libra::Vector<3> position_xcxf_m; + math::Vector<3> position_xcxf_m; math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; @@ -79,13 +79,13 @@ TEST(GravityPotential, PartialDerivative1) { double d_r = 1e-9; math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - libra::Vector<3> position_1_xcxf_m = position_xcxf_m; - libra::Vector<3> position_2_xcxf_m = position_xcxf_m; + math::Vector<3> position_1_xcxf_m = position_xcxf_m; + math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - libra::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - libra::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - libra::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } @@ -118,7 +118,7 @@ TEST(GravityPotential, PartialDerivative2) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - libra::Vector<3> position_xcxf_m; + math::Vector<3> position_xcxf_m; math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; @@ -132,13 +132,13 @@ TEST(GravityPotential, PartialDerivative2) { double d_r = 1e-9; math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - libra::Vector<3> position_1_xcxf_m = position_xcxf_m; - libra::Vector<3> position_2_xcxf_m = position_xcxf_m; + math::Vector<3> position_1_xcxf_m = position_xcxf_m; + math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - libra::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - libra::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - libra::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } diff --git a/src/math_physics/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp index 87fb1fe84..bde476279 100644 --- a/src/math_physics/math/ordinary_differential_equation.hpp +++ b/src/math_physics/math/ordinary_differential_equation.hpp @@ -102,7 +102,7 @@ class OrdinaryDifferentialEquation { * @fn GetState * @brief Return current state vector for inheriting class */ - inline libra::Vector& GetState() { return state_; } + inline math::Vector& GetState() { return state_; } private: double independent_variable_; //!< Latest value of independent variable diff --git a/src/math_physics/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp index 25e9f56c5..c2fb090e4 100644 --- a/src/math_physics/math/test_matrix_vector.cpp +++ b/src/math_physics/math/test_matrix_vector.cpp @@ -15,7 +15,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { const size_t C = 2; math::Matrix m; - libra::Vector v; + math::Vector v; m[0][0] = 1.0; m[0][1] = 2.0; @@ -27,7 +27,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { v[0] = 7.0; v[1] = 1.0; - libra::Vector result = m * v; + math::Vector result = m * v; EXPECT_DOUBLE_EQ(9.0, result[0]); EXPECT_DOUBLE_EQ(-7.0, result[1]); diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index ae66539c8..13bab0737 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -23,7 +23,7 @@ TEST(Quaternion, ConstructorFourNumber) { * @brief Test for constructor from Vector */ TEST(Quaternion, ConstructorVector) { - libra::Vector<4> v(0.5); + math::Vector<4> v(0.5); libra::Quaternion q(v); EXPECT_DOUBLE_EQ(0.5, q[0]); @@ -36,7 +36,7 @@ TEST(Quaternion, ConstructorVector) { * @brief Test for constructor from axis and rotation angle X rotation */ TEST(Quaternion, ConstructorAxisAndAngleX) { - libra::Vector<3> axis; + math::Vector<3> axis; axis[0] = 1.0; axis[1] = 0.0; axis[2] = 0.0; @@ -53,7 +53,7 @@ TEST(Quaternion, ConstructorAxisAndAngleX) { * @brief Test for constructor from axis and rotation angle Y rotation */ TEST(Quaternion, ConstructorAxisAndAngleY) { - libra::Vector<3> axis; + math::Vector<3> axis; axis[0] = 0.0; axis[1] = 1.0; axis[2] = 0.0; @@ -70,7 +70,7 @@ TEST(Quaternion, ConstructorAxisAndAngleY) { * @brief Test for constructor from axis and rotation angle Z rotation */ TEST(Quaternion, ConstructorAxisAndAngleZ) { - libra::Vector<3> axis; + math::Vector<3> axis; axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; @@ -87,7 +87,7 @@ TEST(Quaternion, ConstructorAxisAndAngleZ) { * @brief Test for constructor from axis and rotation angle All axes rotation */ TEST(Quaternion, ConstructorAxisAndAngleAll) { - libra::Vector<3> axis; + math::Vector<3> axis; axis[0] = 1.0; axis[1] = 1.0; axis[2] = 1.0; @@ -104,11 +104,11 @@ TEST(Quaternion, ConstructorAxisAndAngleAll) { * @brief Test for constructor from two vectors: No rotation */ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { - libra::Vector<3> before; + math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 2.0; // To check normalization - libra::Vector<3> after; + math::Vector<3> after; after[0] = 0.0; after[1] = 0.0; after[2] = 1.0; @@ -125,11 +125,11 @@ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { * @brief Test for constructor from two vectors: X rotation */ TEST(Quaternion, ConstructorTwoVectorsX) { - libra::Vector<3> before; + math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - libra::Vector<3> after; + math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; @@ -147,11 +147,11 @@ TEST(Quaternion, ConstructorTwoVectorsX) { * @brief Test for constructor from two vectors: Y rotation */ TEST(Quaternion, ConstructorTwoVectorsY) { - libra::Vector<3> before; + math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - libra::Vector<3> after; + math::Vector<3> after; after[0] = 1.0; after[1] = 0.0; after[2] = 0.0; @@ -169,11 +169,11 @@ TEST(Quaternion, ConstructorTwoVectorsY) { * @brief Test for constructor from two vectors: Z rotation */ TEST(Quaternion, ConstructorTwoVectorsZ) { - libra::Vector<3> before; + math::Vector<3> before; before[0] = 1.0; before[1] = 0.0; before[2] = 0.0; - libra::Vector<3> after; + math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; @@ -294,7 +294,7 @@ TEST(Quaternion, ConvertToEulerX) { libra::Quaternion q(1.0, 0.0, 0.0, 1.0); q.Normalize(); - libra::Vector<3> euler = q.ConvertToEuler(); + math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function EXPECT_DOUBLE_EQ(1.0 / sqrt(2.0), q[0]); @@ -322,7 +322,7 @@ TEST(Quaternion, ConvertToEuler) { libra::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - libra::Vector<3> euler = q.ConvertToEuler(); + math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function const double accuracy = 1.0e-7; @@ -344,19 +344,19 @@ TEST(Quaternion, FrameConversionZ) { libra::Quaternion q(0.0, 0.0, 1.0, 1.0); q.Normalize(); - libra::Vector<3> v; + math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - libra::Vector<3> v_frame_conv = q.FrameConversion(v); + math::Vector<3> v_frame_conv = q.FrameConversion(v); const double accuracy = 1.0e-7; EXPECT_NEAR(0.0, v_frame_conv[0], accuracy); EXPECT_NEAR(-1.0, v_frame_conv[1], accuracy); EXPECT_NEAR(0.0, v_frame_conv[2], accuracy); - libra::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); for (size_t i = 0; i < 3; i++) { EXPECT_NEAR(v[i], v_frame_conv_inv[i], accuracy); @@ -369,13 +369,13 @@ TEST(Quaternion, FrameConversionZ) { TEST(Quaternion, FrameConversion) { libra::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - libra::Vector<3> v; + math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - libra::Vector<3> v_frame_conv = q.FrameConversion(v); - libra::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + math::Vector<3> v_frame_conv = q.FrameConversion(v); + math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); const double accuracy = 1.0e-7; for (size_t i = 0; i < 3; i++) { @@ -389,7 +389,7 @@ TEST(Quaternion, FrameConversion) { TEST(Quaternion, ConvertToVector) { libra::Quaternion q(0.5, 0.3, 0.1, 1.0); - libra::Vector<4> v = q.ConvertToVector(); + math::Vector<4> v = q.ConvertToVector(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(q[i], v[i]); diff --git a/src/math_physics/math/test_vector.cpp b/src/math_physics/math/test_vector.cpp index 9affb0fba..76342b84f 100644 --- a/src/math_physics/math/test_vector.cpp +++ b/src/math_physics/math/test_vector.cpp @@ -13,7 +13,7 @@ TEST(Vector, ConstructorWithNumber) { const size_t N = 6; double initialize_value = 2.0; - libra::Vector v(initialize_value); + math::Vector v(initialize_value); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(initialize_value, v[i]); @@ -26,7 +26,7 @@ TEST(Vector, ConstructorWithNumber) { */ TEST(Vector, GetLength) { const size_t N = 6; - libra::Vector v; + math::Vector v; EXPECT_EQ(N, v.GetLength()); } @@ -37,8 +37,8 @@ TEST(Vector, GetLength) { TEST(Vector, OperatorPlusEqual) { const size_t N = 6; double initialize_value = 2.0; - libra::Vector v(initialize_value); - libra::Vector adding; + math::Vector v(initialize_value); + math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); @@ -60,8 +60,8 @@ TEST(Vector, OperatorPlusEqual) { TEST(Vector, OperatorMinusEqual) { const size_t N = 6; double initialize_value = 2.0; - libra::Vector v(initialize_value); - libra::Vector subtracting; + math::Vector v(initialize_value); + math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); @@ -82,7 +82,7 @@ TEST(Vector, OperatorMinusEqual) { */ TEST(Vector, OperatorMultiplyEqual) { const size_t N = 6; - libra::Vector v; + math::Vector v; double multiplying = 2.0; for (size_t i = 0; i < N; i++) { @@ -104,7 +104,7 @@ TEST(Vector, OperatorMultiplyEqual) { */ TEST(Vector, OperatorDivideEqual) { const size_t N = 6; - libra::Vector v; + math::Vector v; double dividing = 3.0; for (size_t i = 0; i < N; i++) { @@ -126,13 +126,13 @@ TEST(Vector, OperatorDivideEqual) { */ TEST(Vector, OperatorNegative) { const size_t N = 6; - libra::Vector v; + math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); } - libra::Vector v_negative = -v; + math::Vector v_negative = -v; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -147,7 +147,7 @@ TEST(Vector, OperatorNegative) { */ TEST(Vector, FillUp) { const size_t N = 6; - libra::Vector v; + math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); @@ -171,14 +171,14 @@ TEST(Vector, FillUp) { TEST(Vector, OperatorPlus) { const size_t N = 6; double initialize_value = 2.0; - libra::Vector v(initialize_value); - libra::Vector adding; + math::Vector v(initialize_value); + math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); } - libra::Vector added = v + adding; + math::Vector added = v + adding; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -195,14 +195,14 @@ TEST(Vector, OperatorPlus) { TEST(Vector, OperatorMinus) { const size_t N = 6; double initialize_value = 2.0; - libra::Vector v(initialize_value); - libra::Vector subtracting; + math::Vector v(initialize_value); + math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); } - libra::Vector subtracted = v - subtracting; + math::Vector subtracted = v - subtracting; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -218,8 +218,8 @@ TEST(Vector, OperatorMinus) { */ TEST(Vector, InnerProduct) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; for (size_t i = 0; i < N; i++) { a[i] = double(i + 1); @@ -235,8 +235,8 @@ TEST(Vector, InnerProduct) { */ TEST(Vector, InnerProductZero) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -255,8 +255,8 @@ TEST(Vector, InnerProductZero) { */ TEST(Vector, OuterProductZero) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -266,7 +266,7 @@ TEST(Vector, OuterProductZero) { b[1] = 0.0; b[2] = 0.0; - libra::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(0.0, result[i]); @@ -278,8 +278,8 @@ TEST(Vector, OuterProductZero) { */ TEST(Vector, OuterProductX) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -289,7 +289,7 @@ TEST(Vector, OuterProductX) { b[1] = 1.0; b[2] = 0.0; - libra::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(-1.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -301,8 +301,8 @@ TEST(Vector, OuterProductX) { */ TEST(Vector, OuterProductY) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -312,7 +312,7 @@ TEST(Vector, OuterProductY) { b[1] = 0.0; b[2] = 0.0; - libra::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(1.0, result[1]); @@ -324,8 +324,8 @@ TEST(Vector, OuterProductY) { */ TEST(Vector, OuterProductZ) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -335,7 +335,7 @@ TEST(Vector, OuterProductZ) { b[1] = 1.0; b[2] = 0.0; - libra::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -347,7 +347,7 @@ TEST(Vector, OuterProductZ) { */ TEST(Vector, CalcNorm) { const size_t N = 10; - libra::Vector v(1.0); + math::Vector v(1.0); double norm = v.CalcNorm(); @@ -364,9 +364,9 @@ TEST(Vector, CalcNorm) { */ TEST(Vector, Normalize) { const size_t N = 5; - libra::Vector v(1.0); + math::Vector v(1.0); - libra::Vector normalized = v.CalcNormalizedVector(); + math::Vector normalized = v.CalcNormalizedVector(); for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -381,8 +381,8 @@ TEST(Vector, Normalize) { */ TEST(Vector, CalcAngleTwoVectors90deg) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -402,7 +402,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { */ TEST(Vector, CalcAngleTwoVectors0deg) { const size_t N = 3; - libra::Vector a; + math::Vector a; a[0] = 1.0; a[1] = 0.0; @@ -418,8 +418,8 @@ TEST(Vector, CalcAngleTwoVectors0deg) { */ TEST(Vector, CalcAngleTwoVectors45deg) { const size_t N = 3; - libra::Vector a; - libra::Vector b; + math::Vector a; + math::Vector b; a[0] = 0.0; a[1] = 1.0; @@ -439,9 +439,9 @@ TEST(Vector, CalcAngleTwoVectors45deg) { */ TEST(Vector, GenerateOrthogonalUnitVector) { const size_t N = 3; - libra::Vector a(1.0); + math::Vector a(1.0); - libra::Vector b = GenerateOrthogonalUnitVector(a); + math::Vector b = GenerateOrthogonalUnitVector(a); double angle_rad = CalcAngleTwoVectors_rad(a, b); diff --git a/src/math_physics/numerical_integration/dormand_prince_5.hpp b/src/math_physics/numerical_integration/dormand_prince_5.hpp index 702a8f9ad..f8198e509 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5.hpp @@ -36,7 +36,7 @@ class DormandPrince5 : public EmbeddedRungeKutta { Vector CalcInterpolationState(const double sigma) const override; private: - std::vector> coefficients_; //!< Coefficients to calculate interpolation weights + std::vector> coefficients_; //!< Coefficients to calculate interpolation weights /** * @fn CalcInterpolationWeights * @brief Calculate weights for interpolation diff --git a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp index 28348cceb..8cfbe77de 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp @@ -75,7 +75,7 @@ DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde this->rk_matrix_[6][5] = 11.0 / 84.0; // Interpolation coefficients - libra::Vector<5> coefficients_temp; + math::Vector<5> coefficients_temp; coefficients_temp[0] = 11282082432.0; coefficients_temp[1] = -32272833064.0; coefficients_temp[2] = 34969693132.0; diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index 9724d2b04..29df5be2e 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -18,7 +18,7 @@ TEST(NUMERICAL_INTEGRATION, Constructor) { libra::numerical_integration::ExampleLinearOde ode; libra::numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); - libra::Vector<1> state = linear_ode.GetState(); + math::Vector<1> state = linear_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); } @@ -30,7 +30,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { libra::numerical_integration::ExampleLinearOde ode; libra::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - libra::Vector<1> state = rk4_ode.GetState(); + math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -51,7 +51,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { libra::numerical_integration::ExampleLinearOde ode; libra::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - libra::Vector<1> state = rkf_ode.GetState(); + math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -72,7 +72,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { libra::numerical_integration::ExampleLinearOde ode; libra::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - libra::Vector<1> state = dp5_ode.GetState(); + math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -93,7 +93,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { libra::numerical_integration::ExampleLinearOde ode; libra::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); - libra::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -115,7 +115,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { libra::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, libra::numerical_integration::NumericalIntegrationMethod::kRkf); - libra::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -141,7 +141,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { libra::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, libra::numerical_integration::NumericalIntegrationMethod::kDp5); - libra::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -166,7 +166,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { libra::numerical_integration::ExampleQuadraticOde ode; libra::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - libra::Vector<1> state = rk4_ode.GetState(); + math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -187,7 +187,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { libra::numerical_integration::ExampleQuadraticOde ode; libra::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - libra::Vector<1> state = rkf_ode.GetState(); + math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -208,7 +208,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { libra::numerical_integration::ExampleQuadraticOde ode; libra::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - libra::Vector<1> state = rkf_ode.GetState(); + math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); rkf_ode.Integrate(); @@ -237,7 +237,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { libra::numerical_integration::ExampleQuadraticOde ode; libra::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - libra::Vector<1> state = dp5_ode.GetState(); + math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -258,7 +258,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { libra::numerical_integration::ExampleQuadraticOde ode; libra::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - libra::Vector<1> state = dp5_ode.GetState(); + math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); dp5_ode.Integrate(); @@ -287,12 +287,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { libra::numerical_integration::Example1dPositionVelocityOde ode; libra::numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); - libra::Vector<2> initial_state(0.0); + math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rk4_ode.SetState(0.0, initial_state); - libra::Vector<2> state = rk4_ode.GetState(); + math::Vector<2> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -301,7 +301,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { rk4_ode.Integrate(); } state = rk4_ode.GetState(); - libra::Vector<2> estimated_result(0.0); + math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -317,12 +317,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { libra::numerical_integration::Example1dPositionVelocityOde ode; libra::numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); - libra::Vector<2> initial_state(0.0); + math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rkf_ode.SetState(0.0, initial_state); - libra::Vector<2> state = rkf_ode.GetState(); + math::Vector<2> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -331,7 +331,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { rkf_ode.Integrate(); } state = rkf_ode.GetState(); - libra::Vector<2> estimated_result(0.0); + math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -347,12 +347,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { libra::numerical_integration::Example1dPositionVelocityOde ode; libra::numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); - libra::Vector<2> initial_state(0.0); + math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; dp5_ode.SetState(0.0, initial_state); - libra::Vector<2> state = dp5_ode.GetState(); + math::Vector<2> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -361,7 +361,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { dp5_ode.Integrate(); } state = dp5_ode.GetState(); - libra::Vector<2> estimated_result(0.0); + math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -379,7 +379,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - libra::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -389,9 +389,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - libra::Vector<4> state_rk4 = rk4_ode.GetState(); - libra::Vector<4> state_rkf = rkf_ode.GetState(); - libra::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rk4 = rk4_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -409,8 +409,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - libra::Vector<3> initial_position(0.0); - libra::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -449,7 +449,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - libra::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.9; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -459,9 +459,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - libra::Vector<4> state_rk4 = rk4_ode.GetState(); - libra::Vector<4> state_rkf = rkf_ode.GetState(); - libra::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rk4 = rk4_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -479,8 +479,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - libra::Vector<3> initial_position(0.0); - libra::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -518,7 +518,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - libra::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -527,8 +527,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - libra::Vector<4> state_rkf = rkf_ode.GetState(); - libra::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -543,8 +543,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - libra::Vector<3> initial_position(0.0); - libra::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; @@ -613,7 +613,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - libra::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.8; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -622,8 +622,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - libra::Vector<4> state_rkf = rkf_ode.GetState(); - libra::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -638,8 +638,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - libra::Vector<3> initial_position(0.0); - libra::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index f47842dad..c3ec9c5a6 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -28,9 +28,9 @@ void GaussianBeamBase::SetTotalPower_W(const double total_power_W) { total_power_W_ = total_power_W; } -void GaussianBeamBase::SetPointingVector_i(const libra::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } +void GaussianBeamBase::SetPointingVector_i(const math::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } -void GaussianBeamBase::SetBeamWaistPosition_i_m(const libra::Vector<3> position_beam_waist_i_m) { +void GaussianBeamBase::SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m) { position_beam_waist_i_m_ = position_beam_waist_i_m; } diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index e47e98428..ae96c14e6 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -48,12 +48,12 @@ class GaussianBeamBase { * @fn SetPointingVector_i * @brief Set pointing direction vector in the inertial frame */ - void SetPointingVector_i(const libra::Vector<3> pointing_vector_i); + void SetPointingVector_i(const math::Vector<3> pointing_vector_i); /** * @fn SetBeamWaistPosition_i_m * @brief Set position of beam waist in the inertial frame [m] (Not used?) */ - void SetBeamWaistPosition_i_m(const libra::Vector<3> position_beam_waist_i_m); + void SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m); // Getter /** @@ -75,12 +75,12 @@ class GaussianBeamBase { * @fn GetPointingVector_i * @brief Return pointing direction vector in the inertial frame */ - inline const libra::Vector<3> GetPointingVector_i() const { return pointing_vector_i_; } + inline const math::Vector<3> GetPointingVector_i() const { return pointing_vector_i_; } /** * @fn GetBeamWaistPosition_i_m * @brief Return position of beam waist in the inertial frame [m] (Not used?) */ - inline const libra::Vector<3> GetBeamWaistPosition_i_m() const { return position_beam_waist_i_m_; } + inline const math::Vector<3> GetBeamWaistPosition_i_m() const { return position_beam_waist_i_m_; } // Calculate functions /** @@ -103,8 +103,8 @@ class GaussianBeamBase { double wavelength_m_; //!< Wavelength [m] double radius_beam_waist_m_; //!< Radius of beam waist [m] double total_power_W_; //!< Total power [W] - libra::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame - libra::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) + math::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame + math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; #endif // S2E_LIBRARY_OPTICS_GAUSSIAN_BEAM_BASE_HPP_ diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index eca927e24..e0ea33692 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -16,7 +16,7 @@ InterpolationOrbit::InterpolationOrbit(const size_t degree) { } } -bool InterpolationOrbit::PushAndPopData(const double time, const libra::Vector<3> position) { +bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position) { bool result; for (size_t axis = 0; axis < 3; axis++) { result = interpolation_position_[axis].PushAndPopData(time, position[axis]); @@ -27,8 +27,8 @@ bool InterpolationOrbit::PushAndPopData(const double time, const libra::Vector<3 return true; } -libra::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { - libra::Vector<3> output_position; +math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { + math::Vector<3> output_position; for (size_t axis = 0; axis < 3; axis++) { output_position[axis] = interpolation_position_[axis].CalcTrigonometric(time, period); } diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index 2f8c4cfd1..d45df5af7 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -30,7 +30,7 @@ class InterpolationOrbit { * @param [in] time: time of the new data * @param [in] position: Satellite position of the new data */ - bool PushAndPopData(const double time, const libra::Vector<3> position); + bool PushAndPopData(const double time, const math::Vector<3> position); /** * @fn CalcPositionWithTrigonometric @@ -39,7 +39,7 @@ class InterpolationOrbit { * @param [in] period: Characteristic period * @return Calculated position */ - libra::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; + math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; // Getters /** diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index 5b6d2622c..7bb6de1f0 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -50,12 +50,12 @@ void KeplerOrbit::CalcOrbit(double time_jday) { double a_sqrt_e_m = a_m * sqrt(1.0 - e * e); double e_cos_u = 1.0 - e * cos_u; - libra::Vector<3> pos_inplane_m; + math::Vector<3> pos_inplane_m; pos_inplane_m[0] = a_m * (cos_u - e); pos_inplane_m[1] = a_sqrt_e_m * sin_u; pos_inplane_m[2] = 0.0; - libra::Vector<3> vel_inplane_m_s; + math::Vector<3> vel_inplane_m_s; vel_inplane_m_s[0] = -1.0 * a_m * n_rad_s * sin_u / e_cos_u; vel_inplane_m_s[1] = n_rad_s * a_sqrt_e_m * cos_u / e_cos_u; vel_inplane_m_s[2] = 0.0; diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index 7b6697f79..6dc866a48 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -45,16 +45,16 @@ class KeplerOrbit { * @fn GetPosition_i_m * @brief Return position vector in the inertial frame [m] */ - inline const libra::Vector<3> GetPosition_i_m() const { return position_i_m_; } + inline const math::Vector<3> GetPosition_i_m() const { return position_i_m_; } /** * @fn GetVelocity_i_m_s * @brief Return velocity vector in the inertial frame [m/s] */ - inline const libra::Vector<3> GetVelocity_i_m_s() const { return velocity_i_m_s_; } + inline const math::Vector<3> GetVelocity_i_m_s() const { return velocity_i_m_s_; } protected: - libra::Vector<3> position_i_m_; //!< Position vector in the inertial frame [m] - libra::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] + math::Vector<3> position_i_m_; //!< Position vector in the inertial frame [m] + math::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] private: double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] diff --git a/src/math_physics/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp index db7bd24a3..8c50d8109 100644 --- a/src/math_physics/orbit/orbital_elements.cpp +++ b/src/math_physics/orbit/orbital_elements.cpp @@ -22,20 +22,20 @@ OrbitalElements::OrbitalElements(const double epoch_jday, const double semi_majo epoch_jday_(epoch_jday) {} // initialize with position and velocity -OrbitalElements::OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const libra::Vector<3> position_i_m, - const libra::Vector<3> velocity_i_m_s) { +OrbitalElements::OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s) { CalcOeFromPosVel(gravity_constant_m3_s2, time_jday, position_i_m, velocity_i_m_s); } OrbitalElements::~OrbitalElements() {} // Private Function -void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const libra::Vector<3> position_i_m, - const libra::Vector<3> velocity_i_m_s) { +void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s) { // common variables double r_m = position_i_m.CalcNorm(); double v2_m2_s2 = InnerProduct(velocity_i_m_s, velocity_i_m_s); - libra::Vector<3> h; //!< angular momentum vector + math::Vector<3> h; //!< angular momentum vector h = OuterProduct(position_i_m, velocity_i_m_s); double h_norm = h.CalcNorm(); @@ -43,7 +43,7 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons semi_major_axis_m_ = gravity_constant_m3_s2 / (2.0 * gravity_constant_m3_s2 / r_m - v2_m2_s2); // inclination - libra::Vector<3> h_direction = h.CalcNormalizedVector(); + math::Vector<3> h_direction = h.CalcNormalizedVector(); inclination_rad_ = acos(h_direction[2]); // RAAN diff --git a/src/math_physics/orbit/orbital_elements.hpp b/src/math_physics/orbit/orbital_elements.hpp index ca38435a1..9b813ac5a 100644 --- a/src/math_physics/orbit/orbital_elements.hpp +++ b/src/math_physics/orbit/orbital_elements.hpp @@ -39,8 +39,8 @@ class OrbitalElements { * @param[in] position_i_m: Position vector in the inertial frame [m] * @param[in] velocity_i_m_s: Velocity vector in the inertial frame [m/s] */ - OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const libra::Vector<3> position_i_m, - const libra::Vector<3> velocity_i_m_s); + OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s); /** * @fn ~OrbitalElements * @brief Destructor @@ -100,8 +100,8 @@ class OrbitalElements { * @param[in] position_i_m: Position vector in the inertial frame [m] * @param[in] velocity_i_m_s: Velocity vector in the inertial frame [m/s] */ - void CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const libra::Vector<3> position_i_m, - const libra::Vector<3> velocity_i_m_s); + void CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s); }; #endif // S2E_LIBRARY_ORBIT_ORBITAL_ELEMENTS_HPP_ diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index 5f5b7ade3..22439c87e 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -31,7 +31,7 @@ TEST(InterpolationOrbit, PushAndPop) { EXPECT_EQ(degree, interpolation_orbit.GetDegree()); for (size_t i = 0; i < degree; i++) { double time = (double)i; - libra::Vector<3> position{i * 2.0}; + math::Vector<3> position{i * 2.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_TRUE(ret); } @@ -44,7 +44,7 @@ TEST(InterpolationOrbit, PushAndPop) { // False test double time = 2.0; - libra::Vector<3> position{-100.0}; + math::Vector<3> position{-100.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_FALSE(ret); } diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index 08f2670a9..71ac96722 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -10,20 +10,20 @@ #include -math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { +math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); return dcm_me2pa * dcm_eci2me; } -math::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s) { - libra::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); +math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { + math::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); - libra::Vector<3> moon_orbit_norm = libra::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); - libra::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); + math::Vector<3> moon_orbit_norm = libra::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); + math::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); - libra::Vector<3> me_ey_eci = libra::OuterProduct(me_ez_eci, me_ex_eci); + math::Vector<3> me_ey_eci = libra::OuterProduct(me_ez_eci, me_ex_eci); math::Matrix<3, 3> dcm_eci_to_me; for (size_t i = 0; i < 3; i++) { diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index 79cc6e6f6..e2726f5e4 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -18,7 +18,7 @@ * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s); +math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmEciToMeanEarth @@ -26,7 +26,7 @@ math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const libra::Vector<3> moon_positio * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -math::Matrix<3, 3> CalcDcmEciToMeanEarth(const libra::Vector<3> moon_position_eci_m, const libra::Vector<3> moon_velocity_eci_m_s); +math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmMeToPrincipalAxis diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index 306888d4b..90496a7cf 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -24,7 +24,7 @@ class RandomWalk : public libra::OrdinaryDifferentialEquation { * @param standard_deviation: Standard deviation of random walk excitation noise * @param limit: Limit of random walk */ - RandomWalk(double step_width_s, const libra::Vector& standard_deviation, const libra::Vector& limit); + RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit); /** * @fn DerivativeFunction @@ -33,10 +33,10 @@ class RandomWalk : public libra::OrdinaryDifferentialEquation { * @param [in] state: State vector * @param [out] rhs: Differentiated value of state vector */ - virtual void DerivativeFunction(double x, const libra::Vector& state, libra::Vector& rhs); + virtual void DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs); private: - libra::Vector limit_; //!< Limit of random walk + math::Vector limit_; //!< Limit of random walk libra::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index 4242f6952..441d05a5b 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -10,7 +10,7 @@ #include template -RandomWalk::RandomWalk(double step_width_s, const libra::Vector& standard_deviation, const libra::Vector& limit) +RandomWalk::RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit) : libra::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { // Set standard deviation for (size_t i = 0; i < N; ++i) { @@ -19,7 +19,7 @@ RandomWalk::RandomWalk(double step_width_s, const libra::Vector& standard_ } template -void RandomWalk::DerivativeFunction(double x, const libra::Vector& state, libra::Vector& rhs) { +void RandomWalk::DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs) { UNUSED(x); // TODO: consider the x is really need for this function for (size_t i = 0; i < N; ++i) { diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index 81b547214..997a22c9f 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -110,7 +110,7 @@ class IniAccess { * @param[out] data: Read vector type data */ template - void ReadVector(const char* section_name, const char* key_name, libra::Vector& data); + void ReadVector(const char* section_name, const char* key_name, math::Vector& data); /** * @fn ReadStrVector * @brief Read list of string type @@ -208,7 +208,7 @@ class IniAccess { }; template -void IniAccess::ReadVector(const char* section_name, const char* key_name, libra::Vector& data) { +void IniAccess::ReadVector(const char* section_name, const char* key_name, math::Vector& data) { for (size_t i = 0; i < NumElement; i++) { std::stringstream c_name; c_name << key_name << "(" << i << ")"; diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index cfe2bff44..a90fd5d4d 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -52,12 +52,12 @@ void GroundStation::Update(const EarthRotation& celestial_rotation, const Spacec is_visible_[spacecraft.GetSpacecraftId()] = CalcIsVisible(spacecraft.GetDynamics().GetOrbit().GetPosition_ecef_m()); } -bool GroundStation::CalcIsVisible(const libra::Vector<3> spacecraft_position_ecef_m) { +bool GroundStation::CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m) { libra::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); - libra::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] + math::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] sc_pos_ltc = sc_pos_ltc.CalcNormalizedVector(); - libra::Vector<3> dir_gs_to_zenith = libra::Vector<3>(0); + math::Vector<3> dir_gs_to_zenith = math::Vector<3>(0); dir_gs_to_zenith[2] = 1; // Judge the satellite position angle is over the minimum elevation diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index 25bc20100..b6dd39c03 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -120,7 +120,7 @@ void InitializedMonteCarloParameters::GenerateCartesianNormal() { } } -void InitializedMonteCarloParameters::CalcCircularNormalUniform(libra::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, +void InitializedMonteCarloParameters::CalcCircularNormalUniform(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max) { // r follows normal distribution, and θ follows uniform distribution in Circular frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -134,7 +134,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalUniform() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - libra::Vector temp_vec; + math::Vector temp_vec; CalcCircularNormalUniform(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1]); randomized_value_.clear(); @@ -143,7 +143,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalUniform() { } } -void InitializedMonteCarloParameters::CalcCircularNormalNormal(libra::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, +void InitializedMonteCarloParameters::CalcCircularNormalNormal(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma) { // r and θ follow normal distribution in Circular frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -157,7 +157,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - libra::Vector temp_vec; + math::Vector temp_vec; CalcCircularNormalNormal(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1]); randomized_value_.clear(); @@ -166,7 +166,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(libra::Vector<3>& destination, double r_mean, double r_sigma, +void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, double phi_min, double phi_max) { // r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -182,7 +182,7 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalUniformUniform() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - libra::Vector temp_vec; + math::Vector temp_vec; CalcSphericalNormalUniformUniform(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1], mean_or_min_[2], sigma_or_max_[2]); @@ -192,29 +192,29 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalUniformUniform() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalNormal(libra::Vector<3>& destination, const libra::Vector<3>& mean_vec) { +void InitializedMonteCarloParameters::CalcSphericalNormalNormal(math::Vector<3>& destination, const math::Vector<3>& mean_vec) { // r and θ follow normal distribution, and mean vector angle φ follows uniform distribution [0,2*pi] - libra::Vector<3> mean_vec_dir; + math::Vector<3> mean_vec_dir; mean_vec_dir = 1.0 / mean_vec.CalcNorm() * mean_vec; // Unit vector of mean vector direction - libra::Vector<3> x_axis(0.0), y_axis(0.0); + math::Vector<3> x_axis(0.0), y_axis(0.0); x_axis[0] = 1.0; y_axis[1] = 1.0; - libra::Vector<3> op_x = OuterProduct(mean_vec_dir, x_axis); - libra::Vector<3> op_y = OuterProduct(mean_vec_dir, y_axis); + math::Vector<3> op_x = OuterProduct(mean_vec_dir, x_axis); + math::Vector<3> op_y = OuterProduct(mean_vec_dir, y_axis); // An unit vector perpendicular with the mean vector // In case of the mean vector is parallel with X or Y axis, selecting the axis depend on the norm of outer product - libra::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); + math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, libra::tau); libra::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) - libra::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation + math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation double rotation_angle_of_mean_vec = InitializedMonteCarloParameters::Generate1dNormal(0.0, sigma_or_max_[1]); libra::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) - libra::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction + math::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction ret_vec = InitializedMonteCarloParameters::Generate1dNormal(mean_vec.CalcNorm(), sigma_or_max_[0]) * ret_vec; // multiply norm @@ -228,7 +228,7 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < 2) { throw "Config parameters dimension unmatched."; } - libra::Vector temp_vec, temp_mean_vec; + math::Vector temp_vec, temp_mean_vec; for (int i = 0; i < dim; i++) { temp_mean_vec[i] = mean_or_min_[i]; } @@ -242,12 +242,12 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { void InitializedMonteCarloParameters::CalcQuaternionUniform(libra::Quaternion& destination) { // Perfectly Randomized libra::Quaternion - libra::Vector<3> x_axis(0.0); + math::Vector<3> x_axis(0.0); x_axis[0] = 1.0; // A direction vector converted from the X-axis by a quaternion may follows the uniform distribution in full sphere. libra::Quaternion first_cnv; - libra::Vector<3> x_axis_cnvd; + math::Vector<3> x_axis_cnvd; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); double phi = InitializedMonteCarloParameters::Generate1dUniform(0, libra::tau); x_axis_cnvd[0] = sin(theta) * cos(phi); @@ -255,7 +255,7 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(libra::Quaternion& d x_axis_cnvd[2] = cos(theta); double cos_angle_between = InnerProduct(x_axis, x_axis_cnvd); - libra::Vector<3> op = OuterProduct(x_axis, x_axis_cnvd); + math::Vector<3> op = OuterProduct(x_axis, x_axis_cnvd); for (int i = 0; i < 3; i++) { first_cnv[i] = op[i]; } @@ -286,7 +286,7 @@ void InitializedMonteCarloParameters::GenerateQuaternionUniform() { void InitializedMonteCarloParameters::CalcQuaternionNormal(libra::Quaternion& destination, double theta_sigma) { // Angle from the default quaternion θ follows normal distribution // The rotation axis follows uniform distribution on full sphere - libra::Vector<3> rot_axis; + math::Vector<3> rot_axis; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); double phi = InitializedMonteCarloParameters::Generate1dUniform(0, libra::tau); rot_axis[0] = sin(theta) * cos(phi); diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index cf73abc2a..0ea121585 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -52,7 +52,7 @@ class InitializedMonteCarloParameters { * @brief Set randomization parameters */ template - void SetRandomConfiguration(const libra::Vector& mean_or_min, const libra::Vector& sigma_or_max, + void SetRandomConfiguration(const math::Vector& mean_or_min, const math::Vector& sigma_or_max, RandomizationType random_type); // Getter @@ -61,7 +61,7 @@ class InitializedMonteCarloParameters { * @brief Get randomized vector value results */ template - void GetRandomizedVector(libra::Vector& destination) const; + void GetRandomizedVector(math::Vector& destination) const; /** * @fn GetRandomizedQuaternion * @brief Get randomized quaternion results @@ -175,23 +175,23 @@ class InitializedMonteCarloParameters { * @fn CalcCircularNormalUniform * @brief Calculate randomized value with CircularNormalUniform mode */ - void CalcCircularNormalUniform(libra::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max); + void CalcCircularNormalUniform(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max); /** * @fn CalcCircularNormalNormal * @brief Calculate randomized value with CircularNormalNormal mode */ - void CalcCircularNormalNormal(libra::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma); + void CalcCircularNormalNormal(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma); /** * @fn CalcSphericalNormalUniformUniform * @brief Calculate randomized value with SphericalNormalUniformUniform mode */ - void CalcSphericalNormalUniformUniform(libra::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, + void CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, double phi_min, double phi_max); /** * @fn CalcSphericalNormalNormal * @brief Calculate randomized value with SphericalNormalNormal mode */ - void CalcSphericalNormalNormal(libra::Vector<3>& destination, const libra::Vector<3>& mean_vec); + void CalcSphericalNormalNormal(math::Vector<3>& destination, const math::Vector<3>& mean_vec); /** * @fn CalcQuaternionUniform * @brief Calculate randomized value with QuaternionUniform mode @@ -205,8 +205,8 @@ class InitializedMonteCarloParameters { }; template -void InitializedMonteCarloParameters::SetRandomConfiguration(const libra::Vector& mean_or_min, - const libra::Vector& sigma_or_max, +void InitializedMonteCarloParameters::SetRandomConfiguration(const math::Vector& mean_or_min, + const math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type) { randomization_type_ = random_type; mean_or_min_.clear(); @@ -220,7 +220,7 @@ void InitializedMonteCarloParameters::SetRandomConfiguration(const libra::Vector } template -void InitializedMonteCarloParameters::GetRandomizedVector(libra::Vector& destination) const { +void InitializedMonteCarloParameters::GetRandomizedVector(math::Vector& destination) const { if (randomization_type_ == kNoRandomization) { ; } else if (NumElement > randomized_value_.size()) { diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp index 267859b9a..8c3ad1e39 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp @@ -79,12 +79,12 @@ MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name) { // Read mean_or_min vector key_name = so_dot_ip_str + MonteCarloSimulationExecutor::separator_ + "mean_or_min"; - libra::Vector<3> mean_or_min; + math::Vector<3> mean_or_min; ini_file.ReadVector(section, key_name.c_str(), mean_or_min); // Read sigma_or_max vector key_name = so_dot_ip_str + MonteCarloSimulationExecutor::separator_ + "sigma_or_max"; - libra::Vector<3> sigma_or_max; + math::Vector<3> sigma_or_max; ini_file.ReadVector(section, key_name.c_str(), sigma_or_max); // Write randomize setting diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index 57440e33d..0cf862dda 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -86,7 +86,7 @@ class MonteCarloSimulationExecutor { */ template void GetInitializedMonteCarloParameterVector(std::string so_name, std::string init_monte_carlo_parameter_name, - libra::Vector& destination) const; + math::Vector& destination) const; /** * @fn GetInitializedMonteCarloParameterDouble * @brief Get randomized value and store it in dest @@ -126,7 +126,7 @@ class MonteCarloSimulationExecutor { * @brief Add initialized parameter */ void AddInitializedMonteCarloParameter(std::string so_name, std::string init_monte_carlo_parameter_name, - const libra::Vector& mean_or_min, const libra::Vector& sigma_or_max, + const math::Vector& mean_or_min, const math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type); /** @@ -138,7 +138,7 @@ class MonteCarloSimulationExecutor { template void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterVector(std::string so_name, std::string init_monte_carlo_parameter_name, - libra::Vector& destination) const { + math::Vector& destination) const { if (!enabled_) return; std::string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; if (init_parameter_list_.find(name) == init_parameter_list_.end()) { @@ -151,8 +151,8 @@ void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterVector(std:: template void MonteCarloSimulationExecutor::AddInitializedMonteCarloParameter(std::string so_name, std::string init_monte_carlo_parameter_name, - const libra::Vector& mean_or_min, - const libra::Vector& sigma_or_max, + const math::Vector& mean_or_min, + const math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type) { std::string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; if (init_parameter_list_.find(name) == init_parameter_list_.end()) { diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index daf6d23ee..d0fe92f49 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -40,7 +40,7 @@ class SimulationObject { */ template void GetInitializedMonteCarloParameterVector(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - libra::Vector& destination) const; + math::Vector& destination) const; /** * @fn GetInitializedMonteCarloParameterDouble @@ -80,7 +80,7 @@ class SimulationObject { template void SimulationObject::GetInitializedMonteCarloParameterVector(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - libra::Vector& destination) const { + math::Vector& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterVector(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index 57f36d9c1..93b6e9e63 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -13,8 +13,8 @@ void RelativeInformation::Update() { for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < dynamics_database_.size(); reference_spacecraft_id++) { // Position - libra::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id] = target_sat_pos_i - reference_sat_pos_i; relative_position_list_rtn_m_[target_spacecraft_id][reference_spacecraft_id] = CalcRelativePosition_rtn_m(target_spacecraft_id, reference_spacecraft_id); @@ -24,8 +24,8 @@ void RelativeInformation::Update() { relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id].CalcNorm(); // Velocity - libra::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - libra::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); relative_velocity_list_i_m_s_[target_spacecraft_id][reference_spacecraft_id] = target_sat_vel_i - reference_sat_vel_i; relative_velocity_list_rtn_m_s_[target_spacecraft_id][reference_spacecraft_id] = CalcRelativeVelocity_rtn_m_s(target_spacecraft_id, reference_spacecraft_id); @@ -122,44 +122,44 @@ libra::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size return q_target_i2b * q_reference_b2i; } -libra::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { - libra::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; +math::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { + math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite libra::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); - libra::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); + math::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); return relative_pos_rtn; } -libra::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { - libra::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); - libra::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; +math::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { + math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite libra::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); // Rotation vector of RTN frame - libra::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - libra::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - libra::Vector<3> rot_vec_rtn_i = cross(reference_sat_pos_i, reference_sat_vel_i); + math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> rot_vec_rtn_i = cross(reference_sat_pos_i, reference_sat_vel_i); double r2_ref = reference_sat_pos_i.CalcNorm() * reference_sat_pos_i.CalcNorm(); rot_vec_rtn_i /= r2_ref; - libra::Vector<3> relative_vel_i = target_sat_vel_i - reference_sat_vel_i - cross(rot_vec_rtn_i, relative_pos_i); + math::Vector<3> relative_vel_i = target_sat_vel_i - reference_sat_vel_i - cross(rot_vec_rtn_i, relative_pos_i); - libra::Vector<3> relative_vel_rtn = q_i2rtn.FrameConversion(relative_vel_i); + math::Vector<3> relative_vel_rtn = q_i2rtn.FrameConversion(relative_vel_i); return relative_vel_rtn; } void RelativeInformation::ResizeLists() { size_t size = dynamics_database_.size(); - relative_position_list_i_m_.assign(size, std::vector>(size, libra::Vector<3>(0))); - relative_velocity_list_i_m_s_.assign(size, std::vector>(size, libra::Vector<3>(0))); + relative_position_list_i_m_.assign(size, std::vector>(size, math::Vector<3>(0))); + relative_velocity_list_i_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); relative_distance_list_m_.assign(size, std::vector(size, 0.0)); - relative_position_list_rtn_m_.assign(size, std::vector>(size, libra::Vector<3>(0))); - relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, libra::Vector<3>(0))); + relative_position_list_rtn_m_.assign(size, std::vector>(size, math::Vector<3>(0))); + relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); relative_attitude_quaternion_list_.assign(size, std::vector(size, libra::Quaternion(0, 0, 0, 1))); } diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index a1de06e28..abe2e1b45 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -82,7 +82,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline libra::Vector<3> GetRelativePosition_i_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativePosition_i_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -91,7 +91,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline libra::Vector<3> GetRelativeVelocity_i_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativeVelocity_i_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_velocity_list_i_m_s_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -109,7 +109,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline libra::Vector<3> GetRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_position_list_rtn_m_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -118,7 +118,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline libra::Vector<3> GetRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_velocity_list_rtn_m_s_[target_spacecraft_id][reference_spacecraft_id]; } @@ -134,10 +134,10 @@ class RelativeInformation : public ILoggable { private: std::map dynamics_database_; //!< Dynamics database of all spacecraft - std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] - std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] - std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] - std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] + std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] + std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] + std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] + std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] std::vector> relative_distance_list_m_; //!< Relative distance list in unit [m] std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list @@ -154,14 +154,14 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - libra::Vector<3> CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + math::Vector<3> CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn CalcRelativeVelocity_rtn_m_s * @brief Calculate and return the relative velocity in RTN frame * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - libra::Vector<3> CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + math::Vector<3> CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn ResizeLists diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index 325be3369..7497df29e 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -7,13 +7,13 @@ #include -libra::Vector<3> InstalledComponents::GenerateForce_b_N() { - libra::Vector<3> force_b_N_(0.0); +math::Vector<3> InstalledComponents::GenerateForce_b_N() { + math::Vector<3> force_b_N_(0.0); return force_b_N_; } -libra::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { - libra::Vector<3> torque_b_Nm_(0.0); +math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { + math::Vector<3> torque_b_Nm_(0.0); return torque_b_Nm_; } diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index 5806f6b34..4a4550c55 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -26,14 +26,14 @@ class InstalledComponents { * @brief Return force generated by components in unit Newton in body fixed frame * @details Users need to override this function to add force generated by components */ - virtual libra::Vector<3> GenerateForce_b_N(); + virtual math::Vector<3> GenerateForce_b_N(); /** * @fn GenerateTorque_b_Nm * @brief Return torque generated by components in unit Newton-meter in body fixed frame * @details Users need to override this function to add torque generated by components */ - virtual libra::Vector<3> GenerateTorque_b_Nm(); + virtual math::Vector<3> GenerateTorque_b_Nm(); /** * @fn ComponentInterference diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 463c06285..0c2a49b35 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -13,10 +13,10 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { auto conf = IniAccess(file_name); const char* section = "KINEMATIC_PARAMETERS"; - libra::Vector<3> center_of_gravity_b_m; + math::Vector<3> center_of_gravity_b_m; conf.ReadVector(section, "center_of_gravity_b_m", center_of_gravity_b_m); double mass_kg = conf.ReadDouble(section, "mass_kg"); - libra::Vector<9> inertia_vec; + math::Vector<9> inertia_vec; math::Matrix<3, 3> inertia_tensor_b_kgm2; conf.ReadVector(section, "inertia_tensor_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { @@ -110,7 +110,7 @@ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { auto conf = IniAccess(file_name); const char* section = "RESIDUAL_MAGNETIC_MOMENT"; - libra::Vector<3> rmm_const_b; + math::Vector<3> rmm_const_b; conf.ReadVector(section, "rmm_constant_b_Am2", rmm_const_b); double rmm_rwdev = conf.ReadDouble(section, "rmm_random_walk_speed_Am2"); double random_walk_limit_Am2 = conf.ReadDouble(section, "rmm_random_walk_limit_Am2"); diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 37cefb0a9..67906710a 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -5,5 +5,5 @@ #include "kinematics_parameters.hpp" -KinematicsParameters::KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) +KinematicsParameters::KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 91916000b..cab7abb00 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -19,7 +19,7 @@ class KinematicsParameters { * @fn KinematicsParameters * @brief Constructor */ - KinematicsParameters(libra::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2); + KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2); /** * @fn ~KinematicsParameters * @brief Destructor @@ -31,7 +31,7 @@ class KinematicsParameters { * @fn GetCenterOfGravity_b_m * @brief Return Position vector of center of gravity at body frame [m] */ - inline const libra::Vector<3>& GetCenterOfGravity_b_m() const { return center_of_gravity_b_m_; } + inline const math::Vector<3>& GetCenterOfGravity_b_m() const { return center_of_gravity_b_m_; } /** * @fn GetMass_kg * @brief Return Mass of the satellite [kg] @@ -49,7 +49,7 @@ class KinematicsParameters { * @brief Set center of gravity vector at the body frame [m] * @param [in] center_of_gravity_vector_b_m: Center of gravity vector at the body frame [m] */ - inline void SetCenterOfGravityVector_b_m(const libra::Vector<3> center_of_gravity_vector_b_m) { + inline void SetCenterOfGravityVector_b_m(const math::Vector<3> center_of_gravity_vector_b_m) { center_of_gravity_b_m_ = center_of_gravity_vector_b_m; } /** @@ -81,7 +81,7 @@ class KinematicsParameters { } private: - libra::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] + math::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] double mass_kg_; //!< Mass of the satellite [kg] math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index f78bd5dea..72000e51f 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -7,7 +7,7 @@ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ #include -using libra::Vector; +using math::Vector; /** * @class ResidualMagneticMoment diff --git a/src/simulation/spacecraft/structure/surface.cpp b/src/simulation/spacecraft/structure/surface.cpp index 2666526e2..06af72cde 100644 --- a/src/simulation/spacecraft/structure/surface.cpp +++ b/src/simulation/spacecraft/structure/surface.cpp @@ -5,7 +5,7 @@ #include "surface.hpp" -Surface::Surface(const libra::Vector<3> position_b_m, const libra::Vector<3> normal_b, const double area_m2, const double reflectivity, +Surface::Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity) : position_b_m_(position_b_m), normal_b_(normal_b), diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index c5f573a36..127c81028 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -18,7 +18,7 @@ class Surface { * @fn Surface * @brief Constructor */ - Surface(const libra::Vector<3> position_b_m, const libra::Vector<3> normal_b, const double area_m2, const double reflectivity, + Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity); /** * @fn ~Surface @@ -31,12 +31,12 @@ class Surface { * @fn GetPosition_b_m * @brief Return position vector of geometric center of the surface in body frame and meter unit */ - inline const libra::Vector<3>& GetPosition_b_m(void) const { return position_b_m_; } + inline const math::Vector<3>& GetPosition_b_m(void) const { return position_b_m_; } /** * @fn GetNormal_b * @brief Return normal vector of the surface in body frame */ - inline const libra::Vector<3>& GetNormal_b(void) const { return normal_b_; } + inline const math::Vector<3>& GetNormal_b(void) const { return normal_b_; } /** * @fn GetArea_m2 * @brief Return area of the surface in meter^2 unit @@ -64,13 +64,13 @@ class Surface { * @brief Set position vector of geometric center of the surface in body frame [m] * @param[in] position_b_m: Position vector of geometric center of the surface in body frame [m] */ - inline void SetPosition_b_m(const libra::Vector<3> position_b_m) { position_b_m_ = position_b_m; } + inline void SetPosition_b_m(const math::Vector<3> position_b_m) { position_b_m_ = position_b_m; } /** * @fn SetNormal * @brief Set normal vector of the surface in body frame * @param[in] normal_b: Normal vector of the surface in body frame */ - inline void SetNormal_b(const libra::Vector<3> normal_b) { normal_b_ = normal_b.CalcNormalizedVector(); } + inline void SetNormal_b(const math::Vector<3> normal_b) { normal_b_ = normal_b.CalcNormalizedVector(); } /** * @fn SetArea_m2 * @brief Set area of the surface @@ -105,8 +105,8 @@ class Surface { } private: - libra::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] - libra::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] + math::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] + math::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] double area_m2_; //!< Area of the surface [m2] double reflectivity_; //!< Total reflectivity for solar wavelength (1.0 - solar absorption) double specularity_; //!< Ratio of specular reflection in the total reflected light diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index c2c6810ac..20f6f055f 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -142,21 +142,21 @@ SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structur /**************/ // actuator debug output - // libra::Vector mag_moment_c{0.01}; + // math::Vector mag_moment_c{0.01}; // magnetorquer_->SetOutputMagneticMoment_c_Am2(mag_moment_c); // reaction_wheel_->SetTargetTorque_rw_Nm(0.01); // reaction_wheel_->SetDriveFlag(true); // thruster_->SetDuty(0.9); // force generator debug output - // libra::Vector<3> force_N; + // math::Vector<3> force_N; // force_N[0] = 1.0; // force_N[1] = 0.0; // force_N[2] = 0.0; // force_generator_->SetForce_b_N(force_N); // torque generator debug output - // libra::Vector<3> torque_Nm; + // math::Vector<3> torque_Nm; // torque_Nm[0] = 0.1; // torque_Nm[1] = 0.0; // torque_Nm[2] = 0.0; @@ -189,15 +189,15 @@ SampleComponents::~SampleComponents() { delete hils_port_manager_; // delete after exp_hils } -libra::Vector<3> SampleComponents::GenerateForce_b_N() { - libra::Vector<3> force_b_N_(0.0); +math::Vector<3> SampleComponents::GenerateForce_b_N() { + math::Vector<3> force_b_N_(0.0); force_b_N_ += thruster_->GetOutputThrust_b_N(); force_b_N_ += force_generator_->GetGeneratedForce_b_N(); return force_b_N_; } -libra::Vector<3> SampleComponents::GenerateTorque_b_Nm() { - libra::Vector<3> torque_b_Nm_(0.0); +math::Vector<3> SampleComponents::GenerateTorque_b_Nm() { + math::Vector<3> torque_b_Nm_(0.0); torque_b_Nm_ += magnetorquer_->GetOutputTorque_b_Nm(); torque_b_Nm_ += reaction_wheel_->GetOutputTorque_b_Nm(); torque_b_Nm_ += thruster_->GetOutputTorque_b_Nm(); diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 9ba706255..d03044b3b 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -74,12 +74,12 @@ class SampleComponents : public InstalledComponents { * @fn GenerateForce_b_N * @brief Return force generated by components in unit Newton in body fixed frame */ - libra::Vector<3> GenerateForce_b_N() override; + math::Vector<3> GenerateForce_b_N() override; /** * @fn GenerateTorque_b_Nm * @brief Return torque generated by components in unit Newton-meter in body fixed frame */ - libra::Vector<3> GenerateTorque_b_Nm() override; + math::Vector<3> GenerateTorque_b_Nm() override; /** * @fn ComponentInterference * @brief Handle component interference effect From 1b741afec7a750747ab991c04dec65ef2ddd4d17 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:22:08 +0900 Subject: [PATCH 222/456] Replace libra::Quaternion to math::Quaternion --- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ideal/attitude_observer.hpp | 4 +- src/components/ideal/force_generator.cpp | 16 ++--- src/components/ideal/force_generator.hpp | 2 +- src/components/ideal/orbit_observer.cpp | 2 +- src/components/ideal/torque_generator.cpp | 6 +- src/components/ideal/torque_generator.hpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 16 ++--- src/components/real/aocs/gnss_receiver.hpp | 14 ++-- src/components/real/aocs/gyro_sensor.cpp | 8 +-- src/components/real/aocs/gyro_sensor.hpp | 6 +- src/components/real/aocs/magnetometer.cpp | 8 +-- src/components/real/aocs/magnetometer.hpp | 6 +- src/components/real/aocs/magnetorquer.cpp | 8 +-- src/components/real/aocs/magnetorquer.hpp | 8 +-- src/components/real/aocs/reaction_wheel.cpp | 8 +-- src/components/real/aocs/reaction_wheel.hpp | 6 +- .../real/aocs/reaction_wheel_jitter.cpp | 2 +- .../real/aocs/reaction_wheel_jitter.hpp | 4 +- src/components/real/aocs/star_sensor.cpp | 20 +++--- src/components/real/aocs/star_sensor.hpp | 14 ++-- src/components/real/aocs/sun_sensor.cpp | 8 +-- src/components/real/aocs/sun_sensor.hpp | 6 +- src/components/real/communication/antenna.cpp | 4 +- src/components/real/communication/antenna.hpp | 6 +- src/components/real/mission/telescope.cpp | 6 +- src/components/real/mission/telescope.hpp | 4 +- .../real/propulsion/simple_thruster.cpp | 4 +- src/disturbances/air_drag.cpp | 2 +- src/dynamics/attitude/attitude.cpp | 4 +- src/dynamics/attitude/attitude.hpp | 6 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- src/dynamics/attitude/attitude_rk4.hpp | 2 +- .../attitude_with_cantilever_vibration.cpp | 2 +- .../attitude_with_cantilever_vibration.hpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 8 +-- src/dynamics/attitude/controlled_attitude.hpp | 6 +- src/dynamics/attitude/initialize_attitude.cpp | 4 +- ...ode_attitude_with_cantilever_vibration.hpp | 8 +-- src/dynamics/orbit/orbit.cpp | 4 +- src/dynamics/orbit/orbit.hpp | 6 +- src/dynamics/orbit/relative_orbit.cpp | 8 +-- .../global/hipparcos_catalogue.cpp | 2 +- .../global/hipparcos_catalogue.hpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/environment/local/geomagnetic_field.hpp | 2 +- .../local/local_celestial_information.cpp | 8 +-- .../local/local_celestial_information.hpp | 8 +-- src/logger/log_utility.hpp | 4 +- .../geodesy/geodetic_position.hpp | 4 +- src/math_physics/math/test_quaternion.cpp | 70 +++++++++---------- .../initialize_file_access.cpp | 4 +- .../initialize_file_access.hpp | 2 +- .../ground_station/ground_station.cpp | 2 +- .../initialize_monte_carlo_parameters.cpp | 24 +++---- .../initialize_monte_carlo_parameters.hpp | 8 +-- .../monte_carlo_simulation_executor.cpp | 2 +- .../monte_carlo_simulation_executor.hpp | 2 +- .../simulation_object.cpp | 2 +- .../simulation_object.hpp | 2 +- .../relative_information.cpp | 14 ++-- .../relative_information.hpp | 6 +- 62 files changed, 217 insertions(+), 217 deletions(-) diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 58dd24d60..7b8ab276c 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -25,7 +25,7 @@ void AttitudeObserver::MainRoutine(const int time_count) { random_direction = random_direction.CalcNormalizedVector(); double error_angle_rad = angle_noise_; - libra::Quaternion error_quaternion(random_direction, error_angle_rad); + math::Quaternion error_quaternion(random_direction, error_angle_rad); observed_quaternion_i2b_ = error_quaternion * attitude_.GetQuaternion_i2b(); } diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index c00cebd13..70f571eb8 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -57,10 +57,10 @@ class AttitudeObserver : public Component, public ILoggable { * @fn GetQuaternion_i2c * @brief Return observed quaternion from the inertial frame to the body-fixed frame */ - inline const libra::Quaternion GetQuaternion_i2b() const { return observed_quaternion_i2b_; }; + inline const math::Quaternion GetQuaternion_i2b() const { return observed_quaternion_i2b_; }; protected: - libra::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion + math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion libra::NormalRand angle_noise_; //!< Normal random for magnitude noise libra::NormalRand direction_noise_; //!< Normal random for direction noise diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index cf5105f5c..e1df7e741 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -30,15 +30,15 @@ void ForceGenerator::MainRoutine(const int time_count) { if (norm_ordered_force > 0.0 + DBL_EPSILON) { // Add noise only when the force is generated math::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); - libra::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); + math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double force_norm_with_error = norm_ordered_force + magnitude_noise_; generated_force_b_N_ = force_norm_with_error * converted_direction; } // Convert frame - libra::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - libra::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); generated_force_i_N_ = q_i2b.InverseFrameConversion(generated_force_b_N_); generated_force_rtn_N_ = q_i2rtn.FrameConversion(generated_force_i_N_); } @@ -50,13 +50,13 @@ void ForceGenerator::PowerOffRoutine() { } void ForceGenerator::SetForce_i_N(const math::Vector<3> force_i_N) { - libra::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } void ForceGenerator::SetForce_rtn_N(const math::Vector<3> force_rtn_N) { - libra::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - libra::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); math::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); @@ -85,7 +85,7 @@ std::string ForceGenerator::GetLogValue() const { return str_tmp; } -libra::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { +math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; @@ -101,7 +101,7 @@ libra::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector< } double error_angle_rad = direction_noise_ * error_standard_deviation_rad; - libra::Quaternion error_quaternion(rotation_axis, error_angle_rad); + math::Quaternion error_quaternion(rotation_axis, error_angle_rad); return error_quaternion; } diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index f4395663e..684f5bab0 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -110,7 +110,7 @@ class ForceGenerator : public Component, public ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - libra::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); + math::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); const Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index b287ee680..e1b91d0c7 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -24,7 +24,7 @@ void OrbitObserver::MainRoutine(const int time_count) { math::Vector<3> position_error_rtn_m{0.0}; math::Vector<3> velocity_error_i_m_s{0.0}; math::Vector<3> velocity_error_rtn_m_s{0.0}; - libra::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); + math::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (noise_frame_) { case NoiseFrame::kInertial: for (size_t axis = 0; axis < 3; axis++) { diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index b0a137d9b..8f8a58c56 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -30,7 +30,7 @@ void TorqueGenerator::MainRoutine(const int time_count) { if (norm_ordered_torque > 0.0 + DBL_EPSILON) { // Add noise only when the torque is generated math::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); - libra::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); + math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double torque_norm_with_error = norm_ordered_torque + magnitude_noise_; generated_torque_b_Nm_ = torque_norm_with_error * converted_direction; @@ -58,7 +58,7 @@ std::string TorqueGenerator::GetLogValue() const { return str_tmp; } -libra::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { +math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; @@ -74,7 +74,7 @@ libra::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector } double error_angle_rad = direction_noise_ * error_standard_deviation_rad; - libra::Quaternion error_quaternion(rotation_axis, error_angle_rad); + math::Quaternion error_quaternion(rotation_axis, error_angle_rad); return error_quaternion; } diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 5fafc2c4c..b762fd99e 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -88,7 +88,7 @@ class TorqueGenerator : public Component, public ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - libra::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); + math::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); const Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index d9bd1a4fd..5017a4333 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -12,7 +12,7 @@ #include GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) @@ -32,7 +32,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, } GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) @@ -57,7 +57,7 @@ void GnssReceiver::MainRoutine(const int time_count) { // Antenna checking // TODO: Use ECEF position only math::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); - libra::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); CheckAntenna(position_true_eci, quaternion_i2b); if (is_gnss_visible_) { @@ -74,7 +74,7 @@ void GnssReceiver::MainRoutine(const int time_count) { ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } -void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { if (antenna_model_ == AntennaModel::kSimple) { CheckAntennaSimple(position_true_eci_m, quaternion_i2b); } else if (antenna_model_ == AntennaModel::kCone) { @@ -84,7 +84,7 @@ void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const } } -void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction @@ -102,7 +102,7 @@ void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, } } -void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, const libra::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { // Cone model gnss_information_list_.clear(); @@ -161,7 +161,7 @@ void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, c } } -void GnssReceiver::SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, +void GnssReceiver::SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const math::Quaternion quaternion_i2b, const std::size_t gnss_system_id) { math::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); math::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); @@ -253,7 +253,7 @@ typedef struct _gnss_receiver_param { int prescaler; AntennaModel antenna_model; math::Vector<3> antenna_pos_b; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; double half_width_deg; math::Vector<3> position_noise_standard_deviation_ecef_m; math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 5b1acb425..1e1cece20 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -59,7 +59,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, const double half_width_deg, + const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** @@ -79,7 +79,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const libra::Quaternion quaternion_b2c, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); @@ -132,7 +132,7 @@ class GnssReceiver : public Component, public ILoggable { // Antenna math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] - libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] AntennaModel antenna_model_; //!< Antenna model @@ -166,7 +166,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntenna(const math::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); + void CheckAntenna(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); /** * @fn CheckAntennaSimple * @brief Check the antenna can detect GNSS signal with Simple mode @@ -174,7 +174,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaSimple(const math::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); + void CheckAntennaSimple(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); /** * @fn CheckAntennaCone * @brief Check the antenna can detect GNSS signal with Cone mode @@ -182,7 +182,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaCone(const math::Vector<3> position_true_i_m, const libra::Quaternion quaternion_i2b); + void CheckAntennaCone(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); /** * @fn SetGnssInfo * @brief Calculate and set the GnssInfo values of target GNSS satellite @@ -190,7 +190,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] gnss_system_id: ID of target GNSS satellite */ - void SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const libra::Quaternion quaternion_i2b, const size_t gnss_system_id); + void SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const math::Quaternion quaternion_i2b, const size_t gnss_system_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index 5df3751f3..20e03edc9 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -8,11 +8,11 @@ #include GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const Dynamics* dynamics) + const math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const Dynamics* dynamics) + const math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -52,7 +52,7 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; gyro_conf.ReadQuaternion(GSection, "quaternion_b2c", quaternion_b2c); int prescaler = gyro_conf.ReadInt(GSection, "prescaler"); if (prescaler <= 1) prescaler = 1; @@ -73,7 +73,7 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, PowerPort* power_port const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; gyro_conf.ReadQuaternion(GSection, "quaternion_b2c", quaternion_b2c); int prescaler = gyro_conf.ReadInt(GSection, "prescaler"); if (prescaler <= 1) prescaler = 1; diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index cece441a3..139bf8597 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -32,7 +32,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const Dynamics* dynamics); + const math::Quaternion& quaternion_b2c, const Dynamics* dynamics); /** * @fn GyroSensor * @brief Constructor with power port @@ -45,7 +45,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const Dynamics* dynamics); + const math::Quaternion& quaternion_b2c, const Dynamics* dynamics); /** * @fn ~GyroSensor * @brief Destructor @@ -81,7 +81,7 @@ class GyroSensor : public Component, public Sensor, public ILogg math::Vector angular_velocity_c_rad_s_{ 0.0}; //!< Observed angular velocity of the component frame with respect to the inertial frame [rad/s] unsigned int sensor_id_ = 0; //!< Sensor ID - libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const Dynamics* dynamics_; //!< Dynamics information }; diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index b2cbc730c..d28be5bad 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -8,14 +8,14 @@ #include Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), geomagnetic_field_(geomagnetic_field) {} Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -57,7 +57,7 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, co int prescaler = magsensor_conf.ReadInt(MSSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magsensor_conf.ReadQuaternion(MSSection, "quaternion_b2c", quaternion_b2c); // Sensor @@ -78,7 +78,7 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, PowerPort* power_ int prescaler = magsensor_conf.ReadInt(MSSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magsensor_conf.ReadQuaternion(MSSection, "quaternion_b2c", quaternion_b2c); // Sensor diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 376f6fed7..1c16eaa49 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -32,7 +32,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn Magnetometer * @brief Constructor with power port @@ -45,7 +45,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const libra::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn ~Magnetometer * @brief Destructor @@ -100,7 +100,7 @@ class Magnetometer : public Component, public Sensor, pu protected: math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] unsigned int sensor_id_ = 0; //!< Sensor ID - libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment }; diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 9d51a50dc..1aab2c35d 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -11,7 +11,7 @@ #include #include -Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, +Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, @@ -34,7 +34,7 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, } Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, + const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, @@ -130,7 +130,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, } } - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); math::Vector max_magnetic_moment_c_Am2; @@ -175,7 +175,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_ } } - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); math::Vector max_magnetic_moment_c_Am2; diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 19abefdf7..373f8a98e 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -41,7 +41,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] normal_random_standard_deviation_c_Am2: Standard deviation for the normal random noise in the component frame [Am2] * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, + Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, @@ -66,7 +66,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, + const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, @@ -126,8 +126,8 @@ class Magnetorquer : public Component, public ILoggable { math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] - libra::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame - libra::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame + math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame math::Matrix scale_factor_; //!< Scale factor matrix math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 1c16d6376..cb66efd2a 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -13,7 +13,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const libra::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, + const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, bool drive_flag, const double init_velocity_rad_s) @@ -40,7 +40,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const libra::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, + const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag, const double init_velocity_rad_s) @@ -238,7 +238,7 @@ double rotor_inertia_kgm2; double max_torque_Nm; double max_velocity_rpm; // Mounting -libra::Quaternion quaternion_b2c; +math::Quaternion quaternion_b2c; math::Vector<3> position_b_m; // Time delay double dead_time_s; @@ -283,7 +283,7 @@ void InitParams(int actuator_id, std::string file_name, double compo_update_step rw_ini_file.ReadVector(rw_section, "direction_b", direction_b); math::Vector<3> direction_c(0.0); direction_c[2] = 1.0; - libra::Quaternion q(direction_b, direction_c); + math::Quaternion q(direction_b, direction_c); quaternion_b2c = q.Conjugate(); } rw_ini_file.ReadVector(rw_section, "position_b_m", position_b_m); diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 48b3d258b..a85321264 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -49,7 +49,7 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW */ ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const libra::Quaternion quaternion_b2c, + const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, @@ -79,7 +79,7 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW [rad/s] */ ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const libra::Quaternion quaternion_b2c, + const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, @@ -174,7 +174,7 @@ class ReactionWheel : public Component, public ILoggable { const double rotor_inertia_kgm2_; //!< Inertia of RW rotor [kgm2] const double max_torque_Nm_; //!< Maximum output torque [Nm] const double max_velocity_rpm_; //!< Maximum angular velocity of rotor [rpm] - const libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + const math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame const math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index cf99ad2ea..ec2a907bf 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -11,7 +11,7 @@ ReactionWheelJitter::ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, - const libra::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, + const math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, const double bandwidth, const bool considers_structural_resonance) : radial_force_harmonics_coefficients_(radial_force_harmonics_coefficients), radial_torque_harmonics_coefficients_(radial_torque_harmonics_coefficients), diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index 1034c75c7..9038ce36f 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -36,7 +36,7 @@ class ReactionWheelJitter { */ ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, - const libra::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, + const math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, const double bandwidth, const bool considers_structural_resonance); /** * @fn ~ReactionWheelJitter @@ -81,7 +81,7 @@ class ReactionWheelJitter { std::vector> radial_torque_harmonics_coefficients_; //!< Coefficients for radial torque harmonics double update_interval_s_; //!< Jitter update interval [sec] - libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame double structural_resonance_frequency_Hz_; //!< Frequency of structural resonance [Hz] double structural_resonance_angular_frequency_Hz_; //!< Angular Frequency of structural resonance diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index c698533a9..90994c763 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -16,7 +16,7 @@ using namespace std; using namespace libra; -StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, +StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, @@ -41,7 +41,7 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, con Initialize(); } StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const Dynamics* dynamics, @@ -67,12 +67,12 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, Pow } void StarSensor::Initialize() { - measured_quaternion_i2c_ = libra::Quaternion(0.0, 0.0, 0.0, 1.0); + measured_quaternion_i2c_ = math::Quaternion(0.0, 0.0, 0.0, 1.0); // Decide delay buffer size max_delay_ = int(output_delay_ * 2 / step_time_s_); if (max_delay_ <= 0) max_delay_ = 1; - vector temp(max_delay_); + vector temp(max_delay_); delay_buffer_ = temp; // Initialize delay buffer for (int i = 0; i < max_delay_; ++i) { @@ -113,7 +113,7 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa double rot = libra::tau * double(rotation_noise_); // Calc observation error on orthogonal direction of sight math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; - libra::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); + math::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); // Judge errors AllJudgement(local_celestial_information, attitude); @@ -138,7 +138,7 @@ void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_i } int StarSensor::SunJudgement(const math::Vector<3>& sun_b) { - libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double sun_angle_rad = CalAngleVector_rad(sun_b, sight_b); if (sun_angle_rad < sun_forbidden_angle_rad_) @@ -148,7 +148,7 @@ int StarSensor::SunJudgement(const math::Vector<3>& sun_b) { } int StarSensor::EarthJudgement(const math::Vector<3>& earth_b) { - libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double earth_size_rad = atan2(environment::earth_equatorial_radius_m, earth_b.CalcNorm()); // angles between sat<->earth_center & sat<->earth_edge @@ -161,7 +161,7 @@ int StarSensor::EarthJudgement(const math::Vector<3>& earth_b) { } int StarSensor::MoonJudgement(const math::Vector<3>& moon_b) { - libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double moon_angle_rad = CalAngleVector_rad(moon_b, sight_b); if (moon_angle_rad < moon_forbidden_angle_rad_) @@ -223,7 +223,7 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const int prescaler = STT_conf.ReadInt(STTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; double step_time_s = component_step_time_s * prescaler; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; STT_conf.ReadQuaternion(STTSection, "quaternion_b2c", quaternion_b2c); double standard_deviation_orthogonal_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_orthogonal_direction_rad"); double standard_deviation_sight_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_sight_direction_rad"); @@ -257,7 +257,7 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port if (prescaler <= 1) prescaler = 1; double step_time_s = component_step_time_s * prescaler; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; STT_conf.ReadQuaternion(STTSection, "quaternion_b2c", quaternion_b2c); double standard_deviation_orthogonal_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_orthogonal_direction_rad"); double standard_deviation_sight_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_sight_direction_rad"); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 5bda47f79..198db1192 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -43,7 +43,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ - StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, + StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, @@ -69,7 +69,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] local_environment: Local environment information */ StarSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const Dynamics* dynamics, @@ -98,7 +98,7 @@ class StarSensor : public Component, public ILoggable { * @fn GetMeasuredQuaternion_i2c * @brief Return observed quaternion from the inertial frame to the component frame */ - inline const libra::Quaternion GetMeasuredQuaternion_i2c() const { return measured_quaternion_i2c_; }; + inline const math::Quaternion GetMeasuredQuaternion_i2c() const { return measured_quaternion_i2c_; }; /** * @fn GetErrorFlag * @brief Return error flag @@ -108,8 +108,8 @@ class StarSensor : public Component, public ILoggable { protected: // StarSensor general parameters const int component_id_; //!< Sensor ID - libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame - libra::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + math::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame math::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame @@ -121,7 +121,7 @@ class StarSensor : public Component, public ILoggable { // Delay emulation parameters int max_delay_; //!< Max delay - std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation + std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation int buffer_position_; //!< Buffer position double step_time_s_; //!< Step time for delay calculation [sec] unsigned int output_delay_; //!< Output delay [0, max_delay_] [step_sec] @@ -153,7 +153,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] attitude: Attitude information */ - libra::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); + math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); /** * @fn AllJudgement diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 8b0164114..df9eec87e 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -14,7 +14,7 @@ using libra::NormalRand; using namespace std; -SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, +SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) @@ -29,7 +29,7 @@ SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const } SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, + const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(prescaler, clock_generator, power_port), @@ -161,7 +161,7 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, int ss_id, std::string int prescaler = ss_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; ss_conf.ReadQuaternion(Section, "quaternion_b2c", quaternion_b2c); double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; @@ -194,7 +194,7 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, int prescaler = ss_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; ss_conf.ReadQuaternion(Section, "quaternion_b2c", quaternion_b2c); double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 28b40575e..86547a399 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -35,7 +35,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] local_celestial_information: Local celestial information */ - SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const libra::Quaternion& quaternion_b2c, + SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -55,7 +55,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information */ SunSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const libra::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, + const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -88,7 +88,7 @@ class SunSensor : public Component, public ILoggable { protected: const int component_id_; //!< Sensor ID - libra::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) double intensity_lower_threshold_percent_; //!< If the light intensity becomes smaller than this, it becomes impossible to get the sun direction math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index 926cfe0b7..b0713a76e 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -11,7 +11,7 @@ #include #include -Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, +Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) : component_id_(component_id), is_transmitter_(is_transmitter), is_receiver_(is_receiver), frequency_MHz_(frequency_MHz) { quaternion_b2c_ = quaternion_b2c; @@ -45,7 +45,7 @@ Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c } } -Antenna::Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, +Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const double tx_bitrate_bps, const double tx_output_power_W, const AntennaParameters tx_parameters, const double rx_system_noise_temperature_K, const AntennaParameters rx_parameters) : component_id_(component_id), diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index d83f03e3a..fbdaffb0a 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -8,7 +8,7 @@ #include #include -using libra::Quaternion; +using math::Quaternion; using math::Vector; #include @@ -54,7 +54,7 @@ class Antenna { * @param [in] tx_parameters: output, gain, loss_feeder, loss_pointing for TX * @param [in] rx_parameters: gain, loss_feeder, loss_pointing, system_temperature for RX */ - Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, + Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters); /** @@ -71,7 +71,7 @@ class Antenna { * @param [in] rx_system_noise_temperature_K: Receive system noise temperature [K] * @param [in] rx_parameters: RX antenna parameters */ - Antenna(const int component_id, const libra::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, + Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const double tx_bitrate_bps, const double tx_output_power_W, const AntennaParameters tx_parameters, const double rx_system_noise_temperature_K, const AntennaParameters rx_parameters); /** diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index df87a245b..a877548aa 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -13,7 +13,7 @@ using namespace std; using namespace libra; -Telescope::Telescope(ClockGenerator* clock_generator, const libra::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, +Telescope::Telescope(ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, @@ -92,7 +92,7 @@ void Telescope::MainRoutine(const int time_count) { } bool Telescope::JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle) { - libra::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double angle_rad = libra::CalcAngleTwoVectors_rad(target_b, sight_b); if (angle_rad < forbidden_angle) { @@ -260,7 +260,7 @@ Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const st strcat(TelescopeSection, cs); #endif - libra::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; Telescope_conf.ReadQuaternion(TelescopeSection, "quaternion_b2c", quaternion_b2c); double sun_forbidden_angle_deg = Telescope_conf.ReadDouble(TelescopeSection, "sun_exclusion_angle_deg"); diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 12a87b064..949d5b50e 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -50,7 +50,7 @@ class Telescope : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] orbit: Orbit information */ - Telescope(ClockGenerator* clock_generator, const libra::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, + Telescope(ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); @@ -67,7 +67,7 @@ class Telescope : public Component, public ILoggable { protected: private: - libra::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame + math::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame math::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame double sun_forbidden_angle_rad_; //!< Sun forbidden angle [rad] diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index f22953960..2bd862e41 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -110,10 +110,10 @@ math::Vector<3> SimpleThruster::CalcThrustDirection() { make_axis_rot_rad = -libra::pi * (double)rand() / RAND_MAX; } - libra::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); + math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); - libra::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion + math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion thrust_dir_b_true = err_rot.FrameConversion(thrust_dir_b_true); // Add error } diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index d9123f17b..93c628f04 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -29,7 +29,7 @@ void AirDrag::Update(const LocalEnvironment& local_environment, const Dynamics& math::Matrix<3, 3> dcm_ecef2eci = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); math::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); - libra::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); + math::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); math::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); CalcTorqueForce(velocity_b_m_s, air_density_kg_m3); } diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 3e7fe70c5..e811828f9 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -9,7 +9,7 @@ Attitude::Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { angular_velocity_b_rad_s_ = math::Vector<3>(0.0); - quaternion_i2b_ = libra::Quaternion(0.0, 0.0, 0.0, 1.0); + quaternion_i2b_ = math::Quaternion(0.0, 0.0, 0.0, 1.0); torque_b_Nm_ = math::Vector<3>(0.0); angular_momentum_spacecraft_b_Nms_ = math::Vector<3>(0.0); angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); @@ -50,7 +50,7 @@ void Attitude::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { void Attitude::CalcAngularMomentum(void) { angular_momentum_spacecraft_b_Nms_ = inertia_tensor_kgm2_ * angular_velocity_b_rad_s_; angular_momentum_total_b_Nms_ = angular_momentum_reaction_wheel_b_Nms_ + angular_momentum_spacecraft_b_Nms_; - libra::Quaternion q_b2i = quaternion_i2b_.Conjugate(); + math::Quaternion q_b2i = quaternion_i2b_.Conjugate(); angular_momentum_total_i_Nms_ = q_b2i.FrameConversion(angular_momentum_total_b_Nms_); angular_momentum_total_Nms_ = angular_momentum_total_i_Nms_.CalcNorm(); diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 89449af15..f3463e4a8 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -45,7 +45,7 @@ class Attitude : public ILoggable, public SimulationObject { * @fn GetQuaternion_i2b * @brief Return attitude quaternion from the inertial frame to the body fixed frame */ - inline libra::Quaternion GetQuaternion_i2b() const { return quaternion_i2b_; } + inline math::Quaternion GetQuaternion_i2b() const { return quaternion_i2b_; } /** * @fn GetTotalAngularMomentNorm_Nms * @brief Return norm of total angular momentum of the spacecraft [Nms] @@ -72,7 +72,7 @@ class Attitude : public ILoggable, public SimulationObject { * @fn SetQuaternion_i2b * @brief Set attitude quaternion from the inertial frame to the body frame */ - inline void SetQuaternion_i2b(const libra::Quaternion quaternion_i2b) { quaternion_i2b_ = quaternion_i2b; } + inline void SetQuaternion_i2b(const math::Quaternion quaternion_i2b) { quaternion_i2b_ = quaternion_i2b; } /** * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] @@ -117,7 +117,7 @@ class Attitude : public ILoggable, public SimulationObject { bool is_calc_enabled_ = true; //!< Calculation flag double propagation_step_s_; //!< Propagation step [sec] math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] - libra::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame + math::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] const math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 40ee81dc3..4ba0a33dc 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -9,7 +9,7 @@ #include #include -AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, +AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name) { diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 33dd8002e..9c5d58bf2 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -24,7 +24,7 @@ class AttitudeRk4 : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index ecee04374..f52da403b 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -9,7 +9,7 @@ #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( - const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index e336bafad..91fa9948d 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -31,7 +31,7 @@ class AttitudeWithCantileverVibration : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeWithCantileverVibration(const math::Vector<3>& angular_velocity_b_rad_s, const libra::Quaternion& quaternion_i2b, + AttitudeWithCantileverVibration(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index d28b2c178..c96d23a6f 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -8,7 +8,7 @@ #include ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, - const libra::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, + const math::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name) @@ -111,7 +111,7 @@ void ControlledAttitude::PointingControl(const math::Vector<3> main_direction_i, // Calc DCM ECI->body math::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); // Convert to Quaternion - quaternion_i2b_ = libra::Quaternion::ConvertFromDcm(dcm_i2b); + quaternion_i2b_ = math::Quaternion::ConvertFromDcm(dcm_i2b); } math::Matrix<3, 3> ControlledAttitude::CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction) { @@ -157,8 +157,8 @@ void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { if (previous_calc_time_s_ > 0.0) { double time_diff_sec = current_time_s - previous_calc_time_s_; - libra::Quaternion prev_q_b2i = previous_quaternion_i2b_.Conjugate(); - libra::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; + math::Quaternion prev_q_b2i = previous_quaternion_i2b_.Conjugate(); + math::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; q_diff = (2.0 / time_diff_sec) * q_diff; math::Vector<3> angular_acc_b_rad_s2_; diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 35fe317f9..e05965621 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -54,7 +54,7 @@ class ControlledAttitude : public Attitude { * @param [in] orbit: Orbit * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const libra::Quaternion quaternion_i2b, + ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name = "attitude"); @@ -79,7 +79,7 @@ class ControlledAttitude : public Attitude { * @fn SetQuaternion_i2t * @brief Set quaternion for INERTIAL_STABILIZE mode */ - inline void SetQuaternion_i2t(const libra::Quaternion quaternion_i2t) { quaternion_i2b_ = quaternion_i2t; } + inline void SetQuaternion_i2t(const math::Quaternion quaternion_i2t) { quaternion_i2b_ = quaternion_i2t; } /** * @fn SetMainTargetDirection_b * @brief Set main target direction on the body fixed frame @@ -104,7 +104,7 @@ class ControlledAttitude : public Attitude { math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame double previous_calc_time_s_ = -1.0; //!< Previous time of velocity calculation [sec] - libra::Quaternion previous_quaternion_i2b_; //!< Previous quaternion + math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] const double kMinDirectionAngle_rad = 30.0 * libra::deg_to_rad; //!< Minimum angle b/w main and sub direction diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index a57f34e65..f149f1e1c 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -17,7 +17,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel const std::string initialize_mode = ini_file.ReadString(section_, "initialize_mode"); math::Vector<3> omega_b; - libra::Quaternion quaternion_i2b; + math::Quaternion quaternion_i2b; math::Vector<3> torque_b; if (initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) @@ -77,7 +77,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode main_mode = ConvertStringToCtrlMode(main_mode_in); AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); - libra::Quaternion quaternion_i2b; + math::Quaternion quaternion_i2b; ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 28f4b5ac9..88b7193ee 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -29,7 +29,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @param [in] euler_angule_cantilever_rad: Euler angle of the cantilever@ body-fixed frame [rad] */ math::Vector<13> SetStateFromPhysicalQuantities(const math::Vector<3> angular_velocity_b_rad_s, - const math::Vector<3> angular_velocity_cantilever_rad_s, const libra::Quaternion quaternion_i2b, + const math::Vector<3> angular_velocity_cantilever_rad_s, const math::Quaternion quaternion_i2b, const math::Vector<3> euler_angule_cantilever_rad) const { math::Vector<13> state; for (size_t i = 0; i < 3; i++) { @@ -53,7 +53,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @param [in] state: state variables used to calculate the ordinary differential equation */ void SetPhysicalQuantitiesFromState(const math::Vector<13> state, math::Vector<3>& angular_velocity_b_rad_s, - math::Vector<3>& angular_velocity_cantilever_rad_s, libra::Quaternion& quaternion_i2b, + math::Vector<3>& angular_velocity_cantilever_rad_s, math::Quaternion& quaternion_i2b, math::Vector<3>& euler_angular_cantilever_rad) const { for (size_t i = 0; i < 3; i++) { angular_velocity_b_rad_s[i] = state[i]; @@ -76,7 +76,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { math::Vector<3> omega_b_rad_s; math::Vector<3> omega_cantilever_rad_s; - libra::Quaternion quaternion_i2b; + math::Quaternion quaternion_i2b; math::Vector<3> euler_angle_cantilever_rad; SetPhysicalQuantitiesFromState(state, omega_b_rad_s, omega_cantilever_rad_s, quaternion_i2b, euler_angle_cantilever_rad); @@ -110,7 +110,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } // The function is used to output the derivative of each corresponding physical quantity. - output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, libra::Quaternion(d_quaternion), omega_cantilever_rad_s); + output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, math::Quaternion(d_quaternion), omega_cantilever_rad_s); return output; } diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index 9a89390a6..b38aa9c98 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -4,7 +4,7 @@ */ #include "orbit.hpp" -libra::Quaternion Orbit::CalcQuaternion_i2lvlh() const { +math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); math::Vector<3> lvlh_z = @@ -24,7 +24,7 @@ libra::Quaternion Orbit::CalcQuaternion_i2lvlh() const { dcm_i2lvlh[2][1] = lvlh_ez[1]; dcm_i2lvlh[2][2] = lvlh_ez[2]; - libra::Quaternion q_i2lvlh = libra::Quaternion::ConvertFromDcm(dcm_i2lvlh); + math::Quaternion q_i2lvlh = math::Quaternion::ConvertFromDcm(dcm_i2lvlh); return q_i2lvlh.Normalize(); } diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 496774cf3..ac37fbc18 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -69,7 +69,7 @@ class Orbit : public ILoggable { * @brief Update attitude information * @param [in] quaternion_i2b: End time of simulation [sec] */ - inline void UpdateByAttitude(const libra::Quaternion quaternion_i2b) { + inline void UpdateByAttitude(const math::Quaternion quaternion_i2b) { spacecraft_velocity_b_m_s_ = quaternion_i2b.FrameConversion(spacecraft_velocity_i_m_s_); } @@ -161,7 +161,7 @@ class Orbit : public ILoggable { * @param [in] quaternion_i2b: Quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_b_N(const math::Vector<3> force_b_N, const libra::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { + inline void AddForce_b_N(const math::Vector<3> force_b_N, const math::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { auto force_i = quaternion_i2b.InverseFrameConversion(force_b_N); AddForce_i_N(force_i, spacecraft_mass_kg); } @@ -170,7 +170,7 @@ class Orbit : public ILoggable { * @fn CalcQuaternion_i2lvlh * @brief Calculate and return quaternion from the inertial frame to the LVLH frame */ - libra::Quaternion CalcQuaternion_i2lvlh() const; + math::Quaternion CalcQuaternion_i2lvlh() const; // Override ILoggable /** diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index bc05b06d8..c8fedaf7d 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -41,8 +41,8 @@ void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, ma math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); - libra::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); - libra::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); + math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; spacecraft_velocity_i_m_s_ = q_lvlh2i.FrameConversion(relative_velocity_lvlh_m_s_) + reference_sat_velocity_i; @@ -111,8 +111,8 @@ void RelativeOrbit::Propagate(const double end_time_s, const double current_time math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); - libra::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); - libra::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); + math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; spacecraft_velocity_i_m_s_ = q_lvlh2i.FrameConversion(relative_velocity_lvlh_m_s_) + reference_sat_velocity_i; diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 014dce7f8..cb6f3c15e 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -62,7 +62,7 @@ math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { return direction_i; } -math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, libra::Quaternion quaternion_i2b) const { +math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, math::Quaternion quaternion_i2b) const { math::Vector<3> direction_i; math::Vector<3> direction_b; diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index c22a831a7..d4a6afdd4 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -89,7 +89,7 @@ class HipparcosCatalogue : public ILoggable { *@param [in] rank: Rank of star magnitude in read catalogue *@param [in] quaternion_i2b: Quaternion from the inertial frame to the body-fixed frame */ - math::Vector<3> GetStarDirection_b(size_t rank, libra::Quaternion quaternion_i2b) const; + math::Vector<3> GetStarDirection_b(size_t rank, math::Quaternion quaternion_i2b) const; // Override ILoggable /** diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 6ee47afe7..f26c6e457 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -23,7 +23,7 @@ GeomagneticField::GeomagneticField(const std::string igrf_file_name, const doubl } void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const GeodeticPosition position, - const libra::Quaternion quaternion_i2b) { + const math::Quaternion quaternion_i2b) { if (!IsCalcEnabled) return; const double lat_rad = position.GetLatitude_rad(); diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index acda8a2bf..3eabd46c5 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -44,7 +44,7 @@ class GeomagneticField : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ void CalcMagneticField(const double decimal_year, const double sidereal_day, const GeodeticPosition position, - const libra::Quaternion quaternion_i2b); + const math::Quaternion quaternion_i2b); /** * @fn GetGeomagneticField_i_nT diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index 0fd6213f6..e73d23132 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -45,7 +45,7 @@ LocalCelestialInformation::~LocalCelestialInformation() { void LocalCelestialInformation::UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, const math::Vector<3> spacecraft_velocity_from_center_i_m_s, - const libra::Quaternion quaternion_i2b, + const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s) { math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { @@ -62,7 +62,7 @@ void LocalCelestialInformation::UpdateAllObjectsInformation(const math::Vector<3 return; } -void LocalCelestialInformation::CalcAllPosVel_b(const libra::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s) { +void LocalCelestialInformation::CalcAllPosVel_b(const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s) { math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; double r_buf1_i[3], velocity_buf1_i[3], r_buf1_b[3], velocity_buf1_b[3]; double r_buf2_i[3], velocity_buf2_i[3], r_buf2_b[3], velocity_buf2_b[3]; @@ -89,7 +89,7 @@ void LocalCelestialInformation::CalcAllPosVel_b(const libra::Quaternion quaterni } } -void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, libra::Quaternion quaternion_i2b) { +void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, math::Quaternion quaternion_i2b) { math::Vector<3> temp_i; for (int i = 0; i < 3; i++) { temp_i[i] = input_i[i]; @@ -101,7 +101,7 @@ void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, dou } void LocalCelestialInformation::ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, - const libra::Quaternion quaternion_i2b, const math::Vector<3> angular_velocity_b) { + const math::Quaternion quaternion_i2b, const math::Vector<3> angular_velocity_b) { // copy input vector math::Vector<3> vi; for (int i = 0; i < 3; i++) { diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index f8b14b097..dc10ab302 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -35,7 +35,7 @@ class LocalCelestialInformation : public ILoggable { * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ void UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, - const math::Vector<3> spacecraft_velocity_from_center_i_m_s, const libra::Quaternion quaternion_i2b, + const math::Vector<3> spacecraft_velocity_from_center_i_m_s, const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s); /** @@ -96,7 +96,7 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void CalcAllPosVel_b(const libra::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s); + void CalcAllPosVel_b(const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn ConvertInertialToBody @@ -105,7 +105,7 @@ class LocalCelestialInformation : public ILoggable { * @param [out] output_b: Output vector in the body fixed frame * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ - void ConvertInertialToBody(const double* input_i, double* output_b, const libra::Quaternion quaternion_i2b); + void ConvertInertialToBody(const double* input_i, double* output_b, const math::Quaternion quaternion_i2b); /** * @fn ConvertVelocityInertialToBody @@ -116,7 +116,7 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] angular_velocity_b: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const libra::Quaternion quaternion_i2b, + void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const math::Quaternion quaternion_i2b, const math::Vector<3> angular_velocity_b); }; diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 0f9884091..7eba4b767 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -70,7 +70,7 @@ inline std::string WriteMatrix(const std::string name, const std::string frame, * @brief Write quaternion value * @param [in] quaternion: Quaternion */ -inline std::string WriteQuaternion(const libra::Quaternion quaternion, const int precision = 6); +inline std::string WriteQuaternion(const math::Quaternion quaternion, const int precision = 6); /** * @fn WriteQuaternion * @brief Write header for quaternion @@ -138,7 +138,7 @@ std::string WriteMatrix(const std::string name, const std::string frame, const s return str_tmp.str(); } -std::string WriteQuaternion(const libra::Quaternion quaternion, const int precision) { +std::string WriteQuaternion(const math::Quaternion quaternion, const int precision) { std::stringstream str_tmp; for (size_t i = 0; i < 4; i++) { diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index 4b5f82cc3..12628aa92 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -62,14 +62,14 @@ class GeodeticPosition { * @fn GetQuaternionXcxfToLtc * @brief Conversion quaternion from XCXF (e.g. ECEF) to LTC frame */ - inline libra::Quaternion GetQuaternionXcxfToLtc() const { return quaternion_xcxf_to_ltc_; } + inline math::Quaternion GetQuaternionXcxfToLtc() const { return quaternion_xcxf_to_ltc_; } private: double latitude_rad_; //!< Latitude [rad] South: -π/2 to 0, North: 0 to π/2 double longitude_rad_; //!< Longitude [rad] East: 0 to π, West: 2π to π (i.e., defined as 0 to 2π [rad] east of the Greenwich meridian) double altitude_m_; //!< Altitude [m] - libra::Quaternion quaternion_xcxf_to_ltc_; //!< Conversion quaternion from XCXF (e.g. ECEF) to LTC (Local Topographic Coordinate) + math::Quaternion quaternion_xcxf_to_ltc_; //!< Conversion quaternion from XCXF (e.g. ECEF) to LTC (Local Topographic Coordinate) /** * @fn CalcQuaternionXcxfToLtc diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index 13bab0737..593b7a855 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -11,7 +11,7 @@ * @brief Test for constructor from four numbers */ TEST(Quaternion, ConstructorFourNumber) { - libra::Quaternion q(0.5, 0.5, 0.5, 0.5); + math::Quaternion q(0.5, 0.5, 0.5, 0.5); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -24,7 +24,7 @@ TEST(Quaternion, ConstructorFourNumber) { */ TEST(Quaternion, ConstructorVector) { math::Vector<4> v(0.5); - libra::Quaternion q(v); + math::Quaternion q(v); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -41,7 +41,7 @@ TEST(Quaternion, ConstructorAxisAndAngleX) { axis[1] = 0.0; axis[2] = 0.0; double theta_rad = 90 * libra::deg_to_rad; - libra::Quaternion q(axis, theta_rad); + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -58,7 +58,7 @@ TEST(Quaternion, ConstructorAxisAndAngleY) { axis[1] = 1.0; axis[2] = 0.0; double theta_rad = 45 * libra::deg_to_rad; - libra::Quaternion q(axis, theta_rad); + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -75,7 +75,7 @@ TEST(Quaternion, ConstructorAxisAndAngleZ) { axis[1] = 0.0; axis[2] = 1.0; double theta_rad = -60 * libra::deg_to_rad; - libra::Quaternion q(axis, theta_rad); + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -92,7 +92,7 @@ TEST(Quaternion, ConstructorAxisAndAngleAll) { axis[1] = 1.0; axis[2] = 1.0; double theta_rad = 180 * libra::deg_to_rad; - libra::Quaternion q(axis, theta_rad); + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -113,7 +113,7 @@ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { after[1] = 0.0; after[2] = 1.0; - libra::Quaternion q(before, after); + math::Quaternion q(before, after); EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); @@ -134,7 +134,7 @@ TEST(Quaternion, ConstructorTwoVectorsX) { after[1] = 1.0; after[2] = 0.0; - libra::Quaternion q(before, after); + math::Quaternion q(before, after); double theta_rad = -90 * libra::deg_to_rad; EXPECT_NEAR(sin(theta_rad / 2.0), q[0], 1e-5); @@ -156,7 +156,7 @@ TEST(Quaternion, ConstructorTwoVectorsY) { after[1] = 0.0; after[2] = 0.0; - libra::Quaternion q(before, after); + math::Quaternion q(before, after); double theta_rad = 90 * libra::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); @@ -178,7 +178,7 @@ TEST(Quaternion, ConstructorTwoVectorsZ) { after[1] = 1.0; after[2] = 0.0; - libra::Quaternion q(before, after); + math::Quaternion q(before, after); double theta_rad = 90 * libra::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); @@ -192,7 +192,7 @@ TEST(Quaternion, ConstructorTwoVectorsZ) { * @note TODO: Fix to nondestructive function */ TEST(Quaternion, Normalize) { - libra::Quaternion q(1.0, 1.0, 1.0, 1.0); + math::Quaternion q(1.0, 1.0, 1.0, 1.0); EXPECT_DOUBLE_EQ(1.0, q[0]); EXPECT_DOUBLE_EQ(1.0, q[1]); EXPECT_DOUBLE_EQ(1.0, q[2]); @@ -209,9 +209,9 @@ TEST(Quaternion, Normalize) { * @brief Test for Conjugate */ TEST(Quaternion, Conjugate) { - libra::Quaternion q(0.5, 0.5, 0.5, 0.5); + math::Quaternion q(0.5, 0.5, 0.5, 0.5); - libra::Quaternion q_conjugate = q.Conjugate(); + math::Quaternion q_conjugate = q.Conjugate(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.5, q[0]); @@ -229,7 +229,7 @@ TEST(Quaternion, Conjugate) { * @brief Test for ConvertToDcm Y rotation */ TEST(Quaternion, ConvertToDcmY) { - libra::Quaternion q(0.0, 1.0, 0.0, 1.0); + math::Quaternion q(0.0, 1.0, 0.0, 1.0); q.Normalize(); math::Matrix<3, 3> dcm = q.ConvertToDcm(); @@ -253,7 +253,7 @@ TEST(Quaternion, ConvertToDcmY) { EXPECT_NEAR(0.0, dcm[2][2], accuracy); // Inverse Conversion - libra::Quaternion q_from_dcm = libra::Quaternion::ConvertFromDcm(dcm); + math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -263,7 +263,7 @@ TEST(Quaternion, ConvertToDcmY) { * @brief Test for ConvertToDcm */ TEST(Quaternion, ConvertToDcm) { - libra::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); math::Matrix<3, 3> dcm = q.ConvertToDcm(); @@ -281,7 +281,7 @@ TEST(Quaternion, ConvertToDcm) { EXPECT_NEAR(0.4962963, dcm[2][2], accuracy); // Inverse Conversion - libra::Quaternion q_from_dcm = libra::Quaternion::ConvertFromDcm(dcm); + math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -291,7 +291,7 @@ TEST(Quaternion, ConvertToDcm) { * @brief Test for ConvertToEuler X rotation */ TEST(Quaternion, ConvertToEulerX) { - libra::Quaternion q(1.0, 0.0, 0.0, 1.0); + math::Quaternion q(1.0, 0.0, 0.0, 1.0); q.Normalize(); math::Vector<3> euler = q.ConvertToEuler(); @@ -309,7 +309,7 @@ TEST(Quaternion, ConvertToEulerX) { EXPECT_NEAR(0.0, euler[2], accuracy); // Inverse Conversion - libra::Quaternion q_from_euler = libra::Quaternion::ConvertFromEuler(euler); + math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -319,7 +319,7 @@ TEST(Quaternion, ConvertToEulerX) { * @brief Test for ConvertToEuler */ TEST(Quaternion, ConvertToEuler) { - libra::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); math::Vector<3> euler = q.ConvertToEuler(); @@ -331,7 +331,7 @@ TEST(Quaternion, ConvertToEuler) { EXPECT_NEAR(0.41012734, euler[2], accuracy); // Inverse Conversion - libra::Quaternion q_from_euler = libra::Quaternion::ConvertFromEuler(euler); + math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -341,7 +341,7 @@ TEST(Quaternion, ConvertToEuler) { * @brief Test for FrameConversion Z rotation */ TEST(Quaternion, FrameConversionZ) { - libra::Quaternion q(0.0, 0.0, 1.0, 1.0); + math::Quaternion q(0.0, 0.0, 1.0, 1.0); q.Normalize(); math::Vector<3> v; @@ -367,7 +367,7 @@ TEST(Quaternion, FrameConversionZ) { * @brief Test for FrameConversion */ TEST(Quaternion, FrameConversion) { - libra::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); math::Vector<3> v; v[0] = 1.0; @@ -387,7 +387,7 @@ TEST(Quaternion, FrameConversion) { * @brief Test for ConvertToVector */ TEST(Quaternion, ConvertToVector) { - libra::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); math::Vector<4> v = q.ConvertToVector(); @@ -400,10 +400,10 @@ TEST(Quaternion, ConvertToVector) { * @brief Test for operator+ */ TEST(Quaternion, OperatorPlus) { - libra::Quaternion q1(0.5, 0.3, 0.1, 1.0); - libra::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - libra::Quaternion result = q1 + q2; + math::Quaternion result = q1 + q2; EXPECT_DOUBLE_EQ(0.2, result[0]); EXPECT_DOUBLE_EQ(0.4, result[1]); @@ -415,10 +415,10 @@ TEST(Quaternion, OperatorPlus) { * @brief Test for operator- */ TEST(Quaternion, OperatorMinus) { - libra::Quaternion q1(0.5, 0.3, 0.1, 1.0); - libra::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - libra::Quaternion result = q1 - q2; + math::Quaternion result = q1 - q2; EXPECT_DOUBLE_EQ(0.8, result[0]); EXPECT_DOUBLE_EQ(0.2, result[1]); @@ -430,10 +430,10 @@ TEST(Quaternion, OperatorMinus) { * @brief Test for operator* quaternion */ TEST(Quaternion, OperatorQuaternionMultiply) { - libra::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); - libra::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); + math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); + math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); - libra::Quaternion result = q1 * q2; + math::Quaternion result = q1 * q2; const double accuracy = 1.0e-7; EXPECT_NEAR(-0.3928446703722, result[0], accuracy); @@ -446,10 +446,10 @@ TEST(Quaternion, OperatorQuaternionMultiply) { * @brief Test for operator* scalar */ TEST(Quaternion, OperatorScalarMultiply) { - libra::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); + math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); double scalar = 2.3; - libra::Quaternion result = scalar * q; + math::Quaternion result = scalar * q; const double accuracy = 1.0e-7; EXPECT_NEAR(q[0] * 2.3, result[0], accuracy); diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index b05e31e98..a9261c2dc 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -118,8 +118,8 @@ std::vector IniAccess::ReadVectorDouble(const char* section_name, const return data; } -void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, libra::Quaternion& data) { - libra::Quaternion temp; +void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, math::Quaternion& data) { + math::Quaternion temp; double norm = 0.0; for (int i = 0; i < 4; i++) { // Read Quaternion as new format diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index 997a22c9f..df49969ce 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -126,7 +126,7 @@ class IniAccess { * @param[in] key_name: Key name * @param[out] data: Read quaternion data */ - void ReadQuaternion(const char* section_name, const char* key_name, libra::Quaternion& data); + void ReadQuaternion(const char* section_name, const char* key_name, math::Quaternion& data); /** * @fn ReadChar * @brief Read characters data diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index a90fd5d4d..132e39a14 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -53,7 +53,7 @@ void GroundStation::Update(const EarthRotation& celestial_rotation, const Spacec } bool GroundStation::CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m) { - libra::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); + math::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); math::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] sc_pos_ltc = sc_pos_ltc.CalcNormalizedVector(); diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index b6dd39c03..83e3fa3b5 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -46,7 +46,7 @@ void InitializedMonteCarloParameters::GetRandomizedScalar(double& destination) c } } -void InitializedMonteCarloParameters::GetRandomizedQuaternion(libra::Quaternion& destination) const { +void InitializedMonteCarloParameters::GetRandomizedQuaternion(math::Quaternion& destination) const { if (randomization_type_ == kNoRandomization) { ; } else if (4 > randomized_value_.size()) { @@ -208,12 +208,12 @@ void InitializedMonteCarloParameters::CalcSphericalNormalNormal(math::Vector<3>& math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, libra::tau); - libra::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, + math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation double rotation_angle_of_mean_vec = InitializedMonteCarloParameters::Generate1dNormal(0.0, sigma_or_max_[1]); - libra::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) + math::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) math::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction ret_vec = InitializedMonteCarloParameters::Generate1dNormal(mean_vec.CalcNorm(), sigma_or_max_[0]) * ret_vec; // multiply norm @@ -240,13 +240,13 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { } } -void InitializedMonteCarloParameters::CalcQuaternionUniform(libra::Quaternion& destination) { - // Perfectly Randomized libra::Quaternion +void InitializedMonteCarloParameters::CalcQuaternionUniform(math::Quaternion& destination) { + // Perfectly Randomized math::Quaternion math::Vector<3> x_axis(0.0); x_axis[0] = 1.0; // A direction vector converted from the X-axis by a quaternion may follows the uniform distribution in full sphere. - libra::Quaternion first_cnv; + math::Quaternion first_cnv; math::Vector<3> x_axis_cnvd; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); double phi = InitializedMonteCarloParameters::Generate1dUniform(0, libra::tau); @@ -263,9 +263,9 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(libra::Quaternion& d // Generate randomized rotation angle around the X-axis double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, libra::tau); - libra::Quaternion second_cnv(x_axis, rotation_angle); + math::Quaternion second_cnv(x_axis, rotation_angle); - libra::Quaternion ret_q = first_cnv * second_cnv; + math::Quaternion ret_q = first_cnv * second_cnv; for (int i = 0; i < 4; i++) { destination[i] = ret_q[i]; @@ -274,7 +274,7 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(libra::Quaternion& d void InitializedMonteCarloParameters::GenerateQuaternionUniform() { const static int dim = 4; - libra::Quaternion temp_q; + math::Quaternion temp_q; CalcQuaternionUniform(temp_q); randomized_value_.clear(); @@ -283,7 +283,7 @@ void InitializedMonteCarloParameters::GenerateQuaternionUniform() { } } -void InitializedMonteCarloParameters::CalcQuaternionNormal(libra::Quaternion& destination, double theta_sigma) { +void InitializedMonteCarloParameters::CalcQuaternionNormal(math::Quaternion& destination, double theta_sigma) { // Angle from the default quaternion θ follows normal distribution // The rotation axis follows uniform distribution on full sphere math::Vector<3> rot_axis; @@ -295,7 +295,7 @@ void InitializedMonteCarloParameters::CalcQuaternionNormal(libra::Quaternion& de double rotation_angle = InitializedMonteCarloParameters::Generate1dNormal(0.0, theta_sigma); - libra::Quaternion ret_q(rot_axis, rotation_angle); + math::Quaternion ret_q(rot_axis, rotation_angle); for (int i = 0; i < 4; i++) { destination[i] = ret_q[i]; } @@ -307,7 +307,7 @@ void InitializedMonteCarloParameters::GenerateQuaternionNormal() { if (sigma_or_max_.size() < 1) { throw "Config parameters dimension unmatched."; } - libra::Quaternion temp_q; + math::Quaternion temp_q; CalcQuaternionNormal(temp_q, sigma_or_max_[0]); randomized_value_.clear(); diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index 0ea121585..534650c04 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -31,7 +31,7 @@ class InitializedMonteCarloParameters { kCircularNormalNormal, //!< r and θ follow normal distribution in Circular frame kSphericalNormalUniformUniform, //!< r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame kSphericalNormalNormal, //!< r and θ follow normal distribution, and mean vector angle φ follows uniform distribution [0,2*pi] - kQuaternionUniform, //!< Perfectly Randomized libra::Quaternion + kQuaternionUniform, //!< Perfectly Randomized math::Quaternion kQuaternionNormal, //!< Angle from the default quaternion θ follows normal distribution }; @@ -66,7 +66,7 @@ class InitializedMonteCarloParameters { * @fn GetRandomizedQuaternion * @brief Get randomized quaternion results */ - void GetRandomizedQuaternion(libra::Quaternion& destination) const; + void GetRandomizedQuaternion(math::Quaternion& destination) const; /** * @fn GetRandomizedScalar * @brief Get randomized value results @@ -196,12 +196,12 @@ class InitializedMonteCarloParameters { * @fn CalcQuaternionUniform * @brief Calculate randomized value with QuaternionUniform mode */ - void CalcQuaternionUniform(libra::Quaternion& destination); + void CalcQuaternionUniform(math::Quaternion& destination); /** * @fn CalcQuaternionNormal * @brief Calculate randomized value with QuaternionNormal mode */ - void CalcQuaternionNormal(libra::Quaternion& destination, double theta_sigma); + void CalcQuaternionNormal(math::Quaternion& destination, double theta_sigma); }; template diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp index bb736a203..dead43808 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp @@ -47,7 +47,7 @@ void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterDouble(strin } void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterQuaternion(string so_name, string init_monte_carlo_parameter_name, - libra::Quaternion& destination) const { + math::Quaternion& destination) const { if (!enabled_) return; { string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index 0cf862dda..ad1fe87cc 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -97,7 +97,7 @@ class MonteCarloSimulationExecutor { * @brief Get randomized quaternion and store it in dest_quat */ void GetInitializedMonteCarloParameterQuaternion(std::string so_name, std::string init_monte_carlo_parameter_name, - libra::Quaternion& destination) const; + math::Quaternion& destination) const; // Calculation /** diff --git a/src/simulation/monte_carlo_simulation/simulation_object.cpp b/src/simulation/monte_carlo_simulation/simulation_object.cpp index eb0273eaa..c015a9dad 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.cpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.cpp @@ -39,6 +39,6 @@ void SimulationObject::GetInitializedMonteCarloParameterDouble(const MonteCarloS void SimulationObject::GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - libra::Quaternion& destination) const { + math::Quaternion& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterQuaternion(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index d0fe92f49..33708e59d 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -54,7 +54,7 @@ class SimulationObject { * @brief Get randomized quaternion and store it in destination */ void GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, - std::string init_monte_carlo_parameter_name, libra::Quaternion& destination) const; + std::string init_monte_carlo_parameter_name, math::Quaternion& destination) const; /** * @fn SetParameters diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index 93b6e9e63..f81227cb7 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -111,13 +111,13 @@ std::string RelativeInformation::GetLogValue() const { void RelativeInformation::LogSetup(Logger& logger) { logger.AddLogList(this); } -libra::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { +math::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { // Observer SC Body frame(obs_sat) -> ECI frame(i) - libra::Quaternion q_reference_i2b = dynamics_database_.at(reference_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); - libra::Quaternion q_reference_b2i = q_reference_i2b.Conjugate(); + math::Quaternion q_reference_i2b = dynamics_database_.at(reference_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_reference_b2i = q_reference_i2b.Conjugate(); // ECI frame(i) -> Target SC body frame(main_sat) - libra::Quaternion q_target_i2b = dynamics_database_.at(target_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_target_i2b = dynamics_database_.at(target_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); return q_target_i2b * q_reference_b2i; } @@ -128,7 +128,7 @@ math::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t tar math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite - libra::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); math::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); return relative_pos_rtn; @@ -140,7 +140,7 @@ math::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t t math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite - libra::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); // Rotation vector of RTN frame math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); @@ -161,5 +161,5 @@ void RelativeInformation::ResizeLists() { relative_distance_list_m_.assign(size, std::vector(size, 0.0)); relative_position_list_rtn_m_.assign(size, std::vector>(size, math::Vector<3>(0))); relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); - relative_attitude_quaternion_list_.assign(size, std::vector(size, libra::Quaternion(0, 0, 0, 1))); + relative_attitude_quaternion_list_.assign(size, std::vector(size, math::Quaternion(0, 0, 0, 1))); } diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index abe2e1b45..0631cdc87 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -73,7 +73,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline libra::Quaternion GetRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Quaternion GetRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_attitude_quaternion_list_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -139,7 +139,7 @@ class RelativeInformation : public ILoggable { std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] std::vector> relative_distance_list_m_; //!< Relative distance list in unit [m] - std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list + std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list /** * @fn CalcRelativeAttitudeQuaternion @@ -147,7 +147,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - libra::Quaternion CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + math::Quaternion CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn CalcRelativePosition_rtn_m * @brief Calculate and return the relative position in RTN frame From e8d54e6b40f8055eb2cfb50b738e3c09d80e8058 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:37:32 +0900 Subject: [PATCH 223/456] Replace libra::pi to math::pi --- src/components/real/aocs/star_sensor.cpp | 16 ++++++++-------- src/components/real/aocs/sun_sensor.cpp | 16 ++++++++-------- .../communication/antenna_radiation_pattern.hpp | 4 ++-- .../communication/ground_station_calculator.cpp | 2 +- src/components/real/mission/telescope.cpp | 8 ++++---- .../real/propulsion/simple_thruster.cpp | 8 ++++---- src/disturbances/air_drag.cpp | 8 ++++---- .../solar_radiation_pressure_environment.cpp | 2 +- src/math_physics/math/test_interpolation.cpp | 6 +++--- src/math_physics/optics/gaussian_beam_base.cpp | 4 ++-- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 90994c763..45ada20a0 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -232,13 +232,13 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const double output_interval_sec = STT_conf.ReadDouble(STTSection, "output_interval_s"); int output_interval = max(int(output_interval_sec / step_time_s), 1); double sun_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "sun_exclusion_angle_deg"); - double sun_forbidden_angle_rad = sun_forbidden_angle_deg * libra::pi / 180.0; + double sun_forbidden_angle_rad = sun_forbidden_angle_deg * math::pi / 180.0; double earth_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "earth_exclusion_angle_deg"); - double earth_forbidden_angle_rad = earth_forbidden_angle_deg * libra::pi / 180.0; + double earth_forbidden_angle_rad = earth_forbidden_angle_deg * math::pi / 180.0; double moon_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "moon_exclusion_angle_deg"); - double moon_forbidden_angle_rad = moon_forbidden_angle_deg * libra::pi / 180.0; + double moon_forbidden_angle_rad = moon_forbidden_angle_deg * math::pi / 180.0; double capture_rate_deg_s = STT_conf.ReadDouble(STTSection, "angular_rate_limit_deg_s"); - double capture_rate_rad_s = capture_rate_deg_s * libra::pi / 180.0; + double capture_rate_rad_s = capture_rate_deg_s * math::pi / 180.0; StarSensor stt(prescaler, clock_generator, sensor_id, quaternion_b2c, standard_deviation_orthogonal_direction, standard_deviation_sight_direction, step_time_s, output_delay, output_interval, sun_forbidden_angle_rad, earth_forbidden_angle_rad, moon_forbidden_angle_rad, @@ -266,13 +266,13 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port double output_interval_sec = STT_conf.ReadDouble(STTSection, "output_interval_s"); int output_interval = max(int(output_interval_sec / step_time_s), 1); double sun_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "sun_exclusion_angle_deg"); - double sun_forbidden_angle_rad = sun_forbidden_angle_deg * libra::pi / 180.0; + double sun_forbidden_angle_rad = sun_forbidden_angle_deg * math::pi / 180.0; double earth_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "earth_exclusion_angle_deg"); - double earth_forbidden_angle_rad = earth_forbidden_angle_deg * libra::pi / 180.0; + double earth_forbidden_angle_rad = earth_forbidden_angle_deg * math::pi / 180.0; double moon_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "moon_exclusion_angle_deg"); - double moon_forbidden_angle_rad = moon_forbidden_angle_deg * libra::pi / 180.0; + double moon_forbidden_angle_rad = moon_forbidden_angle_deg * math::pi / 180.0; double capture_rate_deg_s = STT_conf.ReadDouble(STTSection, "angular_rate_limit_deg_s"); - double capture_rate_rad_s = capture_rate_deg_s * libra::pi / 180.0; + double capture_rate_rad_s = capture_rate_deg_s * math::pi / 180.0; power_port->InitializeWithInitializeFile(file_name); diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index df9eec87e..2f3eeb29b 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -126,8 +126,8 @@ void SunSensor::CalcSolarIlluminance() { } double SunSensor::TanRange(double x) { - if (x > libra::pi_2) x = libra::pi - x; - if (x < -libra::pi_2) x = -libra::pi - x; + if (x > libra::pi_2) x = math::pi - x; + if (x < -libra::pi_2) x = -math::pi - x; return x; } @@ -166,15 +166,15 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, int ss_id, std::string double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; detectable_angle_deg = ss_conf.ReadDouble(Section, "field_of_view_deg"); - detectable_angle_rad = libra::pi / 180.0 * detectable_angle_deg; + detectable_angle_rad = math::pi / 180.0 * detectable_angle_deg; double nr_stddev = 0.0; nr_stddev = ss_conf.ReadDouble(Section, "white_noise_standard_deviation_deg"); - nr_stddev *= libra::pi / 180.0; + nr_stddev *= math::pi / 180.0; double nr_bias_stddev = 0.0; nr_bias_stddev = ss_conf.ReadDouble(Section, "bias_standard_deviation_deg"); - nr_bias_stddev *= libra::pi / 180.0; + nr_bias_stddev *= math::pi / 180.0; double intensity_lower_threshold_percent; intensity_lower_threshold_percent = ss_conf.ReadDouble(Section, "intensity_lower_threshold_percent"); @@ -199,15 +199,15 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; detectable_angle_deg = ss_conf.ReadDouble(Section, "field_of_view_deg"); - detectable_angle_rad = libra::pi / 180.0 * detectable_angle_deg; + detectable_angle_rad = math::pi / 180.0 * detectable_angle_deg; double nr_stddev = 0.0; nr_stddev = ss_conf.ReadDouble(Section, "white_noise_standard_deviation_deg"); - nr_stddev *= libra::pi / 180.0; + nr_stddev *= math::pi / 180.0; double nr_bias_stddev = 0.0; nr_bias_stddev = ss_conf.ReadDouble(Section, "bias_standard_deviation_deg"); - nr_bias_stddev *= libra::pi / 180.0; + nr_bias_stddev *= math::pi / 180.0; double intensity_lower_threshold_percent; intensity_lower_threshold_percent = ss_conf.ReadDouble(Section, "intensity_lower_threshold_percent"); diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index 8c1736ca8..d3bfc2df2 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -36,7 +36,7 @@ class AntennaRadiationPattern { * @param[in] phi_max_rad_: Maximum value of phi */ AntennaRadiationPattern(const std::string file_path, const size_t length_theta = 360, const size_t length_phi = 181, - const double theta_max_rad = libra::tau, const double phi_max_rad = libra::pi); + const double theta_max_rad = libra::tau, const double phi_max_rad = math::pi); /** * @fn ~AntennaRadiationPattern @@ -57,7 +57,7 @@ class AntennaRadiationPattern { size_t length_theta_ = 360; //!< Length of grid for theta direction size_t length_phi_ = 181; //!< Length of grid for phi direction double theta_max_rad_ = libra::tau; //!< Maximum value of theta - double phi_max_rad_ = libra::pi; //!< Maximum value of phi + double phi_max_rad_ = math::pi; //!< Maximum value of phi std::vector> gain_dBi_; //!< Antenna gain table [dBi] }; diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index c15570112..01b80ff25 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -72,7 +72,7 @@ double GroundStationCalculator::CalcCn0OnGs(const Dynamics& dynamics, const Ante Vector<3> pos_gs2sc_i = sc_pos_i - gs_pos_i; double dist_sc_gs_km = pos_gs2sc_i.CalcNorm() / 1000.0; - double loss_space_dB = -20.0 * log10(4.0 * libra::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); + double loss_space_dB = -20.0 * log10(4.0 * math::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); // GS direction on SC TX antenna frame Vector<3> sc_to_gs_i = gs_pos_i - sc_pos_i; diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index a877548aa..f08be211a 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -83,9 +83,9 @@ void Telescope::MainRoutine(const int time_count) { // sun_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("SUN")); // earth_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("EARTH")); // moon_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("MOON")); - // angle_sun = CalcAngleTwoVectors_rad(sight_direction_c_, sun_pos_c) * 180/libra::pi; - // angle_earth = CalcAngleTwoVectors_rad(sight_direction_c_, earth_pos_c) * 180 / libra::pi; angle_moon = - // CalcAngleTwoVectors_rad(sight_direction_c_, moon_pos_c) * 180 / libra::pi; + // angle_sun = CalcAngleTwoVectors_rad(sight_direction_c_, sun_pos_c) * 180/math::pi; + // angle_earth = CalcAngleTwoVectors_rad(sight_direction_c_, earth_pos_c) * 180 / math::pi; angle_moon = + // CalcAngleTwoVectors_rad(sight_direction_c_, moon_pos_c) * 180 / math::pi; //****************************************************************************** // Direction calculation of ground point ObserveGroundPositionDeviation(); @@ -247,7 +247,7 @@ string Telescope::GetLogValue() const { Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const string file_name, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { - using libra::pi; + using math::pi; IniAccess Telescope_conf(file_name); const string st_sensor_id = std::to_string(static_cast(sensor_id)); diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 2bd862e41..ac580bae3 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -105,9 +105,9 @@ math::Vector<3> SimpleThruster::CalcThrustDirection() { int flag = rand() % 2; double make_axis_rot_rad; if (flag == 0) { - make_axis_rot_rad = libra::pi * (double)rand() / RAND_MAX; + make_axis_rot_rad = math::pi * (double)rand() / RAND_MAX; } else { - make_axis_rot_rad = -libra::pi * (double)rand() / RAND_MAX; + make_axis_rot_rad = -math::pi * (double)rand() / RAND_MAX; } math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); @@ -141,7 +141,7 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_ magnitude_standard_deviation_N = thruster_conf.ReadDouble(Section, "thrust_error_standard_deviation_N"); double deg_err; - deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * libra::pi / 180.0; + deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * math::pi / 180.0; SimpleThruster thruster(prescaler, clock_generator, thruster_id, thruster_pos, thruster_dir, max_magnitude_N, magnitude_standard_deviation_N, deg_err, structure, dynamics); @@ -169,7 +169,7 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, PowerPort* po magnitude_standard_deviation_N = thruster_conf.ReadDouble(Section, "thrust_error_standard_deviation_N"); double deg_err; - deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * libra::pi / 180.0; + deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * math::pi / 180.0; power_port->InitializeWithInitializeFile(file_name); diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 93c628f04..d7d91cfac 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -47,14 +47,14 @@ void AirDrag::CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const doub double AirDrag::CalcFunctionPi(const double s) { double x; double erfs = erf(s); // ERF function is defined in math standard library - x = s * exp(-s * s) + sqrt(libra::pi) * (s * s + 0.5) * (1.0 + erfs); + x = s * exp(-s * s) + sqrt(math::pi) * (s * s + 0.5) * (1.0 + erfs); return x; } double AirDrag::CalcFunctionChi(const double s) { double x; double erfs = erf(s); - x = exp(-s * s) + sqrt(libra::pi) * s * (1.0 + erfs); + x = exp(-s * s) + sqrt(math::pi) * s * (1.0 + erfs); return x; } @@ -69,9 +69,9 @@ void AirDrag::CalcCnCt(const Vector<3>& velocity_b_m_s) { double speed_n = speed * cos_theta_[i]; double speed_t = speed * sin_theta_[i]; double diffuse = 1.0 - surfaces_[i].GetAirSpecularity(); - cn_[i] = (2.0 - diffuse) / sqrt(libra::pi) * CalcFunctionPi(speed_n) / (speed * speed) + + cn_[i] = (2.0 - diffuse) / sqrt(math::pi) * CalcFunctionPi(speed_n) / (speed * speed) + diffuse / 2.0 * CalcFunctionChi(speed_n) / (speed * speed) * sqrt(wall_temperature_K_ / molecular_temperature_K_); - ct_[i] = diffuse * speed_t * CalcFunctionChi(speed_n) / (sqrt(libra::pi) * speed * speed); + ct_[i] = diffuse * speed_t * CalcFunctionChi(speed_n) / (sqrt(math::pi) * speed * speed); } } diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 2a088127d..181e1ea7a 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -91,7 +91,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow } else if (fabs(a - b) <= c && c <= (a + b)) // spacecraft is in penumbra { double A = a * a * acos(x / a) + b * b * acos((c - x) / b) - c * y; // The area of the occulted segment of the apparent solar disk - shadow_coefficient_ *= 1.0 - A / (libra::pi * a * a); + shadow_coefficient_ *= 1.0 - A / (math::pi * a * a); } else { // no occultation takes place if (c < (a + b)) { std::cout << "[Error SRP Environment]: The calculation error was occurred at the shadow calculation." << std::endl; diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index 9b99335fa..2c05dfb68 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -45,16 +45,16 @@ TEST(Interpolation, PolynomialQuadraticFunction) { * @brief Test for sin function with trigonometric interpolation */ TEST(Interpolation, TrigonometricSinFunction) { - std::vector x{0.0, libra::pi_2, libra::pi, libra::pi * 3.0 / 2.0, libra::tau}; + std::vector x{0.0, libra::pi_2, math::pi, math::pi * 3.0 / 2.0, libra::tau}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); } libra::Interpolation interpolation(x, y); - double xx = 0.4 * libra::pi; + double xx = 0.4 * math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); - xx = 1.4 * libra::pi; + xx = 1.4 * math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); } diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index c3ec9c5a6..ab4121afb 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -35,14 +35,14 @@ void GaussianBeamBase::SetBeamWaistPosition_i_m(const math::Vector<3> position_b } double GaussianBeamBase::CalcBeamWidthRadius_m(double distance_from_beam_waist_m) { - double rayleigh_length_m = libra::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; + double rayleigh_length_m = math::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; double beam_width_radius_m = radius_beam_waist_m_ * sqrt(1.0 + std::pow((distance_from_beam_waist_m / rayleigh_length_m), 2.0)); return beam_width_radius_m; } double GaussianBeamBase::CalcIntensity_W_m2(double distance_from_beam_waist_m, double deviation_from_optical_axis_m) { double beam_width_radius_m = CalcBeamWidthRadius_m(distance_from_beam_waist_m); - double peak_intensity_W_m2 = (2.0 * total_power_W_) / (libra::pi * beam_width_radius_m * beam_width_radius_m); + double peak_intensity_W_m2 = (2.0 * total_power_W_) / (math::pi * beam_width_radius_m * beam_width_radius_m); double gaussian_dist = std::exp((-2.0 * deviation_from_optical_axis_m * deviation_from_optical_axis_m) / (beam_width_radius_m * beam_width_radius_m)); double intensity_W_m2 = peak_intensity_W_m2 * gaussian_dist; From b08f5f237e1ebf7142bba7a6b5d99472a5cec741 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:37:50 +0900 Subject: [PATCH 224/456] Replace libra::tau to math::tau --- src/components/real/aocs/reaction_wheel_jitter.cpp | 4 ++-- src/components/real/aocs/star_sensor.cpp | 2 +- .../real/communication/antenna_radiation_pattern.hpp | 4 ++-- src/environment/global/gnss_satellites.cpp | 2 +- src/math_physics/geodesy/geodetic_position.cpp | 2 +- src/math_physics/math/s2e_math.cpp | 8 ++++---- src/math_physics/math/test_interpolation.cpp | 2 +- src/math_physics/math/test_s2e_math.cpp | 6 +++--- .../initialize_monte_carlo_parameters.cpp | 8 ++++---- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index ec2a907bf..189e364f7 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -18,7 +18,7 @@ ReactionWheelJitter::ReactionWheelJitter(std::vector> radial update_interval_s_(update_interval_s), quaternion_b2c_(quaternion_b2c), structural_resonance_frequency_Hz_(structural_resonance_frequency_Hz), - structural_resonance_angular_frequency_Hz_(libra::tau * structural_resonance_frequency_Hz), + structural_resonance_angular_frequency_Hz_(math::tau * structural_resonance_frequency_Hz), damping_factor_(damping_factor), bandwidth_(bandwidth), considers_structural_resonance_(considers_structural_resonance) { @@ -26,7 +26,7 @@ ReactionWheelJitter::ReactionWheelJitter(std::vector> radial // Generate random number for initial rotation phase std::random_device seed_gen; std::default_random_engine engine(seed_gen()); - std::uniform_real_distribution dist(0.0, libra::tau); + std::uniform_real_distribution dist(0.0, math::tau); // Initialize RW rotation phase for (size_t i = 0; i < radial_force_harmonics_coefficients_.size(); i++) { jitter_force_rotation_phase_.push_back(dist(engine)); diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 45ada20a0..33d027d98 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -110,7 +110,7 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa // Add noise on sight direction Quaternion q_sight(sight_direction_c_, sight_direction_noise_); // Random noise on orthogonal direction of sight. Range [0:2pi] - double rot = libra::tau * double(rotation_noise_); + double rot = math::tau * double(rotation_noise_); // Calc observation error on orthogonal direction of sight math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; math::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index d3bfc2df2..393879b9b 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -36,7 +36,7 @@ class AntennaRadiationPattern { * @param[in] phi_max_rad_: Maximum value of phi */ AntennaRadiationPattern(const std::string file_path, const size_t length_theta = 360, const size_t length_phi = 181, - const double theta_max_rad = libra::tau, const double phi_max_rad = math::pi); + const double theta_max_rad = math::tau, const double phi_max_rad = math::pi); /** * @fn ~AntennaRadiationPattern @@ -56,7 +56,7 @@ class AntennaRadiationPattern { private: size_t length_theta_ = 360; //!< Length of grid for theta direction size_t length_phi_ = 181; //!< Length of grid for phi direction - double theta_max_rad_ = libra::tau; //!< Maximum value of theta + double theta_max_rad_ = math::tau; //!< Maximum value of theta double phi_max_rad_ = math::pi; //!< Maximum value of phi std::vector> gain_dBi_; //!< Antenna gain table [dBi] diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 4d4c9ee14..f9daeaf7a 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -87,7 +87,7 @@ math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_i if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, libra::tau / kOrbitalPeriodCorrection_s); + return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); } double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const EpochTime time) const { diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 8a59652a0..1508a796a 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -44,7 +44,7 @@ void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { altitude_m_ = r_m / cos(lat_tmp_rad) - c * earth_radius_m; - if (lat_tmp_rad > libra::pi_2) lat_tmp_rad -= libra::tau; + if (lat_tmp_rad > libra::pi_2) lat_tmp_rad -= math::tau; latitude_rad_ = lat_tmp_rad; diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index 916a3e6b5..0b52849d2 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -12,11 +12,11 @@ double WrapTo2Pi(const double angle_rad) { double angle_out = angle_rad; if (angle_out < 0.0) { while (angle_out < 0.0) { - angle_out += libra::tau; + angle_out += math::tau; } - } else if (angle_out > libra::tau) { - while (angle_out > libra::tau) { - angle_out -= libra::tau; + } else if (angle_out > math::tau) { + while (angle_out > math::tau) { + angle_out -= math::tau; } } else { // nothing to do diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index 2c05dfb68..b730fb962 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -45,7 +45,7 @@ TEST(Interpolation, PolynomialQuadraticFunction) { * @brief Test for sin function with trigonometric interpolation */ TEST(Interpolation, TrigonometricSinFunction) { - std::vector x{0.0, libra::pi_2, math::pi, math::pi * 3.0 / 2.0, libra::tau}; + std::vector x{0.0, libra::pi_2, math::pi, math::pi * 3.0 / 2.0, math::tau}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); diff --git a/src/math_physics/math/test_s2e_math.cpp b/src/math_physics/math/test_s2e_math.cpp index bf5b60fca..c018c6434 100644 --- a/src/math_physics/math/test_s2e_math.cpp +++ b/src/math_physics/math/test_s2e_math.cpp @@ -19,13 +19,13 @@ TEST(S2eMath, WrapTo2Pi) { input_angle_rad = -1.0e-5; wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); - EXPECT_NEAR(libra::tau + input_angle_rad, wrapped_angle_rad, accuracy); + EXPECT_NEAR(math::tau + input_angle_rad, wrapped_angle_rad, accuracy); - input_angle_rad = libra::tau + 1.0e-5; + input_angle_rad = math::tau + 1.0e-5; wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); - input_angle_rad = 10 * libra::tau + 1.0e-5; + input_angle_rad = 10 * math::tau + 1.0e-5; wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); } diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index 83e3fa3b5..b568ff136 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -207,7 +207,7 @@ void InitializedMonteCarloParameters::CalcSphericalNormalNormal(math::Vector<3>& // In case of the mean vector is parallel with X or Y axis, selecting the axis depend on the norm of outer product math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); - double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, libra::tau); + double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation @@ -249,7 +249,7 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(math::Quaternion& de math::Quaternion first_cnv; math::Vector<3> x_axis_cnvd; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); - double phi = InitializedMonteCarloParameters::Generate1dUniform(0, libra::tau); + double phi = InitializedMonteCarloParameters::Generate1dUniform(0, math::tau); x_axis_cnvd[0] = sin(theta) * cos(phi); x_axis_cnvd[1] = sin(theta) * sin(phi); x_axis_cnvd[2] = cos(theta); @@ -262,7 +262,7 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(math::Quaternion& de first_cnv[3] = cos_angle_between; // Generate randomized rotation angle around the X-axis - double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, libra::tau); + double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); math::Quaternion second_cnv(x_axis, rotation_angle); math::Quaternion ret_q = first_cnv * second_cnv; @@ -288,7 +288,7 @@ void InitializedMonteCarloParameters::CalcQuaternionNormal(math::Quaternion& des // The rotation axis follows uniform distribution on full sphere math::Vector<3> rot_axis; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); - double phi = InitializedMonteCarloParameters::Generate1dUniform(0, libra::tau); + double phi = InitializedMonteCarloParameters::Generate1dUniform(0, math::tau); rot_axis[0] = sin(theta) * cos(phi); rot_axis[1] = sin(theta) * sin(phi); rot_axis[2] = cos(theta); From 55e74f95e80ec348069439776b4309688d8e2501 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:38:20 +0900 Subject: [PATCH 225/456] Replace libra::deg_to_rad to math::deg_to_rad --- src/components/ideal/attitude_observer.cpp | 2 +- src/components/ideal/force_generator.cpp | 2 +- src/components/ideal/torque_generator.cpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 2 +- src/dynamics/attitude/controlled_attitude.hpp | 2 +- src/environment/global/earth_rotation.cpp | 12 ++++++------ src/environment/global/hipparcos_catalogue.cpp | 4 ++-- .../atmosphere/harris_priester_model.cpp | 2 +- src/math_physics/math/test_matrix.cpp | 6 +++--- src/math_physics/math/test_quaternion.cpp | 16 ++++++++-------- src/math_physics/math/test_vector.cpp | 8 ++++---- src/simulation/ground_station/ground_station.cpp | 4 ++-- 12 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 7b8ab276c..312a1930c 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -57,7 +57,7 @@ AttitudeObserver InitializeAttitudeObserver(ClockGenerator* clock_generator, con // AttitudeObserver double error_angle_standard_deviation_deg = ini_file.ReadDouble("ATTITUDE_OBSERVER", "error_angle_standard_deviation_deg"); - double error_angle_standard_deviation_rad = libra::deg_to_rad * error_angle_standard_deviation_deg; + double error_angle_standard_deviation_rad = math::deg_to_rad * error_angle_standard_deviation_deg; AttitudeObserver attitude_observer(prescaler, clock_generator, error_angle_standard_deviation_rad, attitude); return attitude_observer; diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index e1df7e741..833703477 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -117,7 +117,7 @@ ForceGenerator InitializeForceGenerator(ClockGenerator* clock_generator, const s char section[30] = "FORCE_GENERATOR"; double force_magnitude_standard_deviation_N = ini_file.ReadDouble(section, "force_magnitude_standard_deviation_N"); double force_direction_standard_deviation_deg = ini_file.ReadDouble(section, "force_direction_standard_deviation_deg"); - double force_direction_standard_deviation_rad = libra::deg_to_rad * force_direction_standard_deviation_deg; + double force_direction_standard_deviation_rad = math::deg_to_rad * force_direction_standard_deviation_deg; ForceGenerator force_generator(prescaler, clock_generator, force_magnitude_standard_deviation_N, force_direction_standard_deviation_rad, dynamics); return force_generator; diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index 8f8a58c56..d090f0d34 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -90,7 +90,7 @@ TorqueGenerator InitializeTorqueGenerator(ClockGenerator* clock_generator, const char section[30] = "TORQUE_GENERATOR"; double torque_magnitude_standard_deviation_Nm = ini_file.ReadDouble(section, "torque_magnitude_standard_deviation_Nm"); double torque_direction_standard_deviation_deg = ini_file.ReadDouble(section, "torque_direction_standard_deviation_deg"); - double torque_direction_standard_deviation_rad = libra::deg_to_rad * torque_direction_standard_deviation_deg; + double torque_direction_standard_deviation_rad = math::deg_to_rad * torque_direction_standard_deviation_deg; TorqueGenerator torque_generator(prescaler, clock_generator, torque_magnitude_standard_deviation_Nm, torque_direction_standard_deviation_rad, dynamics); diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 5017a4333..a07a52a0b 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -147,7 +147,7 @@ void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, c // Check GNSS satellites are in the antenna half width angle double inner2 = InnerProduct(antenna_pointing_direction_i, antenna_to_gnss_satellite_direction_i); - if (inner2 > cos(half_width_deg_ * libra::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { + if (inner2 > cos(half_width_deg_ * math::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { // is visible visible_satellite_number_++; SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, i); diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index e05965621..a033dc973 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -107,7 +107,7 @@ class ControlledAttitude : public Attitude { math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] - const double kMinDirectionAngle_rad = 30.0 * libra::deg_to_rad; //!< Minimum angle b/w main and sub direction + const double kMinDirectionAngle_rad = 30.0 * math::deg_to_rad; //!< Minimum angle b/w main and sub direction // TODO Change with ini file // Inputs diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index c7550537d..9afb6392d 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -32,38 +32,38 @@ void EarthRotation::InitializeParameters() { // Coefficients to compute mean obliquity of the ecliptic // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_epsilon_rad_[0] = 23.4392911 * libra::deg_to_rad; // [rad] + c_epsilon_rad_[0] = 23.4392911 * math::deg_to_rad; // [rad] c_epsilon_rad_[1] = -46.8150000 * libra::arcsec_to_rad; // [rad/century] c_epsilon_rad_[2] = -5.9000e-4 * libra::arcsec_to_rad; // [rad/century^2] c_epsilon_rad_[3] = 1.8130e-3 * libra::arcsec_to_rad; // [rad/century^3] // Coefficients to compute Delaunay angles // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_lm_rad_[0] = 134.96340251 * libra::deg_to_rad; // [rad] + c_lm_rad_[0] = 134.96340251 * math::deg_to_rad; // [rad] c_lm_rad_[1] = 1717915923.21780000 * libra::arcsec_to_rad; // [rad/century] c_lm_rad_[2] = 31.87920000 * libra::arcsec_to_rad; // [rad/century^2] c_lm_rad_[3] = 0.05163500 * libra::arcsec_to_rad; // [rad/century^3] c_lm_rad_[4] = -0.00024470 * libra::arcsec_to_rad; // [rad/century^4] - c_ls_rad_[0] = 357.52910918 * libra::deg_to_rad; // [rad] + c_ls_rad_[0] = 357.52910918 * math::deg_to_rad; // [rad] c_ls_rad_[1] = 129596581.04810000 * libra::arcsec_to_rad; // [rad/century] c_ls_rad_[2] = -0.55320000 * libra::arcsec_to_rad; // [rad/century^2] c_ls_rad_[3] = 0.00013600 * libra::arcsec_to_rad; // [rad/century^3] c_ls_rad_[4] = -0.00001149 * libra::arcsec_to_rad; // [rad/century^4] - c_f_rad_[0] = 93.27209062 * libra::deg_to_rad; // [rad] + c_f_rad_[0] = 93.27209062 * math::deg_to_rad; // [rad] c_f_rad_[1] = 1739527262.84780000 * libra::arcsec_to_rad; // [rad/century] c_f_rad_[2] = -12.75120000 * libra::arcsec_to_rad; // [rad/century^2] c_f_rad_[3] = -0.00103700 * libra::arcsec_to_rad; // [rad/century^3] c_f_rad_[4] = 0.00000417 * libra::arcsec_to_rad; // [rad/century^4] - c_d_rad_[0] = 297.85019547 * libra::deg_to_rad; // [rad] + c_d_rad_[0] = 297.85019547 * math::deg_to_rad; // [rad] c_d_rad_[1] = 1602961601.20900000 * libra::arcsec_to_rad; // [rad/century] c_d_rad_[2] = -6.37060000 * libra::arcsec_to_rad; // [rad/century^2] c_d_rad_[3] = 0.00659300 * libra::arcsec_to_rad; // [rad/century^3] c_d_rad_[4] = -0.00003169 * libra::arcsec_to_rad; // [rad/century^4] - c_o_rad_[0] = 125.04455501 * libra::deg_to_rad; // [rad] + c_o_rad_[0] = 125.04455501 * math::deg_to_rad; // [rad] c_o_rad_[1] = -6962890.54310000 * libra::arcsec_to_rad; // [rad/century] c_o_rad_[2] = 7.47220000 * libra::arcsec_to_rad; // [rad/century^2] c_o_rad_[3] = 0.00770200 * libra::arcsec_to_rad; // [rad/century^3] diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index cb6f3c15e..7ef29494b 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -52,8 +52,8 @@ bool HipparcosCatalogue::ReadContents(const std::string& file_name, const char d math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { math::Vector<3> direction_i; - double ra_rad = GetRightAscension_deg(rank) * libra::deg_to_rad; - double de_rad = GetDeclination_deg(rank) * libra::deg_to_rad; + double ra_rad = GetRightAscension_deg(rank) * math::deg_to_rad; + double de_rad = GetDeclination_deg(rank) * math::deg_to_rad; direction_i[0] = cos(ra_rad) * cos(de_rad); direction_i[1] = sin(ra_rad) * cos(de_rad); diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index ccaef17f3..28bbce364 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -42,7 +42,7 @@ double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_po sun_ra_rad = atan2(sun_direction_eci[1], sun_direction_eci[0]); sun_dec_rad = atan2(sun_direction_eci[2], sqrt(sun_direction_eci[0] * sun_direction_eci[0] + sun_direction_eci[1] * sun_direction_eci[1])); math::Vector<3> apex_direction; - const double lag_angle_rad = 30.0 * libra::deg_to_rad; + const double lag_angle_rad = 30.0 * math::deg_to_rad; double apex_ra_rad = sun_ra_rad + lag_angle_rad; apex_direction[0] = cos(sun_dec_rad) * cos(apex_ra_rad); apex_direction[1] = cos(sun_dec_rad) * sin(apex_ra_rad); diff --git a/src/math_physics/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp index 1db12d6cd..a3027fc7c 100644 --- a/src/math_physics/math/test_matrix.cpp +++ b/src/math_physics/math/test_matrix.cpp @@ -362,7 +362,7 @@ TEST(Matrix, MakeIdentityMatrix) { */ TEST(Matrix, MakeRotationMatrixX) { const size_t N = 3; - double theta_rad = -45.0 * libra::deg_to_rad; + double theta_rad = -45.0 * math::deg_to_rad; math::Matrix m = libra::MakeRotationMatrixX(theta_rad); @@ -382,7 +382,7 @@ TEST(Matrix, MakeRotationMatrixX) { */ TEST(Matrix, MakeRotationMatrixY) { const size_t N = 3; - double theta_rad = 120.0 * libra::deg_to_rad; + double theta_rad = 120.0 * math::deg_to_rad; math::Matrix m = libra::MakeRotationMatrixY(theta_rad); @@ -402,7 +402,7 @@ TEST(Matrix, MakeRotationMatrixY) { */ TEST(Matrix, MakeRotationMatrixZ) { const size_t N = 3; - double theta_rad = 30.0 * libra::deg_to_rad; + double theta_rad = 30.0 * math::deg_to_rad; math::Matrix m = libra::MakeRotationMatrixZ(theta_rad); diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index 593b7a855..4995afccc 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -40,7 +40,7 @@ TEST(Quaternion, ConstructorAxisAndAngleX) { axis[0] = 1.0; axis[1] = 0.0; axis[2] = 0.0; - double theta_rad = 90 * libra::deg_to_rad; + double theta_rad = 90 * math::deg_to_rad; math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); @@ -57,7 +57,7 @@ TEST(Quaternion, ConstructorAxisAndAngleY) { axis[0] = 0.0; axis[1] = 1.0; axis[2] = 0.0; - double theta_rad = 45 * libra::deg_to_rad; + double theta_rad = 45 * math::deg_to_rad; math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); @@ -74,7 +74,7 @@ TEST(Quaternion, ConstructorAxisAndAngleZ) { axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; - double theta_rad = -60 * libra::deg_to_rad; + double theta_rad = -60 * math::deg_to_rad; math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); @@ -91,7 +91,7 @@ TEST(Quaternion, ConstructorAxisAndAngleAll) { axis[0] = 1.0; axis[1] = 1.0; axis[2] = 1.0; - double theta_rad = 180 * libra::deg_to_rad; + double theta_rad = 180 * math::deg_to_rad; math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); @@ -136,7 +136,7 @@ TEST(Quaternion, ConstructorTwoVectorsX) { math::Quaternion q(before, after); - double theta_rad = -90 * libra::deg_to_rad; + double theta_rad = -90 * math::deg_to_rad; EXPECT_NEAR(sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -158,7 +158,7 @@ TEST(Quaternion, ConstructorTwoVectorsY) { math::Quaternion q(before, after); - double theta_rad = 90 * libra::deg_to_rad; + double theta_rad = 90 * math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -180,7 +180,7 @@ TEST(Quaternion, ConstructorTwoVectorsZ) { math::Quaternion q(before, after); - double theta_rad = 90 * libra::deg_to_rad; + double theta_rad = 90 * math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[2], 1e-5); @@ -304,7 +304,7 @@ TEST(Quaternion, ConvertToEulerX) { // Check nondestructive function const double accuracy = 1.0e-7; - EXPECT_NEAR(90 * libra::deg_to_rad, euler[0], accuracy); + EXPECT_NEAR(90 * math::deg_to_rad, euler[0], accuracy); EXPECT_NEAR(0.0, euler[1], accuracy); EXPECT_NEAR(0.0, euler[2], accuracy); diff --git a/src/math_physics/math/test_vector.cpp b/src/math_physics/math/test_vector.cpp index 76342b84f..5f636960d 100644 --- a/src/math_physics/math/test_vector.cpp +++ b/src/math_physics/math/test_vector.cpp @@ -394,7 +394,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * libra::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); } /** @@ -410,7 +410,7 @@ TEST(Vector, CalcAngleTwoVectors0deg) { double angle_rad = CalcAngleTwoVectors_rad(a, a); - EXPECT_DOUBLE_EQ(0.0 * libra::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(0.0 * math::deg_to_rad, angle_rad); } /** @@ -431,7 +431,7 @@ TEST(Vector, CalcAngleTwoVectors45deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(45.0 * libra::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(45.0 * math::deg_to_rad, angle_rad); } /** @@ -445,5 +445,5 @@ TEST(Vector, GenerateOrthogonalUnitVector) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * libra::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); } diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 132e39a14..1b95d8b96 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -35,7 +35,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con double latitude_deg = conf.ReadDouble(Section, "latitude_deg"); double longitude_deg = conf.ReadDouble(Section, "longitude_deg"); double height_m = conf.ReadDouble(Section, "height_m"); - geodetic_position_ = GeodeticPosition(latitude_deg * libra::deg_to_rad, longitude_deg * libra::deg_to_rad, height_m); + geodetic_position_ = GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); position_ecef_m_ = geodetic_position_.CalcEcefPosition(); elevation_limit_angle_deg_ = conf.ReadDouble(Section, "elevation_limit_angle_deg"); @@ -62,7 +62,7 @@ bool GroundStation::CalcIsVisible(const math::Vector<3> spacecraft_position_ecef // Judge the satellite position angle is over the minimum elevation - if (dot(sc_pos_ltc, dir_gs_to_zenith) > sin(elevation_limit_angle_deg_ * libra::deg_to_rad)) { + if (dot(sc_pos_ltc, dir_gs_to_zenith) > sin(elevation_limit_angle_deg_ * math::deg_to_rad)) { return true; } else { return false; From abc127fe46d561ad8d91a080e13f0775e7f09f11 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:38:48 +0900 Subject: [PATCH 226/456] Replace libra::rad_to_deg to math::rad_to_deg --- src/components/real/aocs/reaction_wheel.cpp | 4 ++-- src/math_physics/atmosphere/wrapper_nrlmsise00.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index cb66efd2a..3bb98d34a 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -77,7 +77,7 @@ void ReactionWheel::Initialize() { generated_angular_acceleration_rad_s2_ = 0.0; angular_velocity_rad_s_ = ode_angular_velocity_.GetAngularVelocity_rad_s(); - angular_velocity_rpm_ = angular_velocity_rad_s_ * libra::rad_s_to_rpm; + angular_velocity_rpm_ = angular_velocity_rad_s_ * math::rad_s_to_rpm; // Turn on RW jitter calculation if (is_calculated_jitter_) { @@ -141,7 +141,7 @@ math::Vector<3> ReactionWheel::CalcTorque() { // Substitution double pre_angular_velocity_rad = angular_velocity_rad_s_; angular_velocity_rad_s_ = ode_angular_velocity_.GetAngularVelocity_rad_s(); - angular_velocity_rpm_ = angular_velocity_rad_s_ * libra::rad_s_to_rpm; + angular_velocity_rpm_ = angular_velocity_rad_s_ * math::rad_s_to_rpm; generated_angular_acceleration_rad_s2_ = (angular_velocity_rad_s_ - pre_angular_velocity_rad) / step_width_s_; // Calc output torque by RW diff --git a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp index 91a00c40f..c000ca49e 100644 --- a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp +++ b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp @@ -187,9 +187,9 @@ double CalcNRLMSISE00(double decyear, double latrad, double lonrad, double alt, input.year = 0; /* without effect */ input.sec = date[3] * 60.0 * 60.0 + date[4] * 60.0 + date[5]; input.alt = alt / 1000.0; - input.g_lat = latrad * libra::rad_to_deg; - input.g_long = lonrad * libra::rad_to_deg; - input.lst = input.sec / 3600.0 + lonrad * libra::rad_to_deg / 15.0; + input.g_lat = latrad * math::rad_to_deg; + input.g_long = lonrad * math::rad_to_deg; + input.lst = input.sec / 3600.0 + lonrad * math::rad_to_deg / 15.0; if (is_manual_param) { input.f107 = manual_f107; From 0dc54669b56e9e2366ab3f3664bb3d11b6475fbc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:39:48 +0900 Subject: [PATCH 227/456] Replace libra::MakeMatrix to math::MakeMatrix --- .../base/sensor_template_functions.hpp | 2 +- src/environment/global/earth_rotation.cpp | 18 +++++++++--------- src/environment/global/moon_rotation.cpp | 4 ++-- src/math_physics/math/test_matrix.cpp | 8 ++++---- src/math_physics/orbit/kepler_orbit.cpp | 6 +++--- .../moon_rotation_utilities.cpp | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index c488e7958..247093ce2 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -84,7 +84,7 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w ini_file.ReadVector(section.c_str(), "scale_factor_c", scale_factor_vector); math::Matrix scale_factor_c; if (scale_factor_vector.CalcNorm() == 0.0) { - scale_factor_c = libra::MakeIdentityMatrix(); + scale_factor_c = math::MakeIdentityMatrix(); } else { for (size_t i = 0; i < N; i++) { for (size_t j = 0; j < N; j++) { diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 9afb6392d..321e82df0 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -17,7 +17,7 @@ // Default constructor EarthRotation::EarthRotation(const EarthRotationMode rotation_mode) : rotation_mode_(rotation_mode) { - dcm_j2000_to_ecef_ = libra::MakeIdentityMatrix<3>(); + dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); dcm_teme_to_ecef_ = dcm_j2000_to_ecef_; InitializeParameters(); } @@ -105,7 +105,7 @@ void EarthRotation::InitializeParameters() { c_z_rad_[2] = 0.018203 * libra::arcsec_to_rad; // [rad/century^3] } else { // If the rotation mode is neither Simple nor Full, disable the rotation calculation and make the DCM a unit matrix - dcm_j2000_to_ecef_ = libra::MakeIdentityMatrix<3>(); + dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); } } @@ -154,7 +154,7 @@ void EarthRotation::Update(const double julian_date) { } } -math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return libra::MakeRotationMatrixZ(gast_rad); } +math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return math::MakeRotationMatrixZ(gast_rad); } math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { // Mean obliquity of the ecliptic @@ -208,9 +208,9 @@ math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { c_d_epsilon_rad_[7] * cos(2 * l_rad + lm_rad) + c_d_epsilon_rad_[8] * cos(2 * ld_rad - ls_rad); double epsi_mod_rad = epsilon_rad_ + d_epsilon_rad_; - math::Matrix<3, 3> x_epsi_1st = libra::MakeRotationMatrixX(epsilon_rad_); - math::Matrix<3, 3> z_d_psi = libra::MakeRotationMatrixZ(-d_psi_rad_); - math::Matrix<3, 3> x_epsi_2nd = libra::MakeRotationMatrixX(-epsi_mod_rad); + math::Matrix<3, 3> x_epsi_1st = math::MakeRotationMatrixX(epsilon_rad_); + math::Matrix<3, 3> z_d_psi = math::MakeRotationMatrixZ(-d_psi_rad_); + math::Matrix<3, 3> x_epsi_2nd = math::MakeRotationMatrixX(-epsi_mod_rad); math::Matrix<3, 3> dcm_nutation; dcm_nutation = x_epsi_2nd * z_d_psi * x_epsi_1st; @@ -234,9 +234,9 @@ math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { } // Develop transformation matrix - math::Matrix<3, 3> z_zeta = libra::MakeRotationMatrixZ(-zeta_rad); - math::Matrix<3, 3> y_theta = libra::MakeRotationMatrixY(theta_rad); - math::Matrix<3, 3> z_z = libra::MakeRotationMatrixZ(-z_rad); + math::Matrix<3, 3> z_zeta = math::MakeRotationMatrixZ(-zeta_rad); + math::Matrix<3, 3> y_theta = math::MakeRotationMatrixY(theta_rad); + math::Matrix<3, 3> z_z = math::MakeRotationMatrixZ(-z_rad); math::Matrix<3, 3> dcm_precession; dcm_precession = z_z * y_theta * z_zeta; diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index b1a28dcf4..1314de4f7 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -12,7 +12,7 @@ MoonRotation::MoonRotation(const CelestialInformation& celestial_information, MoonRotationMode mode) : mode_(mode), celestial_information_(celestial_information) { - dcm_j2000_to_mcmf_ = libra::MakeIdentityMatrix<3>(); + dcm_j2000_to_mcmf_ = math::MakeIdentityMatrix<3>(); } void MoonRotation::Update(const SimulationTime& simulation_time) { @@ -32,7 +32,7 @@ void MoonRotation::Update(const SimulationTime& simulation_time) { } } } else { - dcm_j2000_to_mcmf_ = libra::MakeIdentityMatrix<3>(); + dcm_j2000_to_mcmf_ = math::MakeIdentityMatrix<3>(); } } diff --git a/src/math_physics/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp index a3027fc7c..53dee0b75 100644 --- a/src/math_physics/math/test_matrix.cpp +++ b/src/math_physics/math/test_matrix.cpp @@ -344,7 +344,7 @@ TEST(Matrix, Transpose) { TEST(Matrix, MakeIdentityMatrix) { const size_t N = 6; - math::Matrix m = libra::MakeIdentityMatrix(); + math::Matrix m = math::MakeIdentityMatrix(); for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -364,7 +364,7 @@ TEST(Matrix, MakeRotationMatrixX) { const size_t N = 3; double theta_rad = -45.0 * math::deg_to_rad; - math::Matrix m = libra::MakeRotationMatrixX(theta_rad); + math::Matrix m = math::MakeRotationMatrixX(theta_rad); EXPECT_DOUBLE_EQ(1.0, m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -384,7 +384,7 @@ TEST(Matrix, MakeRotationMatrixY) { const size_t N = 3; double theta_rad = 120.0 * math::deg_to_rad; - math::Matrix m = libra::MakeRotationMatrixY(theta_rad); + math::Matrix m = math::MakeRotationMatrixY(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -404,7 +404,7 @@ TEST(Matrix, MakeRotationMatrixZ) { const size_t N = 3; double theta_rad = 30.0 * math::deg_to_rad; - math::Matrix m = libra::MakeRotationMatrixZ(theta_rad); + math::Matrix m = math::MakeRotationMatrixZ(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(sin(theta_rad), m[0][1]); diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index 7bb6de1f0..f3425450d 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -22,9 +22,9 @@ void KeplerOrbit::CalcConstKeplerMotion() { mean_motion_rad_s_ = sqrt(gravity_constant_m3_s2_ / a_m3); // DCM - math::Matrix<3, 3> dcm_arg_perigee = libra::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); - math::Matrix<3, 3> dcm_inclination = libra::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); - math::Matrix<3, 3> dcm_raan = libra::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); + math::Matrix<3, 3> dcm_arg_perigee = math::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); + math::Matrix<3, 3> dcm_inclination = math::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); + math::Matrix<3, 3> dcm_raan = math::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); math::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; dcm_inplane_to_i_ = dcm_raan * dcm_inc_arg; } diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index 71ac96722..46cfedec1 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -42,7 +42,7 @@ math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { const double theta_z_rad = 67.573 * libra::arcsec_to_rad; math::Matrix<3, 3> dcm_me_pa = - libra::MakeRotationMatrixZ(theta_z_rad) * libra::MakeRotationMatrixY(theta_y_rad) * libra::MakeRotationMatrixX(theta_x_rad); + math::MakeRotationMatrixZ(theta_z_rad) * math::MakeRotationMatrixY(theta_y_rad) * math::MakeRotationMatrixX(theta_x_rad); return dcm_me_pa; } From 063a6851effb2ed63cec6d784b9070f2b546118b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:40:25 +0900 Subject: [PATCH 228/456] Replace libra::rpm_to to math::rpm_to --- src/components/real/aocs/reaction_wheel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 3bb98d34a..fd80f7dbd 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -31,7 +31,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato stop_limit_angular_velocity_rad_s_(stop_limit_angular_velocity_rad_s), drive_flag_(drive_flag), velocity_limit_rpm_(max_velocity_rpm_), - ode_angular_velocity_(step_width_s_, velocity_limit_rpm_ * libra::rpm_to_rad_s, init_velocity_rad_s), + ode_angular_velocity_(step_width_s_, velocity_limit_rpm_ * math::rpm_to_rad_s, init_velocity_rad_s), rw_jitter_(rw_jitter), is_calculated_jitter_(is_calc_jitter_enabled), is_logged_jitter_(is_log_jitter_enabled) { @@ -58,7 +58,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato stop_limit_angular_velocity_rad_s_(stop_limit_angular_velocity_rad_s), drive_flag_(drive_flag), velocity_limit_rpm_(max_velocity_rpm_), - ode_angular_velocity_(step_width_s, velocity_limit_rpm_ * libra::rpm_to_rad_s, init_velocity_rad_s), + ode_angular_velocity_(step_width_s, velocity_limit_rpm_ * math::rpm_to_rad_s, init_velocity_rad_s), rw_jitter_(rw_jitter), is_calculated_jitter_(is_calc_jitter_enabled), is_logged_jitter_(is_log_jitter_enabled) { @@ -188,7 +188,7 @@ void ReactionWheel::SetVelocityLimit_rpm(const double velocity_limit_rpm) { } else { velocity_limit_rpm_ = velocity_limit_rpm; } - ode_angular_velocity_.SetAngularVelocityLimit_rad_s(velocity_limit_rpm_ * libra::rpm_to_rad_s); + ode_angular_velocity_.SetAngularVelocityLimit_rad_s(velocity_limit_rpm_ * math::rpm_to_rad_s); return; } From f31a92d1427c4a7737776a5b0004aa3090b8bdeb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:41:04 +0900 Subject: [PATCH 229/456] Replace libra::pi_2 to math::pi_2 --- src/components/real/aocs/sun_sensor.cpp | 6 +++--- src/components/real/mission/telescope.cpp | 4 ++-- src/math_physics/geodesy/geodetic_position.cpp | 2 +- src/math_physics/math/test_interpolation.cpp | 14 +++++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 2f3eeb29b..d4432496b 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -115,7 +115,7 @@ void SunSensor::CalcSolarIlluminance() { math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); - if (sun_angle_ > libra::pi_2) { + if (sun_angle_ > math::pi_2) { solar_illuminance_W_m2_ = 0.0; return; } @@ -126,8 +126,8 @@ void SunSensor::CalcSolarIlluminance() { } double SunSensor::TanRange(double x) { - if (x > libra::pi_2) x = math::pi - x; - if (x < -libra::pi_2) x = -math::pi - x; + if (x > math::pi_2) x = math::pi - x; + if (x < -math::pi_2) x = -math::pi - x; return x; } diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index f08be211a..f04989be3 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -38,8 +38,8 @@ Telescope::Telescope(ClockGenerator* clock_generator, const math::Quaternion& qu x_field_of_view_rad = x_number_of_pix_ * x_fov_per_pix_; y_field_of_view_rad = y_number_of_pix_ * y_fov_per_pix_; - assert(x_field_of_view_rad < libra::pi_2); // Avoid the case that the field of view is over 90 degrees - assert(y_field_of_view_rad < libra::pi_2); + assert(x_field_of_view_rad < math::pi_2); // Avoid the case that the field of view is over 90 degrees + assert(y_field_of_view_rad < math::pi_2); sight_direction_c_ = Vector<3>(0); sight_direction_c_[0] = 1; // (1,0,0) at component frame, Sight direction vector diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 1508a796a..11b453cf6 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -44,7 +44,7 @@ void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { altitude_m_ = r_m / cos(lat_tmp_rad) - c * earth_radius_m; - if (lat_tmp_rad > libra::pi_2) lat_tmp_rad -= math::tau; + if (lat_tmp_rad > math::pi_2) lat_tmp_rad -= math::tau; latitude_rad_ = lat_tmp_rad; diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index b730fb962..da6ee990b 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -45,7 +45,7 @@ TEST(Interpolation, PolynomialQuadraticFunction) { * @brief Test for sin function with trigonometric interpolation */ TEST(Interpolation, TrigonometricSinFunction) { - std::vector x{0.0, libra::pi_2, math::pi, math::pi * 3.0 / 2.0, math::tau}; + std::vector x{0.0, math::pi_2, math::pi, math::pi * 3.0 / 2.0, math::tau}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); @@ -62,16 +62,16 @@ TEST(Interpolation, TrigonometricSinFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosFunction) { - std::vector x{0.0, 0.3 * libra::pi_2, 0.6 * libra::pi_2, 0.9 * libra::pi_2, 1.2 * libra::pi_2}; + std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i])); } libra::Interpolation interpolation(x, y); - double xx = 0.1 * libra::pi_2; + double xx = 0.1 * math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * libra::pi_2; + xx = 0.8 * math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -79,16 +79,16 @@ TEST(Interpolation, TrigonometricCosFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { - std::vector x{0.0, 0.3 * libra::pi_2, 0.6 * libra::pi_2, 0.9 * libra::pi_2, 1.2 * libra::pi_2, 1.5 * libra::pi_2}; + std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2, 1.5 * math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i]) + sin(x[i])); } libra::Interpolation interpolation(x, y); - double xx = 0.1 * libra::pi_2; + double xx = 0.1 * math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * libra::pi_2; + xx = 0.8 * math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); } From b6ff06e9d59cfdd83f184839e324be328ce251b7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:41:47 +0900 Subject: [PATCH 230/456] Replace libra::arcsec to math::arcsec --- src/environment/global/earth_rotation.cpp | 102 +++++++++--------- .../moon_rotation_utilities.cpp | 6 +- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 321e82df0..dd552f04d 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -33,76 +33,76 @@ void EarthRotation::InitializeParameters() { // Coefficients to compute mean obliquity of the ecliptic // The actual unit of the coefficients are [rad/century^i], where i is the index of the array c_epsilon_rad_[0] = 23.4392911 * math::deg_to_rad; // [rad] - c_epsilon_rad_[1] = -46.8150000 * libra::arcsec_to_rad; // [rad/century] - c_epsilon_rad_[2] = -5.9000e-4 * libra::arcsec_to_rad; // [rad/century^2] - c_epsilon_rad_[3] = 1.8130e-3 * libra::arcsec_to_rad; // [rad/century^3] + c_epsilon_rad_[1] = -46.8150000 * math::arcsec_to_rad; // [rad/century] + c_epsilon_rad_[2] = -5.9000e-4 * math::arcsec_to_rad; // [rad/century^2] + c_epsilon_rad_[3] = 1.8130e-3 * math::arcsec_to_rad; // [rad/century^3] // Coefficients to compute Delaunay angles // The actual unit of the coefficients are [rad/century^i], where i is the index of the array c_lm_rad_[0] = 134.96340251 * math::deg_to_rad; // [rad] - c_lm_rad_[1] = 1717915923.21780000 * libra::arcsec_to_rad; // [rad/century] - c_lm_rad_[2] = 31.87920000 * libra::arcsec_to_rad; // [rad/century^2] - c_lm_rad_[3] = 0.05163500 * libra::arcsec_to_rad; // [rad/century^3] - c_lm_rad_[4] = -0.00024470 * libra::arcsec_to_rad; // [rad/century^4] + c_lm_rad_[1] = 1717915923.21780000 * math::arcsec_to_rad; // [rad/century] + c_lm_rad_[2] = 31.87920000 * math::arcsec_to_rad; // [rad/century^2] + c_lm_rad_[3] = 0.05163500 * math::arcsec_to_rad; // [rad/century^3] + c_lm_rad_[4] = -0.00024470 * math::arcsec_to_rad; // [rad/century^4] c_ls_rad_[0] = 357.52910918 * math::deg_to_rad; // [rad] - c_ls_rad_[1] = 129596581.04810000 * libra::arcsec_to_rad; // [rad/century] - c_ls_rad_[2] = -0.55320000 * libra::arcsec_to_rad; // [rad/century^2] - c_ls_rad_[3] = 0.00013600 * libra::arcsec_to_rad; // [rad/century^3] - c_ls_rad_[4] = -0.00001149 * libra::arcsec_to_rad; // [rad/century^4] + c_ls_rad_[1] = 129596581.04810000 * math::arcsec_to_rad; // [rad/century] + c_ls_rad_[2] = -0.55320000 * math::arcsec_to_rad; // [rad/century^2] + c_ls_rad_[3] = 0.00013600 * math::arcsec_to_rad; // [rad/century^3] + c_ls_rad_[4] = -0.00001149 * math::arcsec_to_rad; // [rad/century^4] c_f_rad_[0] = 93.27209062 * math::deg_to_rad; // [rad] - c_f_rad_[1] = 1739527262.84780000 * libra::arcsec_to_rad; // [rad/century] - c_f_rad_[2] = -12.75120000 * libra::arcsec_to_rad; // [rad/century^2] - c_f_rad_[3] = -0.00103700 * libra::arcsec_to_rad; // [rad/century^3] - c_f_rad_[4] = 0.00000417 * libra::arcsec_to_rad; // [rad/century^4] + c_f_rad_[1] = 1739527262.84780000 * math::arcsec_to_rad; // [rad/century] + c_f_rad_[2] = -12.75120000 * math::arcsec_to_rad; // [rad/century^2] + c_f_rad_[3] = -0.00103700 * math::arcsec_to_rad; // [rad/century^3] + c_f_rad_[4] = 0.00000417 * math::arcsec_to_rad; // [rad/century^4] c_d_rad_[0] = 297.85019547 * math::deg_to_rad; // [rad] - c_d_rad_[1] = 1602961601.20900000 * libra::arcsec_to_rad; // [rad/century] - c_d_rad_[2] = -6.37060000 * libra::arcsec_to_rad; // [rad/century^2] - c_d_rad_[3] = 0.00659300 * libra::arcsec_to_rad; // [rad/century^3] - c_d_rad_[4] = -0.00003169 * libra::arcsec_to_rad; // [rad/century^4] + c_d_rad_[1] = 1602961601.20900000 * math::arcsec_to_rad; // [rad/century] + c_d_rad_[2] = -6.37060000 * math::arcsec_to_rad; // [rad/century^2] + c_d_rad_[3] = 0.00659300 * math::arcsec_to_rad; // [rad/century^3] + c_d_rad_[4] = -0.00003169 * math::arcsec_to_rad; // [rad/century^4] c_o_rad_[0] = 125.04455501 * math::deg_to_rad; // [rad] - c_o_rad_[1] = -6962890.54310000 * libra::arcsec_to_rad; // [rad/century] - c_o_rad_[2] = 7.47220000 * libra::arcsec_to_rad; // [rad/century^2] - c_o_rad_[3] = 0.00770200 * libra::arcsec_to_rad; // [rad/century^3] - c_o_rad_[4] = -0.00005939 * libra::arcsec_to_rad; // [rad/century^4] + c_o_rad_[1] = -6962890.54310000 * math::arcsec_to_rad; // [rad/century] + c_o_rad_[2] = 7.47220000 * math::arcsec_to_rad; // [rad/century^2] + c_o_rad_[3] = 0.00770200 * math::arcsec_to_rad; // [rad/century^3] + c_o_rad_[4] = -0.00005939 * math::arcsec_to_rad; // [rad/century^4] // Coefficients to compute nutation angles - c_d_epsilon_rad_[0] = 9.2050 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[1] = 0.5730 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[2] = -0.0900 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[3] = 0.0980 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[4] = 0.0070 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[5] = -0.0010 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[6] = 0.0220 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[7] = 0.0130 * libra::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[8] = -0.0100 * libra::arcsec_to_rad; // [rad] - - c_d_psi_rad_[0] = -17.2060 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[1] = -1.3170 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[2] = 0.2070 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[3] = -0.2280 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[4] = 0.1480 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[5] = 0.0710 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[6] = -0.0520 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[7] = -0.0300 * libra::arcsec_to_rad; // [rad] - c_d_psi_rad_[8] = 0.0220 * libra::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[0] = 9.2050 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[1] = 0.5730 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[2] = -0.0900 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[3] = 0.0980 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[4] = 0.0070 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[5] = -0.0010 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[6] = 0.0220 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[7] = 0.0130 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[8] = -0.0100 * math::arcsec_to_rad; // [rad] + + c_d_psi_rad_[0] = -17.2060 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[1] = -1.3170 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[2] = 0.2070 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[3] = -0.2280 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[4] = 0.1480 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[5] = 0.0710 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[6] = -0.0520 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[7] = -0.0300 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[8] = 0.0220 * math::arcsec_to_rad; // [rad] // Coefficients to compute precession angle // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_zeta_rad_[0] = 2306.218100 * libra::arcsec_to_rad; // [rad/century] - c_zeta_rad_[1] = 0.301880 * libra::arcsec_to_rad; // [rad/century^2] - c_zeta_rad_[2] = 0.017998 * libra::arcsec_to_rad; // [rad/century^3] + c_zeta_rad_[0] = 2306.218100 * math::arcsec_to_rad; // [rad/century] + c_zeta_rad_[1] = 0.301880 * math::arcsec_to_rad; // [rad/century^2] + c_zeta_rad_[2] = 0.017998 * math::arcsec_to_rad; // [rad/century^3] - c_theta_rad_[0] = 2004.310900 * libra::arcsec_to_rad; // [rad/century] - c_theta_rad_[1] = -0.426650 * libra::arcsec_to_rad; // [rad/century^2] - c_theta_rad_[2] = -0.041833 * libra::arcsec_to_rad; // [rad/century^3] + c_theta_rad_[0] = 2004.310900 * math::arcsec_to_rad; // [rad/century] + c_theta_rad_[1] = -0.426650 * math::arcsec_to_rad; // [rad/century^2] + c_theta_rad_[2] = -0.041833 * math::arcsec_to_rad; // [rad/century^3] - c_z_rad_[0] = 2306.218100 * libra::arcsec_to_rad; // [rad/century] - c_z_rad_[1] = 1.094680 * libra::arcsec_to_rad; // [rad/century^2] - c_z_rad_[2] = 0.018203 * libra::arcsec_to_rad; // [rad/century^3] + c_z_rad_[0] = 2306.218100 * math::arcsec_to_rad; // [rad/century] + c_z_rad_[1] = 1.094680 * math::arcsec_to_rad; // [rad/century^2] + c_z_rad_[2] = 0.018203 * math::arcsec_to_rad; // [rad/century^3] } else { // If the rotation mode is neither Simple nor Full, disable the rotation calculation and make the DCM a unit matrix dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index 46cfedec1..f4f772526 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -37,9 +37,9 @@ math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { // The correction values between DE430 Principal Axis and Mean Earth frame - const double theta_x_rad = 0.285 * libra::arcsec_to_rad; - const double theta_y_rad = 78.580 * libra::arcsec_to_rad; - const double theta_z_rad = 67.573 * libra::arcsec_to_rad; + const double theta_x_rad = 0.285 * math::arcsec_to_rad; + const double theta_y_rad = 78.580 * math::arcsec_to_rad; + const double theta_z_rad = 67.573 * math::arcsec_to_rad; math::Matrix<3, 3> dcm_me_pa = math::MakeRotationMatrixZ(theta_z_rad) * math::MakeRotationMatrixY(theta_y_rad) * math::MakeRotationMatrixX(theta_x_rad); From cbe9fe9168f06b0ae6cf945c874202d03d596145 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:42:15 +0900 Subject: [PATCH 231/456] Replace libra::OuterProduct to math::OuterProduct --- src/components/real/aocs/reaction_wheel.cpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- .../attitude/ode_attitude_with_cantilever_vibration.hpp | 2 +- src/math_physics/planet_rotation/moon_rotation_utilities.cpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index fd80f7dbd..54ab6149e 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -153,7 +153,7 @@ math::Vector<3> ReactionWheel::CalcTorque() { const math::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { if (is_calculated_jitter_) { // Add jitter_force_b_N_-derived torque and jitter_torque_b_Nm_ to output_torque_b - return output_torque_b_Nm_ - libra::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); + return output_torque_b_Nm_ - math::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); } else { return output_torque_b_Nm_; } diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 4ba0a33dc..3f20b3b82 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -67,7 +67,7 @@ math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(math::Vector<7> x, do } math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; math::Vector<3> rhs = - inverse_inertia_tensor_ * (torque_b_Nm_ - libra::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); + inverse_inertia_tensor_ * (torque_b_Nm_ - math::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 88b7193ee..b5854b344 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -82,7 +82,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { SetPhysicalQuantitiesFromState(state, omega_b_rad_s, omega_cantilever_rad_s, quaternion_i2b, euler_angle_cantilever_rad); math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; - math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - libra::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; + math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - math::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; math::Vector<3> angular_accelaration_cantilever_rad_s2 = -(inverse_equivalent_inertia_tensor_cantilever_ * diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index f4f772526..93a3ee2e5 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -20,10 +20,10 @@ math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { math::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); - math::Vector<3> moon_orbit_norm = libra::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); + math::Vector<3> moon_orbit_norm = math::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); math::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); - math::Vector<3> me_ey_eci = libra::OuterProduct(me_ez_eci, me_ex_eci); + math::Vector<3> me_ey_eci = math::OuterProduct(me_ez_eci, me_ex_eci); math::Matrix<3, 3> dcm_eci_to_me; for (size_t i = 0; i < 3; i++) { From 3dd29405232aa6071a0cd6582300841921569638 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:42:41 +0900 Subject: [PATCH 232/456] Replace libra::InnerProduct to math::InnerProduct --- src/dynamics/attitude/attitude.cpp | 2 +- src/math_physics/atmosphere/harris_priester_model.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index e811828f9..461144660 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -54,7 +54,7 @@ void Attitude::CalcAngularMomentum(void) { angular_momentum_total_i_Nms_ = q_b2i.FrameConversion(angular_momentum_total_b_Nms_); angular_momentum_total_Nms_ = angular_momentum_total_i_Nms_.CalcNorm(); - kinetic_energy_J_ = 0.5 * libra::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); + kinetic_energy_J_ = 0.5 * math::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s) { diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 28bbce364..46c40c8d6 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -48,7 +48,7 @@ double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_po apex_direction[1] = cos(sun_dec_rad) * sin(apex_ra_rad); apex_direction[2] = sin(sun_dec_rad); - double beta_rad = libra::InnerProduct(position_ecef_m.CalcNormalizedVector(), apex_direction); + double beta_rad = math::InnerProduct(position_ecef_m.CalcNormalizedVector(), apex_direction); double cos_phi = pow(0.5 + beta_rad / 2.0, exponent_parameter / 2.0); // Find density coefficients from altitude From 40fe03bf18e671b74ef4b75e71b64b8e2dd22c43 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:44:14 +0900 Subject: [PATCH 233/456] fix to add { --- src/math_physics/math/constants.hpp | 2 +- src/math_physics/math/interpolation.cpp | 2 +- src/math_physics/math/interpolation.hpp | 2 +- src/math_physics/math/matrix.hpp | 2 +- src/math_physics/math/matrix_template_functions.hpp | 2 +- src/math_physics/math/matrix_vector.hpp | 2 +- src/math_physics/math/matrix_vector_template_functions.hpp | 2 +- src/math_physics/math/ordinary_differential_equation.hpp | 2 +- .../math/ordinary_differential_equation_template_functions.hpp | 2 +- src/math_physics/math/quaternion.cpp | 2 +- src/math_physics/math/quaternion.hpp | 2 +- src/math_physics/math/s2e_math.cpp | 2 +- src/math_physics/math/s2e_math.hpp | 2 +- src/math_physics/math/vector.cpp | 2 +- src/math_physics/math/vector.hpp | 2 +- src/math_physics/math/vector_template_functions.hpp | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/math_physics/math/constants.hpp b/src/math_physics/math/constants.hpp index bcae848b9..b2ad81496 100644 --- a/src/math_physics/math/constants.hpp +++ b/src/math_physics/math/constants.hpp @@ -8,7 +8,7 @@ #include // std::is_floating_point_v -namespace math +namespace math { // instead of C++20 std::numbers inline namespace numbers { diff --git a/src/math_physics/math/interpolation.cpp b/src/math_physics/math/interpolation.cpp index 33cb52bd5..591974f57 100644 --- a/src/math_physics/math/interpolation.cpp +++ b/src/math_physics/math/interpolation.cpp @@ -7,7 +7,7 @@ #include -namespace math +namespace math { double Interpolation::CalcPolynomial(const double x) const { // Search nearest point diff --git a/src/math_physics/math/interpolation.hpp b/src/math_physics/math/interpolation.hpp index 166498ebd..be245eb15 100644 --- a/src/math_physics/math/interpolation.hpp +++ b/src/math_physics/math/interpolation.hpp @@ -9,7 +9,7 @@ #include #include -namespace math +namespace math { /** * @class Interpolation diff --git a/src/math_physics/math/matrix.hpp b/src/math_physics/math/matrix.hpp index c54052475..623f78c0f 100644 --- a/src/math_physics/math/matrix.hpp +++ b/src/math_physics/math/matrix.hpp @@ -9,7 +9,7 @@ #include // for size_t #include // for ostream, cout -namespace math +namespace math { /** * @class Matrix diff --git a/src/math_physics/math/matrix_template_functions.hpp b/src/math_physics/math/matrix_template_functions.hpp index 521114e3d..961cdf460 100644 --- a/src/math_physics/math/matrix_template_functions.hpp +++ b/src/math_physics/math/matrix_template_functions.hpp @@ -9,7 +9,7 @@ #include #include // for cout -namespace math +namespace math { template Matrix::Matrix(const T& n) { diff --git a/src/math_physics/math/matrix_vector.hpp b/src/math_physics/math/matrix_vector.hpp index 1ee34c228..6b9878e95 100644 --- a/src/math_physics/math/matrix_vector.hpp +++ b/src/math_physics/math/matrix_vector.hpp @@ -9,7 +9,7 @@ #include "matrix.hpp" #include "vector.hpp" -namespace math +namespace math { /** * @fn operator* diff --git a/src/math_physics/math/matrix_vector_template_functions.hpp b/src/math_physics/math/matrix_vector_template_functions.hpp index b1229fae5..19bc29a44 100644 --- a/src/math_physics/math/matrix_vector_template_functions.hpp +++ b/src/math_physics/math/matrix_vector_template_functions.hpp @@ -8,7 +8,7 @@ #include // for invalid_argument. -namespace math +namespace math { template Vector operator*(const Matrix& matrix, const Vector& vector) { diff --git a/src/math_physics/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp index bde476279..a83c12a06 100644 --- a/src/math_physics/math/ordinary_differential_equation.hpp +++ b/src/math_physics/math/ordinary_differential_equation.hpp @@ -8,7 +8,7 @@ #include "./vector.hpp" -namespace math +namespace math { /** * @class OrdinaryDifferentialEquation diff --git a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp index 9ba56d399..44b09dec8 100644 --- a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp +++ b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp @@ -5,7 +5,7 @@ #ifndef S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ #define S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ -namespace math +namespace math { template OrdinaryDifferentialEquation::OrdinaryDifferentialEquation(double step_width_s) diff --git a/src/math_physics/math/quaternion.cpp b/src/math_physics/math/quaternion.cpp index 512fff855..b52adbda9 100644 --- a/src/math_physics/math/quaternion.cpp +++ b/src/math_physics/math/quaternion.cpp @@ -9,7 +9,7 @@ #include #include -namespace math +namespace math { Quaternion::Quaternion(const Vector<3>& rotation_axis, const double rotation_angle_rad) { double half_rotation_angle_rad = rotation_angle_rad * 0.5; diff --git a/src/math_physics/math/quaternion.hpp b/src/math_physics/math/quaternion.hpp index c22cb7c66..36ac1aa76 100644 --- a/src/math_physics/math/quaternion.hpp +++ b/src/math_physics/math/quaternion.hpp @@ -9,7 +9,7 @@ #include "matrix.hpp" #include "vector.hpp" -namespace math +namespace math { /** * @class Quaternion diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index 0b52849d2..d86e2e42a 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -7,7 +7,7 @@ #include -namespace math +namespace math { double WrapTo2Pi(const double angle_rad) { double angle_out = angle_rad; if (angle_out < 0.0) { diff --git a/src/math_physics/math/s2e_math.hpp b/src/math_physics/math/s2e_math.hpp index d235bb023..51bad8843 100644 --- a/src/math_physics/math/s2e_math.hpp +++ b/src/math_physics/math/s2e_math.hpp @@ -8,7 +8,7 @@ #include -namespace math +namespace math { /** * @fn WrapTo2Pi diff --git a/src/math_physics/math/vector.cpp b/src/math_physics/math/vector.cpp index cde34ea28..089e77b00 100644 --- a/src/math_physics/math/vector.cpp +++ b/src/math_physics/math/vector.cpp @@ -7,7 +7,7 @@ #include "constants.hpp" -namespace math +namespace math { Vector<3, double> ConvertFrameOrthogonal2Polar(const Vector<3, double>& orthogonal) { Vector<3, double> polar; // vector on the polar coordinate polar.FillUp(0.0); diff --git a/src/math_physics/math/vector.hpp b/src/math_physics/math/vector.hpp index 08870ac7b..7bb1881a6 100644 --- a/src/math_physics/math/vector.hpp +++ b/src/math_physics/math/vector.hpp @@ -12,7 +12,7 @@ #define dot InnerProduct #define cross OuterProduct -namespace math +namespace math { /** * @class Vector * @brief Class for mathematical vector diff --git a/src/math_physics/math/vector_template_functions.hpp b/src/math_physics/math/vector_template_functions.hpp index 065ab4c1e..f546d459d 100644 --- a/src/math_physics/math/vector_template_functions.hpp +++ b/src/math_physics/math/vector_template_functions.hpp @@ -8,7 +8,7 @@ #include -namespace math +namespace math { template Vector::Vector(const T& n) { From 33b13186ad9dfb111ee0eb5a049f0f244e5bed0d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:45:21 +0900 Subject: [PATCH 234/456] Replace libra in comment --- src/math_physics/math/constants.hpp | 2 +- src/math_physics/math/interpolation.cpp | 2 +- src/math_physics/math/interpolation.hpp | 2 +- src/math_physics/math/matrix.hpp | 2 +- src/math_physics/math/matrix_template_functions.hpp | 2 +- src/math_physics/math/matrix_vector.hpp | 2 +- src/math_physics/math/matrix_vector_template_functions.hpp | 2 +- src/math_physics/math/ordinary_differential_equation.hpp | 2 +- .../math/ordinary_differential_equation_template_functions.hpp | 2 +- src/math_physics/math/quaternion.cpp | 2 +- src/math_physics/math/quaternion.hpp | 2 +- src/math_physics/math/s2e_math.cpp | 2 +- src/math_physics/math/s2e_math.hpp | 2 +- src/math_physics/math/vector.cpp | 2 +- src/math_physics/math/vector.hpp | 2 +- src/math_physics/math/vector_template_functions.hpp | 2 +- .../minimal_standard_linear_congruential_generator.hpp | 2 +- ...imal_standard_linear_congruential_generator_with_shuffle.hpp | 2 +- src/math_physics/randomization/normal_randomization.hpp | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/math_physics/math/constants.hpp b/src/math_physics/math/constants.hpp index b2ad81496..9e6744015 100644 --- a/src/math_physics/math/constants.hpp +++ b/src/math_physics/math/constants.hpp @@ -47,6 +47,6 @@ DEFINE_MATH_CONSTANT(rad_s_to_rpm, 60.0L / tau) /* rad/s to rpm */ #undef DEFINE_MATH_CONSTANT } // namespace numbers -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_CONSTANTS_HPP_ diff --git a/src/math_physics/math/interpolation.cpp b/src/math_physics/math/interpolation.cpp index 591974f57..4415c4dd5 100644 --- a/src/math_physics/math/interpolation.cpp +++ b/src/math_physics/math/interpolation.cpp @@ -94,4 +94,4 @@ size_t Interpolation::FindNearestPoint(const double x) const { return output; } -} // namespace libra +} // namespace math diff --git a/src/math_physics/math/interpolation.hpp b/src/math_physics/math/interpolation.hpp index be245eb15..7620ff338 100644 --- a/src/math_physics/math/interpolation.hpp +++ b/src/math_physics/math/interpolation.hpp @@ -90,6 +90,6 @@ class Interpolation { size_t FindNearestPoint(const double x) const; }; -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_INTERPOLATION_HPP_ diff --git a/src/math_physics/math/matrix.hpp b/src/math_physics/math/matrix.hpp index 623f78c0f..89429a8ca 100644 --- a/src/math_physics/math/matrix.hpp +++ b/src/math_physics/math/matrix.hpp @@ -244,7 +244,7 @@ Matrix MakeRotationMatrixY(const double& theta_rad); template Matrix MakeRotationMatrixZ(const double& theta_rad); -} // namespace libra +} // namespace math #include "matrix_template_functions.hpp" diff --git a/src/math_physics/math/matrix_template_functions.hpp b/src/math_physics/math/matrix_template_functions.hpp index 961cdf460..dbfa9aa1b 100644 --- a/src/math_physics/math/matrix_template_functions.hpp +++ b/src/math_physics/math/matrix_template_functions.hpp @@ -186,6 +186,6 @@ Matrix MakeRotationMatrixZ(const double& theta_rad) { return m; } -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_MATRIX_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/math_physics/math/matrix_vector.hpp b/src/math_physics/math/matrix_vector.hpp index 6b9878e95..7c76a07f5 100644 --- a/src/math_physics/math/matrix_vector.hpp +++ b/src/math_physics/math/matrix_vector.hpp @@ -52,7 +52,7 @@ Matrix& LuDecomposition(Matrix& matrix, size_t index[]); template Vector& SolveLinearSystemWithLu(const Matrix& matrix, const size_t index[], Vector& vector); -} // namespace libra +} // namespace math #include "matrix_vector_template_functions.hpp" diff --git a/src/math_physics/math/matrix_vector_template_functions.hpp b/src/math_physics/math/matrix_vector_template_functions.hpp index 19bc29a44..d16f08a2a 100644 --- a/src/math_physics/math/matrix_vector_template_functions.hpp +++ b/src/math_physics/math/matrix_vector_template_functions.hpp @@ -139,6 +139,6 @@ Vector& SolveLinearSystemWithLu(const Matrix& a, const size_t index[], return b; } -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_MATRIX_VECTOR_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/math_physics/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp index a83c12a06..36ff4ae86 100644 --- a/src/math_physics/math/ordinary_differential_equation.hpp +++ b/src/math_physics/math/ordinary_differential_equation.hpp @@ -111,7 +111,7 @@ class OrdinaryDifferentialEquation { double step_width_s_; //!< Step width }; -} // namespace libra +} // namespace math #include "./ordinary_differential_equation_template_functions.hpp" diff --git a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp index 44b09dec8..7c5dc3071 100644 --- a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp +++ b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp @@ -44,6 +44,6 @@ void OrdinaryDifferentialEquation::Update() { independent_variable_ += step_width_s_; // Update independent variable } -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/math_physics/math/quaternion.cpp b/src/math_physics/math/quaternion.cpp index b52adbda9..27dacc275 100644 --- a/src/math_physics/math/quaternion.cpp +++ b/src/math_physics/math/quaternion.cpp @@ -236,4 +236,4 @@ Vector<3> Quaternion::InverseFrameConversion(const Vector<3>& vector) const { Vector<4> Quaternion::ConvertToVector() { return quaternion_; } -} // namespace libra +} // namespace math diff --git a/src/math_physics/math/quaternion.hpp b/src/math_physics/math/quaternion.hpp index 36ac1aa76..76720f773 100644 --- a/src/math_physics/math/quaternion.hpp +++ b/src/math_physics/math/quaternion.hpp @@ -203,6 +203,6 @@ Quaternion operator*(const Quaternion& lhs, const Vector<3>& rhs); * @return Quaternion */ Quaternion operator*(const double& lhs, const Quaternion& rhs); -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_QUATERNION_HPP_ diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index d86e2e42a..943e6da91 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -23,4 +23,4 @@ double WrapTo2Pi(const double angle_rad) { } return angle_out; } -} // namespace libra +} // namespace math diff --git a/src/math_physics/math/s2e_math.hpp b/src/math_physics/math/s2e_math.hpp index 51bad8843..fb7bbccb6 100644 --- a/src/math_physics/math/s2e_math.hpp +++ b/src/math_physics/math/s2e_math.hpp @@ -17,6 +17,6 @@ namespace math { */ double WrapTo2Pi(const double angle_rad); -} // namespace libra +} // namespace math #endif // S2E_LIBRARY_MATH_S2E_MATH_HPP_ diff --git a/src/math_physics/math/vector.cpp b/src/math_physics/math/vector.cpp index 089e77b00..88c214ba7 100644 --- a/src/math_physics/math/vector.cpp +++ b/src/math_physics/math/vector.cpp @@ -51,4 +51,4 @@ Vector<3, double> GenerateOrthogonalUnitVector(const Vector<3, double>& v) { return (orthogonal_vector); } } -} // namespace libra +} // namespace math diff --git a/src/math_physics/math/vector.hpp b/src/math_physics/math/vector.hpp index 7bb1881a6..5d290d87f 100644 --- a/src/math_physics/math/vector.hpp +++ b/src/math_physics/math/vector.hpp @@ -237,7 +237,7 @@ Vector<3, double> ConvertFrameOrthogonal2Polar(const Vector<3, double>& orthogon */ Vector<3, double> GenerateOrthogonalUnitVector(const Vector<3, double>& v); -} // namespace libra +} // namespace math #include "vector_template_functions.hpp" diff --git a/src/math_physics/math/vector_template_functions.hpp b/src/math_physics/math/vector_template_functions.hpp index f546d459d..80e51ce5f 100644 --- a/src/math_physics/math/vector_template_functions.hpp +++ b/src/math_physics/math/vector_template_functions.hpp @@ -146,6 +146,6 @@ double CalcAngleTwoVectors_rad(const Vector& v1, const Vector Date: Sat, 20 Jul 2024 09:46:29 +0900 Subject: [PATCH 235/456] Replace libra::Interpolation to math::Interpolation --- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 2 +- src/math_physics/math/test_interpolation.cpp | 12 ++++++------ src/math_physics/orbit/interpolation_orbit.cpp | 2 +- src/math_physics/orbit/interpolation_orbit.hpp | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index f9daeaf7a..d68216ea2 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -43,7 +43,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con // Initialize clock std::vector temp; temp.assign(kNumberOfInterpolation, -1.0); - clock_.assign(number_of_calculated_gnss_satellites_, libra::Interpolation(temp, temp)); + clock_.assign(number_of_calculated_gnss_satellites_, math::Interpolation(temp, temp)); // Initialize interpolation for (size_t i = 0; i < kNumberOfInterpolation; i++) { diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index c9d475416..723cb75d9 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -121,7 +121,7 @@ class GnssSatellites : public ILoggable { EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation - std::vector clock_; //!< GNSS satellite clock offset with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation // References const EarthRotation& earth_rotation_; //!< Earth rotation diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index da6ee990b..674b12419 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -15,7 +15,7 @@ TEST(Interpolation, PolynomialLinearFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - libra::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(2.0 * xx, interpolation.CalcPolynomial(xx)); @@ -31,7 +31,7 @@ TEST(Interpolation, PolynomialLinearFunction) { TEST(Interpolation, PolynomialQuadraticFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 1.0, 4.0, 9.0, 16.0}; - libra::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(pow(xx, 2.0), interpolation.CalcPolynomial(xx)); @@ -50,7 +50,7 @@ TEST(Interpolation, TrigonometricSinFunction) { for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); } - libra::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.4 * math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); @@ -67,7 +67,7 @@ TEST(Interpolation, TrigonometricCosFunction) { for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i])); } - libra::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.1 * math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); @@ -84,7 +84,7 @@ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i]) + sin(x[i])); } - libra::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.1 * math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); @@ -98,7 +98,7 @@ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { TEST(Interpolation, PushAndPop) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - libra::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); EXPECT_EQ(x.size(), interpolation.GetDegree()); for (size_t i = 0; i < x.size(); i++) { diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index e0ea33692..c7d26302a 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -10,7 +10,7 @@ InterpolationOrbit::InterpolationOrbit(const size_t degree) { time.assign(degree, -1.0); std::vector position; position.assign(degree, 0.0); - libra::Interpolation temp(time, position); + math::Interpolation temp(time, position); for (size_t axis = 0; axis < 3; axis++) { interpolation_position_.push_back(temp); } diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index d45df5af7..10a60ed6b 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -66,7 +66,7 @@ class InterpolationOrbit { } private: - std::vector interpolation_position_; // 3D vector of interpolation + std::vector interpolation_position_; // 3D vector of interpolation }; #endif // S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ From 4a9f47ec583155fb73b0dd96f5c1e11b54b1a7af Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:47:09 +0900 Subject: [PATCH 236/456] Replace libra::Wrap to math::Wrap --- src/math_physics/math/test_s2e_math.cpp | 8 ++++---- src/math_physics/orbit/kepler_orbit.cpp | 4 ++-- src/math_physics/orbit/orbital_elements.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/math_physics/math/test_s2e_math.cpp b/src/math_physics/math/test_s2e_math.cpp index c018c6434..949751a3b 100644 --- a/src/math_physics/math/test_s2e_math.cpp +++ b/src/math_physics/math/test_s2e_math.cpp @@ -14,18 +14,18 @@ TEST(S2eMath, WrapTo2Pi) { const double accuracy = 1.0e-7; double input_angle_rad = 0.0; - double wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); + double wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(0.0, wrapped_angle_rad, accuracy); input_angle_rad = -1.0e-5; - wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); + wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(math::tau + input_angle_rad, wrapped_angle_rad, accuracy); input_angle_rad = math::tau + 1.0e-5; - wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); + wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); input_angle_rad = 10 * math::tau + 1.0e-5; - wrapped_angle_rad = libra::WrapTo2Pi(input_angle_rad); + wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); } diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index f3425450d..ca7458152 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -37,12 +37,12 @@ void KeplerOrbit::CalcOrbit(double time_jday) { double dt_s = (time_jday - oe_.GetEpoch_jday()) * (24.0 * 60.0 * 60.0); double mean_anomaly_rad = mean_motion_rad_s_ * dt_s; - double l_rad = libra::WrapTo2Pi(mean_anomaly_rad); + double l_rad = math::WrapTo2Pi(mean_anomaly_rad); // Solve Kepler Equation double eccentric_anomaly_rad; eccentric_anomaly_rad = SolveKeplerNewtonMethod(e, l_rad, 1.0e-5, 10); - double u_rad = libra::WrapTo2Pi(eccentric_anomaly_rad); + double u_rad = math::WrapTo2Pi(eccentric_anomaly_rad); // Calc position and velocity in the plane double cos_u = cos(u_rad); diff --git a/src/math_physics/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp index 8c50d8109..dbd3e89d8 100644 --- a/src/math_physics/orbit/orbital_elements.cpp +++ b/src/math_physics/orbit/orbital_elements.cpp @@ -75,10 +75,10 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons // true anomaly f_rad and eccentric anomaly u_rad double phi_rad = atan2(y_p_m, x_p_m); double f_rad = phi_rad - arg_perigee_rad_; - f_rad = libra::WrapTo2Pi(f_rad); + f_rad = math::WrapTo2Pi(f_rad); double u_rad = atan2(r_m * sin(f_rad) / sqrt(1.0 - eccentricity_ * eccentricity_), r_m * cos(f_rad) + semi_major_axis_m_ * eccentricity_); - u_rad = libra::WrapTo2Pi(u_rad); + u_rad = math::WrapTo2Pi(u_rad); // epoch t0 double n_rad_s = sqrt(gravity_constant_m3_s2 / pow(semi_major_axis_m_, 3.0)); From e6b7148a29d73da09edb64e724d6cffae89d0bf1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:48:11 +0900 Subject: [PATCH 237/456] Replace libra::Ordinary to math::Ordinary --- src/components/real/aocs/reaction_wheel_ode.hpp | 2 +- src/dynamics/orbit/encke_orbit_propagation.cpp | 2 +- src/dynamics/orbit/encke_orbit_propagation.hpp | 2 +- src/dynamics/orbit/relative_orbit.cpp | 2 +- src/dynamics/orbit/relative_orbit.hpp | 2 +- src/dynamics/orbit/rk4_orbit_propagation.hpp | 2 +- src/math_physics/randomization/random_walk.hpp | 2 +- .../randomization/random_walk_template_functions.hpp | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index d36792e88..89bec07c3 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -12,7 +12,7 @@ * @file ReactionWheelOde * @brief Ordinary differential equation of angular velocity of reaction wheel with first-order lag */ -class ReactionWheelOde : public libra::OrdinaryDifferentialEquation<1> { +class ReactionWheelOde : public math::OrdinaryDifferentialEquation<1> { public: /** * @fn ReactionWheelOde diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index 7cb480bca..a5a839d5c 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -13,7 +13,7 @@ EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celesti const double propagation_step_s, const double current_time_jd, const math::Vector<3> position_i_m, const math::Vector<3> velocity_i_m_s, const double error_tolerance) : Orbit(celestial_information), - libra::OrdinaryDifferentialEquation<6>(propagation_step_s), + math::OrdinaryDifferentialEquation<6>(propagation_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), error_tolerance_(error_tolerance), propagation_step_s_(propagation_step_s) { diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index 54b324fe1..9c6a3bc5b 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -14,7 +14,7 @@ * @class EnckeOrbitPropagation * @brief Class to propagate spacecraft orbit with Encke's method */ -class EnckeOrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEquation<6> { +class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquation<6> { public: /** * @fn EnckeOrbitPropagation diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index c8fedaf7d..fc15b96d3 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -13,7 +13,7 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, RelativeOrbitUpdateMethod update_method, RelativeOrbitModel relative_dynamics_model_type, StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), - libra::OrdinaryDifferentialEquation<6>(time_step_s), + math::OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), reference_spacecraft_id_(reference_spacecraft_id), update_method_(update_method), diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index eaa1e56cd..82560566c 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -17,7 +17,7 @@ * @class RelativeOrbit * @brief Class to propagate relative orbit */ -class RelativeOrbit : public Orbit, public libra::OrdinaryDifferentialEquation<6> { +class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> { public: /** * @enum RelativeOrbitUpdateMethod diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index 5291d7e56..fde677ddd 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -15,7 +15,7 @@ * @class Rk4OrbitPropagation * @brief Class to propagate spacecraft orbit with Runge-Kutta-4 method */ -class Rk4OrbitPropagation : public Orbit, public libra::OrdinaryDifferentialEquation<6> { +class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquation<6> { public: /** * @fn Rk4OrbitPropagation diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index 90496a7cf..5e2ef417e 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -15,7 +15,7 @@ * @brief Class to calculate random wark value */ template -class RandomWalk : public libra::OrdinaryDifferentialEquation { +class RandomWalk : public math::OrdinaryDifferentialEquation { public: /** * @fn RandomWalk diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index 441d05a5b..c316a3aab 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -11,7 +11,7 @@ template RandomWalk::RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit) - : libra::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { + : math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { // Set standard deviation for (size_t i = 0; i < N; ++i) { normal_randomizer_[i].SetParameters(0.0, standard_deviation[i], global_randomization.MakeSeed()); From 8523ab33f9c39fa2567e25889c1dbff829270d52 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:49:07 +0900 Subject: [PATCH 238/456] Replace using namespace libra to using namespace math --- src/components/real/aocs/star_sensor.cpp | 2 +- src/components/real/mission/telescope.cpp | 2 +- src/dynamics/thermal/heatload.cpp | 2 +- src/dynamics/thermal/node.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 33d027d98..60a10d7a5 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -14,7 +14,7 @@ #include using namespace std; -using namespace libra; +using namespace math; StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index f04989be3..f37ea5d97 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -11,7 +11,7 @@ #include using namespace std; -using namespace libra; +using namespace math; Telescope::Telescope(ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, diff --git a/src/dynamics/thermal/heatload.cpp b/src/dynamics/thermal/heatload.cpp index c182e4ecb..3d01aad08 100644 --- a/src/dynamics/thermal/heatload.cpp +++ b/src/dynamics/thermal/heatload.cpp @@ -5,7 +5,7 @@ #include using namespace std; -using namespace libra; +using namespace math; Heatload::Heatload(int node_id, std::vector time_table_s, std::vector internal_heatload_table_W) : node_id_(node_id), time_table_s_(time_table_s), internal_heatload_table_W_(internal_heatload_table_W) { diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index c40038d5f..b34958a68 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -10,7 +10,7 @@ #include using namespace std; -using namespace libra; +using namespace math; Node::Node(const size_t node_id, const string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b) From 55a392e44f6372fe118e03305fc35b34cb450a21 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 09:54:16 +0900 Subject: [PATCH 239/456] Fix to add math:: --- src/components/real/mission/telescope.cpp | 2 +- .../ode_attitude_with_cantilever_vibration.hpp | 2 +- .../numerical_integration/dormand_prince_5.hpp | 2 +- .../dormand_prince_5_implementation.hpp | 4 ++-- .../embedded_runge_kutta_implementation.hpp | 6 +++--- .../numerical_integration/interface_ode.hpp | 2 +- .../numerical_integration/numerical_integrator.hpp | 10 +++++----- src/math_physics/numerical_integration/runge_kutta.hpp | 2 +- .../numerical_integration/runge_kutta_4.hpp | 2 +- .../numerical_integration/runge_kutta_fehlberg.hpp | 2 +- .../runge_kutta_fehlberg_implementation.hpp | 8 ++++---- .../numerical_integration/runge_kutta_template.hpp | 4 ++-- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index f37ea5d97..31bc2919f 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -94,7 +94,7 @@ void Telescope::MainRoutine(const int time_count) { bool Telescope::JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle) { math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); - double angle_rad = libra::CalcAngleTwoVectors_rad(target_b, sight_b); + double angle_rad = math::CalcAngleTwoVectors_rad(target_b, sight_b); if (angle_rad < forbidden_angle) { return true; } else diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index b5854b344..b4e92bdcd 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -69,7 +69,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } } - Vector<13> DerivativeFunction(const double time_s, const Vector<13>& state) const override { + math::Vector<13> DerivativeFunction(const double time_s, const math::Vector<13>& state) const override { UNUSED(time_s); math::Vector<13> output; diff --git a/src/math_physics/numerical_integration/dormand_prince_5.hpp b/src/math_physics/numerical_integration/dormand_prince_5.hpp index f8198e509..ac9efd29f 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5.hpp @@ -33,7 +33,7 @@ class DormandPrince5 : public EmbeddedRungeKutta { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - Vector CalcInterpolationState(const double sigma) const override; + math::Vector CalcInterpolationState(const double sigma) const override; private: std::vector> coefficients_; //!< Coefficients to calculate interpolation weights diff --git a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp index 8cfbe77de..ae04fb70b 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp @@ -123,10 +123,10 @@ DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde } template -Vector DormandPrince5::CalcInterpolationState(const double sigma) const { +math::Vector DormandPrince5::CalcInterpolationState(const double sigma) const { std::vector interpolation_weights = CalcInterpolationWeights(sigma); - Vector interpolation_state = this->previous_state_; + math::Vector interpolation_state = this->previous_state_; for (size_t i = 0; i < this->number_of_stages_; i++) { interpolation_state = interpolation_state + (sigma * this->step_width_ * interpolation_weights[i]) * this->slope_[i]; } diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp index be93a83df..7d9bfbb69 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp @@ -14,15 +14,15 @@ void EmbeddedRungeKutta::Integrate() { this->CalcSlope(); this->previous_state_ = this->current_state_; - Vector lower_current_state = this->current_state_; //!< eta in the equation - Vector higher_current_state = this->current_state_; //!< eta_hat in the equation + math::Vector lower_current_state = this->current_state_; //!< eta in the equation + math::Vector higher_current_state = this->current_state_; //!< eta_hat in the equation for (size_t i = 0; i < this->number_of_stages_; i++) { lower_current_state = lower_current_state + this->weights_[i] * this->step_width_ * this->slope_[i]; higher_current_state = higher_current_state + higher_order_weights_[i] * this->step_width_ * this->slope_[i]; } // Error evaluation - Vector truncation_error = lower_current_state - higher_current_state; + math::Vector truncation_error = lower_current_state - higher_current_state; local_truncation_error_ = truncation_error.CalcNorm(); // State update diff --git a/src/math_physics/numerical_integration/interface_ode.hpp b/src/math_physics/numerical_integration/interface_ode.hpp index ca6f037f6..44f9e11fc 100644 --- a/src/math_physics/numerical_integration/interface_ode.hpp +++ b/src/math_physics/numerical_integration/interface_ode.hpp @@ -24,7 +24,7 @@ class InterfaceOde { * @param [in] state: State vector * @return Differentiated value of state vector */ - virtual Vector DerivativeFunction(const double independent_variable, const Vector& state) const = 0; + virtual math::Vector DerivativeFunction(const double independent_variable, const math::Vector& state) const = 0; }; } // namespace libra::numerical_integration diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 296a57eaa..7955dadff 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -44,7 +44,7 @@ class NumericalIntegrator { * @fn SetState * @brief Set state information */ - inline void SetState(const double independent_variable, const Vector& state) { + inline void SetState(const double independent_variable, const math::Vector& state) { current_independent_variable_ = independent_variable; current_state_ = state; previous_state_ = state; @@ -54,7 +54,7 @@ class NumericalIntegrator { * @fn GetState * @brief Return current state vector */ - inline const Vector& GetState() const { return current_state_; } + inline const math::Vector& GetState() const { return current_state_; } /** * @fn CalcInterpolationState @@ -62,7 +62,7 @@ class NumericalIntegrator { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - virtual Vector CalcInterpolationState(const double sigma) const = 0; + virtual math::Vector CalcInterpolationState(const double sigma) const = 0; protected: // Settings @@ -71,8 +71,8 @@ class NumericalIntegrator { // States const InterfaceOde& ode_; //!< Ordinary differential equation double current_independent_variable_; //!< Latest value of independent variable - Vector current_state_; //!< Latest state vector - Vector previous_state_; //!< Previous state vector + math::Vector current_state_; //!< Latest state vector + math::Vector previous_state_; //!< Previous state vector }; } // namespace libra::numerical_integration diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index af89d2254..4b6f186bd 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -46,7 +46,7 @@ class RungeKutta : public NumericalIntegrator { std::vector nodes_; //!< Nodes vector for general RK (c vector in the equation) std::vector weights_; //!< Weights vector for general RK (b vector in the equation) std::vector> rk_matrix_; //!< Runge-Kutta matrix for general RK (a matrix in the equation) - std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) + std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) /** * @fn CalcSlope diff --git a/src/math_physics/numerical_integration/runge_kutta_4.hpp b/src/math_physics/numerical_integration/runge_kutta_4.hpp index 50942186d..f29e248a0 100644 --- a/src/math_physics/numerical_integration/runge_kutta_4.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_4.hpp @@ -45,7 +45,7 @@ class RungeKutta4 : public RungeKutta { } // We did not implement the interpolation for RK4 - Vector CalcInterpolationState(const double sigma) const override { + math::Vector CalcInterpolationState(const double sigma) const override { UNUSED(sigma); return this->current_state_; } diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp index 756088baf..7b6596f79 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp @@ -29,7 +29,7 @@ class RungeKuttaFehlberg : public EmbeddedRungeKutta { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - Vector CalcInterpolationState(const double sigma) const override; + math::Vector CalcInterpolationState(const double sigma) const override; private: /** diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp index d8dd17724..25a7eacc1 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp @@ -64,15 +64,15 @@ RungeKuttaFehlberg::RungeKuttaFehlberg(const double step_width, const Interfa } template -Vector RungeKuttaFehlberg::CalcInterpolationState(const double sigma) const { +math::Vector RungeKuttaFehlberg::CalcInterpolationState(const double sigma) const { // Calc k7 (slope after state update) - Vector state_7 = + math::Vector state_7 = this->previous_state_ + this->step_width_ * (1.0 / 6.0 * this->slope_[0] + 1.0 / 6.0 * this->slope_[4] + 2.0 / 3.0 * this->slope_[5]); - Vector k7 = this->ode_.DerivativeFunction(this->current_independent_variable_, state_7); + math::Vector k7 = this->ode_.DerivativeFunction(this->current_independent_variable_, state_7); std::vector interpolation_weights = CalcInterpolationWeights(sigma); - Vector interpolation_state = this->previous_state_; + math::Vector interpolation_state = this->previous_state_; for (size_t i = 0; i < this->number_of_stages_; i++) { interpolation_state = interpolation_state + (sigma * this->step_width_ * interpolation_weights[i]) * this->slope_[i]; } diff --git a/src/math_physics/numerical_integration/runge_kutta_template.hpp b/src/math_physics/numerical_integration/runge_kutta_template.hpp index f1a5edbab..9e3cd5316 100644 --- a/src/math_physics/numerical_integration/runge_kutta_template.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_template.hpp @@ -22,10 +22,10 @@ void RungeKutta::Integrate() { template void RungeKutta::CalcSlope() { - slope_.assign(number_of_stages_, Vector(0.0)); + slope_.assign(number_of_stages_, math::Vector(0.0)); for (size_t i = 0; i < number_of_stages_; i++) { - Vector state = this->current_state_; + math::Vector state = this->current_state_; for (size_t j = 0; j < i; j++) { state = state + rk_matrix_[i][j] * this->step_width_ * slope_[j]; } From fd83030a5b5029e9dbe03880dc2b34921c472629 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:24:19 +0900 Subject: [PATCH 240/456] Fix format --- CMakeLists.txt | 2 +- src/components/base/component.hpp | 4 ++-- .../base/interface_gpio_component.hpp | 2 +- src/components/base/sensor.hpp | 6 +++--- .../ideal/angular_velocity_observer.hpp | 2 +- src/components/ports/hils_i2c_target_port.hpp | 6 +++--- src/components/real/aocs/gnss_receiver.hpp | 8 ++++---- src/components/real/aocs/magnetometer.hpp | 2 +- src/components/real/aocs/magnetorquer.cpp | 12 +++++------ src/components/real/aocs/magnetorquer.hpp | 10 +++++----- .../aocs/mtq_magnetometer_interference.hpp | 2 +- src/components/real/aocs/reaction_wheel.hpp | 8 ++++---- .../real/aocs/reaction_wheel_jitter.hpp | 2 +- src/components/real/aocs/star_sensor.hpp | 14 ++++++------- src/components/real/aocs/sun_sensor.hpp | 2 +- .../antenna_radiation_pattern.hpp | 4 ++-- src/components/real/mission/telescope.hpp | 2 +- .../real/power/solar_array_panel.hpp | 2 +- .../real/propulsion/simple_thruster.cpp | 2 +- src/disturbances/disturbance.hpp | 4 ++-- src/disturbances/geopotential.hpp | 2 +- src/disturbances/gravity_gradient.cpp | 3 +-- src/disturbances/lunar_gravity_field.hpp | 2 +- src/disturbances/magnetic_disturbance.hpp | 2 +- src/disturbances/surface_force.hpp | 2 +- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.hpp | 8 ++++---- src/dynamics/attitude/attitude_rk4.cpp | 3 +-- src/dynamics/attitude/attitude_rk4.hpp | 7 +++---- .../attitude_with_cantilever_vibration.cpp | 2 +- .../attitude_with_cantilever_vibration.hpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 9 ++++----- src/dynamics/attitude/controlled_attitude.hpp | 8 ++++---- ...ode_attitude_with_cantilever_vibration.hpp | 8 ++++---- .../orbit/encke_orbit_propagation.hpp | 2 +- src/dynamics/orbit/orbit.hpp | 6 +++--- src/dynamics/orbit/relative_orbit.cpp | 6 ++---- src/environment/global/earth_rotation.hpp | 8 ++++---- src/environment/global/gnss_satellites.hpp | 2 +- src/environment/global/moon_rotation.hpp | 2 +- src/environment/local/geomagnetic_field.hpp | 4 ++-- src/math_physics/gnss/antex_file_reader.hpp | 2 +- src/math_physics/gnss/sp3_file_reader.hpp | 20 +++++++++---------- .../numerical_integrator.hpp | 6 +++--- .../numerical_integration/runge_kutta.hpp | 4 ++-- .../optics/gaussian_beam_base.cpp | 4 +--- .../optics/gaussian_beam_base.hpp | 6 +++--- src/math_physics/orbit/kepler_orbit.hpp | 6 +++--- ...standard_linear_congruential_generator.hpp | 2 +- ...ar_congruential_generator_with_shuffle.hpp | 2 +- .../randomization/normal_randomization.hpp | 2 +- .../randomization/random_walk.hpp | 2 +- .../initialize_monte_carlo_parameters.cpp | 6 +++--- .../simulation_object.cpp | 3 +-- .../relative_information.hpp | 2 +- .../structure/kinematics_parameters.hpp | 4 ++-- .../structure/residual_magnetic_moment.hpp | 2 +- .../spacecraft/structure/surface.hpp | 10 +++++----- 58 files changed, 130 insertions(+), 139 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4426f1e9..63925acf7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ option(BUILD_64BIT "Build 64bit" OFF) option(GOOGLE_TEST "Execute GoogleTest" OFF) # Mac user setting -option(APPLE_SILICON "Build with Apple Silicon" OFF) +option(APPLE_SILICON "Build with Apple Silicon" ON) # Force build with 64bit for APPLE if(APPLE) option(BUILD_64BIT "Build 64bit" ON) diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 91432e1f3..dac70324f 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -76,13 +76,13 @@ class Component : public ITickable { * @brief Pure virtual function used to calculate high-frequency disturbances(e.g. RW jitter) * @note Override only when high-frequency disturbances need to be calculated. */ - virtual void FastUpdate(){}; + virtual void FastUpdate() {}; /** * @fn PowerOffRoutine * @brief Pure virtual function executed when the power switch is off. */ - virtual void PowerOffRoutine(){}; + virtual void PowerOffRoutine() {}; ClockGenerator* clock_generator_; //!< Clock generator PowerPort* power_port_; //!< Power port diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 7ed129e7b..8f9d98519 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -16,7 +16,7 @@ class IGPIOCompo { * @fn ~IGPIOCompo * @brief Destructor */ - virtual ~IGPIOCompo(){}; + virtual ~IGPIOCompo() {}; /** * @fn GpioStateChanged diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 382cb6f1f..883050b19 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -52,9 +52,9 @@ class Sensor { math::Vector Measure(const math::Vector true_value_c); private: - math::Matrix scale_factor_; //!< Scale factor matrix - math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + math::Matrix scale_factor_; //!< Scale factor matrix + math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame libra::NormalRand normal_random_noise_c_[N]; //!< Normal random RandomWalk random_walk_noise_c_; //!< Random Walk diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 82d509f5d..3b162a36a 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -61,7 +61,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg protected: math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] - const Attitude& attitude_; //!< Dynamics information + const Attitude& attitude_; //!< Dynamics information }; /** diff --git a/src/components/ports/hils_i2c_target_port.hpp b/src/components/ports/hils_i2c_target_port.hpp index 08437cbc4..16bee3cd4 100644 --- a/src/components/ports/hils_i2c_target_port.hpp +++ b/src/components/ports/hils_i2c_target_port.hpp @@ -96,9 +96,9 @@ class HilsI2cTargetPort : public HilsUartPort { int GetStoredFrameCounter(); private: - unsigned char max_register_number_ = 0xff; //!< Maximum register number - unsigned char saved_register_address_ = 0x00; //!< Saved register address - unsigned int stored_frame_counter_ = 0; //!< Send a few frames of telemetry to the converter in advance. + unsigned char max_register_number_ = 0xff; //!< Maximum register number + unsigned char saved_register_address_ = 0x00; //!< Saved register address + unsigned int stored_frame_counter_ = 0; //!< Send a few frames of telemetry to the converter in advance. /** @brief Device register: < register address, value> **/ std::map device_registers_; diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 1e1cece20..d418c01d9 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -133,14 +133,14 @@ class GnssReceiver : public Component, public ILoggable { // Antenna math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) - double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] - AntennaModel antenna_model_; //!< Antenna model + double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] + AntennaModel antenna_model_; //!< Antenna model // Simple position observation libra::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] libra::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 1c16eaa49..deaccf1aa 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -99,7 +99,7 @@ class Magnetometer : public Component, public Sensor, pu protected: math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] - unsigned int sensor_id_ = 0; //!< Sensor ID + unsigned int sensor_id_ = 0; //!< Sensor ID math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 1aab2c35d..0f1a2bb22 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -13,9 +13,9 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const math::Vector& max_magnetic_moment_c_Am2, - const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, + const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), @@ -35,9 +35,9 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const math::Vector& max_magnetic_moment_c_Am2, - const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, + const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 373f8a98e..d424e0c4c 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -45,8 +45,8 @@ class Magnetorquer : public Component, public ILoggable { const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, - const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); + const math::Vector& random_walk_limit_c_Am2, const math::Vector& normal_random_standard_deviation_c_Am2, + const GeomagneticField* geomagnetic_field); /** * @fn Magnetorquer * @brief Constructor with power port @@ -121,8 +121,8 @@ class Magnetorquer : public Component, public ILoggable { inline const math::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; protected: - const int component_id_ = 0; //!< Actuator ID - const double kConvertNanoT2T = 1.0e-9; //!< Constant to convert nT to T + const int component_id_ = 0; //!< Actuator ID + const double kConvertNanoT2T = 1.0e-9; //!< Constant to convert nT to T math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] @@ -132,7 +132,7 @@ class Magnetorquer : public Component, public ILoggable { math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] - math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] + math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] RandomWalk random_walk_c_Am2_; //!< Random walk noise libra::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index 7c93c64d8..fea4824eb 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -30,7 +30,7 @@ class MtqMagnetometerInterference { void UpdateInterference(void); protected: - size_t polynomial_degree_; //!< Polynomial degree + size_t polynomial_degree_; //!< Polynomial degree std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise math::Vector<3> previous_added_bias_c_nT_{0.0}; diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index a85321264..dde525ab8 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -170,10 +170,10 @@ class ReactionWheel : public Component, public ILoggable { protected: // Fixed Parameters - const int component_id_; //!< Actuator ID - const double rotor_inertia_kgm2_; //!< Inertia of RW rotor [kgm2] - const double max_torque_Nm_; //!< Maximum output torque [Nm] - const double max_velocity_rpm_; //!< Maximum angular velocity of rotor [rpm] + const int component_id_; //!< Actuator ID + const double rotor_inertia_kgm2_; //!< Inertia of RW rotor [kgm2] + const double max_torque_Nm_; //!< Maximum output torque [Nm] + const double max_velocity_rpm_; //!< Maximum angular velocity of rotor [rpm] const math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame const math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index 9038ce36f..dbf2e24c5 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -80,7 +80,7 @@ class ReactionWheelJitter { std::vector> radial_force_harmonics_coefficients_; //!< Coefficients for radial force harmonics std::vector> radial_torque_harmonics_coefficients_; //!< Coefficients for radial torque harmonics - double update_interval_s_; //!< Jitter update interval [sec] + double update_interval_s_; //!< Jitter update interval [sec] math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame double structural_resonance_frequency_Hz_; //!< Frequency of structural resonance [Hz] diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 198db1192..eba0f2ae9 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -107,7 +107,7 @@ class StarSensor : public Component, public ILoggable { protected: // StarSensor general parameters - const int component_id_; //!< Sensor ID + const int component_id_; //!< Sensor ID math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame math::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame @@ -120,13 +120,13 @@ class StarSensor : public Component, public ILoggable { libra::NormalRand sight_direction_noise_; //!< Random noise for sight direction // Delay emulation parameters - int max_delay_; //!< Max delay + int max_delay_; //!< Max delay std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation - int buffer_position_; //!< Buffer position - double step_time_s_; //!< Step time for delay calculation [sec] - unsigned int output_delay_; //!< Output delay [0, max_delay_] [step_sec] - unsigned int output_interval_; //!< Output interval [step_sec] - std::size_t update_count_; //!< Output update counter + int buffer_position_; //!< Buffer position + double step_time_s_; //!< Step time for delay calculation [sec] + unsigned int output_delay_; //!< Output delay [0, max_delay_] [step_sec] + unsigned int output_interval_; //!< Output interval [step_sec] + std::size_t update_count_; //!< Output update counter // observation error parameters bool error_flag_; //!< Error flag. true: Error, false: No error diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 86547a399..7488e2513 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -88,7 +88,7 @@ class SunSensor : public Component, public ILoggable { protected: const int component_id_; //!< Sensor ID - math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) double intensity_lower_threshold_percent_; //!< If the light intensity becomes smaller than this, it becomes impossible to get the sun direction math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index 393879b9b..422d168ab 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -54,8 +54,8 @@ class AntennaRadiationPattern { double GetGain_dBi(const double theta_rad, const double phi_rad) const; private: - size_t length_theta_ = 360; //!< Length of grid for theta direction - size_t length_phi_ = 181; //!< Length of grid for phi direction + size_t length_theta_ = 360; //!< Length of grid for theta direction + size_t length_phi_ = 181; //!< Length of grid for phi direction double theta_max_rad_ = math::tau; //!< Maximum value of theta double phi_max_rad_ = math::pi; //!< Maximum value of phi diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 949d5b50e..dec83517b 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -22,7 +22,7 @@ * @brief Information of stars in the telescope's field of view */ struct Star { - HipparcosData hipparcos_data; //!< Hipparcos data + HipparcosData hipparcos_data; //!< Hipparcos data math::Vector<2> position_image_sensor; //!< Position of image sensor }; diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index e7cd68377..b384d6a00 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -111,7 +111,7 @@ class SolarArrayPanel : public Component, public ILoggable { const int number_of_series_; //!< Number of series connected solar cells const int number_of_parallel_; //!< Number of parallel connected solar cells const double cell_area_m2_; //!< Solar cell area [m^2] - const math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame + const math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame const double cell_efficiency_; //!< Power generation efficiency of solar cell const double transmission_efficiency_; //!< Efficiency of transmission to PCU diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index ac580bae3..70c5f2a1b 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -113,7 +113,7 @@ math::Vector<3> SimpleThruster::CalcThrustDirection() { math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); - math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion + math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion thrust_dir_b_true = err_rot.FrameConversion(thrust_dir_b_true); // Add error } diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index b59bc7735..6cc662728 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -83,8 +83,8 @@ class Disturbance : public ILoggable { virtual inline bool IsAttitudeDependent() { return is_attitude_dependent_; } protected: - bool is_calculation_enabled_; //!< Flag to calculate the disturbance - bool is_attitude_dependent_; //!< Flag to show the disturbance depends on attitude information + bool is_calculation_enabled_; //!< Flag to calculate the disturbance + bool is_attitude_dependent_; //!< Flag to show the disturbance depends on attitude information math::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] math::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] math::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 8eee6692d..7c2bdaaed 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -68,7 +68,7 @@ class Geopotential : public Disturbance { // debug math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] - double time_ms_ = 0.0; //!< Calculation time [ms] + double time_ms_ = 0.0; //!< Calculation time [ms] /** * @fn ReadCoefficientsEgm96 diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 853aa40b9..b52b4bee5 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -23,8 +23,7 @@ void GravityGradient::Update(const LocalEnvironment& local_environment, const Dy dynamics.GetAttitude().GetInertiaTensor_b_kgm2()); } -math::Vector<3> GravityGradient::CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, - const math::Matrix<3, 3> inertia_tensor_b_kgm2) { +math::Vector<3> GravityGradient::CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2) { double r_norm_m = earth_position_from_sc_b_m.CalcNorm(); math::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector u_b /= r_norm_m; diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 5818b619f..2993c8bf0 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -72,7 +72,7 @@ class LunarGravityField : public Disturbance { // debug math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] - double time_ms_ = 0.0; //!< Calculation time [ms] + double time_ms_ = 0.0; //!< Calculation time [ms] /** * @fn ReadCoefficientsGrgm1200a diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 38683a33b..80aea05e3 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -50,7 +50,7 @@ class MagneticDisturbance : public Disturbance { private: const double kMagUnit_ = 1.0e-9; //!< Constant value to change the unit [nT] -> [T] - math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] + math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] const ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters /** diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index 49e4bd46d..2fa4a0ac3 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -37,7 +37,7 @@ class SurfaceForce : public Disturbance { protected: // Spacecraft Structure parameters - const std::vector& surfaces_; //!< List of surfaces + const std::vector& surfaces_; //!< List of surfaces const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] // Internal calculated variables diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 9d95d2ed1..12b9f8b68 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -42,7 +42,7 @@ class ThirdBodyGravity : public Disturbance { virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); private: - std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances + std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] // Override classes for ILoggable diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index f3463e4a8..130040b88 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -114,8 +114,8 @@ class Attitude : public ILoggable, public SimulationObject { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); protected: - bool is_calc_enabled_ = true; //!< Calculation flag - double propagation_step_s_; //!< Propagation step [sec] + bool is_calc_enabled_ = true; //!< Calculation flag + double propagation_step_s_; //!< Propagation step [sec] math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] math::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] @@ -125,8 +125,8 @@ class Attitude : public ILoggable, public SimulationObject { math::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] math::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] math::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] - double angular_momentum_total_Nms_; //!< Norm of total angular momentum [Nms] - double kinetic_energy_J_; //!< Rotational Kinetic Energy of Spacecraft [J] + double angular_momentum_total_Nms_; //!< Norm of total angular momentum [Nms] + double kinetic_energy_J_; //!< Rotational Kinetic Energy of Spacecraft [J] /** * @fn CalcAngularMomentum diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 3f20b3b82..5ff72c44e 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -39,8 +39,7 @@ void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator void AttitudeRk4::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - math::Matrix<3, 3> dot_inertia_tensor = - (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); + math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); torque_inertia_tensor_change_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 9c5d58bf2..5fe31d669 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -24,9 +24,8 @@ class AttitudeRk4 : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, - const std::string& simulation_object_name = "attitude"); + AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 * @brief Destructor @@ -48,7 +47,7 @@ class AttitudeRk4 : public Attitude { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); private: - double current_propagation_time_s_; //!< current time [sec] + double current_propagation_time_s_; //!< current time [sec] math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] math::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index f52da403b..5058b9a67 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -82,7 +82,7 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); math::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, - quaternion_i2b_, euler_angular_cantilever_rad_); + quaternion_i2b_, euler_angular_cantilever_rad_); numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { numerical_integrator_.GetIntegrator()->Integrate(); diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 91fa9948d..388542783 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -69,7 +69,7 @@ class AttitudeWithCantileverVibration : public Attitude { virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); private: - double current_propagation_time_s_; //!< current time [sec] + double current_propagation_time_s_; //!< current time [sec] math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index c96d23a6f..ae12dc2e7 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -7,11 +7,10 @@ #include #include -ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, - const math::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, - const math::Vector<3> sub_target_direction_b, const math::Matrix<3, 3>& inertia_tensor_kgm2, - const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, - const std::string& simulation_object_name) +ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, + const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, + const Orbit* orbit, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), main_mode_(main_mode), sub_mode_(sub_mode), diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index a033dc973..ce26738d8 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -99,16 +99,16 @@ class ControlledAttitude : public Attitude { virtual void Propagate(const double end_time_s); private: - AttitudeControlMode main_mode_; //!< Main control mode - AttitudeControlMode sub_mode_; //!< Sub control mode + AttitudeControlMode main_mode_; //!< Main control mode + AttitudeControlMode sub_mode_; //!< Sub control mode math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame - double previous_calc_time_s_ = -1.0; //!< Previous time of velocity calculation [sec] + double previous_calc_time_s_ = -1.0; //!< Previous time of velocity calculation [sec] math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] const double kMinDirectionAngle_rad = 30.0 * math::deg_to_rad; //!< Minimum angle b/w main and sub direction - // TODO Change with ini file + // TODO Change with ini file // Inputs const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index b4e92bdcd..4aaf69139 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -29,8 +29,8 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @param [in] euler_angule_cantilever_rad: Euler angle of the cantilever@ body-fixed frame [rad] */ math::Vector<13> SetStateFromPhysicalQuantities(const math::Vector<3> angular_velocity_b_rad_s, - const math::Vector<3> angular_velocity_cantilever_rad_s, const math::Quaternion quaternion_i2b, - const math::Vector<3> euler_angule_cantilever_rad) const { + const math::Vector<3> angular_velocity_cantilever_rad_s, const math::Quaternion quaternion_i2b, + const math::Vector<3> euler_angule_cantilever_rad) const { math::Vector<13> state; for (size_t i = 0; i < 3; i++) { state[i] = angular_velocity_b_rad_s[i]; @@ -210,8 +210,8 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } protected: - double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient - double spring_coefficient_ = 0.0; //!< Spring coefficient + double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient + double spring_coefficient_ = 0.0; //!< Spring coefficient math::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] math::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] math::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index 9c6a3bc5b..a6abce7e8 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -65,7 +65,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu // reference orbit math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] - KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element + KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index ac37fbc18..ced6b516c 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -191,8 +191,8 @@ class Orbit : public ILoggable { bool is_calc_enabled_ = false; //!< Calculate flag OrbitPropagateMode propagate_mode_; //!< Propagation mode - math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] - math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] + math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] + math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] @@ -200,7 +200,7 @@ class Orbit : public ILoggable { math::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] math::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] - //!< NOTE: Clear to zero at the end of the Propagate function + //!< NOTE: Clear to zero at the end of the Propagate function // Frame Conversion TODO: consider other planet /** diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index fc15b96d3..5bf3270e3 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -39,8 +39,7 @@ void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, ma spacecraft_acceleration_i_m_s2_ *= 0.0; math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_velocity_i = - relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; @@ -109,8 +108,7 @@ void RelativeOrbit::Propagate(const double end_time_s, const double current_time } math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_velocity_i = - relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index 2376ff434..c12af3f2f 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -54,12 +54,12 @@ class EarthRotation { inline const math::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; private: - double d_psi_rad_; //!< Nutation in obliquity [rad] - double d_epsilon_rad_; //!< Nutation in longitude [rad] - double epsilon_rad_; //!< Mean obliquity of the ecliptic [rad] + double d_psi_rad_; //!< Nutation in obliquity [rad] + double d_epsilon_rad_; //!< Nutation in longitude [rad] + double epsilon_rad_; //!< Mean obliquity of the ecliptic [rad] math::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF math::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF - EarthRotationMode rotation_mode_; //!< Designation of dynamics model + EarthRotationMode rotation_mode_; //!< Designation of dynamics model // Definitions of coefficients // They are handling as constant values diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 723cb75d9..a3021e64c 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -120,7 +120,7 @@ class GnssSatellites : public ILoggable { size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation EpochTime current_epoch_time_; //!< The last updated time - std::vector orbit_; //!< GNSS satellite orbit with interpolation + std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation // References diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index ba4fb2947..fa9506757 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -56,7 +56,7 @@ class MoonRotation { inline const math::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; private: - MoonRotationMode mode_; //!< Rotation mode + MoonRotationMode mode_; //!< Rotation mode math::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) const CelestialInformation &celestial_information_; //!< Celestial Information to get moon orbit diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 3eabd46c5..f7305e0e0 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -70,8 +70,8 @@ class GeomagneticField : public ILoggable { virtual std::string GetLogValue() const; private: - math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] - math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] + math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] + math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] double random_walk_standard_deviation_nT_; //!< Standard deviation of Random Walk [nT] double random_walk_limit_nT_; //!< Limit of Random Walk [nT] double white_noise_standard_deviation_nT_; //!< Standard deviation of white noise [nT] diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 0cbf59d44..ef2ef64c4 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -164,7 +164,7 @@ class AntexPhaseCenterData { private: std::string frequency_name_ = ""; //!< Frequency name - math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] + math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] AntexGridDefinition grid_information_; //!< Grid information std::vector> phase_center_variation_matrix_mm_; //!< Phase center variation [mm] (column, row definition: [azimuth][zenith]) }; diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 6b12e0be5..4b7a017eb 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -92,15 +92,15 @@ struct Sp3Header { * @note The coordinate system of the position is defined in the SP3 header */ struct Sp3PositionClock { - std::string satellite_id_; //!< GNSS satellite ID + std::string satellite_id_; //!< GNSS satellite ID math::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] - double clock_us_ = SP3_BAD_CLOCK_VALUE; //!< Satellite clock offset [us] + double clock_us_ = SP3_BAD_CLOCK_VALUE; //!< Satellite clock offset [us] math::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] - double clock_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] - bool clock_event_flag_ = false; //!< true when clock discontinuity is happened - bool clock_prediction_flag_ = false; //!< true when clock data is predicted - bool maneuver_flag_ = false; //!< true when orbit maneuver is happened in last 50 minutes - bool orbit_prediction_flag_ = false; //!< true when orbit data is predicted + double clock_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] + bool clock_event_flag_ = false; //!< true when clock discontinuity is happened + bool clock_prediction_flag_ = false; //!< true when clock data is predicted + bool maneuver_flag_ = false; //!< true when orbit maneuver is happened in last 50 minutes + bool orbit_prediction_flag_ = false; //!< true when orbit data is predicted }; /** @@ -127,11 +127,11 @@ struct Sp3PositionClockCorrelation { * @note The coordinate system of the position is defined in the SP3 header */ struct Sp3VelocityClockRate { - std::string satellite_id_; //!< GNSS satellite ID + std::string satellite_id_; //!< GNSS satellite ID math::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] - double clock_rate_ = 0.0; //!< Satellite clock offset change rate [-] + double clock_rate_ = 0.0; //!< Satellite clock offset change rate [-] math::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] - double clock_rate_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] + double clock_rate_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] }; /** diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 7955dadff..e908a4ad8 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -32,7 +32,7 @@ class NumericalIntegrator { * @fn ~NumericalIntegrator * @brief Destructor */ - inline virtual ~NumericalIntegrator(){}; + inline virtual ~NumericalIntegrator() {}; /** * @fn Integrate @@ -71,8 +71,8 @@ class NumericalIntegrator { // States const InterfaceOde& ode_; //!< Ordinary differential equation double current_independent_variable_; //!< Latest value of independent variable - math::Vector current_state_; //!< Latest state vector - math::Vector previous_state_; //!< Previous state vector + math::Vector current_state_; //!< Latest state vector + math::Vector previous_state_; //!< Previous state vector }; } // namespace libra::numerical_integration diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index 4b6f186bd..6c889ada7 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -29,7 +29,7 @@ class RungeKutta : public NumericalIntegrator { * @fn ~RungeKutta * @brief Destructor */ - inline virtual ~RungeKutta(){}; + inline virtual ~RungeKutta() {}; /** * @fn Integrate @@ -46,7 +46,7 @@ class RungeKutta : public NumericalIntegrator { std::vector nodes_; //!< Nodes vector for general RK (c vector in the equation) std::vector weights_; //!< Weights vector for general RK (b vector in the equation) std::vector> rk_matrix_; //!< Runge-Kutta matrix for general RK (a matrix in the equation) - std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) + std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) /** * @fn CalcSlope diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index ab4121afb..ba9a03e89 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -30,9 +30,7 @@ void GaussianBeamBase::SetTotalPower_W(const double total_power_W) { void GaussianBeamBase::SetPointingVector_i(const math::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } -void GaussianBeamBase::SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m) { - position_beam_waist_i_m_ = position_beam_waist_i_m; -} +void GaussianBeamBase::SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m) { position_beam_waist_i_m_ = position_beam_waist_i_m; } double GaussianBeamBase::CalcBeamWidthRadius_m(double distance_from_beam_waist_m) { double rayleigh_length_m = math::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index ae96c14e6..6b9721742 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -100,9 +100,9 @@ class GaussianBeamBase { double CalcIntensity_W_m2(double distance_from_beam_waist_m, double deviation_from_optical_axis_m); private: - double wavelength_m_; //!< Wavelength [m] - double radius_beam_waist_m_; //!< Radius of beam waist [m] - double total_power_W_; //!< Total power [W] + double wavelength_m_; //!< Wavelength [m] + double radius_beam_waist_m_; //!< Radius of beam waist [m] + double total_power_W_; //!< Total power [W] math::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index 6dc866a48..a19784a0d 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -57,9 +57,9 @@ class KeplerOrbit { math::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] private: - double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] - OrbitalElements oe_; //!< Orbital elements - double mean_motion_rad_s_; //!< Mean motion of the orbit [rad/s] + double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] + OrbitalElements oe_; //!< Orbital elements + double mean_motion_rad_s_; //!< Mean motion of the orbit [rad/s] math::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame /** diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp index 2e40e9afb..70b97a695 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp @@ -52,6 +52,6 @@ class MinimalStandardLcg { long seed_; //!< Seed of randomization }; -} // namespace math +} // namespace libra #endif // S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp index 3ece5e0bc..6c42dddba 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp @@ -58,6 +58,6 @@ class MinimalStandardLcgWithShuffle { double mixing_table_[kTableSize]; //!< Mixing table }; -} // namespace math +} // namespace libra #endif // S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_WITH_SHUFFLE_HPP_ diff --git a/src/math_physics/randomization/normal_randomization.hpp b/src/math_physics/randomization/normal_randomization.hpp index 93c73d783..962126a0c 100644 --- a/src/math_physics/randomization/normal_randomization.hpp +++ b/src/math_physics/randomization/normal_randomization.hpp @@ -106,6 +106,6 @@ class NormalRand { bool is_empty_; //!< Flag to show the holder_ has available value }; -} // namespace math +} // namespace libra #endif // S2E_LIBRARY_RANDOMIZATION_NORMAL_RANDOMIZATION_HPP_ diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index 5e2ef417e..befcd10de 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -36,7 +36,7 @@ class RandomWalk : public math::OrdinaryDifferentialEquation { virtual void DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs); private: - math::Vector limit_; //!< Limit of random walk + math::Vector limit_; //!< Limit of random walk libra::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index b568ff136..44d6c211a 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -166,8 +166,8 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, - double theta_min, double theta_max, double phi_min, double phi_max) { +void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, + double theta_max, double phi_min, double phi_max) { // r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); double theta = acos(cos(theta_min) - (cos(theta_min) - cos(theta_max)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); @@ -209,7 +209,7 @@ void InitializedMonteCarloParameters::CalcSphericalNormalNormal(math::Vector<3>& double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, - -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) + -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation double rotation_angle_of_mean_vec = InitializedMonteCarloParameters::Generate1dNormal(0.0, sigma_or_max_[1]); diff --git a/src/simulation/monte_carlo_simulation/simulation_object.cpp b/src/simulation/monte_carlo_simulation/simulation_object.cpp index c015a9dad..9f41f0e15 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.cpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.cpp @@ -38,7 +38,6 @@ void SimulationObject::GetInitializedMonteCarloParameterDouble(const MonteCarloS } void SimulationObject::GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, - std::string init_monte_carlo_parameter_name, - math::Quaternion& destination) const { + std::string init_monte_carlo_parameter_name, math::Quaternion& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterQuaternion(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index 0631cdc87..87a273641 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -138,7 +138,7 @@ class RelativeInformation : public ILoggable { std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] - std::vector> relative_distance_list_m_; //!< Relative distance list in unit [m] + std::vector> relative_distance_list_m_; //!< Relative distance list in unit [m] std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list /** diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index cab7abb00..ff91c6f01 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -24,7 +24,7 @@ class KinematicsParameters { * @fn ~KinematicsParameters * @brief Destructor */ - ~KinematicsParameters(){}; + ~KinematicsParameters() {}; // Getter /** @@ -82,7 +82,7 @@ class KinematicsParameters { private: math::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] - double mass_kg_; //!< Mass of the satellite [kg] + double mass_kg_; //!< Mass of the satellite [kg] math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 72000e51f..17b815466 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -25,7 +25,7 @@ class ResidualMagneticMoment { * @fn ~ResidualMagneticMoment * @brief Destructor */ - ~ResidualMagneticMoment(){}; + ~ResidualMagneticMoment() {}; // Getter /** diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 127c81028..f829ac0de 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -24,7 +24,7 @@ class Surface { * @fn ~Surface * @brief Destructor */ - ~Surface(){}; + ~Surface() {}; // Getter /** @@ -107,10 +107,10 @@ class Surface { private: math::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] math::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] - double area_m2_; //!< Area of the surface [m2] - double reflectivity_; //!< Total reflectivity for solar wavelength (1.0 - solar absorption) - double specularity_; //!< Ratio of specular reflection in the total reflected light - double air_specularity_; //!< Specularity for air drag + double area_m2_; //!< Area of the surface [m2] + double reflectivity_; //!< Total reflectivity for solar wavelength (1.0 - solar absorption) + double specularity_; //!< Ratio of specular reflection in the total reflected light + double air_specularity_; //!< Specularity for air drag }; #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_SURFACE_HPP_ From cd9fc1766bd24cd8c099c43137003c4d5b1d4d42 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:34:14 +0900 Subject: [PATCH 241/456] Fix format --- src/components/base/component.hpp | 4 ++-- src/components/base/interface_gpio_component.hpp | 2 +- .../numerical_integration/numerical_integrator_manager.hpp | 2 +- src/math_physics/numerical_integration/runge_kutta.hpp | 2 +- .../spacecraft/structure/residual_magnetic_moment.hpp | 2 +- src/simulation/spacecraft/structure/surface.hpp | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index dac70324f..91432e1f3 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -76,13 +76,13 @@ class Component : public ITickable { * @brief Pure virtual function used to calculate high-frequency disturbances(e.g. RW jitter) * @note Override only when high-frequency disturbances need to be calculated. */ - virtual void FastUpdate() {}; + virtual void FastUpdate(){}; /** * @fn PowerOffRoutine * @brief Pure virtual function executed when the power switch is off. */ - virtual void PowerOffRoutine() {}; + virtual void PowerOffRoutine(){}; ClockGenerator* clock_generator_; //!< Clock generator PowerPort* power_port_; //!< Power port diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 8f9d98519..7ed129e7b 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -16,7 +16,7 @@ class IGPIOCompo { * @fn ~IGPIOCompo * @brief Destructor */ - virtual ~IGPIOCompo() {}; + virtual ~IGPIOCompo(){}; /** * @fn GpioStateChanged diff --git a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp index 93e2c3d51..45cb0a519 100644 --- a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp @@ -54,7 +54,7 @@ class NumericalIntegratorManager { } } - ~NumericalIntegratorManager() {} + ~NumericalIntegratorManager(){} inline std::shared_ptr> GetIntegrator() const { return integrator_; } diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index 6c889ada7..cb972726c 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -29,7 +29,7 @@ class RungeKutta : public NumericalIntegrator { * @fn ~RungeKutta * @brief Destructor */ - inline virtual ~RungeKutta() {}; + inline virtual ~RungeKutta(){}; /** * @fn Integrate diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 17b815466..72000e51f 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -25,7 +25,7 @@ class ResidualMagneticMoment { * @fn ~ResidualMagneticMoment * @brief Destructor */ - ~ResidualMagneticMoment() {}; + ~ResidualMagneticMoment(){}; // Getter /** diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index f829ac0de..db54f219b 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -24,7 +24,7 @@ class Surface { * @fn ~Surface * @brief Destructor */ - ~Surface() {}; + ~Surface(){}; // Getter /** From 1846e23748960083cbddc12ae135fd3fb7bcc694 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:35:02 +0900 Subject: [PATCH 242/456] Revert CMake option --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 63925acf7..a4426f1e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ option(BUILD_64BIT "Build 64bit" OFF) option(GOOGLE_TEST "Execute GoogleTest" OFF) # Mac user setting -option(APPLE_SILICON "Build with Apple Silicon" ON) +option(APPLE_SILICON "Build with Apple Silicon" OFF) # Force build with 64bit for APPLE if(APPLE) option(BUILD_64BIT "Build 64bit" ON) From 956600a1b5d90219ff5938a19496a8c501028348 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:37:25 +0900 Subject: [PATCH 243/456] fix format --- src/math_physics/numerical_integration/numerical_integrator.hpp | 2 +- .../numerical_integration/numerical_integrator_manager.hpp | 2 +- src/simulation/spacecraft/structure/kinematics_parameters.hpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index e908a4ad8..1a12ed298 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -32,7 +32,7 @@ class NumericalIntegrator { * @fn ~NumericalIntegrator * @brief Destructor */ - inline virtual ~NumericalIntegrator() {}; + inline virtual ~NumericalIntegrator(){}; /** * @fn Integrate diff --git a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp index 45cb0a519..93e2c3d51 100644 --- a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp @@ -54,7 +54,7 @@ class NumericalIntegratorManager { } } - ~NumericalIntegratorManager(){} + ~NumericalIntegratorManager() {} inline std::shared_ptr> GetIntegrator() const { return integrator_; } diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index ff91c6f01..52818f018 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -24,7 +24,7 @@ class KinematicsParameters { * @fn ~KinematicsParameters * @brief Destructor */ - ~KinematicsParameters() {}; + ~KinematicsParameters(){}; // Getter /** From 99a952f056d58517cfa178fa5409a3ccd450a950 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:47:10 +0900 Subject: [PATCH 244/456] Rename libra::numerical_integration to numerical_integration --- .../attitude_with_cantilever_vibration.cpp | 2 +- .../attitude_with_cantilever_vibration.hpp | 4 +- ...ode_attitude_with_cantilever_vibration.hpp | 4 +- .../dormand_prince_5.hpp | 4 +- .../dormand_prince_5_implementation.hpp | 4 +- .../embedded_runge_kutta.hpp | 4 +- .../embedded_runge_kutta_implementation.hpp | 4 +- .../numerical_integration/interface_ode.hpp | 4 +- .../numerical_integrator.hpp | 4 +- .../numerical_integrator_manager.hpp | 4 +- .../numerical_integration/ode_examples.hpp | 4 +- .../numerical_integration/runge_kutta.hpp | 4 +- .../numerical_integration/runge_kutta_4.hpp | 4 +- .../runge_kutta_fehlberg.hpp | 4 +- .../runge_kutta_fehlberg_implementation.hpp | 4 +- .../runge_kutta_template.hpp | 4 +- .../test_runge_kutta.cpp | 92 +++++++++---------- 17 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 5058b9a67..bb23cec85 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -15,7 +15,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), numerical_integrator_(propagation_step_s, attitude_ode_, - libra::numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file + numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; quaternion_i2b_ = quaternion_i2b; torque_b_Nm_ = torque_b_Nm; diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 388542783..0ab64d619 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -73,8 +73,8 @@ class AttitudeWithCantileverVibration : public Attitude { math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] - libra::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; - libra::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; + numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; + numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; }; #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 4aaf69139..bd2fd8ae5 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -11,7 +11,7 @@ #include "attitude.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class AttitudeWithCantileverVibrationOde * @brief Class to implement Ordinary Differential Equations for Attitude with Cantilever Vibration @@ -221,6 +221,6 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/math_physics/numerical_integration/dormand_prince_5.hpp b/src/math_physics/numerical_integration/dormand_prince_5.hpp index ac9efd29f..8f772dedc 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5.hpp @@ -11,7 +11,7 @@ #include "embedded_runge_kutta.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class DormandPrince5 @@ -46,7 +46,7 @@ class DormandPrince5 : public EmbeddedRungeKutta { std::vector CalcInterpolationWeights(const double sigma) const; }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #include "dormand_prince_5_implementation.hpp" diff --git a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp index ae04fb70b..40b09a9c1 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp @@ -11,7 +11,7 @@ #include "dormand_prince_5.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { template DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde& ode) : EmbeddedRungeKutta(step_width, ode) { @@ -149,6 +149,6 @@ std::vector DormandPrince5::CalcInterpolationWeights(const double sig return interpolation_weights; } -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_DORMAND_PRINCE_5_IMPLEMENTATION_HPP_ diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta.hpp index dc7fe9dba..5e6fd605c 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta.hpp @@ -8,7 +8,7 @@ #include "runge_kutta.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class EmbeddedRungeKutta @@ -51,7 +51,7 @@ class EmbeddedRungeKutta : public RungeKutta { double local_truncation_error_; //!< Norm of estimated local truncation error }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #include "embedded_runge_kutta_implementation.hpp" diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp index 7d9bfbb69..ac13a861f 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp @@ -7,7 +7,7 @@ #include "embedded_runge_kutta.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { template void EmbeddedRungeKutta::Integrate() { @@ -37,6 +37,6 @@ void EmbeddedRungeKutta::ControlStepWidth(const double error_tolerance) { this->step_width_ = updated_step_width; } -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_EMBEDDED_RUNGE_KUTTA_IMPLEMENTATION_HPP_ diff --git a/src/math_physics/numerical_integration/interface_ode.hpp b/src/math_physics/numerical_integration/interface_ode.hpp index 44f9e11fc..1c30058e9 100644 --- a/src/math_physics/numerical_integration/interface_ode.hpp +++ b/src/math_physics/numerical_integration/interface_ode.hpp @@ -8,7 +8,7 @@ #include "../math/vector.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class InterfaceOde @@ -27,6 +27,6 @@ class InterfaceOde { virtual math::Vector DerivativeFunction(const double independent_variable, const math::Vector& state) const = 0; }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_INTERFACE_ODE_HPP_ diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 1a12ed298..5f19d0185 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -11,7 +11,7 @@ #include "../math/vector.hpp" #include "interface_ode.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class NumericalIntegrator @@ -75,6 +75,6 @@ class NumericalIntegrator { math::Vector previous_state_; //!< Previous state vector }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_NUMERICAL_INTEGRATOR_HPP_ diff --git a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp index 93e2c3d51..8869f82b6 100644 --- a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp @@ -12,7 +12,7 @@ #include "runge_kutta_4.hpp" #include "runge_kutta_fehlberg.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @enum NumericalIntegrationMethod @@ -62,6 +62,6 @@ class NumericalIntegratorManager { std::shared_ptr> integrator_; }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_NUMERICAL_INTEGRATION_HPP_ diff --git a/src/math_physics/numerical_integration/ode_examples.hpp b/src/math_physics/numerical_integration/ode_examples.hpp index 401771d82..6b0ce7ec8 100644 --- a/src/math_physics/numerical_integration/ode_examples.hpp +++ b/src/math_physics/numerical_integration/ode_examples.hpp @@ -9,7 +9,7 @@ #include "../../utilities/macros.hpp" #include "interface_ode.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { class ExampleLinearOde : public InterfaceOde<1> { public: @@ -86,6 +86,6 @@ class Example2dTwoBodyOrbitOde : public InterfaceOde<4> { } }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_EXAMPLE_ODE_HPP_s diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index cb972726c..18730c667 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -9,7 +9,7 @@ #include "numerical_integrator.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class RungeKutta @@ -55,7 +55,7 @@ class RungeKutta : public NumericalIntegrator { void CalcSlope(); }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #include "runge_kutta_template.hpp" diff --git a/src/math_physics/numerical_integration/runge_kutta_4.hpp b/src/math_physics/numerical_integration/runge_kutta_4.hpp index f29e248a0..b2f267d58 100644 --- a/src/math_physics/numerical_integration/runge_kutta_4.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_4.hpp @@ -10,7 +10,7 @@ #include "runge_kutta.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class RungeKutta4 @@ -51,6 +51,6 @@ class RungeKutta4 : public RungeKutta { } }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_4_HPP_ diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp index 7b6596f79..3056241ac 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp @@ -8,7 +8,7 @@ #include "embedded_runge_kutta.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { /** * @class RungeKuttaFehlberg @@ -41,7 +41,7 @@ class RungeKuttaFehlberg : public EmbeddedRungeKutta { std::vector CalcInterpolationWeights(const double sigma) const; }; -} // namespace libra::numerical_integration +} // namespace numerical_integration #include "runge_kutta_fehlberg_implementation.hpp" diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp index 25a7eacc1..d5ef9f7c0 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp @@ -8,7 +8,7 @@ #include "runge_kutta_fehlberg.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { template RungeKuttaFehlberg::RungeKuttaFehlberg(const double step_width, const InterfaceOde& ode) : EmbeddedRungeKutta(step_width, ode) { @@ -96,6 +96,6 @@ std::vector RungeKuttaFehlberg::CalcInterpolationWeights(const double return interpolation_weights; } -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_FEHLBERG_IMPLEMENTATION_HPP_ diff --git a/src/math_physics/numerical_integration/runge_kutta_template.hpp b/src/math_physics/numerical_integration/runge_kutta_template.hpp index 9e3cd5316..99bab650c 100644 --- a/src/math_physics/numerical_integration/runge_kutta_template.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_template.hpp @@ -7,7 +7,7 @@ #include "./runge_kutta.hpp" -namespace libra::numerical_integration { +namespace numerical_integration { template void RungeKutta::Integrate() { @@ -34,6 +34,6 @@ void RungeKutta::CalcSlope() { } } -} // namespace libra::numerical_integration +} // namespace numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_TEMPLATE_HPP_ diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index 29df5be2e..babc93c5f 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -15,8 +15,8 @@ * @brief Test for constructor */ TEST(NUMERICAL_INTEGRATION, Constructor) { - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); + numerical_integration::ExampleLinearOde ode; + numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); math::Vector<1> state = linear_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -27,8 +27,8 @@ TEST(NUMERICAL_INTEGRATION, Constructor) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { double step_width_s = 0.1; - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); + numerical_integration::ExampleLinearOde ode; + numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -48,8 +48,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { double step_width_s = 0.1; - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); + numerical_integration::ExampleLinearOde ode; + numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -69,8 +69,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { double step_width_s = 0.1; - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); + numerical_integration::ExampleLinearOde ode; + numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -90,8 +90,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { double step_width_s = 0.1; - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); + numerical_integration::ExampleLinearOde ode; + numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -111,9 +111,9 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { double step_width_s = 0.1; - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - libra::numerical_integration::NumericalIntegrationMethod::kRkf); + numerical_integration::ExampleLinearOde ode; + numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, + numerical_integration::NumericalIntegrationMethod::kRkf); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -137,9 +137,9 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { double step_width_s = 0.1; - libra::numerical_integration::ExampleLinearOde ode; - libra::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - libra::numerical_integration::NumericalIntegrationMethod::kDp5); + numerical_integration::ExampleLinearOde ode; + numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, + numerical_integration::NumericalIntegrationMethod::kDp5); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -163,8 +163,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { */ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { double step_width_s = 0.1; - libra::numerical_integration::ExampleQuadraticOde ode; - libra::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); + numerical_integration::ExampleQuadraticOde ode; + numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -184,8 +184,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { */ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { double step_width_s = 0.1; - libra::numerical_integration::ExampleQuadraticOde ode; - libra::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); + numerical_integration::ExampleQuadraticOde ode; + numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -205,8 +205,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { */ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { double step_width_s = 10.0; - libra::numerical_integration::ExampleQuadraticOde ode; - libra::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); + numerical_integration::ExampleQuadraticOde ode; + numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -234,8 +234,8 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { */ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { double step_width_s = 0.1; - libra::numerical_integration::ExampleQuadraticOde ode; - libra::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); + numerical_integration::ExampleQuadraticOde ode; + numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -255,8 +255,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { */ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { double step_width_s = 10.0; - libra::numerical_integration::ExampleQuadraticOde ode; - libra::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); + numerical_integration::ExampleQuadraticOde ode; + numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -284,8 +284,8 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { */ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { double step_width_s = 0.1; - libra::numerical_integration::Example1dPositionVelocityOde ode; - libra::numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); + numerical_integration::Example1dPositionVelocityOde ode; + numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; @@ -314,8 +314,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { */ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { double step_width_s = 0.1; - libra::numerical_integration::Example1dPositionVelocityOde ode; - libra::numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); + numerical_integration::Example1dPositionVelocityOde ode; + numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; @@ -344,8 +344,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { */ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { double step_width_s = 0.1; - libra::numerical_integration::Example1dPositionVelocityOde ode; - libra::numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); + numerical_integration::Example1dPositionVelocityOde ode; + numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; @@ -374,10 +374,10 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { */ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { double step_width_s = 0.1; - libra::numerical_integration::Example2dTwoBodyOrbitOde ode; - libra::numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); - libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + numerical_integration::Example2dTwoBodyOrbitOde ode; + numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); + numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; @@ -444,10 +444,10 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { */ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { double step_width_s = 0.01; - libra::numerical_integration::Example2dTwoBodyOrbitOde ode; - libra::numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); - libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + numerical_integration::Example2dTwoBodyOrbitOde ode; + numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); + numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); math::Vector<4> initial_state(0.0); const double eccentricity = 0.9; @@ -514,9 +514,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { */ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { double step_width_s = 1.0; - libra::numerical_integration::Example2dTwoBodyOrbitOde ode; - libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + numerical_integration::Example2dTwoBodyOrbitOde ode; + numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; @@ -609,9 +609,9 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { */ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { double step_width_s = 0.01; - libra::numerical_integration::Example2dTwoBodyOrbitOde ode; - libra::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - libra::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + numerical_integration::Example2dTwoBodyOrbitOde ode; + numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); math::Vector<4> initial_state(0.0); const double eccentricity = 0.8; From 9217808b636996f12eaf398540a169520c622e42 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:47:59 +0900 Subject: [PATCH 245/456] Rename libra::atmosphere atmosphere --- src/environment/local/atmosphere.cpp | 4 ++-- src/math_physics/atmosphere/harris_priester_coefficients.hpp | 4 ++-- src/math_physics/atmosphere/harris_priester_model.cpp | 4 ++-- src/math_physics/atmosphere/harris_priester_model.hpp | 4 ++-- src/math_physics/atmosphere/simple_air_density_model.cpp | 4 ++-- src/math_physics/atmosphere/simple_air_density_model.hpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index c8199102d..fe693eac0 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -56,7 +56,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& if (model_ == "STANDARD") { // Standard model double altitude_m = orbit.GetGeodeticPosition().GetAltitude_m(); - air_density_kg_m3_ = libra::atmosphere::CalcAirDensityWithSimpleModel(altitude_m); + air_density_kg_m3_ = atmosphere::CalcAirDensityWithSimpleModel(altitude_m); } else if (model_ == "NRLMSISE00") { // NRLMSISE00 model double lat_rad = orbit.GetGeodeticPosition().GetLatitude_rad(); @@ -67,7 +67,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& } else if (model_ == "HARRIS_PRIESTER") { // Harris-Priester math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); - air_density_kg_m3_ = libra::atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); + air_density_kg_m3_ = atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); } else { // No suitable model return air_density_kg_m3_ = 0.0; diff --git a/src/math_physics/atmosphere/harris_priester_coefficients.hpp b/src/math_physics/atmosphere/harris_priester_coefficients.hpp index 763de63ab..3c467501b 100644 --- a/src/math_physics/atmosphere/harris_priester_coefficients.hpp +++ b/src/math_physics/atmosphere/harris_priester_coefficients.hpp @@ -7,7 +7,7 @@ #include -namespace libra::atmosphere { +namespace atmosphere { // Height [km], density [g/km3] // TODO: Add other solar activities value @@ -28,6 +28,6 @@ const std::map harris_priester_max_density_table = { {640, 0.4121}, {660, 0.3325}, {680, 0.2691}, {700, 0.2185}, {720, 0.1779}, {740, 0.1452}, {760, 0.1190}, {780, 0.09776}, {800, 0.08059}, {840, 0.05741}, {880, 0.04210}, {920, 0.03130}, {960, 0.02360}, {1000, 0.01810}}; -} // namespace libra::atmosphere +} // namespace atmosphere #endif // S2E_LIBRARY_HARRIS_COEFFICIENTS_HPP_ diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 46c40c8d6..cb38aa17c 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -10,7 +10,7 @@ #include "harris_priester_coefficients.hpp" -namespace libra::atmosphere { +namespace atmosphere { /** * @fn CalcScaleHeight_km @@ -88,4 +88,4 @@ double CalcApexDensity_g_km3(const std::map::const_iterator dens return apex_density_g_km3; } -} // namespace libra::atmosphere +} // namespace atmosphere diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index ea40eeaf4..b9cd1feab 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -9,7 +9,7 @@ #include #include -namespace libra::atmosphere { +namespace atmosphere { /** * @fn CalcAirDensityWithHarrisPriester @@ -23,6 +23,6 @@ namespace libra::atmosphere { double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); -} // namespace libra::atmosphere +} // namespace atmosphere #endif // S2E_LIBRARY_HARRIS_PRIESTER_HPP_ diff --git a/src/math_physics/atmosphere/simple_air_density_model.cpp b/src/math_physics/atmosphere/simple_air_density_model.cpp index 2444a27db..7e2b0a440 100644 --- a/src/math_physics/atmosphere/simple_air_density_model.cpp +++ b/src/math_physics/atmosphere/simple_air_density_model.cpp @@ -6,7 +6,7 @@ #include -namespace libra::atmosphere { +namespace atmosphere { double CalcAirDensityWithSimpleModel(const double altitude_m) { double altitude_km = altitude_m / 1000.0; @@ -138,4 +138,4 @@ double CalcAirDensityWithSimpleModel(const double altitude_m) { return rho_kg_m3; } -} // namespace libra::atmosphere +} // namespace atmosphere diff --git a/src/math_physics/atmosphere/simple_air_density_model.hpp b/src/math_physics/atmosphere/simple_air_density_model.hpp index 15c728ccb..b697a66e4 100644 --- a/src/math_physics/atmosphere/simple_air_density_model.hpp +++ b/src/math_physics/atmosphere/simple_air_density_model.hpp @@ -5,7 +5,7 @@ #ifndef S2E_LIBRARY_ATMOSPHERE_SIMPLE_AIR_DENSITY_MODEL_HPP_ #define S2E_LIBRARY_ATMOSPHERE_SIMPLE_AIR_DENSITY_MODEL_HPP_ -namespace libra::atmosphere { +namespace atmosphere { /** * @fn CalcAirDensityWithSimpleModel @@ -15,6 +15,6 @@ namespace libra::atmosphere { */ double CalcAirDensityWithSimpleModel(const double altitude_m); -} // namespace libra::atmosphere +} // namespace atmosphere #endif // S2E_LIBRARY_ATMOSPHERE_SIMPLE_AIR_DENSITY_MODEL_HPP_ From 9a3209995afdb08035b15d49b72def85ee0c7fac Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:49:33 +0900 Subject: [PATCH 246/456] Fix small --- src/math_physics/math/test_matrix_vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/math_physics/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp index c2fb090e4..78fc9babf 100644 --- a/src/math_physics/math/test_matrix_vector.cpp +++ b/src/math_physics/math/test_matrix_vector.cpp @@ -52,7 +52,7 @@ TEST(MatrixVector, CalcInverseMatrix) { m[2][1] = -2.0; m[2][2] = 1.0; - math::Matrix inverse = libra::CalcInverseMatrix(m); + math::Matrix inverse = math::CalcInverseMatrix(m); EXPECT_NEAR(-1.0, inverse[0][0], 1e-10); EXPECT_NEAR(-1.0, inverse[0][1], 1e-10); From c182ed6f2f7f7b69bb159d824e5d6e9a2ff6c104 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:52:26 +0900 Subject: [PATCH 247/456] Fix format --- src/math_physics/numerical_integration/test_runge_kutta.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index babc93c5f..fd2438ec6 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -113,7 +113,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { double step_width_s = 0.1; numerical_integration::ExampleLinearOde ode; numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - numerical_integration::NumericalIntegrationMethod::kRkf); + numerical_integration::NumericalIntegrationMethod::kRkf); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -139,7 +139,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { double step_width_s = 0.1; numerical_integration::ExampleLinearOde ode; numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - numerical_integration::NumericalIntegrationMethod::kDp5); + numerical_integration::NumericalIntegrationMethod::kDp5); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); From ac3c2a18ff7957ecb1998096ef2c226714933194 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 10:56:19 +0900 Subject: [PATCH 248/456] Add math:: --- .../numerical_integration/ode_examples.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/math_physics/numerical_integration/ode_examples.hpp b/src/math_physics/numerical_integration/ode_examples.hpp index 6b0ce7ec8..b0c9085b5 100644 --- a/src/math_physics/numerical_integration/ode_examples.hpp +++ b/src/math_physics/numerical_integration/ode_examples.hpp @@ -13,11 +13,11 @@ namespace numerical_integration { class ExampleLinearOde : public InterfaceOde<1> { public: - Vector<1> DerivativeFunction(const double time_s, const Vector<1>& state) const { + math::Vector<1> DerivativeFunction(const double time_s, const math::Vector<1>& state) const { UNUSED(time_s); UNUSED(state); - Vector<1> output(1.0); + math::Vector<1> output(1.0); return output; } }; @@ -35,11 +35,11 @@ class ExampleQuadraticOde : public InterfaceOde<1> { * @param [in] state: State vector * @return Differentiated value of state vector */ - virtual Vector<1> DerivativeFunction(const double time_s, const Vector<1>& state) const { + virtual math::Vector<1> DerivativeFunction(const double time_s, const math::Vector<1>& state) const { UNUSED(time_s); UNUSED(state); - Vector<1> output(0.0); + math::Vector<1> output(0.0); output[0] = 2.0 * time_s; return output; } @@ -51,10 +51,10 @@ class ExampleQuadraticOde : public InterfaceOde<1> { */ class Example1dPositionVelocityOde : public InterfaceOde<2> { public: - virtual Vector<2> DerivativeFunction(const double time_s, const Vector<2>& state) const { + virtual math::Vector<2> DerivativeFunction(const double time_s, const math::Vector<2>& state) const { UNUSED(time_s); - Vector<2> output(0.0); + math::Vector<2> output(0.0); output[0] = state[1]; output[1] = 0.0; return output; @@ -67,10 +67,10 @@ class Example1dPositionVelocityOde : public InterfaceOde<2> { */ class Example2dTwoBodyOrbitOde : public InterfaceOde<4> { public: - virtual Vector<4> DerivativeFunction(const double time_s, const Vector<4>& state) const { + virtual math::Vector<4> DerivativeFunction(const double time_s, const math::Vector<4>& state) const { UNUSED(time_s); - Vector<4> output(0.0); + math::Vector<4> output(0.0); output[0] = state[2]; output[1] = state[3]; double denominator = pow(state[0] * state[0] + state[1] * state[1], 3.0 / 2.0); From d5216018caa653ab8074462bc2861475f9357302 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 11:05:23 +0900 Subject: [PATCH 249/456] Add randomization namespace --- src/components/base/sensor.hpp | 2 +- src/components/ideal/attitude_observer.hpp | 4 ++-- src/components/ideal/force_generator.hpp | 4 ++-- src/components/ideal/orbit_observer.hpp | 2 +- src/components/ideal/torque_generator.hpp | 4 ++-- src/components/real/aocs/gnss_receiver.hpp | 4 ++-- src/components/real/aocs/magnetorquer.hpp | 2 +- src/components/real/aocs/star_sensor.hpp | 6 +++--- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.hpp | 4 ++-- src/components/real/propulsion/simple_thruster.hpp | 4 ++-- src/disturbances/magnetic_disturbance.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/math_physics/randomization/global_randomization.hpp | 2 +- .../minimal_standard_linear_congruential_generator.cpp | 2 +- .../minimal_standard_linear_congruential_generator.hpp | 4 ++-- ..._standard_linear_congruential_generator_with_shuffle.cpp | 2 +- ..._standard_linear_congruential_generator_with_shuffle.hpp | 4 ++-- src/math_physics/randomization/normal_randomization.cpp | 2 +- src/math_physics/randomization/normal_randomization.hpp | 6 +++--- src/math_physics/randomization/random_walk.hpp | 2 +- 22 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 883050b19..8562310de 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -55,7 +55,7 @@ class Sensor { math::Matrix scale_factor_; //!< Scale factor matrix math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame - libra::NormalRand normal_random_noise_c_[N]; //!< Normal random + randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random RandomWalk random_walk_noise_c_; //!< Random Walk /** diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 70f571eb8..3244dce32 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -62,8 +62,8 @@ class AttitudeObserver : public Component, public ILoggable { protected: math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion - libra::NormalRand angle_noise_; //!< Normal random for magnitude noise - libra::NormalRand direction_noise_; //!< Normal random for direction noise + randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise const Attitude& attitude_; //!< Attitude information }; diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 684f5bab0..c3a5eb6ef 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -100,8 +100,8 @@ class ForceGenerator : public Component, public ILoggable { math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise - libra::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - libra::NormalRand direction_noise_; //!< Normal random for direction noise + randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index c1746af81..09437c079 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -82,7 +82,7 @@ class OrbitObserver : public Component, public ILoggable { math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] NoiseFrame noise_frame_; //!< Noise definition frame - libra::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] + randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables const Orbit& orbit_; //!< Orbit information diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index b762fd99e..eb6c01b81 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -78,8 +78,8 @@ class TorqueGenerator : public Component, public ILoggable { math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise - libra::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - libra::NormalRand direction_noise_; //!< Normal random for direction noise + randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index d418c01d9..9bc48a411 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -137,8 +137,8 @@ class GnssReceiver : public Component, public ILoggable { AntennaModel antenna_model_; //!< Antenna model // Simple position observation - libra::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] - libra::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] + randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] + randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index d424e0c4c..91b91864b 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -134,7 +134,7 @@ class Magnetorquer : public Component, public ILoggable { math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] RandomWalk random_walk_c_Am2_; //!< Random walk noise - libra::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise + randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index eba0f2ae9..5965c5e9a 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -115,9 +115,9 @@ class StarSensor : public Component, public ILoggable { math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame // Noise parameters - libra::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction - libra::NormalRand orthogonal_direction_noise_; //!< Random noise for orthogonal direction of sight - libra::NormalRand sight_direction_noise_; //!< Random noise for sight direction + randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction + randomization::NormalRand orthogonal_direction_noise_; //!< Random noise for orthogonal direction of sight + randomization::NormalRand sight_direction_noise_; //!< Random noise for sight direction // Delay emulation parameters int max_delay_; //!< Max delay diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index d4432496b..6b47949ae 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -7,7 +7,7 @@ #include #include -using libra::NormalRand; +using randomization::NormalRand; #include #include #include diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 7488e2513..e2c9623fd 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -100,8 +100,8 @@ class SunSensor : public Component, public ILoggable { double detectable_angle_rad_; //!< half angle (>0) [rad] bool sun_detected_flag_ = false; //!< Sun detected flag // Noise parameters - libra::NormalRand random_noise_alpha_; //!< Normal random for alpha angle - libra::NormalRand random_noise_beta_; //!< Normal random for beta angle + randomization::NormalRand random_noise_alpha_; //!< Normal random for alpha angle + randomization::NormalRand random_noise_beta_; //!< Normal random for beta angle double bias_noise_alpha_rad_ = 0.0; //!< Constant bias for alpha angle (Value is calculated by random number generator) double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index cbceafc71..948a9bdcd 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -114,8 +114,8 @@ class SimpleThruster : public Component, public ILoggable { double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] - libra::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error - libra::NormalRand direction_random_noise_; //!< Normal random for thrust direction error + randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error + randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error // outputs Vector<3> output_thrust_b_N_{0.0}; //!< Generated thrust on the body fixed frame [N] Vector<3> output_torque_b_Nm_{0.0}; //!< Generated torque on the body fixed frame [Nm] diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 2b3c4c069..3b49be06c 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -34,7 +34,7 @@ void MagneticDisturbance::CalcRMM() { static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant - static libra::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), global_randomization.MakeSeed()); + static randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), global_randomization.MakeSeed()); rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); for (int i = 0; i < 3; ++i) { diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index fe693eac0..b0792bca4 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -78,7 +78,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& double Atmosphere::AddNoise(const double rho_kg_m3) { // RandomWalk rw(rho_kg_m3*rw_stepwidth_,rho_kg_m3*rw_stddev_,rho_kg_m3*rw_limit_); - libra::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, global_randomization.MakeSeed()); + randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, global_randomization.MakeSeed()); double nrd = nr; return rho_kg_m3 + nrd; diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index f26c6e457..382978d62 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -44,7 +44,7 @@ void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { static math::Vector<3> limit(random_walk_limit_nT_); static RandomWalk<3> random_walk(0.1, standard_deviation, limit); - static libra::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); + static randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); for (int i = 0; i < 3; ++i) { magnetic_field_array_i_nT[i] += random_walk[i] + white_noise; diff --git a/src/math_physics/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp index f63b63e82..a55ae9e98 100644 --- a/src/math_physics/randomization/global_randomization.hpp +++ b/src/math_physics/randomization/global_randomization.hpp @@ -33,7 +33,7 @@ class GlobalRandomization { private: static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed - libra::MinimalStandardLcg base_randomizer_; //!< Base of global randomization + randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization long seed_; //!< Seed of global randomization }; diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp index 395a8943e..ccd179507 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp @@ -5,7 +5,7 @@ */ #include "minimal_standard_linear_congruential_generator.hpp" -using libra::MinimalStandardLcg; +using randomization::MinimalStandardLcg; #include diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp index 70b97a695..9120faffd 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp @@ -7,7 +7,7 @@ #ifndef S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ #define S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ -namespace libra { +namespace randomization { /** * @class MinimalStandardLcg @@ -52,6 +52,6 @@ class MinimalStandardLcg { long seed_; //!< Seed of randomization }; -} // namespace libra +} // namespace randomization #endif // S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp index 95fbc7075..ea0a6bf43 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp @@ -5,7 +5,7 @@ */ #include "minimal_standard_linear_congruential_generator_with_shuffle.hpp" -using libra::MinimalStandardLcgWithShuffle; +using randomization::MinimalStandardLcgWithShuffle; MinimalStandardLcgWithShuffle::MinimalStandardLcgWithShuffle() : table_position_(0) { Initialize(); } diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp index 6c42dddba..5c016291f 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp @@ -11,7 +11,7 @@ #include "minimal_standard_linear_congruential_generator.hpp" -namespace libra { +namespace randomization { /** * @class MinimalStandardLcgWithShuffle @@ -58,6 +58,6 @@ class MinimalStandardLcgWithShuffle { double mixing_table_[kTableSize]; //!< Mixing table }; -} // namespace libra +} // namespace randomization #endif // S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_WITH_SHUFFLE_HPP_ diff --git a/src/math_physics/randomization/normal_randomization.cpp b/src/math_physics/randomization/normal_randomization.cpp index 02eb484b7..0e5c9e36c 100644 --- a/src/math_physics/randomization/normal_randomization.cpp +++ b/src/math_physics/randomization/normal_randomization.cpp @@ -4,7 +4,7 @@ * @note Ref: NUMERICAL RECIPES in C, p.216-p.217 */ #include "normal_randomization.hpp" -using libra::NormalRand; +using randomization::NormalRand; #include //DBL_EPSILON #include //sqrt, log; diff --git a/src/math_physics/randomization/normal_randomization.hpp b/src/math_physics/randomization/normal_randomization.hpp index 962126a0c..81e688091 100644 --- a/src/math_physics/randomization/normal_randomization.hpp +++ b/src/math_physics/randomization/normal_randomization.hpp @@ -8,9 +8,9 @@ #define S2E_LIBRARY_RANDOMIZATION_NORMAL_RANDOMIZATION_HPP_ #include "minimal_standard_linear_congruential_generator_with_shuffle.hpp" -using libra::MinimalStandardLcgWithShuffle; +using randomization::MinimalStandardLcgWithShuffle; -namespace libra { +namespace randomization { /** * @class NormalRand @@ -106,6 +106,6 @@ class NormalRand { bool is_empty_; //!< Flag to show the holder_ has available value }; -} // namespace libra +} // namespace randomization #endif // S2E_LIBRARY_RANDOMIZATION_NORMAL_RANDOMIZATION_HPP_ diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index befcd10de..5af240bf9 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -37,7 +37,7 @@ class RandomWalk : public math::OrdinaryDifferentialEquation { private: math::Vector limit_; //!< Limit of random walk - libra::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise + randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; #include "random_walk_template_functions.hpp" // template function definisions. From d2c23bd495dbe56506e6250ccf440d058b2be7ec Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 11:11:16 +0900 Subject: [PATCH 250/456] Fix format --- src/components/base/sensor.hpp | 8 ++++---- src/components/ideal/force_generator.hpp | 4 ++-- src/components/ideal/torque_generator.hpp | 4 ++-- src/components/real/aocs/gnss_receiver.hpp | 6 +++--- src/components/real/propulsion/simple_thruster.hpp | 4 ++-- src/disturbances/magnetic_disturbance.cpp | 3 ++- src/math_physics/randomization/global_randomization.hpp | 6 +++--- src/math_physics/randomization/random_walk.hpp | 2 +- 8 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 8562310de..f3ab2e22b 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -52,11 +52,11 @@ class Sensor { math::Vector Measure(const math::Vector true_value_c); private: - math::Matrix scale_factor_; //!< Scale factor matrix - math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + math::Matrix scale_factor_; //!< Scale factor matrix + math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random - RandomWalk random_walk_noise_c_; //!< Random Walk + RandomWalk random_walk_noise_c_; //!< Random Walk /** * @fn Clip diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index c3a5eb6ef..d7cb07f49 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -100,8 +100,8 @@ class ForceGenerator : public Component, public ILoggable { math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise - randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - randomization::NormalRand direction_noise_; //!< Normal random for direction noise + randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index eb6c01b81..6ddaf1c5d 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -78,8 +78,8 @@ class TorqueGenerator : public Component, public ILoggable { math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise - randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - randomization::NormalRand direction_noise_; //!< Normal random for direction noise + randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 9bc48a411..8f1d867ac 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -139,9 +139,9 @@ class GnssReceiver : public Component, public ILoggable { // Simple position observation randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index 948a9bdcd..f2466fcc9 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -114,8 +114,8 @@ class SimpleThruster : public Component, public ILoggable { double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] - randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error - randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error + randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error + randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error // outputs Vector<3> output_thrust_b_N_{0.0}; //!< Generated thrust on the body fixed frame [N] Vector<3> output_torque_b_Nm_{0.0}; //!< Generated torque on the body fixed frame [Nm] diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 3b49be06c..901777c6a 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -34,7 +34,8 @@ void MagneticDisturbance::CalcRMM() { static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant - static randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), global_randomization.MakeSeed()); + static randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), + global_randomization.MakeSeed()); rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); for (int i = 0; i < 3; ++i) { diff --git a/src/math_physics/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp index a55ae9e98..24c88ec2b 100644 --- a/src/math_physics/randomization/global_randomization.hpp +++ b/src/math_physics/randomization/global_randomization.hpp @@ -32,9 +32,9 @@ class GlobalRandomization { long MakeSeed(); private: - static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed - randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization - long seed_; //!< Seed of global randomization + static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed + randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization + long seed_; //!< Seed of global randomization }; extern GlobalRandomization global_randomization; //!< Global randomization diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index 5af240bf9..ecd269001 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -36,7 +36,7 @@ class RandomWalk : public math::OrdinaryDifferentialEquation { virtual void DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs); private: - math::Vector limit_; //!< Limit of random walk + math::Vector limit_; //!< Limit of random walk randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; From fa7a41a0e9b0f0c960e32c92c2b28673db148ffc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 11:21:46 +0900 Subject: [PATCH 251/456] Remove warnings --- src/dynamics/attitude/initialize_attitude.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index f149f1e1c..d4ed6e202 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -77,7 +77,6 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode main_mode = ConvertStringToCtrlMode(main_mode_in); AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); - math::Quaternion quaternion_i2b; ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); From 1e52b2ea53bf688bc375104dc4ede4f39ac393bf Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 14:30:40 +0900 Subject: [PATCH 252/456] Add gnss namespace --- src/environment/global/gnss_satellites.cpp | 2 ++ src/environment/global/gnss_satellites.hpp | 6 +++--- src/math_physics/gnss/antex_file_reader.cpp | 4 ++++ src/math_physics/gnss/antex_file_reader.hpp | 4 ++++ src/math_physics/gnss/bias_sinex_file_reader.cpp | 4 ++++ src/math_physics/gnss/bias_sinex_file_reader.hpp | 4 ++++ src/math_physics/gnss/gnss_satellite_number.cpp | 4 ++++ src/math_physics/gnss/gnss_satellite_number.hpp | 4 ++++ src/math_physics/gnss/igs_product_name_handling.hpp | 4 ++++ src/math_physics/gnss/sp3_file_reader.cpp | 4 ++++ src/math_physics/gnss/sp3_file_reader.hpp | 4 ++++ src/math_physics/gnss/test_antex_file_reader.cpp | 2 ++ src/math_physics/gnss/test_bias_sinex_file_reader.cpp | 2 ++ src/math_physics/gnss/test_gnss_satellite_number.cpp | 2 ++ src/math_physics/gnss/test_igs_product_name_handling.cpp | 2 ++ src/math_physics/gnss/test_sp3_file_reader.cpp | 2 ++ 16 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index d68216ea2..2796fc553 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -15,6 +15,8 @@ #include "setting_file_reader/initialize_file_access.hpp" #include "utilities/macros.hpp" +using namespace gnss; + const size_t kNumberOfInterpolation = 9; void GnssSatellites::Initialize(const std::vector& sp3_files, const EpochTime start_time) { diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index a3021e64c..b7b49ddf7 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -54,7 +54,7 @@ class GnssSatellites : public ILoggable { * @param [in] sp3_files: List of SP3 files * @param [in] start_time: The simulation start time */ - void Initialize(const std::vector& sp3_files, const EpochTime start_time); + void Initialize(const std::vector& sp3_files, const EpochTime start_time); /** * @fn IsCalcEnabled @@ -113,7 +113,7 @@ class GnssSatellites : public ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the GNSS satellite position calculation - std::vector sp3_files_; //!< List of SP3 files + std::vector sp3_files_; //!< List of SP3 files size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites size_t sp3_file_id_; //!< Current SP3 file ID EpochTime reference_time_; //!< Reference start time of the SP3 handling @@ -133,7 +133,7 @@ class GnssSatellites : public ILoggable { * @param [in] current_time: Target time * @return true means no error, false means the time argument is out of range */ - bool GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time); + bool GetCurrentSp3File(gnss::Sp3FileReader& current_sp3_file, const EpochTime current_time); /** * @fn UpdateInterpolationInformation diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index e9c379787..1547a3cf4 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -10,6 +10,8 @@ #include #include +namespace gnss { + #define ANTEX_LINE_TYPE_POSITION (60) AntexGridDefinition::AntexGridDefinition(const double zenith_start_angle_deg, const double zenith_end_angle_deg, const double zenith_step_angle_deg, @@ -196,3 +198,5 @@ DateTime AntexFileReader::ReadDateTime(std::string line) { sscanf(line.c_str(), "%zu %2zu %2zu %2zu %2zu %10lf", &year, &month, &day, &hour, &minute, &second); return DateTime(year, month, day, hour, minute, second); } + +} // namespace gnss diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index ef2ef64c4..e730b09c2 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -16,6 +16,8 @@ #include #include +namespace gnss { + /** * @class AntexGridDefinition * @brief grid data definition in ANTEX file @@ -343,4 +345,6 @@ class AntexFileReader { DateTime ReadDateTime(std::string line); }; +} // namespace gnss + #endif // S2E_LIBRARY_ANTEX_FILE_READER_HPP_ diff --git a/src/math_physics/gnss/bias_sinex_file_reader.cpp b/src/math_physics/gnss/bias_sinex_file_reader.cpp index ebb47913a..252523ebf 100644 --- a/src/math_physics/gnss/bias_sinex_file_reader.cpp +++ b/src/math_physics/gnss/bias_sinex_file_reader.cpp @@ -9,6 +9,8 @@ #include #include +namespace gnss { + bool BiasSinexFileReader::ReadFile(const std::string file_name) { // File open std::ifstream bias_sinex_file(file_name); @@ -242,3 +244,5 @@ void BiasSolutionData::SetTargetSignal(const std::string signal1, const std::str target_signal_ = BiasTargetSignal::kError; } } + +} // namespace gnss diff --git a/src/math_physics/gnss/bias_sinex_file_reader.hpp b/src/math_physics/gnss/bias_sinex_file_reader.hpp index 49d85e91e..20e591d0c 100644 --- a/src/math_physics/gnss/bias_sinex_file_reader.hpp +++ b/src/math_physics/gnss/bias_sinex_file_reader.hpp @@ -10,6 +10,8 @@ #include #include +namespace gnss { + /** * @enum BiasIdentifier * @brief Bias Identifier @@ -184,4 +186,6 @@ class BiasSinexFileReader { void ReadBiasSolution(std::ifstream& bias_sinex_file); }; +} // namespace gnss + #endif // S2E_LIBRARY_BIAS_SINEX_FILE_READER_HPP_ \ No newline at end of file diff --git a/src/math_physics/gnss/gnss_satellite_number.cpp b/src/math_physics/gnss/gnss_satellite_number.cpp index b3c53efba..6eb8861a5 100644 --- a/src/math_physics/gnss/gnss_satellite_number.cpp +++ b/src/math_physics/gnss/gnss_satellite_number.cpp @@ -5,6 +5,8 @@ #include "gnss_satellite_number.hpp" +namespace gnss { + size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number) { switch (satellite_number.front()) { case 'G': @@ -58,3 +60,5 @@ std::string ConvertIndexToGnssSatelliteNumber(const size_t index) { return output; } + +} // namespace gnss diff --git a/src/math_physics/gnss/gnss_satellite_number.hpp b/src/math_physics/gnss/gnss_satellite_number.hpp index 08fd91576..319fd34a5 100644 --- a/src/math_physics/gnss/gnss_satellite_number.hpp +++ b/src/math_physics/gnss/gnss_satellite_number.hpp @@ -10,6 +10,8 @@ #include +namespace gnss { + // GNSS satellite number definition // TODO: Move to initialized file? const size_t kNumberOfGpsSatellite = 32; //!< Number of GPS satellites @@ -44,4 +46,6 @@ size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number); */ std::string ConvertIndexToGnssSatelliteNumber(const size_t index); +} // namespace gnss + #endif // S2E_LIBRARY_GNSS_GNSS_SATELLITE_NUMBER_HPP_ diff --git a/src/math_physics/gnss/igs_product_name_handling.hpp b/src/math_physics/gnss/igs_product_name_handling.hpp index 7f2644e8d..e2352f76c 100644 --- a/src/math_physics/gnss/igs_product_name_handling.hpp +++ b/src/math_physics/gnss/igs_product_name_handling.hpp @@ -10,6 +10,8 @@ #include +namespace gnss { + /** * @fn GetOrbitClockFileName * @brief Return IGS orbit and clock final product file name @@ -83,4 +85,6 @@ size_t IncrementYearDoy(const size_t year_doy) { return output; } +} // namespace gnss + #endif // S2E_LIBRARY_GNSS_IGS_PRODUCT_NAME_HANDLING_HPP_ diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index 10043e10d..2419c03dd 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -11,6 +11,8 @@ #include #include +namespace gnss { + Sp3FileReader::Sp3FileReader(const std::string file_name) { ReadFile(file_name); } DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { @@ -419,3 +421,5 @@ Sp3VelocityClockRateCorrelation Sp3FileReader::DecodeVelocityClockRateCorrelatio return correlation; } + +} // namespace gnss diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 4b7a017eb..e904b6050 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -17,6 +17,8 @@ #include #include +namespace gnss { + #define SP3_BAD_CLOCK_VALUE (999999.999999) #define SP3_BAD_POSITION_VALUE (0.000000) @@ -234,4 +236,6 @@ class Sp3FileReader { Sp3VelocityClockRateCorrelation DecodeVelocityClockRateCorrelation(std::string line); }; +} // namespace gnss + #endif // S2E_LIBRARY_GNSS_SP3_FILE_READER_HPP_ diff --git a/src/math_physics/gnss/test_antex_file_reader.cpp b/src/math_physics/gnss/test_antex_file_reader.cpp index d5d392f19..320c598af 100644 --- a/src/math_physics/gnss/test_antex_file_reader.cpp +++ b/src/math_physics/gnss/test_antex_file_reader.cpp @@ -7,6 +7,8 @@ #include "antex_file_reader.hpp" +using namespace gnss; + /** * @brief Test Constructor */ diff --git a/src/math_physics/gnss/test_bias_sinex_file_reader.cpp b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp index 99c52c8d7..a681eedcc 100644 --- a/src/math_physics/gnss/test_bias_sinex_file_reader.cpp +++ b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp @@ -2,6 +2,8 @@ #include "bias_sinex_file_reader.hpp" +using namespace gnss; + TEST(BiasSinex, Constructor) { // File read error check BiasSinexFileReader bias_sinex_file_fault("false_file_path.BSX"); diff --git a/src/math_physics/gnss/test_gnss_satellite_number.cpp b/src/math_physics/gnss/test_gnss_satellite_number.cpp index 5bbf535ee..259920e29 100644 --- a/src/math_physics/gnss/test_gnss_satellite_number.cpp +++ b/src/math_physics/gnss/test_gnss_satellite_number.cpp @@ -6,6 +6,8 @@ #include "gnss_satellite_number.hpp" +using namespace gnss; + /** * @brief Test satellite number to index */ diff --git a/src/math_physics/gnss/test_igs_product_name_handling.cpp b/src/math_physics/gnss/test_igs_product_name_handling.cpp index b674af7dc..f1af19529 100644 --- a/src/math_physics/gnss/test_igs_product_name_handling.cpp +++ b/src/math_physics/gnss/test_igs_product_name_handling.cpp @@ -7,6 +7,8 @@ #include "igs_product_name_handling.hpp" +using namespace gnss; + /** * @brief Test GetOrbitClockFinalFileName */ diff --git a/src/math_physics/gnss/test_sp3_file_reader.cpp b/src/math_physics/gnss/test_sp3_file_reader.cpp index 4a017894e..9ef514d41 100644 --- a/src/math_physics/gnss/test_sp3_file_reader.cpp +++ b/src/math_physics/gnss/test_sp3_file_reader.cpp @@ -6,6 +6,8 @@ #include "sp3_file_reader.hpp" +using namespace gnss; + /** * @brief Test Constructor */ From a215e90dab873b47b36b10021fcbd61241ba982a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 14:37:28 +0900 Subject: [PATCH 253/456] Fix format --- src/environment/global/gnss_satellites.hpp | 2 +- src/math_physics/gnss/gnss_satellite_number.hpp | 2 +- src/math_physics/gnss/sp3_file_reader.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index b7b49ddf7..cf4d645ee 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -113,7 +113,7 @@ class GnssSatellites : public ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the GNSS satellite position calculation - std::vector sp3_files_; //!< List of SP3 files + std::vector sp3_files_; //!< List of SP3 files size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites size_t sp3_file_id_; //!< Current SP3 file ID EpochTime reference_time_; //!< Reference start time of the SP3 handling diff --git a/src/math_physics/gnss/gnss_satellite_number.hpp b/src/math_physics/gnss/gnss_satellite_number.hpp index 319fd34a5..35087c537 100644 --- a/src/math_physics/gnss/gnss_satellite_number.hpp +++ b/src/math_physics/gnss/gnss_satellite_number.hpp @@ -46,6 +46,6 @@ size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number); */ std::string ConvertIndexToGnssSatelliteNumber(const size_t index); -} // namespace gnss +} // namespace gnss #endif // S2E_LIBRARY_GNSS_GNSS_SATELLITE_NUMBER_HPP_ diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index 2419c03dd..8106ba9cc 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -422,4 +422,4 @@ Sp3VelocityClockRateCorrelation Sp3FileReader::DecodeVelocityClockRateCorrelatio return correlation; } -} // namespace gnss +} // namespace gnss From c9f20d45414fd6e9a7b14305ec0248042d434e7a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 14:47:27 +0900 Subject: [PATCH 254/456] Add orbit namespace --- src/dynamics/orbit/encke_orbit_propagation.cpp | 4 ++-- src/dynamics/orbit/encke_orbit_propagation.hpp | 2 +- src/dynamics/orbit/initialize_orbit.cpp | 16 ++++++++-------- src/dynamics/orbit/kepler_orbit_propagation.hpp | 4 ++-- src/dynamics/orbit/relative_orbit.cpp | 14 +++++++------- src/dynamics/orbit/relative_orbit.hpp | 10 +++++----- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 2 +- src/math_physics/orbit/interpolation_orbit.cpp | 4 ++++ src/math_physics/orbit/interpolation_orbit.hpp | 4 ++++ src/math_physics/orbit/kepler_orbit.cpp | 4 ++++ src/math_physics/orbit/kepler_orbit.hpp | 4 ++++ src/math_physics/orbit/orbital_elements.cpp | 4 ++++ src/math_physics/orbit/orbital_elements.hpp | 4 ++++ src/math_physics/orbit/relative_orbit_models.cpp | 4 ++++ src/math_physics/orbit/relative_orbit_models.hpp | 4 ++++ .../orbit/test_interpolation_orbit.cpp | 2 ++ 17 files changed, 61 insertions(+), 27 deletions(-) diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index a5a839d5c..9b67322f2 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -90,8 +90,8 @@ void EnckeOrbitPropagation::Initialize(double current_time_jd, math::Vector<3> r // reference orbit reference_position_i_m_ = reference_position_i_m; reference_velocity_i_m_s_ = reference_velocity_i_m_s; - OrbitalElements oe_ref(gravity_constant_m3_s2_, current_time_jd, reference_position_i_m, reference_velocity_i_m_s); - reference_kepler_orbit = KeplerOrbit(gravity_constant_m3_s2_, oe_ref); + orbit::OrbitalElements oe_ref(gravity_constant_m3_s2_, current_time_jd, reference_position_i_m, reference_velocity_i_m_s); + reference_kepler_orbit = orbit::KeplerOrbit(gravity_constant_m3_s2_, oe_ref); // difference orbit difference_position_i_m_.FillUp(0.0); diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index a6abce7e8..9cfc94498 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -65,7 +65,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu // reference orbit math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] - KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element + orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 9921da134..8ce7ab313 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -46,8 +46,8 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string // initialize orbit for relative dynamics of formation flying RelativeOrbit::RelativeOrbitUpdateMethod update_method = (RelativeOrbit::RelativeOrbitUpdateMethod)(conf.ReadInt(section_, "relative_orbit_update_method")); - RelativeOrbitModel relative_dynamics_model_type = (RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); - StmModel stm_model_type = (StmModel)(conf.ReadInt(section_, "stm_model_type")); + orbit::RelativeOrbitModel relative_dynamics_model_type = (orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); + orbit::StmModel stm_model_type = (orbit::StmModel)(conf.ReadInt(section_, "stm_model_type")); math::Vector<3> init_relative_position_lvlh; conf.ReadVector<3>(section_, "initial_relative_position_lvlh_m", init_relative_position_lvlh); @@ -62,7 +62,7 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string init_relative_velocity_lvlh, update_method, relative_dynamics_model_type, stm_model_type, relative_information); } else if (propagate_mode == "KEPLER") { // initialize orbit for Kepler propagation - OrbitalElements oe; + orbit::OrbitalElements oe; // TODO: init_mode_kepler should be removed in the next major update if (initialize_mode == OrbitInitializeMode::kInertialPositionAndVelocity) { // initialize with position and velocity @@ -70,7 +70,7 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string conf.ReadVector<3>(section_, "initial_position_i_m", init_pos_m); math::Vector<3> init_vel_m_s; conf.ReadVector<3>(section_, "initial_velocity_i_m_s", init_vel_m_s); - oe = OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); + oe = orbit::OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); } else { // initialize with orbital elements double semi_major_axis_m = conf.ReadDouble(section_, "semi_major_axis_m"); @@ -79,9 +79,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string double raan_rad = conf.ReadDouble(section_, "raan_rad"); double arg_perigee_rad = conf.ReadDouble(section_, "argument_of_perigee_rad"); double epoch_jday = conf.ReadDouble(section_, "epoch_jday"); - oe = OrbitalElements(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); + oe = orbit::OrbitalElements(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); } - KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); + orbit::KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); orbit = new KeplerOrbitPropagation(celestial_information, current_time_jd, kepler_orbit); } else if (propagate_mode == "ENCKE") { // initialize orbit for Encke's method @@ -130,8 +130,8 @@ math::Vector<6> InitializePosVel(std::string initialize_file, double current_tim double raan_rad = conf.ReadDouble(section_, "raan_rad"); double arg_perigee_rad = conf.ReadDouble(section_, "argument_of_perigee_rad"); double epoch_jday = conf.ReadDouble(section_, "epoch_jday"); - OrbitalElements oe(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); - KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); + orbit::OrbitalElements oe(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); + orbit::KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); kepler_orbit.CalcOrbit(current_time_jd); position_i_m = kepler_orbit.GetPosition_i_m(); diff --git a/src/dynamics/orbit/kepler_orbit_propagation.hpp b/src/dynamics/orbit/kepler_orbit_propagation.hpp index f2421003e..ec93197ab 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.hpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.hpp @@ -13,7 +13,7 @@ * @class KeplerOrbitPropagation * @brief Class to propagate spacecraft orbit with Kepler equation */ -class KeplerOrbitPropagation : public Orbit, public KeplerOrbit { +class KeplerOrbitPropagation : public Orbit, public orbit::KeplerOrbit { public: // Initialize with orbital elements /** @@ -23,7 +23,7 @@ class KeplerOrbitPropagation : public Orbit, public KeplerOrbit { * @param [in] current_time_jd: Current Julian day [day] * @param [in] kepler_orbit: Kepler orbit */ - KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, KeplerOrbit kepler_orbit); + KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, orbit::KeplerOrbit kepler_orbit); /** * @fn ~KeplerOrbitPropagation * @brief Destructor diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 5bf3270e3..10fffce21 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -10,7 +10,7 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, - RelativeOrbitUpdateMethod update_method, RelativeOrbitModel relative_dynamics_model_type, StmModel stm_model_type, + RelativeOrbitUpdateMethod update_method, orbit::RelativeOrbitModel relative_dynamics_model_type, orbit::StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), math::OrdinaryDifferentialEquation<6>(time_step_s), @@ -66,12 +66,12 @@ void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, ma TransformEcefToGeodetic(); } -void RelativeOrbit::CalculateSystemMatrix(RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, +void RelativeOrbit::CalculateSystemMatrix(orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2) { switch (relative_dynamics_model_type) { - case RelativeOrbitModel::kHill: { + case orbit::RelativeOrbitModel::kHill: { double reference_sat_orbit_radius = reference_sat_orbit->GetPosition_i_m().CalcNorm(); - system_matrix_ = CalcHillSystemMatrix(reference_sat_orbit_radius, gravity_constant_m3_s2); + system_matrix_ = orbit::CalcHillSystemMatrix(reference_sat_orbit_radius, gravity_constant_m3_s2); } default: { // NOT REACHED @@ -80,11 +80,11 @@ void RelativeOrbit::CalculateSystemMatrix(RelativeOrbitModel relative_dynamics_m } } -void RelativeOrbit::CalculateStm(StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec) { +void RelativeOrbit::CalculateStm(orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec) { switch (stm_model_type) { - case StmModel::kHcw: { + case orbit::StmModel::kHcw: { double reference_sat_orbit_radius = reference_sat_orbit->GetPosition_i_m().CalcNorm(); - stm_ = CalcHcwStm(reference_sat_orbit_radius, gravity_constant_m3_s2, elapsed_sec); + stm_ = orbit::CalcHcwStm(reference_sat_orbit_radius, gravity_constant_m3_s2, elapsed_sec); } default: { // NOT REACHED diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 82560566c..f31ffc27d 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -41,7 +41,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> */ RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, - RelativeOrbitModel relative_dynamics_model_type, StmModel stm_model_type, RelativeInformation* relative_information); + orbit::RelativeOrbitModel relative_dynamics_model_type, orbit::StmModel stm_model_type, RelativeInformation* relative_information); /** * @fn ~RelativeOrbit * @brief Destructor @@ -81,8 +81,8 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame RelativeOrbitUpdateMethod update_method_; //!< Update method - RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type - StmModel stm_model_type_; //!< State Transition Matrix model type + orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type + orbit::StmModel stm_model_type_; //!< State Transition Matrix model type RelativeInformation* relative_information_; //!< Relative information /** @@ -102,7 +102,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] reference_sat_orbit: Orbit information of reference satellite * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] */ - void CalculateSystemMatrix(RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2); + void CalculateSystemMatrix(orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2); /** * @fn CalculateStm * @brief Calculate State Transition Matrix @@ -111,7 +111,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @param [in] elapsed_sec: Elapsed time [sec] */ - void CalculateStm(StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec); + void CalculateStm(orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec); /** * @fn PropagateRk4 * @brief Propagate relative orbit with RK4 diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 2796fc553..c3af068f2 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -40,7 +40,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con reference_time_ = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); // Initialize orbit - orbit_.assign(number_of_calculated_gnss_satellites_, InterpolationOrbit(kNumberOfInterpolation)); + orbit_.assign(number_of_calculated_gnss_satellites_, orbit::InterpolationOrbit(kNumberOfInterpolation)); // Initialize clock std::vector temp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index cf4d645ee..2a3357da0 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -120,7 +120,7 @@ class GnssSatellites : public ILoggable { size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation EpochTime current_epoch_time_; //!< The last updated time - std::vector orbit_; //!< GNSS satellite orbit with interpolation + std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation // References diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index c7d26302a..33d2843a5 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -5,6 +5,8 @@ #include "interpolation_orbit.hpp" +namespace orbit { + InterpolationOrbit::InterpolationOrbit(const size_t degree) { std::vector time; time.assign(degree, -1.0); @@ -34,3 +36,5 @@ math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double t } return output_position; } + +} // namespace orbit diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index 10a60ed6b..cf83660ab 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -10,6 +10,8 @@ #include #include +namespace orbit { + /** * @class InterpolationOrbit * @brief Orbit calculation with mathematical interpolation @@ -69,4 +71,6 @@ class InterpolationOrbit { std::vector interpolation_position_; // 3D vector of interpolation }; +} // namespace orbit + #endif // S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index ca7458152..2b3878703 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -7,6 +7,8 @@ #include "../math/matrix_vector.hpp" #include "../math/s2e_math.hpp" +namespace orbit { + KeplerOrbit::KeplerOrbit() {} // Initialize with orbital elements KeplerOrbit::KeplerOrbit(const double gravity_constant_m3_s2, const OrbitalElements oe) : gravity_constant_m3_s2_(gravity_constant_m3_s2), oe_(oe) { @@ -97,3 +99,5 @@ double KeplerOrbit::SolveKeplerNewtonMethod(const double eccentricity, const dou } return u_rad; } + +} // namespace orbit diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index a19784a0d..fec55f130 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -10,6 +10,8 @@ #include "../math/vector.hpp" #include "./orbital_elements.hpp" +namespace orbit { + /** * @class KeplerOrbit * @brief Class to calculate Kepler orbit calculation @@ -87,4 +89,6 @@ class KeplerOrbit { double SolveKeplerNewtonMethod(const double eccentricity, const double mean_anomaly_rad, const double angle_limit_rad, const int iteration_limit); }; +} // namespace orbit + #endif // S2E_LIBRARY_ORBIT_KEPLER_ORBIT_HPP_ diff --git a/src/math_physics/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp index dbd3e89d8..3fd2920b7 100644 --- a/src/math_physics/orbit/orbital_elements.cpp +++ b/src/math_physics/orbit/orbital_elements.cpp @@ -9,6 +9,8 @@ #include "../math/s2e_math.hpp" +namespace orbit { + OrbitalElements::OrbitalElements() {} // initialize with OE @@ -85,3 +87,5 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons double dt_s = (u_rad - eccentricity_ * sin(u_rad)) / n_rad_s; epoch_jday_ = time_jday - dt_s / (24.0 * 60.0 * 60.0); } + +} // namespace orbit diff --git a/src/math_physics/orbit/orbital_elements.hpp b/src/math_physics/orbit/orbital_elements.hpp index 9b813ac5a..27424653e 100644 --- a/src/math_physics/orbit/orbital_elements.hpp +++ b/src/math_physics/orbit/orbital_elements.hpp @@ -8,6 +8,8 @@ #include "../math/vector.hpp" +namespace orbit { + /** * @class OrbitalElements * @brief Class for classical orbital elements @@ -104,4 +106,6 @@ class OrbitalElements { const math::Vector<3> velocity_i_m_s); }; +} // namespace orbit + #endif // S2E_LIBRARY_ORBIT_ORBITAL_ELEMENTS_HPP_ diff --git a/src/math_physics/orbit/relative_orbit_models.cpp b/src/math_physics/orbit/relative_orbit_models.cpp index e7c83ca9a..a291e4633 100644 --- a/src/math_physics/orbit/relative_orbit_models.cpp +++ b/src/math_physics/orbit/relative_orbit_models.cpp @@ -4,6 +4,8 @@ */ #include "relative_orbit_models.hpp" +namespace orbit { + math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { math::Matrix<6, 6> system_matrix; @@ -91,3 +93,5 @@ math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_ stm[5][5] = cos(n * t); return stm; } + +} // namespace orbit diff --git a/src/math_physics/orbit/relative_orbit_models.hpp b/src/math_physics/orbit/relative_orbit_models.hpp index ff120823d..881d73bfb 100644 --- a/src/math_physics/orbit/relative_orbit_models.hpp +++ b/src/math_physics/orbit/relative_orbit_models.hpp @@ -9,6 +9,8 @@ #include "../math/matrix.hpp" #include "../math/vector.hpp" +namespace orbit { + /** * @enum RelativeOrbitModel * @brief Relative orbit model @@ -42,4 +44,6 @@ math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const doubl */ math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); +} // namespace orbit + #endif // S2E_LIBRARY_ORBIT_RELATIVE_ORBIT_MODEL_HPP_ diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index 22439c87e..d7fe51c67 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -8,6 +8,8 @@ #include "interpolation_orbit.hpp" +using namespace orbit; + /** * @brief Test for Constructor function */ From 80cfe1fc7cd98569085df8dbb71bf8976477baec Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 14:49:07 +0900 Subject: [PATCH 255/456] Fix format --- src/dynamics/orbit/encke_orbit_propagation.hpp | 2 +- src/dynamics/orbit/relative_orbit.cpp | 7 ++++--- src/dynamics/orbit/relative_orbit.hpp | 4 ++-- src/environment/global/gnss_satellites.hpp | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index 9cfc94498..a32052e2b 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -65,7 +65,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu // reference orbit math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] - orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element + orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 10fffce21..f60f52682 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -10,8 +10,8 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, - RelativeOrbitUpdateMethod update_method, orbit::RelativeOrbitModel relative_dynamics_model_type, orbit::StmModel stm_model_type, - RelativeInformation* relative_information) + RelativeOrbitUpdateMethod update_method, orbit::RelativeOrbitModel relative_dynamics_model_type, + orbit::StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), math::OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), @@ -80,7 +80,8 @@ void RelativeOrbit::CalculateSystemMatrix(orbit::RelativeOrbitModel relative_dyn } } -void RelativeOrbit::CalculateStm(orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec) { +void RelativeOrbit::CalculateStm(orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, + double elapsed_sec) { switch (stm_model_type) { case orbit::StmModel::kHcw: { double reference_sat_orbit_radius = reference_sat_orbit->GetPosition_i_m().CalcNorm(); diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index f31ffc27d..3aae6e104 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -80,10 +80,10 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame - RelativeOrbitUpdateMethod update_method_; //!< Update method + RelativeOrbitUpdateMethod update_method_; //!< Update method orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type orbit::StmModel stm_model_type_; //!< State Transition Matrix model type - RelativeInformation* relative_information_; //!< Relative information + RelativeInformation* relative_information_; //!< Relative information /** * @fn InitializeState diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 2a3357da0..0aa46ef38 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -120,8 +120,8 @@ class GnssSatellites : public ILoggable { size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation EpochTime current_epoch_time_; //!< The last updated time - std::vector orbit_; //!< GNSS satellite orbit with interpolation - std::vector clock_; //!< GNSS satellite clock offset with interpolation + std::vector orbit_; //!< GNSS satellite orbit with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation // References const EarthRotation& earth_rotation_; //!< Earth rotation From 216744ceb34cd6d62c82d9780fe9e534afeade27 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 14:56:30 +0900 Subject: [PATCH 256/456] Fix test --- .../numerical_integration/test_runge_kutta.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index fd2438ec6..376406850 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -416,8 +416,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - KeplerOrbit kepler(1.0, oe); + orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 2e-4; @@ -486,8 +486,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - KeplerOrbit kepler(1.0, oe); + orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 2e-1; @@ -551,8 +551,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - KeplerOrbit kepler(1.0, oe); + orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 5e-2; @@ -646,8 +646,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - KeplerOrbit kepler(1.0, oe); + orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 1e-5; From 5873393163aced92d2f73f2794a93247b1cf4ca0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 15:11:21 +0900 Subject: [PATCH 257/456] Add time_system namespace --- src/environment/global/gnss_satellites.cpp | 31 ++++++++++--------- src/environment/global/gnss_satellites.hpp | 12 +++---- src/math_physics/gnss/antex_file_reader.cpp | 4 +-- src/math_physics/gnss/antex_file_reader.hpp | 14 ++++----- src/math_physics/gnss/sp3_file_reader.cpp | 18 +++++------ src/math_physics/gnss/sp3_file_reader.hpp | 28 ++++++++--------- .../time_system/date_time_format.cpp | 4 +++ .../time_system/date_time_format.hpp | 4 +++ src/math_physics/time_system/epoch_time.cpp | 4 +++ src/math_physics/time_system/epoch_time.hpp | 4 +++ src/math_physics/time_system/gps_time.cpp | 4 +++ src/math_physics/time_system/gps_time.hpp | 4 +++ .../time_system/test_date_time_format.cpp | 2 ++ .../time_system/test_epoch_time.cpp | 2 ++ .../time_system/test_gps_time.cpp | 2 ++ 15 files changed, 84 insertions(+), 53 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index c3af068f2..21749c9aa 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -19,7 +19,7 @@ using namespace gnss; const size_t kNumberOfInterpolation = 9; -void GnssSatellites::Initialize(const std::vector& sp3_files, const EpochTime start_time) { +void GnssSatellites::Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time) { sp3_files_ = sp3_files; current_epoch_time_ = start_time; @@ -37,7 +37,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con if (nearest_epoch_id >= half_interpolation_number) { reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; } - reference_time_ = EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); + reference_time_ = time_system::EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); // Initialize orbit orbit_.assign(number_of_calculated_gnss_satellites_, orbit::InterpolationOrbit(kNumberOfInterpolation)); @@ -60,9 +60,9 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { // Get time UTC current_utc = simulation_time.GetCurrentUtc(); - DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, - (size_t)current_utc.minute, current_utc.second); - current_epoch_time_ = EpochTime(current_date_time); + time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, + (size_t)current_utc.minute, current_utc.second); + current_epoch_time_ = time_system::EpochTime(current_date_time); // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); @@ -74,10 +74,10 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } -math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time) const { +math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time) const { if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return math::Vector<3>(0.0); - EpochTime target_time; + time_system::EpochTime target_time; if (time.GetTime_s() == 0) { target_time = current_epoch_time_; @@ -92,10 +92,10 @@ math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_i return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); } -double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const EpochTime time) const { +double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time) const { if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return 0.0; - EpochTime target_time; + time_system::EpochTime target_time; if (time.GetTime_s() == 0) { target_time = current_epoch_time_; @@ -109,9 +109,9 @@ double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const EpochTim return clock_[gnss_satellite_id].CalcPolynomial(diff_s) * 1e-6; } -bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const EpochTime current_time) { +bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time) { for (size_t i = 0; i < sp3_files_.size(); i++) { - EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); + time_system::EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); double diff_s = current_time.GetTimeWithFraction_s() - sp3_start_time.GetTimeWithFraction_s(); if (diff_s < 0.0) { // Error @@ -129,7 +129,7 @@ bool GnssSatellites::UpdateInterpolationInformation() { Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { - EpochTime sp3_time = EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); + time_system::EpochTime sp3_time = time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); @@ -226,9 +226,10 @@ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotat } // - DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), (size_t)simulation_time.GetStartDay(), - (size_t)simulation_time.GetStartHour(), (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); - EpochTime start_epoch_time(start_date_time); + time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), + (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), + (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); + time_system::EpochTime start_epoch_time(start_date_time); gnss_satellites->Initialize(sp3_file_readers, start_epoch_time); return gnss_satellites; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 0aa46ef38..77508f73b 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -54,7 +54,7 @@ class GnssSatellites : public ILoggable { * @param [in] sp3_files: List of SP3 files * @param [in] start_time: The simulation start time */ - void Initialize(const std::vector& sp3_files, const EpochTime start_time); + void Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time); /** * @fn IsCalcEnabled @@ -87,7 +87,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; + math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -96,7 +96,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite clock offset at the time. Or return zero when the arguments are out of range. */ - double GetClock_s(const size_t gnss_satellite_id, const EpochTime time = EpochTime(0, 0.0)) const; + double GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; // Override ILoggable /** @@ -116,9 +116,9 @@ class GnssSatellites : public ILoggable { std::vector sp3_files_; //!< List of SP3 files size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites size_t sp3_file_id_; //!< Current SP3 file ID - EpochTime reference_time_; //!< Reference start time of the SP3 handling + time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - EpochTime current_epoch_time_; //!< The last updated time + time_system::EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation @@ -133,7 +133,7 @@ class GnssSatellites : public ILoggable { * @param [in] current_time: Target time * @return true means no error, false means the time argument is out of range */ - bool GetCurrentSp3File(gnss::Sp3FileReader& current_sp3_file, const EpochTime current_time); + bool GetCurrentSp3File(gnss::Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time); /** * @fn UpdateInterpolationInformation diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index 1547a3cf4..c36cdacc4 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -192,11 +192,11 @@ AntexPhaseCenterData AntexFileReader::ReadPhaseCenterData(std::ifstream& antex_f return phase_center_data; } -DateTime AntexFileReader::ReadDateTime(std::string line) { +time_system::DateTime AntexFileReader::ReadDateTime(std::string line) { size_t year, month, day, hour, minute; double second; sscanf(line.c_str(), "%zu %2zu %2zu %2zu %2zu %10lf", &year, &month, &day, &hour, &minute, &second); - return DateTime(year, month, day, hour, minute, second); + return time_system::DateTime(year, month, day, hour, minute, second); } } // namespace gnss diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index e730b09c2..13e126c55 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -203,12 +203,12 @@ class AntexSatelliteData { * @fn SetValidStartTime * @param[in] valid_start_time: Valid start time */ - inline void SetValidStartTime(const DateTime valid_start_time) { valid_start_time_ = valid_start_time; }; + inline void SetValidStartTime(const time_system::DateTime valid_start_time) { valid_start_time_ = valid_start_time; }; /** * @fn SetValidEndTime * @param[in] valid_end_time: Valid end time */ - inline void SetValidEndTime(const DateTime valid_end_time) { valid_end_time_ = valid_end_time; }; + inline void SetValidEndTime(const time_system::DateTime valid_end_time) { valid_end_time_ = valid_end_time; }; /** * @fn SetNumberOfFrequency * @param[in] number_of_frequency: Number of frequency @@ -235,12 +235,12 @@ class AntexSatelliteData { * @fn GetValidStartTime * @return Valid start time */ - inline DateTime GetValidStartTime() const { return valid_start_time_; }; + inline time_system::DateTime GetValidStartTime() const { return valid_start_time_; }; /** * @fn GetValidEndTime * @return Valid end time */ - inline DateTime GetValidEndTime() const { return valid_end_time_; }; + inline time_system::DateTime GetValidEndTime() const { return valid_end_time_; }; /** * @fn GetNumberOfFrequency * @return Number of frequency @@ -256,8 +256,8 @@ class AntexSatelliteData { private: std::string antenna_type_; //!< Antenna type std::string serial_number_; //!< Serial number or satellite code - DateTime valid_start_time_; //!< Valid start time - DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) + time_system::DateTime valid_start_time_; //!< Valid start time + time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) size_t number_of_frequency_ = 1; //!< Number of frequency std::vector phase_center_data_; //!< Phase center data for each frequency }; @@ -342,7 +342,7 @@ class AntexFileReader { * @param[in] line: A single line in ANTEX file * @return Read date time */ - DateTime ReadDateTime(std::string line); + time_system::DateTime ReadDateTime(std::string line); }; } // namespace gnss diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index 8106ba9cc..7fbf0e831 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -15,9 +15,9 @@ namespace gnss { Sp3FileReader::Sp3FileReader(const std::string file_name) { ReadFile(file_name); } -DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { +time_system::DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { if (epoch_id > epoch_.size()) { - DateTime zero; + time_system::DateTime zero; return zero; } return epoch_[epoch_id]; @@ -69,7 +69,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { size_t year, month, day, hour, minute; double second; sscanf(line.substr(3, 28).c_str(), "%zu %2zu %2zu %2zu %2zu %12lf", &year, &month, &day, &hour, &minute, &second); - epoch_.push_back(DateTime(year, month, day, hour, minute, second)); + epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); // Orbit and Clock information for (size_t satellite_id = 0; satellite_id < header_.number_of_satellites_; satellite_id++) { @@ -117,7 +117,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { } // Test - DateTime test = epoch_[0]; + time_system::DateTime test = epoch_[0]; test = epoch_[1]; std::vector test_p = position_clock_[0]; test_p = position_clock_[1]; @@ -126,7 +126,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { return true; } -size_t Sp3FileReader::SearchNearestEpochId(const EpochTime time) { +size_t Sp3FileReader::SearchNearestEpochId(const time_system::EpochTime time) { size_t nearest_epoch_id = 0; // Get header info @@ -134,10 +134,10 @@ size_t Sp3FileReader::SearchNearestEpochId(const EpochTime time) { const double interval_s = header_.epoch_interval_s_; // Check range - EpochTime start_epoch(epoch_[0]); + time_system::EpochTime start_epoch(epoch_[0]); if (start_epoch > time) { nearest_epoch_id = 0; - } else if ((EpochTime)(epoch_[num_epoch - 1]) < time) { + } else if ((time_system::EpochTime)(epoch_[num_epoch - 1]) < time) { nearest_epoch_id = num_epoch - 1; } else { // Calc nearest point double diff_s = time.GetTimeWithFraction_s() - start_epoch.GetTimeWithFraction_s(); @@ -171,7 +171,7 @@ size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { size_t year, month, day, hour, minute; double second; sscanf(line.substr(3, 28).c_str(), "%zu %2zu %2zu %2zu %2zu %12lf", &year, &month, &day, &hour, &minute, &second); - header_.start_epoch_ = DateTime(year, month, day, hour, minute, second); + header_.start_epoch_ = time_system::DateTime(year, month, day, hour, minute, second); header_.number_of_epoch_ = std::stoi(line.substr(32, 7)); header_.used_data_ = line.substr(40, 5); header_.coordinate_system_ = line.substr(46, 5); @@ -199,7 +199,7 @@ size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { return 0; } // Read contents - header_.start_gps_time_ = GpsTime(std::stoi(line.substr(3, 4)), std::stod(line.substr(8, 15))); + header_.start_gps_time_ = time_system::GpsTime(std::stoi(line.substr(3, 4)), std::stod(line.substr(8, 15))); header_.epoch_interval_s_ = std::stod(line.substr(24, 14)); header_.start_time_mjday_ = std::stoi(line.substr(39, 5)); header_.start_time_mjday_fractional_day_ = std::stod(line.substr(45, 15)); diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index e904b6050..15e4566dc 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -51,16 +51,16 @@ enum class Sp3OrbitType { struct Sp3Header { // 1st line information // version -> not implemented yet - Sp3Mode mode_; //!< position or velocity - DateTime start_epoch_; //!< Time of start epoch - size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file - std::string used_data_; //!< Used data to generate the SP3 file - std::string coordinate_system_; //!< Coordinate system for the position and velocity data - Sp3OrbitType orbit_type_; //!< Orbit type - std::string agency_name_; //!< Agency name who generates the SP3 file + Sp3Mode mode_; //!< position or velocity + time_system::DateTime start_epoch_; //!< Time of start epoch + size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file + std::string used_data_; //!< Used data to generate the SP3 file + std::string coordinate_system_; //!< Coordinate system for the position and velocity data + Sp3OrbitType orbit_type_; //!< Orbit type + std::string agency_name_; //!< Agency name who generates the SP3 file // 2nd line information - GpsTime start_gps_time_; //!< Start time of orbit + time_system::GpsTime start_gps_time_; //!< Start time of orbit double epoch_interval_s_ = 1.0; //!< Epoch interval (0.0, 100000.0) size_t start_time_mjday_; //!< Start time of the orbit data (44244 = 6th Jan. 1980) [Modified Julian day] double start_time_mjday_fractional_day_ = 0.0; //!< Fractional part of the start time [0.0, 1.0) [day] @@ -172,19 +172,19 @@ class Sp3FileReader { inline Sp3Header GetHeader() const { return header_; } inline size_t GetNumberOfEpoch() const { return header_.number_of_epoch_; } inline size_t GetNumberOfSatellites() const { return header_.number_of_satellites_; } - inline DateTime GetStartEpochDateTime() const { return header_.start_epoch_; } - inline GpsTime GetStartEpochGpsTime() const { return header_.start_gps_time_; } + inline time_system::DateTime GetStartEpochDateTime() const { return header_.start_epoch_; } + inline time_system::GpsTime GetStartEpochGpsTime() const { return header_.start_gps_time_; } // Data - DateTime GetEpochData(const size_t epoch_id) const; + time_system::DateTime GetEpochData(const size_t epoch_id) const; Sp3PositionClock GetPositionClock(const size_t epoch_id, const size_t satellite_id); double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); - size_t SearchNearestEpochId(const EpochTime time); + size_t SearchNearestEpochId(const time_system::EpochTime time); private: - Sp3Header header_; //!< SP3 header information - std::vector epoch_; //!< Epoch data list + Sp3Header header_; //!< SP3 header information + std::vector epoch_; //!< Epoch data list // Orbit and clock data (Use as position_clock_[satellite_id][epoch_id]) std::map> position_clock_; //!< Position and Clock data diff --git a/src/math_physics/time_system/date_time_format.cpp b/src/math_physics/time_system/date_time_format.cpp index d3efc41ca..069c7247f 100644 --- a/src/math_physics/time_system/date_time_format.cpp +++ b/src/math_physics/time_system/date_time_format.cpp @@ -11,6 +11,8 @@ #include #include +namespace time_system { + DateTime::DateTime(const std::string date_time) { sscanf(date_time.c_str(), "%zu/%zu/%zu %zu:%zu:%lf", &year_, &month_, &day_, &hour_, &minute_, &second_); } @@ -52,3 +54,5 @@ std::string DateTime::GetAsString() const { std::string output = stream.str(); return output; } + +} // namespace time_system diff --git a/src/math_physics/time_system/date_time_format.hpp b/src/math_physics/time_system/date_time_format.hpp index 1e7d69d59..25084e979 100644 --- a/src/math_physics/time_system/date_time_format.hpp +++ b/src/math_physics/time_system/date_time_format.hpp @@ -10,6 +10,8 @@ #include "epoch_time.hpp" +namespace time_system { + class EpochTime; /** @@ -60,4 +62,6 @@ class DateTime { double second_; //!< Second [0.0, 60.0) }; +} // namespace time_system + #endif // S2E_LIBRARY_TIME_SYSTEM_DATE_TIME_FORMAT_HPP_ diff --git a/src/math_physics/time_system/epoch_time.cpp b/src/math_physics/time_system/epoch_time.cpp index b0bcda350..b3b6ec730 100644 --- a/src/math_physics/time_system/epoch_time.cpp +++ b/src/math_physics/time_system/epoch_time.cpp @@ -7,6 +7,8 @@ #include +namespace time_system { + EpochTime::EpochTime(const DateTime date_time) { // No leap second calculation const int doy[] = {1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}; //!< Day of Year for the 1st day of each month @@ -73,3 +75,5 @@ EpochTime EpochTime::operator-(const EpochTime& right_side) const { EpochTime result(time_s, fraction_s); return result; } + +} // namespace time_system diff --git a/src/math_physics/time_system/epoch_time.hpp b/src/math_physics/time_system/epoch_time.hpp index b783c674c..7f7dfe871 100644 --- a/src/math_physics/time_system/epoch_time.hpp +++ b/src/math_physics/time_system/epoch_time.hpp @@ -10,6 +10,8 @@ #include "date_time_format.hpp" +namespace time_system { + class DateTime; /** @@ -67,4 +69,6 @@ class EpochTime { double fraction_s_; //!< Fraction of second under 1 sec [0, 1) }; +} // namespace time_system + #endif // S2E_LIBRARY_TIME_SYSTEM_EPOCH_TIME_HPP_ diff --git a/src/math_physics/time_system/gps_time.cpp b/src/math_physics/time_system/gps_time.cpp index a9ceabeb8..cb3a5fec9 100644 --- a/src/math_physics/time_system/gps_time.cpp +++ b/src/math_physics/time_system/gps_time.cpp @@ -5,6 +5,8 @@ #include "gps_time.hpp" +namespace time_system { + const DateTime GpsTime::kEpochOfGpsTimeInDateTime_ = DateTime("1980/1/6 00:00:00.0"); const EpochTime GpsTime::kEpochOfGpsTimeInEpochTime_ = EpochTime(kEpochOfGpsTimeInDateTime_); const EpochTime GpsTime::kLeapSecondAheadFromUtc_ = EpochTime(18, 0); //!< Leap second ahead from UTC @ May 2023 @@ -23,3 +25,5 @@ void GpsTime::CalcEpochTime() { epoch_time_ = kEpochOfGpsTimeInEpochTime_ + time_diff; } + +} // namespace time_system diff --git a/src/math_physics/time_system/gps_time.hpp b/src/math_physics/time_system/gps_time.hpp index 2a2f657ee..f86242754 100644 --- a/src/math_physics/time_system/gps_time.hpp +++ b/src/math_physics/time_system/gps_time.hpp @@ -11,6 +11,8 @@ #include "date_time_format.hpp" #include "epoch_time.hpp" +namespace time_system { + /** * @class GpsTime * @brief A class to define GPS time expression @@ -95,4 +97,6 @@ class GpsTime { void CalcEpochTime(); }; +} // namespace time_system + #endif // S2E_LIBRARY_TIME_SYSTEM_GPS_TIME_HPP_ diff --git a/src/math_physics/time_system/test_date_time_format.cpp b/src/math_physics/time_system/test_date_time_format.cpp index 8ac7a60cd..4ac1a3840 100644 --- a/src/math_physics/time_system/test_date_time_format.cpp +++ b/src/math_physics/time_system/test_date_time_format.cpp @@ -2,6 +2,8 @@ #include "date_time_format.hpp" +using namespace time_system; + /** * @brief Test Constructor with value */ diff --git a/src/math_physics/time_system/test_epoch_time.cpp b/src/math_physics/time_system/test_epoch_time.cpp index 6ade9cad2..6cb5f0c1b 100644 --- a/src/math_physics/time_system/test_epoch_time.cpp +++ b/src/math_physics/time_system/test_epoch_time.cpp @@ -3,6 +3,8 @@ #include "date_time_format.hpp" #include "epoch_time.hpp" +using namespace time_system; + TEST(EpochTime, ConstructorNominal) { EpochTime time(1000000000, 0.250); diff --git a/src/math_physics/time_system/test_gps_time.cpp b/src/math_physics/time_system/test_gps_time.cpp index c3aeabe24..425556774 100644 --- a/src/math_physics/time_system/test_gps_time.cpp +++ b/src/math_physics/time_system/test_gps_time.cpp @@ -2,6 +2,8 @@ #include "gps_time.hpp" +using namespace time_system; + /** * @brief Test Constructor */ From 83865aab75f969cbb800b518c434e9043917c225 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 16:08:06 +0900 Subject: [PATCH 258/456] Add control_utilities namespace --- src/components/real/aocs/reaction_wheel.hpp | 8 ++++---- src/math_physics/control_utilities/first_order_lag.hpp | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index dde525ab8..e9cde9dd6 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -180,10 +180,10 @@ class ReactionWheel : public Component, public ILoggable { math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. // Parameters for control delay - const double step_width_s_; //!< step width for ReactionWheelOde [sec] - const double dead_time_s_; //!< dead time [sec] - std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration - FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] + const double step_width_s_; //!< step width for ReactionWheelOde [sec] + const double dead_time_s_; //!< dead time [sec] + std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration + control_utilities::FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] // Coasting friction // f_rad_s2 = v_rad_s * coefficients(0) + (v_rad_s)^2 * coefficients(1) + ... diff --git a/src/math_physics/control_utilities/first_order_lag.hpp b/src/math_physics/control_utilities/first_order_lag.hpp index 9bb0d9056..9a9d27ed3 100644 --- a/src/math_physics/control_utilities/first_order_lag.hpp +++ b/src/math_physics/control_utilities/first_order_lag.hpp @@ -6,6 +6,8 @@ #ifndef S2E_LIBRARY_CONTROL_UTILITIES_FIRST_ORDER_LAG_HPP_ #define S2E_LIBRARY_CONTROL_UTILITIES_FIRST_ORDER_LAG_HPP_ +namespace control_utilities { + /** * @class FirstOderLag * @brief A class to emulate the first order lag @@ -45,4 +47,6 @@ class FirstOrderLag { const double gain_; //!< Gain }; +} // namespace control_utilities + #endif // S2E_LIBRARY_CONTROL_UTILITIES_FIRST_ORDER_LAG_HPP_ From f4866fedc20a5d695053a050f6c6a26a4de56fde Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 16:11:44 +0900 Subject: [PATCH 259/456] Add geodesy namespace --- src/components/real/aocs/gnss_receiver.hpp | 4 ++-- src/dynamics/orbit/orbit.hpp | 8 ++++---- src/environment/local/geomagnetic_field.cpp | 2 +- src/environment/local/geomagnetic_field.hpp | 2 +- .../atmosphere/harris_priester_model.cpp | 4 ++-- .../atmosphere/harris_priester_model.hpp | 2 +- src/math_physics/geodesy/geodetic_position.cpp | 4 ++++ src/math_physics/geodesy/geodetic_position.hpp | 4 ++++ src/simulation/ground_station/ground_station.cpp | 2 +- src/simulation/ground_station/ground_station.hpp | 12 ++++++------ 10 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 8f1d867ac..f0fe73b06 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -107,7 +107,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] */ - inline const GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } + inline const geodesy::GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } /** * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] @@ -141,7 +141,7 @@ class GnssReceiver : public Component, public ILoggable { randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index ced6b516c..d3df8fb4a 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -113,7 +113,7 @@ class Orbit : public ILoggable { * @fn GetGeodeticPosition * @brief Return spacecraft position in the geodetic frame [m] */ - inline GeodeticPosition GetGeodeticPosition() const { return spacecraft_geodetic_position_; } + inline geodesy::GeodeticPosition GetGeodeticPosition() const { return spacecraft_geodetic_position_; } // TODO delete the following functions inline double GetLatitude_rad() const { return spacecraft_geodetic_position_.GetLatitude_rad(); } @@ -191,9 +191,9 @@ class Orbit : public ILoggable { bool is_calc_enabled_ = false; //!< Calculate flag OrbitPropagateMode propagate_mode_; //!< Propagation mode - math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] - math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] - GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame + math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] + math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] + geodesy::GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 382978d62..d167ae9ea 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -22,7 +22,7 @@ GeomagneticField::GeomagneticField(const std::string igrf_file_name, const doubl set_file_path(igrf_file_name_.c_str()); } -void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const GeodeticPosition position, +void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, const math::Quaternion quaternion_i2b) { if (!IsCalcEnabled) return; diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index f7305e0e0..f8c38b997 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -43,7 +43,7 @@ class GeomagneticField : public ILoggable { * @param [in] position: Position of target point to calculate the magnetic field * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ - void CalcMagneticField(const double decimal_year, const double sidereal_day, const GeodeticPosition position, + void CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, const math::Quaternion quaternion_i2b); /** diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index cb38aa17c..3f2b022b3 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -28,8 +28,8 @@ double CalcScaleHeight_km(const std::map::const_iterator density */ double CalcApexDensity_g_km3(const std::map::const_iterator density_itr, const double altitude_km); -double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7, - const double exponent_parameter) { +double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, + const double f10_7, const double exponent_parameter) { // Altitude double altitude_km = geodetic_position.GetAltitude_m() / 1000.0; diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index b9cd1feab..f9d8ffcc5 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -20,7 +20,7 @@ namespace atmosphere { * @param [in] exponent_parameter: n in the equation. n=2 for low inclination orbit and n=6 for polar orbit. * @return Atmospheric density [kg/m^3] */ -double CalcAirDensityWithHarrisPriester_kg_m3(const GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); } // namespace atmosphere diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 11b453cf6..d24169cba 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -10,6 +10,8 @@ #include #include +namespace geodesy { + GeodeticPosition::GeodeticPosition() { latitude_rad_ = 0.0; longitude_rad_ = 0.0; @@ -83,3 +85,5 @@ void GeodeticPosition::CalcQuaternionXcxfToLtc() { quaternion_xcxf_to_ltc_ = quaternion_xcxf_to_ltc_.ConvertFromDcm(dcm_xcxf_to_ltc); } + +} // namespace geodesy diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index 12628aa92..556744f69 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -9,6 +9,8 @@ #include #include +namespace geodesy { + /** * @class GeodeticPosition * @brief Class to mange geodetic position expression @@ -78,4 +80,6 @@ class GeodeticPosition { void CalcQuaternionXcxfToLtc(); }; +} // namespace geodesy + #endif // S2E_LIBRARY_GEODESY_GEODETIC_POSITION_HPP_ \ No newline at end of file diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 1b95d8b96..2f9483f2c 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -35,7 +35,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con double latitude_deg = conf.ReadDouble(Section, "latitude_deg"); double longitude_deg = conf.ReadDouble(Section, "longitude_deg"); double height_m = conf.ReadDouble(Section, "height_m"); - geodetic_position_ = GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); + geodetic_position_ = geodesy::GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); position_ecef_m_ = geodetic_position_.CalcEcefPosition(); elevation_limit_angle_deg_ = conf.ReadDouble(Section, "elevation_limit_angle_deg"); diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index f7caeb019..41a051d58 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -67,7 +67,7 @@ class GroundStation : public ILoggable { * @fn GetGeodeticPosition * @brief Return ground station position in the geodetic frame */ - GeodeticPosition GetGeodeticPosition() const { return geodetic_position_; } + geodesy::GeodeticPosition GetGeodeticPosition() const { return geodetic_position_; } /** * @fn GetPosition_ecef_m * @brief Return ground station position in the ECEF frame [m] @@ -91,11 +91,11 @@ class GroundStation : public ILoggable { bool IsVisible(const unsigned int spacecraft_id) const { return is_visible_.at(spacecraft_id); } protected: - unsigned int ground_station_id_; //!< Ground station ID - GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame - Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] - Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] - double elevation_limit_angle_deg_; //!< Minimum elevation angle to work the ground station [deg] + unsigned int ground_station_id_; //!< Ground station ID + geodesy::GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame + Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] + Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] + double elevation_limit_angle_deg_; //!< Minimum elevation angle to work the ground station [deg] std::map is_visible_; //!< Visible flag for each spacecraft ID (not care antenna) unsigned int number_of_spacecraft_; //!< Number of spacecraft in the simulation From aba36b1b0a4bb77c8e96d50ef3eab02cf968cbc2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 16:14:40 +0900 Subject: [PATCH 260/456] Add gravity namespace --- src/disturbances/geopotential.cpp | 2 +- src/disturbances/geopotential.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/math_physics/gravity/gravity_potential.cpp | 4 ++++ src/math_physics/gravity/gravity_potential.hpp | 4 ++++ src/math_physics/gravity/test_gravity_potential.cpp | 2 ++ 7 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index cd2d1b03f..70b7cb534 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -43,7 +43,7 @@ Geopotential::Geopotential(const int degree, const std::string file_path, const } } // Initialize GravityPotential - geopotential_ = GravityPotential(degree, c_, s_); + geopotential_ = gravity::GravityPotential(degree, c_, s_); } bool Geopotential::ReadCoefficientsEgm96(std::string file_name) { diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 7c2bdaaed..4903cb412 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -60,7 +60,7 @@ class Geopotential : public Disturbance { virtual std::string GetLogValue() const; private: - GravityPotential geopotential_; + gravity::GravityPotential geopotential_; size_t degree_; //!< Maximum degree setting to calculate the geo-potential std::vector> c_; //!< Cosine coefficients std::vector> s_; //!< Sine coefficients diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 769372476..bad7c5f7c 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -46,7 +46,7 @@ LunarGravityField::LunarGravityField(const int degree, const std::string file_pa } } // Initialize GravityPotential - lunar_potential_ = GravityPotential(degree, c_, s_, gravity_constants_km3_s2_ * 1e9, reference_radius_km_ * 1e3); + lunar_potential_ = gravity::GravityPotential(degree, c_, s_, gravity_constants_km3_s2_ * 1e9, reference_radius_km_ * 1e3); } bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 2993c8bf0..f1fa27c57 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -62,7 +62,7 @@ class LunarGravityField : public Disturbance { virtual std::string GetLogValue() const; private: - GravityPotential lunar_potential_; + gravity::GravityPotential lunar_potential_; double reference_radius_km_; double gravity_constants_km3_s2_; size_t degree_; //!< Maximum degree setting to calculate the geo-potential diff --git a/src/math_physics/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp index f959b566a..d6c2fda06 100644 --- a/src/math_physics/gravity/gravity_potential.cpp +++ b/src/math_physics/gravity/gravity_potential.cpp @@ -10,6 +10,8 @@ #include #include +namespace gravity { + GravityPotential::GravityPotential(const size_t degree, const std::vector> cosine_coefficients, const std::vector> sine_coefficients, const double gravity_constants_m3_s2, const double center_body_radius_m) @@ -275,3 +277,5 @@ void GravityPotential::v_w_nm_update(double *v_nm, double *w_nm, const double v_ *w_nm = c_normalize * (c1 * z_tmp * w_prev - c2 * c2_normalize * re_tmp * w_prev2); return; } + +} // namespace gravity diff --git a/src/math_physics/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp index aafefda57..94d0c8269 100644 --- a/src/math_physics/gravity/gravity_potential.hpp +++ b/src/math_physics/gravity/gravity_potential.hpp @@ -12,6 +12,8 @@ #include "../math/matrix.hpp" #include "../math/vector.hpp" +namespace gravity { + /** * @class GravityPotential * @brief Class to calculate gravity potential @@ -83,4 +85,6 @@ class GravityPotential { void v_w_nm_update(double *v_nm, double *w_nm, const double v_prev, const double w_prev, const double v_prev2, const double w_prev2); }; +} // namespace gravity + #endif // S2E_LIBRARY_GRAVITY_GRAVITY_POTENTIAL_HPP_ diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index df177e38f..22450d621 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -6,6 +6,8 @@ #include "gravity_potential.hpp" +using namespace gravity; + /** * @brief Test for Acceleration calculation */ From f539e9b77c21e41c6df4720fa08a2298670c393f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 16:15:43 +0900 Subject: [PATCH 261/456] Add optics namespace --- src/math_physics/optics/gaussian_beam_base.cpp | 4 ++++ src/math_physics/optics/gaussian_beam_base.hpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index ba9a03e89..86995e7e2 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -8,6 +8,8 @@ #include #include +namespace optics { + GaussianBeamBase::GaussianBeamBase(double wavelength_m, double radius_beam_waist_m, double total_power_W) : wavelength_m_(wavelength_m), radius_beam_waist_m_(radius_beam_waist_m), total_power_W_(total_power_W) {} @@ -46,3 +48,5 @@ double GaussianBeamBase::CalcIntensity_W_m2(double distance_from_beam_waist_m, d double intensity_W_m2 = peak_intensity_W_m2 * gaussian_dist; return intensity_W_m2; } + +} // namespace optics diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index 6b9721742..9ecc08e80 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -8,6 +8,8 @@ #include "../math/vector.hpp" +namespace optics { + /** * @class GaussianBeamBase * @brief Class to express gaussian beam laser @@ -107,4 +109,6 @@ class GaussianBeamBase { math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; +} // namespace optics + #endif // S2E_LIBRARY_OPTICS_GAUSSIAN_BEAM_BASE_HPP_ From 05d4687ff0cc6761febad7a43fbfe5a1b5d0eb3d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 16:16:51 +0900 Subject: [PATCH 262/456] Add planet_rotation namespace --- src/environment/global/moon_rotation.cpp | 2 +- src/math_physics/planet_rotation/moon_rotation_utilities.cpp | 4 ++++ src/math_physics/planet_rotation/moon_rotation_utilities.hpp | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index 1314de4f7..1b8aea98d 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -19,7 +19,7 @@ void MoonRotation::Update(const SimulationTime& simulation_time) { if (mode_ == MoonRotationMode::kSimple) { math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); - dcm_j2000_to_mcmf_ = CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); + dcm_j2000_to_mcmf_ = planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); } else if (mode_ == MoonRotationMode::kIauMoon) { ConstSpiceChar from[] = "J2000"; ConstSpiceChar to[] = "IAU_MOON"; diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index 93a3ee2e5..cd6dc020a 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -10,6 +10,8 @@ #include +namespace planet_rotation { + math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); @@ -46,3 +48,5 @@ math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { return dcm_me_pa; } + +} // namespace planet_rotation diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index e2726f5e4..9ce97f876 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -12,6 +12,8 @@ #include "math_physics/math/matrix.hpp" #include "math_physics/math/vector.hpp" +namespace planet_rotation { + /** * @fn CalcDcmEciToPrincipalAxis * @brief Calculate DCM from ECI to PA (Principal Axis) moon fixed frame @@ -34,4 +36,6 @@ math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci */ math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); +} // namespace planet_rotation + #endif // S2E_LIBRARY_PLANET_ROTATION_MOON_MEAN_EARTH_PRINCIPAL_AXIS_FRAME_HPP_ From c0d9dd99a606be7d1f5ba513a001a7841cc63c96 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 16:22:27 +0900 Subject: [PATCH 263/456] Fix format --- src/math_physics/geodesy/geodetic_position.cpp | 2 +- src/math_physics/optics/gaussian_beam_base.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index d24169cba..e7353b670 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -86,4 +86,4 @@ void GeodeticPosition::CalcQuaternionXcxfToLtc() { quaternion_xcxf_to_ltc_ = quaternion_xcxf_to_ltc_.ConvertFromDcm(dcm_xcxf_to_ltc); } -} // namespace geodesy +} // namespace geodesy diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index 9ecc08e80..6f40fa8a2 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -109,6 +109,6 @@ class GaussianBeamBase { math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; -} // namespace optics +} // namespace optics #endif // S2E_LIBRARY_OPTICS_GAUSSIAN_BEAM_BASE_HPP_ From a55c61537835b68e805d4a4f3bf77eadda866851 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:07:15 +0900 Subject: [PATCH 264/456] Move logs directory --- .gitignore | 2 +- {data/sample/logs => logs}/.gitkeep | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {data/sample/logs => logs}/.gitkeep (100%) diff --git a/.gitignore b/.gitignore index 2429be973..956b6a2bf 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ src/.vscode/ build/ # Log files -data/**/logs/ +**/logs/ # CSIPCE scripts/tmp_cspice/ diff --git a/data/sample/logs/.gitkeep b/logs/.gitkeep similarity index 100% rename from data/sample/logs/.gitkeep rename to logs/.gitkeep From 38b6b8c993993c29f1089b883bb126b7f60a5b0d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:08:39 +0900 Subject: [PATCH 265/456] Modify path to logs directory --- data/sample/initialize_files/sample_simulation_base.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sample/initialize_files/sample_simulation_base.ini b/data/sample/initialize_files/sample_simulation_base.ini index 46762b380..af9ef4d67 100644 --- a/data/sample/initialize_files/sample_simulation_base.ini +++ b/data/sample/initialize_files/sample_simulation_base.ini @@ -147,4 +147,4 @@ number_of_simulated_ground_station = 1 spacecraft_file(0) = INI_FILE_DIR_FROM_EXE/sample_satellite.ini ground_station_file(0) = INI_FILE_DIR_FROM_EXE/sample_ground_station.ini gnss_file = INI_FILE_DIR_FROM_EXE/sample_gnss.ini -log_file_save_directory = ../../data/sample/logs/ +log_file_save_directory = ../../logs/ From 0e2fb496a8bd603fbfe5456ad6a09dd364c992aa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:10:03 +0900 Subject: [PATCH 266/456] Modify path to logs directory --- scripts/Plot/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Plot/common.py b/scripts/Plot/common.py index d53e6a8a3..c8a3510cb 100644 --- a/scripts/Plot/common.py +++ b/scripts/Plot/common.py @@ -53,7 +53,7 @@ def read_scalar_from_csv(read_file_name, header_name): return vector def add_log_file_arguments(aparser): - aparser.add_argument('--logs-dir', type=str, help='logs directory like "../../data/sample/logs"', default='../../data/sample/logs') + aparser.add_argument('--logs-dir', type=str, help='logs directory like "../../logs"', default='../../logs') aparser.add_argument('--file-tag', type=str, help='log file tag like 220627_142946') return aparser From dbd58835685c517c5fbbbf0a1fe089e303ea5123 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:18:06 +0900 Subject: [PATCH 267/456] Move and rename initialize_files --- .../components/angular_velocity_observer.ini | 0 .../sample_antenna_radiation_pattern.csv | 0 .../components/attitude_observer.ini | 0 {data/sample/initialize_files => settings}/components/battery.ini | 0 .../components/component_interference.ini | 0 .../initialize_files => settings}/components/force_generator.ini | 0 .../initialize_files => settings}/components/gnss_receiver.ini | 0 .../components/ground_station_antenna.ini | 0 .../components/ground_station_calculator.ini | 0 .../initialize_files => settings}/components/gyro_sensor.ini | 0 .../initialize_files => settings}/components/magnetometer.ini | 0 .../initialize_files => settings}/components/magnetorquer.ini | 0 .../initialize_files => settings}/components/orbit_observer.ini | 0 .../components/pcu_initial_study.ini | 0 .../initialize_files => settings}/components/reaction_wheel.ini | 0 .../radial_force_harmonics_coefficients.csv | 0 .../radial_torque_harmonics_coefficients.csv | 0 .../components/solar_array_panel.ini | 0 .../components/spacecraft_antenna.ini | 0 .../initialize_files => settings}/components/star_sensor.ini | 0 .../initialize_files => settings}/components/sun_sensor.ini | 0 .../sample/initialize_files => settings}/components/telescope.ini | 0 .../components/thermal_components.ini | 0 .../sample/initialize_files => settings}/components/thruster.ini | 0 .../initialize_files => settings}/components/torque_generator.ini | 0 .../wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv | 0 .../components/wings_command_sender_to_c2a/example.ops | 0 .../wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini | 0 .../initialize_files => settings}/gnss/final_products/.gitkeep | 0 {data/sample/initialize_files => settings}/sample_disturbance.ini | 0 {data/sample/initialize_files => settings}/sample_gnss.ini | 0 .../initialize_files => settings}/sample_ground_station.ini | 0 .../sample_inter_satellite_communication.ini | 0 .../initialize_files => settings}/sample_local_environment.ini | 0 {data/sample/initialize_files => settings}/sample_satellite.ini | 0 .../initialize_files => settings}/sample_simulation_base.ini | 0 {data/sample/initialize_files => settings}/sample_structure.ini | 0 .../initialize_files => settings}/thermal_csv_files/cij.csv | 0 .../initialize_files => settings}/thermal_csv_files/heaters.csv | 0 .../initialize_files => settings}/thermal_csv_files/heatload.csv | 0 .../initialize_files => settings}/thermal_csv_files/node.csv | 0 .../initialize_files => settings}/thermal_csv_files/rij.csv | 0 42 files changed, 0 insertions(+), 0 deletions(-) rename {data/sample/initialize_files => settings}/components/angular_velocity_observer.ini (100%) rename {data/sample/initialize_files => settings}/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv (100%) rename {data/sample/initialize_files => settings}/components/attitude_observer.ini (100%) rename {data/sample/initialize_files => settings}/components/battery.ini (100%) rename {data/sample/initialize_files => settings}/components/component_interference.ini (100%) rename {data/sample/initialize_files => settings}/components/force_generator.ini (100%) rename {data/sample/initialize_files => settings}/components/gnss_receiver.ini (100%) rename {data/sample/initialize_files => settings}/components/ground_station_antenna.ini (100%) rename {data/sample/initialize_files => settings}/components/ground_station_calculator.ini (100%) rename {data/sample/initialize_files => settings}/components/gyro_sensor.ini (100%) rename {data/sample/initialize_files => settings}/components/magnetometer.ini (100%) rename {data/sample/initialize_files => settings}/components/magnetorquer.ini (100%) rename {data/sample/initialize_files => settings}/components/orbit_observer.ini (100%) rename {data/sample/initialize_files => settings}/components/pcu_initial_study.ini (100%) rename {data/sample/initialize_files => settings}/components/reaction_wheel.ini (100%) rename {data/sample/initialize_files => settings}/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv (100%) rename {data/sample/initialize_files => settings}/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv (100%) rename {data/sample/initialize_files => settings}/components/solar_array_panel.ini (100%) rename {data/sample/initialize_files => settings}/components/spacecraft_antenna.ini (100%) rename {data/sample/initialize_files => settings}/components/star_sensor.ini (100%) rename {data/sample/initialize_files => settings}/components/sun_sensor.ini (100%) rename {data/sample/initialize_files => settings}/components/telescope.ini (100%) rename {data/sample/initialize_files => settings}/components/thermal_components.ini (100%) rename {data/sample/initialize_files => settings}/components/thruster.ini (100%) rename {data/sample/initialize_files => settings}/components/torque_generator.ini (100%) rename {data/sample/initialize_files => settings}/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv (100%) rename {data/sample/initialize_files => settings}/components/wings_command_sender_to_c2a/example.ops (100%) rename {data/sample/initialize_files => settings}/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini (100%) rename {data/sample/initialize_files => settings}/gnss/final_products/.gitkeep (100%) rename {data/sample/initialize_files => settings}/sample_disturbance.ini (100%) rename {data/sample/initialize_files => settings}/sample_gnss.ini (100%) rename {data/sample/initialize_files => settings}/sample_ground_station.ini (100%) rename {data/sample/initialize_files => settings}/sample_inter_satellite_communication.ini (100%) rename {data/sample/initialize_files => settings}/sample_local_environment.ini (100%) rename {data/sample/initialize_files => settings}/sample_satellite.ini (100%) rename {data/sample/initialize_files => settings}/sample_simulation_base.ini (100%) rename {data/sample/initialize_files => settings}/sample_structure.ini (100%) rename {data/sample/initialize_files => settings}/thermal_csv_files/cij.csv (100%) rename {data/sample/initialize_files => settings}/thermal_csv_files/heaters.csv (100%) rename {data/sample/initialize_files => settings}/thermal_csv_files/heatload.csv (100%) rename {data/sample/initialize_files => settings}/thermal_csv_files/node.csv (100%) rename {data/sample/initialize_files => settings}/thermal_csv_files/rij.csv (100%) diff --git a/data/sample/initialize_files/components/angular_velocity_observer.ini b/settings/components/angular_velocity_observer.ini similarity index 100% rename from data/sample/initialize_files/components/angular_velocity_observer.ini rename to settings/components/angular_velocity_observer.ini diff --git a/data/sample/initialize_files/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv b/settings/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv similarity index 100% rename from data/sample/initialize_files/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv rename to settings/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv diff --git a/data/sample/initialize_files/components/attitude_observer.ini b/settings/components/attitude_observer.ini similarity index 100% rename from data/sample/initialize_files/components/attitude_observer.ini rename to settings/components/attitude_observer.ini diff --git a/data/sample/initialize_files/components/battery.ini b/settings/components/battery.ini similarity index 100% rename from data/sample/initialize_files/components/battery.ini rename to settings/components/battery.ini diff --git a/data/sample/initialize_files/components/component_interference.ini b/settings/components/component_interference.ini similarity index 100% rename from data/sample/initialize_files/components/component_interference.ini rename to settings/components/component_interference.ini diff --git a/data/sample/initialize_files/components/force_generator.ini b/settings/components/force_generator.ini similarity index 100% rename from data/sample/initialize_files/components/force_generator.ini rename to settings/components/force_generator.ini diff --git a/data/sample/initialize_files/components/gnss_receiver.ini b/settings/components/gnss_receiver.ini similarity index 100% rename from data/sample/initialize_files/components/gnss_receiver.ini rename to settings/components/gnss_receiver.ini diff --git a/data/sample/initialize_files/components/ground_station_antenna.ini b/settings/components/ground_station_antenna.ini similarity index 100% rename from data/sample/initialize_files/components/ground_station_antenna.ini rename to settings/components/ground_station_antenna.ini diff --git a/data/sample/initialize_files/components/ground_station_calculator.ini b/settings/components/ground_station_calculator.ini similarity index 100% rename from data/sample/initialize_files/components/ground_station_calculator.ini rename to settings/components/ground_station_calculator.ini diff --git a/data/sample/initialize_files/components/gyro_sensor.ini b/settings/components/gyro_sensor.ini similarity index 100% rename from data/sample/initialize_files/components/gyro_sensor.ini rename to settings/components/gyro_sensor.ini diff --git a/data/sample/initialize_files/components/magnetometer.ini b/settings/components/magnetometer.ini similarity index 100% rename from data/sample/initialize_files/components/magnetometer.ini rename to settings/components/magnetometer.ini diff --git a/data/sample/initialize_files/components/magnetorquer.ini b/settings/components/magnetorquer.ini similarity index 100% rename from data/sample/initialize_files/components/magnetorquer.ini rename to settings/components/magnetorquer.ini diff --git a/data/sample/initialize_files/components/orbit_observer.ini b/settings/components/orbit_observer.ini similarity index 100% rename from data/sample/initialize_files/components/orbit_observer.ini rename to settings/components/orbit_observer.ini diff --git a/data/sample/initialize_files/components/pcu_initial_study.ini b/settings/components/pcu_initial_study.ini similarity index 100% rename from data/sample/initialize_files/components/pcu_initial_study.ini rename to settings/components/pcu_initial_study.ini diff --git a/data/sample/initialize_files/components/reaction_wheel.ini b/settings/components/reaction_wheel.ini similarity index 100% rename from data/sample/initialize_files/components/reaction_wheel.ini rename to settings/components/reaction_wheel.ini diff --git a/data/sample/initialize_files/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv b/settings/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv similarity index 100% rename from data/sample/initialize_files/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv rename to settings/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv diff --git a/data/sample/initialize_files/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv b/settings/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv similarity index 100% rename from data/sample/initialize_files/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv rename to settings/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv diff --git a/data/sample/initialize_files/components/solar_array_panel.ini b/settings/components/solar_array_panel.ini similarity index 100% rename from data/sample/initialize_files/components/solar_array_panel.ini rename to settings/components/solar_array_panel.ini diff --git a/data/sample/initialize_files/components/spacecraft_antenna.ini b/settings/components/spacecraft_antenna.ini similarity index 100% rename from data/sample/initialize_files/components/spacecraft_antenna.ini rename to settings/components/spacecraft_antenna.ini diff --git a/data/sample/initialize_files/components/star_sensor.ini b/settings/components/star_sensor.ini similarity index 100% rename from data/sample/initialize_files/components/star_sensor.ini rename to settings/components/star_sensor.ini diff --git a/data/sample/initialize_files/components/sun_sensor.ini b/settings/components/sun_sensor.ini similarity index 100% rename from data/sample/initialize_files/components/sun_sensor.ini rename to settings/components/sun_sensor.ini diff --git a/data/sample/initialize_files/components/telescope.ini b/settings/components/telescope.ini similarity index 100% rename from data/sample/initialize_files/components/telescope.ini rename to settings/components/telescope.ini diff --git a/data/sample/initialize_files/components/thermal_components.ini b/settings/components/thermal_components.ini similarity index 100% rename from data/sample/initialize_files/components/thermal_components.ini rename to settings/components/thermal_components.ini diff --git a/data/sample/initialize_files/components/thruster.ini b/settings/components/thruster.ini similarity index 100% rename from data/sample/initialize_files/components/thruster.ini rename to settings/components/thruster.ini diff --git a/data/sample/initialize_files/components/torque_generator.ini b/settings/components/torque_generator.ini similarity index 100% rename from data/sample/initialize_files/components/torque_generator.ini rename to settings/components/torque_generator.ini diff --git a/data/sample/initialize_files/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv b/settings/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv similarity index 100% rename from data/sample/initialize_files/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv rename to settings/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv diff --git a/data/sample/initialize_files/components/wings_command_sender_to_c2a/example.ops b/settings/components/wings_command_sender_to_c2a/example.ops similarity index 100% rename from data/sample/initialize_files/components/wings_command_sender_to_c2a/example.ops rename to settings/components/wings_command_sender_to_c2a/example.ops diff --git a/data/sample/initialize_files/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini b/settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini similarity index 100% rename from data/sample/initialize_files/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini rename to settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini diff --git a/data/sample/initialize_files/gnss/final_products/.gitkeep b/settings/gnss/final_products/.gitkeep similarity index 100% rename from data/sample/initialize_files/gnss/final_products/.gitkeep rename to settings/gnss/final_products/.gitkeep diff --git a/data/sample/initialize_files/sample_disturbance.ini b/settings/sample_disturbance.ini similarity index 100% rename from data/sample/initialize_files/sample_disturbance.ini rename to settings/sample_disturbance.ini diff --git a/data/sample/initialize_files/sample_gnss.ini b/settings/sample_gnss.ini similarity index 100% rename from data/sample/initialize_files/sample_gnss.ini rename to settings/sample_gnss.ini diff --git a/data/sample/initialize_files/sample_ground_station.ini b/settings/sample_ground_station.ini similarity index 100% rename from data/sample/initialize_files/sample_ground_station.ini rename to settings/sample_ground_station.ini diff --git a/data/sample/initialize_files/sample_inter_satellite_communication.ini b/settings/sample_inter_satellite_communication.ini similarity index 100% rename from data/sample/initialize_files/sample_inter_satellite_communication.ini rename to settings/sample_inter_satellite_communication.ini diff --git a/data/sample/initialize_files/sample_local_environment.ini b/settings/sample_local_environment.ini similarity index 100% rename from data/sample/initialize_files/sample_local_environment.ini rename to settings/sample_local_environment.ini diff --git a/data/sample/initialize_files/sample_satellite.ini b/settings/sample_satellite.ini similarity index 100% rename from data/sample/initialize_files/sample_satellite.ini rename to settings/sample_satellite.ini diff --git a/data/sample/initialize_files/sample_simulation_base.ini b/settings/sample_simulation_base.ini similarity index 100% rename from data/sample/initialize_files/sample_simulation_base.ini rename to settings/sample_simulation_base.ini diff --git a/data/sample/initialize_files/sample_structure.ini b/settings/sample_structure.ini similarity index 100% rename from data/sample/initialize_files/sample_structure.ini rename to settings/sample_structure.ini diff --git a/data/sample/initialize_files/thermal_csv_files/cij.csv b/settings/thermal_csv_files/cij.csv similarity index 100% rename from data/sample/initialize_files/thermal_csv_files/cij.csv rename to settings/thermal_csv_files/cij.csv diff --git a/data/sample/initialize_files/thermal_csv_files/heaters.csv b/settings/thermal_csv_files/heaters.csv similarity index 100% rename from data/sample/initialize_files/thermal_csv_files/heaters.csv rename to settings/thermal_csv_files/heaters.csv diff --git a/data/sample/initialize_files/thermal_csv_files/heatload.csv b/settings/thermal_csv_files/heatload.csv similarity index 100% rename from data/sample/initialize_files/thermal_csv_files/heatload.csv rename to settings/thermal_csv_files/heatload.csv diff --git a/data/sample/initialize_files/thermal_csv_files/node.csv b/settings/thermal_csv_files/node.csv similarity index 100% rename from data/sample/initialize_files/thermal_csv_files/node.csv rename to settings/thermal_csv_files/node.csv diff --git a/data/sample/initialize_files/thermal_csv_files/rij.csv b/settings/thermal_csv_files/rij.csv similarity index 100% rename from data/sample/initialize_files/thermal_csv_files/rij.csv rename to settings/thermal_csv_files/rij.csv From 57efaba1a624cca36e625a5a32213ad7e8c41f31 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:19:49 +0900 Subject: [PATCH 268/456] Fix initialize_files path --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9bb75dab4..50ea99116 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -122,7 +122,7 @@ jobs: - name: fix simulation config shell: bash - working-directory: ./data/sample/initialize_files + working-directory: ./settings run: | find . -type f -name '*.ini' -exec sed -i 's/..\/..\/..\/ExtLibraries/..\/..\/ExtLibraries/g' {} \; @@ -212,7 +212,7 @@ jobs: cmake --build . - name: fix simulation config - working-directory: ./data/sample/initialize_files + working-directory: ./settings run: | find . -type f -name '*.ini' -exec sed -i 's/..\/..\/..\/ExtLibraries/..\/..\/ExtLibraries/g' {} \; From 3720ab5ab3ebaf8f65073dddd34bd999b8783145 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:20:27 +0900 Subject: [PATCH 269/456] Fix to use macro --- .../wings_command_sender_to_c2a.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini b/settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini index 0d8a2811e..22dad4d70 100644 --- a/settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini +++ b/settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini @@ -1,5 +1,5 @@ [WINGS_COMMAND_SENDER_TO_C2A] command_send_enable = ENABLE prescaler = 1 -c2a_command_database_file = ../../data/initialize_files/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv -wings_operation_file = ../../data/initialize_files/components/wings_command_sender_to_c2a/example.ops +c2a_command_database_file = INI_FILE_DIR_FROM_EXE/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv +wings_operation_file = INI_FILE_DIR_FROM_EXE/components/wings_command_sender_to_c2a/example.ops From e7b06ed16367ab1a0b770abee56bf13943806344 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:27:05 +0900 Subject: [PATCH 270/456] Add environment directory in settings --- settings/{ => environment}/sample_gnss.ini | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename settings/{ => environment}/sample_gnss.ini (100%) diff --git a/settings/sample_gnss.ini b/settings/environment/sample_gnss.ini similarity index 100% rename from settings/sample_gnss.ini rename to settings/environment/sample_gnss.ini From bcf5f6b95030344becaf6226d569d223a10b32f4 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:28:07 +0900 Subject: [PATCH 271/456] Move gnss directory --- settings/{ => environment}/gnss/final_products/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename settings/{ => environment}/gnss/final_products/.gitkeep (100%) diff --git a/settings/gnss/final_products/.gitkeep b/settings/environment/gnss/final_products/.gitkeep similarity index 100% rename from settings/gnss/final_products/.gitkeep rename to settings/environment/gnss/final_products/.gitkeep From fbe9736e0455e74a8fa7c7c23dcb913b32273a41 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:32:34 +0900 Subject: [PATCH 272/456] Make sample_satellite directory --- .../{sample_disturbance.ini => sample_satellite/disturbance.ini} | 0 .../local_environment.inii} | 0 settings/{sample_satellite.ini => sample_satellite/satellite.ini} | 0 settings/{sample_structure.ini => sample_satellite/structure.ini} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename settings/{sample_disturbance.ini => sample_satellite/disturbance.ini} (100%) rename settings/{sample_local_environment.ini => sample_satellite/local_environment.inii} (100%) rename settings/{sample_satellite.ini => sample_satellite/satellite.ini} (100%) rename settings/{sample_structure.ini => sample_satellite/structure.ini} (100%) diff --git a/settings/sample_disturbance.ini b/settings/sample_satellite/disturbance.ini similarity index 100% rename from settings/sample_disturbance.ini rename to settings/sample_satellite/disturbance.ini diff --git a/settings/sample_local_environment.ini b/settings/sample_satellite/local_environment.inii similarity index 100% rename from settings/sample_local_environment.ini rename to settings/sample_satellite/local_environment.inii diff --git a/settings/sample_satellite.ini b/settings/sample_satellite/satellite.ini similarity index 100% rename from settings/sample_satellite.ini rename to settings/sample_satellite/satellite.ini diff --git a/settings/sample_structure.ini b/settings/sample_satellite/structure.ini similarity index 100% rename from settings/sample_structure.ini rename to settings/sample_satellite/structure.ini From 50a00a3d167db97695506c4a480a4b80b05e1de5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:34:13 +0900 Subject: [PATCH 273/456] Move to sample_satellite directory --- .../components/angular_velocity_observer.ini | 0 .../sample_antenna_radiation_pattern.csv | 0 settings/{ => sample_satellite}/components/attitude_observer.ini | 0 settings/{ => sample_satellite}/components/battery.ini | 0 .../{ => sample_satellite}/components/component_interference.ini | 0 settings/{ => sample_satellite}/components/force_generator.ini | 0 settings/{ => sample_satellite}/components/gnss_receiver.ini | 0 .../{ => sample_satellite}/components/ground_station_antenna.ini | 0 .../components/ground_station_calculator.ini | 0 settings/{ => sample_satellite}/components/gyro_sensor.ini | 0 settings/{ => sample_satellite}/components/magnetometer.ini | 0 settings/{ => sample_satellite}/components/magnetorquer.ini | 0 settings/{ => sample_satellite}/components/orbit_observer.ini | 0 settings/{ => sample_satellite}/components/pcu_initial_study.ini | 0 settings/{ => sample_satellite}/components/reaction_wheel.ini | 0 .../radial_force_harmonics_coefficients.csv | 0 .../radial_torque_harmonics_coefficients.csv | 0 settings/{ => sample_satellite}/components/solar_array_panel.ini | 0 settings/{ => sample_satellite}/components/spacecraft_antenna.ini | 0 settings/{ => sample_satellite}/components/star_sensor.ini | 0 settings/{ => sample_satellite}/components/sun_sensor.ini | 0 settings/{ => sample_satellite}/components/telescope.ini | 0 settings/{ => sample_satellite}/components/thermal_components.ini | 0 settings/{ => sample_satellite}/components/thruster.ini | 0 settings/{ => sample_satellite}/components/torque_generator.ini | 0 .../wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv | 0 .../components/wings_command_sender_to_c2a/example.ops | 0 .../wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini | 0 settings/{ => sample_satellite}/thermal_csv_files/cij.csv | 0 settings/{ => sample_satellite}/thermal_csv_files/heaters.csv | 0 settings/{ => sample_satellite}/thermal_csv_files/heatload.csv | 0 settings/{ => sample_satellite}/thermal_csv_files/node.csv | 0 settings/{ => sample_satellite}/thermal_csv_files/rij.csv | 0 33 files changed, 0 insertions(+), 0 deletions(-) rename settings/{ => sample_satellite}/components/angular_velocity_observer.ini (100%) rename settings/{ => sample_satellite}/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv (100%) rename settings/{ => sample_satellite}/components/attitude_observer.ini (100%) rename settings/{ => sample_satellite}/components/battery.ini (100%) rename settings/{ => sample_satellite}/components/component_interference.ini (100%) rename settings/{ => sample_satellite}/components/force_generator.ini (100%) rename settings/{ => sample_satellite}/components/gnss_receiver.ini (100%) rename settings/{ => sample_satellite}/components/ground_station_antenna.ini (100%) rename settings/{ => sample_satellite}/components/ground_station_calculator.ini (100%) rename settings/{ => sample_satellite}/components/gyro_sensor.ini (100%) rename settings/{ => sample_satellite}/components/magnetometer.ini (100%) rename settings/{ => sample_satellite}/components/magnetorquer.ini (100%) rename settings/{ => sample_satellite}/components/orbit_observer.ini (100%) rename settings/{ => sample_satellite}/components/pcu_initial_study.ini (100%) rename settings/{ => sample_satellite}/components/reaction_wheel.ini (100%) rename settings/{ => sample_satellite}/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv (100%) rename settings/{ => sample_satellite}/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv (100%) rename settings/{ => sample_satellite}/components/solar_array_panel.ini (100%) rename settings/{ => sample_satellite}/components/spacecraft_antenna.ini (100%) rename settings/{ => sample_satellite}/components/star_sensor.ini (100%) rename settings/{ => sample_satellite}/components/sun_sensor.ini (100%) rename settings/{ => sample_satellite}/components/telescope.ini (100%) rename settings/{ => sample_satellite}/components/thermal_components.ini (100%) rename settings/{ => sample_satellite}/components/thruster.ini (100%) rename settings/{ => sample_satellite}/components/torque_generator.ini (100%) rename settings/{ => sample_satellite}/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv (100%) rename settings/{ => sample_satellite}/components/wings_command_sender_to_c2a/example.ops (100%) rename settings/{ => sample_satellite}/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini (100%) rename settings/{ => sample_satellite}/thermal_csv_files/cij.csv (100%) rename settings/{ => sample_satellite}/thermal_csv_files/heaters.csv (100%) rename settings/{ => sample_satellite}/thermal_csv_files/heatload.csv (100%) rename settings/{ => sample_satellite}/thermal_csv_files/node.csv (100%) rename settings/{ => sample_satellite}/thermal_csv_files/rij.csv (100%) diff --git a/settings/components/angular_velocity_observer.ini b/settings/sample_satellite/components/angular_velocity_observer.ini similarity index 100% rename from settings/components/angular_velocity_observer.ini rename to settings/sample_satellite/components/angular_velocity_observer.ini diff --git a/settings/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv b/settings/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv similarity index 100% rename from settings/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv rename to settings/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv diff --git a/settings/components/attitude_observer.ini b/settings/sample_satellite/components/attitude_observer.ini similarity index 100% rename from settings/components/attitude_observer.ini rename to settings/sample_satellite/components/attitude_observer.ini diff --git a/settings/components/battery.ini b/settings/sample_satellite/components/battery.ini similarity index 100% rename from settings/components/battery.ini rename to settings/sample_satellite/components/battery.ini diff --git a/settings/components/component_interference.ini b/settings/sample_satellite/components/component_interference.ini similarity index 100% rename from settings/components/component_interference.ini rename to settings/sample_satellite/components/component_interference.ini diff --git a/settings/components/force_generator.ini b/settings/sample_satellite/components/force_generator.ini similarity index 100% rename from settings/components/force_generator.ini rename to settings/sample_satellite/components/force_generator.ini diff --git a/settings/components/gnss_receiver.ini b/settings/sample_satellite/components/gnss_receiver.ini similarity index 100% rename from settings/components/gnss_receiver.ini rename to settings/sample_satellite/components/gnss_receiver.ini diff --git a/settings/components/ground_station_antenna.ini b/settings/sample_satellite/components/ground_station_antenna.ini similarity index 100% rename from settings/components/ground_station_antenna.ini rename to settings/sample_satellite/components/ground_station_antenna.ini diff --git a/settings/components/ground_station_calculator.ini b/settings/sample_satellite/components/ground_station_calculator.ini similarity index 100% rename from settings/components/ground_station_calculator.ini rename to settings/sample_satellite/components/ground_station_calculator.ini diff --git a/settings/components/gyro_sensor.ini b/settings/sample_satellite/components/gyro_sensor.ini similarity index 100% rename from settings/components/gyro_sensor.ini rename to settings/sample_satellite/components/gyro_sensor.ini diff --git a/settings/components/magnetometer.ini b/settings/sample_satellite/components/magnetometer.ini similarity index 100% rename from settings/components/magnetometer.ini rename to settings/sample_satellite/components/magnetometer.ini diff --git a/settings/components/magnetorquer.ini b/settings/sample_satellite/components/magnetorquer.ini similarity index 100% rename from settings/components/magnetorquer.ini rename to settings/sample_satellite/components/magnetorquer.ini diff --git a/settings/components/orbit_observer.ini b/settings/sample_satellite/components/orbit_observer.ini similarity index 100% rename from settings/components/orbit_observer.ini rename to settings/sample_satellite/components/orbit_observer.ini diff --git a/settings/components/pcu_initial_study.ini b/settings/sample_satellite/components/pcu_initial_study.ini similarity index 100% rename from settings/components/pcu_initial_study.ini rename to settings/sample_satellite/components/pcu_initial_study.ini diff --git a/settings/components/reaction_wheel.ini b/settings/sample_satellite/components/reaction_wheel.ini similarity index 100% rename from settings/components/reaction_wheel.ini rename to settings/sample_satellite/components/reaction_wheel.ini diff --git a/settings/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv b/settings/sample_satellite/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv similarity index 100% rename from settings/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv rename to settings/sample_satellite/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv diff --git a/settings/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv b/settings/sample_satellite/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv similarity index 100% rename from settings/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv rename to settings/sample_satellite/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv diff --git a/settings/components/solar_array_panel.ini b/settings/sample_satellite/components/solar_array_panel.ini similarity index 100% rename from settings/components/solar_array_panel.ini rename to settings/sample_satellite/components/solar_array_panel.ini diff --git a/settings/components/spacecraft_antenna.ini b/settings/sample_satellite/components/spacecraft_antenna.ini similarity index 100% rename from settings/components/spacecraft_antenna.ini rename to settings/sample_satellite/components/spacecraft_antenna.ini diff --git a/settings/components/star_sensor.ini b/settings/sample_satellite/components/star_sensor.ini similarity index 100% rename from settings/components/star_sensor.ini rename to settings/sample_satellite/components/star_sensor.ini diff --git a/settings/components/sun_sensor.ini b/settings/sample_satellite/components/sun_sensor.ini similarity index 100% rename from settings/components/sun_sensor.ini rename to settings/sample_satellite/components/sun_sensor.ini diff --git a/settings/components/telescope.ini b/settings/sample_satellite/components/telescope.ini similarity index 100% rename from settings/components/telescope.ini rename to settings/sample_satellite/components/telescope.ini diff --git a/settings/components/thermal_components.ini b/settings/sample_satellite/components/thermal_components.ini similarity index 100% rename from settings/components/thermal_components.ini rename to settings/sample_satellite/components/thermal_components.ini diff --git a/settings/components/thruster.ini b/settings/sample_satellite/components/thruster.ini similarity index 100% rename from settings/components/thruster.ini rename to settings/sample_satellite/components/thruster.ini diff --git a/settings/components/torque_generator.ini b/settings/sample_satellite/components/torque_generator.ini similarity index 100% rename from settings/components/torque_generator.ini rename to settings/sample_satellite/components/torque_generator.ini diff --git a/settings/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv b/settings/sample_satellite/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv similarity index 100% rename from settings/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv rename to settings/sample_satellite/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv diff --git a/settings/components/wings_command_sender_to_c2a/example.ops b/settings/sample_satellite/components/wings_command_sender_to_c2a/example.ops similarity index 100% rename from settings/components/wings_command_sender_to_c2a/example.ops rename to settings/sample_satellite/components/wings_command_sender_to_c2a/example.ops diff --git a/settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini b/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini similarity index 100% rename from settings/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini rename to settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini diff --git a/settings/thermal_csv_files/cij.csv b/settings/sample_satellite/thermal_csv_files/cij.csv similarity index 100% rename from settings/thermal_csv_files/cij.csv rename to settings/sample_satellite/thermal_csv_files/cij.csv diff --git a/settings/thermal_csv_files/heaters.csv b/settings/sample_satellite/thermal_csv_files/heaters.csv similarity index 100% rename from settings/thermal_csv_files/heaters.csv rename to settings/sample_satellite/thermal_csv_files/heaters.csv diff --git a/settings/thermal_csv_files/heatload.csv b/settings/sample_satellite/thermal_csv_files/heatload.csv similarity index 100% rename from settings/thermal_csv_files/heatload.csv rename to settings/sample_satellite/thermal_csv_files/heatload.csv diff --git a/settings/thermal_csv_files/node.csv b/settings/sample_satellite/thermal_csv_files/node.csv similarity index 100% rename from settings/thermal_csv_files/node.csv rename to settings/sample_satellite/thermal_csv_files/node.csv diff --git a/settings/thermal_csv_files/rij.csv b/settings/sample_satellite/thermal_csv_files/rij.csv similarity index 100% rename from settings/thermal_csv_files/rij.csv rename to settings/sample_satellite/thermal_csv_files/rij.csv From 87358f1851ffdd0c17e1149c2d87f5b158db6830 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 18:35:19 +0900 Subject: [PATCH 274/456] Make sample_ground_station directory --- .../ground_station.ini} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename settings/{sample_ground_station.ini => sample_ground_station/ground_station.ini} (100%) diff --git a/settings/sample_ground_station.ini b/settings/sample_ground_station/ground_station.ini similarity index 100% rename from settings/sample_ground_station.ini rename to settings/sample_ground_station/ground_station.ini From 20af6acc589f5a0274c9e9b5c3fff5ad4740ccc9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:02:17 +0900 Subject: [PATCH 275/456] Update file path --- settings/environment/sample_gnss.ini | 2 +- .../components/reaction_wheel.ini | 4 +- .../components/spacecraft_antenna.ini | 4 +- .../wings_command_sender_to_c2a.ini | 4 +- settings/sample_satellite/satellite.ini | 40 +++++++++---------- settings/sample_simulation_base.ini | 6 +-- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/settings/environment/sample_gnss.ini b/settings/environment/sample_gnss.ini index 88a793478..35ab917bf 100644 --- a/settings/environment/sample_gnss.ini +++ b/settings/environment/sample_gnss.ini @@ -1,5 +1,5 @@ [GNSS_SATELLITES] -directory_path = INI_FILE_DIR_FROM_EXE/gnss/final_products/ +directory_path = INI_FILE_DIR_FROM_EXE/environment/gnss/final_products/ calculation = DISABLE logging = DISABLE diff --git a/settings/sample_satellite/components/reaction_wheel.ini b/settings/sample_satellite/components/reaction_wheel.ini index 89f35cba3..0aa5a33f1 100644 --- a/settings/sample_satellite/components/reaction_wheel.ini +++ b/settings/sample_satellite/components/reaction_wheel.ini @@ -56,8 +56,8 @@ jitter_logging = DISABLE // prescaler for calculation of RW jitter // To calculate the jitter, set the update cycle to about 0.1 ms. fast_prescaler = 1 -radial_force_harmonics_coefficient_file = INI_FILE_DIR_FROM_EXE/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv -radial_torque_harmonics_coefficient_file = INI_FILE_DIR_FROM_EXE/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv +radial_force_harmonics_coefficient_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv +radial_torque_harmonics_coefficient_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv harmonics_degree = 12 considers_structural_resonance = DISABLE structural_resonance_frequency_Hz = 585.0 //[Hz] diff --git a/settings/sample_satellite/components/spacecraft_antenna.ini b/settings/sample_satellite/components/spacecraft_antenna.ini index 49bf43bc0..8f57eaf70 100644 --- a/settings/sample_satellite/components/spacecraft_antenna.ini +++ b/settings/sample_satellite/components/spacecraft_antenna.ini @@ -37,7 +37,7 @@ tx_antenna_gain_model = RADIATION_PATTERN_CSV tx_gain_dBi = 8.0 // Antenna radiation pattern CSV file path -tx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +tx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file tx_length_theta = 360 tx_length_phi = 181 @@ -65,7 +65,7 @@ rx_antenna_gain_model = RADIATION_PATTERN_CSV rx_gain_dBi = 43.27 // Antenna radiation pattern CSV file path -rx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +rx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file rx_length_theta = 360 rx_length_phi = 181 diff --git a/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini b/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini index 22dad4d70..456a9e6f2 100644 --- a/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini +++ b/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini @@ -1,5 +1,5 @@ [WINGS_COMMAND_SENDER_TO_C2A] command_send_enable = ENABLE prescaler = 1 -c2a_command_database_file = INI_FILE_DIR_FROM_EXE/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv -wings_operation_file = INI_FILE_DIR_FROM_EXE/components/wings_command_sender_to_c2a/example.ops +c2a_command_database_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv +wings_operation_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/wings_command_sender_to_c2a/example.ops diff --git a/settings/sample_satellite/satellite.ini b/settings/sample_satellite/satellite.ini index 881767e86..913947ca2 100644 --- a/settings/sample_satellite/satellite.ini +++ b/settings/sample_satellite/satellite.ini @@ -128,27 +128,27 @@ error_tolerance = 0.0001 calculation = DISABLE debug = DISABLE solar_calc_setting = DISABLE -thermal_file_directory = INI_FILE_DIR_FROM_EXE/thermal_csv_files/ +thermal_file_directory = INI_FILE_DIR_FROM_EXE/sample_satellite/thermal_csv_files/ [SETTING_FILES] -local_environment_file = INI_FILE_DIR_FROM_EXE/sample_local_environment.ini -disturbance_file = INI_FILE_DIR_FROM_EXE/sample_disturbance.ini -structure_file = INI_FILE_DIR_FROM_EXE/sample_structure.ini +local_environment_file = INI_FILE_DIR_FROM_EXE/sample_satellite/local_environment.ini +disturbance_file = INI_FILE_DIR_FROM_EXE/sample_satellite/disturbance.ini +structure_file = INI_FILE_DIR_FROM_EXE/sample_satellite/structure.ini [COMPONENT_FILES] -gyro_file = INI_FILE_DIR_FROM_EXE/components/gyro_sensor.ini -magnetometer_file = INI_FILE_DIR_FROM_EXE/components/magnetometer.ini -stt_file = INI_FILE_DIR_FROM_EXE/components/star_sensor.ini -ss_file = INI_FILE_DIR_FROM_EXE/components/sun_sensor.ini -gnss_file = INI_FILE_DIR_FROM_EXE/components/gnss_receiver.ini -magnetorquer_file = INI_FILE_DIR_FROM_EXE/components/magnetorquer.ini -rw_file = INI_FILE_DIR_FROM_EXE/components/reaction_wheel.ini -thruster_file = INI_FILE_DIR_FROM_EXE/components/thruster.ini -force_generator_file = INI_FILE_DIR_FROM_EXE/components/force_generator.ini -torque_generator_file = INI_FILE_DIR_FROM_EXE/components/torque_generator.ini -angular_velocity_observer_file = INI_FILE_DIR_FROM_EXE/components/angular_velocity_observer.ini -attitude_observer_file = INI_FILE_DIR_FROM_EXE/components/attitude_observer.ini -orbit_observer_file = INI_FILE_DIR_FROM_EXE/components/orbit_observer.ini -antenna_file = INI_FILE_DIR_FROM_EXE/components/spacecraft_antenna.ini -component_interference_file = INI_FILE_DIR_FROM_EXE/components/component_interference.ini -telescope_file = INI_FILE_DIR_FROM_EXE/components/telescope.ini +gyro_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/gyro_sensor.ini +magnetometer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/magnetometer.ini +stt_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/star_sensor.ini +ss_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/sun_sensor.ini +gnss_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/gnss_receiver.ini +magnetorquer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/magnetorquer.ini +rw_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/reaction_wheel.ini +thruster_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/thruster.ini +force_generator_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/force_generator.ini +torque_generator_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/torque_generator.ini +angular_velocity_observer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/angular_velocity_observer.ini +attitude_observer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/attitude_observer.ini +orbit_observer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/orbit_observer.ini +antenna_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/spacecraft_antenna.ini +component_interference_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/component_interference.ini +telescope_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/telescope.ini diff --git a/settings/sample_simulation_base.ini b/settings/sample_simulation_base.ini index af9ef4d67..4ebf15089 100644 --- a/settings/sample_simulation_base.ini +++ b/settings/sample_simulation_base.ini @@ -144,7 +144,7 @@ save_initialize_files = ENABLE // If you want to add a ground station, create the corresponding ground_station.ini, and specify it as ground_station_file(1), ground_station_file(2), ect. number_of_simulated_spacecraft = 1 number_of_simulated_ground_station = 1 -spacecraft_file(0) = INI_FILE_DIR_FROM_EXE/sample_satellite.ini -ground_station_file(0) = INI_FILE_DIR_FROM_EXE/sample_ground_station.ini -gnss_file = INI_FILE_DIR_FROM_EXE/sample_gnss.ini +spacecraft_file(0) = INI_FILE_DIR_FROM_EXE/sample_satellite/satellite.ini +ground_station_file(0) = INI_FILE_DIR_FROM_EXE/sample_ground_station/ground_station.ini +gnss_file = INI_FILE_DIR_FROM_EXE/environment/sample_gnss.ini log_file_save_directory = ../../logs/ From 07ae81802d4a8bf388896e8d44ceaabb50be773a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:05:51 +0900 Subject: [PATCH 276/456] Make ground_station/components --- .../components/ground_station_antenna.ini | 0 .../components/ground_station_calculator.ini | 0 settings/sample_ground_station/ground_station.ini | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename settings/{sample_satellite => sample_ground_station}/components/ground_station_antenna.ini (100%) rename settings/{sample_satellite => sample_ground_station}/components/ground_station_calculator.ini (100%) diff --git a/settings/sample_satellite/components/ground_station_antenna.ini b/settings/sample_ground_station/components/ground_station_antenna.ini similarity index 100% rename from settings/sample_satellite/components/ground_station_antenna.ini rename to settings/sample_ground_station/components/ground_station_antenna.ini diff --git a/settings/sample_satellite/components/ground_station_calculator.ini b/settings/sample_ground_station/components/ground_station_calculator.ini similarity index 100% rename from settings/sample_satellite/components/ground_station_calculator.ini rename to settings/sample_ground_station/components/ground_station_calculator.ini diff --git a/settings/sample_ground_station/ground_station.ini b/settings/sample_ground_station/ground_station.ini index ab57e1164..a44fa2f4b 100644 --- a/settings/sample_ground_station/ground_station.ini +++ b/settings/sample_ground_station/ground_station.ini @@ -8,5 +8,5 @@ height_m = 3.4 elevation_limit_angle_deg = 5.0 [COMPONENT_FILES] -ground_station_antenna_file = INI_FILE_DIR_FROM_EXE/components/ground_station_antenna.ini -ground_station_calculator_file = INI_FILE_DIR_FROM_EXE/components/ground_station_calculator.ini +ground_station_antenna_file = INI_FILE_DIR_FROM_EXE/sample_ground_station/components/ground_station_antenna.ini +ground_station_calculator_file = INI_FILE_DIR_FROM_EXE/sample_ground_station/components/ground_station_calculator.ini From 606af830878bbc5b50acdf24fc1a0bd77b139c82 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:07:18 +0900 Subject: [PATCH 277/456] Add antenna pattern for ground station --- .../sample_antenna_radiation_pattern.csv | 360 ++++++++++++++++++ .../components/ground_station_antenna.ini | 2 +- 2 files changed, 361 insertions(+), 1 deletion(-) create mode 100644 settings/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv diff --git a/settings/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv b/settings/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv new file mode 100644 index 000000000..4d9c8a515 --- /dev/null +++ b/settings/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv @@ -0,0 +1,360 @@ +-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286,-44.23151286 +-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199,-35.83994199 +-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948,-28.30746948 +-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814,-24.33666814 +-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255,-21.62374255 +-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483,-19.56161483 +-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426,-17.89851426 +-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918,-16.5054918 +-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832,-15.30759832 +-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458,-14.25739458 +-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442,-13.3229442 +-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753,-12.48171753 +-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563,-11.71722563 +-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695,-11.01703695 +-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658,-10.37154658 +-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795,-9.7731795 +-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619,-9.21585619 +-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323,-8.69462323 +-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142,-8.20539142 +-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586,-7.74474586 +-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547,-7.30980547 +-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735,-6.89811735 +-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599,-6.50757599 +-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073,-6.13636073 +-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667,-5.78288667 +-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575,-5.44576575 +-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755,-5.1237755 +-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384,-4.81583384 +-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839,-4.52097839 +-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958,-4.23834958 +-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656,-3.96717656 +-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547,-3.70676547 +-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962,-3.45648962 +-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112,-3.21578112 +-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386,-2.98412386 +-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746,-2.76104746 +-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209,-2.54612209 +-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401,-2.33895401 +-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171,-2.13918171 +-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257,-1.94647257 +-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199,-1.7605199 +-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042,-1.58104042 +-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196,-1.40777196 +-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153,-1.24047153 +-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352,-1.07891352 +-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817,-0.92288817 +-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018,-0.77220018 +-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748,-0.62666748 +-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013,-0.48612013 +-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934,-0.35039934 +-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657,-0.21935657 +-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273,-0.09285273 +0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252,0.02924252 +0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142,0.14705142 +0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887,0.2606887 +0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213,0.37026213 +0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299,0.47587299 +0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648,0.57761648 +0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218,0.67558218 +0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437,0.76985437 +0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238,0.86051238 +0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087,0.94763087 +1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017,1.03128017 +1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647,1.11152647 +1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207,1.18843207 +1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562,1.26205562 +1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231,1.33245231 +1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403,1.39967403 +1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954,1.46376954 +1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466,1.52478466 +1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237,1.58276237 +1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295,1.63774295 +1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412,1.68976412 +1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111,1.73886111 +1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681,1.78506681 +1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181,1.82841181 +1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454,1.86892454 +1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128,1.90663128 +1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631,1.94155631 +1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219,1.9737219 +2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842,2.00314842 +2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437,2.02985437 +2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643,2.05385643 +2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695,2.0751695 +2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676,2.09380676 +2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965,2.10977965 +2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797,2.12309797 +2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984,2.13376984 +2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175,2.14180175 +2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859,2.14719859 +2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363,2.14996363 +2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855,2.15009855 +2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342,2.14760342 +2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673,2.14247673 +2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538,2.13471538 +2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466,2.12431466 +2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822,2.11126822 +2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812,2.09556812 +2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474,2.07720474 +2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679,2.05616679 +2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129,2.03244129 +2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351,2.00601351 +1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695,1.97686695 +1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833,1.9449833 +1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424,1.9103424 +1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215,1.87292215 +1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851,1.83269851 +1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538,1.78964538 +1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457,1.74373457 +1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571,1.69493571 +1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616,1.64321616 +1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091,1.58854091 +1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253,1.53087253 +1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099,1.47017099 +1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936,1.4063936 +1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484,1.33949484 +1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625,1.26942625 +1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627,1.19613627 +1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006,1.11957006 +1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934,1.03966934 +0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218,0.95637218 +0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128,0.8696128 +0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132,0.77932132 +0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353,0.68542353 +0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059,0.58784059 +0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875,0.48648875 +0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899,0.38127899 +0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669,0.27211669 +0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122,0.15890122 +0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551,0.04152551 +-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445,-0.08012445 +-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009,-0.20617009 +-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091,-0.33674091 +-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505,-0.47197505 +-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004,-0.61202004 +-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359,-0.75703359 +-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446,-0.90718446 +-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342,-1.06265342 +-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436,-1.22363436 +-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549,-1.39033549 +-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072,-1.56298072 +-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112,-1.7418112 +-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703,-1.92708703 +-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922,-2.11908922 +-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196,-2.31812196 +-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508,-2.52451508 +-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697,-2.73862697 +-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479,-2.9608479 +-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038,-3.1916038 +-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066,-3.43136066 +-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965,-3.68062965 +-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303,-3.93997303 +-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111,-4.2100111 +-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304,-4.4914304 +-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338,-4.78499338 +-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991,-5.09154991 +-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108,-5.41205108 +-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582,-5.74756582 +-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011,-6.0993011 +-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267,-6.4686267 +-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565,-6.85710565 +-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237,-7.26653237 +-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051,-7.69898051 +-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398,-8.15686398 +-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554,-8.64301554 +-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954,-9.16078954 +-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823,-9.71419823 +-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574,-10.30809574 +-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126,-10.94843126 +-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514,-11.64260514 +-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282,-12.39998282 +-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584,-13.2326584 +-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955,-14.15662955 +-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191,-15.19368191 +-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686,-16.3745686 +-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605,-17.74472605 +-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284,-19.37542284 +-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739,-21.38802739 +-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132,-24.01580132 +-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577,-27.80558577 +-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542,-34.6893542 +-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754,-48.2754 +-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389,-31.65296389 +-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681,-26.29935681 +-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265,-23.01355265 +-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789,-20.63723789 +-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304,-18.77547304 +-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596,-17.24538596 +-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588,-15.9471588 +-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642,-14.82028642 +-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812,-13.82530812 +-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467,-12.93505467 +-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048,-12.13002048 +-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757,-11.39572757 +-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376,-10.72113376 +-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496,-10.09762496 +-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517,-9.5183517 +-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799,-8.97777799 +-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562,-8.47136562 +-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809,-7.99534809 +-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503,-7.54656503 +-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889,-7.12233889 +-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141,-6.72038141 +-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173,-6.33872173 +-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038,-5.97565038 +-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508,-5.62967508 +-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555,-5.29948555 +-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513,-4.98392513 +-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776,-4.68196776 +-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991,-4.3926991 +-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097,-4.11530097 +-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841,-3.84903841 +-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881,-3.59324881 +-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328,-3.3473328 +-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655,-3.11074655 +-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515,-2.88299515 +-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702,-2.66362702 +-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902,-2.45222902 +-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233,-2.24842233 +-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878,-2.05185878 +-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773,-1.86221773 +-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033,-1.6792033 +-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193,-1.50254193 +-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029,-1.33198029 +-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834,-1.1672834 +-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293,-1.00823293 +-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578,-0.85462578 +-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273,-0.70627273 +-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728,-0.56299728 +-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461,-0.42463461 +-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063,-0.29103063 +-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112,-0.16204112 +-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103,-0.03753103 +0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628,0.08262628 +0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962,0.19854962 +0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053,0.31035053 +0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338,0.4181338 +0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795,0.52199795 +0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356,0.6220356 +0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391,0.71833391 +0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489,0.81097489 +0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576,0.90003576 +0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919,0.98558919 +1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362,1.06770362 +1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347,1.14644347 +1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938,1.22186938 +1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842,1.29403842 +1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427,1.36300427 +1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742,1.42881742 +1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527,1.49152527 +1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236,1.55117236 +1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044,1.60780044 +1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862,1.66144862 +1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535,1.7121535 +1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925,1.75994925 +1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677,1.8048677 +1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848,1.84693848 +1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904,1.88618904 +1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475,1.92264475 +1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898,1.95632898 +1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315,1.98726315 +2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678,2.01546678 +2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755,2.04095755 +2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132,2.06375132 +2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224,2.08386224 +2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268,2.10130268 +2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336,2.11608336 +2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331,2.12821331 +2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993,2.13769993 +2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899,2.14454899 +2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464,2.14876464 +2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833,2.14904833 +2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271,2.14510271 +2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402,2.13852402 +2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826,2.12930826 +2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984,2.11744984 +2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152,2.10294152 +2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444,2.08577444 +2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807,2.06593807 +2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019,2.04342019 +2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684,2.01820684 +1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235,1.99028235 +1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921,1.95962921 +1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281,1.9262281 +1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779,1.89005779 +1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513,1.85109513 +1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495,1.80931495 +1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469,1.76469 +1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909,1.7171909 +1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604,1.66678604 +1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415,1.6134415 +1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092,1.55712092 +1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548,1.49778548 +1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367,1.43539367 +1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128,1.36990128 +1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117,1.30126117 +1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321,1.22942321 +1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403,1.15433403 +1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694,1.07593694 +0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165,0.99417165 +0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416,0.90897416 +0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644,0.82027644 +0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626,0.72800626 +0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869,0.6320869 +0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685,0.53243685 +0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948,0.42896948 +0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276,0.32159276 +0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879,0.21020879 +0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344,0.09471344 +-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411,-0.02500411 +-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189,-0.14906189 +-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572,-0.27758572 +-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976,-0.41070976 +-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725,-0.54857725 +-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123,-0.69134123 +-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538,-0.83916538 +-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495,-0.99222495 +-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781,-1.15070781 +-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558,-1.31481558 +-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494,-1.48476494 +-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912,-1.66078912 +-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947,-1.84313947 +-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737,-2.03208737 +-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632,-2.22792632 +-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743,-2.4309743 +-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651,-2.64157651 +-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847,-2.86010847 +-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961,-3.08697961 +-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736,-3.32263736 +-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194,-3.56757194 +-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188,-3.82232188 +-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051,-4.08748051 +-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355,-4.36370355 +-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808,-4.65171808 +-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319,-4.95233319 +-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268,-5.26645268 +-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033,-5.59509033 +-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843,-5.93938843 +-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029,-6.30064029 +-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803,-6.68031803 +-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698,-7.08010698 +-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881,-7.50194881 +-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621,-7.94809621 +-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293,-8.42118293 +-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468,-8.92431468 +-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901,-9.46118901 +-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573,-10.03625573 +-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576,-10.65493576 +-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577,-11.32392577 +-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269,-12.05163269 +-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042,-12.84881042 +-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369,-13.72952369 +-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385,-14.71266385 +-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577,-15.82444577 +-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241,-17.10276241 +-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073,-18.60535073 +-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388,-20.4266388 +-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071,-22.73742071 +-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663,-25.89882663 +-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585,-30.92474585 \ No newline at end of file diff --git a/settings/sample_ground_station/components/ground_station_antenna.ini b/settings/sample_ground_station/components/ground_station_antenna.ini index 37c50a680..c016b3365 100644 --- a/settings/sample_ground_station/components/ground_station_antenna.ini +++ b/settings/sample_ground_station/components/ground_station_antenna.ini @@ -65,7 +65,7 @@ rx_antenna_gain_model = ISOTROPIC rx_gain_dBi = 43.27 // Antenna radiation pattern CSV file path -rx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +rx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file rx_length_theta = 360 rx_length_phi = 181 From 0c33f8d19a64ff9d77fd4b6cba954f5d5cd4eb16 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:12:17 +0900 Subject: [PATCH 278/456] Fix data directory in s2e --- .../{local_environment.inii => local_environment.ini} | 0 src/s2e.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename settings/sample_satellite/{local_environment.inii => local_environment.ini} (100%) diff --git a/settings/sample_satellite/local_environment.inii b/settings/sample_satellite/local_environment.ini similarity index 100% rename from settings/sample_satellite/local_environment.inii rename to settings/sample_satellite/local_environment.ini diff --git a/src/s2e.cpp b/src/s2e.cpp index cf0bee4f4..d6d4a5486 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -46,7 +46,7 @@ int main(int argc, char *argv[]) system_clock::time_point start, end; start = system_clock::now(); - std::string data_path = "../../data/"; + std::string data_path = "../../"; std::string ini_path = INI_FILE_DIR_FROM_EXE; std::string ini_file = ini_path + "/sample_simulation_base.ini"; From 536052af9773aefc629bf4c9819a85923f8a7c44 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:22:12 +0900 Subject: [PATCH 279/456] Fix to use GITHUB_OUTPUT --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 50ea99116..023ee40e5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,8 +149,8 @@ jobs: run: | COMPILER="${{ matrix.compiler }}" read -r -a COMPILER <<< "$COMPILER" - echo "::set-output name=CC::${COMPILER[0]}" - echo "::set-output name=CXX::${COMPILER[1]}" + echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" + echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" - name: install deps run: | From dcd483986bb29eec1326d5c544e743447028fe80 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:33:30 +0900 Subject: [PATCH 280/456] Fix small --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 023ee40e5..2290e90f3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,8 +149,8 @@ jobs: run: | COMPILER="${{ matrix.compiler }}" read -r -a COMPILER <<< "$COMPILER" - echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" - echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" + echo "CC=$COMPILER[0]" >> "$GITHUB_OUTPUT" + echo "CXX=$COMPILER[1]" >> "$GITHUB_OUTPUT" - name: install deps run: | From 0bd6d364a7ac900a65e527cbda357d8b146905b1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:42:21 +0900 Subject: [PATCH 281/456] Fix small --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2290e90f3..023ee40e5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,8 +149,8 @@ jobs: run: | COMPILER="${{ matrix.compiler }}" read -r -a COMPILER <<< "$COMPILER" - echo "CC=$COMPILER[0]" >> "$GITHUB_OUTPUT" - echo "CXX=$COMPILER[1]" >> "$GITHUB_OUTPUT" + echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" + echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" - name: install deps run: | From ecf0dafc581d825d96e2621d5b7bf779cbfff956 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 20 Jul 2024 23:54:36 +0900 Subject: [PATCH 282/456] Fix small --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 023ee40e5..13e4492ea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,8 +149,8 @@ jobs: run: | COMPILER="${{ matrix.compiler }}" read -r -a COMPILER <<< "$COMPILER" - echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" - echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" + # echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" + # echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" - name: install deps run: | From 859389af346e56fcb9e8a798a6f6621d08649421 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 09:09:55 +0900 Subject: [PATCH 283/456] Fix data directory path in CI --- .github/workflows/build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 13e4492ea..b607210a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -128,9 +128,9 @@ jobs: - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') - working-directory: ./data/sample + working-directory: ./ run: | - ..\..\Debug\S2E.exe + .\Debug\S2E.exe build_s2e_linux: name: Build on Linux @@ -149,8 +149,8 @@ jobs: run: | COMPILER="${{ matrix.compiler }}" read -r -a COMPILER <<< "$COMPILER" - # echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" - # echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" + echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" + echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" - name: install deps run: | @@ -217,16 +217,16 @@ jobs: find . -type f -name '*.ini' -exec sed -i 's/..\/..\/..\/ExtLibraries/..\/..\/ExtLibraries/g' {} \; - name: run simulation(SampleSat) - working-directory: ./data/sample + working-directory: ./ run: | - ../../S2E + S2E - name: generate graph working-directory: ./scripts/Plot run: | sudo apt-get install -y gnuplot pip3 install yq - LOG=$(ls ../../data/sample/logs/logs_*/*.csv) + LOG=$(ls ../../logs/logs_*/*.csv) echo "plot $LOG" ./gen_graph.sh "${LOG}" ls From c4b4edf2987ebc0dceb39fc71d3fad37b5eb74fa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 09:15:24 +0900 Subject: [PATCH 284/456] Modify default settings directory path --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4426f1e9..e42256c80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ endif() ## Directory path for ini files if(NOT DEFINED INI_FILE_DIR_FROM_EXE) - set(INI_FILE_DIR_FROM_EXE ../../data/sample/initialize_files) + set(INI_FILE_DIR_FROM_EXE ../../settings) endif() if(NOT DEFINED EXT_LIB_DIR_FROM_EXE) From 97107aabf1c545ba98dc51478434c42fa59fa4c2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 09:51:37 +0900 Subject: [PATCH 285/456] Add EXT_LIB_DIR_FROM_EXE option to CI --- .github/workflows/build.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b607210a4..496610e26 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: build 64bit @@ -117,18 +117,11 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - - name: fix simulation config - shell: bash - working-directory: ./settings - run: | - find . -type f -name '*.ini' -exec sed -i 's/..\/..\/..\/ExtLibraries/..\/..\/ExtLibraries/g' {} \; - - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') - working-directory: ./ run: | .\Debug\S2E.exe From 57c8a857324d45e2b3346089c90c3542b3fdd635 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 10:30:33 +0900 Subject: [PATCH 286/456] Fix Linux build --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 496610e26..9c699fd80 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -122,6 +122,7 @@ jobs: - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') + working-directory: ./ run: | .\Debug\S2E.exe @@ -201,7 +202,7 @@ jobs: CC: ${{ steps.compiler.outputs.CC }} CXX: ${{ steps.compiler.outputs.CXX }} run: | - cmake . -DEXT_LIB_DIR=./ExtLibraries -D${{ matrix.build_bit }} + cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -D${{ matrix.build_bit }} cmake --build . - name: fix simulation config @@ -212,7 +213,7 @@ jobs: - name: run simulation(SampleSat) working-directory: ./ run: | - S2E + ./S2E - name: generate graph working-directory: ./scripts/Plot From 227931843ea9939bf83812a295d3382cca45cfe9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 10:45:21 +0900 Subject: [PATCH 287/456] Fix INI file path --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9c699fd80..5e920c9c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: build 64bit @@ -117,7 +117,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: run simulation(SampleSat) @@ -202,7 +202,7 @@ jobs: CC: ${{ steps.compiler.outputs.CC }} CXX: ${{ steps.compiler.outputs.CXX }} run: | - cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -D${{ matrix.build_bit }} + cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DINI_FILE_DIR_FROM_EXE=./settings -D${{ matrix.build_bit }} cmake --build . - name: fix simulation config From 60905854e202c2708cee69dcf33633d17c3306c7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 10:57:47 +0900 Subject: [PATCH 288/456] Add CORE_DIR_FROM_EXE setting in CI --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e920c9c8..bc0c0b751 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DCORE_DIR_FROM_EXE=../ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: build 64bit @@ -117,14 +117,14 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DCORE_DIR_FROM_EXE=../ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') - working-directory: ./ + working-directory: ./Debug run: | - .\Debug\S2E.exe + .\S2E.exe build_s2e_linux: name: Build on Linux @@ -202,7 +202,7 @@ jobs: CC: ${{ steps.compiler.outputs.CC }} CXX: ${{ steps.compiler.outputs.CXX }} run: | - cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DINI_FILE_DIR_FROM_EXE=./settings -D${{ matrix.build_bit }} + cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DINI_FILE_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -D${{ matrix.build_bit }} cmake --build . - name: fix simulation config From cf8aebf3c37813639aef3d23789d212013146881 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 11:00:47 +0900 Subject: [PATCH 289/456] Fix simulation config setting --- .github/workflows/build.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc0c0b751..769b9269d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -120,6 +120,11 @@ jobs: cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DCORE_DIR_FROM_EXE=../ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . + - name: fix simulation config + working-directory: ./settings + run: | + find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/.\/logs/g' {} \; + - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') working-directory: ./Debug @@ -208,7 +213,7 @@ jobs: - name: fix simulation config working-directory: ./settings run: | - find . -type f -name '*.ini' -exec sed -i 's/..\/..\/..\/ExtLibraries/..\/..\/ExtLibraries/g' {} \; + find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/.\/logs/g' {} \; - name: run simulation(SampleSat) working-directory: ./ From 8cdc86beb316ecb567a5d5e4cd30908c08e62ced Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 11:01:21 +0900 Subject: [PATCH 290/456] Fix simulation config setting --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 769b9269d..05d60651b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -123,7 +123,7 @@ jobs: - name: fix simulation config working-directory: ./settings run: | - find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/.\/logs/g' {} \; + find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/..\/logs/g' {} \; - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') From efff45b55cb2597c1d5a566a0da1bdea5d3ef533 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 11:41:43 +0900 Subject: [PATCH 291/456] Fix working directory for Win --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 05d60651b..1fe12b28f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DCORE_DIR_FROM_EXE=../ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: build 64bit @@ -117,19 +117,19 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=../settings -DCORE_DIR_FROM_EXE=../ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=../ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: fix simulation config working-directory: ./settings run: | - find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/..\/logs/g' {} \; + find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/.\/logs/g' {} \; - name: run simulation(SampleSat) if: matrix.build_bit == 'BUILD_64BIT=OFF' || (matrix.build_bit == 'BUILD_64BIT=ON' && matrix.use_c2a == 'USE_C2A=OFF') - working-directory: ./Debug + working-directory: ./ run: | - .\S2E.exe + .\Debug\S2E.exe build_s2e_linux: name: Build on Linux From 7f4afcc1b84add4277a9e3891c97365f3551e6d0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 21 Jul 2024 14:00:35 +0900 Subject: [PATCH 292/456] Revive shell:bash --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1fe12b28f..19400a55e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -121,6 +121,7 @@ jobs: cmake --build . - name: fix simulation config + shell: bash working-directory: ./settings run: | find . -type f -name '*.ini' -exec sed -i 's/..\/..\/logs/.\/logs/g' {} \; From 159361f0d0aef5420713ec6aec39a8be52510018 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 22 Jul 2024 18:19:10 +0900 Subject: [PATCH 293/456] Fix ini file name --- scripts/Plot/plot_gs_visibility.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Plot/plot_gs_visibility.py b/scripts/Plot/plot_gs_visibility.py index 1cd0ee8cc..ff218a93a 100644 --- a/scripts/Plot/plot_gs_visibility.py +++ b/scripts/Plot/plot_gs_visibility.py @@ -43,7 +43,7 @@ print("log: " + read_file_tag) # Read Gound Station position from the ini file in the logs directory -gs_ini_file_name = path_to_logs + '/' + 'logs_' + read_file_tag + "/sample_ground_station.ini" +gs_ini_file_name = path_to_logs + '/' + 'logs_' + read_file_tag + "/ground_station.ini" configur = ConfigParser(comment_prefixes=('#', ';', '//'), inline_comment_prefixes=('#', ';', '//')) configur.read(gs_ini_file_name) gs_lat_deg = configur.getfloat('GROUND_STATION_0', 'latitude_deg') From e0706c46690b2d9e29a1782470127f9a3e97f84a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:27:36 +0000 Subject: [PATCH 294/456] Update dependency numpy-stl to v3.1.2 --- scripts/Plot/Pipfile | 2 +- scripts/Plot/Pipfile.lock | 248 ++++++++++++++++++++------------------ 2 files changed, 130 insertions(+), 120 deletions(-) diff --git a/scripts/Plot/Pipfile b/scripts/Plot/Pipfile index 38356acf7..4b2737a08 100644 --- a/scripts/Plot/Pipfile +++ b/scripts/Plot/Pipfile @@ -8,7 +8,7 @@ basemap = "==1.4.1" matplotlib = "==3.7.2" numpy = "==1.24.3" pandas = "==2.0.3" -numpy-stl = "==3.0.1" +numpy-stl = "==3.1.2" numpy-quaternion = "==2023.0.4" python-utils = "==3.5.2" diff --git a/scripts/Plot/Pipfile.lock b/scripts/Plot/Pipfile.lock index 7a98a2a8a..426831690 100644 --- a/scripts/Plot/Pipfile.lock +++ b/scripts/Plot/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f4ca1dee72da4042d6b1600578b0e579b9f98edbac9f1bd220a102f936f25c76" + "sha256": "c94693aa0122b4dd9d16b46736bce49f6d7b910a0b1765e86dc1ba5b3274bd8a" }, "pipfile-spec": 6, "requires": { @@ -81,7 +81,6 @@ "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" ], - "index": "pypi", "markers": "python_version >= '3.6'", "version": "==2024.7.4" }, @@ -153,51 +152,51 @@ }, "fonttools": { "hashes": [ - "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d", - "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64", - "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2", - "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4", - "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6", - "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b", - "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f", - "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380", - "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e", - "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749", - "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20", - "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0", - "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4", - "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5", - "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206", - "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9", - "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac", - "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1", - "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce", - "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4", - "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12", - "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca", - "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d", - "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068", - "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796", - "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec", - "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea", - "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f", - "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005", - "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2", - "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06", - "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109", - "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002", - "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9", - "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a", - "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68", - "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6", - "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161", - "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd", - "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d", - "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee", - "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af" + "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122", + "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397", + "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f", + "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d", + "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60", + "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169", + "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8", + "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31", + "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923", + "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2", + "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb", + "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab", + "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb", + "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a", + "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670", + "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8", + "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407", + "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671", + "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88", + "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f", + "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f", + "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0", + "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb", + "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2", + "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d", + "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c", + "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3", + "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719", + "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749", + "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4", + "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f", + "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02", + "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58", + "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1", + "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41", + "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4", + "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb", + "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb", + "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3", + "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d", + "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d", + "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2" ], "markers": "python_version >= '3.8'", - "version": "==4.53.0" + "version": "==4.53.1" }, "importlib-resources": { "hashes": [ @@ -457,19 +456,19 @@ }, "numpy-stl": { "hashes": [ - "sha256:cd2c4b0032756bb1488559d507825b0dd8d5c2ac4a68638c2145387b2f804691", - "sha256:dd4da1a379d2632f168518be8dcd9cddd7edc6c3238094fd8d21476b3586a0bc" + "sha256:72b46950dfa3642df1c7b873cfa78a548533724b907478c567db42fdf57ee3d2", + "sha256:a55288340c837378bf44753a1c595c6823312995acda97f27ed04db4ff1d25f3" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==3.0.1" + "version": "==3.1.2" }, "packaging": { "hashes": [ "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], - "markers": "python_version >= '3.7'", + "markers": "python_version >= '3.5'", "version": "==23.2" }, "pandas": { @@ -506,78 +505,89 @@ }, "pillow": { "hashes": [ - "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c", - "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2", - "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb", - "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d", - "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa", - "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3", - "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1", - "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a", - "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd", - "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8", - "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999", - "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599", - "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936", - "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375", - "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d", - "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b", - "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60", - "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572", - "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3", - "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced", - "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f", - "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b", - "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19", - "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f", - "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d", - "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383", - "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795", - "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355", - "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57", - "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09", - "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b", - "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462", - "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf", - "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f", - "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a", - "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad", - "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9", - "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d", - "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45", - "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994", - "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d", - "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338", - "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463", - "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451", - "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591", - "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c", - "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd", - "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32", - "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9", - "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf", - "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5", - "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828", - "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3", - "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5", - "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2", - "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b", - "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2", - "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475", - "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3", - "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb", - "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef", - "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015", - "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002", - "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170", - "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84", - "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57", - "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f", - "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27", - "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a" + "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", + "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", + "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", + "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", + "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", + "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", + "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", + "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", + "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", + "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", + "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", + "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", + "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", + "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", + "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", + "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", + "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", + "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", + "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", + "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", + "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", + "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", + "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", + "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", + "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", + "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", + "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", + "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", + "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", + "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", + "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", + "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", + "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", + "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", + "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", + "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", + "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", + "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", + "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", + "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", + "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", + "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", + "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", + "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", + "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", + "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", + "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", + "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", + "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", + "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", + "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", + "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", + "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", + "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", + "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", + "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", + "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", + "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", + "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", + "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", + "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", + "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", + "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", + "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", + "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", + "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", + "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", + "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", + "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", + "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", + "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", + "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", + "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", + "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", + "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", + "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", + "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", + "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", + "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", + "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1" ], "markers": "python_version >= '3.8'", - "version": "==10.3.0" + "version": "==10.4.0" }, "pyparsing": { "hashes": [ From 5ef82688d2ae6edd1b536bee0b4aeee81251dcc0 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:02:28 +0900 Subject: [PATCH 295/456] Fix small for formatting --- src/components/real/cdh/on_board_computer_with_c2a.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/real/cdh/on_board_computer_with_c2a.hpp b/src/components/real/cdh/on_board_computer_with_c2a.hpp index dc05f6661..c4cde6047 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.hpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.hpp @@ -8,8 +8,8 @@ #include -#include "on_board_computer.hpp" #include "c2a_communication.h" +#include "on_board_computer.hpp" /* * @class ObcWithC2a From acf63dbbdbdf25d2248e4b88c97b9879eaa26e17 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:10:15 +0900 Subject: [PATCH 296/456] Rename .h to .hpp --- .../real/cdh/{c2a_communication.h => c2a_communication.hpp} | 0 src/components/real/cdh/on_board_computer_with_c2a.hpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/components/real/cdh/{c2a_communication.h => c2a_communication.hpp} (100%) diff --git a/src/components/real/cdh/c2a_communication.h b/src/components/real/cdh/c2a_communication.hpp similarity index 100% rename from src/components/real/cdh/c2a_communication.h rename to src/components/real/cdh/c2a_communication.hpp diff --git a/src/components/real/cdh/on_board_computer_with_c2a.hpp b/src/components/real/cdh/on_board_computer_with_c2a.hpp index c4cde6047..9aa143257 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.hpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.hpp @@ -8,7 +8,7 @@ #include -#include "c2a_communication.h" +#include "c2a_communication.hpp" #include "on_board_computer.hpp" /* From cfb77ac0b7c382f8fe6ea4fea973bcd30bd71c8f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:29:13 +0900 Subject: [PATCH 297/456] Move egm file to settings --- .../environment/gravity_field}/egm96_to360.ascii | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {ExtLibraries/GeoPotential => settings/environment/gravity_field}/egm96_to360.ascii (100%) diff --git a/ExtLibraries/GeoPotential/egm96_to360.ascii b/settings/environment/gravity_field/egm96_to360.ascii similarity index 100% rename from ExtLibraries/GeoPotential/egm96_to360.ascii rename to settings/environment/gravity_field/egm96_to360.ascii From b7a375de235c2af86432e42007e42e565a3ceaec Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:29:46 +0900 Subject: [PATCH 298/456] Delete GeoPotential CMake --- ExtLibraries/GeoPotential/CMakeLists.txt | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 ExtLibraries/GeoPotential/CMakeLists.txt diff --git a/ExtLibraries/GeoPotential/CMakeLists.txt b/ExtLibraries/GeoPotential/CMakeLists.txt deleted file mode 100644 index 037c56652..000000000 --- a/ExtLibraries/GeoPotential/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -project(geopotential) - -cmake_minimum_required(VERSION 3.13) - - -set(GEOPOTENTIAL_INSTALL_DIR ${EXT_LIB_DIR}/GeoPotential/) - -## install table -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/egm96_to360.ascii - DESTINATION ${GEOPOTENTIAL_INSTALL_DIR} -) From 3a96fc9fd4a54ae8540fa92c5610f1dbb4f8121d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:30:23 +0900 Subject: [PATCH 299/456] Remove Geopotential CMake call --- ExtLibraries/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/ExtLibraries/CMakeLists.txt b/ExtLibraries/CMakeLists.txt index d4b66fba9..062e93ccd 100644 --- a/ExtLibraries/CMakeLists.txt +++ b/ExtLibraries/CMakeLists.txt @@ -23,5 +23,4 @@ message("ExtLibraries install dir: ${EXT_LIB_DIR}") add_subdirectory(nrlmsise00) add_subdirectory(cspice) -add_subdirectory(GeoPotential) add_subdirectory(lunar_gravity_field) From 5fbb92b3b74494659d57e2f835e3c15e7f954937 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:41:16 +0900 Subject: [PATCH 300/456] Update download directory for lunar gravity field --- ExtLibraries/lunar_gravity_field/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ExtLibraries/lunar_gravity_field/CMakeLists.txt b/ExtLibraries/lunar_gravity_field/CMakeLists.txt index 35a6f92dc..2c5f75c56 100644 --- a/ExtLibraries/lunar_gravity_field/CMakeLists.txt +++ b/ExtLibraries/lunar_gravity_field/CMakeLists.txt @@ -4,7 +4,9 @@ cmake_minimum_required(VERSION 3.18) include(FetchContent) -set(LUNAR_GRAVITY_FIELD_INSTALL_DIR ${EXT_LIB_DIR}/lunar_gravity_field) +set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") + +set(LUNAR_GRAVITY_FIELD_INSTALL_DIR ${SETTINGS_DIR}/environment/gravity_field) set(LUNAR_GRAVITY_FIELD_URL_BASE https://pds-geosciences.wustl.edu/grail/grail-l-lgrs-5-rdr-v1/grail_1001/shadr) set(LUNAR_GRAVITY_FIELD_FILE gggrx_1200a_sha.tab) From 076b3378bbfd15e4a1e396c839e2fb2f385ccd79 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:43:02 +0900 Subject: [PATCH 301/456] Update default directory path for gravity field settings --- settings/sample_satellite/disturbance.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/sample_satellite/disturbance.ini b/settings/sample_satellite/disturbance.ini index 21bb68c1f..06564e503 100644 --- a/settings/sample_satellite/disturbance.ini +++ b/settings/sample_satellite/disturbance.ini @@ -3,14 +3,14 @@ calculation = DISABLE logging = ENABLE degree = 4 -coefficients_file_path = EXT_LIB_DIR_FROM_EXE/GeoPotential/egm96_to360.ascii +coefficients_file_path = INI_FILE_DIR_FROM_EXE/environment/gravity_field/egm96_to360.ascii [LUNAR_GRAVITY_FIELD] // Enable only when the center object is defined as the Moon calculation = DISABLE logging = ENABLE degree = 10 -coefficients_file_path = EXT_LIB_DIR_FROM_EXE/LunarGravityField/gggrx_1200a_sha.tab +coefficients_file_path = INI_FILE_DIR_FROM_EXE/environment/gravity_field/gggrx_1200a_sha.tab [MAGNETIC_DISTURBANCE] From d2ae413e9a26df24c885278f5a2b249388144fa5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:52:41 +0900 Subject: [PATCH 302/456] Move IGRF coeff files to settings --- .../environment/magnetic_field}/igrf11.coef | 0 .../environment/magnetic_field}/igrf12.coef | 0 .../environment/magnetic_field}/igrf13.coef | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {src/math_physics/geomagnetic => settings/environment/magnetic_field}/igrf11.coef (100%) rename {src/math_physics/geomagnetic => settings/environment/magnetic_field}/igrf12.coef (100%) rename {src/math_physics/geomagnetic => settings/environment/magnetic_field}/igrf13.coef (100%) diff --git a/src/math_physics/geomagnetic/igrf11.coef b/settings/environment/magnetic_field/igrf11.coef similarity index 100% rename from src/math_physics/geomagnetic/igrf11.coef rename to settings/environment/magnetic_field/igrf11.coef diff --git a/src/math_physics/geomagnetic/igrf12.coef b/settings/environment/magnetic_field/igrf12.coef similarity index 100% rename from src/math_physics/geomagnetic/igrf12.coef rename to settings/environment/magnetic_field/igrf12.coef diff --git a/src/math_physics/geomagnetic/igrf13.coef b/settings/environment/magnetic_field/igrf13.coef similarity index 100% rename from src/math_physics/geomagnetic/igrf13.coef rename to settings/environment/magnetic_field/igrf13.coef From a195423506eee9061e0d17a53fd54ccb1c6af7f6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 14:56:06 +0900 Subject: [PATCH 303/456] Update directory path to the IGRF coefficient --- settings/sample_satellite/local_environment.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sample_satellite/local_environment.ini b/settings/sample_satellite/local_environment.ini index bcd67e73c..0da4954c5 100644 --- a/settings/sample_satellite/local_environment.ini +++ b/settings/sample_satellite/local_environment.ini @@ -1,7 +1,7 @@ [MAGNETIC_FIELD_ENVIRONMENT] calculation = ENABLE logging = ENABLE -coefficient_file = CORE_DIR_FROM_EXE/src/math_physics/geomagnetic/igrf13.coef +coefficient_file = INI_FILE_DIR_FROM_EXE/environment/magnetic_field/igrf13.coef magnetic_field_random_walk_standard_deviation_nT = 10.0 magnetic_field_random_walk_limit_nT = 400.0 magnetic_field_white_noise_standard_deviation_nT = 50.0 From 7da0c37c67fe5a0299a9fca1e6591c88cb665874 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 25 Aug 2024 05:56:40 +0000 Subject: [PATCH 304/456] Update actions/setup-python action to v5.1.1 --- .github/workflows/build.yml | 2 +- .github/workflows/validate-scripts.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9bb75dab4..abfda2024 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -239,7 +239,7 @@ jobs: ver=$(grep python_version ./Pipfile | sed -e 's/^python_version\s=\s"\(.*\)"$/\1/') echo "version=$ver" >> "$GITHUB_OUTPUT" - - uses: actions/setup-python@v5.1.0 + - uses: actions/setup-python@v5.1.1 with: python-version: ${{ steps.python-version.outputs.version }} diff --git a/.github/workflows/validate-scripts.yml b/.github/workflows/validate-scripts.yml index 899eca69a..b8a576ad5 100644 --- a/.github/workflows/validate-scripts.yml +++ b/.github/workflows/validate-scripts.yml @@ -28,7 +28,7 @@ jobs: ver=$(grep python_version ./Pipfile | sed -e 's/^python_version\s=\s"\(.*\)"$/\1/') echo "version=${ver}" >> "$GITHUB_OUTPUT" - - uses: actions/setup-python@v5.1.0 + - uses: actions/setup-python@v5.1.1 with: python-version: ${{ steps.python-version.outputs.version }} From f68bf7e74974d6ad9a52ebb547299eac894c9c01 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 15:09:29 +0900 Subject: [PATCH 305/456] Add space wheather directory --- settings/environment/space_wheather/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 settings/environment/space_wheather/.gitkeep diff --git a/settings/environment/space_wheather/.gitkeep b/settings/environment/space_wheather/.gitkeep new file mode 100644 index 000000000..e69de29bb From f8ebcd9018962b6e0c78b49fa59f858595df54eb Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 15:17:59 +0900 Subject: [PATCH 306/456] Modify nrlmsise CMake --- ExtLibraries/nrlmsise00/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ExtLibraries/nrlmsise00/CMakeLists.txt b/ExtLibraries/nrlmsise00/CMakeLists.txt index 3d683c47a..fbf798d7a 100644 --- a/ExtLibraries/nrlmsise00/CMakeLists.txt +++ b/ExtLibraries/nrlmsise00/CMakeLists.txt @@ -5,7 +5,10 @@ cmake_minimum_required(VERSION 3.18) include(ExternalProject) include(FetchContent) +set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") + set(NRLMSISE_INSTALL_DIR ${EXT_LIB_DIR}/nrlmsise00) +set(TABLE_FILE_INSTALL_DIR ${SETTINGS_DIR}/environment/space_wheather) set(NRLMSISE_TABLE_URL_BASE ftp://ftp.agi.com/pub/DynamicEarthData) set(NRLMSISE_TABLE_FILE SpaceWeather-v1.2.txt) @@ -90,5 +93,5 @@ install(FILES ${NRLMSISE_TMP_DIR}/nrlmsise-00_data.c ## install table install(FILES ${NRLMSISE_TMP_DIR}/${NRLMSISE_TABLE_FILE} - DESTINATION ${NRLMSISE_INSTALL_DIR}/table + DESTINATION ${TABLE_FILE_INSTALL_DIR} ) From 31c420f09ccc0ea27fce2753a314829d8893b901 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 15:23:15 +0900 Subject: [PATCH 307/456] Update directory path for space wheather --- settings/sample_satellite/local_environment.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sample_satellite/local_environment.ini b/settings/sample_satellite/local_environment.ini index bcd67e73c..0183ecc65 100644 --- a/settings/sample_satellite/local_environment.ini +++ b/settings/sample_satellite/local_environment.ini @@ -26,7 +26,7 @@ logging = ENABLE // NRLMSISE00: NRLMSISE00 model // HARRIS_PRIESTER: Harris-Priester model model = STANDARD -nrlmsise00_table_file = EXT_LIB_DIR_FROM_EXE/nrlmsise00/table/SpaceWeather-v1.2.txt +nrlmsise00_table_file = INI_FILE_DIR_FROM_EXE/environment/space_wheather/SpaceWeather-v1.2.txt // Whether using user-defined f10.7 and ap value // Ref of f10.7: https://www.swpc.noaa.gov/phenomena/f107-cm-radio-emissions // Ref of ap: http://wdc.kugi.kyoto-u.ac.jp/kp/kpexp-j.html From 4ce4458f4ba98684e8ff74d56103cc4cd281e071 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 15:27:36 +0900 Subject: [PATCH 308/456] Fix typo --- ExtLibraries/nrlmsise00/CMakeLists.txt | 2 +- settings/environment/{space_wheather => space_weather}/.gitkeep | 0 settings/sample_satellite/local_environment.ini | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename settings/environment/{space_wheather => space_weather}/.gitkeep (100%) diff --git a/ExtLibraries/nrlmsise00/CMakeLists.txt b/ExtLibraries/nrlmsise00/CMakeLists.txt index fbf798d7a..cb256c8d2 100644 --- a/ExtLibraries/nrlmsise00/CMakeLists.txt +++ b/ExtLibraries/nrlmsise00/CMakeLists.txt @@ -8,7 +8,7 @@ include(FetchContent) set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") set(NRLMSISE_INSTALL_DIR ${EXT_LIB_DIR}/nrlmsise00) -set(TABLE_FILE_INSTALL_DIR ${SETTINGS_DIR}/environment/space_wheather) +set(TABLE_FILE_INSTALL_DIR ${SETTINGS_DIR}/environment/space_weather) set(NRLMSISE_TABLE_URL_BASE ftp://ftp.agi.com/pub/DynamicEarthData) set(NRLMSISE_TABLE_FILE SpaceWeather-v1.2.txt) diff --git a/settings/environment/space_wheather/.gitkeep b/settings/environment/space_weather/.gitkeep similarity index 100% rename from settings/environment/space_wheather/.gitkeep rename to settings/environment/space_weather/.gitkeep diff --git a/settings/sample_satellite/local_environment.ini b/settings/sample_satellite/local_environment.ini index 0183ecc65..45ef6a452 100644 --- a/settings/sample_satellite/local_environment.ini +++ b/settings/sample_satellite/local_environment.ini @@ -26,7 +26,7 @@ logging = ENABLE // NRLMSISE00: NRLMSISE00 model // HARRIS_PRIESTER: Harris-Priester model model = STANDARD -nrlmsise00_table_file = INI_FILE_DIR_FROM_EXE/environment/space_wheather/SpaceWeather-v1.2.txt +nrlmsise00_table_file = INI_FILE_DIR_FROM_EXE/environment/space_weather/SpaceWeather-v1.2.txt // Whether using user-defined f10.7 and ap value // Ref of f10.7: https://www.swpc.noaa.gov/phenomena/f107-cm-radio-emissions // Ref of ap: http://wdc.kugi.kyoto-u.ac.jp/kp/kpexp-j.html From c9e52a2f390e397a46e21f314fdc8236e778bcca Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 15:37:48 +0900 Subject: [PATCH 309/456] Fix CI --- .github/workflows/build.yml | 2 -- .github/workflows/google-test.yml | 1 - 2 files changed, 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 19400a55e..a72318e07 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -99,7 +99,6 @@ jobs: ls cspice/include ls cspice/generic_kernels ls nrlmsise00 - ls nrlmsise00/table ls nrlmsise00/lib* ls nrlmsise00/lib*/libnrlmsise00.lib ls nrlmsise00/src @@ -198,7 +197,6 @@ jobs: ls cspice/include ls cspice/generic_kernels ls nrlmsise00 - ls nrlmsise00/table ls nrlmsise00/lib* ls nrlmsise00/lib*/libnrlmsise00.a ls nrlmsise00/src diff --git a/.github/workflows/google-test.yml b/.github/workflows/google-test.yml index 5fd93f89d..aa36bc177 100644 --- a/.github/workflows/google-test.yml +++ b/.github/workflows/google-test.yml @@ -85,7 +85,6 @@ jobs: ls cspice/include ls cspice/generic_kernels ls nrlmsise00 - ls nrlmsise00/table ls nrlmsise00/lib* ls nrlmsise00/lib*/libnrlmsise00.a ls nrlmsise00/src From 7da59874ffeda36ae3c91b9c8e5e18ba9052b92c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 16:03:44 +0900 Subject: [PATCH 310/456] Add cspice directory in settings/environment --- settings/environment/cspice/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 settings/environment/cspice/.gitkeep diff --git a/settings/environment/cspice/.gitkeep b/settings/environment/cspice/.gitkeep new file mode 100644 index 000000000..e69de29bb From d7aa8efa08f55f4b2ee2b02a77701c3505a5fe09 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 16:15:36 +0900 Subject: [PATCH 311/456] Update generic kernel storing directory --- ExtLibraries/cspice/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ExtLibraries/cspice/CMakeLists.txt b/ExtLibraries/cspice/CMakeLists.txt index 43b879ee9..570dbb844 100644 --- a/ExtLibraries/cspice/CMakeLists.txt +++ b/ExtLibraries/cspice/CMakeLists.txt @@ -8,6 +8,9 @@ include(FetchContent) set(CSPICE_INSTALL_DIR ${EXT_LIB_DIR}/cspice) set(GENERIC_KERNEL_URL_BASE https://naif.jpl.nasa.gov/pub/naif/generic_kernels) +set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") +set(GENERIC_KERNEL_INSTALL_DIR ${SETTINGS_DIR}/environment/cspice) + if(WIN32) # Windows if(BUILD_64BIT) @@ -118,5 +121,5 @@ configure_file( ) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generic_kernels - DESTINATION ${CSPICE_INSTALL_DIR} + DESTINATION ${GENERIC_KERNEL_INSTALL_DIR} ) From 4cc78bf43958c1e56d6204350d6593e3f923b26a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 16:18:12 +0900 Subject: [PATCH 312/456] Update directory path for CSPICE kernels --- settings/sample_simulation_base.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/settings/sample_simulation_base.ini b/settings/sample_simulation_base.ini index 4ebf15089..aa7a914d0 100644 --- a/settings/sample_simulation_base.ini +++ b/settings/sample_simulation_base.ini @@ -115,11 +115,11 @@ rotation_mode(10) = DISABLE [CSPICE_KERNELS] // CSPICE Kernel files definition -tls = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/lsk/naif0010.tls -tpc1 = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/pck/de-403-masses.tpc -tpc2 = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/pck/gm_de431.tpc -tpc3 = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/pck/pck00010.tpc -bsp = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/spk/planets/de430.bsp +tls = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/lsk/naif0010.tls +tpc1 = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/de-403-masses.tpc +tpc2 = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/gm_de431.tpc +tpc3 = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/pck00010.tpc +bsp = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/spk/planets/de430.bsp [HIPPARCOS_CATALOGUE] From 08f4628e1c086a8ce75ab434d16fdf27c950afe7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 16:29:11 +0900 Subject: [PATCH 313/456] Add star catalogue directory --- settings/environment/star_catalogue/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 settings/environment/star_catalogue/.gitkeep diff --git a/settings/environment/star_catalogue/.gitkeep b/settings/environment/star_catalogue/.gitkeep new file mode 100644 index 000000000..e69de29bb From 5ebaedfe06baa40f1937c866294d41f6c581e277 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 16:32:47 +0900 Subject: [PATCH 314/456] Fix hip catalogue download directory --- scripts/Common/download_HIPcatalogue.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Common/download_HIPcatalogue.sh b/scripts/Common/download_HIPcatalogue.sh index 84f5f00ed..8afea5f12 100755 --- a/scripts/Common/download_HIPcatalogue.sh +++ b/scripts/Common/download_HIPcatalogue.sh @@ -2,8 +2,8 @@ cd `dirname $0` #set variables -DIR_TMP=../../../ExtLibraries/tmp_hipcatalogue/ -DIR_HIPCATALOGUE=../../../ExtLibraries/HipparcosCatalogue/ +DIR_TMP=./tmp_hipcatalogue/ +DIR_HIPCATALOGUE=../../settings/environment/star_catalogue/ mkdir -p $DIR_TMP mkdir -p $DIR_HIPCATALOGUE From 817965ace0ecd7d8676ea3f0da40a4ef45e132c1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 16:34:55 +0900 Subject: [PATCH 315/456] Update directory path to the hip catalogue --- settings/sample_simulation_base.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sample_simulation_base.ini b/settings/sample_simulation_base.ini index 4ebf15089..2027cfb2c 100644 --- a/settings/sample_simulation_base.ini +++ b/settings/sample_simulation_base.ini @@ -123,7 +123,7 @@ bsp = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/spk/planets/de430.bsp [HIPPARCOS_CATALOGUE] -catalogue_file_path = EXT_LIB_DIR_FROM_EXE/HipparcosCatalogue/hip_main.csv +catalogue_file_path = INI_FILE_DIR_FROM_EXE/environment/star_catalogue/hip_main.csv max_magnitude = 3.0 // Max magnitude to read from Hip catalog calculation = DISABLE logging = DISABLE From 4804ab6b3699b27fcd62bfc9c7ab3bc58d4af4c3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 17:10:51 +0900 Subject: [PATCH 316/456] Fix to path reviewdog --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index abfda2024..cb1e39408 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,8 +149,8 @@ jobs: run: | COMPILER="${{ matrix.compiler }}" read -r -a COMPILER <<< "$COMPILER" - echo "::set-output name=CC::${COMPILER[0]}" - echo "::set-output name=CXX::${COMPILER[1]}" + echo "CC=${COMPILER[0]}" >> "$GITHUB_OUTPUT" + echo "CXX=${COMPILER[1]}" >> "$GITHUB_OUTPUT" - name: install deps run: | From 254cd7806b911c843434c8c8672d18651aaa2507 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 22:35:06 +0900 Subject: [PATCH 317/456] Add gitignore for new setting files --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 956b6a2bf..f88fd866e 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,9 @@ Icon # Python __pycache__/ + +# Setting files +settings/environment/cspice +settings/environment/space_weather +settings/environment/gravity_field +settings/environment/star_catalogue From e8646bfeebbe9562f1456808d29350b7ff2a83f7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 22:41:26 +0900 Subject: [PATCH 318/456] Rename INI_FILE_DIR_FROM_EXE to SETTINGS_DIR_FROM_EXE --- CMakeLists.txt | 4 +- common.cmake | 2 +- settings/environment/sample_gnss.ini | 2 +- .../components/ground_station_antenna.ini | 4 +- .../sample_ground_station/ground_station.ini | 4 +- .../components/reaction_wheel.ini | 4 +- .../components/spacecraft_antenna.ini | 4 +- .../wings_command_sender_to_c2a.ini | 4 +- settings/sample_satellite/disturbance.ini | 4 +- .../sample_satellite/local_environment.ini | 4 +- settings/sample_satellite/satellite.ini | 40 +++++++++---------- settings/sample_simulation_base.ini | 18 ++++----- src/s2e.cpp | 2 +- .../initialize_file_access.cpp | 4 +- 14 files changed, 50 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5eb89eb14..0810da767 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,8 +41,8 @@ if(NOT DEFINED C2A_NAME) endif() ## Directory path for ini files -if(NOT DEFINED INI_FILE_DIR_FROM_EXE) - set(INI_FILE_DIR_FROM_EXE ../../settings) +if(NOT DEFINED SETTINGS_DIR_FROM_EXE) + set(SETTINGS_DIR_FROM_EXE ../../settings) endif() if(NOT DEFINED EXT_LIB_DIR_FROM_EXE) diff --git a/common.cmake b/common.cmake index fcc983a70..84163c86a 100644 --- a/common.cmake +++ b/common.cmake @@ -8,7 +8,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC ${S2E_DIR}/src) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) # Directory path setting -target_compile_definitions(${PROJECT_NAME} PRIVATE "INI_FILE_DIR_FROM_EXE=\"${INI_FILE_DIR_FROM_EXE}\"") +target_compile_definitions(${PROJECT_NAME} PRIVATE "SETTINGS_DIR_FROM_EXE=\"${SETTINGS_DIR_FROM_EXE}\"") target_compile_definitions(${PROJECT_NAME} PRIVATE "EXT_LIB_DIR_FROM_EXE=\"${EXT_LIB_DIR_FROM_EXE}\"") target_compile_definitions(${PROJECT_NAME} PRIVATE "CORE_DIR_FROM_EXE=\"${CORE_DIR_FROM_EXE}\"") diff --git a/settings/environment/sample_gnss.ini b/settings/environment/sample_gnss.ini index 35ab917bf..875e031cf 100644 --- a/settings/environment/sample_gnss.ini +++ b/settings/environment/sample_gnss.ini @@ -1,5 +1,5 @@ [GNSS_SATELLITES] -directory_path = INI_FILE_DIR_FROM_EXE/environment/gnss/final_products/ +directory_path = SETTINGS_DIR_FROM_EXE/environment/gnss/final_products/ calculation = DISABLE logging = DISABLE diff --git a/settings/sample_ground_station/components/ground_station_antenna.ini b/settings/sample_ground_station/components/ground_station_antenna.ini index c016b3365..efba3beae 100644 --- a/settings/sample_ground_station/components/ground_station_antenna.ini +++ b/settings/sample_ground_station/components/ground_station_antenna.ini @@ -37,7 +37,7 @@ tx_antenna_gain_model = ISOTROPIC tx_gain_dBi = 12.0 // Antenna radiation pattern CSV file path -tx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +tx_antenna_radiation_pattern_file = SETTINGS_DIR_FROM_EXE/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file tx_length_theta = 360 tx_length_phi = 181 @@ -65,7 +65,7 @@ rx_antenna_gain_model = ISOTROPIC rx_gain_dBi = 43.27 // Antenna radiation pattern CSV file path -rx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +rx_antenna_radiation_pattern_file = SETTINGS_DIR_FROM_EXE/sample_ground_station/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file rx_length_theta = 360 rx_length_phi = 181 diff --git a/settings/sample_ground_station/ground_station.ini b/settings/sample_ground_station/ground_station.ini index a44fa2f4b..d4b20b69e 100644 --- a/settings/sample_ground_station/ground_station.ini +++ b/settings/sample_ground_station/ground_station.ini @@ -8,5 +8,5 @@ height_m = 3.4 elevation_limit_angle_deg = 5.0 [COMPONENT_FILES] -ground_station_antenna_file = INI_FILE_DIR_FROM_EXE/sample_ground_station/components/ground_station_antenna.ini -ground_station_calculator_file = INI_FILE_DIR_FROM_EXE/sample_ground_station/components/ground_station_calculator.ini +ground_station_antenna_file = SETTINGS_DIR_FROM_EXE/sample_ground_station/components/ground_station_antenna.ini +ground_station_calculator_file = SETTINGS_DIR_FROM_EXE/sample_ground_station/components/ground_station_calculator.ini diff --git a/settings/sample_satellite/components/reaction_wheel.ini b/settings/sample_satellite/components/reaction_wheel.ini index 0aa5a33f1..25c687e00 100644 --- a/settings/sample_satellite/components/reaction_wheel.ini +++ b/settings/sample_satellite/components/reaction_wheel.ini @@ -56,8 +56,8 @@ jitter_logging = DISABLE // prescaler for calculation of RW jitter // To calculate the jitter, set the update cycle to about 0.1 ms. fast_prescaler = 1 -radial_force_harmonics_coefficient_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv -radial_torque_harmonics_coefficient_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv +radial_force_harmonics_coefficient_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/rw_disturbance_csv_files/radial_force_harmonics_coefficients.csv +radial_torque_harmonics_coefficient_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/rw_disturbance_csv_files/radial_torque_harmonics_coefficients.csv harmonics_degree = 12 considers_structural_resonance = DISABLE structural_resonance_frequency_Hz = 585.0 //[Hz] diff --git a/settings/sample_satellite/components/spacecraft_antenna.ini b/settings/sample_satellite/components/spacecraft_antenna.ini index 8f57eaf70..4464043ba 100644 --- a/settings/sample_satellite/components/spacecraft_antenna.ini +++ b/settings/sample_satellite/components/spacecraft_antenna.ini @@ -37,7 +37,7 @@ tx_antenna_gain_model = RADIATION_PATTERN_CSV tx_gain_dBi = 8.0 // Antenna radiation pattern CSV file path -tx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +tx_antenna_radiation_pattern_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file tx_length_theta = 360 tx_length_phi = 181 @@ -65,7 +65,7 @@ rx_antenna_gain_model = RADIATION_PATTERN_CSV rx_gain_dBi = 43.27 // Antenna radiation pattern CSV file path -rx_antenna_radiation_pattern_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv +rx_antenna_radiation_pattern_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/antenna_radiation_pattern_csv_files/sample_antenna_radiation_pattern.csv // General information of the CSV file rx_length_theta = 360 rx_length_phi = 181 diff --git a/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini b/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini index 456a9e6f2..99aedf387 100644 --- a/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini +++ b/settings/sample_satellite/components/wings_command_sender_to_c2a/wings_command_sender_to_c2a.ini @@ -1,5 +1,5 @@ [WINGS_COMMAND_SENDER_TO_C2A] command_send_enable = ENABLE prescaler = 1 -c2a_command_database_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv -wings_operation_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/wings_command_sender_to_c2a/example.ops +c2a_command_database_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/wings_command_sender_to_c2a/SAMPLE_MOBC_CMD_DB_CMD_DB.csv +wings_operation_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/wings_command_sender_to_c2a/example.ops diff --git a/settings/sample_satellite/disturbance.ini b/settings/sample_satellite/disturbance.ini index 06564e503..0c98d04e2 100644 --- a/settings/sample_satellite/disturbance.ini +++ b/settings/sample_satellite/disturbance.ini @@ -3,14 +3,14 @@ calculation = DISABLE logging = ENABLE degree = 4 -coefficients_file_path = INI_FILE_DIR_FROM_EXE/environment/gravity_field/egm96_to360.ascii +coefficients_file_path = SETTINGS_DIR_FROM_EXE/environment/gravity_field/egm96_to360.ascii [LUNAR_GRAVITY_FIELD] // Enable only when the center object is defined as the Moon calculation = DISABLE logging = ENABLE degree = 10 -coefficients_file_path = INI_FILE_DIR_FROM_EXE/environment/gravity_field/gggrx_1200a_sha.tab +coefficients_file_path = SETTINGS_DIR_FROM_EXE/environment/gravity_field/gggrx_1200a_sha.tab [MAGNETIC_DISTURBANCE] diff --git a/settings/sample_satellite/local_environment.ini b/settings/sample_satellite/local_environment.ini index 69929e7a7..fe0da8b26 100644 --- a/settings/sample_satellite/local_environment.ini +++ b/settings/sample_satellite/local_environment.ini @@ -1,7 +1,7 @@ [MAGNETIC_FIELD_ENVIRONMENT] calculation = ENABLE logging = ENABLE -coefficient_file = INI_FILE_DIR_FROM_EXE/environment/magnetic_field/igrf13.coef +coefficient_file = SETTINGS_DIR_FROM_EXE/environment/magnetic_field/igrf13.coef magnetic_field_random_walk_standard_deviation_nT = 10.0 magnetic_field_random_walk_limit_nT = 400.0 magnetic_field_white_noise_standard_deviation_nT = 50.0 @@ -26,7 +26,7 @@ logging = ENABLE // NRLMSISE00: NRLMSISE00 model // HARRIS_PRIESTER: Harris-Priester model model = STANDARD -nrlmsise00_table_file = INI_FILE_DIR_FROM_EXE/environment/space_weather/SpaceWeather-v1.2.txt +nrlmsise00_table_file = SETTINGS_DIR_FROM_EXE/environment/space_weather/SpaceWeather-v1.2.txt // Whether using user-defined f10.7 and ap value // Ref of f10.7: https://www.swpc.noaa.gov/phenomena/f107-cm-radio-emissions // Ref of ap: http://wdc.kugi.kyoto-u.ac.jp/kp/kpexp-j.html diff --git a/settings/sample_satellite/satellite.ini b/settings/sample_satellite/satellite.ini index 913947ca2..1c0677570 100644 --- a/settings/sample_satellite/satellite.ini +++ b/settings/sample_satellite/satellite.ini @@ -128,27 +128,27 @@ error_tolerance = 0.0001 calculation = DISABLE debug = DISABLE solar_calc_setting = DISABLE -thermal_file_directory = INI_FILE_DIR_FROM_EXE/sample_satellite/thermal_csv_files/ +thermal_file_directory = SETTINGS_DIR_FROM_EXE/sample_satellite/thermal_csv_files/ [SETTING_FILES] -local_environment_file = INI_FILE_DIR_FROM_EXE/sample_satellite/local_environment.ini -disturbance_file = INI_FILE_DIR_FROM_EXE/sample_satellite/disturbance.ini -structure_file = INI_FILE_DIR_FROM_EXE/sample_satellite/structure.ini +local_environment_file = SETTINGS_DIR_FROM_EXE/sample_satellite/local_environment.ini +disturbance_file = SETTINGS_DIR_FROM_EXE/sample_satellite/disturbance.ini +structure_file = SETTINGS_DIR_FROM_EXE/sample_satellite/structure.ini [COMPONENT_FILES] -gyro_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/gyro_sensor.ini -magnetometer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/magnetometer.ini -stt_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/star_sensor.ini -ss_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/sun_sensor.ini -gnss_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/gnss_receiver.ini -magnetorquer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/magnetorquer.ini -rw_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/reaction_wheel.ini -thruster_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/thruster.ini -force_generator_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/force_generator.ini -torque_generator_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/torque_generator.ini -angular_velocity_observer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/angular_velocity_observer.ini -attitude_observer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/attitude_observer.ini -orbit_observer_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/orbit_observer.ini -antenna_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/spacecraft_antenna.ini -component_interference_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/component_interference.ini -telescope_file = INI_FILE_DIR_FROM_EXE/sample_satellite/components/telescope.ini +gyro_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/gyro_sensor.ini +magnetometer_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/magnetometer.ini +stt_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/star_sensor.ini +ss_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/sun_sensor.ini +gnss_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/gnss_receiver.ini +magnetorquer_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/magnetorquer.ini +rw_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/reaction_wheel.ini +thruster_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/thruster.ini +force_generator_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/force_generator.ini +torque_generator_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/torque_generator.ini +angular_velocity_observer_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/angular_velocity_observer.ini +attitude_observer_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/attitude_observer.ini +orbit_observer_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/orbit_observer.ini +antenna_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/spacecraft_antenna.ini +component_interference_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/component_interference.ini +telescope_file = SETTINGS_DIR_FROM_EXE/sample_satellite/components/telescope.ini diff --git a/settings/sample_simulation_base.ini b/settings/sample_simulation_base.ini index bf66c7ab4..891544bd6 100644 --- a/settings/sample_simulation_base.ini +++ b/settings/sample_simulation_base.ini @@ -115,15 +115,15 @@ rotation_mode(10) = DISABLE [CSPICE_KERNELS] // CSPICE Kernel files definition -tls = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/lsk/naif0010.tls -tpc1 = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/de-403-masses.tpc -tpc2 = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/gm_de431.tpc -tpc3 = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/pck00010.tpc -bsp = INI_FILE_DIR_FROM_EXE/environment/cspice/generic_kernels/spk/planets/de430.bsp +tls = SETTINGS_DIR_FROM_EXE/environment/cspice/generic_kernels/lsk/naif0010.tls +tpc1 = SETTINGS_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/de-403-masses.tpc +tpc2 = SETTINGS_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/gm_de431.tpc +tpc3 = SETTINGS_DIR_FROM_EXE/environment/cspice/generic_kernels/pck/pck00010.tpc +bsp = SETTINGS_DIR_FROM_EXE/environment/cspice/generic_kernels/spk/planets/de430.bsp [HIPPARCOS_CATALOGUE] -catalogue_file_path = INI_FILE_DIR_FROM_EXE/environment/star_catalogue/hip_main.csv +catalogue_file_path = SETTINGS_DIR_FROM_EXE/environment/star_catalogue/hip_main.csv max_magnitude = 3.0 // Max magnitude to read from Hip catalog calculation = DISABLE logging = DISABLE @@ -144,7 +144,7 @@ save_initialize_files = ENABLE // If you want to add a ground station, create the corresponding ground_station.ini, and specify it as ground_station_file(1), ground_station_file(2), ect. number_of_simulated_spacecraft = 1 number_of_simulated_ground_station = 1 -spacecraft_file(0) = INI_FILE_DIR_FROM_EXE/sample_satellite/satellite.ini -ground_station_file(0) = INI_FILE_DIR_FROM_EXE/sample_ground_station/ground_station.ini -gnss_file = INI_FILE_DIR_FROM_EXE/environment/sample_gnss.ini +spacecraft_file(0) = SETTINGS_DIR_FROM_EXE/sample_satellite/satellite.ini +ground_station_file(0) = SETTINGS_DIR_FROM_EXE/sample_ground_station/ground_station.ini +gnss_file = SETTINGS_DIR_FROM_EXE/environment/sample_gnss.ini log_file_save_directory = ../../logs/ diff --git a/src/s2e.cpp b/src/s2e.cpp index d6d4a5486..960452763 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -47,7 +47,7 @@ int main(int argc, char *argv[]) start = system_clock::now(); std::string data_path = "../../"; - std::string ini_path = INI_FILE_DIR_FROM_EXE; + std::string ini_path = SETTINGS_DIR_FROM_EXE; std::string ini_file = ini_path + "/sample_simulation_base.ini"; // Parsing arguments: SatAttSim [ini_file] diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index a9261c2dc..e25f89583 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -165,8 +165,8 @@ std::string IniAccess::ReadString(const char* section_name, const char* key_name std::regex inline_comment_pattern("\\s*//.*"); value = std::regex_replace(value, inline_comment_pattern, ""); // INI_FILE_DIR - std::string ini_path = INI_FILE_DIR_FROM_EXE; - value = std::regex_replace(value, std::regex("INI_FILE_DIR_FROM_EXE"), ini_path); + std::string ini_path = SETTINGS_DIR_FROM_EXE; + value = std::regex_replace(value, std::regex("SETTINGS_DIR_FROM_EXE"), ini_path); // EXT_LIB_DIR std::string ext_lib_path = EXT_LIB_DIR_FROM_EXE; value = std::regex_replace(value, std::regex("EXT_LIB_DIR_FROM_EXE"), ext_lib_path); From 0c9ddc30d9c1c79dd7ba483722e1aa9e568ec468 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 22:46:38 +0900 Subject: [PATCH 319/456] Fix Actions setting --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a72318e07..22fc7babf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -108,7 +108,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DSETTINGS_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: build 64bit @@ -116,7 +116,7 @@ jobs: shell: cmd run: | cl.exe - cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DINI_FILE_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} + cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DSETTINGS_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DFLIGHT_SW_DIR=./c2a-core -DC2A_NAME=Examples/minimum_user -D${{ matrix.use_c2a }} -D${{ matrix.build_bit }} cmake --build . - name: fix simulation config @@ -206,7 +206,7 @@ jobs: CC: ${{ steps.compiler.outputs.CC }} CXX: ${{ steps.compiler.outputs.CXX }} run: | - cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DINI_FILE_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -D${{ matrix.build_bit }} + cmake . -DEXT_LIB_DIR=./ExtLibraries -DEXT_LIB_DIR_FROM_EXE=./ExtLibraries -DSETTINGS_DIR_FROM_EXE=./settings -DCORE_DIR_FROM_EXE=./ -D${{ matrix.build_bit }} cmake --build . - name: fix simulation config From f5ee3069bbcd6227aa528c6076226fbc81b00cfc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 23:08:45 +0900 Subject: [PATCH 320/456] modify extlib directory definition --- ExtLibraries/CMakeLists.txt | 5 +++++ ExtLibraries/cspice/CMakeLists.txt | 1 - ExtLibraries/lunar_gravity_field/CMakeLists.txt | 2 -- ExtLibraries/nrlmsise00/CMakeLists.txt | 2 -- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ExtLibraries/CMakeLists.txt b/ExtLibraries/CMakeLists.txt index 062e93ccd..1723ecb87 100644 --- a/ExtLibraries/CMakeLists.txt +++ b/ExtLibraries/CMakeLists.txt @@ -16,8 +16,13 @@ if(NOT DEFINED EXT_LIB_DIR) set(EXT_LIB_DIR "${CMAKE_CURRENT_LIST_DIR}/../../ExtLibraries/") endif() +if(NOT DEFINED SETTINGS_DIR) + set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../settings/") +endif() + # windows path string(REPLACE "\\" "/" EXT_LIB_DIR ${EXT_LIB_DIR}) +string(REPLACE "\\" "/" SETTINGS_DIR ${SETTINGS_DIR}) message("ExtLibraries install dir: ${EXT_LIB_DIR}") diff --git a/ExtLibraries/cspice/CMakeLists.txt b/ExtLibraries/cspice/CMakeLists.txt index 570dbb844..68247c39b 100644 --- a/ExtLibraries/cspice/CMakeLists.txt +++ b/ExtLibraries/cspice/CMakeLists.txt @@ -8,7 +8,6 @@ include(FetchContent) set(CSPICE_INSTALL_DIR ${EXT_LIB_DIR}/cspice) set(GENERIC_KERNEL_URL_BASE https://naif.jpl.nasa.gov/pub/naif/generic_kernels) -set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") set(GENERIC_KERNEL_INSTALL_DIR ${SETTINGS_DIR}/environment/cspice) if(WIN32) diff --git a/ExtLibraries/lunar_gravity_field/CMakeLists.txt b/ExtLibraries/lunar_gravity_field/CMakeLists.txt index 2c5f75c56..271b1faa9 100644 --- a/ExtLibraries/lunar_gravity_field/CMakeLists.txt +++ b/ExtLibraries/lunar_gravity_field/CMakeLists.txt @@ -4,8 +4,6 @@ cmake_minimum_required(VERSION 3.18) include(FetchContent) -set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") - set(LUNAR_GRAVITY_FIELD_INSTALL_DIR ${SETTINGS_DIR}/environment/gravity_field) set(LUNAR_GRAVITY_FIELD_URL_BASE https://pds-geosciences.wustl.edu/grail/grail-l-lgrs-5-rdr-v1/grail_1001/shadr) diff --git a/ExtLibraries/nrlmsise00/CMakeLists.txt b/ExtLibraries/nrlmsise00/CMakeLists.txt index cb256c8d2..ee49b64d9 100644 --- a/ExtLibraries/nrlmsise00/CMakeLists.txt +++ b/ExtLibraries/nrlmsise00/CMakeLists.txt @@ -5,8 +5,6 @@ cmake_minimum_required(VERSION 3.18) include(ExternalProject) include(FetchContent) -set(SETTINGS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../settings/") - set(NRLMSISE_INSTALL_DIR ${EXT_LIB_DIR}/nrlmsise00) set(TABLE_FILE_INSTALL_DIR ${SETTINGS_DIR}/environment/space_weather) From f518c3c23d6ff3be3e41bec2d2a9654cd81ce92a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 23:22:48 +0900 Subject: [PATCH 321/456] Add setting file copy when cache is available --- .github/workflows/build.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a72318e07..fa11509f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -90,6 +90,7 @@ jobs: working-directory: ./ExtLibraries run: | cmake --install . + - name: check extlib shell: powershell working-directory: ./ExtLibraries @@ -103,6 +104,13 @@ jobs: ls nrlmsise00/lib*/libnrlmsise00.lib ls nrlmsise00/src + - name: copy to settings + if: steps.cache-extlib.outputs.cache-hit = 'true' + shell: powershell + working-directory: ./ExtLibraries + run: | + cp -r "cspice/generic_kernels" "../settings/cspice/generic_kernels" + - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' shell: cmd @@ -189,6 +197,7 @@ jobs: working-directory: ./ExtLibraries run: | cmake --install . + - name: check extlib working-directory: ./ExtLibraries run: | @@ -201,6 +210,12 @@ jobs: ls nrlmsise00/lib*/libnrlmsise00.a ls nrlmsise00/src + - name: copy to settings + if: steps.cache-extlib.outputs.cache-hit = 'true' + working-directory: ./ExtLibraries + run: | + cp -r "cspice/generic_kernels" "../settings/cspice/generic_kernels" + - name: build env: CC: ${{ steps.compiler.outputs.CC }} From e51be0d63440a730c53541764c915cc8832cf081 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 23:26:55 +0900 Subject: [PATCH 322/456] Fix small --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fa11509f2..eee8ec36d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -105,7 +105,7 @@ jobs: ls nrlmsise00/src - name: copy to settings - if: steps.cache-extlib.outputs.cache-hit = 'true' + if: steps.cache-extlib.outputs.cache-hit == 'true' shell: powershell working-directory: ./ExtLibraries run: | @@ -211,7 +211,7 @@ jobs: ls nrlmsise00/src - name: copy to settings - if: steps.cache-extlib.outputs.cache-hit = 'true' + if: steps.cache-extlib.outputs.cache-hit == 'true' working-directory: ./ExtLibraries run: | cp -r "cspice/generic_kernels" "../settings/cspice/generic_kernels" From eaa00e547017fd977d46b73c47a491ba2a1b8155 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 23:41:17 +0900 Subject: [PATCH 323/456] Fix directory --- .github/workflows/build.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eee8ec36d..d6327a8f1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -107,9 +107,8 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' shell: powershell - working-directory: ./ExtLibraries run: | - cp -r "cspice/generic_kernels" "../settings/cspice/generic_kernels" + cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' @@ -212,9 +211,8 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' - working-directory: ./ExtLibraries - run: | - cp -r "cspice/generic_kernels" "../settings/cspice/generic_kernels" + run: | + cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" - name: build env: From 48b4e05fc485dec0fac5c7ebd1b23b32119412f5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 23:48:44 +0900 Subject: [PATCH 324/456] Add copied file checking --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6327a8f1..ffceae265 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,6 +109,7 @@ jobs: shell: powershell run: | cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" + ls ./settings/cspice - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' From 8d40c5e33332dacb81d32d640580c93c19d5f3b2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sun, 25 Aug 2024 23:55:15 +0900 Subject: [PATCH 325/456] Add copied file checking --- .github/workflows/build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ffceae265..1d310d5f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -108,8 +108,12 @@ jobs: if: steps.cache-extlib.outputs.cache-hit == 'true' shell: powershell run: | + ls ./settings/cspice cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" ls ./settings/cspice + ls ./settings/cspice/lsk + ls ./settings/cspice/pck + ls ./settings/cspice/spk - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' @@ -213,7 +217,12 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' run: | + ls ./settings/cspice cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" + ls ./settings/cspice + ls ./settings/cspice/lsk + ls ./settings/cspice/pck + ls ./settings/cspice/spk - name: build env: From 098952ecbde70b183d5ff94a3db791cb63be3823 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 26 Aug 2024 01:43:43 +0900 Subject: [PATCH 326/456] Fix directory --- .github/workflows/build.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1d310d5f8..8da7e8ae6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -107,13 +107,14 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' shell: powershell + working-directory: ./ExtLibraries run: | - ls ./settings/cspice - cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" - ls ./settings/cspice - ls ./settings/cspice/lsk - ls ./settings/cspice/pck - ls ./settings/cspice/spk + ls ../settings/cspice + cp -r "./cspice/generic_kernels" "../settings/cspice" + ls ../settings/cspice + ls ../settings/cspice/lsk + ls ../settings/cspice/pck + ls ../settings/cspice/spk - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' @@ -216,13 +217,14 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' + working-directory: ./ExtLibraries run: | - ls ./settings/cspice - cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/cspice" - ls ./settings/cspice - ls ./settings/cspice/lsk - ls ./settings/cspice/pck - ls ./settings/cspice/spk + ls ../settings/cspice + cp -r "./cspice/generic_kernels" "../settings/cspice" + ls ../settings/cspice + ls ../settings/cspice/lsk + ls ../settings/cspice/pck + ls ../settings/cspice/spk - name: build env: From 7d6b20017bd06dddf41a3cb16191e7e9655325e2 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 26 Aug 2024 01:47:20 +0900 Subject: [PATCH 327/456] Fix directory --- .github/workflows/build.yml | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8da7e8ae6..a1faf1e49 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -107,14 +107,13 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' shell: powershell - working-directory: ./ExtLibraries run: | - ls ../settings/cspice - cp -r "./cspice/generic_kernels" "../settings/cspice" - ls ../settings/cspice - ls ../settings/cspice/lsk - ls ../settings/cspice/pck - ls ../settings/cspice/spk + ls ../settings/environment/cspice + cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/environment/cspice" + ls ../settings/environment/cspice + ls ../settings/environment/cspice/lsk + ls ../settings/environment/cspice/pck + ls ../settings/environment/cspice/spk - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' @@ -217,14 +216,14 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' - working-directory: ./ExtLibraries - run: | - ls ../settings/cspice - cp -r "./cspice/generic_kernels" "../settings/cspice" - ls ../settings/cspice - ls ../settings/cspice/lsk - ls ../settings/cspice/pck - ls ../settings/cspice/spk + run: | + ls ../settings/environment/cspice + cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/environment/cspice" + ls ../settings/environment/cspice + ls ../settings/environment/cspice/lsk + ls ../settings/environment/cspice/pck + ls ../settings/environment/cspice/spk + - name: build env: From 894a63b848f9b5f3218e6f024781d93d59ed2ce3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 26 Aug 2024 01:50:40 +0900 Subject: [PATCH 328/456] Fix directory --- .github/workflows/build.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1faf1e49..6deb8403d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -108,12 +108,12 @@ jobs: if: steps.cache-extlib.outputs.cache-hit == 'true' shell: powershell run: | - ls ../settings/environment/cspice + ls ./settings/environment/cspice cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/environment/cspice" - ls ../settings/environment/cspice - ls ../settings/environment/cspice/lsk - ls ../settings/environment/cspice/pck - ls ../settings/environment/cspice/spk + ls ./settings/environment/cspice + ls ./settings/environment/cspice/lsk + ls ./settings/environment/cspice/pck + ls ./settings/environment/cspice/spk - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' @@ -217,12 +217,12 @@ jobs: - name: copy to settings if: steps.cache-extlib.outputs.cache-hit == 'true' run: | - ls ../settings/environment/cspice + ls ./settings/environment/cspice cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/environment/cspice" - ls ../settings/environment/cspice - ls ../settings/environment/cspice/lsk - ls ../settings/environment/cspice/pck - ls ../settings/environment/cspice/spk + ls ./settings/environment/cspice + ls ./settings/environment/cspice/lsk + ls ./settings/environment/cspice/pck + ls ./settings/environment/cspice/spk - name: build From edf63e4c81334d0adb7ee304fbd2961ed7e059fc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 26 Aug 2024 01:53:35 +0900 Subject: [PATCH 329/456] Fix --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6deb8403d..604c0de06 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,9 +111,9 @@ jobs: ls ./settings/environment/cspice cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/environment/cspice" ls ./settings/environment/cspice - ls ./settings/environment/cspice/lsk - ls ./settings/environment/cspice/pck - ls ./settings/environment/cspice/spk + ls ./settings/environment/cspice/generic_kernels/lsk + ls ./settings/environment/cspice/generic_kernels/pck + ls ./settings/environment/cspice/generic_kernels/spk - name: build 32bit if: matrix.build_bit == 'BUILD_64BIT=OFF' @@ -220,9 +220,9 @@ jobs: ls ./settings/environment/cspice cp -r "./ExtLibraries/cspice/generic_kernels" "./settings/environment/cspice" ls ./settings/environment/cspice - ls ./settings/environment/cspice/lsk - ls ./settings/environment/cspice/pck - ls ./settings/environment/cspice/spk + ls ./settings/environment/cspice/generic_kernels/lsk + ls ./settings/environment/cspice/generic_kernels/pck + ls ./settings/environment/cspice/generic_kernels/spk - name: build From 747c94b8e365a1be76cbdecf65c2bbc8fa27f83c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 26 Aug 2024 07:53:53 +0900 Subject: [PATCH 330/456] Fix ini file copy for telescope --- src/simulation_sample/spacecraft/sample_components.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 20f6f055f..41a1a7d40 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -84,10 +84,10 @@ SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structur thruster_ = new SimpleThruster(InitSimpleThruster(clock_generator, pcu_->GetPowerPort(2), 1, file_name, structure_, dynamics)); // Mission - const std::string telescope_ini_path = iniAccess.ReadString("COMPONENT_FILES", "telescope_file"); + file_name = iniAccess.ReadString("COMPONENT_FILES", "telescope_file"); configuration_->main_logger_->CopyFileToLogDirectory(file_name); telescope_ = - new Telescope(InitTelescope(clock_generator, 1, telescope_ini_path, &(dynamics_->GetAttitude()), &(global_environment_->GetHipparcosCatalog()), + new Telescope(InitTelescope(clock_generator, 1, file_name, &(dynamics_->GetAttitude()), &(global_environment_->GetHipparcosCatalog()), &(local_environment_->GetCelestialInformation()), &(dynamics_->GetOrbit()))); // Force Generator From b1b14f93869175aa1f3f8803f7d9cdacc523a65d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Mon, 26 Aug 2024 07:59:21 +0900 Subject: [PATCH 331/456] Fix format --- src/simulation_sample/spacecraft/sample_components.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 41a1a7d40..b45d960c3 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -86,9 +86,8 @@ SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structur // Mission file_name = iniAccess.ReadString("COMPONENT_FILES", "telescope_file"); configuration_->main_logger_->CopyFileToLogDirectory(file_name); - telescope_ = - new Telescope(InitTelescope(clock_generator, 1, file_name, &(dynamics_->GetAttitude()), &(global_environment_->GetHipparcosCatalog()), - &(local_environment_->GetCelestialInformation()), &(dynamics_->GetOrbit()))); + telescope_ = new Telescope(InitTelescope(clock_generator, 1, file_name, &(dynamics_->GetAttitude()), &(global_environment_->GetHipparcosCatalog()), + &(local_environment_->GetCelestialInformation()), &(dynamics_->GetOrbit()))); // Force Generator file_name = iniAccess.ReadString("COMPONENT_FILES", "force_generator_file"); From 5af10e3447444dfbc872e4b9b69b9715e97f8418 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 15:10:32 +0000 Subject: [PATCH 332/456] Update actions/setup-python action to v5.2.0 --- .github/workflows/build.yml | 2 +- .github/workflows/validate-scripts.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9195e884..84b55c146 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -261,7 +261,7 @@ jobs: ver=$(grep python_version ./Pipfile | sed -e 's/^python_version\s=\s"\(.*\)"$/\1/') echo "version=$ver" >> "$GITHUB_OUTPUT" - - uses: actions/setup-python@v5.1.1 + - uses: actions/setup-python@v5.2.0 with: python-version: ${{ steps.python-version.outputs.version }} diff --git a/.github/workflows/validate-scripts.yml b/.github/workflows/validate-scripts.yml index b8a576ad5..29a154f98 100644 --- a/.github/workflows/validate-scripts.yml +++ b/.github/workflows/validate-scripts.yml @@ -28,7 +28,7 @@ jobs: ver=$(grep python_version ./Pipfile | sed -e 's/^python_version\s=\s"\(.*\)"$/\1/') echo "version=${ver}" >> "$GITHUB_OUTPUT" - - uses: actions/setup-python@v5.1.1 + - uses: actions/setup-python@v5.2.0 with: python-version: ${{ steps.python-version.outputs.version }} From dc89d5b2e9fd03c93a4d5ad82f78a73c7852d75e Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 12 Sep 2024 18:09:16 +0900 Subject: [PATCH 333/456] Add albedo radiation calculation to Node class --- src/dynamics/thermal/node.cpp | 18 ++++++++++++++++++ src/dynamics/thermal/node.hpp | 15 +++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index e641ca2df..ddc4225ff 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -25,6 +25,7 @@ Node::Node(const size_t node_id, const string node_name, const NodeType node_typ normal_vector_b_(normal_vector_b) { AssertNodeParams(); solar_radiation_W_ = 0; + albedo_flux_W_ = 0; } Node::~Node() {} @@ -40,6 +41,23 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar return solar_radiation_W_; } +double Node::CalcAlbedoRadiation_W(libra:Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m) { + double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); + + // 地球の半径 + double earth_radius_m = 6371.0e3; + + // アルベドによる入熱の計算 + if (cos_theta_albedo > 0) { + // 地球からの反射光による放射フラックスを計算 (アルベドの寄与) + double albedo_flux_W_m2 = solar_flux_W_m2 * albedo_factor * (earth_radius_m / earth_distance_m) * (earth_radius_m / earth_distance_m); + albedo_flux_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; + } else { + albedo_flux_W_ = 0; + } + return albedo_flux_W_; +} + void Node::PrintParam(void) { string node_type_str = ""; if (node_type_ == NodeType::kDiffusive) { diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 0de19fb8a..22a4ab5e3 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -59,6 +59,14 @@ class Node { * @return double: Solar Radiation [W] */ double CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar_flux_W_m2); + /** + * @fn CalcAlbedoRadiation_W + * @brief Calculate albedo radiation [W] from earth direction, albedo factor, area, and normal vector + * + * @param earth_direction_b: Earth direction in body frame + * @return double: Albedo Radiation [W] + */ + double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m); // Getter /** @@ -103,6 +111,12 @@ class Node { * @return double: Solar Radiation [W] */ inline double GetSolarRadiation_W(void) const { return solar_radiation_W_; } + /** + * @fn GetAlbedoFlux_W + * @brief Return Albedo Flux [W] + * @return double: Albedo Flux [W] + */ + inline double GetAlbedoFlux_W(void) const { return albedo_flux_W_; } /** * @fn GetNodeType * @brief Return Node Type @@ -135,6 +149,7 @@ class Node { double alpha_; double area_m2_; double solar_radiation_W_; + double albedo_flux_W_; NodeType node_type_; libra::Vector<3> normal_vector_b_; From 09feae404c2cd1ec606d8960c7214b58f0c71ad4 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 12 Sep 2024 18:11:23 +0900 Subject: [PATCH 334/456] Add albedo heatload calculation to Heatload class --- src/dynamics/thermal/heatload.cpp | 1 + src/dynamics/thermal/heatload.hpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/dynamics/thermal/heatload.cpp b/src/dynamics/thermal/heatload.cpp index c182e4ecb..e68ae638b 100644 --- a/src/dynamics/thermal/heatload.cpp +++ b/src/dynamics/thermal/heatload.cpp @@ -12,6 +12,7 @@ Heatload::Heatload(int node_id, std::vector time_table_s, std::vector Date: Thu, 12 Sep 2024 18:15:21 +0900 Subject: [PATCH 335/456] Refactor temperature propagation method to include albedo factor --- src/dynamics/thermal/temperature.cpp | 59 +++++++++++++++++++--------- src/dynamics/thermal/temperature.hpp | 13 +++--- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 9b1b37d89..47b5e07be 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -17,7 +17,7 @@ using namespace std; Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const bool is_calc_enabled, - const SolarCalcSetting solar_calc_setting, const bool debug) + const SolarCalcSetting solar_calc_setting, const double albedo_factor, const bool debug) : conductance_matrix_W_K_(conductance_matrix_W_K), radiation_matrix_m2_(radiation_matrix_m2), nodes_(nodes), @@ -29,6 +29,7 @@ Temperature::Temperature(const vector> conductance_matrix_W_K, co srp_environment_(srp_environment), is_calc_enabled_(is_calc_enabled), solar_calc_setting_(solar_calc_setting), + albedo_factor_(albedo_factor), debug_(debug) { propagation_time_s_ = 0; if (debug_) { @@ -47,18 +48,13 @@ Temperature::Temperature() { Temperature::~Temperature() {} -void Temperature::Propagate(libra::Vector<3> sun_position_b_m, const double time_end_s) { +void Temperature::Propagate(const LocalCelestialInformation* local_celestial_information, const double time_end_s) { if (!is_calc_enabled_) return; - double sun_distance_m = sun_position_b_m.CalcNorm(); - libra::Vector<3> sun_direction_b; - for (size_t i = 0; i < 3; i++) { - sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; - } while (time_end_s - propagation_time_s_ - propagation_step_s_ > 1.0e-6) { - CalcRungeOneStep(propagation_time_s_, propagation_step_s_, sun_direction_b, node_num_); + CalcRungeOneStep(propagation_time_s_, propagation_step_s_, local_celestial_information, node_num_); propagation_time_s_ += propagation_step_s_; } - CalcRungeOneStep(propagation_time_s_, time_end_s - propagation_time_s_, sun_direction_b, node_num_); + CalcRungeOneStep(propagation_time_s_, time_end_s - propagation_time_s_, local_celestial_information, node_num_); propagation_time_s_ = time_end_s; UpdateHeaterStatus(); @@ -66,12 +62,16 @@ void Temperature::Propagate(libra::Vector<3> sun_position_b_m, const double time cout << fixed; cout << "Time: " << time_end_s << " Temp: "; for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetTemperature_K() << " "; + cout << setprecision(4) << itr->GetTemperature_degC() << " "; } cout << "SolarR: "; for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } + cout << "AlbedoF: "; + for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { + cout << setprecision(4) << itr->GetAlbedoFlux_W() << " "; + } cout << "SunDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; @@ -84,7 +84,7 @@ void Temperature::Propagate(libra::Vector<3> sun_position_b_m, const double time } } -void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, libra::Vector<3> sun_direction_b, size_t node_num) { +void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, size_t node_num) { vector temperatures_now_K(node_num); for (size_t i = 0; i < node_num; i++) { temperatures_now_K[i] = nodes_[i].GetTemperature_K(); @@ -93,22 +93,22 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, libra: vector k1(node_num), k2(node_num), k3(node_num), k4(node_num); vector xk2(node_num), xk3(node_num), xk4(node_num); - k1 = CalcTemperatureDifferentials(temperatures_now_K, time_now_s, sun_direction_b, node_num); + k1 = CalcTemperatureDifferentials(temperatures_now_K, time_now_s, local_celestial_information, node_num); for (size_t i = 0; i < node_num; i++) { xk2[i] = temperatures_now_K[i] + (time_step_s / 2.0) * k1[i]; } - k2 = CalcTemperatureDifferentials(xk2, (time_now_s + time_step_s / 2.0), sun_direction_b, node_num); + k2 = CalcTemperatureDifferentials(xk2, (time_now_s + time_step_s / 2.0), local_celestial_information, node_num); for (size_t i = 0; i < node_num; i++) { xk3[i] = temperatures_now_K[i] + (time_step_s / 2.0) * k2[i]; } - k3 = CalcTemperatureDifferentials(xk3, (time_now_s + time_step_s / 2.0), sun_direction_b, node_num); + k3 = CalcTemperatureDifferentials(xk3, (time_now_s + time_step_s / 2.0), local_celestial_information, node_num); for (size_t i = 0; i < node_num; i++) { xk4[i] = temperatures_now_K[i] + time_step_s * k3[i]; } - k4 = CalcTemperatureDifferentials(xk4, (time_now_s + time_step_s), sun_direction_b, node_num); + k4 = CalcTemperatureDifferentials(xk4, (time_now_s + time_step_s), local_celestial_information, node_num); vector temperatures_next_K(node_num); for (size_t i = 0; i < node_num; i++) { @@ -119,11 +119,28 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, libra: nodes_[i].SetTemperature_K(temperatures_next_K[i]); } } - -vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, libra::Vector<3> sun_direction_b, size_t node_num) { +vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, const LocalCelestialInformation* local_celestial_information, size_t node_num) { // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); + std::string sun_str = "SUN"; + char* c_sun = new char[sun_str.size() + 1]; + std::char_traits::copy(c_sun, sun_str.c_str(), sun_str.size() + 1); // string -> char* + std::string earth_str = "EARTH"; + char* c_earth = new char[earth_str.size() + 1]; + std::char_traits::copy(c_earth, earth_str.c_str(), earth_str.size() + 1); // string -> char* + libra::Vector<3> sun_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m(c_sun); + libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m(c_earth); + double sun_distance_m = sun_position_b_m.CalcNorm(); + double earth_distance_m = earth_position_b_m.CalcNorm(); + libra::Vector<3> sun_direction_b; + for (size_t i = 0; i < 3; i++) { + sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; + } + libra::Vector<3> earth_direction_b; + for (size_t i = 0; i < 3; i++) { + earth_direction_b[i] = earth_position_b_m[i] / earth_distance_m; + } vector differentials_K_s(node_num); for (size_t i = 0; i < node_num; i++) { heatloads_[i].SetElapsedTime_s(t); @@ -131,7 +148,9 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); + double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_direction_b, solar_flux_W_m2, albedo_factor_, earth_distance_m); heatloads_[i].SetSolarHeatload_W(solar_radiation_W); + heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); } double heater_power_W = GetHeaterPower_W(i); heatloads_[i].SetHeaterHeatload_W(heater_power_W); @@ -152,6 +171,8 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat differentials_K_s[i] = 0; } } + delete[] c_sun; + delete[] c_earth; return differentials_K_s; } @@ -313,6 +334,8 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s bool debug = mainIni.ReadEnable("THERMAL", "debug"); + double albedo_factor = mainIni.ReadDouble("THERMAL", "albedo_factor"); + // Read Heatloads from CSV File string filepath_heatload = file_path + "heatload.csv"; IniAccess conf_heatload(filepath_heatload); @@ -371,6 +394,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s Temperature* temperature; temperature = new Temperature(conductance_matrix, radiation_matrix, node_list, heatload_list, heater_list, heater_controller_list, node_num, - rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, debug); + rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, albedo_factor, debug); return temperature; } diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index b45a8edd2..8c454c24e 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -44,6 +44,7 @@ class Temperature : public ILoggable { bool is_calc_enabled_; // Whether temperature calculation is enabled SolarCalcSetting solar_calc_setting_; // setting for solar calculation bool debug_; // Activate debug output or not + double albedo_factor_; // Albedo factor for calculating albedo radiation /** * @fn CalcRungeOneStep @@ -51,21 +52,21 @@ class Temperature : public ILoggable { * * @param[in] time_now_s: Current elapsed time [s] * @param[in] time_step_s: Time step of RK4 [s] - * @param[in] sun_direction_b: Sun position in body frame [m] + * @param[in] local_celestial_information: LocalCelestialInformation object for calculating radiation * @param[in] node_num: Number of nodes */ - void CalcRungeOneStep(double time_now_s, double time_step_s, libra::Vector<3> sun_direction_b, size_t node_num); + void CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, size_t node_num); /** * @fn CalcTemperatureDifferentials * @brief Calculate differential of thermal equilibrium equation * * @param temperatures_K: [UNUSED] Temperatures of each node [K] * @param time_now_s: Current elapsed time [s] - * @param[in] sun_direction_b: Sun direction in body frame + * @param[in] local_celestial_information: LocalCelestialInformation object for calculating radiation * @param node_num: Number of nodes * @return std::vector: Differential of thermal equilibrium equation at time now */ - std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const libra::Vector<3> sun_direction_b, + std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const LocalCelestialInformation* local_celestial_information, size_t node_num); public: @@ -105,10 +106,10 @@ class Temperature : public ILoggable { * @fn Propagate * @brief Propagate thermal calculation until time_end_s * - * @param[in] sun_position_b_m: Sun position in body frame [m] + * @param[in] local_celestial_information: LocalCelestialInformation object for calculating radiation * @param time_end_s: Time to finish propagation [s] */ - void Propagate(libra::Vector<3> sun_position_b_m, const double time_end_s); + void Propagate(const LocalCelestialInformation* local_celestial_information, const double time_end_s); // Getter /** From 89bf2de0a4a8cf9fe331b6cfd7e5ec424719a112 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 12 Sep 2024 18:34:07 +0900 Subject: [PATCH 336/456] Refactor temperature propagation method to include albedo factor --- src/dynamics/dynamics.cpp | 6 +----- src/dynamics/thermal/node.cpp | 2 +- src/dynamics/thermal/node.hpp | 2 +- src/dynamics/thermal/temperature.cpp | 10 ++++++++++ src/dynamics/thermal/temperature.hpp | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 04d0886a7..9487a45c2 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -50,11 +50,7 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia // Thermal if (simulation_time->GetThermalPropagateFlag()) { - std::string sun_str = "SUN"; - char* c_sun = new char[sun_str.size() + 1]; - std::char_traits::copy(c_sun, sun_str.c_str(), sun_str.size() + 1); // string -> char* - temperature_->Propagate(local_celestial_information->GetPositionFromSpacecraft_b_m(c_sun), simulation_time->GetElapsedTime_s()); - delete[] c_sun; + temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); } } diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index ddc4225ff..454d61b62 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -41,7 +41,7 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(libra:Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m) { +double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m) { double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); // 地球の半径 diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 22a4ab5e3..750b423ee 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -66,7 +66,7 @@ class Node { * @param earth_direction_b: Earth direction in body frame * @return double: Albedo Radiation [W] */ - double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m); + double CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m); // Getter /** diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 47b5e07be..53478cd6c 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -72,10 +72,20 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetAlbedoFlux_W() << " "; } + std::string sun_str = "SUN"; + char* c_sun = new char[sun_str.size() + 1]; + std::char_traits::copy(c_sun, sun_str.c_str(), sun_str.size() + 1); // string -> char* + libra::Vector<3> sun_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m(c_sun); + double sun_distance_m = sun_position_b_m.CalcNorm(); + libra::Vector<3> sun_direction_b; + for (size_t i = 0; i < 3; i++) { + sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; + } cout << "SunDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; } + delete[] c_sun; cout << "Heatload: "; for (auto itr = heatloads_.begin(); itr != heatloads_.end(); ++itr) { cout << setprecision(3) << itr->GetTotalHeatload_W() << " "; diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 8c454c24e..9f933a384 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -89,7 +89,7 @@ class Temperature : public ILoggable { Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool debug); + const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const double albedo_factor , const bool debug); /** * @fn Temperature * @brief Construct a new Temperature object, used when thermal calculation is disabled. From 81438fcd64195834f39914cf4a14058c21c3978e Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 12 Sep 2024 20:04:24 +0900 Subject: [PATCH 337/456] Refactor thermal module to include albedo heatload calculation --- src/dynamics/thermal/heatload.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dynamics/thermal/heatload.hpp b/src/dynamics/thermal/heatload.hpp index f09f6c740..d7cce3478 100644 --- a/src/dynamics/thermal/heatload.hpp +++ b/src/dynamics/thermal/heatload.hpp @@ -39,7 +39,7 @@ class Heatload { * @fn UpdateTotalHeatload * @brief Update total heatload value by summing up all factors */ - void UpdateTotalHeatload(void) { total_heatload_W_ = solar_heatload_W_ + internal_heatload_W_ + heater_heatload_W_; } + void UpdateTotalHeatload(void) { total_heatload_W_ = solar_heatload_W_ + albedo_heatload_W_ + internal_heatload_W_ + heater_heatload_W_; } // Getter /** @@ -47,6 +47,11 @@ class Heatload { * @brief Return Solar Heatload */ inline double GetSolarHeatload_W(void) const { return solar_heatload_W_; } + /** + * @fn GetAlbedoHeatload_W + * @brief Return Albedo Heatload + */ + inline double GetAlbedoHeatload_W(void) const { return albedo_heatload_W_; } /** * @fn GetInternalHeatload_W * @brief Return Internal Heatload From b8bf76e3448e0adf97b710d98c664d43851875c9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:03:53 -0700 Subject: [PATCH 338/456] Rename namespaec math to s2e::math --- src/components/base/sensor.hpp | 18 +- .../base/sensor_template_functions.hpp | 34 ++-- .../examples/example_change_structure.cpp | 2 +- .../ideal/angular_velocity_observer.hpp | 4 +- src/components/ideal/attitude_observer.cpp | 6 +- src/components/ideal/attitude_observer.hpp | 4 +- src/components/ideal/force_generator.cpp | 32 ++-- src/components/ideal/force_generator.hpp | 16 +- src/components/ideal/orbit_observer.cpp | 14 +- src/components/ideal/orbit_observer.hpp | 10 +- src/components/ideal/torque_generator.cpp | 16 +- src/components/ideal/torque_generator.hpp | 8 +- src/components/real/aocs/gnss_receiver.cpp | 60 +++---- src/components/real/aocs/gnss_receiver.hpp | 32 ++-- src/components/real/aocs/gyro_sensor.cpp | 8 +- src/components/real/aocs/gyro_sensor.hpp | 10 +- src/components/real/aocs/magnetometer.cpp | 8 +- src/components/real/aocs/magnetometer.hpp | 16 +- src/components/real/aocs/magnetorquer.cpp | 64 +++---- src/components/real/aocs/magnetorquer.hpp | 50 +++--- .../aocs/mtq_magnetometer_interference.cpp | 10 +- .../aocs/mtq_magnetometer_interference.hpp | 4 +- src/components/real/aocs/reaction_wheel.cpp | 38 ++--- src/components/real/aocs/reaction_wheel.hpp | 28 +-- .../real/aocs/reaction_wheel_jitter.cpp | 6 +- .../real/aocs/reaction_wheel_jitter.hpp | 40 ++--- .../real/aocs/reaction_wheel_ode.cpp | 4 +- .../real/aocs/reaction_wheel_ode.hpp | 4 +- src/components/real/aocs/star_sensor.cpp | 66 ++++---- src/components/real/aocs/star_sensor.hpp | 30 ++-- src/components/real/aocs/sun_sensor.cpp | 36 ++-- src/components/real/aocs/sun_sensor.hpp | 14 +- src/components/real/communication/antenna.cpp | 4 +- src/components/real/communication/antenna.hpp | 8 +- .../antenna_radiation_pattern.hpp | 6 +- .../ground_station_calculator.cpp | 2 +- src/components/real/mission/telescope.cpp | 48 +++--- src/components/real/mission/telescope.hpp | 26 +-- .../real/power/csv_scenario_interface.cpp | 4 +- .../real/power/csv_scenario_interface.hpp | 2 +- .../real/power/solar_array_panel.cpp | 18 +- .../real/power/solar_array_panel.hpp | 8 +- .../real/propulsion/simple_thruster.cpp | 30 ++-- src/disturbances/air_drag.cpp | 20 +-- src/disturbances/air_drag.hpp | 6 +- src/disturbances/disturbance.hpp | 24 +-- src/disturbances/disturbances.hpp | 6 +- src/disturbances/geopotential.cpp | 8 +- src/disturbances/geopotential.hpp | 2 +- src/disturbances/gravity_gradient.cpp | 4 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 12 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 4 +- src/disturbances/magnetic_disturbance.hpp | 4 +- .../solar_radiation_pressure_disturbance.cpp | 6 +- .../solar_radiation_pressure_disturbance.hpp | 4 +- src/disturbances/surface_force.cpp | 24 +-- src/disturbances/surface_force.hpp | 10 +- src/disturbances/third_body_gravity.cpp | 14 +- src/disturbances/third_body_gravity.hpp | 4 +- src/dynamics/attitude/attitude.cpp | 24 +-- src/dynamics/attitude/attitude.hpp | 36 ++-- src/dynamics/attitude/attitude_rk4.cpp | 34 ++-- src/dynamics/attitude/attitude_rk4.hpp | 12 +- .../attitude_with_cantilever_vibration.cpp | 20 +-- .../attitude_with_cantilever_vibration.hpp | 10 +- src/dynamics/attitude/controlled_attitude.cpp | 58 +++---- src/dynamics/attitude/controlled_attitude.hpp | 28 +-- src/dynamics/attitude/initialize_attitude.cpp | 20 +-- src/dynamics/attitude/initialize_attitude.hpp | 2 +- ...ode_attitude_with_cantilever_vibration.hpp | 76 ++++----- src/dynamics/dynamics.cpp | 2 +- src/dynamics/dynamics.hpp | 6 +- .../orbit/encke_orbit_propagation.cpp | 18 +- .../orbit/encke_orbit_propagation.hpp | 18 +- src/dynamics/orbit/initialize_orbit.cpp | 34 ++-- src/dynamics/orbit/initialize_orbit.hpp | 2 +- src/dynamics/orbit/orbit.cpp | 26 +-- src/dynamics/orbit/orbit.hpp | 40 ++--- src/dynamics/orbit/relative_orbit.cpp | 28 +-- src/dynamics/orbit/relative_orbit.hpp | 16 +- src/dynamics/orbit/rk4_orbit_propagation.cpp | 8 +- src/dynamics/orbit/rk4_orbit_propagation.hpp | 8 +- src/dynamics/thermal/heatload.cpp | 2 +- src/dynamics/thermal/node.cpp | 8 +- src/dynamics/thermal/node.hpp | 6 +- src/dynamics/thermal/temperature.cpp | 8 +- src/dynamics/thermal/temperature.hpp | 6 +- .../global/celestial_information.hpp | 30 ++-- src/environment/global/earth_rotation.cpp | 160 +++++++++--------- src/environment/global/earth_rotation.hpp | 16 +- src/environment/global/gnss_satellites.cpp | 12 +- src/environment/global/gnss_satellites.hpp | 6 +- .../global/hipparcos_catalogue.cpp | 14 +- .../global/hipparcos_catalogue.hpp | 4 +- src/environment/global/moon_rotation.cpp | 8 +- src/environment/global/moon_rotation.hpp | 4 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 6 +- src/environment/local/geomagnetic_field.hpp | 10 +- .../local/local_celestial_information.cpp | 48 +++--- .../local/local_celestial_information.hpp | 22 +-- .../solar_radiation_pressure_environment.cpp | 10 +- src/logger/log_utility.hpp | 12 +- .../atmosphere/harris_priester_model.cpp | 10 +- .../atmosphere/harris_priester_model.hpp | 2 +- .../atmosphere/wrapper_nrlmsise00.cpp | 6 +- .../geodesy/geodetic_position.cpp | 10 +- .../geodesy/geodetic_position.hpp | 8 +- src/math_physics/gnss/antex_file_reader.cpp | 2 +- src/math_physics/gnss/antex_file_reader.hpp | 6 +- src/math_physics/gnss/sp3_file_reader.cpp | 10 +- src/math_physics/gnss/sp3_file_reader.hpp | 10 +- .../gravity/gravity_potential.cpp | 8 +- .../gravity/gravity_potential.hpp | 4 +- .../gravity/test_gravity_potential.cpp | 40 ++--- src/math_physics/math/constants.hpp | 4 +- src/math_physics/math/interpolation.cpp | 4 +- src/math_physics/math/interpolation.hpp | 4 +- src/math_physics/math/matrix.hpp | 4 +- .../math/matrix_template_functions.hpp | 4 +- src/math_physics/math/matrix_vector.hpp | 4 +- .../math/matrix_vector_template_functions.hpp | 4 +- .../math/ordinary_differential_equation.hpp | 6 +- ...fferential_equation_template_functions.hpp | 4 +- src/math_physics/math/quaternion.cpp | 4 +- src/math_physics/math/quaternion.hpp | 4 +- src/math_physics/math/s2e_math.cpp | 12 +- src/math_physics/math/s2e_math.hpp | 4 +- src/math_physics/math/test_interpolation.cpp | 30 ++-- src/math_physics/math/test_matrix.cpp | 60 +++---- src/math_physics/math/test_matrix_vector.cpp | 10 +- src/math_physics/math/test_quaternion.cpp | 134 +++++++-------- src/math_physics/math/test_s2e_math.cpp | 14 +- src/math_physics/math/test_vector.cpp | 94 +++++----- src/math_physics/math/vector.cpp | 4 +- src/math_physics/math/vector.hpp | 4 +- .../math/vector_template_functions.hpp | 4 +- .../dormand_prince_5.hpp | 4 +- .../dormand_prince_5_implementation.hpp | 6 +- .../embedded_runge_kutta_implementation.hpp | 6 +- .../numerical_integration/interface_ode.hpp | 2 +- .../numerical_integrator.hpp | 10 +- .../numerical_integration/ode_examples.hpp | 16 +- .../numerical_integration/runge_kutta.hpp | 2 +- .../numerical_integration/runge_kutta_4.hpp | 2 +- .../runge_kutta_fehlberg.hpp | 2 +- .../runge_kutta_fehlberg_implementation.hpp | 8 +- .../runge_kutta_template.hpp | 4 +- .../test_runge_kutta.cpp | 86 +++++----- .../optics/gaussian_beam_base.cpp | 8 +- .../optics/gaussian_beam_base.hpp | 12 +- .../orbit/interpolation_orbit.cpp | 8 +- .../orbit/interpolation_orbit.hpp | 6 +- src/math_physics/orbit/kepler_orbit.cpp | 16 +- src/math_physics/orbit/kepler_orbit.hpp | 10 +- src/math_physics/orbit/orbital_elements.cpp | 16 +- src/math_physics/orbit/orbital_elements.hpp | 8 +- .../orbit/relative_orbit_models.cpp | 8 +- .../orbit/relative_orbit_models.hpp | 4 +- .../orbit/test_interpolation_orbit.cpp | 4 +- .../moon_rotation_utilities.cpp | 30 ++-- .../moon_rotation_utilities.hpp | 6 +- .../randomization/random_walk.hpp | 8 +- .../random_walk_template_functions.hpp | 6 +- .../initialize_file_access.cpp | 4 +- .../initialize_file_access.hpp | 6 +- .../ground_station/ground_station.cpp | 14 +- .../initialize_monte_carlo_parameters.cpp | 70 ++++---- .../initialize_monte_carlo_parameters.hpp | 26 +-- .../initialize_monte_carlo_simulation.cpp | 4 +- .../monte_carlo_simulation_executor.cpp | 2 +- .../monte_carlo_simulation_executor.hpp | 12 +- .../simulation_object.cpp | 2 +- .../simulation_object.hpp | 6 +- .../relative_information.cpp | 58 +++---- .../relative_information.hpp | 26 +-- .../spacecraft/installed_components.cpp | 8 +- .../spacecraft/installed_components.hpp | 4 +- .../structure/initialize_structure.cpp | 8 +- .../structure/kinematics_parameters.cpp | 2 +- .../structure/kinematics_parameters.hpp | 14 +- .../structure/residual_magnetic_moment.hpp | 2 +- .../spacecraft/structure/surface.cpp | 2 +- .../spacecraft/structure/surface.hpp | 14 +- .../spacecraft/sample_components.cpp | 14 +- .../spacecraft/sample_components.hpp | 4 +- 188 files changed, 1528 insertions(+), 1528 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index f3ab2e22b..398b24263 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -31,9 +31,9 @@ class Sensor { * @param [in] random_walk_standard_deviation_c: Standard deviation of random wark at the component frame * @param [in] random_walk_limit_c: Limit of random walk at the component frame */ - Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_const_c, const math::Vector& range_to_zero_c, - const math::Vector& bias_noise_c, const math::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, - const math::Vector& random_walk_standard_deviation_c, const math::Vector& random_walk_limit_c); + Sensor(const s2e::math::Matrix& scale_factor, const s2e::math::Vector& range_to_const_c, const s2e::math::Vector& range_to_zero_c, + const s2e::math::Vector& bias_noise_c, const s2e::math::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, + const s2e::math::Vector& random_walk_standard_deviation_c, const s2e::math::Vector& random_walk_limit_c); /** * @fn ~Sensor * @brief Destructor @@ -41,7 +41,7 @@ class Sensor { ~Sensor(); protected: - math::Vector bias_noise_c_; //!< Constant bias noise at the component frame + s2e::math::Vector bias_noise_c_; //!< Constant bias noise at the component frame /** * @fn Measure @@ -49,12 +49,12 @@ class Sensor { * @param [in] true_value_c: True value at the component frame * @return Observed value with noise at the component frame */ - math::Vector Measure(const math::Vector true_value_c); + s2e::math::Vector Measure(const s2e::math::Vector true_value_c); private: - math::Matrix scale_factor_; //!< Scale factor matrix - math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + s2e::math::Matrix scale_factor_; //!< Scale factor matrix + s2e::math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + s2e::math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random RandomWalk random_walk_noise_c_; //!< Random Walk @@ -64,7 +64,7 @@ class Sensor { * @param [in] input_c: Input value at the component frame * @return Clipped value */ - math::Vector Clip(const math::Vector input_c); + s2e::math::Vector Clip(const s2e::math::Vector input_c); /** * @fn RangeCheck * @brief Check the range_to_const_c_ and range_to_zero_c_ is correct and fixed the values diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 247093ce2..ef6f9a7e5 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -10,10 +10,10 @@ #include template -Sensor::Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_const_c, const math::Vector& range_to_zero_c, - const math::Vector& bias_noise_c, const math::Vector& normal_random_standard_deviation_c, - const double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c, - const math::Vector& random_walk_limit_c) +Sensor::Sensor(const s2e::math::Matrix& scale_factor, const s2e::math::Vector& range_to_const_c, const s2e::math::Vector& range_to_zero_c, + const s2e::math::Vector& bias_noise_c, const s2e::math::Vector& normal_random_standard_deviation_c, + const double random_walk_step_width_s, const s2e::math::Vector& random_walk_standard_deviation_c, + const s2e::math::Vector& random_walk_limit_c) : bias_noise_c_(bias_noise_c), scale_factor_(scale_factor), range_to_const_c_(range_to_const_c), @@ -29,8 +29,8 @@ template Sensor::~Sensor() {} template -math::Vector Sensor::Measure(const math::Vector true_value_c) { - math::Vector calc_value_c; +s2e::math::Vector Sensor::Measure(const s2e::math::Vector true_value_c) { + s2e::math::Vector calc_value_c; calc_value_c = scale_factor_ * true_value_c; calc_value_c += bias_noise_c_; for (size_t i = 0; i < N; ++i) { @@ -42,8 +42,8 @@ math::Vector Sensor::Measure(const math::Vector true_value_c) { } template -math::Vector Sensor::Clip(const math::Vector input_c) { - math::Vector output_c; +s2e::math::Vector Sensor::Clip(const s2e::math::Vector input_c) { + s2e::math::Vector output_c; for (size_t i = 0; i < N; ++i) { if (input_c[i] >= range_to_const_c_[i] && input_c[i] < range_to_zero_c_[i]) { output_c[i] = range_to_const_c_[i]; @@ -80,11 +80,11 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w IniAccess ini_file(file_name); std::string section = "SENSOR_BASE_" + component_name; - math::Vector scale_factor_vector; + s2e::math::Vector scale_factor_vector; ini_file.ReadVector(section.c_str(), "scale_factor_c", scale_factor_vector); - math::Matrix scale_factor_c; + s2e::math::Matrix scale_factor_c; if (scale_factor_vector.CalcNorm() == 0.0) { - scale_factor_c = math::MakeIdentityMatrix(); + scale_factor_c = s2e::math::MakeIdentityMatrix(); } else { for (size_t i = 0; i < N; i++) { for (size_t j = 0; j < N; j++) { @@ -94,26 +94,26 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w } std::string key_name; - math::Vector constant_bias_c; + s2e::math::Vector constant_bias_c; key_name = "constant_bias_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), constant_bias_c); - math::Vector normal_random_standard_deviation_c; + s2e::math::Vector normal_random_standard_deviation_c; key_name = "normal_random_standard_deviation_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), normal_random_standard_deviation_c); - math::Vector random_walk_standard_deviation_c; + s2e::math::Vector random_walk_standard_deviation_c; key_name = "random_walk_standard_deviation_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), random_walk_standard_deviation_c); - math::Vector random_walk_limit_c; + s2e::math::Vector random_walk_limit_c; key_name = "random_walk_limit_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), random_walk_limit_c); key_name = "range_to_constant_" + unit; double range_to_const = ini_file.ReadDouble(section.c_str(), key_name.c_str()); - math::Vector range_to_const_c{range_to_const}; + s2e::math::Vector range_to_const_c{range_to_const}; key_name = "range_to_zero_" + unit; double range_to_zero = ini_file.ReadDouble(section.c_str(), key_name.c_str()); - math::Vector range_to_zero_c{range_to_zero}; + s2e::math::Vector range_to_zero_c{range_to_zero}; Sensor sensor_base(scale_factor_c, range_to_const_c, range_to_zero_c, constant_bias_c, normal_random_standard_deviation_c, step_width_s, random_walk_standard_deviation_c, random_walk_limit_c); diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index 87e589700..bc28f4547 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -35,7 +35,7 @@ void ExampleChangeStructure::MainRoutine(const int time_count) { structure_->GetToSetSurfaces()[0].SetArea_m2(0.5); // Inertia Tensor - math::Matrix<3, 3> inertia_tensor_b_kgm2(0.0); + s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2(0.0); inertia_tensor_b_kgm2[0][0] = 0.2; inertia_tensor_b_kgm2[1][1] = 0.2; inertia_tensor_b_kgm2[2][2] = 0.2; diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 3b162a36a..bf22777ac 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -57,10 +57,10 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg * @fn GetAngularVelocity_b_rad_s * @brief Return observed angular velocity */ - inline math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } + inline s2e::math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } protected: - math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] + s2e::math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] const Attitude& attitude_; //!< Dynamics information }; diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 312a1930c..26ffee05b 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -18,14 +18,14 @@ void AttitudeObserver::MainRoutine(const int time_count) { UNUSED(time_count); // Error calculation - math::Vector<3> random_direction; + s2e::math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); double error_angle_rad = angle_noise_; - math::Quaternion error_quaternion(random_direction, error_angle_rad); + s2e::math::Quaternion error_quaternion(random_direction, error_angle_rad); observed_quaternion_i2b_ = error_quaternion * attitude_.GetQuaternion_i2b(); } @@ -57,7 +57,7 @@ AttitudeObserver InitializeAttitudeObserver(ClockGenerator* clock_generator, con // AttitudeObserver double error_angle_standard_deviation_deg = ini_file.ReadDouble("ATTITUDE_OBSERVER", "error_angle_standard_deviation_deg"); - double error_angle_standard_deviation_rad = math::deg_to_rad * error_angle_standard_deviation_deg; + double error_angle_standard_deviation_rad = s2e::math::deg_to_rad * error_angle_standard_deviation_deg; AttitudeObserver attitude_observer(prescaler, clock_generator, error_angle_standard_deviation_rad, attitude); return attitude_observer; diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 3244dce32..1efc18b71 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -57,10 +57,10 @@ class AttitudeObserver : public Component, public ILoggable { * @fn GetQuaternion_i2c * @brief Return observed quaternion from the inertial frame to the body-fixed frame */ - inline const math::Quaternion GetQuaternion_i2b() const { return observed_quaternion_i2b_; }; + inline const s2e::math::Quaternion GetQuaternion_i2b() const { return observed_quaternion_i2b_; }; protected: - math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion + s2e::math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise randomization::NormalRand direction_noise_; //!< Normal random for direction noise diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 833703477..79a062ede 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -29,16 +29,16 @@ void ForceGenerator::MainRoutine(const int time_count) { double norm_ordered_force = ordered_force_b_N_.CalcNorm(); if (norm_ordered_force > 0.0 + DBL_EPSILON) { // Add noise only when the force is generated - math::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); - math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); - math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); + s2e::math::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); + s2e::math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); + s2e::math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double force_norm_with_error = norm_ordered_force + magnitude_noise_; generated_force_b_N_ = force_norm_with_error * converted_direction; } // Convert frame - math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); + s2e::math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + s2e::math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); generated_force_i_N_ = q_i2b.InverseFrameConversion(generated_force_b_N_); generated_force_rtn_N_ = q_i2rtn.FrameConversion(generated_force_i_N_); } @@ -49,16 +49,16 @@ void ForceGenerator::PowerOffRoutine() { generated_force_rtn_N_ *= 0.0; } -void ForceGenerator::SetForce_i_N(const math::Vector<3> force_i_N) { - math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); +void ForceGenerator::SetForce_i_N(const s2e::math::Vector<3> force_i_N) { + s2e::math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } -void ForceGenerator::SetForce_rtn_N(const math::Vector<3> force_rtn_N) { - math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); +void ForceGenerator::SetForce_rtn_N(const s2e::math::Vector<3> force_rtn_N) { + s2e::math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + s2e::math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); - math::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); + s2e::math::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } @@ -85,14 +85,14 @@ std::string ForceGenerator::GetLogValue() const { return str_tmp; } -math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { - math::Vector<3> random_direction; +s2e::math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad) { + s2e::math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); - math::Vector<3> rotation_axis; + s2e::math::Vector<3> rotation_axis; rotation_axis = OuterProduct(true_direction, random_direction); double norm_rotation_axis = rotation_axis.CalcNorm(); if (norm_rotation_axis < 0.0 + DBL_EPSILON) { @@ -101,7 +101,7 @@ math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3 } double error_angle_rad = direction_noise_ * error_standard_deviation_rad; - math::Quaternion error_quaternion(rotation_axis, error_angle_rad); + s2e::math::Quaternion error_quaternion(rotation_axis, error_angle_rad); return error_quaternion; } @@ -117,7 +117,7 @@ ForceGenerator InitializeForceGenerator(ClockGenerator* clock_generator, const s char section[30] = "FORCE_GENERATOR"; double force_magnitude_standard_deviation_N = ini_file.ReadDouble(section, "force_magnitude_standard_deviation_N"); double force_direction_standard_deviation_deg = ini_file.ReadDouble(section, "force_direction_standard_deviation_deg"); - double force_direction_standard_deviation_rad = math::deg_to_rad * force_direction_standard_deviation_deg; + double force_direction_standard_deviation_rad = s2e::math::deg_to_rad * force_direction_standard_deviation_deg; ForceGenerator force_generator(prescaler, clock_generator, force_magnitude_standard_deviation_N, force_direction_standard_deviation_rad, dynamics); return force_generator; diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index d7cb07f49..9a07fe269 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -81,23 +81,23 @@ class ForceGenerator : public Component, public ILoggable { * @fn SetForce_b_N * @brief Set ordered force in the body fixed frame [N] */ - inline void SetForce_b_N(const math::Vector<3> force_b_N) { ordered_force_b_N_ = force_b_N; }; + inline void SetForce_b_N(const s2e::math::Vector<3> force_b_N) { ordered_force_b_N_ = force_b_N; }; /** * @fn SetForce_i_N * @brief Set ordered force in the inertial frame [N] */ - void SetForce_i_N(const math::Vector<3> force_i_N); + void SetForce_i_N(const s2e::math::Vector<3> force_i_N); /** * @fn SetForce_rtn_N * @brief Set ordered force in the RTN frame [N] */ - void SetForce_rtn_N(const math::Vector<3> force_rtn_N); + void SetForce_rtn_N(const s2e::math::Vector<3> force_rtn_N); protected: - math::Vector<3> ordered_force_b_N_{0.0}; //!< Ordered force in the body fixed frame [N] - math::Vector<3> generated_force_b_N_{0.0}; //!< Generated force in the body fixed frame [N] - math::Vector<3> generated_force_i_N_{0.0}; //!< Generated force in the inertial frame [N] - math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] + s2e::math::Vector<3> ordered_force_b_N_{0.0}; //!< Ordered force in the body fixed frame [N] + s2e::math::Vector<3> generated_force_b_N_{0.0}; //!< Generated force in the body fixed frame [N] + s2e::math::Vector<3> generated_force_i_N_{0.0}; //!< Generated force in the inertial frame [N] + s2e::math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise @@ -110,7 +110,7 @@ class ForceGenerator : public Component, public ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - math::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); + s2e::math::Quaternion GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad); const Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index e1b91d0c7..48a2157d2 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -9,7 +9,7 @@ #include OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, - const math::Vector<6> error_standard_deviation, const Orbit& orbit) + const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], global_randomization.MakeSeed()); @@ -20,11 +20,11 @@ void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); // Calc noise - math::Vector<3> position_error_i_m{0.0}; - math::Vector<3> position_error_rtn_m{0.0}; - math::Vector<3> velocity_error_i_m_s{0.0}; - math::Vector<3> velocity_error_rtn_m_s{0.0}; - math::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); + s2e::math::Vector<3> position_error_i_m{0.0}; + s2e::math::Vector<3> position_error_rtn_m{0.0}; + s2e::math::Vector<3> velocity_error_i_m_s{0.0}; + s2e::math::Vector<3> velocity_error_rtn_m_s{0.0}; + s2e::math::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (noise_frame_) { case NoiseFrame::kInertial: for (size_t axis = 0; axis < 3; axis++) { @@ -93,7 +93,7 @@ OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std // Noise const NoiseFrame noise_frame = SetNoiseFrame(ini_file.ReadString("ORBIT_OBSERVER", "noise_frame")); - math::Vector<6> noise_standard_deviation; + s2e::math::Vector<6> noise_standard_deviation; ini_file.ReadVector("ORBIT_OBSERVER", "noise_standard_deviation", noise_standard_deviation); OrbitObserver orbit_observer(prescaler, clock_generator, noise_frame, noise_standard_deviation, orbit); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 09437c079..ab3aa9887 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -37,7 +37,7 @@ class OrbitObserver : public Component, public ILoggable { * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const math::Vector<6> error_standard_deviation, + OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit); /** @@ -69,17 +69,17 @@ class OrbitObserver : public Component, public ILoggable { * @fn GetPosition_i_m * @brief Return observed position */ - inline const math::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; + inline const s2e::math::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; /** * @fn GetVelocity_i_m_s * @brief Return observed velocity */ - inline const math::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; + inline const s2e::math::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; protected: - math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] - math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] + s2e::math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + s2e::math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] NoiseFrame noise_frame_; //!< Noise definition frame randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index d090f0d34..efcf0392d 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -29,9 +29,9 @@ void TorqueGenerator::MainRoutine(const int time_count) { double norm_ordered_torque = ordered_torque_b_Nm_.CalcNorm(); if (norm_ordered_torque > 0.0 + DBL_EPSILON) { // Add noise only when the torque is generated - math::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); - math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); - math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); + s2e::math::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); + s2e::math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); + s2e::math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double torque_norm_with_error = norm_ordered_torque + magnitude_noise_; generated_torque_b_Nm_ = torque_norm_with_error * converted_direction; } @@ -58,14 +58,14 @@ std::string TorqueGenerator::GetLogValue() const { return str_tmp; } -math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { - math::Vector<3> random_direction; +s2e::math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad) { + s2e::math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); - math::Vector<3> rotation_axis; + s2e::math::Vector<3> rotation_axis; rotation_axis = OuterProduct(true_direction, random_direction); double norm_rotation_axis = rotation_axis.CalcNorm(); if (norm_rotation_axis < 0.0 + DBL_EPSILON) { @@ -74,7 +74,7 @@ math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector< } double error_angle_rad = direction_noise_ * error_standard_deviation_rad; - math::Quaternion error_quaternion(rotation_axis, error_angle_rad); + s2e::math::Quaternion error_quaternion(rotation_axis, error_angle_rad); return error_quaternion; } @@ -90,7 +90,7 @@ TorqueGenerator InitializeTorqueGenerator(ClockGenerator* clock_generator, const char section[30] = "TORQUE_GENERATOR"; double torque_magnitude_standard_deviation_Nm = ini_file.ReadDouble(section, "torque_magnitude_standard_deviation_Nm"); double torque_direction_standard_deviation_deg = ini_file.ReadDouble(section, "torque_direction_standard_deviation_deg"); - double torque_direction_standard_deviation_rad = math::deg_to_rad * torque_direction_standard_deviation_deg; + double torque_direction_standard_deviation_rad = s2e::math::deg_to_rad * torque_direction_standard_deviation_deg; TorqueGenerator torque_generator(prescaler, clock_generator, torque_magnitude_standard_deviation_Nm, torque_direction_standard_deviation_rad, dynamics); diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 6ddaf1c5d..c03aa4da1 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -71,11 +71,11 @@ class TorqueGenerator : public Component, public ILoggable { * @fn SetTorque_b_Nm * @brief Set ordered torque in the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { ordered_torque_b_Nm_ = torque_b_Nm; }; + inline void SetTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { ordered_torque_b_Nm_ = torque_b_Nm; }; protected: - math::Vector<3> ordered_torque_b_Nm_{0.0}; //!< Ordered torque in the body fixed frame [Nm] - math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] + s2e::math::Vector<3> ordered_torque_b_Nm_{0.0}; //!< Ordered torque in the body fixed frame [Nm] + s2e::math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise @@ -88,7 +88,7 @@ class TorqueGenerator : public Component, public ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - math::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); + s2e::math::Quaternion GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad); const Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index a07a52a0b..87e88abfd 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -12,9 +12,9 @@ #include GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, - const math::Vector<3> position_noise_standard_deviation_ecef_m, - const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, + const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, + const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), @@ -32,9 +32,9 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, } GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, - const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, - const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, + const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, + const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), @@ -56,8 +56,8 @@ void GnssReceiver::MainRoutine(const int time_count) { // Antenna checking // TODO: Use ECEF position only - math::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); - math::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + s2e::math::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); + s2e::math::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); CheckAntenna(position_true_eci, quaternion_i2b); if (is_gnss_visible_) { @@ -74,7 +74,7 @@ void GnssReceiver::MainRoutine(const int time_count) { ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } -void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntenna(const s2e::math::Vector<3> position_true_eci_m, const s2e::math::Quaternion quaternion_i2b) { if (antenna_model_ == AntennaModel::kSimple) { CheckAntennaSimple(position_true_eci_m, quaternion_i2b); } else if (antenna_model_ == AntennaModel::kCone) { @@ -84,15 +84,15 @@ void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const } } -void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const s2e::math::Vector<3> position_true_eci_m, const s2e::math::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction // Antenna normal vector at inertial frame - math::Vector<3> antenna_direction_c(0.0); + s2e::math::Vector<3> antenna_direction_c(0.0); antenna_direction_c[2] = 1.0; - math::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); - math::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); + s2e::math::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); + s2e::math::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); double inner = InnerProduct(position_true_eci_m, antenna_direction_i); if (inner <= 0.0) { @@ -102,18 +102,18 @@ void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, } } -void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const s2e::math::Vector<3> position_true_eci_m, const s2e::math::Quaternion quaternion_i2b) { // Cone model gnss_information_list_.clear(); // Antenna pointing direction vector at inertial frame - math::Vector<3> antenna_pointing_direction_c(0.0); + s2e::math::Vector<3> antenna_pointing_direction_c(0.0); antenna_pointing_direction_c[2] = 1.0; - math::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); - math::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); + s2e::math::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); + s2e::math::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); // Antenna position vector at inertial frame - math::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); + s2e::math::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); // initialize visible_satellite_number_ = 0; @@ -122,9 +122,9 @@ void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, c for (size_t i = 0; i < number_of_calculated_gnss_satellites; i++) { // compute direction from sat to gnss in body-fixed frame - math::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); - math::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; - math::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); + s2e::math::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); + s2e::math::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; + s2e::math::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); // Check GNSS satellites are visible from the receiver(not care antenna direction) bool is_gnss_satellite_visible_from_receiver = false; @@ -147,7 +147,7 @@ void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, c // Check GNSS satellites are in the antenna half width angle double inner2 = InnerProduct(antenna_pointing_direction_i, antenna_to_gnss_satellite_direction_i); - if (inner2 > cos(half_width_deg_ * math::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { + if (inner2 > cos(half_width_deg_ * s2e::math::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { // is visible visible_satellite_number_++; SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, i); @@ -161,10 +161,10 @@ void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, c } } -void GnssReceiver::SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const math::Quaternion quaternion_i2b, +void GnssReceiver::SetGnssInfo(const s2e::math::Vector<3> antenna_to_satellite_i_m, const s2e::math::Quaternion quaternion_i2b, const std::size_t gnss_system_id) { - math::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); - math::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); + s2e::math::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); + s2e::math::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); double distance_m = antenna_to_satellite_i_m.CalcNorm(); double longitude_rad = AcTan(antenna_to_satellite_direction_c[1], antenna_to_satellite_direction_c[0]); @@ -175,7 +175,7 @@ void GnssReceiver::SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, c gnss_information_list_.push_back(gnss_info_new); } -void GnssReceiver::AddNoise(const math::Vector<3> position_true_ecef_m, const math::Vector<3> velocity_true_ecef_m_s) { +void GnssReceiver::AddNoise(const s2e::math::Vector<3> position_true_ecef_m, const s2e::math::Vector<3> velocity_true_ecef_m_s) { for (size_t i = 0; i < 3; i++) { position_ecef_m_[i] = position_true_ecef_m[i] + position_random_noise_ecef_m_[i]; velocity_ecef_m_s_[i] = velocity_true_ecef_m_s[i] + velocity_random_noise_ecef_m_s_[i]; @@ -252,11 +252,11 @@ AntennaModel SetAntennaModel(const std::string antenna_model) { typedef struct _gnss_receiver_param { int prescaler; AntennaModel antenna_model; - math::Vector<3> antenna_pos_b; - math::Quaternion quaternion_b2c; + s2e::math::Vector<3> antenna_pos_b; + s2e::math::Quaternion quaternion_b2c; double half_width_deg; - math::Vector<3> position_noise_standard_deviation_ecef_m; - math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; + s2e::math::Vector<3> position_noise_standard_deviation_ecef_m; + s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const size_t component_id) { diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index f0fe73b06..006d70ab0 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -59,8 +59,8 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, - const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, + const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, + const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver @@ -79,9 +79,9 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, - const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, - const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, + const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, + const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component @@ -102,7 +102,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredPosition_ecef_m * @brief Return Observed position in the ECEF frame [m] */ - inline const math::Vector<3> GetMeasuredPosition_ecef_m(void) const { return position_ecef_m_; } + inline const s2e::math::Vector<3> GetMeasuredPosition_ecef_m(void) const { return position_ecef_m_; } /** * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] @@ -112,7 +112,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] */ - inline const math::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } + inline const s2e::math::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } // Override ILoggable /** @@ -131,16 +131,16 @@ class GnssReceiver : public Component, public ILoggable { const size_t component_id_; //!< Receiver ID // Antenna - math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] - math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) + s2e::math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] + s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] AntennaModel antenna_model_; //!< Antenna model // Simple position observation randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + s2e::math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + s2e::math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation @@ -166,7 +166,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntenna(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); + void CheckAntenna(const s2e::math::Vector<3> position_true_i_m, const s2e::math::Quaternion quaternion_i2b); /** * @fn CheckAntennaSimple * @brief Check the antenna can detect GNSS signal with Simple mode @@ -174,7 +174,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaSimple(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); + void CheckAntennaSimple(const s2e::math::Vector<3> position_true_i_m, const s2e::math::Quaternion quaternion_i2b); /** * @fn CheckAntennaCone * @brief Check the antenna can detect GNSS signal with Cone mode @@ -182,7 +182,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaCone(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); + void CheckAntennaCone(const s2e::math::Vector<3> position_true_i_m, const s2e::math::Quaternion quaternion_i2b); /** * @fn SetGnssInfo * @brief Calculate and set the GnssInfo values of target GNSS satellite @@ -190,14 +190,14 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] gnss_system_id: ID of target GNSS satellite */ - void SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const math::Quaternion quaternion_i2b, const size_t gnss_system_id); + void SetGnssInfo(const s2e::math::Vector<3> antenna_to_satellite_i_m, const s2e::math::Quaternion quaternion_i2b, const size_t gnss_system_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class * @param [in] position_true_ecef_m: True position of the spacecraft in the ECEF frame [m] * @param [in] velocity_true_ecef_m_s: True velocity of the spacecraft in the ECEF frame [m/s] */ - void AddNoise(const math::Vector<3> position_true_ecef_m, const math::Vector<3> velocity_true_ecef_m_s); + void AddNoise(const s2e::math::Vector<3> position_true_ecef_m, const s2e::math::Vector<3> velocity_true_ecef_m_s); /** * @fn ConvertJulianDayToGpsTime * @brief Convert Julian day to GPS time diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index 20e03edc9..244127fb1 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -8,11 +8,11 @@ #include GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const Dynamics* dynamics) + const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const Dynamics* dynamics) + const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -52,7 +52,7 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; gyro_conf.ReadQuaternion(GSection, "quaternion_b2c", quaternion_b2c); int prescaler = gyro_conf.ReadInt(GSection, "prescaler"); if (prescaler <= 1) prescaler = 1; @@ -73,7 +73,7 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, PowerPort* power_port const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; gyro_conf.ReadQuaternion(GSection, "quaternion_b2c", quaternion_b2c); int prescaler = gyro_conf.ReadInt(GSection, "prescaler"); if (prescaler <= 1) prescaler = 1; diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index 139bf8597..cd0ec6d34 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -32,7 +32,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const Dynamics* dynamics); + const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics); /** * @fn GyroSensor * @brief Constructor with power port @@ -45,7 +45,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const Dynamics* dynamics); + const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics); /** * @fn ~GyroSensor * @brief Destructor @@ -75,13 +75,13 @@ class GyroSensor : public Component, public Sensor, public ILogg * @fn GetMeasuredAngularVelocity_c_rad_s * @brief Return observed angular velocity of the component frame with respect to the inertial frame */ - inline const math::Vector& GetMeasuredAngularVelocity_c_rad_s(void) const { return angular_velocity_c_rad_s_; } + inline const s2e::math::Vector& GetMeasuredAngularVelocity_c_rad_s(void) const { return angular_velocity_c_rad_s_; } protected: - math::Vector angular_velocity_c_rad_s_{ + s2e::math::Vector angular_velocity_c_rad_s_{ 0.0}; //!< Observed angular velocity of the component frame with respect to the inertial frame [rad/s] unsigned int sensor_id_ = 0; //!< Sensor ID - math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const Dynamics* dynamics_; //!< Dynamics information }; diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index d28be5bad..91236b2e4 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -8,14 +8,14 @@ #include Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), geomagnetic_field_(geomagnetic_field) {} Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -57,7 +57,7 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, co int prescaler = magsensor_conf.ReadInt(MSSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; magsensor_conf.ReadQuaternion(MSSection, "quaternion_b2c", quaternion_b2c); // Sensor @@ -78,7 +78,7 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, PowerPort* power_ int prescaler = magsensor_conf.ReadInt(MSSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; magsensor_conf.ReadQuaternion(MSSection, "quaternion_b2c", quaternion_b2c); // Sensor diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index deaccf1aa..d4d7502e6 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -32,7 +32,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn Magnetometer * @brief Constructor with power port @@ -45,7 +45,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn ~Magnetometer * @brief Destructor @@ -75,32 +75,32 @@ class Magnetometer : public Component, public Sensor, pu * @fn GetMeasuredMagneticField_c_nT * @brief Return observed magnetic field on the component frame */ - inline const math::Vector& GetMeasuredMagneticField_c_nT(void) const { return magnetic_field_c_nT_; } + inline const s2e::math::Vector& GetMeasuredMagneticField_c_nT(void) const { return magnetic_field_c_nT_; } /** * @fn SetConstantBiasNoise_c_nT * @brief Set constant bias noise at component frame [nT] * @param [in] constant_noise_c_nT: Constant bias noise at component frame [nT] */ - inline void SetConstantBiasNoise_c_nT(math::Vector constant_noise_c_nT) { bias_noise_c_ = constant_noise_c_nT; } + inline void SetConstantBiasNoise_c_nT(s2e::math::Vector constant_noise_c_nT) { bias_noise_c_ = constant_noise_c_nT; } /** * @fn AddConstantBiasNoise_c_nT * @brief Add constant bias noise at component frame [nT] * @param [in] constant_noise_c_nT: Additional constant bias noise at component frame [nT] */ - inline void AddConstantBiasNoise_c_nT(math::Vector constant_noise_c_nT) { bias_noise_c_ += constant_noise_c_nT; } + inline void AddConstantBiasNoise_c_nT(s2e::math::Vector constant_noise_c_nT) { bias_noise_c_ += constant_noise_c_nT; } /** * @fn GetConstantBiasNoise_c_nT * @brief Get constant bias noise at component frame [nT] */ - inline math::Vector GetConstantBiasNoise_c_nT() const { return bias_noise_c_; } + inline s2e::math::Vector GetConstantBiasNoise_c_nT() const { return bias_noise_c_; } protected: - math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] + s2e::math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] unsigned int sensor_id_ = 0; //!< Sensor ID - math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment }; diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 0f1a2bb22..909996b84 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -11,13 +11,13 @@ #include #include -Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, - const math::Matrix& scale_factor, - const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, - const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const math::Vector& random_walk_standard_deviation_c_Am2, - const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) +Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + const s2e::math::Matrix& scale_factor, + const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, + const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const s2e::math::Vector& random_walk_standard_deviation_c_Am2, + const s2e::math::Vector& random_walk_limit_c_Am2, + const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -34,12 +34,12 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, } Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, - const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const math::Vector& random_walk_standard_deviation_c_Am2, - const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) + const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, + const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, + const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const s2e::math::Vector& random_walk_standard_deviation_c_Am2, + const s2e::math::Vector& random_walk_limit_c_Am2, + const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -67,7 +67,7 @@ void Magnetorquer::PowerOffRoutine() { output_magnetic_moment_b_Am2_ *= 0.0; } -math::Vector Magnetorquer::CalcOutputTorque(void) { +s2e::math::Vector Magnetorquer::CalcOutputTorque(void) { for (size_t i = 0; i < kMtqDimension; ++i) { // Limit Check if (output_magnetic_moment_c_Am2_[i] > max_magnetic_moment_c_Am2_[i]) { @@ -121,33 +121,33 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, int prescaler = magtorquer_conf.ReadInt(MTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - math::Vector sf_vec; + s2e::math::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); - math::Matrix scale_factor; + s2e::math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { for (size_t j = 0; j < kMtqDimension; j++) { scale_factor[i][j] = sf_vec[i * kMtqDimension + j]; } } - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); - math::Vector max_magnetic_moment_c_Am2; + s2e::math::Vector max_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "max_output_magnetic_moment_c_Am2", max_magnetic_moment_c_Am2); - math::Vector min_magnetic_moment_c_Am2; + s2e::math::Vector min_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "min_output_magnetic_moment_c_Am2", min_magnetic_moment_c_Am2); - math::Vector bias_noise_c_Am2; + s2e::math::Vector bias_noise_c_Am2; magtorquer_conf.ReadVector(MTSection, "constant_bias_noise_c_Am2", bias_noise_c_Am2); double random_walk_step_width_s = component_step_time_s * (double)prescaler; - math::Vector random_walk_standard_deviation_c_Am2; + s2e::math::Vector random_walk_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_standard_deviation_c_Am2", random_walk_standard_deviation_c_Am2); - math::Vector random_walk_limit_c_Am2; + s2e::math::Vector random_walk_limit_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_limit_c_Am2", random_walk_limit_c_Am2); - math::Vector normal_random_standard_deviation_c_Am2; + s2e::math::Vector normal_random_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "white_noise_standard_deviation_c_Am2", normal_random_standard_deviation_c_Am2); Magnetorquer magtorquer(prescaler, clock_generator, actuator_id, quaternion_b2c, scale_factor, max_magnetic_moment_c_Am2, min_magnetic_moment_c_Am2, @@ -166,33 +166,33 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_ int prescaler = magtorquer_conf.ReadInt(MTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - math::Vector sf_vec; + s2e::math::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); - math::Matrix scale_factor; + s2e::math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { for (size_t j = 0; j < kMtqDimension; j++) { scale_factor[i][j] = sf_vec[i * kMtqDimension + j]; } } - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); - math::Vector max_magnetic_moment_c_Am2; + s2e::math::Vector max_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "max_output_magnetic_moment_c_Am2", max_magnetic_moment_c_Am2); - math::Vector min_magnetic_moment_c_Am2; + s2e::math::Vector min_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "min_output_magnetic_moment_c_Am2", min_magnetic_moment_c_Am2); - math::Vector bias_noise_c_Am2; + s2e::math::Vector bias_noise_c_Am2; magtorquer_conf.ReadVector(MTSection, "constant_bias_noise_c_Am2", bias_noise_c_Am2); double random_walk_step_width_s = component_step_time_s * (double)prescaler; - math::Vector random_walk_standard_deviation_c_Am2; + s2e::math::Vector random_walk_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_standard_deviation_c_Am2", random_walk_standard_deviation_c_Am2); - math::Vector random_walk_limit_c_Am2; + s2e::math::Vector random_walk_limit_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_limit_c_Am2", random_walk_limit_c_Am2); - math::Vector normal_random_standard_deviation_c_Am2; + s2e::math::Vector normal_random_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "white_noise_standard_deviation_c_Am2", normal_random_standard_deviation_c_Am2); // PowerPort diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 91b91864b..112125eb9 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -41,11 +41,11 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] normal_random_standard_deviation_c_Am2: Standard deviation for the normal random noise in the component frame [Am2] * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, - const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, - const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, - const math::Vector& random_walk_limit_c_Am2, const math::Vector& normal_random_standard_deviation_c_Am2, + Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, + const s2e::math::Vector& min_magnetic_moment_c_Am2, const s2e::math::Vector& bias_noise_c_Am2_, + double random_walk_step_width_s, const s2e::math::Vector& random_walk_standard_deviation_c_Am2, + const s2e::math::Vector& random_walk_limit_c_Am2, const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); /** * @fn Magnetorquer @@ -66,11 +66,11 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, - const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, - const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); + const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, + const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, + const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const s2e::math::Vector& random_walk_standard_deviation_c_Am2, const s2e::math::Vector& random_walk_limit_c_Am2, + const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); // Override functions for Component /** @@ -100,39 +100,39 @@ class Magnetorquer : public Component, public ILoggable { * @fn GetOutputTorque_b_Nm * @brief Return output torque in the body fixed frame [Nm] */ - inline const math::Vector& GetOutputTorque_b_Nm(void) const { return torque_b_Nm_; }; + inline const s2e::math::Vector& GetOutputTorque_b_Nm(void) const { return torque_b_Nm_; }; /** * @fn SetOutputMagneticMoment_c_Am2 * @brief Set output magnetic moment in the component frame [Am2] */ - inline void SetOutputMagneticMoment_c_Am2(const math::Vector mag_moment_c) { output_magnetic_moment_c_Am2_ = mag_moment_c; }; + inline void SetOutputMagneticMoment_c_Am2(const s2e::math::Vector mag_moment_c) { output_magnetic_moment_c_Am2_ = mag_moment_c; }; /** * @fn SetOutputMagneticMoment_b_Am2 * @brief Return output magnetic moment in the body fixed frame [Am2] */ - inline const math::Vector& SetOutputMagneticMoment_b_Am2(void) const { return output_magnetic_moment_b_Am2_; }; + inline const s2e::math::Vector& SetOutputMagneticMoment_b_Am2(void) const { return output_magnetic_moment_b_Am2_; }; /** * @fn GetOutputMagneticMoment_b_Am2 * @brief Return output magnetic moment in the body fixed frame [Am2] */ - inline const math::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; + inline const s2e::math::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; protected: const int component_id_ = 0; //!< Actuator ID const double kConvertNanoT2T = 1.0e-9; //!< Constant to convert nT to T - math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] - math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] - math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] - math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame - math::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame - math::Matrix scale_factor_; //!< Scale factor matrix - math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] - math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] - - math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] + s2e::math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] + s2e::math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] + s2e::math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] + s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + s2e::math::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame + s2e::math::Matrix scale_factor_; //!< Scale factor matrix + s2e::math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] + s2e::math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] + + s2e::math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] RandomWalk random_walk_c_Am2_; //!< Random walk noise randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise @@ -143,7 +143,7 @@ class Magnetorquer : public Component, public ILoggable { * @brief Calculate output torque * @return Output torque in the body fixed frame [Nm] */ - math::Vector CalcOutputTorque(void); + s2e::math::Vector CalcOutputTorque(void); }; /** diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index 9aa2bb1e2..7b603abbc 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -18,8 +18,8 @@ MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_ for (size_t degree = 1; degree <= polynomial_degree_; degree++) { const std::string key_name = "additional_bias_by_mtq_coefficients_" + std::to_string(static_cast(degree)); - math::Vector<9> additional_bias_by_mtq_coefficients_vec; - math::Matrix<3, 3> additional_bias_by_mtq_coefficients; + s2e::math::Vector<9> additional_bias_by_mtq_coefficients_vec; + s2e::math::Matrix<3, 3> additional_bias_by_mtq_coefficients; ini_file.ReadVector(section.c_str(), key_name.c_str(), additional_bias_by_mtq_coefficients_vec); for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { @@ -35,10 +35,10 @@ void MtqMagnetometerInterference::UpdateInterference(void) { magnetometer_.AddConstantBiasNoise_c_nT(-1.0 * previous_added_bias_c_nT_); // Calculate bias - math::Vector<3> additional_bias_c_nT{0.0}; - math::Vector<3> mtq_output_c_Am2 = magnetorquer_.GetOutputMagneticMoment_c_Am2(); + s2e::math::Vector<3> additional_bias_c_nT{0.0}; + s2e::math::Vector<3> mtq_output_c_Am2 = magnetorquer_.GetOutputMagneticMoment_c_Am2(); for (size_t degree = 1; degree <= polynomial_degree_; degree++) { - math::Vector<3> hadamard_mtq; + s2e::math::Vector<3> hadamard_mtq; for (size_t axis = 0; axis < 3; axis++) { hadamard_mtq[axis] = pow(mtq_output_c_Am2[axis], degree); } diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index fea4824eb..2c2c4c0d8 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -31,8 +31,8 @@ class MtqMagnetometerInterference { protected: size_t polynomial_degree_; //!< Polynomial degree - std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise - math::Vector<3> previous_added_bias_c_nT_{0.0}; + std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise + s2e::math::Vector<3> previous_added_bias_c_nT_{0.0}; Magnetometer& magnetometer_; //!< Magnetometer const Magnetorquer& magnetorquer_; //!< Magnetorquer diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 54ab6149e..e0e2a1c13 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -13,7 +13,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, + const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, bool drive_flag, const double init_velocity_rad_s) @@ -31,7 +31,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato stop_limit_angular_velocity_rad_s_(stop_limit_angular_velocity_rad_s), drive_flag_(drive_flag), velocity_limit_rpm_(max_velocity_rpm_), - ode_angular_velocity_(step_width_s_, velocity_limit_rpm_ * math::rpm_to_rad_s, init_velocity_rad_s), + ode_angular_velocity_(step_width_s_, velocity_limit_rpm_ * s2e::math::rpm_to_rad_s, init_velocity_rad_s), rw_jitter_(rw_jitter), is_calculated_jitter_(is_calc_jitter_enabled), is_logged_jitter_(is_log_jitter_enabled) { @@ -40,7 +40,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, + const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag, const double init_velocity_rad_s) @@ -58,7 +58,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato stop_limit_angular_velocity_rad_s_(stop_limit_angular_velocity_rad_s), drive_flag_(drive_flag), velocity_limit_rpm_(max_velocity_rpm_), - ode_angular_velocity_(step_width_s, velocity_limit_rpm_ * math::rpm_to_rad_s, init_velocity_rad_s), + ode_angular_velocity_(step_width_s, velocity_limit_rpm_ * s2e::math::rpm_to_rad_s, init_velocity_rad_s), rw_jitter_(rw_jitter), is_calculated_jitter_(is_calc_jitter_enabled), is_logged_jitter_(is_log_jitter_enabled) { @@ -66,7 +66,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato } void ReactionWheel::Initialize() { - rotation_axis_c_ = math::Vector<3>(0.0); + rotation_axis_c_ = s2e::math::Vector<3>(0.0); rotation_axis_c_[2] = 1.0; rotation_axis_b_ = quaternion_b2c_.InverseFrameConversion(rotation_axis_c_); @@ -77,7 +77,7 @@ void ReactionWheel::Initialize() { generated_angular_acceleration_rad_s2_ = 0.0; angular_velocity_rad_s_ = ode_angular_velocity_.GetAngularVelocity_rad_s(); - angular_velocity_rpm_ = angular_velocity_rad_s_ * math::rad_s_to_rpm; + angular_velocity_rpm_ = angular_velocity_rad_s_ * s2e::math::rad_s_to_rpm; // Turn on RW jitter calculation if (is_calculated_jitter_) { @@ -99,7 +99,7 @@ void ReactionWheel::FastUpdate() { } } -math::Vector<3> ReactionWheel::CalcTorque() { +s2e::math::Vector<3> ReactionWheel::CalcTorque() { if (!drive_flag_) // RW idle mode -> coasting mode { // Clear delay buffer @@ -116,7 +116,7 @@ math::Vector<3> ReactionWheel::CalcTorque() { if (abs_angular_velocity_rad_s < stop_limit_angular_velocity_rad_s_) { // Stop rotation rotation_direction = 0.0; - math::Vector<1> zero_rad_s{0.0}; + s2e::math::Vector<1> zero_rad_s{0.0}; ode_angular_velocity_.Setup(0.0, zero_rad_s); } else if (angular_velocity_rad_s_ > 0.0) { rotation_direction = -1.0; @@ -141,7 +141,7 @@ math::Vector<3> ReactionWheel::CalcTorque() { // Substitution double pre_angular_velocity_rad = angular_velocity_rad_s_; angular_velocity_rad_s_ = ode_angular_velocity_.GetAngularVelocity_rad_s(); - angular_velocity_rpm_ = angular_velocity_rad_s_ * math::rad_s_to_rpm; + angular_velocity_rpm_ = angular_velocity_rad_s_ * s2e::math::rad_s_to_rpm; generated_angular_acceleration_rad_s2_ = (angular_velocity_rad_s_ - pre_angular_velocity_rad) / step_width_s_; // Calc output torque by RW @@ -150,20 +150,20 @@ math::Vector<3> ReactionWheel::CalcTorque() { return output_torque_b_Nm_; } -const math::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { +const s2e::math::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { if (is_calculated_jitter_) { // Add jitter_force_b_N_-derived torque and jitter_torque_b_Nm_ to output_torque_b - return output_torque_b_Nm_ - math::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); + return output_torque_b_Nm_ - s2e::math::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); } else { return output_torque_b_Nm_; } } -const math::Vector<3> ReactionWheel::GetJitterForce_b_N() const { +const s2e::math::Vector<3> ReactionWheel::GetJitterForce_b_N() const { if (is_calculated_jitter_) { return rw_jitter_.GetJitterForce_b_N(); } else { - math::Vector<3> zero{0.0}; + s2e::math::Vector<3> zero{0.0}; return zero; } } @@ -188,7 +188,7 @@ void ReactionWheel::SetVelocityLimit_rpm(const double velocity_limit_rpm) { } else { velocity_limit_rpm_ = velocity_limit_rpm; } - ode_angular_velocity_.SetAngularVelocityLimit_rad_s(velocity_limit_rpm_ * math::rpm_to_rad_s); + ode_angular_velocity_.SetAngularVelocityLimit_rad_s(velocity_limit_rpm_ * s2e::math::rpm_to_rad_s); return; } @@ -238,8 +238,8 @@ double rotor_inertia_kgm2; double max_torque_Nm; double max_velocity_rpm; // Mounting -math::Quaternion quaternion_b2c; -math::Vector<3> position_b_m; +s2e::math::Quaternion quaternion_b2c; +s2e::math::Vector<3> position_b_m; // Time delay double dead_time_s; double time_constant_s; @@ -279,11 +279,11 @@ void InitParams(int actuator_id, std::string file_name, double compo_update_step rw_ini_file.ReadQuaternion(rw_section, "quaternion_b2c", quaternion_b2c); } else // direction_determination_mode == "DIRECTION" { - math::Vector<3> direction_b; + s2e::math::Vector<3> direction_b; rw_ini_file.ReadVector(rw_section, "direction_b", direction_b); - math::Vector<3> direction_c(0.0); + s2e::math::Vector<3> direction_c(0.0); direction_c[2] = 1.0; - math::Quaternion q(direction_b, direction_c); + s2e::math::Quaternion q(direction_b, direction_c); quaternion_b2c = q.Conjugate(); } rw_ini_file.ReadVector(rw_section, "position_b_m", position_b_m); diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index e9cde9dd6..5852b8a74 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -49,8 +49,8 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW */ ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, - const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, + const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -79,8 +79,8 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW [rad/s] */ ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, - const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, + const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -119,12 +119,12 @@ class ReactionWheel : public Component, public ILoggable { * @fn GetOutputTorque_b_Nm * @brief Return output torque in the body fixed frame [Nm] */ - const math::Vector<3> GetOutputTorque_b_Nm() const; + const s2e::math::Vector<3> GetOutputTorque_b_Nm() const; /** * @fn GetJitterForce_b_N * @brief Return output force by jitter in the body fixed frame [N] */ - inline const math::Vector<3> GetJitterForce_b_N() const; + inline const s2e::math::Vector<3> GetJitterForce_b_N() const; /** * @fn GetDriveFlag * @brief Return drive flag @@ -144,7 +144,7 @@ class ReactionWheel : public Component, public ILoggable { * @fn GetAngularMomentum_b_Nms * @brief Return angular momentum of RW [Nms] */ - inline const math::Vector<3> GetAngularMomentum_b_Nms() const { return angular_momentum_b_Nms_; }; + inline const s2e::math::Vector<3> GetAngularMomentum_b_Nms() const { return angular_momentum_b_Nms_; }; // Setter /** @@ -174,10 +174,10 @@ class ReactionWheel : public Component, public ILoggable { const double rotor_inertia_kgm2_; //!< Inertia of RW rotor [kgm2] const double max_torque_Nm_; //!< Maximum output torque [Nm] const double max_velocity_rpm_; //!< Maximum angular velocity of rotor [rpm] - const math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame - const math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] - math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) - math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. + const s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + const s2e::math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] + s2e::math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) + s2e::math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. // Parameters for control delay const double step_width_s_; //!< step width for ReactionWheelOde [sec] @@ -199,8 +199,8 @@ class ReactionWheel : public Component, public ILoggable { double angular_velocity_rpm_ = 0.0; //!< Current angular velocity [rpm] double angular_velocity_rad_s_ = 0.0; //!< Current angular velocity [rad/s] // Output at body frame - math::Vector<3> output_torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] - math::Vector<3> angular_momentum_b_Nms_{0.0}; //!< Angular momentum of RW [Nms] + s2e::math::Vector<3> output_torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] + s2e::math::Vector<3> angular_momentum_b_Nms_{0.0}; //!< Angular momentum of RW [Nms] // ODE double velocity_limit_rpm_; //!< Velocity limit defined by users [RPM] @@ -216,7 +216,7 @@ class ReactionWheel : public Component, public ILoggable { * @fn CalcTorque * @brief Calculation of generated torque */ - math::Vector<3> CalcTorque(); + s2e::math::Vector<3> CalcTorque(); /** * @fn Initialize * @brief Initialize function diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index 189e364f7..5e4a2930b 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -11,14 +11,14 @@ ReactionWheelJitter::ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, - const math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, + const s2e::math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, const double bandwidth, const bool considers_structural_resonance) : radial_force_harmonics_coefficients_(radial_force_harmonics_coefficients), radial_torque_harmonics_coefficients_(radial_torque_harmonics_coefficients), update_interval_s_(update_interval_s), quaternion_b2c_(quaternion_b2c), structural_resonance_frequency_Hz_(structural_resonance_frequency_Hz), - structural_resonance_angular_frequency_Hz_(math::tau * structural_resonance_frequency_Hz), + structural_resonance_angular_frequency_Hz_(s2e::math::tau * structural_resonance_frequency_Hz), damping_factor_(damping_factor), bandwidth_(bandwidth), considers_structural_resonance_(considers_structural_resonance) { @@ -26,7 +26,7 @@ ReactionWheelJitter::ReactionWheelJitter(std::vector> radial // Generate random number for initial rotation phase std::random_device seed_gen; std::default_random_engine engine(seed_gen()); - std::uniform_real_distribution dist(0.0, math::tau); + std::uniform_real_distribution dist(0.0, s2e::math::tau); // Initialize RW rotation phase for (size_t i = 0; i < radial_force_harmonics_coefficients_.size(); i++) { jitter_force_rotation_phase_.push_back(dist(engine)); diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index dbf2e24c5..a6da8a503 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -36,7 +36,7 @@ class ReactionWheelJitter { */ ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, - const math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, + const s2e::math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, const double bandwidth, const bool considers_structural_resonance); /** * @fn ~ReactionWheelJitter @@ -55,24 +55,24 @@ class ReactionWheelJitter { * @fn GetJitterForce_b_N * @brief Return generated jitter force in the body fixed frame [N] */ - const math::Vector<3> GetJitterForce_b_N() const { return jitter_force_b_N_; } + const s2e::math::Vector<3> GetJitterForce_b_N() const { return jitter_force_b_N_; } /** * @fn GetJitterTorque_b_Nm * @brief Return generated jitter torque in the body fixed frame [Nm] */ - const math::Vector<3> GetJitterTorque_b_Nm() const { return jitter_torque_b_Nm_; } + const s2e::math::Vector<3> GetJitterTorque_b_Nm() const { return jitter_torque_b_Nm_; } /** * @fn GetJitterForce_c_N * @brief Return generated jitter force in the components frame [N] */ - const math::Vector<3> GetJitterForce_c_N() const { + const s2e::math::Vector<3> GetJitterForce_c_N() const { return considers_structural_resonance_ ? filtered_jitter_force_n_c_ : unfiltered_jitter_force_n_c_; } /** * @fn GetJitterTorque_c_Nm * @brief Return generated jitter torque in the component frame [Nm] */ - const math::Vector<3> GetJitterTorque_c_Nm() const { + const s2e::math::Vector<3> GetJitterTorque_c_Nm() const { return considers_structural_resonance_ ? filtered_jitter_torque_n_c_ : unfiltered_jitter_torque_n_c_; } @@ -81,7 +81,7 @@ class ReactionWheelJitter { std::vector> radial_torque_harmonics_coefficients_; //!< Coefficients for radial torque harmonics double update_interval_s_; //!< Jitter update interval [sec] - math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame double structural_resonance_frequency_Hz_; //!< Frequency of structural resonance [Hz] double structural_resonance_angular_frequency_Hz_; //!< Angular Frequency of structural resonance @@ -94,22 +94,22 @@ class ReactionWheelJitter { std::vector jitter_torque_rotation_phase_; //!< 2 * pi * h_i * Omega * t [rad] // Variables for solving difference equations in component frame - math::Vector<3> unfiltered_jitter_force_n_c_{0.0}; - math::Vector<3> unfiltered_jitter_force_n_1_c_{0.0}; - math::Vector<3> unfiltered_jitter_force_n_2_c_{0.0}; - math::Vector<3> unfiltered_jitter_torque_n_c_{0.0}; - math::Vector<3> unfiltered_jitter_torque_n_1_c_{0.0}; - math::Vector<3> unfiltered_jitter_torque_n_2_c_{0.0}; - math::Vector<3> filtered_jitter_force_n_c_{0.0}; - math::Vector<3> filtered_jitter_force_n_1_c_{0.0}; - math::Vector<3> filtered_jitter_force_n_2_c_{0.0}; - math::Vector<3> filtered_jitter_torque_n_c_{0.0}; - math::Vector<3> filtered_jitter_torque_n_1_c_{0.0}; - math::Vector<3> filtered_jitter_torque_n_2_c_{0.0}; + s2e::math::Vector<3> unfiltered_jitter_force_n_c_{0.0}; + s2e::math::Vector<3> unfiltered_jitter_force_n_1_c_{0.0}; + s2e::math::Vector<3> unfiltered_jitter_force_n_2_c_{0.0}; + s2e::math::Vector<3> unfiltered_jitter_torque_n_c_{0.0}; + s2e::math::Vector<3> unfiltered_jitter_torque_n_1_c_{0.0}; + s2e::math::Vector<3> unfiltered_jitter_torque_n_2_c_{0.0}; + s2e::math::Vector<3> filtered_jitter_force_n_c_{0.0}; + s2e::math::Vector<3> filtered_jitter_force_n_1_c_{0.0}; + s2e::math::Vector<3> filtered_jitter_force_n_2_c_{0.0}; + s2e::math::Vector<3> filtered_jitter_torque_n_c_{0.0}; + s2e::math::Vector<3> filtered_jitter_torque_n_1_c_{0.0}; + s2e::math::Vector<3> filtered_jitter_torque_n_2_c_{0.0}; double coefficients_[6]; //!< Coefficients of difference equation - math::Vector<3> jitter_force_b_N_{0.0}; //!< Generated jitter force in the body frame [N] - math::Vector<3> jitter_torque_b_Nm_{0.0}; //!< Generated jitter torque in the body frame [Nm] + s2e::math::Vector<3> jitter_force_b_N_{0.0}; //!< Generated jitter force in the body frame [N] + s2e::math::Vector<3> jitter_torque_b_Nm_{0.0}; //!< Generated jitter torque in the body frame [Nm] /** * @fn AddStructuralResonance diff --git a/src/components/real/aocs/reaction_wheel_ode.cpp b/src/components/real/aocs/reaction_wheel_ode.cpp index 48b440089..263e24460 100644 --- a/src/components/real/aocs/reaction_wheel_ode.cpp +++ b/src/components/real/aocs/reaction_wheel_ode.cpp @@ -8,10 +8,10 @@ ReactionWheelOde::ReactionWheelOde(const double step_width_s, const double velocity_limit_rad_s, const double initial_angular_velocity_rad_s) : OrdinaryDifferentialEquation<1>(step_width_s), velocity_limit_rad_s_(velocity_limit_rad_s) { - this->Setup(0.0, math::Vector<1>(initial_angular_velocity_rad_s)); + this->Setup(0.0, s2e::math::Vector<1>(initial_angular_velocity_rad_s)); } -void ReactionWheelOde::DerivativeFunction(double x, const math::Vector<1> &state, math::Vector<1> &rhs) { +void ReactionWheelOde::DerivativeFunction(double x, const s2e::math::Vector<1> &state, s2e::math::Vector<1> &rhs) { UNUSED(x); double angular_velocity_rad_s = state[0]; diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index 89bec07c3..5553ed389 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -12,7 +12,7 @@ * @file ReactionWheelOde * @brief Ordinary differential equation of angular velocity of reaction wheel with first-order lag */ -class ReactionWheelOde : public math::OrdinaryDifferentialEquation<1> { +class ReactionWheelOde : public s2e::math::OrdinaryDifferentialEquation<1> { public: /** * @fn ReactionWheelOde @@ -53,7 +53,7 @@ class ReactionWheelOde : public math::OrdinaryDifferentialEquation<1> { * @param [in] state: State vector * @param [out] rhs: Differentiated value of state vector */ - void DerivativeFunction(double x, const math::Vector<1>& state, math::Vector<1>& rhs) override; + void DerivativeFunction(double x, const s2e::math::Vector<1>& state, s2e::math::Vector<1>& rhs) override; double velocity_limit_rad_s_; double angular_acceleration_rad_s2_ = 0.0; //!< Angular acceleration [rad/s2] diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 60a10d7a5..c6c0e5384 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -14,9 +14,9 @@ #include using namespace std; -using namespace math; +using namespace s2e::math; -StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, +StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, @@ -41,7 +41,7 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, con Initialize(); } StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const Dynamics* dynamics, @@ -67,21 +67,21 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, Pow } void StarSensor::Initialize() { - measured_quaternion_i2c_ = math::Quaternion(0.0, 0.0, 0.0, 1.0); + measured_quaternion_i2c_ = s2e::math::Quaternion(0.0, 0.0, 0.0, 1.0); // Decide delay buffer size max_delay_ = int(output_delay_ * 2 / step_time_s_); if (max_delay_ <= 0) max_delay_ = 1; - vector temp(max_delay_); + vector temp(max_delay_); delay_buffer_ = temp; // Initialize delay buffer for (int i = 0; i < max_delay_; ++i) { delay_buffer_[i] = measured_quaternion_i2c_; } - sight_direction_c_ = math::Vector<3>(0.0); - first_orthogonal_direction_c = math::Vector<3>(0.0); - second_orthogonal_direction_c = math::Vector<3>(0.0); + sight_direction_c_ = s2e::math::Vector<3>(0.0); + first_orthogonal_direction_c = s2e::math::Vector<3>(0.0); + second_orthogonal_direction_c = s2e::math::Vector<3>(0.0); sight_direction_c_[0] = 1.0; //(1,0,0)@Component coordinates, viewing direction first_orthogonal_direction_c[1] = 1.0; //(0,1,0)@Component coordinates, line-of-sight orthogonal direction second_orthogonal_direction_c[2] = 1.0; //(0,0,1)@Component coordinates, line-of-sight orthogonal direction @@ -110,10 +110,10 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa // Add noise on sight direction Quaternion q_sight(sight_direction_c_, sight_direction_noise_); // Random noise on orthogonal direction of sight. Range [0:2pi] - double rot = math::tau * double(rotation_noise_); + double rot = s2e::math::tau * double(rotation_noise_); // Calc observation error on orthogonal direction of sight - math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; - math::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); + s2e::math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; + s2e::math::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); // Judge errors AllJudgement(local_celestial_information, attitude); @@ -137,9 +137,9 @@ void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_i error_flag_ = false; } -int StarSensor::SunJudgement(const math::Vector<3>& sun_b) { - math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); +int StarSensor::SunJudgement(const s2e::math::Vector<3>& sun_b) { + s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double sun_angle_rad = CalAngleVector_rad(sun_b, sight_b); if (sun_angle_rad < sun_forbidden_angle_rad_) return 1; @@ -147,9 +147,9 @@ int StarSensor::SunJudgement(const math::Vector<3>& sun_b) { return 0; } -int StarSensor::EarthJudgement(const math::Vector<3>& earth_b) { - math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); +int StarSensor::EarthJudgement(const s2e::math::Vector<3>& earth_b) { + s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double earth_size_rad = atan2(environment::earth_equatorial_radius_m, earth_b.CalcNorm()); // angles between sat<->earth_center & sat<->earth_edge double earth_center_angle_rad = CalAngleVector_rad(earth_b, sight_b); // angles between sat<->earth_center & sat_sight @@ -160,9 +160,9 @@ int StarSensor::EarthJudgement(const math::Vector<3>& earth_b) { return 0; } -int StarSensor::MoonJudgement(const math::Vector<3>& moon_b) { - math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); +int StarSensor::MoonJudgement(const s2e::math::Vector<3>& moon_b) { + s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double moon_angle_rad = CalAngleVector_rad(moon_b, sight_b); if (moon_angle_rad < moon_forbidden_angle_rad_) return 1; @@ -170,7 +170,7 @@ int StarSensor::MoonJudgement(const math::Vector<3>& moon_b) { return 0; } -int StarSensor::CaptureRateJudgement(const math::Vector<3>& omega_b_rad_s) { +int StarSensor::CaptureRateJudgement(const s2e::math::Vector<3>& omega_b_rad_s) { double omega_norm = omega_b_rad_s.CalcNorm(); if (omega_norm > capture_rate_limit_rad_s_) return 1; @@ -199,8 +199,8 @@ std::string StarSensor::GetLogValue() const { } double StarSensor::CalAngleVector_rad(const Vector<3>& vector1, const Vector<3>& vector2) { - math::Vector<3> vect1_normal = vector1.CalcNormalizedVector(); - math::Vector<3> vect2_normal = vector2.CalcNormalizedVector(); + s2e::math::Vector<3> vect1_normal = vector1.CalcNormalizedVector(); + s2e::math::Vector<3> vect2_normal = vector2.CalcNormalizedVector(); double cosTheta = InnerProduct(vect1_normal, vect2_normal); // Calc cos value double theta_rad = acos(cosTheta); @@ -223,7 +223,7 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const int prescaler = STT_conf.ReadInt(STTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; double step_time_s = component_step_time_s * prescaler; - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; STT_conf.ReadQuaternion(STTSection, "quaternion_b2c", quaternion_b2c); double standard_deviation_orthogonal_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_orthogonal_direction_rad"); double standard_deviation_sight_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_sight_direction_rad"); @@ -232,13 +232,13 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const double output_interval_sec = STT_conf.ReadDouble(STTSection, "output_interval_s"); int output_interval = max(int(output_interval_sec / step_time_s), 1); double sun_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "sun_exclusion_angle_deg"); - double sun_forbidden_angle_rad = sun_forbidden_angle_deg * math::pi / 180.0; + double sun_forbidden_angle_rad = sun_forbidden_angle_deg * s2e::math::pi / 180.0; double earth_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "earth_exclusion_angle_deg"); - double earth_forbidden_angle_rad = earth_forbidden_angle_deg * math::pi / 180.0; + double earth_forbidden_angle_rad = earth_forbidden_angle_deg * s2e::math::pi / 180.0; double moon_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "moon_exclusion_angle_deg"); - double moon_forbidden_angle_rad = moon_forbidden_angle_deg * math::pi / 180.0; + double moon_forbidden_angle_rad = moon_forbidden_angle_deg * s2e::math::pi / 180.0; double capture_rate_deg_s = STT_conf.ReadDouble(STTSection, "angular_rate_limit_deg_s"); - double capture_rate_rad_s = capture_rate_deg_s * math::pi / 180.0; + double capture_rate_rad_s = capture_rate_deg_s * s2e::math::pi / 180.0; StarSensor stt(prescaler, clock_generator, sensor_id, quaternion_b2c, standard_deviation_orthogonal_direction, standard_deviation_sight_direction, step_time_s, output_delay, output_interval, sun_forbidden_angle_rad, earth_forbidden_angle_rad, moon_forbidden_angle_rad, @@ -257,7 +257,7 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port if (prescaler <= 1) prescaler = 1; double step_time_s = component_step_time_s * prescaler; - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; STT_conf.ReadQuaternion(STTSection, "quaternion_b2c", quaternion_b2c); double standard_deviation_orthogonal_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_orthogonal_direction_rad"); double standard_deviation_sight_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_sight_direction_rad"); @@ -266,13 +266,13 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port double output_interval_sec = STT_conf.ReadDouble(STTSection, "output_interval_s"); int output_interval = max(int(output_interval_sec / step_time_s), 1); double sun_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "sun_exclusion_angle_deg"); - double sun_forbidden_angle_rad = sun_forbidden_angle_deg * math::pi / 180.0; + double sun_forbidden_angle_rad = sun_forbidden_angle_deg * s2e::math::pi / 180.0; double earth_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "earth_exclusion_angle_deg"); - double earth_forbidden_angle_rad = earth_forbidden_angle_deg * math::pi / 180.0; + double earth_forbidden_angle_rad = earth_forbidden_angle_deg * s2e::math::pi / 180.0; double moon_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "moon_exclusion_angle_deg"); - double moon_forbidden_angle_rad = moon_forbidden_angle_deg * math::pi / 180.0; + double moon_forbidden_angle_rad = moon_forbidden_angle_deg * s2e::math::pi / 180.0; double capture_rate_deg_s = STT_conf.ReadDouble(STTSection, "angular_rate_limit_deg_s"); - double capture_rate_rad_s = capture_rate_deg_s * math::pi / 180.0; + double capture_rate_rad_s = capture_rate_deg_s * s2e::math::pi / 180.0; power_port->InitializeWithInitializeFile(file_name); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 5965c5e9a..40f7c46a0 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -43,7 +43,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ - StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, + StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, @@ -69,7 +69,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] local_environment: Local environment information */ StarSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const Dynamics* dynamics, @@ -98,7 +98,7 @@ class StarSensor : public Component, public ILoggable { * @fn GetMeasuredQuaternion_i2c * @brief Return observed quaternion from the inertial frame to the component frame */ - inline const math::Quaternion GetMeasuredQuaternion_i2c() const { return measured_quaternion_i2c_; }; + inline const s2e::math::Quaternion GetMeasuredQuaternion_i2c() const { return measured_quaternion_i2c_; }; /** * @fn GetErrorFlag * @brief Return error flag @@ -108,11 +108,11 @@ class StarSensor : public Component, public ILoggable { protected: // StarSensor general parameters const int component_id_; //!< Sensor ID - math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame - math::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion - math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame - math::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame - math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame + s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + s2e::math::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion + s2e::math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame + s2e::math::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame + s2e::math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame // Noise parameters randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction @@ -121,7 +121,7 @@ class StarSensor : public Component, public ILoggable { // Delay emulation parameters int max_delay_; //!< Max delay - std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation + std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation int buffer_position_; //!< Buffer position double step_time_s_; //!< Step time for delay calculation [sec] unsigned int output_delay_; //!< Output delay [0, max_delay_] [step_sec] @@ -153,7 +153,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] attitude: Attitude information */ - math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); + s2e::math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); /** * @fn AllJudgement @@ -168,28 +168,28 @@ class StarSensor : public Component, public ILoggable { * @param [in] sun_b: Sun direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int SunJudgement(const math::Vector<3>& sun_b); + int SunJudgement(const s2e::math::Vector<3>& sun_b); /** * @fn EarthJudgement * @brief Judge violation of earth forbidden angle * @param [in] earth_b: Earth direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int EarthJudgement(const math::Vector<3>& earth_b); + int EarthJudgement(const s2e::math::Vector<3>& earth_b); /** * @fn MoonJudgement * @brief Judge violation of moon forbidden angle * @param [in] moon_b: Moon direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int MoonJudgement(const math::Vector<3>& moon_b); + int MoonJudgement(const s2e::math::Vector<3>& moon_b); /** * @fn CaptureRateJudgement * @brief Judge violation of angular velocity limit * @param [in] omega_b_rad_s: Angular velocity of spacecraft in the body fixed frame * @return 1: violated, 0: not violated */ - int CaptureRateJudgement(const math::Vector<3>& omega_b_rad_s); + int CaptureRateJudgement(const s2e::math::Vector<3>& omega_b_rad_s); /** * @fn CalAngleVector_rad * @brief Calculate angle between two vectors @@ -197,7 +197,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] vector2: Second vector * @return Angle between two vectors [rad] */ - double CalAngleVector_rad(const math::Vector<3>& vector1, const math::Vector<3>& vector2); + double CalAngleVector_rad(const s2e::math::Vector<3>& vector1, const s2e::math::Vector<3>& vector2); /** * @fn Initialize diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 6b47949ae..b9fbd3cae 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -14,7 +14,7 @@ using randomization::NormalRand; using namespace std; -SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, +SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) @@ -29,7 +29,7 @@ SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const } SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, + const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(prescaler, clock_generator, power_port), @@ -59,8 +59,8 @@ void SunSensor::MainRoutine(const int time_count) { } void SunSensor::Measure() { - math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); - math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); + s2e::math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); + s2e::math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); sun_direction_true_c_ = quaternion_b2c_.FrameConversion(sun_dir_b); // Frame conversion from body to component @@ -87,7 +87,7 @@ void SunSensor::Measure() { measured_sun_direction_c_ = measured_sun_direction_c_.CalcNormalizedVector(); } else { - measured_sun_direction_c_ = math::Vector<3>(0); + measured_sun_direction_c_ = s2e::math::Vector<3>(0); alpha_rad_ = 0.0; beta_rad_ = 0.0; } @@ -96,7 +96,7 @@ void SunSensor::Measure() { } void SunSensor::SunDetectionJudgement() { - math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); + s2e::math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); @@ -112,10 +112,10 @@ void SunSensor::SunDetectionJudgement() { } void SunSensor::CalcSolarIlluminance() { - math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); + s2e::math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); - if (sun_angle_ > math::pi_2) { + if (sun_angle_ > s2e::math::pi_2) { solar_illuminance_W_m2_ = 0.0; return; } @@ -126,8 +126,8 @@ void SunSensor::CalcSolarIlluminance() { } double SunSensor::TanRange(double x) { - if (x > math::pi_2) x = math::pi - x; - if (x < -math::pi_2) x = -math::pi - x; + if (x > s2e::math::pi_2) x = s2e::math::pi - x; + if (x < -s2e::math::pi_2) x = -s2e::math::pi - x; return x; } @@ -161,20 +161,20 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, int ss_id, std::string int prescaler = ss_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; ss_conf.ReadQuaternion(Section, "quaternion_b2c", quaternion_b2c); double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; detectable_angle_deg = ss_conf.ReadDouble(Section, "field_of_view_deg"); - detectable_angle_rad = math::pi / 180.0 * detectable_angle_deg; + detectable_angle_rad = s2e::math::pi / 180.0 * detectable_angle_deg; double nr_stddev = 0.0; nr_stddev = ss_conf.ReadDouble(Section, "white_noise_standard_deviation_deg"); - nr_stddev *= math::pi / 180.0; + nr_stddev *= s2e::math::pi / 180.0; double nr_bias_stddev = 0.0; nr_bias_stddev = ss_conf.ReadDouble(Section, "bias_standard_deviation_deg"); - nr_bias_stddev *= math::pi / 180.0; + nr_bias_stddev *= s2e::math::pi / 180.0; double intensity_lower_threshold_percent; intensity_lower_threshold_percent = ss_conf.ReadDouble(Section, "intensity_lower_threshold_percent"); @@ -194,20 +194,20 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, int prescaler = ss_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; ss_conf.ReadQuaternion(Section, "quaternion_b2c", quaternion_b2c); double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; detectable_angle_deg = ss_conf.ReadDouble(Section, "field_of_view_deg"); - detectable_angle_rad = math::pi / 180.0 * detectable_angle_deg; + detectable_angle_rad = s2e::math::pi / 180.0 * detectable_angle_deg; double nr_stddev = 0.0; nr_stddev = ss_conf.ReadDouble(Section, "white_noise_standard_deviation_deg"); - nr_stddev *= math::pi / 180.0; + nr_stddev *= s2e::math::pi / 180.0; double nr_bias_stddev = 0.0; nr_bias_stddev = ss_conf.ReadDouble(Section, "bias_standard_deviation_deg"); - nr_bias_stddev *= math::pi / 180.0; + nr_bias_stddev *= s2e::math::pi / 180.0; double intensity_lower_threshold_percent; intensity_lower_threshold_percent = ss_conf.ReadDouble(Section, "intensity_lower_threshold_percent"); diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index e2c9623fd..81625a87c 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -35,7 +35,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] local_celestial_information: Local celestial information */ - SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, + SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -55,7 +55,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information */ SunSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, + const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -80,19 +80,19 @@ class SunSensor : public Component, public ILoggable { // Getter inline bool GetSunDetectedFlag() const { return sun_detected_flag_; }; - inline const math::Vector<3> GetMeasuredSunDirection_c() const { return measured_sun_direction_c_; }; - inline const math::Vector<3> GetMeasuredSunDirection_b() const { return quaternion_b2c_.Conjugate().FrameConversion(measured_sun_direction_c_); }; + inline const s2e::math::Vector<3> GetMeasuredSunDirection_c() const { return measured_sun_direction_c_; }; + inline const s2e::math::Vector<3> GetMeasuredSunDirection_b() const { return quaternion_b2c_.Conjugate().FrameConversion(measured_sun_direction_c_); }; inline double GetSunAngleAlpha_rad() const { return alpha_rad_; }; inline double GetSunAngleBeta_rad() const { return beta_rad_; }; inline double GetSolarIlluminance_W_m2() const { return solar_illuminance_W_m2_; }; protected: const int component_id_; //!< Sensor ID - math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) + s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) double intensity_lower_threshold_percent_; //!< If the light intensity becomes smaller than this, it becomes impossible to get the sun direction - math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame - math::Vector<3> measured_sun_direction_c_{0.0}; //!< Measured sun vector in the component frame + s2e::math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame + s2e::math::Vector<3> measured_sun_direction_c_{0.0}; //!< Measured sun vector in the component frame double alpha_rad_ = 0.0; //!< Angle between Z-axis and the sun direction projected on XZ plane [rad] double beta_rad_ = 0.0; //!< Angle between Z-axis and the sun direction projected on YZ plane [rad] diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index b0713a76e..db044cb5d 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -11,7 +11,7 @@ #include #include -Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, +Antenna::Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) : component_id_(component_id), is_transmitter_(is_transmitter), is_receiver_(is_receiver), frequency_MHz_(frequency_MHz) { quaternion_b2c_ = quaternion_b2c; @@ -45,7 +45,7 @@ Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, } } -Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, +Antenna::Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const double tx_bitrate_bps, const double tx_output_power_W, const AntennaParameters tx_parameters, const double rx_system_noise_temperature_K, const AntennaParameters rx_parameters) : component_id_(component_id), diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index fbdaffb0a..78d8f48df 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -8,8 +8,8 @@ #include #include -using math::Quaternion; -using math::Vector; +using s2e::math::Quaternion; +using s2e::math::Vector; #include #include "./antenna_radiation_pattern.hpp" @@ -54,7 +54,7 @@ class Antenna { * @param [in] tx_parameters: output, gain, loss_feeder, loss_pointing for TX * @param [in] rx_parameters: gain, loss_feeder, loss_pointing, system_temperature for RX */ - Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, + Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters); /** @@ -71,7 +71,7 @@ class Antenna { * @param [in] rx_system_noise_temperature_K: Receive system noise temperature [K] * @param [in] rx_parameters: RX antenna parameters */ - Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, + Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const double tx_bitrate_bps, const double tx_output_power_W, const AntennaParameters tx_parameters, const double rx_system_noise_temperature_K, const AntennaParameters rx_parameters); /** diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index 422d168ab..93aff7df9 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -36,7 +36,7 @@ class AntennaRadiationPattern { * @param[in] phi_max_rad_: Maximum value of phi */ AntennaRadiationPattern(const std::string file_path, const size_t length_theta = 360, const size_t length_phi = 181, - const double theta_max_rad = math::tau, const double phi_max_rad = math::pi); + const double theta_max_rad = s2e::math::tau, const double phi_max_rad = s2e::math::pi); /** * @fn ~AntennaRadiationPattern @@ -56,8 +56,8 @@ class AntennaRadiationPattern { private: size_t length_theta_ = 360; //!< Length of grid for theta direction size_t length_phi_ = 181; //!< Length of grid for phi direction - double theta_max_rad_ = math::tau; //!< Maximum value of theta - double phi_max_rad_ = math::pi; //!< Maximum value of phi + double theta_max_rad_ = s2e::math::tau; //!< Maximum value of theta + double phi_max_rad_ = s2e::math::pi; //!< Maximum value of phi std::vector> gain_dBi_; //!< Antenna gain table [dBi] }; diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 01b80ff25..2f4d1f19a 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -72,7 +72,7 @@ double GroundStationCalculator::CalcCn0OnGs(const Dynamics& dynamics, const Ante Vector<3> pos_gs2sc_i = sc_pos_i - gs_pos_i; double dist_sc_gs_km = pos_gs2sc_i.CalcNorm() / 1000.0; - double loss_space_dB = -20.0 * log10(4.0 * math::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); + double loss_space_dB = -20.0 * log10(4.0 * s2e::math::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); // GS direction on SC TX antenna frame Vector<3> sc_to_gs_i = gs_pos_i - sc_pos_i; diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 31bc2919f..0e5a01c91 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -11,9 +11,9 @@ #include using namespace std; -using namespace math; +using namespace s2e::math; -Telescope::Telescope(ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, +Telescope::Telescope(ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, @@ -38,8 +38,8 @@ Telescope::Telescope(ClockGenerator* clock_generator, const math::Quaternion& qu x_field_of_view_rad = x_number_of_pix_ * x_fov_per_pix_; y_field_of_view_rad = y_number_of_pix_ * y_fov_per_pix_; - assert(x_field_of_view_rad < math::pi_2); // Avoid the case that the field of view is over 90 degrees - assert(y_field_of_view_rad < math::pi_2); + assert(x_field_of_view_rad < s2e::math::pi_2); // Avoid the case that the field of view is over 90 degrees + assert(y_field_of_view_rad < s2e::math::pi_2); sight_direction_c_ = Vector<3>(0); sight_direction_c_[0] = 1; // (1,0,0) at component frame, Sight direction vector @@ -58,7 +58,7 @@ Telescope::Telescope(ClockGenerator* clock_generator, const math::Quaternion& qu } // Get initial spacecraft position in ECEF if (orbit_ != nullptr) { - math::Vector<3> initial_spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); + s2e::math::Vector<3> initial_spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); initial_ground_position_ecef_m_ = environment::earth_equatorial_radius_m * initial_spacecraft_position_ecef_m; initial_ground_position_ecef_m_ /= (orbit_->GetGeodeticPosition().GetAltitude_m() + environment::earth_equatorial_radius_m); } @@ -83,26 +83,26 @@ void Telescope::MainRoutine(const int time_count) { // sun_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("SUN")); // earth_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("EARTH")); // moon_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("MOON")); - // angle_sun = CalcAngleTwoVectors_rad(sight_direction_c_, sun_pos_c) * 180/math::pi; - // angle_earth = CalcAngleTwoVectors_rad(sight_direction_c_, earth_pos_c) * 180 / math::pi; angle_moon = - // CalcAngleTwoVectors_rad(sight_direction_c_, moon_pos_c) * 180 / math::pi; + // angle_sun = CalcAngleTwoVectors_rad(sight_direction_c_, sun_pos_c) * 180/s2e::math::pi; + // angle_earth = CalcAngleTwoVectors_rad(sight_direction_c_, earth_pos_c) * 180 / s2e::math::pi; angle_moon = + // CalcAngleTwoVectors_rad(sight_direction_c_, moon_pos_c) * 180 / s2e::math::pi; //****************************************************************************** // Direction calculation of ground point ObserveGroundPositionDeviation(); } -bool Telescope::JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle) { - math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); - double angle_rad = math::CalcAngleTwoVectors_rad(target_b, sight_b); +bool Telescope::JudgeForbiddenAngle(const s2e::math::Vector<3>& target_b, const double forbidden_angle) { + s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); + double angle_rad = s2e::math::CalcAngleTwoVectors_rad(target_b, sight_b); if (angle_rad < forbidden_angle) { return true; } else return false; } -void Telescope::Observe(math::Vector<2>& position_image_sensor, const math::Vector<3, double> target_b) { - math::Vector<3, double> target_c = quaternion_b2c_.FrameConversion(target_b); +void Telescope::Observe(s2e::math::Vector<2>& position_image_sensor, const s2e::math::Vector<3, double> target_b) { + s2e::math::Vector<3, double> target_c = quaternion_b2c_.FrameConversion(target_b); double arg_x = atan2(target_c[2], target_c[0]); // Angle from X-axis on XZ plane in the component frame double arg_y = atan2(target_c[1], target_c[0]); // Angle from X-axis on XY plane in the component frame @@ -122,8 +122,8 @@ void Telescope::ObserveStars() { size_t count = 0; // Counter for while loop while (star_list_in_sight.size() < number_of_logged_stars_) { - math::Vector<3> target_b = hipparcos_->GetStarDirection_b(count, quaternion_i2b); - math::Vector<3> target_c = quaternion_b2c_.FrameConversion(target_b); + s2e::math::Vector<3> target_b = hipparcos_->GetStarDirection_b(count, quaternion_i2b); + s2e::math::Vector<3> target_c = quaternion_b2c_.FrameConversion(target_b); double arg_x = atan2(target_c[2], target_c[0]); // Angle from X-axis on XZ plane in the component frame double arg_y = atan2(target_c[1], target_c[0]); // Angle from X-axis on XY plane in the component frame @@ -174,12 +174,12 @@ void Telescope::ObserveGroundPositionDeviation() { } Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); - math::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); - math::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); - math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); - math::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); - math::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); - math::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); + s2e::math::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); + s2e::math::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); + s2e::math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + s2e::math::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); + s2e::math::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); + s2e::math::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); // Ground position in the image sensor in the satellite frame double ground_angle_z_rad = atan2(target_c[2], target_c[0]); @@ -247,7 +247,7 @@ string Telescope::GetLogValue() const { Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const string file_name, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { - using math::pi; + using s2e::math::pi; IniAccess Telescope_conf(file_name); const string st_sensor_id = std::to_string(static_cast(sensor_id)); @@ -260,7 +260,7 @@ Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const st strcat(TelescopeSection, cs); #endif - math::Quaternion quaternion_b2c; + s2e::math::Quaternion quaternion_b2c; Telescope_conf.ReadQuaternion(TelescopeSection, "quaternion_b2c", quaternion_b2c); double sun_forbidden_angle_deg = Telescope_conf.ReadDouble(TelescopeSection, "sun_exclusion_angle_deg"); diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index dec83517b..737a49c98 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -23,7 +23,7 @@ */ struct Star { HipparcosData hipparcos_data; //!< Hipparcos data - math::Vector<2> position_image_sensor; //!< Position of image sensor + s2e::math::Vector<2> position_image_sensor; //!< Position of image sensor }; /* @@ -50,7 +50,7 @@ class Telescope : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] orbit: Orbit information */ - Telescope(ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, + Telescope(ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); @@ -67,8 +67,8 @@ class Telescope : public Component, public ILoggable { protected: private: - math::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame - math::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame + s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame + s2e::math::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame double sun_forbidden_angle_rad_; //!< Sun forbidden angle [rad] double earth_forbidden_angle_rad_; //!< Earth forbidden angle [rad] @@ -89,10 +89,10 @@ class Telescope : public Component, public ILoggable { size_t number_of_logged_stars_; //!< Number of logged stars - math::Vector<2> sun_position_image_sensor{-1}; //!< Position of the sun on the image plane - math::Vector<2> earth_position_image_sensor{-1}; //!< Position of the earth on the image plane - math::Vector<2> moon_position_image_sensor{-1}; //!< Position of the moon on the image plane - math::Vector<3> initial_ground_position_ecef_m_; //!< Initial spacecraft position + s2e::math::Vector<2> sun_position_image_sensor{-1}; //!< Position of the sun on the image plane + s2e::math::Vector<2> earth_position_image_sensor{-1}; //!< Position of the earth on the image plane + s2e::math::Vector<2> moon_position_image_sensor{-1}; //!< Position of the moon on the image plane + s2e::math::Vector<3> initial_ground_position_ecef_m_; //!< Initial spacecraft position std::vector star_list_in_sight; //!< Star information in the field of view @@ -102,7 +102,7 @@ class Telescope : public Component, public ILoggable { * @param [in] target_b: Direction vector of target on the body fixed frame * @param [in] forbidden_angle: Forbidden angle [rad] */ - bool JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle); + bool JudgeForbiddenAngle(const s2e::math::Vector<3>& target_b, const double forbidden_angle); // Override functions for Component /** @@ -117,7 +117,7 @@ class Telescope : public Component, public ILoggable { * @param [out] position_image_sensor: Position on image sensor plane * @param [in] target_b: Direction vector of target on the body fixed frame */ - void Observe(math::Vector<2>& position_image_sensor, const math::Vector<3, double> target_b); + void Observe(s2e::math::Vector<2>& position_image_sensor, const s2e::math::Vector<3, double> target_b); /** * @fn ObserveStars * @brief Observe stars from Hipparcos catalogue @@ -147,9 +147,9 @@ class Telescope : public Component, public ILoggable { virtual std::string GetLogValue() const; // For debug ********************************************** - // math::Vector<3> sun_pos_c; - // math::Vector<3> earth_pos_c; - // math::Vector<3> moon_pos_c; + // s2e::math::Vector<3> sun_pos_c; + // s2e::math::Vector<3> earth_pos_c; + // s2e::math::Vector<3> moon_pos_c; // double angle_sun; // double angle_earth; // double angle_moon; diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index d0b5c1beb..7978d510c 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -36,8 +36,8 @@ void CsvScenarioInterface::Initialize(const std::string file_name) { bool CsvScenarioInterface::IsCsvScenarioEnabled() { return CsvScenarioInterface::is_csv_scenario_enabled_; } -math::Vector<3> CsvScenarioInterface::GetSunDirectionBody(const double time_query) { - math::Vector<3> sun_dir_b; +s2e::math::Vector<3> CsvScenarioInterface::GetSunDirectionBody(const double time_query) { + s2e::math::Vector<3> sun_dir_b; sun_dir_b[0] = GetValueFromBuffer("sun_dir_b_x", time_query); sun_dir_b[1] = GetValueFromBuffer("sun_dir_b_y", time_query); sun_dir_b[2] = GetValueFromBuffer("sun_dir_b_z", time_query); diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index 30f96ead1..e8177ca5f 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -36,7 +36,7 @@ class CsvScenarioInterface { * @brief Return sun direction vector in the body fixed frame * @param [in] time_query: Time query */ - static math::Vector<3> GetSunDirectionBody(const double time_query); + static s2e::math::Vector<3> GetSunDirectionBody(const double time_query); /** * @fn GetSunFlag * @brief Return sun flag diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index 43a22afa8..126f66da7 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -10,7 +10,7 @@ #include SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) : Component(prescaler, clock_generator), @@ -29,7 +29,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_gene } SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), @@ -46,7 +46,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_gene } SolarArrayPanel::SolarArrayPanel(ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(10, clock_generator), @@ -99,14 +99,14 @@ void SolarArrayPanel::MainRoutine(const int time_count) { if (CsvScenarioInterface::IsCsvScenarioEnabled()) { double time_query = compo_step_time_s_ * time_count; const auto solar_constant = srp_environment_->GetSolarConstant_W_m2(); - math::Vector<3> sun_direction_body = CsvScenarioInterface::GetSunDirectionBody(time_query); - math::Vector<3> normalized_sun_direction_body = sun_direction_body.CalcNormalizedVector(); + s2e::math::Vector<3> sun_direction_body = CsvScenarioInterface::GetSunDirectionBody(time_query); + s2e::math::Vector<3> normalized_sun_direction_body = sun_direction_body.CalcNormalizedVector(); power_generation_W_ = cell_efficiency_ * transmission_efficiency_ * solar_constant * (int)CsvScenarioInterface::GetSunFlag(time_query) * cell_area_m2_ * number_of_parallel_ * number_of_series_ * InnerProduct(normal_vector_, normalized_sun_direction_body); } else { const auto power_density = srp_environment_->GetPowerDensity_W_m2(); - math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); - math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); + s2e::math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); + s2e::math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); power_generation_W_ = cell_efficiency_ * transmission_efficiency_ * power_density * cell_area_m2_ * number_of_parallel_ * number_of_series_ * InnerProduct(normal_vector_, sun_dir_b); // TODO: Improve implementation. For example, update IV curve with sun direction and calculate generated power @@ -133,7 +133,7 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: double cell_area_m2; cell_area_m2 = sap_conf.ReadDouble(section_name.c_str(), "cell_area_m2"); - math::Vector<3> normal_vector; + s2e::math::Vector<3> normal_vector; sap_conf.ReadVector(section_name.c_str(), "normal_vector_b", normal_vector); double cell_efficiency; @@ -166,7 +166,7 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: double cell_area_m2; cell_area_m2 = sap_conf.ReadDouble(section_name.c_str(), "cell_area_m2"); - math::Vector<3> normal_vector; + s2e::math::Vector<3> normal_vector; sap_conf.ReadVector(section_name.c_str(), "normal_vector_b", normal_vector); double cell_efficiency; diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index 7ffa91195..db114a081 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -32,7 +32,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s); /** @@ -51,7 +51,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); /** * @fn SolarArrayPanel @@ -69,7 +69,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information */ SolarArrayPanel(ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); /** * @fn SolarArrayPanel @@ -111,7 +111,7 @@ class SolarArrayPanel : public Component, public ILoggable { const int number_of_series_; //!< Number of series connected solar cells const int number_of_parallel_; //!< Number of parallel connected solar cells const double cell_area_m2_; //!< Solar cell area [m^2] - const math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame + const s2e::math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame const double cell_efficiency_; //!< Power generation efficiency of solar cell const double transmission_efficiency_; //!< Efficiency of transmission to PCU diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 70c5f2a1b..7917b5fb1 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -11,7 +11,7 @@ // Constructor SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, const int component_id, - const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, + const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics) : Component(prescaler, clock_generator), @@ -26,7 +26,7 @@ SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_genera } SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, + const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), @@ -66,9 +66,9 @@ void SimpleThruster::CalcThrust() { output_thrust_b_N_ = mag * CalcThrustDirection(); } -void SimpleThruster::CalcTorque(const math::Vector<3> center_of_mass_b_m) { - math::Vector<3> vector_center2thruster = thruster_position_b_m_ - center_of_mass_b_m; - math::Vector<3> torque = OuterProduct(vector_center2thruster, output_thrust_b_N_); +void SimpleThruster::CalcTorque(const s2e::math::Vector<3> center_of_mass_b_m) { + s2e::math::Vector<3> vector_center2thruster = thruster_position_b_m_ - center_of_mass_b_m; + s2e::math::Vector<3> torque = OuterProduct(vector_center2thruster, output_thrust_b_N_); output_torque_b_Nm_ = torque; } @@ -95,25 +95,25 @@ std::string SimpleThruster::GetLogValue() const { double SimpleThruster::CalcThrustMagnitude() { return duty_ * thrust_magnitude_max_N_; } -math::Vector<3> SimpleThruster::CalcThrustDirection() { - math::Vector<3> thrust_dir_b_true = thrust_direction_b_; +s2e::math::Vector<3> SimpleThruster::CalcThrustDirection() { + s2e::math::Vector<3> thrust_dir_b_true = thrust_direction_b_; if (direction_noise_standard_deviation_rad_ > 0.0 + DBL_EPSILON) { - math::Vector<3> ex; // Fixme: to use outer product to generate orthogonal vector + s2e::math::Vector<3> ex; // Fixme: to use outer product to generate orthogonal vector ex[0] = 1.0; ex[1] = 0.0; ex[2] = 0.0; int flag = rand() % 2; double make_axis_rot_rad; if (flag == 0) { - make_axis_rot_rad = math::pi * (double)rand() / RAND_MAX; + make_axis_rot_rad = s2e::math::pi * (double)rand() / RAND_MAX; } else { - make_axis_rot_rad = -math::pi * (double)rand() / RAND_MAX; + make_axis_rot_rad = -s2e::math::pi * (double)rand() / RAND_MAX; } - math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); - math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); + s2e::math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); + s2e::math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); - math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion + s2e::math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion thrust_dir_b_true = err_rot.FrameConversion(thrust_dir_b_true); // Add error } @@ -141,7 +141,7 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_ magnitude_standard_deviation_N = thruster_conf.ReadDouble(Section, "thrust_error_standard_deviation_N"); double deg_err; - deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * math::pi / 180.0; + deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * s2e::math::pi / 180.0; SimpleThruster thruster(prescaler, clock_generator, thruster_id, thruster_pos, thruster_dir, max_magnitude_N, magnitude_standard_deviation_N, deg_err, structure, dynamics); @@ -169,7 +169,7 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, PowerPort* po magnitude_standard_deviation_N = thruster_conf.ReadDouble(Section, "thrust_error_standard_deviation_N"); double deg_err; - deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * math::pi / 180.0; + deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * s2e::math::pi / 180.0; power_port->InitializeWithInitializeFile(file_name); diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index d7d91cfac..e64593201 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -12,7 +12,7 @@ #include "../logger/log_utility.hpp" -AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, +AirDrag::AirDrag(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled), wall_temperature_K_(wall_temperature_K), @@ -26,15 +26,15 @@ AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& ce void AirDrag::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { double air_density_kg_m3 = local_environment.GetAtmosphere().GetAirDensity_kg_m3(); - math::Matrix<3, 3> dcm_ecef2eci = + s2e::math::Matrix<3, 3> dcm_ecef2eci = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); - math::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); - math::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); - math::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); + s2e::math::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); + s2e::math::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); + s2e::math::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); CalcTorqueForce(velocity_b_m_s, air_density_kg_m3); } -void AirDrag::CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3) { +void AirDrag::CalcCoefficients(const s2e::math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3) { double velocity_norm_m_s = velocity_b_m_s.CalcNorm(); CalcCnCt(velocity_b_m_s); for (size_t i = 0; i < surfaces_.size(); i++) { @@ -47,14 +47,14 @@ void AirDrag::CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const doub double AirDrag::CalcFunctionPi(const double s) { double x; double erfs = erf(s); // ERF function is defined in math standard library - x = s * exp(-s * s) + sqrt(math::pi) * (s * s + 0.5) * (1.0 + erfs); + x = s * exp(-s * s) + sqrt(s2e::math::pi) * (s * s + 0.5) * (1.0 + erfs); return x; } double AirDrag::CalcFunctionChi(const double s) { double x; double erfs = erf(s); - x = exp(-s * s) + sqrt(math::pi) * s * (1.0 + erfs); + x = exp(-s * s) + sqrt(s2e::math::pi) * s * (1.0 + erfs); return x; } @@ -69,9 +69,9 @@ void AirDrag::CalcCnCt(const Vector<3>& velocity_b_m_s) { double speed_n = speed * cos_theta_[i]; double speed_t = speed * sin_theta_[i]; double diffuse = 1.0 - surfaces_[i].GetAirSpecularity(); - cn_[i] = (2.0 - diffuse) / sqrt(math::pi) * CalcFunctionPi(speed_n) / (speed * speed) + + cn_[i] = (2.0 - diffuse) / sqrt(s2e::math::pi) * CalcFunctionPi(speed_n) / (speed * speed) + diffuse / 2.0 * CalcFunctionChi(speed_n) / (speed * speed) * sqrt(wall_temperature_K_ / molecular_temperature_K_); - ct_[i] = diffuse * speed_t * CalcFunctionChi(speed_n) / (sqrt(math::pi) * speed * speed); + ct_[i] = diffuse * speed_t * CalcFunctionChi(speed_n) / (sqrt(s2e::math::pi) * speed * speed); } } diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 6d5fe54fd..226e3595b 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -30,7 +30,7 @@ class AirDrag : public SurfaceForce { * @param [in] molecular_weight_g_mol: Molecular weight [g/mol] * @param [in] is_calculation_enabled: Calculation flag */ - AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, + AirDrag(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled = true); /** @@ -66,7 +66,7 @@ class AirDrag : public SurfaceForce { * @param [in] velocity_b_m_s: Spacecraft's velocity vector in the body frame [m/s] * @param [in] air_density_kg_m3: Air density around the spacecraft [kg/m^3] */ - void CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3); + void CalcCoefficients(const s2e::math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3); // internal function for calculation /** @@ -74,7 +74,7 @@ class AirDrag : public SurfaceForce { * @brief Calculate the Cn and Ct * @param [in] velocity_b_m_s: Spacecraft's velocity vector in the body frame [m/s] */ - void CalcCnCt(const math::Vector<3>& velocity_b_m_s); + void CalcCnCt(const s2e::math::Vector<3>& velocity_b_m_s); /** * @fn CalcFunctionPi * @brief Calculate The Pi function in the algorithm diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 6cc662728..427c67fc5 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -23,10 +23,10 @@ class Disturbance : public ILoggable { */ Disturbance(const bool is_calculation_enabled = true, const bool is_attitude_dependent = true) : is_calculation_enabled_(is_calculation_enabled), is_attitude_dependent_(is_attitude_dependent) { - force_b_N_ = math::Vector<3>(0.0); - torque_b_Nm_ = math::Vector<3>(0.0); - acceleration_i_m_s2_ = math::Vector<3>(0.0); - acceleration_b_m_s2_ = math::Vector<3>(0.0); + force_b_N_ = s2e::math::Vector<3>(0.0); + torque_b_Nm_ = s2e::math::Vector<3>(0.0); + acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); + acceleration_b_m_s2_ = s2e::math::Vector<3>(0.0); } /** @@ -60,22 +60,22 @@ class Disturbance : public ILoggable { * @fn GetTorque_b_Nm * @brief Return the disturbance torque in the body frame [Nm] */ - virtual inline math::Vector<3> GetTorque_b_Nm() { return torque_b_Nm_; } + virtual inline s2e::math::Vector<3> GetTorque_b_Nm() { return torque_b_Nm_; } /** * @fn GetForce_b_N * @brief Return the disturbance force in the body frame [N] */ - virtual inline math::Vector<3> GetForce_b_N() { return force_b_N_; } + virtual inline s2e::math::Vector<3> GetForce_b_N() { return force_b_N_; } /** * @fn GetAcceleration_b_m_s2 * @brief Return the disturbance acceleration in the body frame [m/s2] */ - virtual inline math::Vector<3> GetAcceleration_b_m_s2() { return acceleration_b_m_s2_; } + virtual inline s2e::math::Vector<3> GetAcceleration_b_m_s2() { return acceleration_b_m_s2_; } /** * @fn GetAcceleration_i_m_s2 * @brief Return the disturbance acceleration in the inertial frame [m/s2] */ - virtual inline math::Vector<3> GetAcceleration_i_m_s2() { return acceleration_i_m_s2_; } + virtual inline s2e::math::Vector<3> GetAcceleration_i_m_s2() { return acceleration_i_m_s2_; } /** * @fn IsAttitudeDependent * @brief Return the attitude dependent flag @@ -85,10 +85,10 @@ class Disturbance : public ILoggable { protected: bool is_calculation_enabled_; //!< Flag to calculate the disturbance bool is_attitude_dependent_; //!< Flag to show the disturbance depends on attitude information - math::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] - math::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] - math::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] - math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] + s2e::math::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] + s2e::math::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] + s2e::math::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] + s2e::math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] }; #endif // S2E_DISTURBANCES_DISTURBANCE_HPP_ diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index 62af465ba..948cabe47 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -55,19 +55,19 @@ class Disturbances { * @fn GetTorque * @brief Return total disturbance torque in the body frame [Nm] */ - inline math::Vector<3> GetTorque_b_Nm() { return total_torque_b_Nm_; } + inline s2e::math::Vector<3> GetTorque_b_Nm() { return total_torque_b_Nm_; } /** * @fn GetTorque * @brief Return total disturbance force in the body frame [N] */ - inline math::Vector<3> GetForce_b_N() { return total_force_b_N_; } + inline s2e::math::Vector<3> GetForce_b_N() { return total_force_b_N_; } /** * @fn GetTorque * @brief Return total disturbance acceleration in the inertial frame [m/s2] */ - inline math::Vector<3> GetAcceleration_i_m_s2() { return total_acceleration_i_m_s2_; } + inline s2e::math::Vector<3> GetAcceleration_i_m_s2() { return total_acceleration_i_m_s2_; } private: std::string initialize_file_name_; //!< Initialization file name diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 70b7cb534..0520730ff 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -20,8 +20,8 @@ Geopotential::Geopotential(const int degree, const std::string file_path, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), degree_(degree) { // Initialize - acceleration_ecef_m_s2_ = math::Vector<3>(0.0); - debug_pos_ecef_m_ = math::Vector<3>(0.0); + acceleration_ecef_m_s2_ = s2e::math::Vector<3>(0.0); + debug_pos_ecef_m_ = s2e::math::Vector<3>(0.0); // degree if (degree_ > 360) { degree_ = 360; @@ -83,8 +83,8 @@ void Geopotential::Update(const LocalEnvironment &local_environment, const Dynam UNUSED(time_ms_); #endif - math::Matrix<3, 3> trans_eci2ecef_ = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef(); - math::Matrix<3, 3> trans_ecef2eci = trans_eci2ecef_.Transpose(); + s2e::math::Matrix<3, 3> trans_eci2ecef_ = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef(); + s2e::math::Matrix<3, 3> trans_ecef2eci = trans_eci2ecef_.Transpose(); acceleration_i_m_s2_ = trans_ecef2eci * acceleration_ecef_m_s2_; } diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 4903cb412..0f66a463d 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -67,7 +67,7 @@ class Geopotential : public Disturbance { Vector<3> acceleration_ecef_m_s2_; //!< Calculated acceleration in the ECEF frame [m/s2] // debug - math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] + s2e::math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] double time_ms_ = 0.0; //!< Calculation time [ms] /** diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index b52b4bee5..5eff2c05a 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -23,9 +23,9 @@ void GravityGradient::Update(const LocalEnvironment& local_environment, const Dy dynamics.GetAttitude().GetInertiaTensor_b_kgm2()); } -math::Vector<3> GravityGradient::CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2) { +s2e::math::Vector<3> GravityGradient::CalcTorque_b_Nm(const s2e::math::Vector<3> earth_position_from_sc_b_m, const s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) { double r_norm_m = earth_position_from_sc_b_m.CalcNorm(); - math::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector + s2e::math::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector u_b /= r_norm_m; double coeff = 3.0 * gravity_constant_m3_s2_ / pow(r_norm_m, 3.0); diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index be957e19c..9ca8ff37f 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -65,7 +65,7 @@ class GravityGradient : public Disturbance { * @param [in] inertia_tensor_b_kgm2: Inertia Tensor at body frame [kg*m^2] * @return Calculated torque at body frame [Nm] */ - math::Vector<3> CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2); + s2e::math::Vector<3> CalcTorque_b_Nm(const s2e::math::Vector<3> earth_position_from_sc_b_m, const s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2); }; /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index bad7c5f7c..1baa1319b 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -20,8 +20,8 @@ LunarGravityField::LunarGravityField(const int degree, const std::string file_path, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), degree_(degree) { // Initialize - acceleration_mcmf_m_s2_ = math::Vector<3>(0.0); - debug_pos_mcmf_m_ = math::Vector<3>(0.0); + acceleration_mcmf_m_s2_ = s2e::math::Vector<3>(0.0); + debug_pos_mcmf_m_ = s2e::math::Vector<3>(0.0); debug_pos_mcmf_m_[0] = 2000000; debug_pos_mcmf_m_[1] = 2000000; debug_pos_mcmf_m_[2] = 2000000; @@ -88,10 +88,10 @@ bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { void LunarGravityField::Update(const LocalEnvironment &local_environment, const Dynamics &dynamics) { const CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); - math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); + s2e::math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); - math::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); - math::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; + s2e::math::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; #ifdef DEBUG_LUNAR_GRAVITY_FIELD std::chrono::system_clock::time_point start, end; @@ -107,7 +107,7 @@ void LunarGravityField::Update(const LocalEnvironment &local_environment, const UNUSED(time_ms_); #endif - math::Matrix<3, 3> dcm_mcmf2i = dcm_mci2mcmf_.Transpose(); + s2e::math::Matrix<3, 3> dcm_mcmf2i = dcm_mci2mcmf_.Transpose(); acceleration_i_m_s2_ = dcm_mcmf2i * acceleration_mcmf_m_s2_; } diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index f1fa27c57..0a77b9c4b 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -71,7 +71,7 @@ class LunarGravityField : public Disturbance { Vector<3> acceleration_mcmf_m_s2_; //!< Calculated acceleration in the MCMF(Moon Centered Moon Fixed) frame [m/s2] // debug - math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] + s2e::math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] double time_ms_ = 0.0; //!< Calculation time [ms] /** diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 901777c6a..9af45805c 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -31,8 +31,8 @@ void MagneticDisturbance::Update(const LocalEnvironment& local_environment, cons } void MagneticDisturbance::CalcRMM() { - static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); - static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); + static s2e::math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); + static s2e::math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant static randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), global_randomization.MakeSeed()); diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 80aea05e3..e3be84928 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -50,7 +50,7 @@ class MagneticDisturbance : public Disturbance { private: const double kMagUnit_ = 1.0e-9; //!< Constant value to change the unit [nT] -> [T] - math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] + s2e::math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] const ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters /** @@ -64,7 +64,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] magnetic_field_b_nT: Magnetic field vector at the body frame [nT] * @return Calculated disturbance torque in body frame [Nm] */ - math::Vector<3> CalcTorque_b_Nm(const math::Vector<3>& magnetic_field_b_nT); + s2e::math::Vector<3> CalcTorque_b_Nm(const s2e::math::Vector<3>& magnetic_field_b_nT); }; /** diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index b07d2a858..ed6386234 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -11,17 +11,17 @@ #include "../logger/log_utility.hpp" SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, - const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) + const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} void SolarRadiationPressureDisturbance::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { UNUSED(dynamics); - math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); + s2e::math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); CalcTorqueForce(sun_position_from_sc_b_m, local_environment.GetSolarRadiationPressure().GetPressure_N_m2()); } -void SolarRadiationPressureDisturbance::CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) { +void SolarRadiationPressureDisturbance::CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item) { UNUSED(input_direction_b); for (size_t i = 0; i < surfaces_.size(); i++) { // Calculate for each surface diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 7ec4e9bbc..dc4f08419 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -25,7 +25,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, + SolarRadiationPressureDisturbance(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** @@ -55,7 +55,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] input_direction_b: Direction vector of the sun at the body frame * @param [in] item: Solar pressure [N/m^2] */ - void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item); + void CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item); }; /** diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 348944267..158e2a695 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -7,7 +7,7 @@ #include "../math_physics/math/vector.hpp" -SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) +SurfaceForce::SurfaceForce(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { // Initialize vectors size_t num = surfaces_.size(); @@ -17,23 +17,23 @@ SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vec sin_theta_.assign(num, 0.0); } -math::Vector<3> SurfaceForce::CalcTorqueForce(math::Vector<3>& input_direction_b, double item) { +s2e::math::Vector<3> SurfaceForce::CalcTorqueForce(s2e::math::Vector<3>& input_direction_b, double item) { CalcTheta(input_direction_b); CalcCoefficients(input_direction_b, item); - math::Vector<3> force_b_N(0.0); - math::Vector<3> torque_b_Nm(0.0); - math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); + s2e::math::Vector<3> force_b_N(0.0); + s2e::math::Vector<3> torque_b_Nm(0.0); + s2e::math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); for (size_t i = 0; i < surfaces_.size(); i++) { if (cos_theta_[i] > 0.0) { // if the surface faces to the disturbance source (sun or air) // calc direction of in-plane force - math::Vector<3> normal = surfaces_[i].GetNormal_b(); - math::Vector<3> ncu = OuterProduct(input_b_normal, normal); - math::Vector<3> ncu_normalized = ncu.CalcNormalizedVector(); - math::Vector<3> in_plane_force_direction = OuterProduct(ncu_normalized, normal); + s2e::math::Vector<3> normal = surfaces_[i].GetNormal_b(); + s2e::math::Vector<3> ncu = OuterProduct(input_b_normal, normal); + s2e::math::Vector<3> ncu_normalized = ncu.CalcNormalizedVector(); + s2e::math::Vector<3> in_plane_force_direction = OuterProduct(ncu_normalized, normal); // calc force - math::Vector<3> force_per_surface_b_N = -1.0 * normal_coefficients_[i] * normal + tangential_coefficients_[i] * in_plane_force_direction; + s2e::math::Vector<3> force_per_surface_b_N = -1.0 * normal_coefficients_[i] * normal + tangential_coefficients_[i] * in_plane_force_direction; force_b_N += force_per_surface_b_N; // calc torque torque_b_Nm += OuterProduct(surfaces_[i].GetPosition_b_m() - center_of_gravity_b_m_, force_per_surface_b_N); @@ -44,8 +44,8 @@ math::Vector<3> SurfaceForce::CalcTorqueForce(math::Vector<3>& input_direction_b return torque_b_Nm_; } -void SurfaceForce::CalcTheta(math::Vector<3>& input_direction_b) { - math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); +void SurfaceForce::CalcTheta(s2e::math::Vector<3>& input_direction_b) { + s2e::math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); for (size_t i = 0; i < surfaces_.size(); i++) { cos_theta_[i] = InnerProduct(surfaces_[i].GetNormal_b(), input_b_normal); diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index 2fa4a0ac3..2fa6fa7d3 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -28,7 +28,7 @@ class SurfaceForce : public Disturbance { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); + SurfaceForce(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** * @fn ~SurfaceForce * @brief Destructor @@ -38,7 +38,7 @@ class SurfaceForce : public Disturbance { protected: // Spacecraft Structure parameters const std::vector& surfaces_; //!< List of surfaces - const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] + const s2e::math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] // Internal calculated variables std::vector normal_coefficients_; //!< coefficients for out-plane force for each surface @@ -54,13 +54,13 @@ class SurfaceForce : public Disturbance { * @param [in] item: Parameter which decide the magnitude of the disturbances (e.g., Solar flux, air density) * @return Calculated disturbance torque in body frame [Nm] */ - math::Vector<3> CalcTorqueForce(math::Vector<3>& input_direction_b, double item); + s2e::math::Vector<3> CalcTorqueForce(s2e::math::Vector<3>& input_direction_b, double item); /** * @fn CalcTheta * @brief Calculate cosX and sinX * @param [in] input_direction_b: Direction of disturbance source at the body frame */ - void CalcTheta(math::Vector<3>& input_direction_b); + void CalcTheta(s2e::math::Vector<3>& input_direction_b); /** * @fn CalcCoefficients @@ -68,7 +68,7 @@ class SurfaceForce : public Disturbance { * @param [in] input_direction_b: Direction of disturbance source at the body frame * @param [in] item: Parameter which decide the magnitude of the disturbances (e.g., Solar flux, air density) */ - virtual void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) = 0; + virtual void CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item) = 0; }; #endif // S2E_DISTURBANCES_SURFACE_FORCE_HPP_ diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 72bb2d24f..075415ecf 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -9,18 +9,18 @@ ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), third_body_list_(third_body_list) { - acceleration_i_m_s2_ = math::Vector<3>(0.0); + acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); } ThirdBodyGravity::~ThirdBodyGravity() {} void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { - acceleration_i_m_s2_ = math::Vector<3>(0.0); // initialize + acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); // initialize - math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); for (auto third_body : third_body_list_) { - math::Vector<3> third_body_position_from_sc_i_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_i_m(third_body.c_str()); - math::Vector<3> third_body_pos_i_m = sc_position_i_m + third_body_position_from_sc_i_m; + s2e::math::Vector<3> third_body_position_from_sc_i_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_i_m(third_body.c_str()); + s2e::math::Vector<3> third_body_pos_i_m = sc_position_i_m + third_body_position_from_sc_i_m; double gravity_constant = local_environment.GetCelestialInformation().GetGlobalInformation().GetGravityConstant_m3_s2(third_body.c_str()); third_body_acceleration_i_m_s2_ = CalcAcceleration_i_m_s2(third_body_pos_i_m, third_body_position_from_sc_i_m, gravity_constant); @@ -28,8 +28,8 @@ void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const D } } -math::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const math::Vector<3> s, const math::Vector<3> sr, const double gravity_constant_m_s2) { - math::Vector<3> acceleration_i_m_s2; +s2e::math::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const s2e::math::Vector<3> s, const s2e::math::Vector<3> sr, const double gravity_constant_m_s2) { + s2e::math::Vector<3> acceleration_i_m_s2; double s_norm = s.CalcNorm(); double s_norm3 = s_norm * s_norm * s_norm; diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 12b9f8b68..36fded28d 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -43,7 +43,7 @@ class ThirdBodyGravity : public Disturbance { private: std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances - math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] + s2e::math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] // Override classes for ILoggable /** @@ -65,7 +65,7 @@ class ThirdBodyGravity : public Disturbance { * @param [in] GM: The gravitational constants of the third celestial body [m3/s2] * @return Third body disturbance acceleration in the inertial frame in unit [m/s2] */ - math::Vector<3> CalcAcceleration_i_m_s2(const math::Vector<3> s, const math::Vector<3> sr, const double gravity_constant_m_s2); + s2e::math::Vector<3> CalcAcceleration_i_m_s2(const s2e::math::Vector<3> s, const s2e::math::Vector<3> sr, const double gravity_constant_m_s2); }; /** diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 461144660..35cc6b237 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -6,15 +6,15 @@ #include -Attitude::Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) +Attitude::Attitude(const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { - angular_velocity_b_rad_s_ = math::Vector<3>(0.0); - quaternion_i2b_ = math::Quaternion(0.0, 0.0, 0.0, 1.0); - torque_b_Nm_ = math::Vector<3>(0.0); - angular_momentum_spacecraft_b_Nms_ = math::Vector<3>(0.0); - angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); - angular_momentum_total_b_Nms_ = math::Vector<3>(0.0); - angular_momentum_total_i_Nms_ = math::Vector<3>(0.0); + angular_velocity_b_rad_s_ = s2e::math::Vector<3>(0.0); + quaternion_i2b_ = s2e::math::Quaternion(0.0, 0.0, 0.0, 1.0); + torque_b_Nm_ = s2e::math::Vector<3>(0.0); + angular_momentum_spacecraft_b_Nms_ = s2e::math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); + angular_momentum_total_b_Nms_ = s2e::math::Vector<3>(0.0); + angular_momentum_total_i_Nms_ = s2e::math::Vector<3>(0.0); angular_momentum_total_Nms_ = 0.0; kinetic_energy_J_ = 0.0; } @@ -50,15 +50,15 @@ void Attitude::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { void Attitude::CalcAngularMomentum(void) { angular_momentum_spacecraft_b_Nms_ = inertia_tensor_kgm2_ * angular_velocity_b_rad_s_; angular_momentum_total_b_Nms_ = angular_momentum_reaction_wheel_b_Nms_ + angular_momentum_spacecraft_b_Nms_; - math::Quaternion q_b2i = quaternion_i2b_.Conjugate(); + s2e::math::Quaternion q_b2i = quaternion_i2b_.Conjugate(); angular_momentum_total_i_Nms_ = q_b2i.FrameConversion(angular_momentum_total_b_Nms_); angular_momentum_total_Nms_ = angular_momentum_total_i_Nms_.CalcNorm(); - kinetic_energy_J_ = 0.5 * math::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); + kinetic_energy_J_ = 0.5 * s2e::math::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } -math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s) { - math::Matrix<4, 4> angular_velocity_matrix; +s2e::math::Matrix<4, 4> CalcAngularVelocityMatrix(s2e::math::Vector<3> angular_velocity_b_rad_s) { + s2e::math::Matrix<4, 4> angular_velocity_matrix; angular_velocity_matrix[0][0] = 0.0f; angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 130040b88..3485444d9 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -23,7 +23,7 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Constructor * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name = "attitude"); + Attitude(const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name = "attitude"); /** * @fn ~Attitude * @brief Destructor @@ -40,12 +40,12 @@ class Attitude : public ILoggable, public SimulationObject { * @fn GetAngularVelocity_b_rad_s * @brief Return angular velocity of spacecraft body-fixed frame with respect to the inertial frame [rad/s] */ - inline math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } + inline s2e::math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } /** * @fn GetQuaternion_i2b * @brief Return attitude quaternion from the inertial frame to the body fixed frame */ - inline math::Quaternion GetQuaternion_i2b() const { return quaternion_i2b_; } + inline s2e::math::Quaternion GetQuaternion_i2b() const { return quaternion_i2b_; } /** * @fn GetTotalAngularMomentNorm_Nms * @brief Return norm of total angular momentum of the spacecraft [Nms] @@ -60,34 +60,34 @@ class Attitude : public ILoggable, public SimulationObject { * @fn GetInertiaTensor_b_kgm2 * @brief Return inertia tensor [kg m^2] */ - inline math::Matrix<3, 3> GetInertiaTensor_b_kgm2() const { return inertia_tensor_kgm2_; } + inline s2e::math::Matrix<3, 3> GetInertiaTensor_b_kgm2() const { return inertia_tensor_kgm2_; } // Setter /** * @fn SetAngularVelocity_b_rad_s * @brief Set angular velocity of the body fixed frame with respect to the inertial frame [rad/s] */ - inline void SetAngularVelocity_b_rad_s(const math::Vector<3> angular_velocity_b_rad_s) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; } + inline void SetAngularVelocity_b_rad_s(const s2e::math::Vector<3> angular_velocity_b_rad_s) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; } /** * @fn SetQuaternion_i2b * @brief Set attitude quaternion from the inertial frame to the body frame */ - inline void SetQuaternion_i2b(const math::Quaternion quaternion_i2b) { quaternion_i2b_ = quaternion_i2b; } + inline void SetQuaternion_i2b(const s2e::math::Quaternion quaternion_i2b) { quaternion_i2b_ = quaternion_i2b; } /** * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + inline void SetTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } /** * @fn AddTorque_b_Nm * @brief Add torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void AddTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ += torque_b_Nm; } + inline void AddTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { torque_b_Nm_ += torque_b_Nm; } /** * @fn SetRwAngularMomentum_b_Nms * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] */ - inline void SetRwAngularMomentum_b_Nms(const math::Vector<3> angular_momentum_rw_b_Nms) { + inline void SetRwAngularMomentum_b_Nms(const s2e::math::Vector<3> angular_momentum_rw_b_Nms) { angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_rw_b_Nms; } @@ -116,15 +116,15 @@ class Attitude : public ILoggable, public SimulationObject { protected: bool is_calc_enabled_ = true; //!< Calculation flag double propagation_step_s_; //!< Propagation step [sec] - math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] - math::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame - math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] - const math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] + s2e::math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] + s2e::math::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame + s2e::math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] + const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] - math::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] - math::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] - math::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] - math::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] + s2e::math::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] + s2e::math::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + s2e::math::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] + s2e::math::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] double angular_momentum_total_Nms_; //!< Norm of total angular momentum [Nms] double kinetic_energy_J_; //!< Rotational Kinetic Energy of Spacecraft [J] @@ -140,6 +140,6 @@ class Attitude : public ILoggable, public SimulationObject { * @brief Generate angular velocity matrix for kinematics calculation * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] */ -math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s); +s2e::math::Matrix<4, 4> CalcAngularVelocityMatrix(s2e::math::Vector<3> angular_velocity_b_rad_s); #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 5ff72c44e..29e130fef 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -9,8 +9,8 @@ #include #include -AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, +AttitudeRk4::AttitudeRk4(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, + const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; @@ -18,7 +18,7 @@ AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const torque_b_Nm_ = torque_b_Nm; propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); CalcAngularMomentum(); @@ -32,14 +32,14 @@ void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); //!< Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); //!< Consider how to handle this variable CalcAngularMomentum(); } void AttitudeRk4::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); + s2e::math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); torque_inertia_tensor_change_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); @@ -55,29 +55,29 @@ void AttitudeRk4::Propagate(const double end_time_s) { CalcAngularMomentum(); } -math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(math::Vector<7> x, double t) { +s2e::math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(s2e::math::Vector<7> x, double t) { UNUSED(t); - math::Vector<7> dxdt; + s2e::math::Vector<7> dxdt; - math::Vector<3> omega_b; + s2e::math::Vector<3> omega_b; for (int i = 0; i < 3; i++) { omega_b[i] = x[i]; } - math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; - math::Vector<3> rhs = - inverse_inertia_tensor_ * (torque_b_Nm_ - math::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); + s2e::math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; + s2e::math::Vector<3> rhs = + inverse_inertia_tensor_ * (torque_b_Nm_ - s2e::math::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; } - math::Vector<4> quaternion_i2b; + s2e::math::Vector<4> quaternion_i2b; for (int i = 0; i < 4; i++) { quaternion_i2b[i] = x[i + 3]; } - math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; + s2e::math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; for (int i = 0; i < 4; i++) { dxdt[i + 3] = d_quaternion[i]; @@ -87,7 +87,7 @@ math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(math::Vector<7> x, do } void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { - math::Vector<7> x; + s2e::math::Vector<7> x; for (int i = 0; i < 3; i++) { x[i] = angular_velocity_b_rad_s_[i]; } @@ -95,8 +95,8 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { x[i + 3] = quaternion_i2b_[i]; } - math::Vector<7> k1, k2, k3, k4; - math::Vector<7> xk2, xk3, xk4; + s2e::math::Vector<7> k1, k2, k3, k4; + s2e::math::Vector<7> xk2, xk3, xk4; k1 = AttitudeDynamicsAndKinematics(x, t); xk2 = x + (dt / 2.0) * k1; @@ -109,7 +109,7 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); - math::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); + s2e::math::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = next_x[i]; diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 5fe31d669..003989937 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -24,8 +24,8 @@ class AttitudeRk4 : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, - const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); + AttitudeRk4(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, + const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 * @brief Destructor @@ -48,9 +48,9 @@ class AttitudeRk4 : public Attitude { private: double current_propagation_time_s_; //!< current time [sec] - math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor - math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - math::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + s2e::math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor + s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] + s2e::math::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] /** * @fn AttitudeDynamicsAndKinematics @@ -58,7 +58,7 @@ class AttitudeRk4 : public Attitude { * @param [in] x: State vector (angular velocity and quaternion) * @param [in] t: Unused TODO: remove? */ - math::Vector<7> AttitudeDynamicsAndKinematics(math::Vector<7> x, double t); + s2e::math::Vector<7> AttitudeDynamicsAndKinematics(s2e::math::Vector<7> x, double t); /** * @fn RungeKuttaOneStep * @brief Equation for one step of Runge-Kutta method diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index bb23cec85..47c8cad29 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -9,9 +9,9 @@ #include AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( - const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, - const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, - const double intrinsic_angular_velocity_cantilever_rad_s, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, + const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, + const s2e::math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, + const double intrinsic_angular_velocity_cantilever_rad_s, const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), numerical_integrator_(propagation_step_s, attitude_ode_, @@ -21,7 +21,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( torque_b_Nm_ = torque_b_Nm; propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); attitude_ode_.SetInertiaTensorCantilever_kgm2(inertia_tensor_cantilever_kgm2); attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); @@ -30,7 +30,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( double spring_coefficient = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); attitude_ode_.SetSpringCoefficient(spring_coefficient); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); - math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = + s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2) * inertia_tensor_kgm2_; attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever); attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); @@ -65,23 +65,23 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); //!< TODO: Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); //!< TODO: Consider how to handle this variable CalcAngularMomentum(); } void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - math::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); + s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); assert(end_time_s - current_propagation_time_s_ > 1e-6); - math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); - math::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; + s2e::math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); + s2e::math::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); - math::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, + s2e::math::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, quaternion_i2b_, euler_angular_cantilever_rad_); numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 0ab64d619..95226c473 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -31,10 +31,10 @@ class AttitudeWithCantileverVibration : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeWithCantileverVibration(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, + AttitudeWithCantileverVibration(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, + const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const s2e::math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, - const math::Vector<3>& torque_b_Nm, const double propagation_step_s, + const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeWithCantileverVibration @@ -70,8 +70,8 @@ class AttitudeWithCantileverVibration : public Attitude { private: double current_propagation_time_s_; //!< current time [sec] - math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] - math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] + s2e::math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] + s2e::math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index ae12dc2e7..982b1b446 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -7,9 +7,9 @@ #include #include -ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, - const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, +ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const s2e::math::Quaternion quaternion_i2b, + const s2e::math::Vector<3> main_target_direction_b, const s2e::math::Vector<3> sub_target_direction_b, + const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), main_mode_(main_mode), @@ -53,7 +53,7 @@ void ControlledAttitude::Initialize(void) { } void ControlledAttitude::Propagate(const double end_time_s) { - math::Vector<3> main_direction_i, sub_direction_i; + s2e::math::Vector<3> main_direction_i, sub_direction_i; if (!is_calc_enabled_) return; if (main_mode_ == AttitudeControlMode::kInertialStabilize) { @@ -72,28 +72,28 @@ void ControlledAttitude::Propagate(const double end_time_s) { return; } -math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mode) { - math::Vector<3> direction; +s2e::math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mode) { + s2e::math::Vector<3> direction; if (mode == AttitudeControlMode::kSunPointing) { direction = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); // When the local_celestial_information is not initialized. FIXME: This is temporary codes for attitude initialize. if (direction.CalcNorm() == 0.0) { - math::Vector<3> sun_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN"); - math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); + s2e::math::Vector<3> sun_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN"); + s2e::math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); direction = sun_position_i_m - spacecraft_position_i_m; } } else if (mode == AttitudeControlMode::kEarthCenterPointing) { direction = local_celestial_information_->GetPositionFromSpacecraft_i_m("EARTH"); // When the local_celestial_information is not initialized. FIXME: This is temporary codes for attitude initialize. if (direction.CalcNorm() == 0.0) { - math::Vector<3> earth_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("EARTH"); - math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); + s2e::math::Vector<3> earth_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("EARTH"); + s2e::math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); direction = earth_position_i_m - spacecraft_position_i_m; } } else if (mode == AttitudeControlMode::kVelocityDirectionPointing) { direction = orbit_->GetVelocity_i_m_s(); } else if (mode == AttitudeControlMode::kGroundSpeedDirectionPointing) { - math::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + s2e::math::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); direction = dcm_ecef2eci * orbit_->GetVelocity_ecef_m_s(); } else if (mode == AttitudeControlMode::kOrbitNormalPointing) { direction = OuterProduct(orbit_->GetPosition_i_m(), orbit_->GetVelocity_i_m_s()); @@ -102,29 +102,29 @@ math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mo return direction; } -void ControlledAttitude::PointingControl(const math::Vector<3> main_direction_i, const math::Vector<3> sub_direction_i) { +void ControlledAttitude::PointingControl(const s2e::math::Vector<3> main_direction_i, const s2e::math::Vector<3> sub_direction_i) { // Calc DCM ECI->Target - math::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); + s2e::math::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); // Calc DCM Target->body - math::Matrix<3, 3> dcm_t2b = CalcDcm(main_target_direction_b_, sub_target_direction_b_); + s2e::math::Matrix<3, 3> dcm_t2b = CalcDcm(main_target_direction_b_, sub_target_direction_b_); // Calc DCM ECI->body - math::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); + s2e::math::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); // Convert to Quaternion - quaternion_i2b_ = math::Quaternion::ConvertFromDcm(dcm_i2b); + quaternion_i2b_ = s2e::math::Quaternion::ConvertFromDcm(dcm_i2b); } -math::Matrix<3, 3> ControlledAttitude::CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction) { +s2e::math::Matrix<3, 3> ControlledAttitude::CalcDcm(const s2e::math::Vector<3> main_direction, const s2e::math::Vector<3> sub_direction) { // Calc basis vectors - math::Vector<3> ex, ey, ez; + s2e::math::Vector<3> ex, ey, ez; ex = main_direction; - math::Vector<3> tmp1 = OuterProduct(ex, sub_direction); - math::Vector<3> tmp2 = OuterProduct(tmp1, ex); + s2e::math::Vector<3> tmp1 = OuterProduct(ex, sub_direction); + s2e::math::Vector<3> tmp2 = OuterProduct(tmp1, ex); ey = tmp2.CalcNormalizedVector(); - math::Vector<3> tmp3 = OuterProduct(ex, ey); + s2e::math::Vector<3> tmp3 = OuterProduct(ex, ey); ez = tmp3.CalcNormalizedVector(); // Generate DCM - math::Matrix<3, 3> dcm; + s2e::math::Matrix<3, 3> dcm; for (int i = 0; i < 3; i++) { dcm[i][0] = ex[i]; dcm[i][1] = ey[i]; @@ -152,24 +152,24 @@ AttitudeControlMode ConvertStringToCtrlMode(const std::string mode) { } void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { - math::Vector<3> controlled_torque_b_Nm(0.0); + s2e::math::Vector<3> controlled_torque_b_Nm(0.0); if (previous_calc_time_s_ > 0.0) { double time_diff_sec = current_time_s - previous_calc_time_s_; - math::Quaternion prev_q_b2i = previous_quaternion_i2b_.Conjugate(); - math::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; + s2e::math::Quaternion prev_q_b2i = previous_quaternion_i2b_.Conjugate(); + s2e::math::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; q_diff = (2.0 / time_diff_sec) * q_diff; - math::Vector<3> angular_acc_b_rad_s2_; + s2e::math::Vector<3> angular_acc_b_rad_s2_; for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = q_diff[i]; angular_acc_b_rad_s2_[i] = (previous_omega_b_rad_s_[i] - angular_velocity_b_rad_s_[i]) / time_diff_sec; } - math::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); + s2e::math::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); controlled_torque_b_Nm = inv_inertia_tensor * angular_acc_b_rad_s2_; } else { - angular_velocity_b_rad_s_ = math::Vector<3>(0.0); - controlled_torque_b_Nm = math::Vector<3>(0.0); + angular_velocity_b_rad_s_ = s2e::math::Vector<3>(0.0); + controlled_torque_b_Nm = s2e::math::Vector<3>(0.0); } // Add torque with disturbances AddTorque_b_Nm(controlled_torque_b_Nm); diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index ce26738d8..88204270b 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -54,9 +54,9 @@ class ControlledAttitude : public Attitude { * @param [in] orbit: Orbit * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, - const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, + ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const s2e::math::Quaternion quaternion_i2b, + const s2e::math::Vector<3> main_target_direction_b, const s2e::math::Vector<3> sub_target_direction_b, + const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name = "attitude"); /** * @fn ~ControlledAttitude @@ -79,17 +79,17 @@ class ControlledAttitude : public Attitude { * @fn SetQuaternion_i2t * @brief Set quaternion for INERTIAL_STABILIZE mode */ - inline void SetQuaternion_i2t(const math::Quaternion quaternion_i2t) { quaternion_i2b_ = quaternion_i2t; } + inline void SetQuaternion_i2t(const s2e::math::Quaternion quaternion_i2t) { quaternion_i2b_ = quaternion_i2t; } /** * @fn SetMainTargetDirection_b * @brief Set main target direction on the body fixed frame */ - inline void SetMainTargetDirection_b(math::Vector<3> main_target_direction_b) { main_target_direction_b_ = main_target_direction_b; } + inline void SetMainTargetDirection_b(s2e::math::Vector<3> main_target_direction_b) { main_target_direction_b_ = main_target_direction_b; } /** * @fn SetSubTargetDirection_b * @brief Set sub target direction on the body fixed frame */ - inline void SetSubTargetDirection_b(math::Vector<3> sub_target_direction_b) { sub_target_direction_b_ = sub_target_direction_b; } + inline void SetSubTargetDirection_b(s2e::math::Vector<3> sub_target_direction_b) { sub_target_direction_b_ = sub_target_direction_b; } /** * @fn Propagate @@ -101,13 +101,13 @@ class ControlledAttitude : public Attitude { private: AttitudeControlMode main_mode_; //!< Main control mode AttitudeControlMode sub_mode_; //!< Sub control mode - math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame - math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame + s2e::math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame + s2e::math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame double previous_calc_time_s_ = -1.0; //!< Previous time of velocity calculation [sec] - math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion - math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] + s2e::math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion + s2e::math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] - const double kMinDirectionAngle_rad = 30.0 * math::deg_to_rad; //!< Minimum angle b/w main and sub direction + const double kMinDirectionAngle_rad = 30.0 * s2e::math::deg_to_rad; //!< Minimum angle b/w main and sub direction // TODO Change with ini file // Inputs @@ -126,14 +126,14 @@ class ControlledAttitude : public Attitude { * @param [in] mode: Attitude control mode * @return Target direction at the inertia frame */ - math::Vector<3> CalcTargetDirection_i(AttitudeControlMode mode); + s2e::math::Vector<3> CalcTargetDirection_i(AttitudeControlMode mode); /** * @fn PointingControl * @brief Calculate attitude quaternion * @param [in] main_direction_i: Main target direction in the inertial frame * @param [in] sub_direction_i: Sub target direction in the inertial frame */ - void PointingControl(const math::Vector<3> main_direction_i, const math::Vector<3> sub_direction_i); + void PointingControl(const s2e::math::Vector<3> main_direction_i, const s2e::math::Vector<3> sub_direction_i); /** * @fn CalcAngularVelocity * @brief Calculate angular velocity @@ -146,7 +146,7 @@ class ControlledAttitude : public Attitude { * @param [in] main_direction: Main target direction * @param [in] sub_direction: Sub target direction */ - math::Matrix<3, 3> CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction); + s2e::math::Matrix<3, 3> CalcDcm(const s2e::math::Vector<3> main_direction, const s2e::math::Vector<3> sub_direction); }; #endif // S2E_DYNAMICS_ATTITUDE_CONTROLLED_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index d4ed6e202..640cf98c6 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -7,7 +7,7 @@ #include Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { + const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); @@ -16,9 +16,9 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel const std::string propagate_mode = ini_file.ReadString(section_, "propagate_mode"); const std::string initialize_mode = ini_file.ReadString(section_, "initialize_mode"); - math::Vector<3> omega_b; - math::Quaternion quaternion_i2b; - math::Vector<3> torque_b; + s2e::math::Vector<3> omega_b; + s2e::math::Quaternion quaternion_i2b; + s2e::math::Vector<3> torque_b; if (initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) IniAccess ini_file_ca(file_name); @@ -30,7 +30,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - math::Vector<3> main_target_direction_b, sub_target_direction_b; + s2e::math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); ini_file_ca.ReadVector(section_ca_, "sub_pointing_direction_b", sub_target_direction_b); std::string mc_name_temp = section_ + std::to_string(spacecraft_id) + "_TEMP"; @@ -38,8 +38,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel inertia_tensor_kgm2, local_celestial_information, orbit, mc_name_temp); attitude_temp->Propagate(step_width_s); quaternion_i2b = attitude_temp->GetQuaternion_i2b(); - omega_b = math::Vector<3>(0.0); - torque_b = math::Vector<3>(0.0); + omega_b = s2e::math::Vector<3>(0.0); + torque_b = s2e::math::Vector<3>(0.0); } else { // Including the case: initialize_mode == "MANUAL" ini_file.ReadVector(section_, "initial_angular_velocity_b_rad_s", omega_b); @@ -54,8 +54,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel IniAccess ini_structure(ini_structure_name); const char* section_cantilever = "CANTILEVER_PARAMETERS"; - math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; - math::Vector<9> inertia_vec; + s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; + s2e::math::Vector<9> inertia_vec; ini_structure.ReadVector(section_cantilever, "inertia_tensor_cantilever_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { @@ -78,7 +78,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode main_mode = ConvertStringToCtrlMode(main_mode_in); AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - math::Vector<3> main_target_direction_b, sub_target_direction_b; + s2e::math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); ini_file_ca.ReadVector(section_ca_, "sub_pointing_direction_b", sub_target_direction_b); diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index f9b1bebd4..0e3899c02 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -22,6 +22,6 @@ * @param [in] spacecraft_id: Satellite ID */ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); + const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index bd2fd8ae5..770a586db 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -28,10 +28,10 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] euler_angule_cantilever_rad: Euler angle of the cantilever@ body-fixed frame [rad] */ - math::Vector<13> SetStateFromPhysicalQuantities(const math::Vector<3> angular_velocity_b_rad_s, - const math::Vector<3> angular_velocity_cantilever_rad_s, const math::Quaternion quaternion_i2b, - const math::Vector<3> euler_angule_cantilever_rad) const { - math::Vector<13> state; + s2e::math::Vector<13> SetStateFromPhysicalQuantities(const s2e::math::Vector<3> angular_velocity_b_rad_s, + const s2e::math::Vector<3> angular_velocity_cantilever_rad_s, const s2e::math::Quaternion quaternion_i2b, + const s2e::math::Vector<3> euler_angule_cantilever_rad) const { + s2e::math::Vector<13> state; for (size_t i = 0; i < 3; i++) { state[i] = angular_velocity_b_rad_s[i]; } @@ -52,9 +52,9 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @brief Set physical quantities from state acquired by calculation of the ordinary differential equation * @param [in] state: state variables used to calculate the ordinary differential equation */ - void SetPhysicalQuantitiesFromState(const math::Vector<13> state, math::Vector<3>& angular_velocity_b_rad_s, - math::Vector<3>& angular_velocity_cantilever_rad_s, math::Quaternion& quaternion_i2b, - math::Vector<3>& euler_angular_cantilever_rad) const { + void SetPhysicalQuantitiesFromState(const s2e::math::Vector<13> state, s2e::math::Vector<3>& angular_velocity_b_rad_s, + s2e::math::Vector<3>& angular_velocity_cantilever_rad_s, s2e::math::Quaternion& quaternion_i2b, + s2e::math::Vector<3>& euler_angular_cantilever_rad) const { for (size_t i = 0; i < 3; i++) { angular_velocity_b_rad_s[i] = state[i]; } @@ -69,27 +69,27 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } } - math::Vector<13> DerivativeFunction(const double time_s, const math::Vector<13>& state) const override { + s2e::math::Vector<13> DerivativeFunction(const double time_s, const s2e::math::Vector<13>& state) const override { UNUSED(time_s); - math::Vector<13> output; + s2e::math::Vector<13> output; - math::Vector<3> omega_b_rad_s; - math::Vector<3> omega_cantilever_rad_s; - math::Quaternion quaternion_i2b; - math::Vector<3> euler_angle_cantilever_rad; + s2e::math::Vector<3> omega_b_rad_s; + s2e::math::Vector<3> omega_cantilever_rad_s; + s2e::math::Quaternion quaternion_i2b; + s2e::math::Vector<3> euler_angle_cantilever_rad; SetPhysicalQuantitiesFromState(state, omega_b_rad_s, omega_cantilever_rad_s, quaternion_i2b, euler_angle_cantilever_rad); - math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; - math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - math::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; + s2e::math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; + s2e::math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - s2e::math::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; - math::Vector<3> angular_accelaration_cantilever_rad_s2 = + s2e::math::Vector<3> angular_accelaration_cantilever_rad_s2 = -(inverse_equivalent_inertia_tensor_cantilever_ * (attenuation_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) - inverse_inertia_tensor_ * net_torque_b_Nm; - math::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); + s2e::math::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); for (size_t i = 0; i < 3; ++i) { output[i] = rhs[i]; @@ -99,7 +99,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; } - math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (math::Vector<4>(quaternion_i2b)); + s2e::math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (s2e::math::Vector<4>(quaternion_i2b)); for (size_t i = 0; i < 4; i++) { output[i + 6] = d_quaternion[i]; @@ -110,7 +110,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } // The function is used to output the derivative of each corresponding physical quantity. - output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, math::Quaternion(d_quaternion), omega_cantilever_rad_s); + output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, s2e::math::Quaternion(d_quaternion), omega_cantilever_rad_s); return output; } @@ -130,27 +130,27 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn GetTorqueInertiaTensor_b_Nm * @brief Get torque generated by inertia tensor [Nm] */ - inline math::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } + inline s2e::math::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } /** * @fn GetInverseInertiaTensor * @brief Get inverse of inertia tensor */ - inline math::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } + inline s2e::math::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } /** * @fn GetPreviousInertiaTensor_kgm2 * @brief Get previous inertia tensor [kgm2] */ - inline math::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } + inline s2e::math::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } /** * @fn GetInertiaTensorCantilever_kgm2 * @brief Get inertia tensor of the cantilever [kgm2] */ - inline math::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } + inline s2e::math::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } /** * @fn GetInverseEquivalentInertiaTensorCantilever * @brief Get inverse of inertia tensor of the cantilever */ - inline math::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } + inline s2e::math::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } // Setter /** @@ -167,58 +167,58 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + inline void SetTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } /** * @fn SetTorqueInertiaTensor_b_Nm * @brief Set torque generated by inertia tensor [Nm] */ - inline void SetTorqueInertiaTensor_b_Nm(const math::Vector<3> torque_inertia_tensor_b_Nm) { + inline void SetTorqueInertiaTensor_b_Nm(const s2e::math::Vector<3> torque_inertia_tensor_b_Nm) { torque_inertia_tensor_b_Nm_ = torque_inertia_tensor_b_Nm; } /** * @fn SetAngularMomentumReactionWheel_b_Nms * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] */ - inline void SetAngularMomentumReactionWheel_b_Nms(const math::Vector<3> angular_momentum_reaction_wheel_b_Nms) { + inline void SetAngularMomentumReactionWheel_b_Nms(const s2e::math::Vector<3> angular_momentum_reaction_wheel_b_Nms) { angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_reaction_wheel_b_Nms; } /** * @fn SetInverseInertiaTensor * @brief Set inverse of inertia tensor */ - inline void SetInverseInertiaTensor(const math::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } + inline void SetInverseInertiaTensor(const s2e::math::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } /** * @fn SetPreviousInertiaTensor_kgm2 * @brief Set previous inertia tensor [kgm2] */ - inline void SetPreviousInertiaTensor_kgm2(const math::Matrix<3, 3> previous_inertia_tensor_kgm2) { + inline void SetPreviousInertiaTensor_kgm2(const s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2) { previous_inertia_tensor_kgm2_ = previous_inertia_tensor_kgm2; } /** * @fn SetInertiaTensorCantilever_kgm2 * @brief Set inertia tensor of the cantilever [kgm2] */ - inline void SetInertiaTensorCantilever_kgm2(const math::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { + inline void SetInertiaTensorCantilever_kgm2(const s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; } /** * @fn SetInverseEquivalentInertiaTensorCantilever * @brief Set inverse of inertia tensor of the cantilever */ - inline void SetInverseEquivalentInertiaTensorCantilever(const math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { + inline void SetInverseEquivalentInertiaTensorCantilever(const s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { inverse_equivalent_inertia_tensor_cantilever_ = inverse_equivalent_inertia_tensor_cantilever; } protected: double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient double spring_coefficient_ = 0.0; //!< Spring coefficient - math::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] - math::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] - math::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] - math::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor - math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] - math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] - math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever + s2e::math::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] + s2e::math::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] + s2e::math::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + s2e::math::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor + s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] + s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] + s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; } // namespace numerical_integration diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index ef54a9f29..d10a715bd 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -59,7 +59,7 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia } void Dynamics::ClearForceTorque(void) { - math::Vector<3> zero(0.0); + s2e::math::Vector<3> zero(0.0); attitude_->SetTorque_b_Nm(zero); orbit_->SetAcceleration_i_m_s2(zero); } diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 327cc399a..2db4bfbbd 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -63,13 +63,13 @@ class Dynamics { * @brief Add input torque for the attitude dynamics propagation * @param [in] torque_b_Nm: Torque in the body fixed frame [Nm] */ - inline void AddTorque_b_Nm(math::Vector<3> torque_b_Nm) { attitude_->AddTorque_b_Nm(torque_b_Nm); } + inline void AddTorque_b_Nm(s2e::math::Vector<3> torque_b_Nm) { attitude_->AddTorque_b_Nm(torque_b_Nm); } /** * @fn AddForce_b_N * @brief Add input force for the orbit dynamics propagation * @param [in] force_b_N: Force in the body fixed frame [N] */ - inline void AddForce_b_N(math::Vector<3> force_b_N) { + inline void AddForce_b_N(s2e::math::Vector<3> force_b_N) { orbit_->AddForce_b_N(force_b_N, attitude_->GetQuaternion_i2b(), structure_->GetKinematicsParameters().GetMass_kg()); } /** @@ -77,7 +77,7 @@ class Dynamics { * @brief Add input acceleration for the orbit dynamics propagation * @param [in] acceleration_i_m_s2: Acceleration in the inertial fixed frame [N] */ - inline void AddAcceleration_i_m_s2(math::Vector<3> acceleration_i_m_s2) { orbit_->AddAcceleration_i_m_s2(acceleration_i_m_s2); } + inline void AddAcceleration_i_m_s2(s2e::math::Vector<3> acceleration_i_m_s2) { orbit_->AddAcceleration_i_m_s2(acceleration_i_m_s2); } /** * @fn ClearForceTorque diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index 9b67322f2..ccdbc265d 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -10,10 +10,10 @@ #include "../../math_physics/orbit/orbital_elements.hpp" EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, - const double propagation_step_s, const double current_time_jd, const math::Vector<3> position_i_m, - const math::Vector<3> velocity_i_m_s, const double error_tolerance) + const double propagation_step_s, const double current_time_jd, const s2e::math::Vector<3> position_i_m, + const s2e::math::Vector<3> velocity_i_m_s, const double error_tolerance) : Orbit(celestial_information), - math::OrdinaryDifferentialEquation<6>(propagation_step_s), + s2e::math::OrdinaryDifferentialEquation<6>(propagation_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), error_tolerance_(error_tolerance), propagation_step_s_(propagation_step_s) { @@ -60,9 +60,9 @@ void EnckeOrbitPropagation::Propagate(const double end_time_s, const double curr } // Functions for OrdinaryDifferentialEquation -void EnckeOrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs) { +void EnckeOrbitPropagation::DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs) { UNUSED(t); - math::Vector<3> difference_position_i_m_m, difference_acc_i_m_s2; + s2e::math::Vector<3> difference_position_i_m_m, difference_acc_i_m_s2; for (int i = 0; i < 3; i++) { difference_position_i_m_m[i] = state[i]; } @@ -83,7 +83,7 @@ void EnckeOrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& } // Private Functions -void EnckeOrbitPropagation::Initialize(double current_time_jd, math::Vector<3> reference_position_i_m, math::Vector<3> reference_velocity_i_m_s) { +void EnckeOrbitPropagation::Initialize(double current_time_jd, s2e::math::Vector<3> reference_position_i_m, s2e::math::Vector<3> reference_velocity_i_m_s) { // General spacecraft_acceleration_i_m_s2_.FillUp(0.0); @@ -97,7 +97,7 @@ void EnckeOrbitPropagation::Initialize(double current_time_jd, math::Vector<3> r difference_position_i_m_.FillUp(0.0); difference_velocity_i_m_s_.FillUp(0.0); - math::Vector<6> zero(0.0f); + s2e::math::Vector<6> zero(0.0f); Setup(0.0, zero); UpdateSatOrbit(); @@ -111,11 +111,11 @@ void EnckeOrbitPropagation::UpdateSatOrbit() { TransformEcefToGeodetic(); } -double EnckeOrbitPropagation::CalcQFunction(math::Vector<3> difference_position_i_m) { +double EnckeOrbitPropagation::CalcQFunction(s2e::math::Vector<3> difference_position_i_m) { double r2; r2 = InnerProduct(spacecraft_position_i_m_, spacecraft_position_i_m_); - math::Vector<3> dr_2r; + s2e::math::Vector<3> dr_2r; dr_2r = difference_position_i_m - 2.0 * spacecraft_position_i_m_; double q = InnerProduct(difference_position_i_m, dr_2r) / r2; diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index a32052e2b..e5ad30c75 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -14,7 +14,7 @@ * @class EnckeOrbitPropagation * @brief Class to propagate spacecraft orbit with Encke's method */ -class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquation<6> { +class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferentialEquation<6> { public: /** * @fn EnckeOrbitPropagation @@ -28,7 +28,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu * @param [in] error_tolerance: Error tolerance threshold */ EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, - const double current_time_jd, const math::Vector<3> position_i_m, const math::Vector<3> velocity_i_m_s, + const double current_time_jd, const s2e::math::Vector<3> position_i_m, const s2e::math::Vector<3> velocity_i_m_s, const double error_tolerance); /** * @fn ~EnckeOrbitPropagation @@ -53,7 +53,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); + virtual void DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs); private: // General @@ -63,13 +63,13 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 // reference orbit - math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] - math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] + s2e::math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] + s2e::math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit - math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] - math::Vector<3> difference_velocity_i_m_s_; //!< Difference orbit velocity in the inertial frame [m/s] + s2e::math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] + s2e::math::Vector<3> difference_velocity_i_m_s_; //!< Difference orbit velocity in the inertial frame [m/s] // functions /** @@ -79,7 +79,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu * @param [in] reference_position_i_m: Initial value of reference orbit position in the inertial frame [m] * @param [in] reference_velocity_i_m_s: Initial value of reference orbit position in the inertial frame [m] */ - void Initialize(const double current_time_jd, const math::Vector<3> reference_position_i_m, const math::Vector<3> reference_velocity_i_m_s); + void Initialize(const double current_time_jd, const s2e::math::Vector<3> reference_position_i_m, const s2e::math::Vector<3> reference_velocity_i_m_s); /** * @fn UpdateSatOrbit * @brief Update satellite orbit @@ -90,7 +90,7 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu * @brief Calculate Q function * @param [in] difference_position_i_m: Difference of position in the inertial frame [m] */ - double CalcQFunction(const math::Vector<3> difference_position_i_m); + double CalcQFunction(const s2e::math::Vector<3> difference_position_i_m); }; #endif // S2E_DYNAMICS_ORBIT_ENCKE_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 8ce7ab313..80252658b 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -26,9 +26,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string if (propagate_mode == "RK4") { // initialize RK4 orbit propagator - math::Vector<3> position_i_m; - math::Vector<3> velocity_i_m_s; - math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + s2e::math::Vector<3> position_i_m; + s2e::math::Vector<3> velocity_i_m_s; + s2e::math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -49,9 +49,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string orbit::RelativeOrbitModel relative_dynamics_model_type = (orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); orbit::StmModel stm_model_type = (orbit::StmModel)(conf.ReadInt(section_, "stm_model_type")); - math::Vector<3> init_relative_position_lvlh; + s2e::math::Vector<3> init_relative_position_lvlh; conf.ReadVector<3>(section_, "initial_relative_position_lvlh_m", init_relative_position_lvlh); - math::Vector<3> init_relative_velocity_lvlh; + s2e::math::Vector<3> init_relative_velocity_lvlh; conf.ReadVector<3>(section_, "initial_relative_velocity_lvlh_m_s", init_relative_velocity_lvlh); // There is a possibility that the orbit of the reference sat is not initialized when RelativeOrbit initialization is called To ensure that @@ -66,9 +66,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string // TODO: init_mode_kepler should be removed in the next major update if (initialize_mode == OrbitInitializeMode::kInertialPositionAndVelocity) { // initialize with position and velocity - math::Vector<3> init_pos_m; + s2e::math::Vector<3> init_pos_m; conf.ReadVector<3>(section_, "initial_position_i_m", init_pos_m); - math::Vector<3> init_vel_m_s; + s2e::math::Vector<3> init_vel_m_s; conf.ReadVector<3>(section_, "initial_velocity_i_m_s", init_vel_m_s); oe = orbit::OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); } else { @@ -85,9 +85,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string orbit = new KeplerOrbitPropagation(celestial_information, current_time_jd, kepler_orbit); } else if (propagate_mode == "ENCKE") { // initialize orbit for Encke's method - math::Vector<3> position_i_m; - math::Vector<3> velocity_i_m_s; - math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + s2e::math::Vector<3> position_i_m; + s2e::math::Vector<3> velocity_i_m_s; + s2e::math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -100,9 +100,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string std::cerr << "ERROR: orbit propagation mode: " << propagate_mode << " is not defined!" << std::endl; std::cerr << "The orbit mode is automatically set as RK4" << std::endl; - math::Vector<3> position_i_m; - math::Vector<3> velocity_i_m_s; - math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + s2e::math::Vector<3> position_i_m; + s2e::math::Vector<3> velocity_i_m_s; + s2e::math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -115,12 +115,12 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string return orbit; } -math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { +s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { auto conf = IniAccess(initialize_file); const char* section_ = section.c_str(); - math::Vector<3> position_i_m; - math::Vector<3> velocity_i_m_s; - math::Vector<6> pos_vel; + s2e::math::Vector<3> position_i_m; + s2e::math::Vector<3> velocity_i_m_s; + s2e::math::Vector<6> pos_vel; OrbitInitializeMode initialize_mode = SetOrbitInitializeMode(conf.ReadString(section_, "initialize_mode")); if (initialize_mode == OrbitInitializeMode::kOrbitalElements) { diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index 6b3aad69f..1bdbe44cd 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -35,6 +35,6 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string * @param [in] gravity_constant_m3_s2: Gravity constant [m3/s2] * @param [in] section: Section name */ -math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); +s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); #endif // S2E_DYNAMICS_ORBIT_INITIALIZE_ORBIT_HPP_ diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index b38aa9c98..d3058f5fd 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -4,16 +4,16 @@ */ #include "orbit.hpp" -math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { - math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite - math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); - math::Vector<3> lvlh_z = +s2e::math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { + s2e::math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite + s2e::math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); + s2e::math::Vector<3> lvlh_z = OuterProduct(spacecraft_position_i_m_, spacecraft_velocity_i_m_s_); // z-axis in LVLH frame is angular momentum vector direction of orbit - math::Vector<3> lvlh_ez = lvlh_z.CalcNormalizedVector(); - math::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); - math::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); + s2e::math::Vector<3> lvlh_ez = lvlh_z.CalcNormalizedVector(); + s2e::math::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); + s2e::math::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); - math::Matrix<3, 3> dcm_i2lvlh; + s2e::math::Matrix<3, 3> dcm_i2lvlh; dcm_i2lvlh[0][0] = lvlh_ex[0]; dcm_i2lvlh[0][1] = lvlh_ex[1]; dcm_i2lvlh[0][2] = lvlh_ex[2]; @@ -24,19 +24,19 @@ math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { dcm_i2lvlh[2][1] = lvlh_ez[1]; dcm_i2lvlh[2][2] = lvlh_ez[2]; - math::Quaternion q_i2lvlh = math::Quaternion::ConvertFromDcm(dcm_i2lvlh); + s2e::math::Quaternion q_i2lvlh = s2e::math::Quaternion::ConvertFromDcm(dcm_i2lvlh); return q_i2lvlh.Normalize(); } void Orbit::TransformEciToEcef(void) { - math::Matrix<3, 3> dcm_i_to_xcxf = celestial_information_->GetEarthRotation().GetDcmJ2000ToEcef(); + s2e::math::Matrix<3, 3> dcm_i_to_xcxf = celestial_information_->GetEarthRotation().GetDcmJ2000ToEcef(); spacecraft_position_ecef_m_ = dcm_i_to_xcxf * spacecraft_position_i_m_; // convert velocity vector in ECI to the vector in ECEF - math::Vector<3> earth_angular_velocity_i_rad_s{0.0}; + s2e::math::Vector<3> earth_angular_velocity_i_rad_s{0.0}; earth_angular_velocity_i_rad_s[2] = environment::earth_mean_angular_velocity_rad_s; - math::Vector<3> we_cross_r = OuterProduct(earth_angular_velocity_i_rad_s, spacecraft_position_i_m_); - math::Vector<3> velocity_we_cross_r = spacecraft_velocity_i_m_s_ - we_cross_r; + s2e::math::Vector<3> we_cross_r = OuterProduct(earth_angular_velocity_i_rad_s, spacecraft_position_i_m_); + s2e::math::Vector<3> velocity_we_cross_r = spacecraft_velocity_i_m_s_ - we_cross_r; spacecraft_velocity_ecef_m_s_ = dcm_i_to_xcxf * velocity_we_cross_r; } diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index d3df8fb4a..01be5c87c 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -69,7 +69,7 @@ class Orbit : public ILoggable { * @brief Update attitude information * @param [in] quaternion_i2b: End time of simulation [sec] */ - inline void UpdateByAttitude(const math::Quaternion quaternion_i2b) { + inline void UpdateByAttitude(const s2e::math::Quaternion quaternion_i2b) { spacecraft_velocity_b_m_s_ = quaternion_i2b.FrameConversion(spacecraft_velocity_i_m_s_); } @@ -88,27 +88,27 @@ class Orbit : public ILoggable { * @fn GetPosition_i_m * @brief Return spacecraft position in the inertial frame [m] */ - inline math::Vector<3> GetPosition_i_m() const { return spacecraft_position_i_m_; } + inline s2e::math::Vector<3> GetPosition_i_m() const { return spacecraft_position_i_m_; } /** * @fn GetPosition_ecef_m * @brief Return spacecraft position in the ECEF frame [m] */ - inline math::Vector<3> GetPosition_ecef_m() const { return spacecraft_position_ecef_m_; } + inline s2e::math::Vector<3> GetPosition_ecef_m() const { return spacecraft_position_ecef_m_; } /** * @fn GetVelocity_i_m_s * @brief Return spacecraft velocity in the inertial frame [m/s] */ - inline math::Vector<3> GetVelocity_i_m_s() const { return spacecraft_velocity_i_m_s_; } + inline s2e::math::Vector<3> GetVelocity_i_m_s() const { return spacecraft_velocity_i_m_s_; } /** * @fn GetVelocity_b_m_s * @brief Return spacecraft velocity in the body fixed frame [m/s] */ - inline math::Vector<3> GetVelocity_b_m_s() const { return spacecraft_velocity_b_m_s_; } + inline s2e::math::Vector<3> GetVelocity_b_m_s() const { return spacecraft_velocity_b_m_s_; } /** * @fn GetVelocity_ecef_m_s * @brief Return spacecraft velocity in the ECEF frame [m/s] */ - inline math::Vector<3> GetVelocity_ecef_m_s() const { return spacecraft_velocity_ecef_m_s_; } + inline s2e::math::Vector<3> GetVelocity_ecef_m_s() const { return spacecraft_velocity_ecef_m_s_; } /** * @fn GetGeodeticPosition * @brief Return spacecraft position in the geodetic frame [m] @@ -119,8 +119,8 @@ class Orbit : public ILoggable { inline double GetLatitude_rad() const { return spacecraft_geodetic_position_.GetLatitude_rad(); } inline double GetLongitude_rad() const { return spacecraft_geodetic_position_.GetLongitude_rad(); } inline double GetAltitude_m() const { return spacecraft_geodetic_position_.GetAltitude_m(); } - inline math::Vector<3> GetLatLonAlt() const { - math::Vector<3> vec; + inline s2e::math::Vector<3> GetLatLonAlt() const { + s2e::math::Vector<3> vec; vec(0) = spacecraft_geodetic_position_.GetLatitude_rad(); vec(1) = spacecraft_geodetic_position_.GetLongitude_rad(); vec(2) = spacecraft_geodetic_position_.GetAltitude_m(); @@ -137,15 +137,15 @@ class Orbit : public ILoggable { * @fn SetAcceleration_i_m_s2 * @brief Set acceleration in the inertial frame [m/s2] */ - inline void SetAcceleration_i_m_s2(const math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ = acceleration_i_m_s2; } + inline void SetAcceleration_i_m_s2(const s2e::math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ = acceleration_i_m_s2; } /** * @fn AddForce_i_N * @brief Add force * @param [in] force_i: Force in the inertial frame [N] * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_i_N(const math::Vector<3> force_i_N, double spacecraft_mass_kg) { - math::Vector<3> acceleration_i_m_s2 = force_i_N; + inline void AddForce_i_N(const s2e::math::Vector<3> force_i_N, double spacecraft_mass_kg) { + s2e::math::Vector<3> acceleration_i_m_s2 = force_i_N; acceleration_i_m_s2 /= spacecraft_mass_kg; // FIXME spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } @@ -153,7 +153,7 @@ class Orbit : public ILoggable { * @fn AddAcceleration_i_m_s2 * @brief Add acceleration in the inertial frame [m/s2] */ - inline void AddAcceleration_i_m_s2(const math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } + inline void AddAcceleration_i_m_s2(const s2e::math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } /** * @fn AddForce_i_N * @brief Add force @@ -161,7 +161,7 @@ class Orbit : public ILoggable { * @param [in] quaternion_i2b: Quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_b_N(const math::Vector<3> force_b_N, const math::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { + inline void AddForce_b_N(const s2e::math::Vector<3> force_b_N, const s2e::math::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { auto force_i = quaternion_i2b.InverseFrameConversion(force_b_N); AddForce_i_N(force_i, spacecraft_mass_kg); } @@ -170,7 +170,7 @@ class Orbit : public ILoggable { * @fn CalcQuaternion_i2lvlh * @brief Calculate and return quaternion from the inertial frame to the LVLH frame */ - math::Quaternion CalcQuaternion_i2lvlh() const; + s2e::math::Quaternion CalcQuaternion_i2lvlh() const; // Override ILoggable /** @@ -191,15 +191,15 @@ class Orbit : public ILoggable { bool is_calc_enabled_ = false; //!< Calculate flag OrbitPropagateMode propagate_mode_; //!< Propagation mode - math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] - math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] + s2e::math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] + s2e::math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] geodesy::GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame - math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] - math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] - math::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] + s2e::math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] + s2e::math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] + s2e::math::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] - math::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] + s2e::math::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] //!< NOTE: Clear to zero at the end of the Propagate function // Frame Conversion TODO: consider other planet diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index f60f52682..831e8d763 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -9,11 +9,11 @@ #include "rk4_orbit_propagation.hpp" RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, + int reference_spacecraft_id, s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, orbit::RelativeOrbitModel relative_dynamics_model_type, orbit::StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), - math::OrdinaryDifferentialEquation<6>(time_step_s), + s2e::math::OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), reference_spacecraft_id_(reference_spacecraft_id), update_method_(update_method), @@ -30,7 +30,7 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, RelativeOrbit::~RelativeOrbit() {} -void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, +void RelativeOrbit::InitializeState(s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, double initial_time_s) { relative_position_lvlh_m_ = relative_position_lvlh_m; relative_velocity_lvlh_m_s_ = relative_velocity_lvlh_m_s; @@ -38,10 +38,10 @@ void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, ma // Disturbance acceleration are not considered in relative orbit propagation spacecraft_acceleration_i_m_s2_ *= 0.0; - math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); - math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); - math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); + s2e::math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); + s2e::math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); + s2e::math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; spacecraft_velocity_i_m_s_ = q_lvlh2i.FrameConversion(relative_velocity_lvlh_m_s_) + reference_sat_velocity_i; @@ -108,10 +108,10 @@ void RelativeOrbit::Propagate(const double end_time_s, const double current_time PropagateStm(end_time_s); } - math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); - math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); - math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); + s2e::math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); + s2e::math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); + s2e::math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; spacecraft_velocity_i_m_s_ = q_lvlh2i.FrameConversion(relative_velocity_lvlh_m_s_) + reference_sat_velocity_i; @@ -138,7 +138,7 @@ void RelativeOrbit::PropagateRk4(double elapsed_sec) { } void RelativeOrbit::PropagateStm(double elapsed_sec) { - math::Vector<6> current_state; + s2e::math::Vector<6> current_state; CalculateStm(stm_model_type_, &(relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit()), gravity_constant_m3_s2_, elapsed_sec); current_state = stm_ * initial_state_; @@ -151,8 +151,8 @@ void RelativeOrbit::PropagateStm(double elapsed_sec) { relative_velocity_lvlh_m_s_[2] = current_state[5]; } -void RelativeOrbit::DerivativeFunction(double t, const math::Vector<6>& state, - math::Vector<6>& rhs) // only for RK4 relative dynamics propagation +void RelativeOrbit::DerivativeFunction(double t, const s2e::math::Vector<6>& state, + s2e::math::Vector<6>& rhs) // only for RK4 relative dynamics propagation { rhs = system_matrix_ * state; (void)t; diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 3aae6e104..c281cd3c9 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -17,7 +17,7 @@ * @class RelativeOrbit * @brief Class to propagate relative orbit */ -class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> { +class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquation<6> { public: /** * @enum RelativeOrbitUpdateMethod @@ -40,7 +40,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] relative_information: Relative information */ RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, - math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, + s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, orbit::RelativeOrbitModel relative_dynamics_model_type, orbit::StmModel stm_model_type, RelativeInformation* relative_information); /** * @fn ~RelativeOrbit @@ -73,12 +73,12 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 [sec] double propagation_step_s_; //!< Step width for RK4 [sec] - math::Matrix<6, 6> system_matrix_; //!< System matrix - math::Matrix<6, 6> stm_; //!< State transition matrix + s2e::math::Matrix<6, 6> system_matrix_; //!< System matrix + s2e::math::Matrix<6, 6> stm_; //!< State transition matrix - math::Vector<6> initial_state_; //!< Initial state (Position and Velocity) - math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame - math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame + s2e::math::Vector<6> initial_state_; //!< Initial state (Position and Velocity) + s2e::math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame + s2e::math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame RelativeOrbitUpdateMethod update_method_; //!< Update method orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type @@ -93,7 +93,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @param [in] initial_time_s: Initialize time [sec] */ - void InitializeState(math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, + void InitializeState(s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, double initial_time_s = 0); /** * @fn CalculateSystemMatrix diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index 38a6e39b2..dd2c5abfa 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -9,7 +9,7 @@ #include Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) + s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s) : Orbit(celestial_information), OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2) { propagate_mode_ = OrbitPropagateMode::kRk4; @@ -22,7 +22,7 @@ Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_i Rk4OrbitPropagation::~Rk4OrbitPropagation() {} -void Rk4OrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs) { +void Rk4OrbitPropagation::DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs) { double x = state[0], y = state[1], z = state[2]; double vx = state[3], vy = state[4], vz = state[5]; @@ -38,9 +38,9 @@ void Rk4OrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& st (void)t; } -void Rk4OrbitPropagation::Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) { +void Rk4OrbitPropagation::Initialize(s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s) { // state vector [x,y,z,vx,vy,vz] - math::Vector<6> init_state; + s2e::math::Vector<6> init_state; init_state[0] = position_i_m[0]; init_state[1] = position_i_m[1]; init_state[2] = position_i_m[2]; diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index fde677ddd..83fc56bbe 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -15,7 +15,7 @@ * @class Rk4OrbitPropagation * @brief Class to propagate spacecraft orbit with Runge-Kutta-4 method */ -class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquation<6> { +class Rk4OrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferentialEquation<6> { public: /** * @fn Rk4OrbitPropagation @@ -28,7 +28,7 @@ class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquat * @param [in] initial_time_s: Initial time [sec] */ Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); + s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s = 0); /** * @fn ~Rk4OrbitPropagation * @brief Destructor @@ -43,7 +43,7 @@ class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquat * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); + virtual void DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs); // Override Orbit /** @@ -66,7 +66,7 @@ class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquat * @param [in] velocity_i_m_s: Initial value of velocity in the inertial frame [m/s] * @param [in] initial_time_s: Initial time [sec] */ - void Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); + void Initialize(s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s = 0); }; #endif // S2E_DYNAMICS_ORBIT_RK4_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/thermal/heatload.cpp b/src/dynamics/thermal/heatload.cpp index 3d01aad08..15d32b25a 100644 --- a/src/dynamics/thermal/heatload.cpp +++ b/src/dynamics/thermal/heatload.cpp @@ -5,7 +5,7 @@ #include using namespace std; -using namespace math; +using namespace s2e::math; Heatload::Heatload(int node_id, std::vector time_table_s, std::vector internal_heatload_table_W) : node_id_(node_id), time_table_s_(time_table_s), internal_heatload_table_W_(internal_heatload_table_W) { diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index b34958a68..31f9774bd 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -10,10 +10,10 @@ #include using namespace std; -using namespace math; +using namespace s2e::math; Node::Node(const size_t node_id, const string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, - const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b) + const double capacity_J_K, const double alpha, const double area_m2, s2e::math::Vector<3> normal_vector_b) : node_id_(node_id), node_name_(node_name), heater_id_(heater_id), @@ -29,7 +29,7 @@ Node::Node(const size_t node_id, const string node_name, const NodeType node_typ Node::~Node() {} -double Node::CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_flux_W_m2) { +double Node::CalcSolarRadiation_W(s2e::math::Vector<3> sun_direction_b, double solar_flux_W_m2) { double cos_theta = InnerProduct(sun_direction_b, normal_vector_b_); // calculate sun_power @@ -147,7 +147,7 @@ Node InitNode(const std::vector& node_str) { capacity_J_K = stod(node_str[index_capacity]); alpha = stod(node_str[index_alpha]); area_m2 = stod(node_str[index_area]); - math::Vector<3> normal_v_b; + s2e::math::Vector<3> normal_v_b; for (size_t i = 0; i < 3; i++) { normal_v_b[i] = stod(node_str[index_normal_v_b_head + i]); } diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index de4653d3e..d579c80f6 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -45,7 +45,7 @@ class Node { * @param[in] normal_vector_b: Normal vector of face with possibility of solar incidence (Body frame) */ Node(const size_t node_id, const std::string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, - const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b); + const double capacity_J_K, const double alpha, const double area_m2, s2e::math::Vector<3> normal_vector_b); /** * @fn ~Node * @brief Destroy the Node object @@ -58,7 +58,7 @@ class Node { * @param sun_direction_b: Sun direction in body frame * @return double: Solar Radiation [W] */ - double CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_flux_W_m2); + double CalcSolarRadiation_W(s2e::math::Vector<3> sun_direction_b, double solar_flux_W_m2); // Getter /** @@ -136,7 +136,7 @@ class Node { double area_m2_; double solar_radiation_W_; NodeType node_type_; - math::Vector<3> normal_vector_b_; + s2e::math::Vector<3> normal_vector_b_; /** * @fn AssertNodeParams diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index b86e873fe..3c18bfa20 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -47,10 +47,10 @@ Temperature::Temperature() { Temperature::~Temperature() {} -void Temperature::Propagate(math::Vector<3> sun_position_b_m, const double time_end_s) { +void Temperature::Propagate(s2e::math::Vector<3> sun_position_b_m, const double time_end_s) { if (!is_calc_enabled_) return; double sun_distance_m = sun_position_b_m.CalcNorm(); - math::Vector<3> sun_direction_b; + s2e::math::Vector<3> sun_direction_b; for (size_t i = 0; i < 3; i++) { sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; } @@ -84,7 +84,7 @@ void Temperature::Propagate(math::Vector<3> sun_position_b_m, const double time_ } } -void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, math::Vector<3> sun_direction_b, size_t node_num) { +void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, s2e::math::Vector<3> sun_direction_b, size_t node_num) { vector temperatures_now_K(node_num); for (size_t i = 0; i < node_num; i++) { temperatures_now_K[i] = nodes_[i].GetTemperature_K(); @@ -120,7 +120,7 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, math:: } } -vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, math::Vector<3> sun_direction_b, size_t node_num) { +vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, s2e::math::Vector<3> sun_direction_b, size_t node_num) { // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 08eceb28f..ec5177d66 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -54,7 +54,7 @@ class Temperature : public ILoggable { * @param[in] sun_direction_b: Sun position in body frame [m] * @param[in] node_num: Number of nodes */ - void CalcRungeOneStep(double time_now_s, double time_step_s, math::Vector<3> sun_direction_b, size_t node_num); + void CalcRungeOneStep(double time_now_s, double time_step_s, s2e::math::Vector<3> sun_direction_b, size_t node_num); /** * @fn CalcTemperatureDifferentials * @brief Calculate differential of thermal equilibrium equation @@ -65,7 +65,7 @@ class Temperature : public ILoggable { * @param node_num: Number of nodes * @return std::vector: Differential of thermal equilibrium equation at time now */ - std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const math::Vector<3> sun_direction_b, + std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const s2e::math::Vector<3> sun_direction_b, size_t node_num); public: @@ -108,7 +108,7 @@ class Temperature : public ILoggable { * @param[in] sun_position_b_m: Sun position in body frame [m] * @param time_end_s: Time to finish propagation [s] */ - void Propagate(math::Vector<3> sun_position_b_m, const double time_end_s); + void Propagate(s2e::math::Vector<3> sun_position_b_m, const double time_end_s); // Getter /** diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 50103ffca..6ffe57fbf 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -73,8 +73,8 @@ class CelestialInformation : public ILoggable { * @brief Return position from the center body in the inertial frame [m] * @param [in] id: ID of CelestialInformation list */ - inline math::Vector<3> GetPositionFromCenter_i_m(const unsigned int id) const { - math::Vector<3> pos(0.0); + inline s2e::math::Vector<3> GetPositionFromCenter_i_m(const unsigned int id) const { + s2e::math::Vector<3> pos(0.0); if (id > number_of_selected_bodies_) return pos; for (int i = 0; i < 3; i++) pos[i] = celestial_body_position_from_center_i_m_[id * 3 + i]; return pos; @@ -84,7 +84,7 @@ class CelestialInformation : public ILoggable { * @brief Return position from the center body in the inertial frame [m] * @param [in] body_name: Name of the body defined in the SPICE */ - inline math::Vector<3> GetPositionFromCenter_i_m(const char* body_name) const { + inline s2e::math::Vector<3> GetPositionFromCenter_i_m(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetPositionFromCenter_i_m(id); } @@ -94,11 +94,11 @@ class CelestialInformation : public ILoggable { * @param [in] target_body_name: Name of the target body defined in the SPICE * @param [in] reference_body_name: Name of the reference body defined in the SPICE */ - inline math::Vector<3> GetPositionFromSelectedBody_i_m(const char* target_body_name, const char* reference_body_name) const { + inline s2e::math::Vector<3> GetPositionFromSelectedBody_i_m(const char* target_body_name, const char* reference_body_name) const { int target_id = CalcBodyIdFromName(target_body_name); - math::Vector<3> target_body_position_i_m = GetPositionFromCenter_i_m(target_id); + s2e::math::Vector<3> target_body_position_i_m = GetPositionFromCenter_i_m(target_id); int reference_id = CalcBodyIdFromName(reference_body_name); - math::Vector<3> reference_body_position_i_m = GetPositionFromCenter_i_m(reference_id); + s2e::math::Vector<3> reference_body_position_i_m = GetPositionFromCenter_i_m(reference_id); return target_body_position_i_m - reference_body_position_i_m; } @@ -108,8 +108,8 @@ class CelestialInformation : public ILoggable { * @brief Return velocity from the center body in the inertial frame [m/s] * @param [in] id: ID of CelestialInformation list */ - inline math::Vector<3> GetVelocityFromCenter_i_m_s(const unsigned int id) const { - math::Vector<3> vel(0.0); + inline s2e::math::Vector<3> GetVelocityFromCenter_i_m_s(const unsigned int id) const { + s2e::math::Vector<3> vel(0.0); if (id > number_of_selected_bodies_) return vel; for (int i = 0; i < 3; i++) vel[i] = celestial_body_velocity_from_center_i_m_s_[id * 3 + i]; return vel; @@ -119,7 +119,7 @@ class CelestialInformation : public ILoggable { * @brief Return velocity from the center body in the inertial frame [m/s] * @param [in] body_name: Name of the body defined in the SPICE */ - inline math::Vector<3> GetVelocityFromCenter_i_m_s(const char* body_name) const { + inline s2e::math::Vector<3> GetVelocityFromCenter_i_m_s(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetVelocityFromCenter_i_m_s(id); } @@ -129,11 +129,11 @@ class CelestialInformation : public ILoggable { * @param [in] target_body_name: Name of the target body defined in the SPICE * @param [in] reference_body_name: Name of the reference body defined in the SPICE */ - inline math::Vector<3> GetVelocityFromSelectedBody_i_m_s(const char* target_body_name, const char* reference_body_name) const { + inline s2e::math::Vector<3> GetVelocityFromSelectedBody_i_m_s(const char* target_body_name, const char* reference_body_name) const { int target_id = CalcBodyIdFromName(target_body_name); - math::Vector<3> target_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(target_id); + s2e::math::Vector<3> target_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(target_id); int reference_id = CalcBodyIdFromName(reference_body_name); - math::Vector<3> reference_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(reference_id); + s2e::math::Vector<3> reference_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(reference_id); return target_body_velocity_i_m_s - reference_body_velocity_i_m_s; } @@ -160,8 +160,8 @@ class CelestialInformation : public ILoggable { * @brief Return 3 axis planetographic radii of a celestial body [m] * @param [in] id: ID of CelestialInformation list */ - inline math::Vector<3> GetRadii_m(const unsigned int id) const { - math::Vector<3> radii(0.0); + inline s2e::math::Vector<3> GetRadii_m(const unsigned int id) const { + s2e::math::Vector<3> radii(0.0); if (id > number_of_selected_bodies_) return radii; for (int i = 0; i < 3; i++) radii[i] = celestial_body_planetographic_radii_m_[id * 3 + i]; return radii; @@ -171,7 +171,7 @@ class CelestialInformation : public ILoggable { * @brief Return 3 axis planetographic radii of a celestial body [m] * @param [in] body_name: Name of the body defined in the SPICE */ - inline math::Vector<3> GetRadiiFromName_m(const char* body_name) const { + inline s2e::math::Vector<3> GetRadiiFromName_m(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetRadii_m(id); } diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index dd552f04d..8950fd904 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -17,7 +17,7 @@ // Default constructor EarthRotation::EarthRotation(const EarthRotationMode rotation_mode) : rotation_mode_(rotation_mode) { - dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); + dcm_j2000_to_ecef_ = s2e::math::MakeIdentityMatrix<3>(); dcm_teme_to_ecef_ = dcm_j2000_to_ecef_; InitializeParameters(); } @@ -32,80 +32,80 @@ void EarthRotation::InitializeParameters() { // Coefficients to compute mean obliquity of the ecliptic // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_epsilon_rad_[0] = 23.4392911 * math::deg_to_rad; // [rad] - c_epsilon_rad_[1] = -46.8150000 * math::arcsec_to_rad; // [rad/century] - c_epsilon_rad_[2] = -5.9000e-4 * math::arcsec_to_rad; // [rad/century^2] - c_epsilon_rad_[3] = 1.8130e-3 * math::arcsec_to_rad; // [rad/century^3] + c_epsilon_rad_[0] = 23.4392911 * s2e::math::deg_to_rad; // [rad] + c_epsilon_rad_[1] = -46.8150000 * s2e::math::arcsec_to_rad; // [rad/century] + c_epsilon_rad_[2] = -5.9000e-4 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_epsilon_rad_[3] = 1.8130e-3 * s2e::math::arcsec_to_rad; // [rad/century^3] // Coefficients to compute Delaunay angles // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_lm_rad_[0] = 134.96340251 * math::deg_to_rad; // [rad] - c_lm_rad_[1] = 1717915923.21780000 * math::arcsec_to_rad; // [rad/century] - c_lm_rad_[2] = 31.87920000 * math::arcsec_to_rad; // [rad/century^2] - c_lm_rad_[3] = 0.05163500 * math::arcsec_to_rad; // [rad/century^3] - c_lm_rad_[4] = -0.00024470 * math::arcsec_to_rad; // [rad/century^4] - - c_ls_rad_[0] = 357.52910918 * math::deg_to_rad; // [rad] - c_ls_rad_[1] = 129596581.04810000 * math::arcsec_to_rad; // [rad/century] - c_ls_rad_[2] = -0.55320000 * math::arcsec_to_rad; // [rad/century^2] - c_ls_rad_[3] = 0.00013600 * math::arcsec_to_rad; // [rad/century^3] - c_ls_rad_[4] = -0.00001149 * math::arcsec_to_rad; // [rad/century^4] - - c_f_rad_[0] = 93.27209062 * math::deg_to_rad; // [rad] - c_f_rad_[1] = 1739527262.84780000 * math::arcsec_to_rad; // [rad/century] - c_f_rad_[2] = -12.75120000 * math::arcsec_to_rad; // [rad/century^2] - c_f_rad_[3] = -0.00103700 * math::arcsec_to_rad; // [rad/century^3] - c_f_rad_[4] = 0.00000417 * math::arcsec_to_rad; // [rad/century^4] - - c_d_rad_[0] = 297.85019547 * math::deg_to_rad; // [rad] - c_d_rad_[1] = 1602961601.20900000 * math::arcsec_to_rad; // [rad/century] - c_d_rad_[2] = -6.37060000 * math::arcsec_to_rad; // [rad/century^2] - c_d_rad_[3] = 0.00659300 * math::arcsec_to_rad; // [rad/century^3] - c_d_rad_[4] = -0.00003169 * math::arcsec_to_rad; // [rad/century^4] - - c_o_rad_[0] = 125.04455501 * math::deg_to_rad; // [rad] - c_o_rad_[1] = -6962890.54310000 * math::arcsec_to_rad; // [rad/century] - c_o_rad_[2] = 7.47220000 * math::arcsec_to_rad; // [rad/century^2] - c_o_rad_[3] = 0.00770200 * math::arcsec_to_rad; // [rad/century^3] - c_o_rad_[4] = -0.00005939 * math::arcsec_to_rad; // [rad/century^4] + c_lm_rad_[0] = 134.96340251 * s2e::math::deg_to_rad; // [rad] + c_lm_rad_[1] = 1717915923.21780000 * s2e::math::arcsec_to_rad; // [rad/century] + c_lm_rad_[2] = 31.87920000 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_lm_rad_[3] = 0.05163500 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_lm_rad_[4] = -0.00024470 * s2e::math::arcsec_to_rad; // [rad/century^4] + + c_ls_rad_[0] = 357.52910918 * s2e::math::deg_to_rad; // [rad] + c_ls_rad_[1] = 129596581.04810000 * s2e::math::arcsec_to_rad; // [rad/century] + c_ls_rad_[2] = -0.55320000 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_ls_rad_[3] = 0.00013600 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_ls_rad_[4] = -0.00001149 * s2e::math::arcsec_to_rad; // [rad/century^4] + + c_f_rad_[0] = 93.27209062 * s2e::math::deg_to_rad; // [rad] + c_f_rad_[1] = 1739527262.84780000 * s2e::math::arcsec_to_rad; // [rad/century] + c_f_rad_[2] = -12.75120000 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_f_rad_[3] = -0.00103700 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_f_rad_[4] = 0.00000417 * s2e::math::arcsec_to_rad; // [rad/century^4] + + c_d_rad_[0] = 297.85019547 * s2e::math::deg_to_rad; // [rad] + c_d_rad_[1] = 1602961601.20900000 * s2e::math::arcsec_to_rad; // [rad/century] + c_d_rad_[2] = -6.37060000 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_d_rad_[3] = 0.00659300 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_d_rad_[4] = -0.00003169 * s2e::math::arcsec_to_rad; // [rad/century^4] + + c_o_rad_[0] = 125.04455501 * s2e::math::deg_to_rad; // [rad] + c_o_rad_[1] = -6962890.54310000 * s2e::math::arcsec_to_rad; // [rad/century] + c_o_rad_[2] = 7.47220000 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_o_rad_[3] = 0.00770200 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_o_rad_[4] = -0.00005939 * s2e::math::arcsec_to_rad; // [rad/century^4] // Coefficients to compute nutation angles - c_d_epsilon_rad_[0] = 9.2050 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[1] = 0.5730 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[2] = -0.0900 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[3] = 0.0980 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[4] = 0.0070 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[5] = -0.0010 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[6] = 0.0220 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[7] = 0.0130 * math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[8] = -0.0100 * math::arcsec_to_rad; // [rad] - - c_d_psi_rad_[0] = -17.2060 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[1] = -1.3170 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[2] = 0.2070 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[3] = -0.2280 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[4] = 0.1480 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[5] = 0.0710 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[6] = -0.0520 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[7] = -0.0300 * math::arcsec_to_rad; // [rad] - c_d_psi_rad_[8] = 0.0220 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[0] = 9.2050 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[1] = 0.5730 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[2] = -0.0900 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[3] = 0.0980 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[4] = 0.0070 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[5] = -0.0010 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[6] = 0.0220 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[7] = 0.0130 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[8] = -0.0100 * s2e::math::arcsec_to_rad; // [rad] + + c_d_psi_rad_[0] = -17.2060 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[1] = -1.3170 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[2] = 0.2070 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[3] = -0.2280 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[4] = 0.1480 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[5] = 0.0710 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[6] = -0.0520 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[7] = -0.0300 * s2e::math::arcsec_to_rad; // [rad] + c_d_psi_rad_[8] = 0.0220 * s2e::math::arcsec_to_rad; // [rad] // Coefficients to compute precession angle // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_zeta_rad_[0] = 2306.218100 * math::arcsec_to_rad; // [rad/century] - c_zeta_rad_[1] = 0.301880 * math::arcsec_to_rad; // [rad/century^2] - c_zeta_rad_[2] = 0.017998 * math::arcsec_to_rad; // [rad/century^3] + c_zeta_rad_[0] = 2306.218100 * s2e::math::arcsec_to_rad; // [rad/century] + c_zeta_rad_[1] = 0.301880 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_zeta_rad_[2] = 0.017998 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_theta_rad_[0] = 2004.310900 * math::arcsec_to_rad; // [rad/century] - c_theta_rad_[1] = -0.426650 * math::arcsec_to_rad; // [rad/century^2] - c_theta_rad_[2] = -0.041833 * math::arcsec_to_rad; // [rad/century^3] + c_theta_rad_[0] = 2004.310900 * s2e::math::arcsec_to_rad; // [rad/century] + c_theta_rad_[1] = -0.426650 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_theta_rad_[2] = -0.041833 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_z_rad_[0] = 2306.218100 * math::arcsec_to_rad; // [rad/century] - c_z_rad_[1] = 1.094680 * math::arcsec_to_rad; // [rad/century^2] - c_z_rad_[2] = 0.018203 * math::arcsec_to_rad; // [rad/century^3] + c_z_rad_[0] = 2306.218100 * s2e::math::arcsec_to_rad; // [rad/century] + c_z_rad_[1] = 1.094680 * s2e::math::arcsec_to_rad; // [rad/century^2] + c_z_rad_[2] = 0.018203 * s2e::math::arcsec_to_rad; // [rad/century^3] } else { // If the rotation mode is neither Simple nor Full, disable the rotation calculation and make the DCM a unit matrix - dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); + dcm_j2000_to_ecef_ = s2e::math::MakeIdentityMatrix<3>(); } } @@ -125,10 +125,10 @@ void EarthRotation::Update(const double julian_date) { terrestrial_time_julian_century[i + 1] = terrestrial_time_julian_century[i] * terrestrial_time_julian_century[0]; } - math::Matrix<3, 3> dcm_precession; - math::Matrix<3, 3> dcm_nutation; - math::Matrix<3, 3> dcm_rotation; - math::Matrix<3, 3> dcm_polar_motion; + s2e::math::Matrix<3, 3> dcm_precession; + s2e::math::Matrix<3, 3> dcm_nutation; + s2e::math::Matrix<3, 3> dcm_rotation; + s2e::math::Matrix<3, 3> dcm_polar_motion; // Nutation + Precession dcm_precession = Precession(terrestrial_time_julian_century); dcm_nutation = Nutation(terrestrial_time_julian_century); // epsilon_rad_, d_epsilon_rad_, d_psi_rad_ are updated in this procedure @@ -154,9 +154,9 @@ void EarthRotation::Update(const double julian_date) { } } -math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return math::MakeRotationMatrixZ(gast_rad); } +s2e::math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return s2e::math::MakeRotationMatrixZ(gast_rad); } -math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { +s2e::math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { // Mean obliquity of the ecliptic epsilon_rad_ = c_epsilon_rad_[0]; for (int i = 0; i < 3; i++) { @@ -208,17 +208,17 @@ math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { c_d_epsilon_rad_[7] * cos(2 * l_rad + lm_rad) + c_d_epsilon_rad_[8] * cos(2 * ld_rad - ls_rad); double epsi_mod_rad = epsilon_rad_ + d_epsilon_rad_; - math::Matrix<3, 3> x_epsi_1st = math::MakeRotationMatrixX(epsilon_rad_); - math::Matrix<3, 3> z_d_psi = math::MakeRotationMatrixZ(-d_psi_rad_); - math::Matrix<3, 3> x_epsi_2nd = math::MakeRotationMatrixX(-epsi_mod_rad); + s2e::math::Matrix<3, 3> x_epsi_1st = s2e::math::MakeRotationMatrixX(epsilon_rad_); + s2e::math::Matrix<3, 3> z_d_psi = s2e::math::MakeRotationMatrixZ(-d_psi_rad_); + s2e::math::Matrix<3, 3> x_epsi_2nd = s2e::math::MakeRotationMatrixX(-epsi_mod_rad); - math::Matrix<3, 3> dcm_nutation; + s2e::math::Matrix<3, 3> dcm_nutation; dcm_nutation = x_epsi_2nd * z_d_psi * x_epsi_1st; return dcm_nutation; } -math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { +s2e::math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { // Compute precession angles(zeta, theta, z) double zeta_rad = 0.0; for (int i = 0; i < 3; i++) { @@ -234,18 +234,18 @@ math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { } // Develop transformation matrix - math::Matrix<3, 3> z_zeta = math::MakeRotationMatrixZ(-zeta_rad); - math::Matrix<3, 3> y_theta = math::MakeRotationMatrixY(theta_rad); - math::Matrix<3, 3> z_z = math::MakeRotationMatrixZ(-z_rad); + s2e::math::Matrix<3, 3> z_zeta = s2e::math::MakeRotationMatrixZ(-zeta_rad); + s2e::math::Matrix<3, 3> y_theta = s2e::math::MakeRotationMatrixY(theta_rad); + s2e::math::Matrix<3, 3> z_z = s2e::math::MakeRotationMatrixZ(-z_rad); - math::Matrix<3, 3> dcm_precession; + s2e::math::Matrix<3, 3> dcm_precession; dcm_precession = z_z * y_theta * z_zeta; return dcm_precession; } -math::Matrix<3, 3> EarthRotation::PolarMotion(const double x_p, const double y_p) { - math::Matrix<3, 3> dcm_polar_motion; +s2e::math::Matrix<3, 3> EarthRotation::PolarMotion(const double x_p, const double y_p) { + s2e::math::Matrix<3, 3> dcm_polar_motion; dcm_polar_motion[0][0] = 1.0; dcm_polar_motion[0][1] = 0.0; diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index c12af3f2f..f4c7f7df7 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -45,20 +45,20 @@ class EarthRotation { * @fn GetDcmJ2000ToEcef * @brief Return the DCM between J2000 inertial frame and the Earth Centered Earth Fixed frame */ - inline const math::Matrix<3, 3> GetDcmJ2000ToEcef() const { return dcm_j2000_to_ecef_; }; + inline const s2e::math::Matrix<3, 3> GetDcmJ2000ToEcef() const { return dcm_j2000_to_ecef_; }; /** * @fn GetDcmTemeToEcef * @brief Return the DCM between TEME (Inertial frame used in SGP4) and the Earth Centered Earth Fixed frame */ - inline const math::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; + inline const s2e::math::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; private: double d_psi_rad_; //!< Nutation in obliquity [rad] double d_epsilon_rad_; //!< Nutation in longitude [rad] double epsilon_rad_; //!< Mean obliquity of the ecliptic [rad] - math::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF - math::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF + s2e::math::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF + s2e::math::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF EarthRotationMode rotation_mode_; //!< Designation of dynamics model // Definitions of coefficients @@ -94,7 +94,7 @@ class EarthRotation { * @param [in] gast_rad: Greenwich 'Apparent' Sidereal Time [rad] * @return Rotation matrix */ - math::Matrix<3, 3> AxialRotation(const double gast_rad); + s2e::math::Matrix<3, 3> AxialRotation(const double gast_rad); /** * @fn Nutation @@ -102,7 +102,7 @@ class EarthRotation { * @param [in] t_tt_century: nth power of julian century for terrestrial time * @return Rotation matrix */ - math::Matrix<3, 3> Nutation(const double (&t_tt_century)[4]); + s2e::math::Matrix<3, 3> Nutation(const double (&t_tt_century)[4]); /** * @fn Precession @@ -110,14 +110,14 @@ class EarthRotation { * @param [in] t_tt_century: nth power of julian century for terrestrial time * @return Rotation matrix */ - math::Matrix<3, 3> Precession(const double (&t_tt_century)[4]); + s2e::math::Matrix<3, 3> Precession(const double (&t_tt_century)[4]); /** * @fn PolarMotion * @brief Calculate movement of the coordinate axes due to Polar Motion * @note Currently, this function is not used. */ - math::Matrix<3, 3> PolarMotion(const double x_p, const double y_p); + s2e::math::Matrix<3, 3> PolarMotion(const double x_p, const double y_p); }; EarthRotationMode ConvertEarthRotationMode(const std::string mode); diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 21749c9aa..c2a844d7a 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -45,7 +45,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con // Initialize clock std::vector temp; temp.assign(kNumberOfInterpolation, -1.0); - clock_.assign(number_of_calculated_gnss_satellites_, math::Interpolation(temp, temp)); + clock_.assign(number_of_calculated_gnss_satellites_, s2e::math::Interpolation(temp, temp)); // Initialize interpolation for (size_t i = 0; i < kNumberOfInterpolation; i++) { @@ -74,8 +74,8 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } -math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time) const { - if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return math::Vector<3>(0.0); +s2e::math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time) const { + if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return s2e::math::Vector<3>(0.0); time_system::EpochTime target_time; @@ -86,10 +86,10 @@ math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_i } double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); + if (diff_s < 0.0 || diff_s > 1e6) return s2e::math::Vector<3>(0.0); const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); + return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, s2e::math::tau / kOrbitalPeriodCorrection_s); } double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time) const { @@ -131,7 +131,7 @@ bool GnssSatellites::UpdateInterpolationInformation() { for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { time_system::EpochTime sp3_time = time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); + s2e::math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); orbit_[gnss_id].PushAndPopData(time_diff_s, sp3_position_m); clock_[gnss_id].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_id)); diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 77508f73b..bbb4aaac3 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -75,7 +75,7 @@ class GnssSatellites : public ILoggable { */ void Update(const SimulationTime& simulation_time); - inline math::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { + inline s2e::math::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { // TODO: Add target time for earth rotation calculation return earth_rotation_.GetDcmJ2000ToEcef().Transpose() * GetPosition_ecef_m(gnss_satellite_id); } @@ -87,7 +87,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + s2e::math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -121,7 +121,7 @@ class GnssSatellites : public ILoggable { time_system::EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation - std::vector clock_; //!< GNSS satellite clock offset with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation // References const EarthRotation& earth_rotation_; //!< Earth rotation diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 7ef29494b..70e9fca25 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -50,10 +50,10 @@ bool HipparcosCatalogue::ReadContents(const std::string& file_name, const char d return true; } -math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { - math::Vector<3> direction_i; - double ra_rad = GetRightAscension_deg(rank) * math::deg_to_rad; - double de_rad = GetDeclination_deg(rank) * math::deg_to_rad; +s2e::math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { + s2e::math::Vector<3> direction_i; + double ra_rad = GetRightAscension_deg(rank) * s2e::math::deg_to_rad; + double de_rad = GetDeclination_deg(rank) * s2e::math::deg_to_rad; direction_i[0] = cos(ra_rad) * cos(de_rad); direction_i[1] = sin(ra_rad) * cos(de_rad); @@ -62,9 +62,9 @@ math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { return direction_i; } -math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, math::Quaternion quaternion_i2b) const { - math::Vector<3> direction_i; - math::Vector<3> direction_b; +s2e::math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, s2e::math::Quaternion quaternion_i2b) const { + s2e::math::Vector<3> direction_i; + s2e::math::Vector<3> direction_b; direction_i = GetStarDirection_i(rank); direction_b = quaternion_i2b.FrameConversion(direction_i); diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index d4a6afdd4..3114fdb3a 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -82,14 +82,14 @@ class HipparcosCatalogue : public ILoggable { *@brief Return direction vector of a star in the inertial frame *@param [in] rank: Rank of star magnitude in read catalogue */ - math::Vector<3> GetStarDirection_i(size_t rank) const; + s2e::math::Vector<3> GetStarDirection_i(size_t rank) const; /** *@fn GetStarDir_b *@brief Return direction vector of a star in the body-fixed frame *@param [in] rank: Rank of star magnitude in read catalogue *@param [in] quaternion_i2b: Quaternion from the inertial frame to the body-fixed frame */ - math::Vector<3> GetStarDirection_b(size_t rank, math::Quaternion quaternion_i2b) const; + s2e::math::Vector<3> GetStarDirection_b(size_t rank, s2e::math::Quaternion quaternion_i2b) const; // Override ILoggable /** diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index 1b8aea98d..75abc2e5b 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -12,13 +12,13 @@ MoonRotation::MoonRotation(const CelestialInformation& celestial_information, MoonRotationMode mode) : mode_(mode), celestial_information_(celestial_information) { - dcm_j2000_to_mcmf_ = math::MakeIdentityMatrix<3>(); + dcm_j2000_to_mcmf_ = s2e::math::MakeIdentityMatrix<3>(); } void MoonRotation::Update(const SimulationTime& simulation_time) { if (mode_ == MoonRotationMode::kSimple) { - math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); - math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); + s2e::math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); + s2e::math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); dcm_j2000_to_mcmf_ = planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); } else if (mode_ == MoonRotationMode::kIauMoon) { ConstSpiceChar from[] = "J2000"; @@ -32,7 +32,7 @@ void MoonRotation::Update(const SimulationTime& simulation_time) { } } } else { - dcm_j2000_to_mcmf_ = math::MakeIdentityMatrix<3>(); + dcm_j2000_to_mcmf_ = s2e::math::MakeIdentityMatrix<3>(); } } diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index fa9506757..5df9f247a 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -53,11 +53,11 @@ class MoonRotation { * @brief Return the DCM between J2000 inertial frame and the Moon Centered Moon Fixed frame * @note Because this is just a DCM, users need to consider the origin of the vector, which you want to convert with this matrix. */ - inline const math::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; + inline const s2e::math::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; private: MoonRotationMode mode_; //!< Rotation mode - math::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) + s2e::math::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) const CelestialInformation &celestial_information_; //!< Celestial Information to get moon orbit }; diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index b0792bca4..b46e855b2 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -66,7 +66,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& manual_average_f107_, manual_ap_); } else if (model_ == "HARRIS_PRIESTER") { // Harris-Priester - math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); + s2e::math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); air_density_kg_m3_ = atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); } else { // No suitable model diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index d167ae9ea..971910b0a 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -23,7 +23,7 @@ GeomagneticField::GeomagneticField(const std::string igrf_file_name, const doubl } void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, - const math::Quaternion quaternion_i2b) { + const s2e::math::Quaternion quaternion_i2b) { if (!IsCalcEnabled) return; const double lat_rad = position.GetLatitude_rad(); @@ -40,8 +40,8 @@ void GeomagneticField::CalcMagneticField(const double decimal_year, const double } void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { - static math::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); - static math::Vector<3> limit(random_walk_limit_nT_); + static s2e::math::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); + static s2e::math::Vector<3> limit(random_walk_limit_nT_); static RandomWalk<3> random_walk(0.1, standard_deviation, limit); static randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index f8c38b997..d00f46aa1 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -44,18 +44,18 @@ class GeomagneticField : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ void CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, - const math::Quaternion quaternion_i2b); + const s2e::math::Quaternion quaternion_i2b); /** * @fn GetGeomagneticField_i_nT * @brief Return magnetic field vector in the inertial frame [nT] */ - inline math::Vector<3> GetGeomagneticField_i_nT() const { return magnetic_field_i_nT_; } + inline s2e::math::Vector<3> GetGeomagneticField_i_nT() const { return magnetic_field_i_nT_; } /** * @fn GetGeomagneticField_b_nT * @brief Return magnetic field vector in the body fixed frame [nT] */ - inline math::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } + inline s2e::math::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } // Override ILoggable /** @@ -70,8 +70,8 @@ class GeomagneticField : public ILoggable { virtual std::string GetLogValue() const; private: - math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] - math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] + s2e::math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] + s2e::math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] double random_walk_standard_deviation_nT_; //!< Standard deviation of Random Walk [nT] double random_walk_limit_nT_; //!< Limit of Random Walk [nT] double white_noise_standard_deviation_nT_; //!< Standard deviation of white noise [nT] diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index e73d23132..b34fcc6ed 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -43,11 +43,11 @@ LocalCelestialInformation::~LocalCelestialInformation() { delete[] celestial_body_velocity_from_spacecraft_b_m_s_; } -void LocalCelestialInformation::UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, - const math::Vector<3> spacecraft_velocity_from_center_i_m_s, - const math::Quaternion quaternion_i2b, - const math::Vector<3> spacecraft_angular_velocity_rad_s) { - math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; +void LocalCelestialInformation::UpdateAllObjectsInformation(const s2e::math::Vector<3> spacecraft_position_from_center_i_m, + const s2e::math::Vector<3> spacecraft_velocity_from_center_i_m_s, + const s2e::math::Quaternion quaternion_i2b, + const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s) { + s2e::math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { celestial_body_position_i_m = global_celestial_information_->GetPositionFromCenter_i_m(i); celestial_body_velocity_i_m_s = global_celestial_information_->GetVelocityFromCenter_i_m_s(i); @@ -62,8 +62,8 @@ void LocalCelestialInformation::UpdateAllObjectsInformation(const math::Vector<3 return; } -void LocalCelestialInformation::CalcAllPosVel_b(const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s) { - math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; +void LocalCelestialInformation::CalcAllPosVel_b(const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s) { + s2e::math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; double r_buf1_i[3], velocity_buf1_i[3], r_buf1_b[3], velocity_buf1_b[3]; double r_buf2_i[3], velocity_buf2_i[3], r_buf2_b[3], velocity_buf2_b[3]; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { @@ -89,50 +89,50 @@ void LocalCelestialInformation::CalcAllPosVel_b(const math::Quaternion quaternio } } -void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, math::Quaternion quaternion_i2b) { - math::Vector<3> temp_i; +void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, s2e::math::Quaternion quaternion_i2b) { + s2e::math::Vector<3> temp_i; for (int i = 0; i < 3; i++) { temp_i[i] = input_i[i]; } - math::Vector<3> temp_b = quaternion_i2b.FrameConversion(temp_i); + s2e::math::Vector<3> temp_b = quaternion_i2b.FrameConversion(temp_i); for (int i = 0; i < 3; i++) { output_b[i] = temp_b[i]; } } void LocalCelestialInformation::ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, - const math::Quaternion quaternion_i2b, const math::Vector<3> angular_velocity_b) { + const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> angular_velocity_b) { // copy input vector - math::Vector<3> vi; + s2e::math::Vector<3> vi; for (int i = 0; i < 3; i++) { vi[i] = velocity_i[i]; } - math::Vector<3> ri; + s2e::math::Vector<3> ri; for (int i = 0; i < 3; i++) { ri[i] = position_i[i]; } // convert body rate vector into that in inertial coordinate - math::Vector<3> wb; + s2e::math::Vector<3> wb; for (int i = 0; i < 3; i++) { wb[i] = angular_velocity_b[i]; } // compute cross term wxr - math::Vector<3> wxposition_i = OuterProduct(wb, ri); + s2e::math::Vector<3> wxposition_i = OuterProduct(wb, ri); // compute dr/dt + wxr for (int i = 0; i < 3; i++) { vi[i] = vi[i] - wxposition_i[i]; } // convert vector in inertial coordinate into that in body coordinate - math::Vector<3> temp_b = quaternion_i2b.FrameConversion(vi); + s2e::math::Vector<3> temp_b = quaternion_i2b.FrameConversion(vi); for (int i = 0; i < 3; i++) { velocity_b[i] = temp_b[i]; } } -math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const char* body_name) const { - math::Vector<3> position; +s2e::math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const char* body_name) const { + s2e::math::Vector<3> position; int index = 0; index = global_celestial_information_->CalcBodyIdFromName(body_name); for (int i = 0; i < 3; i++) { @@ -141,14 +141,14 @@ math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const c return position; } -math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_i_m() const { +s2e::math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_i_m() const { std::string body_name = global_celestial_information_->GetCenterBodyName(); - math::Vector<3> position = GetPositionFromSpacecraft_i_m(body_name.c_str()); + s2e::math::Vector<3> position = GetPositionFromSpacecraft_i_m(body_name.c_str()); return position; } -math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const char* body_name) const { - math::Vector<3> position; +s2e::math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const char* body_name) const { + s2e::math::Vector<3> position; int index = 0; index = global_celestial_information_->CalcBodyIdFromName(body_name); for (int i = 0; i < 3; i++) { @@ -157,9 +157,9 @@ math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const c return position; } -math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_b_m(void) const { +s2e::math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_b_m(void) const { std::string body_name = global_celestial_information_->GetCenterBodyName(); - math::Vector<3> position = GetPositionFromSpacecraft_b_m(body_name.c_str()); + s2e::math::Vector<3> position = GetPositionFromSpacecraft_b_m(body_name.c_str()); return position; } diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index dc10ab302..ec3a6cbb3 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -34,33 +34,33 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, - const math::Vector<3> spacecraft_velocity_from_center_i_m_s, const math::Quaternion quaternion_i2b, - const math::Vector<3> spacecraft_angular_velocity_rad_s); + void UpdateAllObjectsInformation(const s2e::math::Vector<3> spacecraft_position_from_center_i_m, + const s2e::math::Vector<3> spacecraft_velocity_from_center_i_m_s, const s2e::math::Quaternion quaternion_i2b, + const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn GetPositionFromSpacecraft_i_m * @brief Return position of a selected body (Origin: Spacecraft, Frame: Inertial frame) * @param [in] body_name Celestial body name */ - math::Vector<3> GetPositionFromSpacecraft_i_m(const char* body_name) const; + s2e::math::Vector<3> GetPositionFromSpacecraft_i_m(const char* body_name) const; /** * @fn GetCenterBodyPositionFromSpacecraft_i_m * @brief Return position of the center body (Origin: Spacecraft, Frame: Inertial frame) */ - math::Vector<3> GetCenterBodyPositionFromSpacecraft_i_m(void) const; + s2e::math::Vector<3> GetCenterBodyPositionFromSpacecraft_i_m(void) const; /** * @fn GetPositionFromSpacecraft_b_m * @brief Return position of a selected body (Origin: Spacecraft, Frame: Body fixed frame) * @param [in] body_name Celestial body name */ - math::Vector<3> GetPositionFromSpacecraft_b_m(const char* body_name) const; + s2e::math::Vector<3> GetPositionFromSpacecraft_b_m(const char* body_name) const; /** * @fn GetCenterBodyPositionFromSpacecraft_b_m * @brief Return position of the center body (Origin: Spacecraft, Frame: Body fixed frame) */ - math::Vector<3> GetCenterBodyPositionFromSpacecraft_b_m(void) const; + s2e::math::Vector<3> GetCenterBodyPositionFromSpacecraft_b_m(void) const; /** * @fn GetGlobalInfo @@ -96,7 +96,7 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void CalcAllPosVel_b(const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s); + void CalcAllPosVel_b(const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn ConvertInertialToBody @@ -105,7 +105,7 @@ class LocalCelestialInformation : public ILoggable { * @param [out] output_b: Output vector in the body fixed frame * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ - void ConvertInertialToBody(const double* input_i, double* output_b, const math::Quaternion quaternion_i2b); + void ConvertInertialToBody(const double* input_i, double* output_b, const s2e::math::Quaternion quaternion_i2b); /** * @fn ConvertVelocityInertialToBody @@ -116,8 +116,8 @@ class LocalCelestialInformation : public ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] angular_velocity_b: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const math::Quaternion quaternion_i2b, - const math::Vector<3> angular_velocity_b); + void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const s2e::math::Quaternion quaternion_i2b, + const s2e::math::Vector<3> angular_velocity_b); }; #endif // S2E_ENVIRONMENT_LOCAL_LOCAL_CELESTIAL_INFORMATION_HPP_ diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 181e1ea7a..abda33801 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -31,7 +31,7 @@ void SolarRadiationPressureEnvironment::UpdateAllStates() { } void SolarRadiationPressureEnvironment::UpdatePressure() { - const math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); + const s2e::math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); const double distance_sat_to_sun = r_sc2sun_eci.CalcNorm(); solar_radiation_pressure_N_m2_ = solar_constant_W_m2_ / environment::speed_of_light_m_s / pow(distance_sat_to_sun / environment::astronomical_unit_m, 2.0); @@ -61,8 +61,8 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow return; } - const math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); - const math::Vector<3> r_sc2source_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m(shadow_source_name.c_str()); + const s2e::math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); + const s2e::math::Vector<3> r_sc2source_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m(shadow_source_name.c_str()); const double shadow_source_radius_m = local_celestial_information_->GetGlobalInformation().GetMeanRadiusFromName_m(shadow_source_name.c_str()); @@ -71,7 +71,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow const double sd_source = asin(shadow_source_radius_m / r_sc2source_eci.CalcNorm()); // Apparent radius of the shadow source // Angle of deviation from shadow source center to sun center - math::Vector<3> r_source2sun_eci = r_sc2sun_eci - r_sc2source_eci; + s2e::math::Vector<3> r_source2sun_eci = r_sc2sun_eci - r_sc2source_eci; const double delta = acos(InnerProduct(r_sc2source_eci, r_sc2sun_eci - r_sc2source_eci) / r_sc2source_eci.CalcNorm() / r_source2sun_eci.CalcNorm()); // The angle between the center of the sun and the common chord const double x = (delta * delta + sd_sun * sd_sun - sd_source * sd_source) / (2.0 * delta); @@ -91,7 +91,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow } else if (fabs(a - b) <= c && c <= (a + b)) // spacecraft is in penumbra { double A = a * a * acos(x / a) + b * b * acos((c - x) / b) - c * y; // The area of the occulted segment of the apparent solar disk - shadow_coefficient_ *= 1.0 - A / (math::pi * a * a); + shadow_coefficient_ *= 1.0 - A / (s2e::math::pi * a * a); } else { // no occultation takes place if (c < (a + b)) { std::cout << "[Error SRP Environment]: The calculation error was occurred at the shadow calculation." << std::endl; diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 7eba4b767..96ccf3c31 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -35,7 +35,7 @@ inline std::string WriteScalar(const std::string name, const std::string unit); * @param [in] precision: precision for the value (number of digit) */ template -inline std::string WriteVector(const math::Vector vector, const int precision = 6); +inline std::string WriteVector(const s2e::math::Vector vector, const int precision = 6); /** * @fn WriteVector * @brief Write header for vector value @@ -52,7 +52,7 @@ inline std::string WriteVector(const std::string name, const std::string frame, * @param [in] matrix: matrix value */ template -inline std::string WriteMatrix(const math::Matrix matrix, const int precision = 6); +inline std::string WriteMatrix(const s2e::math::Matrix matrix, const int precision = 6); /** * @fn WriteMatrix * @brief Write header for matrix value @@ -70,7 +70,7 @@ inline std::string WriteMatrix(const std::string name, const std::string frame, * @brief Write quaternion value * @param [in] quaternion: Quaternion */ -inline std::string WriteQuaternion(const math::Quaternion quaternion, const int precision = 6); +inline std::string WriteQuaternion(const s2e::math::Quaternion quaternion, const int precision = 6); /** * @fn WriteQuaternion * @brief Write header for quaternion @@ -91,7 +91,7 @@ std::string WriteScalar(const T scalar, const int precision) { std::string WriteScalar(const std::string name, const std::string unit) { return name + "[" + unit + "],"; } template -std::string WriteVector(const math::Vector vector, const int precision) { +std::string WriteVector(const s2e::math::Vector vector, const int precision) { std::stringstream str_tmp; for (size_t n = 0; n < NUM; n++) { @@ -115,7 +115,7 @@ std::string WriteVector(const std::string name, const std::string frame, const s } template -std::string WriteMatrix(const math::Matrix matrix, const int precision) { +std::string WriteMatrix(const s2e::math::Matrix matrix, const int precision) { std::stringstream str_tmp; for (size_t n = 0; n < ROW; n++) { @@ -138,7 +138,7 @@ std::string WriteMatrix(const std::string name, const std::string frame, const s return str_tmp.str(); } -std::string WriteQuaternion(const math::Quaternion quaternion, const int precision) { +std::string WriteQuaternion(const s2e::math::Quaternion quaternion, const int precision) { std::stringstream str_tmp; for (size_t i = 0; i < 4; i++) { diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 3f2b022b3..ce88b5a54 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -28,27 +28,27 @@ double CalcScaleHeight_km(const std::map::const_iterator density */ double CalcApexDensity_g_km3(const std::map::const_iterator density_itr, const double altitude_km); -double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, const double f10_7, const double exponent_parameter) { // Altitude double altitude_km = geodetic_position.GetAltitude_m() / 1000.0; // Position - math::Vector<3> position_ecef_m = geodetic_position.CalcEcefPosition(); + s2e::math::Vector<3> position_ecef_m = geodetic_position.CalcEcefPosition(); // Phi: angle between the satellite position and apex of the diurnal bulge double sun_ra_rad; //!< Right ascension of the sun phi double sun_dec_rad; //!< Declination of the sun theta sun_ra_rad = atan2(sun_direction_eci[1], sun_direction_eci[0]); sun_dec_rad = atan2(sun_direction_eci[2], sqrt(sun_direction_eci[0] * sun_direction_eci[0] + sun_direction_eci[1] * sun_direction_eci[1])); - math::Vector<3> apex_direction; - const double lag_angle_rad = 30.0 * math::deg_to_rad; + s2e::math::Vector<3> apex_direction; + const double lag_angle_rad = 30.0 * s2e::math::deg_to_rad; double apex_ra_rad = sun_ra_rad + lag_angle_rad; apex_direction[0] = cos(sun_dec_rad) * cos(apex_ra_rad); apex_direction[1] = cos(sun_dec_rad) * sin(apex_ra_rad); apex_direction[2] = sin(sun_dec_rad); - double beta_rad = math::InnerProduct(position_ecef_m.CalcNormalizedVector(), apex_direction); + double beta_rad = s2e::math::InnerProduct(position_ecef_m.CalcNormalizedVector(), apex_direction); double cos_phi = pow(0.5 + beta_rad / 2.0, exponent_parameter / 2.0); // Find density coefficients from altitude diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index f9d8ffcc5..fb08c4977 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -20,7 +20,7 @@ namespace atmosphere { * @param [in] exponent_parameter: n in the equation. n=2 for low inclination orbit and n=6 for polar orbit. * @return Atmospheric density [kg/m^3] */ -double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); } // namespace atmosphere diff --git a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp index c000ca49e..8401d233b 100644 --- a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp +++ b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp @@ -187,9 +187,9 @@ double CalcNRLMSISE00(double decyear, double latrad, double lonrad, double alt, input.year = 0; /* without effect */ input.sec = date[3] * 60.0 * 60.0 + date[4] * 60.0 + date[5]; input.alt = alt / 1000.0; - input.g_lat = latrad * math::rad_to_deg; - input.g_long = lonrad * math::rad_to_deg; - input.lst = input.sec / 3600.0 + lonrad * math::rad_to_deg / 15.0; + input.g_lat = latrad * s2e::math::rad_to_deg; + input.g_long = lonrad * s2e::math::rad_to_deg; + input.lst = input.sec / 3600.0 + lonrad * s2e::math::rad_to_deg / 15.0; if (is_manual_param) { input.f107 = manual_f107; diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index e7353b670..65969df15 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -25,7 +25,7 @@ GeodeticPosition::GeodeticPosition(const double latitude_rad, const double longi CalcQuaternionXcxfToLtc(); } -void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { +void GeodeticPosition::UpdateFromEcef(const s2e::math::Vector<3> position_ecef_m) { const double earth_radius_m = environment::earth_equatorial_radius_m; const double flattening = environment::earth_flattening; @@ -46,7 +46,7 @@ void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { altitude_m_ = r_m / cos(lat_tmp_rad) - c * earth_radius_m; - if (lat_tmp_rad > math::pi_2) lat_tmp_rad -= math::tau; + if (lat_tmp_rad > s2e::math::pi_2) lat_tmp_rad -= s2e::math::tau; latitude_rad_ = lat_tmp_rad; @@ -54,7 +54,7 @@ void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { return; } -math::Vector<3> GeodeticPosition::CalcEcefPosition() const { +s2e::math::Vector<3> GeodeticPosition::CalcEcefPosition() const { const double earth_radius_m = environment::earth_equatorial_radius_m; const double flattening = environment::earth_flattening; @@ -63,7 +63,7 @@ math::Vector<3> GeodeticPosition::CalcEcefPosition() const { double c = 1.0 / sqrt(1.0 - e2 * sin(latitude_rad_) * sin(latitude_rad_)); double n = c * earth_radius_m; - math::Vector<3> pos_ecef_m; + s2e::math::Vector<3> pos_ecef_m; pos_ecef_m(0) = (n + altitude_m_) * cos(latitude_rad_) * cos(theta); pos_ecef_m(1) = (n + altitude_m_) * cos(latitude_rad_) * sin(theta); pos_ecef_m(2) = (n * (1.0 - e2) + altitude_m_) * sin(latitude_rad_); @@ -72,7 +72,7 @@ math::Vector<3> GeodeticPosition::CalcEcefPosition() const { } void GeodeticPosition::CalcQuaternionXcxfToLtc() { - math::Matrix<3, 3> dcm_xcxf_to_ltc; + s2e::math::Matrix<3, 3> dcm_xcxf_to_ltc; dcm_xcxf_to_ltc[0][0] = -sin(longitude_rad_); dcm_xcxf_to_ltc[0][1] = cos(longitude_rad_); dcm_xcxf_to_ltc[0][2] = 0; diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index 556744f69..a850c5936 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -36,13 +36,13 @@ class GeodeticPosition { * @brief Update geodetic position with position vector in the ECEF frame * @param [in] position_ecef_m: Position vector in the ECEF frame [m] */ - void UpdateFromEcef(const math::Vector<3> position_ecef_m); + void UpdateFromEcef(const s2e::math::Vector<3> position_ecef_m); /** * @fn CalcEcefPosition * @brief Calculate and return the ECEF position from the geodetic position */ - math::Vector<3> CalcEcefPosition() const; + s2e::math::Vector<3> CalcEcefPosition() const; // Getter /** @@ -64,14 +64,14 @@ class GeodeticPosition { * @fn GetQuaternionXcxfToLtc * @brief Conversion quaternion from XCXF (e.g. ECEF) to LTC frame */ - inline math::Quaternion GetQuaternionXcxfToLtc() const { return quaternion_xcxf_to_ltc_; } + inline s2e::math::Quaternion GetQuaternionXcxfToLtc() const { return quaternion_xcxf_to_ltc_; } private: double latitude_rad_; //!< Latitude [rad] South: -π/2 to 0, North: 0 to π/2 double longitude_rad_; //!< Longitude [rad] East: 0 to π, West: 2π to π (i.e., defined as 0 to 2π [rad] east of the Greenwich meridian) double altitude_m_; //!< Altitude [m] - math::Quaternion quaternion_xcxf_to_ltc_; //!< Conversion quaternion from XCXF (e.g. ECEF) to LTC (Local Topographic Coordinate) + s2e::math::Quaternion quaternion_xcxf_to_ltc_; //!< Conversion quaternion from XCXF (e.g. ECEF) to LTC (Local Topographic Coordinate) /** * @fn CalcQuaternionXcxfToLtc diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index c36cdacc4..9a80470d4 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -171,7 +171,7 @@ AntexPhaseCenterData AntexFileReader::ReadPhaseCenterData(std::ifstream& antex_f } // Phase center offset if (line.find("NORTH / EAST / UP") == ANTEX_LINE_TYPE_POSITION) { - math::Vector<3> offset{0.0}; + s2e::math::Vector<3> offset{0.0}; sscanf(line.c_str(), "%lf %lf %lf", &offset[0], &offset[1], &offset[2]); phase_center_data.SetPhaseCenterOffset_mm(offset); } diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 13e126c55..11ac0dc7d 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -128,7 +128,7 @@ class AntexPhaseCenterData { * @fn SetPhaseCenterOffset_mm * @param[in] phase_center_offset_mm: Phase center offset vector [mm] */ - inline void SetPhaseCenterOffset_mm(const math::Vector<3> phase_center_offset_mm) { phase_center_offset_mm_ = phase_center_offset_mm; } + inline void SetPhaseCenterOffset_mm(const s2e::math::Vector<3> phase_center_offset_mm) { phase_center_offset_mm_ = phase_center_offset_mm; } /** * @fn SetGridInformation * @param[in] grid_information: Grid information @@ -152,7 +152,7 @@ class AntexPhaseCenterData { * @fn GetPhaseCenterOffset_mm * @return Phase center offset vector [mm] */ - inline math::Vector<3> GetPhaseCenterOffset_mm() const { return phase_center_offset_mm_; } + inline s2e::math::Vector<3> GetPhaseCenterOffset_mm() const { return phase_center_offset_mm_; } /** * @fn GetGridInformation * @return Grid information @@ -166,7 +166,7 @@ class AntexPhaseCenterData { private: std::string frequency_name_ = ""; //!< Frequency name - math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] + s2e::math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] AntexGridDefinition grid_information_; //!< Grid information std::vector> phase_center_variation_matrix_mm_; //!< Phase center variation [mm] (column, row definition: [azimuth][zenith]) }; diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index 7fbf0e831..b03fb4923 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -40,7 +40,7 @@ double Sp3FileReader::GetSatelliteClockOffset(const size_t epoch_id, const size_ return position_clock.clock_us_; } -math::Vector<3> Sp3FileReader::GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id) { +s2e::math::Vector<3> Sp3FileReader::GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id) { Sp3PositionClock position_clock = GetPositionClock(epoch_id, satellite_id); return position_clock.position_km_; } @@ -314,7 +314,7 @@ Sp3PositionClock Sp3FileReader::DecodePositionClockData(std::string line) { position_clock.satellite_id_ = line.substr(1, 3); // Position and clock - math::Vector<3> position_km; + s2e::math::Vector<3> position_km; for (size_t axis = 0; axis < 3; axis++) { position_km[axis] = stod(line.substr(4 + axis * 14, 14)); } @@ -323,7 +323,7 @@ Sp3PositionClock Sp3FileReader::DecodePositionClockData(std::string line) { // Standard deviations if (line.size() > 61) { - math::Vector<3> position_standard_deviation; + s2e::math::Vector<3> position_standard_deviation; for (size_t axis = 0; axis < 3; axis++) { try { position_standard_deviation[axis] = stod(line.substr(61 + axis * 3, 2)); @@ -384,7 +384,7 @@ Sp3VelocityClockRate Sp3FileReader::DecodeVelocityClockRateData(std::string line velocity_clock_rate.satellite_id_ = line.substr(1, 3); // Velocity and clock rate - math::Vector<3> velocity_dm_s; + s2e::math::Vector<3> velocity_dm_s; for (size_t axis = 0; axis < 3; axis++) { velocity_dm_s[axis] = stod(line.substr(4 + axis * 14, 14)); } @@ -393,7 +393,7 @@ Sp3VelocityClockRate Sp3FileReader::DecodeVelocityClockRateData(std::string line // Standard deviations if (line.size() > 60) { - math::Vector<3> velocity_standard_deviation; + s2e::math::Vector<3> velocity_standard_deviation; for (size_t axis = 0; axis < 3; axis++) { velocity_standard_deviation[axis] = stod(line.substr(61 + axis * 2, 2)); } diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 15e4566dc..2f04b25fc 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -95,9 +95,9 @@ struct Sp3Header { */ struct Sp3PositionClock { std::string satellite_id_; //!< GNSS satellite ID - math::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] + s2e::math::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] double clock_us_ = SP3_BAD_CLOCK_VALUE; //!< Satellite clock offset [us] - math::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] + s2e::math::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] double clock_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] bool clock_event_flag_ = false; //!< true when clock discontinuity is happened bool clock_prediction_flag_ = false; //!< true when clock data is predicted @@ -130,9 +130,9 @@ struct Sp3PositionClockCorrelation { */ struct Sp3VelocityClockRate { std::string satellite_id_; //!< GNSS satellite ID - math::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] + s2e::math::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] double clock_rate_ = 0.0; //!< Satellite clock offset change rate [-] - math::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] + s2e::math::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] double clock_rate_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] }; @@ -178,7 +178,7 @@ class Sp3FileReader { time_system::DateTime GetEpochData(const size_t epoch_id) const; Sp3PositionClock GetPositionClock(const size_t epoch_id, const size_t satellite_id); double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); - math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); + s2e::math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); size_t SearchNearestEpochId(const time_system::EpochTime time); diff --git a/src/math_physics/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp index d6c2fda06..6b55c1558 100644 --- a/src/math_physics/gravity/gravity_potential.cpp +++ b/src/math_physics/gravity/gravity_potential.cpp @@ -28,8 +28,8 @@ GravityPotential::GravityPotential(const size_t degree, const std::vector GravityPotential::CalcAcceleration_xcxf_m_s2(const math::Vector<3> &position_xcxf_m) { - math::Vector<3> acceleration_xcxf_m_s2(0.0); +s2e::math::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const s2e::math::Vector<3> &position_xcxf_m) { + s2e::math::Vector<3> acceleration_xcxf_m_s2(0.0); if (degree_ <= 0) return acceleration_xcxf_m_s2; // TODO: Consider this assertion is needed xcxf_x_m_ = position_xcxf_m[0]; @@ -95,8 +95,8 @@ math::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const math::Vector< return acceleration_xcxf_m_s2; } -math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const math::Vector<3> &position_xcxf_m) { - math::Matrix<3, 3> partial_derivative(0.0); +s2e::math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const s2e::math::Vector<3> &position_xcxf_m) { + s2e::math::Matrix<3, 3> partial_derivative(0.0); if (degree_ <= 0) return partial_derivative; xcxf_x_m_ = position_xcxf_m[0]; diff --git a/src/math_physics/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp index 94d0c8269..9e25980ba 100644 --- a/src/math_physics/gravity/gravity_potential.hpp +++ b/src/math_physics/gravity/gravity_potential.hpp @@ -48,7 +48,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Acceleration in XCXF frame [m/s2] */ - math::Vector<3> CalcAcceleration_xcxf_m_s2(const math::Vector<3> &position_xcxf_m); + s2e::math::Vector<3> CalcAcceleration_xcxf_m_s2(const s2e::math::Vector<3> &position_xcxf_m); /** * @fn CalcAcceleration_xcxf_m_s2 @@ -56,7 +56,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Partial derivative of acceleration in XCXF frame [-/s2] */ - math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const math::Vector<3> &position_xcxf_m); + s2e::math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const s2e::math::Vector<3> &position_xcxf_m); private: size_t degree_ = 0; //!< Maximum degree diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index 22450d621..1c5177463 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -25,8 +25,8 @@ TEST(GravityPotential, Acceleration) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Acceleration Calculation check - math::Vector<3> position_xcxf_m; - math::Vector<3> acceleration_xcxf_m_s2; + s2e::math::Vector<3> position_xcxf_m; + s2e::math::Vector<3> acceleration_xcxf_m_s2; const double accuracy = 1.0e-3; // Calc Acceleration @@ -67,8 +67,8 @@ TEST(GravityPotential, PartialDerivative1) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - math::Vector<3> position_xcxf_m; - math::Matrix<3, 3> partial_derivative_xcxf_s2; + s2e::math::Vector<3> position_xcxf_m; + s2e::math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -79,22 +79,22 @@ TEST(GravityPotential, PartialDerivative1) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + s2e::math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - math::Vector<3> position_1_xcxf_m = position_xcxf_m; - math::Vector<3> position_2_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_1_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + s2e::math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + s2e::math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + s2e::math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } } // Compare numerical and analytical calculation - math::Matrix<3, 3> diff; + s2e::math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); @@ -120,8 +120,8 @@ TEST(GravityPotential, PartialDerivative2) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - math::Vector<3> position_xcxf_m; - math::Matrix<3, 3> partial_derivative_xcxf_s2; + s2e::math::Vector<3> position_xcxf_m; + s2e::math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -132,22 +132,22 @@ TEST(GravityPotential, PartialDerivative2) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + s2e::math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - math::Vector<3> position_1_xcxf_m = position_xcxf_m; - math::Vector<3> position_2_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_1_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + s2e::math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + s2e::math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + s2e::math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } } // Compare numerical and analytical calculation - math::Matrix<3, 3> diff; + s2e::math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); diff --git a/src/math_physics/math/constants.hpp b/src/math_physics/math/constants.hpp index 9e6744015..7a6f0cf21 100644 --- a/src/math_physics/math/constants.hpp +++ b/src/math_physics/math/constants.hpp @@ -8,7 +8,7 @@ #include // std::is_floating_point_v -namespace math { +namespace s2e::math { // instead of C++20 std::numbers inline namespace numbers { @@ -47,6 +47,6 @@ DEFINE_MATH_CONSTANT(rad_s_to_rpm, 60.0L / tau) /* rad/s to rpm */ #undef DEFINE_MATH_CONSTANT } // namespace numbers -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_CONSTANTS_HPP_ diff --git a/src/math_physics/math/interpolation.cpp b/src/math_physics/math/interpolation.cpp index 4415c4dd5..2cab687a6 100644 --- a/src/math_physics/math/interpolation.cpp +++ b/src/math_physics/math/interpolation.cpp @@ -7,7 +7,7 @@ #include -namespace math { +namespace s2e::math { double Interpolation::CalcPolynomial(const double x) const { // Search nearest point @@ -94,4 +94,4 @@ size_t Interpolation::FindNearestPoint(const double x) const { return output; } -} // namespace math +} // namespace s2e::math diff --git a/src/math_physics/math/interpolation.hpp b/src/math_physics/math/interpolation.hpp index 7620ff338..f9815bc78 100644 --- a/src/math_physics/math/interpolation.hpp +++ b/src/math_physics/math/interpolation.hpp @@ -9,7 +9,7 @@ #include #include -namespace math { +namespace s2e::math { /** * @class Interpolation @@ -90,6 +90,6 @@ class Interpolation { size_t FindNearestPoint(const double x) const; }; -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_INTERPOLATION_HPP_ diff --git a/src/math_physics/math/matrix.hpp b/src/math_physics/math/matrix.hpp index 89429a8ca..a731e1d79 100644 --- a/src/math_physics/math/matrix.hpp +++ b/src/math_physics/math/matrix.hpp @@ -9,7 +9,7 @@ #include // for size_t #include // for ostream, cout -namespace math { +namespace s2e::math { /** * @class Matrix @@ -244,7 +244,7 @@ Matrix MakeRotationMatrixY(const double& theta_rad); template Matrix MakeRotationMatrixZ(const double& theta_rad); -} // namespace math +} // namespace s2e::math #include "matrix_template_functions.hpp" diff --git a/src/math_physics/math/matrix_template_functions.hpp b/src/math_physics/math/matrix_template_functions.hpp index dbfa9aa1b..56685a685 100644 --- a/src/math_physics/math/matrix_template_functions.hpp +++ b/src/math_physics/math/matrix_template_functions.hpp @@ -9,7 +9,7 @@ #include #include // for cout -namespace math { +namespace s2e::math { template Matrix::Matrix(const T& n) { @@ -186,6 +186,6 @@ Matrix MakeRotationMatrixZ(const double& theta_rad) { return m; } -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_MATRIX_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/math_physics/math/matrix_vector.hpp b/src/math_physics/math/matrix_vector.hpp index 7c76a07f5..1d4803ded 100644 --- a/src/math_physics/math/matrix_vector.hpp +++ b/src/math_physics/math/matrix_vector.hpp @@ -9,7 +9,7 @@ #include "matrix.hpp" #include "vector.hpp" -namespace math { +namespace s2e::math { /** * @fn operator* @@ -52,7 +52,7 @@ Matrix& LuDecomposition(Matrix& matrix, size_t index[]); template Vector& SolveLinearSystemWithLu(const Matrix& matrix, const size_t index[], Vector& vector); -} // namespace math +} // namespace s2e::math #include "matrix_vector_template_functions.hpp" diff --git a/src/math_physics/math/matrix_vector_template_functions.hpp b/src/math_physics/math/matrix_vector_template_functions.hpp index d16f08a2a..31289721b 100644 --- a/src/math_physics/math/matrix_vector_template_functions.hpp +++ b/src/math_physics/math/matrix_vector_template_functions.hpp @@ -8,7 +8,7 @@ #include // for invalid_argument. -namespace math { +namespace s2e::math { template Vector operator*(const Matrix& matrix, const Vector& vector) { @@ -139,6 +139,6 @@ Vector& SolveLinearSystemWithLu(const Matrix& a, const size_t index[], return b; } -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_MATRIX_VECTOR_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/math_physics/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp index 36ff4ae86..fb0d81b36 100644 --- a/src/math_physics/math/ordinary_differential_equation.hpp +++ b/src/math_physics/math/ordinary_differential_equation.hpp @@ -8,7 +8,7 @@ #include "./vector.hpp" -namespace math { +namespace s2e::math { /** * @class OrdinaryDifferentialEquation @@ -102,7 +102,7 @@ class OrdinaryDifferentialEquation { * @fn GetState * @brief Return current state vector for inheriting class */ - inline math::Vector& GetState() { return state_; } + inline s2e::math::Vector& GetState() { return state_; } private: double independent_variable_; //!< Latest value of independent variable @@ -111,7 +111,7 @@ class OrdinaryDifferentialEquation { double step_width_s_; //!< Step width }; -} // namespace math +} // namespace s2e::math #include "./ordinary_differential_equation_template_functions.hpp" diff --git a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp index 7c5dc3071..334be563a 100644 --- a/src/math_physics/math/ordinary_differential_equation_template_functions.hpp +++ b/src/math_physics/math/ordinary_differential_equation_template_functions.hpp @@ -5,7 +5,7 @@ #ifndef S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ #define S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ -namespace math { +namespace s2e::math { template OrdinaryDifferentialEquation::OrdinaryDifferentialEquation(double step_width_s) @@ -44,6 +44,6 @@ void OrdinaryDifferentialEquation::Update() { independent_variable_ += step_width_s_; // Update independent variable } -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_ORDINARY_DIFFERENTIA_EQUATION_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/math_physics/math/quaternion.cpp b/src/math_physics/math/quaternion.cpp index 27dacc275..d2f28f085 100644 --- a/src/math_physics/math/quaternion.cpp +++ b/src/math_physics/math/quaternion.cpp @@ -9,7 +9,7 @@ #include #include -namespace math { +namespace s2e::math { Quaternion::Quaternion(const Vector<3>& rotation_axis, const double rotation_angle_rad) { double half_rotation_angle_rad = rotation_angle_rad * 0.5; @@ -236,4 +236,4 @@ Vector<3> Quaternion::InverseFrameConversion(const Vector<3>& vector) const { Vector<4> Quaternion::ConvertToVector() { return quaternion_; } -} // namespace math +} // namespace s2e::math diff --git a/src/math_physics/math/quaternion.hpp b/src/math_physics/math/quaternion.hpp index 76720f773..1980ec8c1 100644 --- a/src/math_physics/math/quaternion.hpp +++ b/src/math_physics/math/quaternion.hpp @@ -9,7 +9,7 @@ #include "matrix.hpp" #include "vector.hpp" -namespace math { +namespace s2e::math { /** * @class Quaternion @@ -203,6 +203,6 @@ Quaternion operator*(const Quaternion& lhs, const Vector<3>& rhs); * @return Quaternion */ Quaternion operator*(const double& lhs, const Quaternion& rhs); -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_QUATERNION_HPP_ diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index 943e6da91..26020cd77 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -7,20 +7,20 @@ #include -namespace math { +namespace s2e::math { double WrapTo2Pi(const double angle_rad) { double angle_out = angle_rad; if (angle_out < 0.0) { while (angle_out < 0.0) { - angle_out += math::tau; + angle_out += s2e::math::tau; } - } else if (angle_out > math::tau) { - while (angle_out > math::tau) { - angle_out -= math::tau; + } else if (angle_out > s2e::math::tau) { + while (angle_out > s2e::math::tau) { + angle_out -= s2e::math::tau; } } else { // nothing to do } return angle_out; } -} // namespace math +} // namespace s2e::math diff --git a/src/math_physics/math/s2e_math.hpp b/src/math_physics/math/s2e_math.hpp index fb7bbccb6..8cafb64d4 100644 --- a/src/math_physics/math/s2e_math.hpp +++ b/src/math_physics/math/s2e_math.hpp @@ -8,7 +8,7 @@ #include -namespace math { +namespace s2e::math { /** * @fn WrapTo2Pi @@ -17,6 +17,6 @@ namespace math { */ double WrapTo2Pi(const double angle_rad); -} // namespace math +} // namespace s2e::math #endif // S2E_LIBRARY_MATH_S2E_MATH_HPP_ diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index 674b12419..a29f3b330 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -15,7 +15,7 @@ TEST(Interpolation, PolynomialLinearFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(2.0 * xx, interpolation.CalcPolynomial(xx)); @@ -31,7 +31,7 @@ TEST(Interpolation, PolynomialLinearFunction) { TEST(Interpolation, PolynomialQuadraticFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 1.0, 4.0, 9.0, 16.0}; - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(pow(xx, 2.0), interpolation.CalcPolynomial(xx)); @@ -45,16 +45,16 @@ TEST(Interpolation, PolynomialQuadraticFunction) { * @brief Test for sin function with trigonometric interpolation */ TEST(Interpolation, TrigonometricSinFunction) { - std::vector x{0.0, math::pi_2, math::pi, math::pi * 3.0 / 2.0, math::tau}; + std::vector x{0.0, s2e::math::pi_2, s2e::math::pi, s2e::math::pi * 3.0 / 2.0, s2e::math::tau}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); } - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); - double xx = 0.4 * math::pi; + double xx = 0.4 * s2e::math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); - xx = 1.4 * math::pi; + xx = 1.4 * s2e::math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); } @@ -62,16 +62,16 @@ TEST(Interpolation, TrigonometricSinFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosFunction) { - std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2}; + std::vector x{0.0, 0.3 * s2e::math::pi_2, 0.6 * s2e::math::pi_2, 0.9 * s2e::math::pi_2, 1.2 * s2e::math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i])); } - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); - double xx = 0.1 * math::pi_2; + double xx = 0.1 * s2e::math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * math::pi_2; + xx = 0.8 * s2e::math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -79,16 +79,16 @@ TEST(Interpolation, TrigonometricCosFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { - std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2, 1.5 * math::pi_2}; + std::vector x{0.0, 0.3 * s2e::math::pi_2, 0.6 * s2e::math::pi_2, 0.9 * s2e::math::pi_2, 1.2 * s2e::math::pi_2, 1.5 * s2e::math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i]) + sin(x[i])); } - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); - double xx = 0.1 * math::pi_2; + double xx = 0.1 * s2e::math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * math::pi_2; + xx = 0.8 * s2e::math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -98,7 +98,7 @@ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { TEST(Interpolation, PushAndPop) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); EXPECT_EQ(x.size(), interpolation.GetDegree()); for (size_t i = 0; i < x.size(); i++) { diff --git a/src/math_physics/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp index 53dee0b75..9b23c15d5 100644 --- a/src/math_physics/math/test_matrix.cpp +++ b/src/math_physics/math/test_matrix.cpp @@ -14,7 +14,7 @@ TEST(Matrix, ConstructorWithNumber) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - math::Matrix m(initialize_value); + s2e::math::Matrix m(initialize_value); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -30,7 +30,7 @@ TEST(Matrix, ConstructorWithNumber) { TEST(Matrix, GetLength) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; EXPECT_EQ(R, m.GetRowLength()); EXPECT_EQ(C, m.GetColumnLength()); @@ -43,8 +43,8 @@ TEST(Matrix, OperatorPlusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - math::Matrix m(initialize_value); - math::Matrix adding; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -71,8 +71,8 @@ TEST(Matrix, OperatorMinusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - math::Matrix m(initialize_value); - math::Matrix subtracting; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -99,7 +99,7 @@ TEST(Matrix, OperatorMultiplyEqual) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; double multiplying = 2.0; for (size_t r = 0; r < R; r++) { @@ -125,7 +125,7 @@ TEST(Matrix, OperatorDivideEqual) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; double dividing = 2.0; for (size_t r = 0; r < R; r++) { @@ -152,7 +152,7 @@ TEST(Matrix, FillUp) { const size_t C = 3; double value = 3.0; - math::Matrix m; + s2e::math::Matrix m; m.FillUp(value); @@ -169,7 +169,7 @@ TEST(Matrix, FillUp) { */ TEST(Matrix, CalcTrace) { const size_t N = 6; - math::Matrix m; + s2e::math::Matrix m; for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -201,8 +201,8 @@ TEST(Matrix, OperatorPlus) { const size_t R = 6; const size_t C = 3; double initialize_value = -2.0; - math::Matrix m(initialize_value); - math::Matrix adding; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -210,7 +210,7 @@ TEST(Matrix, OperatorPlus) { } } - math::Matrix added = m + adding; + s2e::math::Matrix added = m + adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -230,8 +230,8 @@ TEST(Matrix, OperatorMinus) { const size_t R = 6; const size_t C = 3; double initialize_value = 0.6; - math::Matrix m(initialize_value); - math::Matrix subtracting; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -239,7 +239,7 @@ TEST(Matrix, OperatorMinus) { } } - math::Matrix subtracted = m - subtracting; + s2e::math::Matrix subtracted = m - subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -259,7 +259,7 @@ TEST(Matrix, OperatorMultiplyScalar) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; double multiplying = 0.3; for (size_t r = 0; r < R; r++) { @@ -268,7 +268,7 @@ TEST(Matrix, OperatorMultiplyScalar) { } } - math::Matrix subtracted = multiplying * m; + s2e::math::Matrix subtracted = multiplying * m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -287,8 +287,8 @@ TEST(Matrix, OperatorMultiplyMatrix) { const size_t R = 2; const size_t C = 3; - math::Matrix a; - math::Matrix b; + s2e::math::Matrix a; + s2e::math::Matrix b; a[0][0] = 1.0; a[0][1] = 2.0; @@ -304,7 +304,7 @@ TEST(Matrix, OperatorMultiplyMatrix) { b[2][0] = 5.0; b[2][1] = 6.0; - math::Matrix result = a * b; + s2e::math::Matrix result = a * b; EXPECT_DOUBLE_EQ(22.0, result[0][0]); EXPECT_DOUBLE_EQ(28.0, result[0][1]); @@ -319,14 +319,14 @@ TEST(Matrix, Transpose) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { m[r][c] = r * c; } } - math::Matrix transposed = m.Transpose(); + s2e::math::Matrix transposed = m.Transpose(); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -344,7 +344,7 @@ TEST(Matrix, Transpose) { TEST(Matrix, MakeIdentityMatrix) { const size_t N = 6; - math::Matrix m = math::MakeIdentityMatrix(); + s2e::math::Matrix m = s2e::math::MakeIdentityMatrix(); for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -362,9 +362,9 @@ TEST(Matrix, MakeIdentityMatrix) { */ TEST(Matrix, MakeRotationMatrixX) { const size_t N = 3; - double theta_rad = -45.0 * math::deg_to_rad; + double theta_rad = -45.0 * s2e::math::deg_to_rad; - math::Matrix m = math::MakeRotationMatrixX(theta_rad); + s2e::math::Matrix m = s2e::math::MakeRotationMatrixX(theta_rad); EXPECT_DOUBLE_EQ(1.0, m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -382,9 +382,9 @@ TEST(Matrix, MakeRotationMatrixX) { */ TEST(Matrix, MakeRotationMatrixY) { const size_t N = 3; - double theta_rad = 120.0 * math::deg_to_rad; + double theta_rad = 120.0 * s2e::math::deg_to_rad; - math::Matrix m = math::MakeRotationMatrixY(theta_rad); + s2e::math::Matrix m = s2e::math::MakeRotationMatrixY(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -402,9 +402,9 @@ TEST(Matrix, MakeRotationMatrixY) { */ TEST(Matrix, MakeRotationMatrixZ) { const size_t N = 3; - double theta_rad = 30.0 * math::deg_to_rad; + double theta_rad = 30.0 * s2e::math::deg_to_rad; - math::Matrix m = math::MakeRotationMatrixZ(theta_rad); + s2e::math::Matrix m = s2e::math::MakeRotationMatrixZ(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(sin(theta_rad), m[0][1]); diff --git a/src/math_physics/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp index 78fc9babf..958a409b6 100644 --- a/src/math_physics/math/test_matrix_vector.cpp +++ b/src/math_physics/math/test_matrix_vector.cpp @@ -14,8 +14,8 @@ TEST(MatrixVector, MultiplyMatrixVector) { const size_t R = 3; const size_t C = 2; - math::Matrix m; - math::Vector v; + s2e::math::Matrix m; + s2e::math::Vector v; m[0][0] = 1.0; m[0][1] = 2.0; @@ -27,7 +27,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { v[0] = 7.0; v[1] = 1.0; - math::Vector result = m * v; + s2e::math::Vector result = m * v; EXPECT_DOUBLE_EQ(9.0, result[0]); EXPECT_DOUBLE_EQ(-7.0, result[1]); @@ -40,7 +40,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { TEST(MatrixVector, CalcInverseMatrix) { const size_t N = 3; - math::Matrix m; + s2e::math::Matrix m; m[0][0] = 1.0; m[0][1] = 1.0; @@ -52,7 +52,7 @@ TEST(MatrixVector, CalcInverseMatrix) { m[2][1] = -2.0; m[2][2] = 1.0; - math::Matrix inverse = math::CalcInverseMatrix(m); + s2e::math::Matrix inverse = s2e::math::CalcInverseMatrix(m); EXPECT_NEAR(-1.0, inverse[0][0], 1e-10); EXPECT_NEAR(-1.0, inverse[0][1], 1e-10); diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index 4995afccc..2821eccee 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -11,7 +11,7 @@ * @brief Test for constructor from four numbers */ TEST(Quaternion, ConstructorFourNumber) { - math::Quaternion q(0.5, 0.5, 0.5, 0.5); + s2e::math::Quaternion q(0.5, 0.5, 0.5, 0.5); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -23,8 +23,8 @@ TEST(Quaternion, ConstructorFourNumber) { * @brief Test for constructor from Vector */ TEST(Quaternion, ConstructorVector) { - math::Vector<4> v(0.5); - math::Quaternion q(v); + s2e::math::Vector<4> v(0.5); + s2e::math::Quaternion q(v); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -36,12 +36,12 @@ TEST(Quaternion, ConstructorVector) { * @brief Test for constructor from axis and rotation angle X rotation */ TEST(Quaternion, ConstructorAxisAndAngleX) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 1.0; axis[1] = 0.0; axis[2] = 0.0; - double theta_rad = 90 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = 90 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -53,12 +53,12 @@ TEST(Quaternion, ConstructorAxisAndAngleX) { * @brief Test for constructor from axis and rotation angle Y rotation */ TEST(Quaternion, ConstructorAxisAndAngleY) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 0.0; axis[1] = 1.0; axis[2] = 0.0; - double theta_rad = 45 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = 45 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -70,12 +70,12 @@ TEST(Quaternion, ConstructorAxisAndAngleY) { * @brief Test for constructor from axis and rotation angle Z rotation */ TEST(Quaternion, ConstructorAxisAndAngleZ) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; - double theta_rad = -60 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = -60 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -87,12 +87,12 @@ TEST(Quaternion, ConstructorAxisAndAngleZ) { * @brief Test for constructor from axis and rotation angle All axes rotation */ TEST(Quaternion, ConstructorAxisAndAngleAll) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 1.0; axis[1] = 1.0; axis[2] = 1.0; - double theta_rad = 180 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = 180 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -104,16 +104,16 @@ TEST(Quaternion, ConstructorAxisAndAngleAll) { * @brief Test for constructor from two vectors: No rotation */ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 2.0; // To check normalization - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 0.0; after[1] = 0.0; after[2] = 1.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); @@ -125,18 +125,18 @@ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { * @brief Test for constructor from two vectors: X rotation */ TEST(Quaternion, ConstructorTwoVectorsX) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); - double theta_rad = -90 * math::deg_to_rad; + double theta_rad = -90 * s2e::math::deg_to_rad; EXPECT_NEAR(sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -147,18 +147,18 @@ TEST(Quaternion, ConstructorTwoVectorsX) { * @brief Test for constructor from two vectors: Y rotation */ TEST(Quaternion, ConstructorTwoVectorsY) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 1.0; after[1] = 0.0; after[2] = 0.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); - double theta_rad = 90 * math::deg_to_rad; + double theta_rad = 90 * s2e::math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -169,18 +169,18 @@ TEST(Quaternion, ConstructorTwoVectorsY) { * @brief Test for constructor from two vectors: Z rotation */ TEST(Quaternion, ConstructorTwoVectorsZ) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 1.0; before[1] = 0.0; before[2] = 0.0; - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); - double theta_rad = 90 * math::deg_to_rad; + double theta_rad = 90 * s2e::math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[2], 1e-5); @@ -192,7 +192,7 @@ TEST(Quaternion, ConstructorTwoVectorsZ) { * @note TODO: Fix to nondestructive function */ TEST(Quaternion, Normalize) { - math::Quaternion q(1.0, 1.0, 1.0, 1.0); + s2e::math::Quaternion q(1.0, 1.0, 1.0, 1.0); EXPECT_DOUBLE_EQ(1.0, q[0]); EXPECT_DOUBLE_EQ(1.0, q[1]); EXPECT_DOUBLE_EQ(1.0, q[2]); @@ -209,9 +209,9 @@ TEST(Quaternion, Normalize) { * @brief Test for Conjugate */ TEST(Quaternion, Conjugate) { - math::Quaternion q(0.5, 0.5, 0.5, 0.5); + s2e::math::Quaternion q(0.5, 0.5, 0.5, 0.5); - math::Quaternion q_conjugate = q.Conjugate(); + s2e::math::Quaternion q_conjugate = q.Conjugate(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.5, q[0]); @@ -229,10 +229,10 @@ TEST(Quaternion, Conjugate) { * @brief Test for ConvertToDcm Y rotation */ TEST(Quaternion, ConvertToDcmY) { - math::Quaternion q(0.0, 1.0, 0.0, 1.0); + s2e::math::Quaternion q(0.0, 1.0, 0.0, 1.0); q.Normalize(); - math::Matrix<3, 3> dcm = q.ConvertToDcm(); + s2e::math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.0, q[0]); @@ -253,7 +253,7 @@ TEST(Quaternion, ConvertToDcmY) { EXPECT_NEAR(0.0, dcm[2][2], accuracy); // Inverse Conversion - math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); + s2e::math::Quaternion q_from_dcm = s2e::math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -263,10 +263,10 @@ TEST(Quaternion, ConvertToDcmY) { * @brief Test for ConvertToDcm */ TEST(Quaternion, ConvertToDcm) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - math::Matrix<3, 3> dcm = q.ConvertToDcm(); + s2e::math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function const double accuracy = 1.0e-5; @@ -281,7 +281,7 @@ TEST(Quaternion, ConvertToDcm) { EXPECT_NEAR(0.4962963, dcm[2][2], accuracy); // Inverse Conversion - math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); + s2e::math::Quaternion q_from_dcm = s2e::math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -291,10 +291,10 @@ TEST(Quaternion, ConvertToDcm) { * @brief Test for ConvertToEuler X rotation */ TEST(Quaternion, ConvertToEulerX) { - math::Quaternion q(1.0, 0.0, 0.0, 1.0); + s2e::math::Quaternion q(1.0, 0.0, 0.0, 1.0); q.Normalize(); - math::Vector<3> euler = q.ConvertToEuler(); + s2e::math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function EXPECT_DOUBLE_EQ(1.0 / sqrt(2.0), q[0]); @@ -304,12 +304,12 @@ TEST(Quaternion, ConvertToEulerX) { // Check nondestructive function const double accuracy = 1.0e-7; - EXPECT_NEAR(90 * math::deg_to_rad, euler[0], accuracy); + EXPECT_NEAR(90 * s2e::math::deg_to_rad, euler[0], accuracy); EXPECT_NEAR(0.0, euler[1], accuracy); EXPECT_NEAR(0.0, euler[2], accuracy); // Inverse Conversion - math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); + s2e::math::Quaternion q_from_euler = s2e::math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -319,10 +319,10 @@ TEST(Quaternion, ConvertToEulerX) { * @brief Test for ConvertToEuler */ TEST(Quaternion, ConvertToEuler) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - math::Vector<3> euler = q.ConvertToEuler(); + s2e::math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function const double accuracy = 1.0e-7; @@ -331,7 +331,7 @@ TEST(Quaternion, ConvertToEuler) { EXPECT_NEAR(0.41012734, euler[2], accuracy); // Inverse Conversion - math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); + s2e::math::Quaternion q_from_euler = s2e::math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -341,22 +341,22 @@ TEST(Quaternion, ConvertToEuler) { * @brief Test for FrameConversion Z rotation */ TEST(Quaternion, FrameConversionZ) { - math::Quaternion q(0.0, 0.0, 1.0, 1.0); + s2e::math::Quaternion q(0.0, 0.0, 1.0, 1.0); q.Normalize(); - math::Vector<3> v; + s2e::math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - math::Vector<3> v_frame_conv = q.FrameConversion(v); + s2e::math::Vector<3> v_frame_conv = q.FrameConversion(v); const double accuracy = 1.0e-7; EXPECT_NEAR(0.0, v_frame_conv[0], accuracy); EXPECT_NEAR(-1.0, v_frame_conv[1], accuracy); EXPECT_NEAR(0.0, v_frame_conv[2], accuracy); - math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + s2e::math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); for (size_t i = 0; i < 3; i++) { EXPECT_NEAR(v[i], v_frame_conv_inv[i], accuracy); @@ -367,15 +367,15 @@ TEST(Quaternion, FrameConversionZ) { * @brief Test for FrameConversion */ TEST(Quaternion, FrameConversion) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - math::Vector<3> v; + s2e::math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - math::Vector<3> v_frame_conv = q.FrameConversion(v); - math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + s2e::math::Vector<3> v_frame_conv = q.FrameConversion(v); + s2e::math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); const double accuracy = 1.0e-7; for (size_t i = 0; i < 3; i++) { @@ -387,9 +387,9 @@ TEST(Quaternion, FrameConversion) { * @brief Test for ConvertToVector */ TEST(Quaternion, ConvertToVector) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); - math::Vector<4> v = q.ConvertToVector(); + s2e::math::Vector<4> v = q.ConvertToVector(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(q[i], v[i]); @@ -400,10 +400,10 @@ TEST(Quaternion, ConvertToVector) { * @brief Test for operator+ */ TEST(Quaternion, OperatorPlus) { - math::Quaternion q1(0.5, 0.3, 0.1, 1.0); - math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + s2e::math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - math::Quaternion result = q1 + q2; + s2e::math::Quaternion result = q1 + q2; EXPECT_DOUBLE_EQ(0.2, result[0]); EXPECT_DOUBLE_EQ(0.4, result[1]); @@ -415,10 +415,10 @@ TEST(Quaternion, OperatorPlus) { * @brief Test for operator- */ TEST(Quaternion, OperatorMinus) { - math::Quaternion q1(0.5, 0.3, 0.1, 1.0); - math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + s2e::math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - math::Quaternion result = q1 - q2; + s2e::math::Quaternion result = q1 - q2; EXPECT_DOUBLE_EQ(0.8, result[0]); EXPECT_DOUBLE_EQ(0.2, result[1]); @@ -430,10 +430,10 @@ TEST(Quaternion, OperatorMinus) { * @brief Test for operator* quaternion */ TEST(Quaternion, OperatorQuaternionMultiply) { - math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); - math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); + s2e::math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); + s2e::math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); - math::Quaternion result = q1 * q2; + s2e::math::Quaternion result = q1 * q2; const double accuracy = 1.0e-7; EXPECT_NEAR(-0.3928446703722, result[0], accuracy); @@ -446,10 +446,10 @@ TEST(Quaternion, OperatorQuaternionMultiply) { * @brief Test for operator* scalar */ TEST(Quaternion, OperatorScalarMultiply) { - math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); + s2e::math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); double scalar = 2.3; - math::Quaternion result = scalar * q; + s2e::math::Quaternion result = scalar * q; const double accuracy = 1.0e-7; EXPECT_NEAR(q[0] * 2.3, result[0], accuracy); diff --git a/src/math_physics/math/test_s2e_math.cpp b/src/math_physics/math/test_s2e_math.cpp index 949751a3b..7a293b967 100644 --- a/src/math_physics/math/test_s2e_math.cpp +++ b/src/math_physics/math/test_s2e_math.cpp @@ -14,18 +14,18 @@ TEST(S2eMath, WrapTo2Pi) { const double accuracy = 1.0e-7; double input_angle_rad = 0.0; - double wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + double wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(0.0, wrapped_angle_rad, accuracy); input_angle_rad = -1.0e-5; - wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); - EXPECT_NEAR(math::tau + input_angle_rad, wrapped_angle_rad, accuracy); + wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); + EXPECT_NEAR(s2e::math::tau + input_angle_rad, wrapped_angle_rad, accuracy); - input_angle_rad = math::tau + 1.0e-5; - wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + input_angle_rad = s2e::math::tau + 1.0e-5; + wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); - input_angle_rad = 10 * math::tau + 1.0e-5; - wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + input_angle_rad = 10 * s2e::math::tau + 1.0e-5; + wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); } diff --git a/src/math_physics/math/test_vector.cpp b/src/math_physics/math/test_vector.cpp index 5f636960d..e920dc0b8 100644 --- a/src/math_physics/math/test_vector.cpp +++ b/src/math_physics/math/test_vector.cpp @@ -13,7 +13,7 @@ TEST(Vector, ConstructorWithNumber) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); + s2e::math::Vector v(initialize_value); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(initialize_value, v[i]); @@ -26,7 +26,7 @@ TEST(Vector, ConstructorWithNumber) { */ TEST(Vector, GetLength) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; EXPECT_EQ(N, v.GetLength()); } @@ -37,8 +37,8 @@ TEST(Vector, GetLength) { TEST(Vector, OperatorPlusEqual) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector adding; + s2e::math::Vector v(initialize_value); + s2e::math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); @@ -60,8 +60,8 @@ TEST(Vector, OperatorPlusEqual) { TEST(Vector, OperatorMinusEqual) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector subtracting; + s2e::math::Vector v(initialize_value); + s2e::math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); @@ -82,7 +82,7 @@ TEST(Vector, OperatorMinusEqual) { */ TEST(Vector, OperatorMultiplyEqual) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; double multiplying = 2.0; for (size_t i = 0; i < N; i++) { @@ -104,7 +104,7 @@ TEST(Vector, OperatorMultiplyEqual) { */ TEST(Vector, OperatorDivideEqual) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; double dividing = 3.0; for (size_t i = 0; i < N; i++) { @@ -126,13 +126,13 @@ TEST(Vector, OperatorDivideEqual) { */ TEST(Vector, OperatorNegative) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); } - math::Vector v_negative = -v; + s2e::math::Vector v_negative = -v; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -147,7 +147,7 @@ TEST(Vector, OperatorNegative) { */ TEST(Vector, FillUp) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); @@ -171,14 +171,14 @@ TEST(Vector, FillUp) { TEST(Vector, OperatorPlus) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector adding; + s2e::math::Vector v(initialize_value); + s2e::math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); } - math::Vector added = v + adding; + s2e::math::Vector added = v + adding; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -195,14 +195,14 @@ TEST(Vector, OperatorPlus) { TEST(Vector, OperatorMinus) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector subtracting; + s2e::math::Vector v(initialize_value); + s2e::math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); } - math::Vector subtracted = v - subtracting; + s2e::math::Vector subtracted = v - subtracting; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -218,8 +218,8 @@ TEST(Vector, OperatorMinus) { */ TEST(Vector, InnerProduct) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; for (size_t i = 0; i < N; i++) { a[i] = double(i + 1); @@ -235,8 +235,8 @@ TEST(Vector, InnerProduct) { */ TEST(Vector, InnerProductZero) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -255,8 +255,8 @@ TEST(Vector, InnerProductZero) { */ TEST(Vector, OuterProductZero) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -266,7 +266,7 @@ TEST(Vector, OuterProductZero) { b[1] = 0.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(0.0, result[i]); @@ -278,8 +278,8 @@ TEST(Vector, OuterProductZero) { */ TEST(Vector, OuterProductX) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -289,7 +289,7 @@ TEST(Vector, OuterProductX) { b[1] = 1.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(-1.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -301,8 +301,8 @@ TEST(Vector, OuterProductX) { */ TEST(Vector, OuterProductY) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -312,7 +312,7 @@ TEST(Vector, OuterProductY) { b[1] = 0.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(1.0, result[1]); @@ -324,8 +324,8 @@ TEST(Vector, OuterProductY) { */ TEST(Vector, OuterProductZ) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -335,7 +335,7 @@ TEST(Vector, OuterProductZ) { b[1] = 1.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -347,7 +347,7 @@ TEST(Vector, OuterProductZ) { */ TEST(Vector, CalcNorm) { const size_t N = 10; - math::Vector v(1.0); + s2e::math::Vector v(1.0); double norm = v.CalcNorm(); @@ -364,9 +364,9 @@ TEST(Vector, CalcNorm) { */ TEST(Vector, Normalize) { const size_t N = 5; - math::Vector v(1.0); + s2e::math::Vector v(1.0); - math::Vector normalized = v.CalcNormalizedVector(); + s2e::math::Vector normalized = v.CalcNormalizedVector(); for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -381,8 +381,8 @@ TEST(Vector, Normalize) { */ TEST(Vector, CalcAngleTwoVectors90deg) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -394,7 +394,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * s2e::math::deg_to_rad, angle_rad); } /** @@ -402,7 +402,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { */ TEST(Vector, CalcAngleTwoVectors0deg) { const size_t N = 3; - math::Vector a; + s2e::math::Vector a; a[0] = 1.0; a[1] = 0.0; @@ -410,7 +410,7 @@ TEST(Vector, CalcAngleTwoVectors0deg) { double angle_rad = CalcAngleTwoVectors_rad(a, a); - EXPECT_DOUBLE_EQ(0.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(0.0 * s2e::math::deg_to_rad, angle_rad); } /** @@ -418,8 +418,8 @@ TEST(Vector, CalcAngleTwoVectors0deg) { */ TEST(Vector, CalcAngleTwoVectors45deg) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 0.0; a[1] = 1.0; @@ -431,7 +431,7 @@ TEST(Vector, CalcAngleTwoVectors45deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(45.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(45.0 * s2e::math::deg_to_rad, angle_rad); } /** @@ -439,11 +439,11 @@ TEST(Vector, CalcAngleTwoVectors45deg) { */ TEST(Vector, GenerateOrthogonalUnitVector) { const size_t N = 3; - math::Vector a(1.0); + s2e::math::Vector a(1.0); - math::Vector b = GenerateOrthogonalUnitVector(a); + s2e::math::Vector b = GenerateOrthogonalUnitVector(a); double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * s2e::math::deg_to_rad, angle_rad); } diff --git a/src/math_physics/math/vector.cpp b/src/math_physics/math/vector.cpp index 88c214ba7..22a74e119 100644 --- a/src/math_physics/math/vector.cpp +++ b/src/math_physics/math/vector.cpp @@ -7,7 +7,7 @@ #include "constants.hpp" -namespace math { +namespace s2e::math { Vector<3, double> ConvertFrameOrthogonal2Polar(const Vector<3, double>& orthogonal) { Vector<3, double> polar; // vector on the polar coordinate polar.FillUp(0.0); @@ -51,4 +51,4 @@ Vector<3, double> GenerateOrthogonalUnitVector(const Vector<3, double>& v) { return (orthogonal_vector); } } -} // namespace math +} // namespace s2e::math diff --git a/src/math_physics/math/vector.hpp b/src/math_physics/math/vector.hpp index 5d290d87f..333c62056 100644 --- a/src/math_physics/math/vector.hpp +++ b/src/math_physics/math/vector.hpp @@ -12,7 +12,7 @@ #define dot InnerProduct #define cross OuterProduct -namespace math { +namespace s2e::math { /** * @class Vector * @brief Class for mathematical vector @@ -237,7 +237,7 @@ Vector<3, double> ConvertFrameOrthogonal2Polar(const Vector<3, double>& orthogon */ Vector<3, double> GenerateOrthogonalUnitVector(const Vector<3, double>& v); -} // namespace math +} // namespace s2e::math #include "vector_template_functions.hpp" diff --git a/src/math_physics/math/vector_template_functions.hpp b/src/math_physics/math/vector_template_functions.hpp index 80e51ce5f..9b9900388 100644 --- a/src/math_physics/math/vector_template_functions.hpp +++ b/src/math_physics/math/vector_template_functions.hpp @@ -8,7 +8,7 @@ #include -namespace math { +namespace s2e::math { template Vector::Vector(const T& n) { @@ -146,6 +146,6 @@ double CalcAngleTwoVectors_rad(const Vector& v1, const Vector { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - math::Vector CalcInterpolationState(const double sigma) const override; + s2e::math::Vector CalcInterpolationState(const double sigma) const override; private: - std::vector> coefficients_; //!< Coefficients to calculate interpolation weights + std::vector> coefficients_; //!< Coefficients to calculate interpolation weights /** * @fn CalcInterpolationWeights * @brief Calculate weights for interpolation diff --git a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp index 40b09a9c1..4190202b4 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp @@ -75,7 +75,7 @@ DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde this->rk_matrix_[6][5] = 11.0 / 84.0; // Interpolation coefficients - math::Vector<5> coefficients_temp; + s2e::math::Vector<5> coefficients_temp; coefficients_temp[0] = 11282082432.0; coefficients_temp[1] = -32272833064.0; coefficients_temp[2] = 34969693132.0; @@ -123,10 +123,10 @@ DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde } template -math::Vector DormandPrince5::CalcInterpolationState(const double sigma) const { +s2e::math::Vector DormandPrince5::CalcInterpolationState(const double sigma) const { std::vector interpolation_weights = CalcInterpolationWeights(sigma); - math::Vector interpolation_state = this->previous_state_; + s2e::math::Vector interpolation_state = this->previous_state_; for (size_t i = 0; i < this->number_of_stages_; i++) { interpolation_state = interpolation_state + (sigma * this->step_width_ * interpolation_weights[i]) * this->slope_[i]; } diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp index ac13a861f..dfed2e7e1 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp @@ -14,15 +14,15 @@ void EmbeddedRungeKutta::Integrate() { this->CalcSlope(); this->previous_state_ = this->current_state_; - math::Vector lower_current_state = this->current_state_; //!< eta in the equation - math::Vector higher_current_state = this->current_state_; //!< eta_hat in the equation + s2e::math::Vector lower_current_state = this->current_state_; //!< eta in the equation + s2e::math::Vector higher_current_state = this->current_state_; //!< eta_hat in the equation for (size_t i = 0; i < this->number_of_stages_; i++) { lower_current_state = lower_current_state + this->weights_[i] * this->step_width_ * this->slope_[i]; higher_current_state = higher_current_state + higher_order_weights_[i] * this->step_width_ * this->slope_[i]; } // Error evaluation - math::Vector truncation_error = lower_current_state - higher_current_state; + s2e::math::Vector truncation_error = lower_current_state - higher_current_state; local_truncation_error_ = truncation_error.CalcNorm(); // State update diff --git a/src/math_physics/numerical_integration/interface_ode.hpp b/src/math_physics/numerical_integration/interface_ode.hpp index 1c30058e9..213598675 100644 --- a/src/math_physics/numerical_integration/interface_ode.hpp +++ b/src/math_physics/numerical_integration/interface_ode.hpp @@ -24,7 +24,7 @@ class InterfaceOde { * @param [in] state: State vector * @return Differentiated value of state vector */ - virtual math::Vector DerivativeFunction(const double independent_variable, const math::Vector& state) const = 0; + virtual s2e::math::Vector DerivativeFunction(const double independent_variable, const s2e::math::Vector& state) const = 0; }; } // namespace numerical_integration diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 5f19d0185..83d78e85a 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -44,7 +44,7 @@ class NumericalIntegrator { * @fn SetState * @brief Set state information */ - inline void SetState(const double independent_variable, const math::Vector& state) { + inline void SetState(const double independent_variable, const s2e::math::Vector& state) { current_independent_variable_ = independent_variable; current_state_ = state; previous_state_ = state; @@ -54,7 +54,7 @@ class NumericalIntegrator { * @fn GetState * @brief Return current state vector */ - inline const math::Vector& GetState() const { return current_state_; } + inline const s2e::math::Vector& GetState() const { return current_state_; } /** * @fn CalcInterpolationState @@ -62,7 +62,7 @@ class NumericalIntegrator { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - virtual math::Vector CalcInterpolationState(const double sigma) const = 0; + virtual s2e::math::Vector CalcInterpolationState(const double sigma) const = 0; protected: // Settings @@ -71,8 +71,8 @@ class NumericalIntegrator { // States const InterfaceOde& ode_; //!< Ordinary differential equation double current_independent_variable_; //!< Latest value of independent variable - math::Vector current_state_; //!< Latest state vector - math::Vector previous_state_; //!< Previous state vector + s2e::math::Vector current_state_; //!< Latest state vector + s2e::math::Vector previous_state_; //!< Previous state vector }; } // namespace numerical_integration diff --git a/src/math_physics/numerical_integration/ode_examples.hpp b/src/math_physics/numerical_integration/ode_examples.hpp index b0c9085b5..e6f7e3616 100644 --- a/src/math_physics/numerical_integration/ode_examples.hpp +++ b/src/math_physics/numerical_integration/ode_examples.hpp @@ -13,11 +13,11 @@ namespace numerical_integration { class ExampleLinearOde : public InterfaceOde<1> { public: - math::Vector<1> DerivativeFunction(const double time_s, const math::Vector<1>& state) const { + s2e::math::Vector<1> DerivativeFunction(const double time_s, const s2e::math::Vector<1>& state) const { UNUSED(time_s); UNUSED(state); - math::Vector<1> output(1.0); + s2e::math::Vector<1> output(1.0); return output; } }; @@ -35,11 +35,11 @@ class ExampleQuadraticOde : public InterfaceOde<1> { * @param [in] state: State vector * @return Differentiated value of state vector */ - virtual math::Vector<1> DerivativeFunction(const double time_s, const math::Vector<1>& state) const { + virtual s2e::math::Vector<1> DerivativeFunction(const double time_s, const s2e::math::Vector<1>& state) const { UNUSED(time_s); UNUSED(state); - math::Vector<1> output(0.0); + s2e::math::Vector<1> output(0.0); output[0] = 2.0 * time_s; return output; } @@ -51,10 +51,10 @@ class ExampleQuadraticOde : public InterfaceOde<1> { */ class Example1dPositionVelocityOde : public InterfaceOde<2> { public: - virtual math::Vector<2> DerivativeFunction(const double time_s, const math::Vector<2>& state) const { + virtual s2e::math::Vector<2> DerivativeFunction(const double time_s, const s2e::math::Vector<2>& state) const { UNUSED(time_s); - math::Vector<2> output(0.0); + s2e::math::Vector<2> output(0.0); output[0] = state[1]; output[1] = 0.0; return output; @@ -67,10 +67,10 @@ class Example1dPositionVelocityOde : public InterfaceOde<2> { */ class Example2dTwoBodyOrbitOde : public InterfaceOde<4> { public: - virtual math::Vector<4> DerivativeFunction(const double time_s, const math::Vector<4>& state) const { + virtual s2e::math::Vector<4> DerivativeFunction(const double time_s, const s2e::math::Vector<4>& state) const { UNUSED(time_s); - math::Vector<4> output(0.0); + s2e::math::Vector<4> output(0.0); output[0] = state[2]; output[1] = state[3]; double denominator = pow(state[0] * state[0] + state[1] * state[1], 3.0 / 2.0); diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index 18730c667..333d3cc4a 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -46,7 +46,7 @@ class RungeKutta : public NumericalIntegrator { std::vector nodes_; //!< Nodes vector for general RK (c vector in the equation) std::vector weights_; //!< Weights vector for general RK (b vector in the equation) std::vector> rk_matrix_; //!< Runge-Kutta matrix for general RK (a matrix in the equation) - std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) + std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) /** * @fn CalcSlope diff --git a/src/math_physics/numerical_integration/runge_kutta_4.hpp b/src/math_physics/numerical_integration/runge_kutta_4.hpp index b2f267d58..47fc6b6b5 100644 --- a/src/math_physics/numerical_integration/runge_kutta_4.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_4.hpp @@ -45,7 +45,7 @@ class RungeKutta4 : public RungeKutta { } // We did not implement the interpolation for RK4 - math::Vector CalcInterpolationState(const double sigma) const override { + s2e::math::Vector CalcInterpolationState(const double sigma) const override { UNUSED(sigma); return this->current_state_; } diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp index 3056241ac..16974368f 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp @@ -29,7 +29,7 @@ class RungeKuttaFehlberg : public EmbeddedRungeKutta { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - math::Vector CalcInterpolationState(const double sigma) const override; + s2e::math::Vector CalcInterpolationState(const double sigma) const override; private: /** diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp index d5ef9f7c0..04d5f8027 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp @@ -64,15 +64,15 @@ RungeKuttaFehlberg::RungeKuttaFehlberg(const double step_width, const Interfa } template -math::Vector RungeKuttaFehlberg::CalcInterpolationState(const double sigma) const { +s2e::math::Vector RungeKuttaFehlberg::CalcInterpolationState(const double sigma) const { // Calc k7 (slope after state update) - math::Vector state_7 = + s2e::math::Vector state_7 = this->previous_state_ + this->step_width_ * (1.0 / 6.0 * this->slope_[0] + 1.0 / 6.0 * this->slope_[4] + 2.0 / 3.0 * this->slope_[5]); - math::Vector k7 = this->ode_.DerivativeFunction(this->current_independent_variable_, state_7); + s2e::math::Vector k7 = this->ode_.DerivativeFunction(this->current_independent_variable_, state_7); std::vector interpolation_weights = CalcInterpolationWeights(sigma); - math::Vector interpolation_state = this->previous_state_; + s2e::math::Vector interpolation_state = this->previous_state_; for (size_t i = 0; i < this->number_of_stages_; i++) { interpolation_state = interpolation_state + (sigma * this->step_width_ * interpolation_weights[i]) * this->slope_[i]; } diff --git a/src/math_physics/numerical_integration/runge_kutta_template.hpp b/src/math_physics/numerical_integration/runge_kutta_template.hpp index 99bab650c..577b24639 100644 --- a/src/math_physics/numerical_integration/runge_kutta_template.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_template.hpp @@ -22,10 +22,10 @@ void RungeKutta::Integrate() { template void RungeKutta::CalcSlope() { - slope_.assign(number_of_stages_, math::Vector(0.0)); + slope_.assign(number_of_stages_, s2e::math::Vector(0.0)); for (size_t i = 0; i < number_of_stages_; i++) { - math::Vector state = this->current_state_; + s2e::math::Vector state = this->current_state_; for (size_t j = 0; j < i; j++) { state = state + rk_matrix_[i][j] * this->step_width_ * slope_[j]; } diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index 376406850..d6ab81d28 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -18,7 +18,7 @@ TEST(NUMERICAL_INTEGRATION, Constructor) { numerical_integration::ExampleLinearOde ode; numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); - math::Vector<1> state = linear_ode.GetState(); + s2e::math::Vector<1> state = linear_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); } @@ -30,7 +30,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { numerical_integration::ExampleLinearOde ode; numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - math::Vector<1> state = rk4_ode.GetState(); + s2e::math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -51,7 +51,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { numerical_integration::ExampleLinearOde ode; numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - math::Vector<1> state = rkf_ode.GetState(); + s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -72,7 +72,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { numerical_integration::ExampleLinearOde ode; numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - math::Vector<1> state = dp5_ode.GetState(); + s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -93,7 +93,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { numerical_integration::ExampleLinearOde ode; numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); - math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -115,7 +115,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, numerical_integration::NumericalIntegrationMethod::kRkf); - math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -141,7 +141,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, numerical_integration::NumericalIntegrationMethod::kDp5); - math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -166,7 +166,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { numerical_integration::ExampleQuadraticOde ode; numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - math::Vector<1> state = rk4_ode.GetState(); + s2e::math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -187,7 +187,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { numerical_integration::ExampleQuadraticOde ode; numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - math::Vector<1> state = rkf_ode.GetState(); + s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -208,7 +208,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { numerical_integration::ExampleQuadraticOde ode; numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - math::Vector<1> state = rkf_ode.GetState(); + s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); rkf_ode.Integrate(); @@ -237,7 +237,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { numerical_integration::ExampleQuadraticOde ode; numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - math::Vector<1> state = dp5_ode.GetState(); + s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -258,7 +258,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { numerical_integration::ExampleQuadraticOde ode; numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - math::Vector<1> state = dp5_ode.GetState(); + s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); dp5_ode.Integrate(); @@ -287,12 +287,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { numerical_integration::Example1dPositionVelocityOde ode; numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); - math::Vector<2> initial_state(0.0); + s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rk4_ode.SetState(0.0, initial_state); - math::Vector<2> state = rk4_ode.GetState(); + s2e::math::Vector<2> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -301,7 +301,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { rk4_ode.Integrate(); } state = rk4_ode.GetState(); - math::Vector<2> estimated_result(0.0); + s2e::math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -317,12 +317,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { numerical_integration::Example1dPositionVelocityOde ode; numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); - math::Vector<2> initial_state(0.0); + s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rkf_ode.SetState(0.0, initial_state); - math::Vector<2> state = rkf_ode.GetState(); + s2e::math::Vector<2> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -331,7 +331,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { rkf_ode.Integrate(); } state = rkf_ode.GetState(); - math::Vector<2> estimated_result(0.0); + s2e::math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -347,12 +347,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { numerical_integration::Example1dPositionVelocityOde ode; numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); - math::Vector<2> initial_state(0.0); + s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; dp5_ode.SetState(0.0, initial_state); - math::Vector<2> state = dp5_ode.GetState(); + s2e::math::Vector<2> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -361,7 +361,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { dp5_ode.Integrate(); } state = dp5_ode.GetState(); - math::Vector<2> estimated_result(0.0); + s2e::math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -379,7 +379,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -389,9 +389,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rk4 = rk4_ode.GetState(); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rk4 = rk4_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -409,8 +409,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -449,7 +449,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.9; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -459,9 +459,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rk4 = rk4_ode.GetState(); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rk4 = rk4_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -479,8 +479,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -518,7 +518,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -527,8 +527,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -543,8 +543,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; @@ -613,7 +613,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.8; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -622,8 +622,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -638,8 +638,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index 86995e7e2..3b558612d 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -30,19 +30,19 @@ void GaussianBeamBase::SetTotalPower_W(const double total_power_W) { total_power_W_ = total_power_W; } -void GaussianBeamBase::SetPointingVector_i(const math::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } +void GaussianBeamBase::SetPointingVector_i(const s2e::math::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } -void GaussianBeamBase::SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m) { position_beam_waist_i_m_ = position_beam_waist_i_m; } +void GaussianBeamBase::SetBeamWaistPosition_i_m(const s2e::math::Vector<3> position_beam_waist_i_m) { position_beam_waist_i_m_ = position_beam_waist_i_m; } double GaussianBeamBase::CalcBeamWidthRadius_m(double distance_from_beam_waist_m) { - double rayleigh_length_m = math::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; + double rayleigh_length_m = s2e::math::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; double beam_width_radius_m = radius_beam_waist_m_ * sqrt(1.0 + std::pow((distance_from_beam_waist_m / rayleigh_length_m), 2.0)); return beam_width_radius_m; } double GaussianBeamBase::CalcIntensity_W_m2(double distance_from_beam_waist_m, double deviation_from_optical_axis_m) { double beam_width_radius_m = CalcBeamWidthRadius_m(distance_from_beam_waist_m); - double peak_intensity_W_m2 = (2.0 * total_power_W_) / (math::pi * beam_width_radius_m * beam_width_radius_m); + double peak_intensity_W_m2 = (2.0 * total_power_W_) / (s2e::math::pi * beam_width_radius_m * beam_width_radius_m); double gaussian_dist = std::exp((-2.0 * deviation_from_optical_axis_m * deviation_from_optical_axis_m) / (beam_width_radius_m * beam_width_radius_m)); double intensity_W_m2 = peak_intensity_W_m2 * gaussian_dist; diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index 6f40fa8a2..010d4bb31 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -50,12 +50,12 @@ class GaussianBeamBase { * @fn SetPointingVector_i * @brief Set pointing direction vector in the inertial frame */ - void SetPointingVector_i(const math::Vector<3> pointing_vector_i); + void SetPointingVector_i(const s2e::math::Vector<3> pointing_vector_i); /** * @fn SetBeamWaistPosition_i_m * @brief Set position of beam waist in the inertial frame [m] (Not used?) */ - void SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m); + void SetBeamWaistPosition_i_m(const s2e::math::Vector<3> position_beam_waist_i_m); // Getter /** @@ -77,12 +77,12 @@ class GaussianBeamBase { * @fn GetPointingVector_i * @brief Return pointing direction vector in the inertial frame */ - inline const math::Vector<3> GetPointingVector_i() const { return pointing_vector_i_; } + inline const s2e::math::Vector<3> GetPointingVector_i() const { return pointing_vector_i_; } /** * @fn GetBeamWaistPosition_i_m * @brief Return position of beam waist in the inertial frame [m] (Not used?) */ - inline const math::Vector<3> GetBeamWaistPosition_i_m() const { return position_beam_waist_i_m_; } + inline const s2e::math::Vector<3> GetBeamWaistPosition_i_m() const { return position_beam_waist_i_m_; } // Calculate functions /** @@ -105,8 +105,8 @@ class GaussianBeamBase { double wavelength_m_; //!< Wavelength [m] double radius_beam_waist_m_; //!< Radius of beam waist [m] double total_power_W_; //!< Total power [W] - math::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame - math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) + s2e::math::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame + s2e::math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; } // namespace optics diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index 33d2843a5..393b30166 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -12,13 +12,13 @@ InterpolationOrbit::InterpolationOrbit(const size_t degree) { time.assign(degree, -1.0); std::vector position; position.assign(degree, 0.0); - math::Interpolation temp(time, position); + s2e::math::Interpolation temp(time, position); for (size_t axis = 0; axis < 3; axis++) { interpolation_position_.push_back(temp); } } -bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position) { +bool InterpolationOrbit::PushAndPopData(const double time, const s2e::math::Vector<3> position) { bool result; for (size_t axis = 0; axis < 3; axis++) { result = interpolation_position_[axis].PushAndPopData(time, position[axis]); @@ -29,8 +29,8 @@ bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> return true; } -math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { - math::Vector<3> output_position; +s2e::math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { + s2e::math::Vector<3> output_position; for (size_t axis = 0; axis < 3; axis++) { output_position[axis] = interpolation_position_[axis].CalcTrigonometric(time, period); } diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index cf83660ab..db215f534 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -32,7 +32,7 @@ class InterpolationOrbit { * @param [in] time: time of the new data * @param [in] position: Satellite position of the new data */ - bool PushAndPopData(const double time, const math::Vector<3> position); + bool PushAndPopData(const double time, const s2e::math::Vector<3> position); /** * @fn CalcPositionWithTrigonometric @@ -41,7 +41,7 @@ class InterpolationOrbit { * @param [in] period: Characteristic period * @return Calculated position */ - math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; + s2e::math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; // Getters /** @@ -68,7 +68,7 @@ class InterpolationOrbit { } private: - std::vector interpolation_position_; // 3D vector of interpolation + std::vector interpolation_position_; // 3D vector of interpolation }; } // namespace orbit diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index 2b3878703..389cc96ab 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -24,10 +24,10 @@ void KeplerOrbit::CalcConstKeplerMotion() { mean_motion_rad_s_ = sqrt(gravity_constant_m3_s2_ / a_m3); // DCM - math::Matrix<3, 3> dcm_arg_perigee = math::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); - math::Matrix<3, 3> dcm_inclination = math::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); - math::Matrix<3, 3> dcm_raan = math::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); - math::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; + s2e::math::Matrix<3, 3> dcm_arg_perigee = s2e::math::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); + s2e::math::Matrix<3, 3> dcm_inclination = s2e::math::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); + s2e::math::Matrix<3, 3> dcm_raan = s2e::math::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); + s2e::math::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; dcm_inplane_to_i_ = dcm_raan * dcm_inc_arg; } @@ -39,12 +39,12 @@ void KeplerOrbit::CalcOrbit(double time_jday) { double dt_s = (time_jday - oe_.GetEpoch_jday()) * (24.0 * 60.0 * 60.0); double mean_anomaly_rad = mean_motion_rad_s_ * dt_s; - double l_rad = math::WrapTo2Pi(mean_anomaly_rad); + double l_rad = s2e::math::WrapTo2Pi(mean_anomaly_rad); // Solve Kepler Equation double eccentric_anomaly_rad; eccentric_anomaly_rad = SolveKeplerNewtonMethod(e, l_rad, 1.0e-5, 10); - double u_rad = math::WrapTo2Pi(eccentric_anomaly_rad); + double u_rad = s2e::math::WrapTo2Pi(eccentric_anomaly_rad); // Calc position and velocity in the plane double cos_u = cos(u_rad); @@ -52,12 +52,12 @@ void KeplerOrbit::CalcOrbit(double time_jday) { double a_sqrt_e_m = a_m * sqrt(1.0 - e * e); double e_cos_u = 1.0 - e * cos_u; - math::Vector<3> pos_inplane_m; + s2e::math::Vector<3> pos_inplane_m; pos_inplane_m[0] = a_m * (cos_u - e); pos_inplane_m[1] = a_sqrt_e_m * sin_u; pos_inplane_m[2] = 0.0; - math::Vector<3> vel_inplane_m_s; + s2e::math::Vector<3> vel_inplane_m_s; vel_inplane_m_s[0] = -1.0 * a_m * n_rad_s * sin_u / e_cos_u; vel_inplane_m_s[1] = n_rad_s * a_sqrt_e_m * cos_u / e_cos_u; vel_inplane_m_s[2] = 0.0; diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index fec55f130..b76f15cac 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -47,22 +47,22 @@ class KeplerOrbit { * @fn GetPosition_i_m * @brief Return position vector in the inertial frame [m] */ - inline const math::Vector<3> GetPosition_i_m() const { return position_i_m_; } + inline const s2e::math::Vector<3> GetPosition_i_m() const { return position_i_m_; } /** * @fn GetVelocity_i_m_s * @brief Return velocity vector in the inertial frame [m/s] */ - inline const math::Vector<3> GetVelocity_i_m_s() const { return velocity_i_m_s_; } + inline const s2e::math::Vector<3> GetVelocity_i_m_s() const { return velocity_i_m_s_; } protected: - math::Vector<3> position_i_m_; //!< Position vector in the inertial frame [m] - math::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] + s2e::math::Vector<3> position_i_m_; //!< Position vector in the inertial frame [m] + s2e::math::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] private: double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] OrbitalElements oe_; //!< Orbital elements double mean_motion_rad_s_; //!< Mean motion of the orbit [rad/s] - math::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame + s2e::math::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame /** * @fn CalcConstKeplerMotion diff --git a/src/math_physics/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp index 3fd2920b7..4c02fac73 100644 --- a/src/math_physics/orbit/orbital_elements.cpp +++ b/src/math_physics/orbit/orbital_elements.cpp @@ -24,20 +24,20 @@ OrbitalElements::OrbitalElements(const double epoch_jday, const double semi_majo epoch_jday_(epoch_jday) {} // initialize with position and velocity -OrbitalElements::OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, - const math::Vector<3> velocity_i_m_s) { +OrbitalElements::OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, + const s2e::math::Vector<3> velocity_i_m_s) { CalcOeFromPosVel(gravity_constant_m3_s2, time_jday, position_i_m, velocity_i_m_s); } OrbitalElements::~OrbitalElements() {} // Private Function -void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, - const math::Vector<3> velocity_i_m_s) { +void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, + const s2e::math::Vector<3> velocity_i_m_s) { // common variables double r_m = position_i_m.CalcNorm(); double v2_m2_s2 = InnerProduct(velocity_i_m_s, velocity_i_m_s); - math::Vector<3> h; //!< angular momentum vector + s2e::math::Vector<3> h; //!< angular momentum vector h = OuterProduct(position_i_m, velocity_i_m_s); double h_norm = h.CalcNorm(); @@ -45,7 +45,7 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons semi_major_axis_m_ = gravity_constant_m3_s2 / (2.0 * gravity_constant_m3_s2 / r_m - v2_m2_s2); // inclination - math::Vector<3> h_direction = h.CalcNormalizedVector(); + s2e::math::Vector<3> h_direction = h.CalcNormalizedVector(); inclination_rad_ = acos(h_direction[2]); // RAAN @@ -77,10 +77,10 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons // true anomaly f_rad and eccentric anomaly u_rad double phi_rad = atan2(y_p_m, x_p_m); double f_rad = phi_rad - arg_perigee_rad_; - f_rad = math::WrapTo2Pi(f_rad); + f_rad = s2e::math::WrapTo2Pi(f_rad); double u_rad = atan2(r_m * sin(f_rad) / sqrt(1.0 - eccentricity_ * eccentricity_), r_m * cos(f_rad) + semi_major_axis_m_ * eccentricity_); - u_rad = math::WrapTo2Pi(u_rad); + u_rad = s2e::math::WrapTo2Pi(u_rad); // epoch t0 double n_rad_s = sqrt(gravity_constant_m3_s2 / pow(semi_major_axis_m_, 3.0)); diff --git a/src/math_physics/orbit/orbital_elements.hpp b/src/math_physics/orbit/orbital_elements.hpp index 27424653e..66ccf0c05 100644 --- a/src/math_physics/orbit/orbital_elements.hpp +++ b/src/math_physics/orbit/orbital_elements.hpp @@ -41,8 +41,8 @@ class OrbitalElements { * @param[in] position_i_m: Position vector in the inertial frame [m] * @param[in] velocity_i_m_s: Velocity vector in the inertial frame [m/s] */ - OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, - const math::Vector<3> velocity_i_m_s); + OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, + const s2e::math::Vector<3> velocity_i_m_s); /** * @fn ~OrbitalElements * @brief Destructor @@ -102,8 +102,8 @@ class OrbitalElements { * @param[in] position_i_m: Position vector in the inertial frame [m] * @param[in] velocity_i_m_s: Velocity vector in the inertial frame [m/s] */ - void CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, - const math::Vector<3> velocity_i_m_s); + void CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, + const s2e::math::Vector<3> velocity_i_m_s); }; } // namespace orbit diff --git a/src/math_physics/orbit/relative_orbit_models.cpp b/src/math_physics/orbit/relative_orbit_models.cpp index a291e4633..b8d619734 100644 --- a/src/math_physics/orbit/relative_orbit_models.cpp +++ b/src/math_physics/orbit/relative_orbit_models.cpp @@ -6,8 +6,8 @@ namespace orbit { -math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { - math::Matrix<6, 6> system_matrix; +s2e::math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { + s2e::math::Matrix<6, 6> system_matrix; double n = sqrt(gravity_constant_m3_s2 / pow(orbit_radius_m, 3)); system_matrix[0][0] = 0.0; @@ -50,8 +50,8 @@ math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_co return system_matrix; } -math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_s2, double elapsed_time_s) { - math::Matrix<6, 6> stm; +s2e::math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_s2, double elapsed_time_s) { + s2e::math::Matrix<6, 6> stm; double n = sqrt(gravity_constant_m3_s2 / pow(orbit_radius_m, 3)); double t = elapsed_time_s; diff --git a/src/math_physics/orbit/relative_orbit_models.hpp b/src/math_physics/orbit/relative_orbit_models.hpp index 881d73bfb..62957b28c 100644 --- a/src/math_physics/orbit/relative_orbit_models.hpp +++ b/src/math_physics/orbit/relative_orbit_models.hpp @@ -31,7 +31,7 @@ enum class StmModel { kHcw = 0 }; * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @return System matrix */ -math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const double gravity_constant_m3_s2); +s2e::math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const double gravity_constant_m3_s2); // STMs /** @@ -42,7 +42,7 @@ math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const doubl * @param [in] elapsed_time_s: Elapsed time [s] * @return State Transition Matrix */ -math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); +s2e::math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); } // namespace orbit diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index d7fe51c67..b0972817d 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -33,7 +33,7 @@ TEST(InterpolationOrbit, PushAndPop) { EXPECT_EQ(degree, interpolation_orbit.GetDegree()); for (size_t i = 0; i < degree; i++) { double time = (double)i; - math::Vector<3> position{i * 2.0}; + s2e::math::Vector<3> position{i * 2.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_TRUE(ret); } @@ -46,7 +46,7 @@ TEST(InterpolationOrbit, PushAndPop) { // False test double time = 2.0; - math::Vector<3> position{-100.0}; + s2e::math::Vector<3> position{-100.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_FALSE(ret); } diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index cd6dc020a..0842aa301 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -12,22 +12,22 @@ namespace planet_rotation { -math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { - math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); - math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); +s2e::math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s) { + s2e::math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); + s2e::math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); return dcm_me2pa * dcm_eci2me; } -math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { - math::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); +s2e::math::Matrix<3, 3> CalcDcmEciToMeanEarth(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s) { + s2e::math::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); - math::Vector<3> moon_orbit_norm = math::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); - math::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); + s2e::math::Vector<3> moon_orbit_norm = s2e::math::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); + s2e::math::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); - math::Vector<3> me_ey_eci = math::OuterProduct(me_ez_eci, me_ex_eci); + s2e::math::Vector<3> me_ey_eci = s2e::math::OuterProduct(me_ez_eci, me_ex_eci); - math::Matrix<3, 3> dcm_eci_to_me; + s2e::math::Matrix<3, 3> dcm_eci_to_me; for (size_t i = 0; i < 3; i++) { dcm_eci_to_me[0][i] = me_ex_eci[i]; dcm_eci_to_me[1][i] = me_ey_eci[i]; @@ -37,14 +37,14 @@ math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci return dcm_eci_to_me; } -math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { +s2e::math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { // The correction values between DE430 Principal Axis and Mean Earth frame - const double theta_x_rad = 0.285 * math::arcsec_to_rad; - const double theta_y_rad = 78.580 * math::arcsec_to_rad; - const double theta_z_rad = 67.573 * math::arcsec_to_rad; + const double theta_x_rad = 0.285 * s2e::math::arcsec_to_rad; + const double theta_y_rad = 78.580 * s2e::math::arcsec_to_rad; + const double theta_z_rad = 67.573 * s2e::math::arcsec_to_rad; - math::Matrix<3, 3> dcm_me_pa = - math::MakeRotationMatrixZ(theta_z_rad) * math::MakeRotationMatrixY(theta_y_rad) * math::MakeRotationMatrixX(theta_x_rad); + s2e::math::Matrix<3, 3> dcm_me_pa = + s2e::math::MakeRotationMatrixZ(theta_z_rad) * s2e::math::MakeRotationMatrixY(theta_y_rad) * s2e::math::MakeRotationMatrixX(theta_x_rad); return dcm_me_pa; } diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index 9ce97f876..cd3c8b442 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -20,7 +20,7 @@ namespace planet_rotation { * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s); +s2e::math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmEciToMeanEarth @@ -28,13 +28,13 @@ math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s); +s2e::math::Matrix<3, 3> CalcDcmEciToMeanEarth(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmMeToPrincipalAxis * @brief Calculate DCM from ME (Mean Earth) moon fixed frame to PA (Principal Axis) moon fixed frame */ -math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); +s2e::math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); } // namespace planet_rotation diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index ecd269001..822d621aa 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -15,7 +15,7 @@ * @brief Class to calculate random wark value */ template -class RandomWalk : public math::OrdinaryDifferentialEquation { +class RandomWalk : public s2e::math::OrdinaryDifferentialEquation { public: /** * @fn RandomWalk @@ -24,7 +24,7 @@ class RandomWalk : public math::OrdinaryDifferentialEquation { * @param standard_deviation: Standard deviation of random walk excitation noise * @param limit: Limit of random walk */ - RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit); + RandomWalk(double step_width_s, const s2e::math::Vector& standard_deviation, const s2e::math::Vector& limit); /** * @fn DerivativeFunction @@ -33,10 +33,10 @@ class RandomWalk : public math::OrdinaryDifferentialEquation { * @param [in] state: State vector * @param [out] rhs: Differentiated value of state vector */ - virtual void DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs); + virtual void DerivativeFunction(double x, const s2e::math::Vector& state, s2e::math::Vector& rhs); private: - math::Vector limit_; //!< Limit of random walk + s2e::math::Vector limit_; //!< Limit of random walk randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index c316a3aab..ee224018c 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -10,8 +10,8 @@ #include template -RandomWalk::RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit) - : math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { +RandomWalk::RandomWalk(double step_width_s, const s2e::math::Vector& standard_deviation, const s2e::math::Vector& limit) + : s2e::math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { // Set standard deviation for (size_t i = 0; i < N; ++i) { normal_randomizer_[i].SetParameters(0.0, standard_deviation[i], global_randomization.MakeSeed()); @@ -19,7 +19,7 @@ RandomWalk::RandomWalk(double step_width_s, const math::Vector& standard_d } template -void RandomWalk::DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs) { +void RandomWalk::DerivativeFunction(double x, const s2e::math::Vector& state, s2e::math::Vector& rhs) { UNUSED(x); // TODO: consider the x is really need for this function for (size_t i = 0; i < N; ++i) { diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index e25f89583..565a66f98 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -118,8 +118,8 @@ std::vector IniAccess::ReadVectorDouble(const char* section_name, const return data; } -void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, math::Quaternion& data) { - math::Quaternion temp; +void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, s2e::math::Quaternion& data) { + s2e::math::Quaternion temp; double norm = 0.0; for (int i = 0; i < 4; i++) { // Read Quaternion as new format diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index df49969ce..06bbc2866 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -110,7 +110,7 @@ class IniAccess { * @param[out] data: Read vector type data */ template - void ReadVector(const char* section_name, const char* key_name, math::Vector& data); + void ReadVector(const char* section_name, const char* key_name, s2e::math::Vector& data); /** * @fn ReadStrVector * @brief Read list of string type @@ -126,7 +126,7 @@ class IniAccess { * @param[in] key_name: Key name * @param[out] data: Read quaternion data */ - void ReadQuaternion(const char* section_name, const char* key_name, math::Quaternion& data); + void ReadQuaternion(const char* section_name, const char* key_name, s2e::math::Quaternion& data); /** * @fn ReadChar * @brief Read characters data @@ -208,7 +208,7 @@ class IniAccess { }; template -void IniAccess::ReadVector(const char* section_name, const char* key_name, math::Vector& data) { +void IniAccess::ReadVector(const char* section_name, const char* key_name, s2e::math::Vector& data) { for (size_t i = 0; i < NumElement; i++) { std::stringstream c_name; c_name << key_name << "(" << i << ")"; diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 2f9483f2c..b1486b633 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -35,7 +35,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con double latitude_deg = conf.ReadDouble(Section, "latitude_deg"); double longitude_deg = conf.ReadDouble(Section, "longitude_deg"); double height_m = conf.ReadDouble(Section, "height_m"); - geodetic_position_ = geodesy::GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); + geodetic_position_ = geodesy::GeodeticPosition(latitude_deg * s2e::math::deg_to_rad, longitude_deg * s2e::math::deg_to_rad, height_m); position_ecef_m_ = geodetic_position_.CalcEcefPosition(); elevation_limit_angle_deg_ = conf.ReadDouble(Section, "elevation_limit_angle_deg"); @@ -46,23 +46,23 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con void GroundStation::LogSetup(Logger& logger) { logger.AddLogList(this); } void GroundStation::Update(const EarthRotation& celestial_rotation, const Spacecraft& spacecraft) { - math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); + s2e::math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); position_i_m_ = dcm_ecef2eci * position_ecef_m_; is_visible_[spacecraft.GetSpacecraftId()] = CalcIsVisible(spacecraft.GetDynamics().GetOrbit().GetPosition_ecef_m()); } -bool GroundStation::CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m) { - math::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); +bool GroundStation::CalcIsVisible(const s2e::math::Vector<3> spacecraft_position_ecef_m) { + s2e::math::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); - math::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] + s2e::math::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] sc_pos_ltc = sc_pos_ltc.CalcNormalizedVector(); - math::Vector<3> dir_gs_to_zenith = math::Vector<3>(0); + s2e::math::Vector<3> dir_gs_to_zenith = s2e::math::Vector<3>(0); dir_gs_to_zenith[2] = 1; // Judge the satellite position angle is over the minimum elevation - if (dot(sc_pos_ltc, dir_gs_to_zenith) > sin(elevation_limit_angle_deg_ * math::deg_to_rad)) { + if (dot(sc_pos_ltc, dir_gs_to_zenith) > sin(elevation_limit_angle_deg_ * s2e::math::deg_to_rad)) { return true; } else { return false; diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index 44d6c211a..8ffaa5ad7 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -46,7 +46,7 @@ void InitializedMonteCarloParameters::GetRandomizedScalar(double& destination) c } } -void InitializedMonteCarloParameters::GetRandomizedQuaternion(math::Quaternion& destination) const { +void InitializedMonteCarloParameters::GetRandomizedQuaternion(s2e::math::Quaternion& destination) const { if (randomization_type_ == kNoRandomization) { ; } else if (4 > randomized_value_.size()) { @@ -120,7 +120,7 @@ void InitializedMonteCarloParameters::GenerateCartesianNormal() { } } -void InitializedMonteCarloParameters::CalcCircularNormalUniform(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, +void InitializedMonteCarloParameters::CalcCircularNormalUniform(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max) { // r follows normal distribution, and θ follows uniform distribution in Circular frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -134,7 +134,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalUniform() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - math::Vector temp_vec; + s2e::math::Vector temp_vec; CalcCircularNormalUniform(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1]); randomized_value_.clear(); @@ -143,7 +143,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalUniform() { } } -void InitializedMonteCarloParameters::CalcCircularNormalNormal(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, +void InitializedMonteCarloParameters::CalcCircularNormalNormal(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma) { // r and θ follow normal distribution in Circular frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -157,7 +157,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - math::Vector temp_vec; + s2e::math::Vector temp_vec; CalcCircularNormalNormal(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1]); randomized_value_.clear(); @@ -166,7 +166,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, +void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(s2e::math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, double phi_min, double phi_max) { // r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -182,7 +182,7 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalUniformUniform() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - math::Vector temp_vec; + s2e::math::Vector temp_vec; CalcSphericalNormalUniformUniform(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1], mean_or_min_[2], sigma_or_max_[2]); @@ -192,29 +192,29 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalUniformUniform() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalNormal(math::Vector<3>& destination, const math::Vector<3>& mean_vec) { +void InitializedMonteCarloParameters::CalcSphericalNormalNormal(s2e::math::Vector<3>& destination, const s2e::math::Vector<3>& mean_vec) { // r and θ follow normal distribution, and mean vector angle φ follows uniform distribution [0,2*pi] - math::Vector<3> mean_vec_dir; + s2e::math::Vector<3> mean_vec_dir; mean_vec_dir = 1.0 / mean_vec.CalcNorm() * mean_vec; // Unit vector of mean vector direction - math::Vector<3> x_axis(0.0), y_axis(0.0); + s2e::math::Vector<3> x_axis(0.0), y_axis(0.0); x_axis[0] = 1.0; y_axis[1] = 1.0; - math::Vector<3> op_x = OuterProduct(mean_vec_dir, x_axis); - math::Vector<3> op_y = OuterProduct(mean_vec_dir, y_axis); + s2e::math::Vector<3> op_x = OuterProduct(mean_vec_dir, x_axis); + s2e::math::Vector<3> op_y = OuterProduct(mean_vec_dir, y_axis); // An unit vector perpendicular with the mean vector // In case of the mean vector is parallel with X or Y axis, selecting the axis depend on the norm of outer product - math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); + s2e::math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); - double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); - math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, + double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, s2e::math::tau); + s2e::math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) - math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation + s2e::math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation double rotation_angle_of_mean_vec = InitializedMonteCarloParameters::Generate1dNormal(0.0, sigma_or_max_[1]); - math::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) - math::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction + s2e::math::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) + s2e::math::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction ret_vec = InitializedMonteCarloParameters::Generate1dNormal(mean_vec.CalcNorm(), sigma_or_max_[0]) * ret_vec; // multiply norm @@ -228,7 +228,7 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < 2) { throw "Config parameters dimension unmatched."; } - math::Vector temp_vec, temp_mean_vec; + s2e::math::Vector temp_vec, temp_mean_vec; for (int i = 0; i < dim; i++) { temp_mean_vec[i] = mean_or_min_[i]; } @@ -240,32 +240,32 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { } } -void InitializedMonteCarloParameters::CalcQuaternionUniform(math::Quaternion& destination) { - // Perfectly Randomized math::Quaternion - math::Vector<3> x_axis(0.0); +void InitializedMonteCarloParameters::CalcQuaternionUniform(s2e::math::Quaternion& destination) { + // Perfectly Randomized s2e::math::Quaternion + s2e::math::Vector<3> x_axis(0.0); x_axis[0] = 1.0; // A direction vector converted from the X-axis by a quaternion may follows the uniform distribution in full sphere. - math::Quaternion first_cnv; - math::Vector<3> x_axis_cnvd; + s2e::math::Quaternion first_cnv; + s2e::math::Vector<3> x_axis_cnvd; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); - double phi = InitializedMonteCarloParameters::Generate1dUniform(0, math::tau); + double phi = InitializedMonteCarloParameters::Generate1dUniform(0, s2e::math::tau); x_axis_cnvd[0] = sin(theta) * cos(phi); x_axis_cnvd[1] = sin(theta) * sin(phi); x_axis_cnvd[2] = cos(theta); double cos_angle_between = InnerProduct(x_axis, x_axis_cnvd); - math::Vector<3> op = OuterProduct(x_axis, x_axis_cnvd); + s2e::math::Vector<3> op = OuterProduct(x_axis, x_axis_cnvd); for (int i = 0; i < 3; i++) { first_cnv[i] = op[i]; } first_cnv[3] = cos_angle_between; // Generate randomized rotation angle around the X-axis - double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); - math::Quaternion second_cnv(x_axis, rotation_angle); + double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, s2e::math::tau); + s2e::math::Quaternion second_cnv(x_axis, rotation_angle); - math::Quaternion ret_q = first_cnv * second_cnv; + s2e::math::Quaternion ret_q = first_cnv * second_cnv; for (int i = 0; i < 4; i++) { destination[i] = ret_q[i]; @@ -274,7 +274,7 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(math::Quaternion& de void InitializedMonteCarloParameters::GenerateQuaternionUniform() { const static int dim = 4; - math::Quaternion temp_q; + s2e::math::Quaternion temp_q; CalcQuaternionUniform(temp_q); randomized_value_.clear(); @@ -283,19 +283,19 @@ void InitializedMonteCarloParameters::GenerateQuaternionUniform() { } } -void InitializedMonteCarloParameters::CalcQuaternionNormal(math::Quaternion& destination, double theta_sigma) { +void InitializedMonteCarloParameters::CalcQuaternionNormal(s2e::math::Quaternion& destination, double theta_sigma) { // Angle from the default quaternion θ follows normal distribution // The rotation axis follows uniform distribution on full sphere - math::Vector<3> rot_axis; + s2e::math::Vector<3> rot_axis; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); - double phi = InitializedMonteCarloParameters::Generate1dUniform(0, math::tau); + double phi = InitializedMonteCarloParameters::Generate1dUniform(0, s2e::math::tau); rot_axis[0] = sin(theta) * cos(phi); rot_axis[1] = sin(theta) * sin(phi); rot_axis[2] = cos(theta); double rotation_angle = InitializedMonteCarloParameters::Generate1dNormal(0.0, theta_sigma); - math::Quaternion ret_q(rot_axis, rotation_angle); + s2e::math::Quaternion ret_q(rot_axis, rotation_angle); for (int i = 0; i < 4; i++) { destination[i] = ret_q[i]; } @@ -307,7 +307,7 @@ void InitializedMonteCarloParameters::GenerateQuaternionNormal() { if (sigma_or_max_.size() < 1) { throw "Config parameters dimension unmatched."; } - math::Quaternion temp_q; + s2e::math::Quaternion temp_q; CalcQuaternionNormal(temp_q, sigma_or_max_[0]); randomized_value_.clear(); diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index 534650c04..28159c98c 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -31,7 +31,7 @@ class InitializedMonteCarloParameters { kCircularNormalNormal, //!< r and θ follow normal distribution in Circular frame kSphericalNormalUniformUniform, //!< r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame kSphericalNormalNormal, //!< r and θ follow normal distribution, and mean vector angle φ follows uniform distribution [0,2*pi] - kQuaternionUniform, //!< Perfectly Randomized math::Quaternion + kQuaternionUniform, //!< Perfectly Randomized s2e::math::Quaternion kQuaternionNormal, //!< Angle from the default quaternion θ follows normal distribution }; @@ -52,7 +52,7 @@ class InitializedMonteCarloParameters { * @brief Set randomization parameters */ template - void SetRandomConfiguration(const math::Vector& mean_or_min, const math::Vector& sigma_or_max, + void SetRandomConfiguration(const s2e::math::Vector& mean_or_min, const s2e::math::Vector& sigma_or_max, RandomizationType random_type); // Getter @@ -61,12 +61,12 @@ class InitializedMonteCarloParameters { * @brief Get randomized vector value results */ template - void GetRandomizedVector(math::Vector& destination) const; + void GetRandomizedVector(s2e::math::Vector& destination) const; /** * @fn GetRandomizedQuaternion * @brief Get randomized quaternion results */ - void GetRandomizedQuaternion(math::Quaternion& destination) const; + void GetRandomizedQuaternion(s2e::math::Quaternion& destination) const; /** * @fn GetRandomizedScalar * @brief Get randomized value results @@ -175,38 +175,38 @@ class InitializedMonteCarloParameters { * @fn CalcCircularNormalUniform * @brief Calculate randomized value with CircularNormalUniform mode */ - void CalcCircularNormalUniform(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max); + void CalcCircularNormalUniform(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max); /** * @fn CalcCircularNormalNormal * @brief Calculate randomized value with CircularNormalNormal mode */ - void CalcCircularNormalNormal(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma); + void CalcCircularNormalNormal(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma); /** * @fn CalcSphericalNormalUniformUniform * @brief Calculate randomized value with SphericalNormalUniformUniform mode */ - void CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, + void CalcSphericalNormalUniformUniform(s2e::math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, double phi_min, double phi_max); /** * @fn CalcSphericalNormalNormal * @brief Calculate randomized value with SphericalNormalNormal mode */ - void CalcSphericalNormalNormal(math::Vector<3>& destination, const math::Vector<3>& mean_vec); + void CalcSphericalNormalNormal(s2e::math::Vector<3>& destination, const s2e::math::Vector<3>& mean_vec); /** * @fn CalcQuaternionUniform * @brief Calculate randomized value with QuaternionUniform mode */ - void CalcQuaternionUniform(math::Quaternion& destination); + void CalcQuaternionUniform(s2e::math::Quaternion& destination); /** * @fn CalcQuaternionNormal * @brief Calculate randomized value with QuaternionNormal mode */ - void CalcQuaternionNormal(math::Quaternion& destination, double theta_sigma); + void CalcQuaternionNormal(s2e::math::Quaternion& destination, double theta_sigma); }; template -void InitializedMonteCarloParameters::SetRandomConfiguration(const math::Vector& mean_or_min, - const math::Vector& sigma_or_max, +void InitializedMonteCarloParameters::SetRandomConfiguration(const s2e::math::Vector& mean_or_min, + const s2e::math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type) { randomization_type_ = random_type; mean_or_min_.clear(); @@ -220,7 +220,7 @@ void InitializedMonteCarloParameters::SetRandomConfiguration(const math::Vector< } template -void InitializedMonteCarloParameters::GetRandomizedVector(math::Vector& destination) const { +void InitializedMonteCarloParameters::GetRandomizedVector(s2e::math::Vector& destination) const { if (randomization_type_ == kNoRandomization) { ; } else if (NumElement > randomized_value_.size()) { diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp index 8c3ad1e39..f03c39754 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp @@ -79,12 +79,12 @@ MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name) { // Read mean_or_min vector key_name = so_dot_ip_str + MonteCarloSimulationExecutor::separator_ + "mean_or_min"; - math::Vector<3> mean_or_min; + s2e::math::Vector<3> mean_or_min; ini_file.ReadVector(section, key_name.c_str(), mean_or_min); // Read sigma_or_max vector key_name = so_dot_ip_str + MonteCarloSimulationExecutor::separator_ + "sigma_or_max"; - math::Vector<3> sigma_or_max; + s2e::math::Vector<3> sigma_or_max; ini_file.ReadVector(section, key_name.c_str(), sigma_or_max); // Write randomize setting diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp index dead43808..1661c6e3a 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp @@ -47,7 +47,7 @@ void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterDouble(strin } void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterQuaternion(string so_name, string init_monte_carlo_parameter_name, - math::Quaternion& destination) const { + s2e::math::Quaternion& destination) const { if (!enabled_) return; { string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index ad1fe87cc..7209b38a0 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -86,7 +86,7 @@ class MonteCarloSimulationExecutor { */ template void GetInitializedMonteCarloParameterVector(std::string so_name, std::string init_monte_carlo_parameter_name, - math::Vector& destination) const; + s2e::math::Vector& destination) const; /** * @fn GetInitializedMonteCarloParameterDouble * @brief Get randomized value and store it in dest @@ -97,7 +97,7 @@ class MonteCarloSimulationExecutor { * @brief Get randomized quaternion and store it in dest_quat */ void GetInitializedMonteCarloParameterQuaternion(std::string so_name, std::string init_monte_carlo_parameter_name, - math::Quaternion& destination) const; + s2e::math::Quaternion& destination) const; // Calculation /** @@ -126,7 +126,7 @@ class MonteCarloSimulationExecutor { * @brief Add initialized parameter */ void AddInitializedMonteCarloParameter(std::string so_name, std::string init_monte_carlo_parameter_name, - const math::Vector& mean_or_min, const math::Vector& sigma_or_max, + const s2e::math::Vector& mean_or_min, const s2e::math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type); /** @@ -138,7 +138,7 @@ class MonteCarloSimulationExecutor { template void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterVector(std::string so_name, std::string init_monte_carlo_parameter_name, - math::Vector& destination) const { + s2e::math::Vector& destination) const { if (!enabled_) return; std::string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; if (init_parameter_list_.find(name) == init_parameter_list_.end()) { @@ -151,8 +151,8 @@ void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterVector(std:: template void MonteCarloSimulationExecutor::AddInitializedMonteCarloParameter(std::string so_name, std::string init_monte_carlo_parameter_name, - const math::Vector& mean_or_min, - const math::Vector& sigma_or_max, + const s2e::math::Vector& mean_or_min, + const s2e::math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type) { std::string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; if (init_parameter_list_.find(name) == init_parameter_list_.end()) { diff --git a/src/simulation/monte_carlo_simulation/simulation_object.cpp b/src/simulation/monte_carlo_simulation/simulation_object.cpp index 9f41f0e15..a5b1e7b51 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.cpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.cpp @@ -38,6 +38,6 @@ void SimulationObject::GetInitializedMonteCarloParameterDouble(const MonteCarloS } void SimulationObject::GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, - std::string init_monte_carlo_parameter_name, math::Quaternion& destination) const { + std::string init_monte_carlo_parameter_name, s2e::math::Quaternion& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterQuaternion(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index 33708e59d..5a16163ea 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -40,7 +40,7 @@ class SimulationObject { */ template void GetInitializedMonteCarloParameterVector(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - math::Vector& destination) const; + s2e::math::Vector& destination) const; /** * @fn GetInitializedMonteCarloParameterDouble @@ -54,7 +54,7 @@ class SimulationObject { * @brief Get randomized quaternion and store it in destination */ void GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, - std::string init_monte_carlo_parameter_name, math::Quaternion& destination) const; + std::string init_monte_carlo_parameter_name, s2e::math::Quaternion& destination) const; /** * @fn SetParameters @@ -80,7 +80,7 @@ class SimulationObject { template void SimulationObject::GetInitializedMonteCarloParameterVector(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - math::Vector& destination) const { + s2e::math::Vector& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterVector(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index f81227cb7..236a9ff19 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -13,8 +13,8 @@ void RelativeInformation::Update() { for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < dynamics_database_.size(); reference_spacecraft_id++) { // Position - math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id] = target_sat_pos_i - reference_sat_pos_i; relative_position_list_rtn_m_[target_spacecraft_id][reference_spacecraft_id] = CalcRelativePosition_rtn_m(target_spacecraft_id, reference_spacecraft_id); @@ -24,8 +24,8 @@ void RelativeInformation::Update() { relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id].CalcNorm(); // Velocity - math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + s2e::math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + s2e::math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); relative_velocity_list_i_m_s_[target_spacecraft_id][reference_spacecraft_id] = target_sat_vel_i - reference_sat_vel_i; relative_velocity_list_rtn_m_s_[target_spacecraft_id][reference_spacecraft_id] = CalcRelativeVelocity_rtn_m_s(target_spacecraft_id, reference_spacecraft_id); @@ -111,55 +111,55 @@ std::string RelativeInformation::GetLogValue() const { void RelativeInformation::LogSetup(Logger& logger) { logger.AddLogList(this); } -math::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { +s2e::math::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { // Observer SC Body frame(obs_sat) -> ECI frame(i) - math::Quaternion q_reference_i2b = dynamics_database_.at(reference_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); - math::Quaternion q_reference_b2i = q_reference_i2b.Conjugate(); + s2e::math::Quaternion q_reference_i2b = dynamics_database_.at(reference_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); + s2e::math::Quaternion q_reference_b2i = q_reference_i2b.Conjugate(); // ECI frame(i) -> Target SC body frame(main_sat) - math::Quaternion q_target_i2b = dynamics_database_.at(target_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); + s2e::math::Quaternion q_target_i2b = dynamics_database_.at(target_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); return q_target_i2b * q_reference_b2i; } -math::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { - math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); - math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; +s2e::math::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { + s2e::math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite - math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); + s2e::math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); - math::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); + s2e::math::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); return relative_pos_rtn; } -math::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { - math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); - math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; +s2e::math::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { + s2e::math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + s2e::math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite - math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); + s2e::math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); // Rotation vector of RTN frame - math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - math::Vector<3> rot_vec_rtn_i = cross(reference_sat_pos_i, reference_sat_vel_i); + s2e::math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + s2e::math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + s2e::math::Vector<3> rot_vec_rtn_i = cross(reference_sat_pos_i, reference_sat_vel_i); double r2_ref = reference_sat_pos_i.CalcNorm() * reference_sat_pos_i.CalcNorm(); rot_vec_rtn_i /= r2_ref; - math::Vector<3> relative_vel_i = target_sat_vel_i - reference_sat_vel_i - cross(rot_vec_rtn_i, relative_pos_i); + s2e::math::Vector<3> relative_vel_i = target_sat_vel_i - reference_sat_vel_i - cross(rot_vec_rtn_i, relative_pos_i); - math::Vector<3> relative_vel_rtn = q_i2rtn.FrameConversion(relative_vel_i); + s2e::math::Vector<3> relative_vel_rtn = q_i2rtn.FrameConversion(relative_vel_i); return relative_vel_rtn; } void RelativeInformation::ResizeLists() { size_t size = dynamics_database_.size(); - relative_position_list_i_m_.assign(size, std::vector>(size, math::Vector<3>(0))); - relative_velocity_list_i_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); + relative_position_list_i_m_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); + relative_velocity_list_i_m_s_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); relative_distance_list_m_.assign(size, std::vector(size, 0.0)); - relative_position_list_rtn_m_.assign(size, std::vector>(size, math::Vector<3>(0))); - relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); - relative_attitude_quaternion_list_.assign(size, std::vector(size, math::Quaternion(0, 0, 0, 1))); + relative_position_list_rtn_m_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); + relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); + relative_attitude_quaternion_list_.assign(size, std::vector(size, s2e::math::Quaternion(0, 0, 0, 1))); } diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index 87a273641..2eb7e7789 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -73,7 +73,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline math::Quaternion GetRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline s2e::math::Quaternion GetRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_attitude_quaternion_list_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -82,7 +82,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline math::Vector<3> GetRelativePosition_i_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline s2e::math::Vector<3> GetRelativePosition_i_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -91,7 +91,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline math::Vector<3> GetRelativeVelocity_i_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline s2e::math::Vector<3> GetRelativeVelocity_i_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_velocity_list_i_m_s_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -109,7 +109,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline math::Vector<3> GetRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline s2e::math::Vector<3> GetRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_position_list_rtn_m_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -118,7 +118,7 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline math::Vector<3> GetRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline s2e::math::Vector<3> GetRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_velocity_list_rtn_m_s_[target_spacecraft_id][reference_spacecraft_id]; } @@ -134,12 +134,12 @@ class RelativeInformation : public ILoggable { private: std::map dynamics_database_; //!< Dynamics database of all spacecraft - std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] - std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] - std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] - std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] + std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] + std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] + std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] + std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] std::vector> relative_distance_list_m_; //!< Relative distance list in unit [m] - std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list + std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list /** * @fn CalcRelativeAttitudeQuaternion @@ -147,21 +147,21 @@ class RelativeInformation : public ILoggable { * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - math::Quaternion CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + s2e::math::Quaternion CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn CalcRelativePosition_rtn_m * @brief Calculate and return the relative position in RTN frame * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - math::Vector<3> CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + s2e::math::Vector<3> CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn CalcRelativeVelocity_rtn_m_s * @brief Calculate and return the relative velocity in RTN frame * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - math::Vector<3> CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + s2e::math::Vector<3> CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn ResizeLists diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index 7497df29e..6dcb6ee8c 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -7,13 +7,13 @@ #include -math::Vector<3> InstalledComponents::GenerateForce_b_N() { - math::Vector<3> force_b_N_(0.0); +s2e::math::Vector<3> InstalledComponents::GenerateForce_b_N() { + s2e::math::Vector<3> force_b_N_(0.0); return force_b_N_; } -math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { - math::Vector<3> torque_b_Nm_(0.0); +s2e::math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { + s2e::math::Vector<3> torque_b_Nm_(0.0); return torque_b_Nm_; } diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index 4a4550c55..daf41a7a8 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -26,14 +26,14 @@ class InstalledComponents { * @brief Return force generated by components in unit Newton in body fixed frame * @details Users need to override this function to add force generated by components */ - virtual math::Vector<3> GenerateForce_b_N(); + virtual s2e::math::Vector<3> GenerateForce_b_N(); /** * @fn GenerateTorque_b_Nm * @brief Return torque generated by components in unit Newton-meter in body fixed frame * @details Users need to override this function to add torque generated by components */ - virtual math::Vector<3> GenerateTorque_b_Nm(); + virtual s2e::math::Vector<3> GenerateTorque_b_Nm(); /** * @fn ComponentInterference diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 0c2a49b35..b8e578398 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -13,11 +13,11 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { auto conf = IniAccess(file_name); const char* section = "KINEMATIC_PARAMETERS"; - math::Vector<3> center_of_gravity_b_m; + s2e::math::Vector<3> center_of_gravity_b_m; conf.ReadVector(section, "center_of_gravity_b_m", center_of_gravity_b_m); double mass_kg = conf.ReadDouble(section, "mass_kg"); - math::Vector<9> inertia_vec; - math::Matrix<3, 3> inertia_tensor_b_kgm2; + s2e::math::Vector<9> inertia_vec; + s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2; conf.ReadVector(section, "inertia_tensor_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { @@ -110,7 +110,7 @@ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { auto conf = IniAccess(file_name); const char* section = "RESIDUAL_MAGNETIC_MOMENT"; - math::Vector<3> rmm_const_b; + s2e::math::Vector<3> rmm_const_b; conf.ReadVector(section, "rmm_constant_b_Am2", rmm_const_b); double rmm_rwdev = conf.ReadDouble(section, "rmm_random_walk_speed_Am2"); double random_walk_limit_Am2 = conf.ReadDouble(section, "rmm_random_walk_limit_Am2"); diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 67906710a..289c62cc7 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -5,5 +5,5 @@ #include "kinematics_parameters.hpp" -KinematicsParameters::KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) +KinematicsParameters::KinematicsParameters(s2e::math::Vector<3> center_of_gravity_b_m, double mass_kg, s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 52818f018..6cea84b20 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -19,7 +19,7 @@ class KinematicsParameters { * @fn KinematicsParameters * @brief Constructor */ - KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2); + KinematicsParameters(s2e::math::Vector<3> center_of_gravity_b_m, double mass_kg, s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2); /** * @fn ~KinematicsParameters * @brief Destructor @@ -31,7 +31,7 @@ class KinematicsParameters { * @fn GetCenterOfGravity_b_m * @brief Return Position vector of center of gravity at body frame [m] */ - inline const math::Vector<3>& GetCenterOfGravity_b_m() const { return center_of_gravity_b_m_; } + inline const s2e::math::Vector<3>& GetCenterOfGravity_b_m() const { return center_of_gravity_b_m_; } /** * @fn GetMass_kg * @brief Return Mass of the satellite [kg] @@ -41,7 +41,7 @@ class KinematicsParameters { * @fn GetInertiaTensor_b_kgm2 * @brief Return Inertia tensor at body frame [kgm2] */ - inline const math::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } + inline const s2e::math::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } // Setter /** @@ -49,7 +49,7 @@ class KinematicsParameters { * @brief Set center of gravity vector at the body frame [m] * @param [in] center_of_gravity_vector_b_m: Center of gravity vector at the body frame [m] */ - inline void SetCenterOfGravityVector_b_m(const math::Vector<3> center_of_gravity_vector_b_m) { + inline void SetCenterOfGravityVector_b_m(const s2e::math::Vector<3> center_of_gravity_vector_b_m) { center_of_gravity_b_m_ = center_of_gravity_vector_b_m; } /** @@ -75,15 +75,15 @@ class KinematicsParameters { * @brief Inertia tensor at body frame * @param [in] inertia_tensor_b_kgm2: Inertia tensor at body frame [kgm2] */ - inline void SetInertiaTensor_b_kgm2(const math::Matrix<3, 3> inertia_tensor_b_kgm2) { + inline void SetInertiaTensor_b_kgm2(const s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) { // TODO add assertion check inertia_tensor_b_kgm2_ = inertia_tensor_b_kgm2; } private: - math::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] + s2e::math::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] double mass_kg_; //!< Mass of the satellite [kg] - math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] + s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 72000e51f..93d5e44ab 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -7,7 +7,7 @@ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ #include -using math::Vector; +using s2e::math::Vector; /** * @class ResidualMagneticMoment diff --git a/src/simulation/spacecraft/structure/surface.cpp b/src/simulation/spacecraft/structure/surface.cpp index 06af72cde..58b0b4cbd 100644 --- a/src/simulation/spacecraft/structure/surface.cpp +++ b/src/simulation/spacecraft/structure/surface.cpp @@ -5,7 +5,7 @@ #include "surface.hpp" -Surface::Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, +Surface::Surface(const s2e::math::Vector<3> position_b_m, const s2e::math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity) : position_b_m_(position_b_m), normal_b_(normal_b), diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index db54f219b..2b4b9439f 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -18,7 +18,7 @@ class Surface { * @fn Surface * @brief Constructor */ - Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, + Surface(const s2e::math::Vector<3> position_b_m, const s2e::math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity); /** * @fn ~Surface @@ -31,12 +31,12 @@ class Surface { * @fn GetPosition_b_m * @brief Return position vector of geometric center of the surface in body frame and meter unit */ - inline const math::Vector<3>& GetPosition_b_m(void) const { return position_b_m_; } + inline const s2e::math::Vector<3>& GetPosition_b_m(void) const { return position_b_m_; } /** * @fn GetNormal_b * @brief Return normal vector of the surface in body frame */ - inline const math::Vector<3>& GetNormal_b(void) const { return normal_b_; } + inline const s2e::math::Vector<3>& GetNormal_b(void) const { return normal_b_; } /** * @fn GetArea_m2 * @brief Return area of the surface in meter^2 unit @@ -64,13 +64,13 @@ class Surface { * @brief Set position vector of geometric center of the surface in body frame [m] * @param[in] position_b_m: Position vector of geometric center of the surface in body frame [m] */ - inline void SetPosition_b_m(const math::Vector<3> position_b_m) { position_b_m_ = position_b_m; } + inline void SetPosition_b_m(const s2e::math::Vector<3> position_b_m) { position_b_m_ = position_b_m; } /** * @fn SetNormal * @brief Set normal vector of the surface in body frame * @param[in] normal_b: Normal vector of the surface in body frame */ - inline void SetNormal_b(const math::Vector<3> normal_b) { normal_b_ = normal_b.CalcNormalizedVector(); } + inline void SetNormal_b(const s2e::math::Vector<3> normal_b) { normal_b_ = normal_b.CalcNormalizedVector(); } /** * @fn SetArea_m2 * @brief Set area of the surface @@ -105,8 +105,8 @@ class Surface { } private: - math::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] - math::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] + s2e::math::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] + s2e::math::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] double area_m2_; //!< Area of the surface [m2] double reflectivity_; //!< Total reflectivity for solar wavelength (1.0 - solar absorption) double specularity_; //!< Ratio of specular reflection in the total reflected light diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index b45d960c3..5de0f8984 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -141,21 +141,21 @@ SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structur /**************/ // actuator debug output - // math::Vector mag_moment_c{0.01}; + // s2e::math::Vector mag_moment_c{0.01}; // magnetorquer_->SetOutputMagneticMoment_c_Am2(mag_moment_c); // reaction_wheel_->SetTargetTorque_rw_Nm(0.01); // reaction_wheel_->SetDriveFlag(true); // thruster_->SetDuty(0.9); // force generator debug output - // math::Vector<3> force_N; + // s2e::math::Vector<3> force_N; // force_N[0] = 1.0; // force_N[1] = 0.0; // force_N[2] = 0.0; // force_generator_->SetForce_b_N(force_N); // torque generator debug output - // math::Vector<3> torque_Nm; + // s2e::math::Vector<3> torque_Nm; // torque_Nm[0] = 0.1; // torque_Nm[1] = 0.0; // torque_Nm[2] = 0.0; @@ -188,15 +188,15 @@ SampleComponents::~SampleComponents() { delete hils_port_manager_; // delete after exp_hils } -math::Vector<3> SampleComponents::GenerateForce_b_N() { - math::Vector<3> force_b_N_(0.0); +s2e::math::Vector<3> SampleComponents::GenerateForce_b_N() { + s2e::math::Vector<3> force_b_N_(0.0); force_b_N_ += thruster_->GetOutputThrust_b_N(); force_b_N_ += force_generator_->GetGeneratedForce_b_N(); return force_b_N_; } -math::Vector<3> SampleComponents::GenerateTorque_b_Nm() { - math::Vector<3> torque_b_Nm_(0.0); +s2e::math::Vector<3> SampleComponents::GenerateTorque_b_Nm() { + s2e::math::Vector<3> torque_b_Nm_(0.0); torque_b_Nm_ += magnetorquer_->GetOutputTorque_b_Nm(); torque_b_Nm_ += reaction_wheel_->GetOutputTorque_b_Nm(); torque_b_Nm_ += thruster_->GetOutputTorque_b_Nm(); diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index d03044b3b..c8c3603d5 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -74,12 +74,12 @@ class SampleComponents : public InstalledComponents { * @fn GenerateForce_b_N * @brief Return force generated by components in unit Newton in body fixed frame */ - math::Vector<3> GenerateForce_b_N() override; + s2e::math::Vector<3> GenerateForce_b_N() override; /** * @fn GenerateTorque_b_Nm * @brief Return torque generated by components in unit Newton-meter in body fixed frame */ - math::Vector<3> GenerateTorque_b_Nm() override; + s2e::math::Vector<3> GenerateTorque_b_Nm() override; /** * @fn ComponentInterference * @brief Handle component interference effect From 70dfc4fc29b2f97916ed127cdb173c5cbe926456 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:05:02 -0700 Subject: [PATCH 339/456] Rename namespaec atmosphere to s2e::atmosphere --- src/environment/local/atmosphere.cpp | 4 ++-- src/math_physics/atmosphere/harris_priester_coefficients.hpp | 4 ++-- src/math_physics/atmosphere/harris_priester_model.cpp | 4 ++-- src/math_physics/atmosphere/harris_priester_model.hpp | 4 ++-- src/math_physics/atmosphere/simple_air_density_model.cpp | 4 ++-- src/math_physics/atmosphere/simple_air_density_model.hpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index b46e855b2..1ea0636a6 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -56,7 +56,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& if (model_ == "STANDARD") { // Standard model double altitude_m = orbit.GetGeodeticPosition().GetAltitude_m(); - air_density_kg_m3_ = atmosphere::CalcAirDensityWithSimpleModel(altitude_m); + air_density_kg_m3_ = s2e::atmosphere::CalcAirDensityWithSimpleModel(altitude_m); } else if (model_ == "NRLMSISE00") { // NRLMSISE00 model double lat_rad = orbit.GetGeodeticPosition().GetLatitude_rad(); @@ -67,7 +67,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& } else if (model_ == "HARRIS_PRIESTER") { // Harris-Priester s2e::math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); - air_density_kg_m3_ = atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); + air_density_kg_m3_ = s2e::atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); } else { // No suitable model return air_density_kg_m3_ = 0.0; diff --git a/src/math_physics/atmosphere/harris_priester_coefficients.hpp b/src/math_physics/atmosphere/harris_priester_coefficients.hpp index 3c467501b..7fd6802b7 100644 --- a/src/math_physics/atmosphere/harris_priester_coefficients.hpp +++ b/src/math_physics/atmosphere/harris_priester_coefficients.hpp @@ -7,7 +7,7 @@ #include -namespace atmosphere { +namespace s2e::atmosphere { // Height [km], density [g/km3] // TODO: Add other solar activities value @@ -28,6 +28,6 @@ const std::map harris_priester_max_density_table = { {640, 0.4121}, {660, 0.3325}, {680, 0.2691}, {700, 0.2185}, {720, 0.1779}, {740, 0.1452}, {760, 0.1190}, {780, 0.09776}, {800, 0.08059}, {840, 0.05741}, {880, 0.04210}, {920, 0.03130}, {960, 0.02360}, {1000, 0.01810}}; -} // namespace atmosphere +} // namespace s2e::atmosphere #endif // S2E_LIBRARY_HARRIS_COEFFICIENTS_HPP_ diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index ce88b5a54..4c04719b1 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -10,7 +10,7 @@ #include "harris_priester_coefficients.hpp" -namespace atmosphere { +namespace s2e::atmosphere { /** * @fn CalcScaleHeight_km @@ -88,4 +88,4 @@ double CalcApexDensity_g_km3(const std::map::const_iterator dens return apex_density_g_km3; } -} // namespace atmosphere +} // namespace s2e::atmosphere diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index fb08c4977..b999dbffd 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -9,7 +9,7 @@ #include #include -namespace atmosphere { +namespace s2e::atmosphere { /** * @fn CalcAirDensityWithHarrisPriester @@ -23,6 +23,6 @@ namespace atmosphere { double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); -} // namespace atmosphere +} // namespace s2e::atmosphere #endif // S2E_LIBRARY_HARRIS_PRIESTER_HPP_ diff --git a/src/math_physics/atmosphere/simple_air_density_model.cpp b/src/math_physics/atmosphere/simple_air_density_model.cpp index 7e2b0a440..f616f674b 100644 --- a/src/math_physics/atmosphere/simple_air_density_model.cpp +++ b/src/math_physics/atmosphere/simple_air_density_model.cpp @@ -6,7 +6,7 @@ #include -namespace atmosphere { +namespace s2e::atmosphere { double CalcAirDensityWithSimpleModel(const double altitude_m) { double altitude_km = altitude_m / 1000.0; @@ -138,4 +138,4 @@ double CalcAirDensityWithSimpleModel(const double altitude_m) { return rho_kg_m3; } -} // namespace atmosphere +} // namespace s2e::atmosphere diff --git a/src/math_physics/atmosphere/simple_air_density_model.hpp b/src/math_physics/atmosphere/simple_air_density_model.hpp index b697a66e4..834807d96 100644 --- a/src/math_physics/atmosphere/simple_air_density_model.hpp +++ b/src/math_physics/atmosphere/simple_air_density_model.hpp @@ -5,7 +5,7 @@ #ifndef S2E_LIBRARY_ATMOSPHERE_SIMPLE_AIR_DENSITY_MODEL_HPP_ #define S2E_LIBRARY_ATMOSPHERE_SIMPLE_AIR_DENSITY_MODEL_HPP_ -namespace atmosphere { +namespace s2e::atmosphere { /** * @fn CalcAirDensityWithSimpleModel @@ -15,6 +15,6 @@ namespace atmosphere { */ double CalcAirDensityWithSimpleModel(const double altitude_m); -} // namespace atmosphere +} // namespace s2e::atmosphere #endif // S2E_LIBRARY_ATMOSPHERE_SIMPLE_AIR_DENSITY_MODEL_HPP_ From 4f102b4e7557542d4960939f957c5e0842c245b8 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:06:10 -0700 Subject: [PATCH 340/456] Rename namespaec control_utilities to s2e::control_utilities --- src/components/real/aocs/reaction_wheel.hpp | 2 +- src/math_physics/control_utilities/first_order_lag.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 5852b8a74..14c66a33e 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -183,7 +183,7 @@ class ReactionWheel : public Component, public ILoggable { const double step_width_s_; //!< step width for ReactionWheelOde [sec] const double dead_time_s_; //!< dead time [sec] std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration - control_utilities::FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] + s2e::control_utilities::FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] // Coasting friction // f_rad_s2 = v_rad_s * coefficients(0) + (v_rad_s)^2 * coefficients(1) + ... diff --git a/src/math_physics/control_utilities/first_order_lag.hpp b/src/math_physics/control_utilities/first_order_lag.hpp index 9a9d27ed3..3c61593be 100644 --- a/src/math_physics/control_utilities/first_order_lag.hpp +++ b/src/math_physics/control_utilities/first_order_lag.hpp @@ -6,7 +6,7 @@ #ifndef S2E_LIBRARY_CONTROL_UTILITIES_FIRST_ORDER_LAG_HPP_ #define S2E_LIBRARY_CONTROL_UTILITIES_FIRST_ORDER_LAG_HPP_ -namespace control_utilities { +namespace s2e::control_utilities { /** * @class FirstOderLag @@ -47,6 +47,6 @@ class FirstOrderLag { const double gain_; //!< Gain }; -} // namespace control_utilities +} // namespace s2e::control_utilities #endif // S2E_LIBRARY_CONTROL_UTILITIES_FIRST_ORDER_LAG_HPP_ From 99abe3c077cf9488c2ac5a552d38b63fda9d496a Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:07:41 -0700 Subject: [PATCH 341/456] Rename namespaec geodesy to s2e::geodesy --- src/components/real/aocs/gnss_receiver.hpp | 4 ++-- src/dynamics/orbit/orbit.hpp | 4 ++-- src/environment/local/geomagnetic_field.cpp | 2 +- src/environment/local/geomagnetic_field.hpp | 2 +- src/math_physics/atmosphere/harris_priester_model.cpp | 2 +- src/math_physics/atmosphere/harris_priester_model.hpp | 2 +- src/math_physics/geodesy/geodetic_position.cpp | 4 ++-- src/math_physics/geodesy/geodetic_position.hpp | 4 ++-- src/simulation/ground_station/ground_station.cpp | 2 +- src/simulation/ground_station/ground_station.hpp | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 006d70ab0..ad9f38103 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -107,7 +107,7 @@ class GnssReceiver : public Component, public ILoggable { * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] */ - inline const geodesy::GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } + inline const s2e::geodesy::GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } /** * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] @@ -141,7 +141,7 @@ class GnssReceiver : public Component, public ILoggable { randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] s2e::math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] s2e::math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + s2e::geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 01be5c87c..79a016b81 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -113,7 +113,7 @@ class Orbit : public ILoggable { * @fn GetGeodeticPosition * @brief Return spacecraft position in the geodetic frame [m] */ - inline geodesy::GeodeticPosition GetGeodeticPosition() const { return spacecraft_geodetic_position_; } + inline s2e::geodesy::GeodeticPosition GetGeodeticPosition() const { return spacecraft_geodetic_position_; } // TODO delete the following functions inline double GetLatitude_rad() const { return spacecraft_geodetic_position_.GetLatitude_rad(); } @@ -193,7 +193,7 @@ class Orbit : public ILoggable { s2e::math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] s2e::math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] - geodesy::GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame + s2e::geodesy::GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame s2e::math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] s2e::math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 971910b0a..6fcdcc7f9 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -22,7 +22,7 @@ GeomagneticField::GeomagneticField(const std::string igrf_file_name, const doubl set_file_path(igrf_file_name_.c_str()); } -void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, +void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const s2e::geodesy::GeodeticPosition position, const s2e::math::Quaternion quaternion_i2b) { if (!IsCalcEnabled) return; diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index d00f46aa1..3f2adf741 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -43,7 +43,7 @@ class GeomagneticField : public ILoggable { * @param [in] position: Position of target point to calculate the magnetic field * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ - void CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, + void CalcMagneticField(const double decimal_year, const double sidereal_day, const s2e::geodesy::GeodeticPosition position, const s2e::math::Quaternion quaternion_i2b); /** diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 4c04719b1..e38476335 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -28,7 +28,7 @@ double CalcScaleHeight_km(const std::map::const_iterator density */ double CalcApexDensity_g_km3(const std::map::const_iterator density_itr, const double altitude_km); -double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, const double f10_7, const double exponent_parameter) { // Altitude double altitude_km = geodetic_position.GetAltitude_m() / 1000.0; diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index b999dbffd..a5b05bc7e 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -20,7 +20,7 @@ namespace s2e::atmosphere { * @param [in] exponent_parameter: n in the equation. n=2 for low inclination orbit and n=6 for polar orbit. * @return Atmospheric density [kg/m^3] */ -double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); } // namespace s2e::atmosphere diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 65969df15..50bac4071 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -10,7 +10,7 @@ #include #include -namespace geodesy { +namespace s2e::geodesy { GeodeticPosition::GeodeticPosition() { latitude_rad_ = 0.0; @@ -86,4 +86,4 @@ void GeodeticPosition::CalcQuaternionXcxfToLtc() { quaternion_xcxf_to_ltc_ = quaternion_xcxf_to_ltc_.ConvertFromDcm(dcm_xcxf_to_ltc); } -} // namespace geodesy +} // namespace s2e::geodesy diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index a850c5936..9687e0ea9 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -9,7 +9,7 @@ #include #include -namespace geodesy { +namespace s2e::geodesy { /** * @class GeodeticPosition @@ -80,6 +80,6 @@ class GeodeticPosition { void CalcQuaternionXcxfToLtc(); }; -} // namespace geodesy +} // namespace s2e::geodesy #endif // S2E_LIBRARY_GEODESY_GEODETIC_POSITION_HPP_ \ No newline at end of file diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index b1486b633..4a0110fc4 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -35,7 +35,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con double latitude_deg = conf.ReadDouble(Section, "latitude_deg"); double longitude_deg = conf.ReadDouble(Section, "longitude_deg"); double height_m = conf.ReadDouble(Section, "height_m"); - geodetic_position_ = geodesy::GeodeticPosition(latitude_deg * s2e::math::deg_to_rad, longitude_deg * s2e::math::deg_to_rad, height_m); + geodetic_position_ = s2e::geodesy::GeodeticPosition(latitude_deg * s2e::math::deg_to_rad, longitude_deg * s2e::math::deg_to_rad, height_m); position_ecef_m_ = geodetic_position_.CalcEcefPosition(); elevation_limit_angle_deg_ = conf.ReadDouble(Section, "elevation_limit_angle_deg"); diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index 41a051d58..bdb320af9 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -67,7 +67,7 @@ class GroundStation : public ILoggable { * @fn GetGeodeticPosition * @brief Return ground station position in the geodetic frame */ - geodesy::GeodeticPosition GetGeodeticPosition() const { return geodetic_position_; } + s2e::geodesy::GeodeticPosition GetGeodeticPosition() const { return geodetic_position_; } /** * @fn GetPosition_ecef_m * @brief Return ground station position in the ECEF frame [m] @@ -92,7 +92,7 @@ class GroundStation : public ILoggable { protected: unsigned int ground_station_id_; //!< Ground station ID - geodesy::GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame + s2e::geodesy::GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] double elevation_limit_angle_deg_; //!< Minimum elevation angle to work the ground station [deg] From f6ab6b59bf00f398acbf10e56c0e16057546a430 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:09:19 -0700 Subject: [PATCH 342/456] Rename namespaec gnss to s2e::gnss --- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 6 +++--- src/math_physics/gnss/antex_file_reader.cpp | 4 ++-- src/math_physics/gnss/antex_file_reader.hpp | 4 ++-- src/math_physics/gnss/bias_sinex_file_reader.cpp | 4 ++-- src/math_physics/gnss/bias_sinex_file_reader.hpp | 4 ++-- src/math_physics/gnss/gnss_satellite_number.cpp | 4 ++-- src/math_physics/gnss/gnss_satellite_number.hpp | 4 ++-- src/math_physics/gnss/igs_product_name_handling.hpp | 4 ++-- src/math_physics/gnss/sp3_file_reader.cpp | 4 ++-- src/math_physics/gnss/sp3_file_reader.hpp | 4 ++-- src/math_physics/gnss/test_antex_file_reader.cpp | 2 +- src/math_physics/gnss/test_bias_sinex_file_reader.cpp | 2 +- src/math_physics/gnss/test_gnss_satellite_number.cpp | 2 +- src/math_physics/gnss/test_igs_product_name_handling.cpp | 2 +- src/math_physics/gnss/test_sp3_file_reader.cpp | 2 +- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index c2a844d7a..ecc7683c8 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -15,7 +15,7 @@ #include "setting_file_reader/initialize_file_access.hpp" #include "utilities/macros.hpp" -using namespace gnss; +using namespace s2e::gnss; const size_t kNumberOfInterpolation = 9; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index bbb4aaac3..24af47f6f 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -54,7 +54,7 @@ class GnssSatellites : public ILoggable { * @param [in] sp3_files: List of SP3 files * @param [in] start_time: The simulation start time */ - void Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time); + void Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time); /** * @fn IsCalcEnabled @@ -113,7 +113,7 @@ class GnssSatellites : public ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the GNSS satellite position calculation - std::vector sp3_files_; //!< List of SP3 files + std::vector sp3_files_; //!< List of SP3 files size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites size_t sp3_file_id_; //!< Current SP3 file ID time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling @@ -133,7 +133,7 @@ class GnssSatellites : public ILoggable { * @param [in] current_time: Target time * @return true means no error, false means the time argument is out of range */ - bool GetCurrentSp3File(gnss::Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time); + bool GetCurrentSp3File(s2e::gnss::Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time); /** * @fn UpdateInterpolationInformation diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index 9a80470d4..2bcd93793 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -10,7 +10,7 @@ #include #include -namespace gnss { +namespace s2e::gnss { #define ANTEX_LINE_TYPE_POSITION (60) @@ -199,4 +199,4 @@ time_system::DateTime AntexFileReader::ReadDateTime(std::string line) { return time_system::DateTime(year, month, day, hour, minute, second); } -} // namespace gnss +} // namespace s2e::gnss diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 11ac0dc7d..c25c49477 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -16,7 +16,7 @@ #include #include -namespace gnss { +namespace s2e::gnss { /** * @class AntexGridDefinition @@ -345,6 +345,6 @@ class AntexFileReader { time_system::DateTime ReadDateTime(std::string line); }; -} // namespace gnss +} // namespace s2e::gnss #endif // S2E_LIBRARY_ANTEX_FILE_READER_HPP_ diff --git a/src/math_physics/gnss/bias_sinex_file_reader.cpp b/src/math_physics/gnss/bias_sinex_file_reader.cpp index 252523ebf..b8a203c27 100644 --- a/src/math_physics/gnss/bias_sinex_file_reader.cpp +++ b/src/math_physics/gnss/bias_sinex_file_reader.cpp @@ -9,7 +9,7 @@ #include #include -namespace gnss { +namespace s2e::gnss { bool BiasSinexFileReader::ReadFile(const std::string file_name) { // File open @@ -245,4 +245,4 @@ void BiasSolutionData::SetTargetSignal(const std::string signal1, const std::str } } -} // namespace gnss +} // namespace s2e::gnss diff --git a/src/math_physics/gnss/bias_sinex_file_reader.hpp b/src/math_physics/gnss/bias_sinex_file_reader.hpp index 20e591d0c..694a9bcc5 100644 --- a/src/math_physics/gnss/bias_sinex_file_reader.hpp +++ b/src/math_physics/gnss/bias_sinex_file_reader.hpp @@ -10,7 +10,7 @@ #include #include -namespace gnss { +namespace s2e::gnss { /** * @enum BiasIdentifier @@ -186,6 +186,6 @@ class BiasSinexFileReader { void ReadBiasSolution(std::ifstream& bias_sinex_file); }; -} // namespace gnss +} // namespace s2e::gnss #endif // S2E_LIBRARY_BIAS_SINEX_FILE_READER_HPP_ \ No newline at end of file diff --git a/src/math_physics/gnss/gnss_satellite_number.cpp b/src/math_physics/gnss/gnss_satellite_number.cpp index 6eb8861a5..2241db843 100644 --- a/src/math_physics/gnss/gnss_satellite_number.cpp +++ b/src/math_physics/gnss/gnss_satellite_number.cpp @@ -5,7 +5,7 @@ #include "gnss_satellite_number.hpp" -namespace gnss { +namespace s2e::gnss { size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number) { switch (satellite_number.front()) { @@ -61,4 +61,4 @@ std::string ConvertIndexToGnssSatelliteNumber(const size_t index) { return output; } -} // namespace gnss +} // namespace s2e::gnss diff --git a/src/math_physics/gnss/gnss_satellite_number.hpp b/src/math_physics/gnss/gnss_satellite_number.hpp index 35087c537..2b4e1f08b 100644 --- a/src/math_physics/gnss/gnss_satellite_number.hpp +++ b/src/math_physics/gnss/gnss_satellite_number.hpp @@ -10,7 +10,7 @@ #include -namespace gnss { +namespace s2e::gnss { // GNSS satellite number definition // TODO: Move to initialized file? @@ -46,6 +46,6 @@ size_t ConvertGnssSatelliteNumberToIndex(const std::string satellite_number); */ std::string ConvertIndexToGnssSatelliteNumber(const size_t index); -} // namespace gnss +} // namespace s2e::gnss #endif // S2E_LIBRARY_GNSS_GNSS_SATELLITE_NUMBER_HPP_ diff --git a/src/math_physics/gnss/igs_product_name_handling.hpp b/src/math_physics/gnss/igs_product_name_handling.hpp index e2352f76c..01c923fe7 100644 --- a/src/math_physics/gnss/igs_product_name_handling.hpp +++ b/src/math_physics/gnss/igs_product_name_handling.hpp @@ -10,7 +10,7 @@ #include -namespace gnss { +namespace s2e::gnss { /** * @fn GetOrbitClockFileName @@ -85,6 +85,6 @@ size_t IncrementYearDoy(const size_t year_doy) { return output; } -} // namespace gnss +} // namespace s2e::gnss #endif // S2E_LIBRARY_GNSS_IGS_PRODUCT_NAME_HANDLING_HPP_ diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index b03fb4923..70c170116 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -11,7 +11,7 @@ #include #include -namespace gnss { +namespace s2e::gnss { Sp3FileReader::Sp3FileReader(const std::string file_name) { ReadFile(file_name); } @@ -422,4 +422,4 @@ Sp3VelocityClockRateCorrelation Sp3FileReader::DecodeVelocityClockRateCorrelatio return correlation; } -} // namespace gnss +} // namespace s2e::gnss diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 2f04b25fc..5068a4e82 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -17,7 +17,7 @@ #include #include -namespace gnss { +namespace s2e::gnss { #define SP3_BAD_CLOCK_VALUE (999999.999999) #define SP3_BAD_POSITION_VALUE (0.000000) @@ -236,6 +236,6 @@ class Sp3FileReader { Sp3VelocityClockRateCorrelation DecodeVelocityClockRateCorrelation(std::string line); }; -} // namespace gnss +} // namespace s2e::gnss #endif // S2E_LIBRARY_GNSS_SP3_FILE_READER_HPP_ diff --git a/src/math_physics/gnss/test_antex_file_reader.cpp b/src/math_physics/gnss/test_antex_file_reader.cpp index 320c598af..f64af1003 100644 --- a/src/math_physics/gnss/test_antex_file_reader.cpp +++ b/src/math_physics/gnss/test_antex_file_reader.cpp @@ -7,7 +7,7 @@ #include "antex_file_reader.hpp" -using namespace gnss; +using namespace s2e::gnss; /** * @brief Test Constructor diff --git a/src/math_physics/gnss/test_bias_sinex_file_reader.cpp b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp index a681eedcc..c58f7ceae 100644 --- a/src/math_physics/gnss/test_bias_sinex_file_reader.cpp +++ b/src/math_physics/gnss/test_bias_sinex_file_reader.cpp @@ -2,7 +2,7 @@ #include "bias_sinex_file_reader.hpp" -using namespace gnss; +using namespace s2e::gnss; TEST(BiasSinex, Constructor) { // File read error check diff --git a/src/math_physics/gnss/test_gnss_satellite_number.cpp b/src/math_physics/gnss/test_gnss_satellite_number.cpp index 259920e29..0d4cae6f6 100644 --- a/src/math_physics/gnss/test_gnss_satellite_number.cpp +++ b/src/math_physics/gnss/test_gnss_satellite_number.cpp @@ -6,7 +6,7 @@ #include "gnss_satellite_number.hpp" -using namespace gnss; +using namespace s2e::gnss; /** * @brief Test satellite number to index diff --git a/src/math_physics/gnss/test_igs_product_name_handling.cpp b/src/math_physics/gnss/test_igs_product_name_handling.cpp index f1af19529..6b5d40270 100644 --- a/src/math_physics/gnss/test_igs_product_name_handling.cpp +++ b/src/math_physics/gnss/test_igs_product_name_handling.cpp @@ -7,7 +7,7 @@ #include "igs_product_name_handling.hpp" -using namespace gnss; +using namespace s2e::gnss; /** * @brief Test GetOrbitClockFinalFileName diff --git a/src/math_physics/gnss/test_sp3_file_reader.cpp b/src/math_physics/gnss/test_sp3_file_reader.cpp index 9ef514d41..2f9672ab0 100644 --- a/src/math_physics/gnss/test_sp3_file_reader.cpp +++ b/src/math_physics/gnss/test_sp3_file_reader.cpp @@ -6,7 +6,7 @@ #include "sp3_file_reader.hpp" -using namespace gnss; +using namespace s2e::gnss; /** * @brief Test Constructor From 46ceb8574912682ad16feeaf3edfc37b57f6cbcf Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:10:13 -0700 Subject: [PATCH 343/456] Rename namespaec gravity to s2e::gravity --- src/disturbances/geopotential.cpp | 2 +- src/disturbances/geopotential.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/math_physics/gravity/gravity_potential.cpp | 4 ++-- src/math_physics/gravity/gravity_potential.hpp | 4 ++-- src/math_physics/gravity/test_gravity_potential.cpp | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 0520730ff..b36df94d4 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -43,7 +43,7 @@ Geopotential::Geopotential(const int degree, const std::string file_path, const } } // Initialize GravityPotential - geopotential_ = gravity::GravityPotential(degree, c_, s_); + geopotential_ = s2e::gravity::GravityPotential(degree, c_, s_); } bool Geopotential::ReadCoefficientsEgm96(std::string file_name) { diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 0f66a463d..0d350caae 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -60,7 +60,7 @@ class Geopotential : public Disturbance { virtual std::string GetLogValue() const; private: - gravity::GravityPotential geopotential_; + s2e::gravity::GravityPotential geopotential_; size_t degree_; //!< Maximum degree setting to calculate the geo-potential std::vector> c_; //!< Cosine coefficients std::vector> s_; //!< Sine coefficients diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 1baa1319b..781ede97d 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -46,7 +46,7 @@ LunarGravityField::LunarGravityField(const int degree, const std::string file_pa } } // Initialize GravityPotential - lunar_potential_ = gravity::GravityPotential(degree, c_, s_, gravity_constants_km3_s2_ * 1e9, reference_radius_km_ * 1e3); + lunar_potential_ = s2e::gravity::GravityPotential(degree, c_, s_, gravity_constants_km3_s2_ * 1e9, reference_radius_km_ * 1e3); } bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 0a77b9c4b..dd5f049af 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -62,7 +62,7 @@ class LunarGravityField : public Disturbance { virtual std::string GetLogValue() const; private: - gravity::GravityPotential lunar_potential_; + s2e::gravity::GravityPotential lunar_potential_; double reference_radius_km_; double gravity_constants_km3_s2_; size_t degree_; //!< Maximum degree setting to calculate the geo-potential diff --git a/src/math_physics/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp index 6b55c1558..f2adcaa7e 100644 --- a/src/math_physics/gravity/gravity_potential.cpp +++ b/src/math_physics/gravity/gravity_potential.cpp @@ -10,7 +10,7 @@ #include #include -namespace gravity { +namespace s2e::gravity { GravityPotential::GravityPotential(const size_t degree, const std::vector> cosine_coefficients, const std::vector> sine_coefficients, const double gravity_constants_m3_s2, @@ -278,4 +278,4 @@ void GravityPotential::v_w_nm_update(double *v_nm, double *w_nm, const double v_ return; } -} // namespace gravity +} // namespace s2e::gravity diff --git a/src/math_physics/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp index 9e25980ba..23d6df4c9 100644 --- a/src/math_physics/gravity/gravity_potential.hpp +++ b/src/math_physics/gravity/gravity_potential.hpp @@ -12,7 +12,7 @@ #include "../math/matrix.hpp" #include "../math/vector.hpp" -namespace gravity { +namespace s2e::gravity { /** * @class GravityPotential @@ -85,6 +85,6 @@ class GravityPotential { void v_w_nm_update(double *v_nm, double *w_nm, const double v_prev, const double w_prev, const double v_prev2, const double w_prev2); }; -} // namespace gravity +} // namespace s2e::gravity #endif // S2E_LIBRARY_GRAVITY_GRAVITY_POTENTIAL_HPP_ diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index 1c5177463..54717f1c1 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -6,7 +6,7 @@ #include "gravity_potential.hpp" -using namespace gravity; +using namespace s2e::gravity; /** * @brief Test for Acceleration calculation From 5582b4d1c13843964ef66450542c094d1e2b8912 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:15:54 -0700 Subject: [PATCH 344/456] Rename namespaec numerical_integration to s2e::numerical_integration --- .../attitude_with_cantilever_vibration.cpp | 2 +- .../attitude_with_cantilever_vibration.hpp | 4 +- ...ode_attitude_with_cantilever_vibration.hpp | 4 +- .../dormand_prince_5.hpp | 4 +- .../dormand_prince_5_implementation.hpp | 4 +- .../embedded_runge_kutta.hpp | 4 +- .../embedded_runge_kutta_implementation.hpp | 4 +- .../numerical_integration/interface_ode.hpp | 4 +- .../numerical_integrator.hpp | 4 +- .../numerical_integrator_manager.hpp | 4 +- .../numerical_integration/ode_examples.hpp | 4 +- .../numerical_integration/runge_kutta.hpp | 4 +- .../numerical_integration/runge_kutta_4.hpp | 4 +- .../runge_kutta_fehlberg.hpp | 4 +- .../runge_kutta_fehlberg_implementation.hpp | 4 +- .../runge_kutta_template.hpp | 4 +- .../test_runge_kutta.cpp | 92 +++++++++---------- 17 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 47c8cad29..fe58833da 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -15,7 +15,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), numerical_integrator_(propagation_step_s, attitude_ode_, - numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file + s2e::numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; quaternion_i2b_ = quaternion_i2b; torque_b_Nm_ = torque_b_Nm; diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 95226c473..76a8f974f 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -73,8 +73,8 @@ class AttitudeWithCantileverVibration : public Attitude { s2e::math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] s2e::math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] - numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; - numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; + s2e::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; + s2e::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; }; #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 770a586db..f91e2be95 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -11,7 +11,7 @@ #include "attitude.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class AttitudeWithCantileverVibrationOde * @brief Class to implement Ordinary Differential Equations for Attitude with Cantilever Vibration @@ -221,6 +221,6 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/math_physics/numerical_integration/dormand_prince_5.hpp b/src/math_physics/numerical_integration/dormand_prince_5.hpp index 1c6090d66..90e5fb413 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5.hpp @@ -11,7 +11,7 @@ #include "embedded_runge_kutta.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class DormandPrince5 @@ -46,7 +46,7 @@ class DormandPrince5 : public EmbeddedRungeKutta { std::vector CalcInterpolationWeights(const double sigma) const; }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #include "dormand_prince_5_implementation.hpp" diff --git a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp index 4190202b4..3dc53411c 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp @@ -11,7 +11,7 @@ #include "dormand_prince_5.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { template DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde& ode) : EmbeddedRungeKutta(step_width, ode) { @@ -149,6 +149,6 @@ std::vector DormandPrince5::CalcInterpolationWeights(const double sig return interpolation_weights; } -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_DORMAND_PRINCE_5_IMPLEMENTATION_HPP_ diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta.hpp index 5e6fd605c..c453fc606 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta.hpp @@ -8,7 +8,7 @@ #include "runge_kutta.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class EmbeddedRungeKutta @@ -51,7 +51,7 @@ class EmbeddedRungeKutta : public RungeKutta { double local_truncation_error_; //!< Norm of estimated local truncation error }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #include "embedded_runge_kutta_implementation.hpp" diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp index dfed2e7e1..1a73d0775 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp @@ -7,7 +7,7 @@ #include "embedded_runge_kutta.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { template void EmbeddedRungeKutta::Integrate() { @@ -37,6 +37,6 @@ void EmbeddedRungeKutta::ControlStepWidth(const double error_tolerance) { this->step_width_ = updated_step_width; } -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_EMBEDDED_RUNGE_KUTTA_IMPLEMENTATION_HPP_ diff --git a/src/math_physics/numerical_integration/interface_ode.hpp b/src/math_physics/numerical_integration/interface_ode.hpp index 213598675..a050119b9 100644 --- a/src/math_physics/numerical_integration/interface_ode.hpp +++ b/src/math_physics/numerical_integration/interface_ode.hpp @@ -8,7 +8,7 @@ #include "../math/vector.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class InterfaceOde @@ -27,6 +27,6 @@ class InterfaceOde { virtual s2e::math::Vector DerivativeFunction(const double independent_variable, const s2e::math::Vector& state) const = 0; }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_INTERFACE_ODE_HPP_ diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 83d78e85a..e125ec810 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -11,7 +11,7 @@ #include "../math/vector.hpp" #include "interface_ode.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class NumericalIntegrator @@ -75,6 +75,6 @@ class NumericalIntegrator { s2e::math::Vector previous_state_; //!< Previous state vector }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_NUMERICAL_INTEGRATOR_HPP_ diff --git a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp index 8869f82b6..c37d3b375 100644 --- a/src/math_physics/numerical_integration/numerical_integrator_manager.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator_manager.hpp @@ -12,7 +12,7 @@ #include "runge_kutta_4.hpp" #include "runge_kutta_fehlberg.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @enum NumericalIntegrationMethod @@ -62,6 +62,6 @@ class NumericalIntegratorManager { std::shared_ptr> integrator_; }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_NUMERICAL_INTEGRATION_HPP_ diff --git a/src/math_physics/numerical_integration/ode_examples.hpp b/src/math_physics/numerical_integration/ode_examples.hpp index e6f7e3616..f248f3d3b 100644 --- a/src/math_physics/numerical_integration/ode_examples.hpp +++ b/src/math_physics/numerical_integration/ode_examples.hpp @@ -9,7 +9,7 @@ #include "../../utilities/macros.hpp" #include "interface_ode.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { class ExampleLinearOde : public InterfaceOde<1> { public: @@ -86,6 +86,6 @@ class Example2dTwoBodyOrbitOde : public InterfaceOde<4> { } }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_EXAMPLE_ODE_HPP_s diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index 333d3cc4a..2bb9a2505 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -9,7 +9,7 @@ #include "numerical_integrator.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class RungeKutta @@ -55,7 +55,7 @@ class RungeKutta : public NumericalIntegrator { void CalcSlope(); }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #include "runge_kutta_template.hpp" diff --git a/src/math_physics/numerical_integration/runge_kutta_4.hpp b/src/math_physics/numerical_integration/runge_kutta_4.hpp index 47fc6b6b5..d52106039 100644 --- a/src/math_physics/numerical_integration/runge_kutta_4.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_4.hpp @@ -10,7 +10,7 @@ #include "runge_kutta.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class RungeKutta4 @@ -51,6 +51,6 @@ class RungeKutta4 : public RungeKutta { } }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_4_HPP_ diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp index 16974368f..e22c969eb 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp @@ -8,7 +8,7 @@ #include "embedded_runge_kutta.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { /** * @class RungeKuttaFehlberg @@ -41,7 +41,7 @@ class RungeKuttaFehlberg : public EmbeddedRungeKutta { std::vector CalcInterpolationWeights(const double sigma) const; }; -} // namespace numerical_integration +} // namespace s2e::numerical_integration #include "runge_kutta_fehlberg_implementation.hpp" diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp index 04d5f8027..5ccfe3941 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp @@ -8,7 +8,7 @@ #include "runge_kutta_fehlberg.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { template RungeKuttaFehlberg::RungeKuttaFehlberg(const double step_width, const InterfaceOde& ode) : EmbeddedRungeKutta(step_width, ode) { @@ -96,6 +96,6 @@ std::vector RungeKuttaFehlberg::CalcInterpolationWeights(const double return interpolation_weights; } -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_FEHLBERG_IMPLEMENTATION_HPP_ diff --git a/src/math_physics/numerical_integration/runge_kutta_template.hpp b/src/math_physics/numerical_integration/runge_kutta_template.hpp index 577b24639..296fe302f 100644 --- a/src/math_physics/numerical_integration/runge_kutta_template.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_template.hpp @@ -7,7 +7,7 @@ #include "./runge_kutta.hpp" -namespace numerical_integration { +namespace s2e::numerical_integration { template void RungeKutta::Integrate() { @@ -34,6 +34,6 @@ void RungeKutta::CalcSlope() { } } -} // namespace numerical_integration +} // namespace s2e::numerical_integration #endif // S2E_LIBRARY_NUMERICAL_INTEGRATION_RUNGE_KUTTA_TEMPLATE_HPP_ diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index d6ab81d28..3f66d0471 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -15,8 +15,8 @@ * @brief Test for constructor */ TEST(NUMERICAL_INTEGRATION, Constructor) { - numerical_integration::ExampleLinearOde ode; - numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); s2e::math::Vector<1> state = linear_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -27,8 +27,8 @@ TEST(NUMERICAL_INTEGRATION, Constructor) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { double step_width_s = 0.1; - numerical_integration::ExampleLinearOde ode; - numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); s2e::math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -48,8 +48,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { double step_width_s = 0.1; - numerical_integration::ExampleLinearOde ode; - numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -69,8 +69,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { double step_width_s = 0.1; - numerical_integration::ExampleLinearOde ode; - numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -90,8 +90,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { double step_width_s = 0.1; - numerical_integration::ExampleLinearOde ode; - numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -111,9 +111,9 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { double step_width_s = 0.1; - numerical_integration::ExampleLinearOde ode; - numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - numerical_integration::NumericalIntegrationMethod::kRkf); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, + s2e::numerical_integration::NumericalIntegrationMethod::kRkf); s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -137,9 +137,9 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { */ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { double step_width_s = 0.1; - numerical_integration::ExampleLinearOde ode; - numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - numerical_integration::NumericalIntegrationMethod::kDp5); + s2e::numerical_integration::ExampleLinearOde ode; + s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, + s2e::numerical_integration::NumericalIntegrationMethod::kDp5); s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -163,8 +163,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { */ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { double step_width_s = 0.1; - numerical_integration::ExampleQuadraticOde ode; - numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); + s2e::numerical_integration::ExampleQuadraticOde ode; + s2e::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); s2e::math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -184,8 +184,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { */ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { double step_width_s = 0.1; - numerical_integration::ExampleQuadraticOde ode; - numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); + s2e::numerical_integration::ExampleQuadraticOde ode; + s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -205,8 +205,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { */ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { double step_width_s = 10.0; - numerical_integration::ExampleQuadraticOde ode; - numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); + s2e::numerical_integration::ExampleQuadraticOde ode; + s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -234,8 +234,8 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { */ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { double step_width_s = 0.1; - numerical_integration::ExampleQuadraticOde ode; - numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); + s2e::numerical_integration::ExampleQuadraticOde ode; + s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -255,8 +255,8 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { */ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { double step_width_s = 10.0; - numerical_integration::ExampleQuadraticOde ode; - numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); + s2e::numerical_integration::ExampleQuadraticOde ode; + s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -284,8 +284,8 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { */ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { double step_width_s = 0.1; - numerical_integration::Example1dPositionVelocityOde ode; - numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); + s2e::numerical_integration::Example1dPositionVelocityOde ode; + s2e::numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; @@ -314,8 +314,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { */ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { double step_width_s = 0.1; - numerical_integration::Example1dPositionVelocityOde ode; - numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); + s2e::numerical_integration::Example1dPositionVelocityOde ode; + s2e::numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; @@ -344,8 +344,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { */ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { double step_width_s = 0.1; - numerical_integration::Example1dPositionVelocityOde ode; - numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); + s2e::numerical_integration::Example1dPositionVelocityOde ode; + s2e::numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; @@ -374,10 +374,10 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { */ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { double step_width_s = 0.1; - numerical_integration::Example2dTwoBodyOrbitOde ode; - numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); - numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + s2e::numerical_integration::Example2dTwoBodyOrbitOde ode; + s2e::numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); + s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; @@ -444,10 +444,10 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { */ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { double step_width_s = 0.01; - numerical_integration::Example2dTwoBodyOrbitOde ode; - numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); - numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + s2e::numerical_integration::Example2dTwoBodyOrbitOde ode; + s2e::numerical_integration::RungeKutta4<4> rk4_ode(step_width_s, ode); + s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.9; @@ -514,9 +514,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { */ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { double step_width_s = 1.0; - numerical_integration::Example2dTwoBodyOrbitOde ode; - numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + s2e::numerical_integration::Example2dTwoBodyOrbitOde ode; + s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; @@ -609,9 +609,9 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { */ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { double step_width_s = 0.01; - numerical_integration::Example2dTwoBodyOrbitOde ode; - numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); - numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); + s2e::numerical_integration::Example2dTwoBodyOrbitOde ode; + s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); + s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.8; From 4727707772b9d1ada8c83a8cf08c048b2a6592de Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:18:08 -0700 Subject: [PATCH 345/456] Rename namespaec optics to s2e::optics --- src/math_physics/optics/gaussian_beam_base.cpp | 4 ++-- src/math_physics/optics/gaussian_beam_base.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index 3b558612d..0cfc5e40b 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -8,7 +8,7 @@ #include #include -namespace optics { +namespace s2e::optics { GaussianBeamBase::GaussianBeamBase(double wavelength_m, double radius_beam_waist_m, double total_power_W) : wavelength_m_(wavelength_m), radius_beam_waist_m_(radius_beam_waist_m), total_power_W_(total_power_W) {} @@ -49,4 +49,4 @@ double GaussianBeamBase::CalcIntensity_W_m2(double distance_from_beam_waist_m, d return intensity_W_m2; } -} // namespace optics +} // namespace s2e::optics diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index 010d4bb31..f9fd71432 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -8,7 +8,7 @@ #include "../math/vector.hpp" -namespace optics { +namespace s2e::optics { /** * @class GaussianBeamBase @@ -109,6 +109,6 @@ class GaussianBeamBase { s2e::math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; -} // namespace optics +} // namespace s2e::optics #endif // S2E_LIBRARY_OPTICS_GAUSSIAN_BEAM_BASE_HPP_ From 6d641f1f685645a4475cfa381a52cf26f97141cc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:19:56 -0700 Subject: [PATCH 346/456] Rename namespaec orbit to s2e::orbit --- src/dynamics/orbit/encke_orbit_propagation.cpp | 4 ++-- src/dynamics/orbit/encke_orbit_propagation.hpp | 2 +- src/dynamics/orbit/initialize_orbit.cpp | 16 ++++++++-------- src/dynamics/orbit/kepler_orbit_propagation.hpp | 4 ++-- src/dynamics/orbit/relative_orbit.cpp | 16 ++++++++-------- src/dynamics/orbit/relative_orbit.hpp | 10 +++++----- src/environment/global/gnss_satellites.cpp | 2 +- src/environment/global/gnss_satellites.hpp | 2 +- .../numerical_integration/test_runge_kutta.cpp | 16 ++++++++-------- src/math_physics/orbit/interpolation_orbit.cpp | 4 ++-- src/math_physics/orbit/interpolation_orbit.hpp | 4 ++-- src/math_physics/orbit/kepler_orbit.cpp | 4 ++-- src/math_physics/orbit/kepler_orbit.hpp | 4 ++-- src/math_physics/orbit/orbital_elements.cpp | 4 ++-- src/math_physics/orbit/orbital_elements.hpp | 4 ++-- src/math_physics/orbit/relative_orbit_models.cpp | 4 ++-- src/math_physics/orbit/relative_orbit_models.hpp | 4 ++-- .../orbit/test_interpolation_orbit.cpp | 2 +- 18 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index ccdbc265d..e25abbde4 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -90,8 +90,8 @@ void EnckeOrbitPropagation::Initialize(double current_time_jd, s2e::math::Vector // reference orbit reference_position_i_m_ = reference_position_i_m; reference_velocity_i_m_s_ = reference_velocity_i_m_s; - orbit::OrbitalElements oe_ref(gravity_constant_m3_s2_, current_time_jd, reference_position_i_m, reference_velocity_i_m_s); - reference_kepler_orbit = orbit::KeplerOrbit(gravity_constant_m3_s2_, oe_ref); + s2e::orbit::OrbitalElements oe_ref(gravity_constant_m3_s2_, current_time_jd, reference_position_i_m, reference_velocity_i_m_s); + reference_kepler_orbit = s2e::orbit::KeplerOrbit(gravity_constant_m3_s2_, oe_ref); // difference orbit difference_position_i_m_.FillUp(0.0); diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index e5ad30c75..a43db4e93 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -65,7 +65,7 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti // reference orbit s2e::math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] s2e::math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] - orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element + s2e::orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit s2e::math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 80252658b..9d071761f 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -46,8 +46,8 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string // initialize orbit for relative dynamics of formation flying RelativeOrbit::RelativeOrbitUpdateMethod update_method = (RelativeOrbit::RelativeOrbitUpdateMethod)(conf.ReadInt(section_, "relative_orbit_update_method")); - orbit::RelativeOrbitModel relative_dynamics_model_type = (orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); - orbit::StmModel stm_model_type = (orbit::StmModel)(conf.ReadInt(section_, "stm_model_type")); + s2e::orbit::RelativeOrbitModel relative_dynamics_model_type = (s2e::orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); + s2e::orbit::StmModel stm_model_type = (s2e::orbit::StmModel)(conf.ReadInt(section_, "stm_model_type")); s2e::math::Vector<3> init_relative_position_lvlh; conf.ReadVector<3>(section_, "initial_relative_position_lvlh_m", init_relative_position_lvlh); @@ -62,7 +62,7 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string init_relative_velocity_lvlh, update_method, relative_dynamics_model_type, stm_model_type, relative_information); } else if (propagate_mode == "KEPLER") { // initialize orbit for Kepler propagation - orbit::OrbitalElements oe; + s2e::orbit::OrbitalElements oe; // TODO: init_mode_kepler should be removed in the next major update if (initialize_mode == OrbitInitializeMode::kInertialPositionAndVelocity) { // initialize with position and velocity @@ -70,7 +70,7 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string conf.ReadVector<3>(section_, "initial_position_i_m", init_pos_m); s2e::math::Vector<3> init_vel_m_s; conf.ReadVector<3>(section_, "initial_velocity_i_m_s", init_vel_m_s); - oe = orbit::OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); + oe = s2e::orbit::OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); } else { // initialize with orbital elements double semi_major_axis_m = conf.ReadDouble(section_, "semi_major_axis_m"); @@ -79,9 +79,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string double raan_rad = conf.ReadDouble(section_, "raan_rad"); double arg_perigee_rad = conf.ReadDouble(section_, "argument_of_perigee_rad"); double epoch_jday = conf.ReadDouble(section_, "epoch_jday"); - oe = orbit::OrbitalElements(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); + oe = s2e::orbit::OrbitalElements(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); } - orbit::KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); + s2e::orbit::KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); orbit = new KeplerOrbitPropagation(celestial_information, current_time_jd, kepler_orbit); } else if (propagate_mode == "ENCKE") { // initialize orbit for Encke's method @@ -130,8 +130,8 @@ s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double curren double raan_rad = conf.ReadDouble(section_, "raan_rad"); double arg_perigee_rad = conf.ReadDouble(section_, "argument_of_perigee_rad"); double epoch_jday = conf.ReadDouble(section_, "epoch_jday"); - orbit::OrbitalElements oe(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); - orbit::KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); + s2e::orbit::OrbitalElements oe(epoch_jday, semi_major_axis_m, eccentricity, inclination_rad, raan_rad, arg_perigee_rad); + s2e::orbit::KeplerOrbit kepler_orbit(gravity_constant_m3_s2, oe); kepler_orbit.CalcOrbit(current_time_jd); position_i_m = kepler_orbit.GetPosition_i_m(); diff --git a/src/dynamics/orbit/kepler_orbit_propagation.hpp b/src/dynamics/orbit/kepler_orbit_propagation.hpp index ec93197ab..9604c4bc1 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.hpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.hpp @@ -13,7 +13,7 @@ * @class KeplerOrbitPropagation * @brief Class to propagate spacecraft orbit with Kepler equation */ -class KeplerOrbitPropagation : public Orbit, public orbit::KeplerOrbit { +class KeplerOrbitPropagation : public Orbit, public s2e::orbit::KeplerOrbit { public: // Initialize with orbital elements /** @@ -23,7 +23,7 @@ class KeplerOrbitPropagation : public Orbit, public orbit::KeplerOrbit { * @param [in] current_time_jd: Current Julian day [day] * @param [in] kepler_orbit: Kepler orbit */ - KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, orbit::KeplerOrbit kepler_orbit); + KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, s2e::orbit::KeplerOrbit kepler_orbit); /** * @fn ~KeplerOrbitPropagation * @brief Destructor diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 831e8d763..5e6065776 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -10,8 +10,8 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, - RelativeOrbitUpdateMethod update_method, orbit::RelativeOrbitModel relative_dynamics_model_type, - orbit::StmModel stm_model_type, RelativeInformation* relative_information) + RelativeOrbitUpdateMethod update_method, s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, + s2e::orbit::StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), s2e::math::OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), @@ -66,12 +66,12 @@ void RelativeOrbit::InitializeState(s2e::math::Vector<3> relative_position_lvlh_ TransformEcefToGeodetic(); } -void RelativeOrbit::CalculateSystemMatrix(orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, +void RelativeOrbit::CalculateSystemMatrix(s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2) { switch (relative_dynamics_model_type) { - case orbit::RelativeOrbitModel::kHill: { + case s2e::orbit::RelativeOrbitModel::kHill: { double reference_sat_orbit_radius = reference_sat_orbit->GetPosition_i_m().CalcNorm(); - system_matrix_ = orbit::CalcHillSystemMatrix(reference_sat_orbit_radius, gravity_constant_m3_s2); + system_matrix_ = s2e::orbit::CalcHillSystemMatrix(reference_sat_orbit_radius, gravity_constant_m3_s2); } default: { // NOT REACHED @@ -80,12 +80,12 @@ void RelativeOrbit::CalculateSystemMatrix(orbit::RelativeOrbitModel relative_dyn } } -void RelativeOrbit::CalculateStm(orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, +void RelativeOrbit::CalculateStm(s2e::orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec) { switch (stm_model_type) { - case orbit::StmModel::kHcw: { + case s2e::orbit::StmModel::kHcw: { double reference_sat_orbit_radius = reference_sat_orbit->GetPosition_i_m().CalcNorm(); - stm_ = orbit::CalcHcwStm(reference_sat_orbit_radius, gravity_constant_m3_s2, elapsed_sec); + stm_ = s2e::orbit::CalcHcwStm(reference_sat_orbit_radius, gravity_constant_m3_s2, elapsed_sec); } default: { // NOT REACHED diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index c281cd3c9..3a98c1249 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -41,7 +41,7 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati */ RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, - orbit::RelativeOrbitModel relative_dynamics_model_type, orbit::StmModel stm_model_type, RelativeInformation* relative_information); + s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, s2e::orbit::StmModel stm_model_type, RelativeInformation* relative_information); /** * @fn ~RelativeOrbit * @brief Destructor @@ -81,8 +81,8 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati s2e::math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame RelativeOrbitUpdateMethod update_method_; //!< Update method - orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type - orbit::StmModel stm_model_type_; //!< State Transition Matrix model type + s2e::orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type + s2e::orbit::StmModel stm_model_type_; //!< State Transition Matrix model type RelativeInformation* relative_information_; //!< Relative information /** @@ -102,7 +102,7 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati * @param [in] reference_sat_orbit: Orbit information of reference satellite * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] */ - void CalculateSystemMatrix(orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2); + void CalculateSystemMatrix(s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2); /** * @fn CalculateStm * @brief Calculate State Transition Matrix @@ -111,7 +111,7 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @param [in] elapsed_sec: Elapsed time [sec] */ - void CalculateStm(orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec); + void CalculateStm(s2e::orbit::StmModel stm_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2, double elapsed_sec); /** * @fn PropagateRk4 * @brief Propagate relative orbit with RK4 diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index ecc7683c8..07962c016 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -40,7 +40,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con reference_time_ = time_system::EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); // Initialize orbit - orbit_.assign(number_of_calculated_gnss_satellites_, orbit::InterpolationOrbit(kNumberOfInterpolation)); + orbit_.assign(number_of_calculated_gnss_satellites_, s2e::orbit::InterpolationOrbit(kNumberOfInterpolation)); // Initialize clock std::vector temp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 24af47f6f..f807d0a75 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -120,7 +120,7 @@ class GnssSatellites : public ILoggable { size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation time_system::EpochTime current_epoch_time_; //!< The last updated time - std::vector orbit_; //!< GNSS satellite orbit with interpolation + std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation // References diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index 3f66d0471..b2571ba5c 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -416,8 +416,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - orbit::KeplerOrbit kepler(1.0, oe); + s2e::orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + s2e::orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 2e-4; @@ -486,8 +486,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - orbit::KeplerOrbit kepler(1.0, oe); + s2e::orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + s2e::orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 2e-1; @@ -551,8 +551,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - orbit::KeplerOrbit kepler(1.0, oe); + s2e::orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + s2e::orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 5e-2; @@ -646,8 +646,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { initial_position[1] = initial_state[1]; initial_velocity[0] = initial_state[2]; initial_velocity[1] = initial_state[3]; - orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); - orbit::KeplerOrbit kepler(1.0, oe); + s2e::orbit::OrbitalElements oe(1.0, 0.0, initial_position, initial_velocity); + s2e::orbit::KeplerOrbit kepler(1.0, oe); kepler.CalcOrbit((double)(step_num * step_width_s) / (24.0 * 60.0 * 60.0)); double error_tolerance = 1e-5; diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index 393b30166..db373629a 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -5,7 +5,7 @@ #include "interpolation_orbit.hpp" -namespace orbit { +namespace s2e::orbit { InterpolationOrbit::InterpolationOrbit(const size_t degree) { std::vector time; @@ -37,4 +37,4 @@ s2e::math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const dou return output_position; } -} // namespace orbit +} // namespace s2e::orbit diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index db215f534..1443ec959 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -10,7 +10,7 @@ #include #include -namespace orbit { +namespace s2e::orbit { /** * @class InterpolationOrbit @@ -71,6 +71,6 @@ class InterpolationOrbit { std::vector interpolation_position_; // 3D vector of interpolation }; -} // namespace orbit +} // namespace s2e::orbit #endif // S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index 389cc96ab..1f7630ef2 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -7,7 +7,7 @@ #include "../math/matrix_vector.hpp" #include "../math/s2e_math.hpp" -namespace orbit { +namespace s2e::orbit { KeplerOrbit::KeplerOrbit() {} // Initialize with orbital elements @@ -100,4 +100,4 @@ double KeplerOrbit::SolveKeplerNewtonMethod(const double eccentricity, const dou return u_rad; } -} // namespace orbit +} // namespace s2e::orbit diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index b76f15cac..7a12ca760 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -10,7 +10,7 @@ #include "../math/vector.hpp" #include "./orbital_elements.hpp" -namespace orbit { +namespace s2e::orbit { /** * @class KeplerOrbit @@ -89,6 +89,6 @@ class KeplerOrbit { double SolveKeplerNewtonMethod(const double eccentricity, const double mean_anomaly_rad, const double angle_limit_rad, const int iteration_limit); }; -} // namespace orbit +} // namespace s2e::orbit #endif // S2E_LIBRARY_ORBIT_KEPLER_ORBIT_HPP_ diff --git a/src/math_physics/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp index 4c02fac73..69817f80f 100644 --- a/src/math_physics/orbit/orbital_elements.cpp +++ b/src/math_physics/orbit/orbital_elements.cpp @@ -9,7 +9,7 @@ #include "../math/s2e_math.hpp" -namespace orbit { +namespace s2e::orbit { OrbitalElements::OrbitalElements() {} @@ -88,4 +88,4 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons epoch_jday_ = time_jday - dt_s / (24.0 * 60.0 * 60.0); } -} // namespace orbit +} // namespace s2e::orbit diff --git a/src/math_physics/orbit/orbital_elements.hpp b/src/math_physics/orbit/orbital_elements.hpp index 66ccf0c05..b177fda41 100644 --- a/src/math_physics/orbit/orbital_elements.hpp +++ b/src/math_physics/orbit/orbital_elements.hpp @@ -8,7 +8,7 @@ #include "../math/vector.hpp" -namespace orbit { +namespace s2e::orbit { /** * @class OrbitalElements @@ -106,6 +106,6 @@ class OrbitalElements { const s2e::math::Vector<3> velocity_i_m_s); }; -} // namespace orbit +} // namespace s2e::orbit #endif // S2E_LIBRARY_ORBIT_ORBITAL_ELEMENTS_HPP_ diff --git a/src/math_physics/orbit/relative_orbit_models.cpp b/src/math_physics/orbit/relative_orbit_models.cpp index b8d619734..0c6e358b6 100644 --- a/src/math_physics/orbit/relative_orbit_models.cpp +++ b/src/math_physics/orbit/relative_orbit_models.cpp @@ -4,7 +4,7 @@ */ #include "relative_orbit_models.hpp" -namespace orbit { +namespace s2e::orbit { s2e::math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { s2e::math::Matrix<6, 6> system_matrix; @@ -94,4 +94,4 @@ s2e::math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constan return stm; } -} // namespace orbit +} // namespace s2e::orbit diff --git a/src/math_physics/orbit/relative_orbit_models.hpp b/src/math_physics/orbit/relative_orbit_models.hpp index 62957b28c..1a12bf634 100644 --- a/src/math_physics/orbit/relative_orbit_models.hpp +++ b/src/math_physics/orbit/relative_orbit_models.hpp @@ -9,7 +9,7 @@ #include "../math/matrix.hpp" #include "../math/vector.hpp" -namespace orbit { +namespace s2e::orbit { /** * @enum RelativeOrbitModel @@ -44,6 +44,6 @@ s2e::math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const */ s2e::math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); -} // namespace orbit +} // namespace s2e::orbit #endif // S2E_LIBRARY_ORBIT_RELATIVE_ORBIT_MODEL_HPP_ diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index b0972817d..f83a3f0cf 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -8,7 +8,7 @@ #include "interpolation_orbit.hpp" -using namespace orbit; +using namespace s2e::orbit; /** * @brief Test for Constructor function From 63d04608d5a1598152661f66f079a510759b86e1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:22:26 -0700 Subject: [PATCH 347/456] Rename namespaec planet_rotation to s2e::planet_rotation --- src/environment/global/moon_rotation.cpp | 2 +- src/math_physics/planet_rotation/moon_rotation_utilities.cpp | 4 ++-- src/math_physics/planet_rotation/moon_rotation_utilities.hpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index 75abc2e5b..a49e236ec 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -19,7 +19,7 @@ void MoonRotation::Update(const SimulationTime& simulation_time) { if (mode_ == MoonRotationMode::kSimple) { s2e::math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); s2e::math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); - dcm_j2000_to_mcmf_ = planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); + dcm_j2000_to_mcmf_ = s2e::planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); } else if (mode_ == MoonRotationMode::kIauMoon) { ConstSpiceChar from[] = "J2000"; ConstSpiceChar to[] = "IAU_MOON"; diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index 0842aa301..f2d30c96c 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -10,7 +10,7 @@ #include -namespace planet_rotation { +namespace s2e::planet_rotation { s2e::math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s) { s2e::math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); @@ -49,4 +49,4 @@ s2e::math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { return dcm_me_pa; } -} // namespace planet_rotation +} // namespace s2e::planet_rotation diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index cd3c8b442..d7e3eff30 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -12,7 +12,7 @@ #include "math_physics/math/matrix.hpp" #include "math_physics/math/vector.hpp" -namespace planet_rotation { +namespace s2e::planet_rotation { /** * @fn CalcDcmEciToPrincipalAxis @@ -36,6 +36,6 @@ s2e::math::Matrix<3, 3> CalcDcmEciToMeanEarth(const s2e::math::Vector<3> moon_po */ s2e::math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); -} // namespace planet_rotation +} // namespace s2e::planet_rotation #endif // S2E_LIBRARY_PLANET_ROTATION_MOON_MEAN_EARTH_PRINCIPAL_AXIS_FRAME_HPP_ From ba23a62cf15a51a934a2e4ca55d757966afc79b5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:25:04 -0700 Subject: [PATCH 348/456] Rename namespaec randomization to s2e::randomization --- src/components/base/sensor.hpp | 2 +- src/components/ideal/attitude_observer.hpp | 4 ++-- src/components/ideal/force_generator.hpp | 4 ++-- src/components/ideal/orbit_observer.hpp | 2 +- src/components/ideal/torque_generator.hpp | 4 ++-- src/components/real/aocs/gnss_receiver.hpp | 4 ++-- src/components/real/aocs/magnetorquer.hpp | 2 +- src/components/real/aocs/star_sensor.hpp | 6 +++--- src/components/real/aocs/sun_sensor.cpp | 2 +- src/components/real/aocs/sun_sensor.hpp | 4 ++-- src/components/real/propulsion/simple_thruster.hpp | 4 ++-- src/disturbances/magnetic_disturbance.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- src/math_physics/randomization/global_randomization.hpp | 2 +- .../minimal_standard_linear_congruential_generator.cpp | 2 +- .../minimal_standard_linear_congruential_generator.hpp | 4 ++-- ..._standard_linear_congruential_generator_with_shuffle.cpp | 2 +- ..._standard_linear_congruential_generator_with_shuffle.hpp | 4 ++-- src/math_physics/randomization/normal_randomization.cpp | 2 +- src/math_physics/randomization/normal_randomization.hpp | 6 +++--- src/math_physics/randomization/random_walk.hpp | 2 +- 22 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 398b24263..43fabd0cf 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -55,7 +55,7 @@ class Sensor { s2e::math::Matrix scale_factor_; //!< Scale factor matrix s2e::math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame s2e::math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame - randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random + s2e::randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random RandomWalk random_walk_noise_c_; //!< Random Walk /** diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 1efc18b71..1b80659d0 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -62,8 +62,8 @@ class AttitudeObserver : public Component, public ILoggable { protected: s2e::math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion - randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise - randomization::NormalRand direction_noise_; //!< Normal random for direction noise + s2e::randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise + s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise const Attitude& attitude_; //!< Attitude information }; diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 9a07fe269..607e0a6fd 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -100,8 +100,8 @@ class ForceGenerator : public Component, public ILoggable { s2e::math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise - randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - randomization::NormalRand direction_noise_; //!< Normal random for direction noise + s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index ab3aa9887..6c1119986 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -82,7 +82,7 @@ class OrbitObserver : public Component, public ILoggable { s2e::math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] NoiseFrame noise_frame_; //!< Noise definition frame - randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] + s2e::randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables const Orbit& orbit_; //!< Orbit information diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index c03aa4da1..3b8606464 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -78,8 +78,8 @@ class TorqueGenerator : public Component, public ILoggable { s2e::math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise - randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - randomization::NormalRand direction_noise_; //!< Normal random for direction noise + s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index ad9f38103..14a4dbc86 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -137,8 +137,8 @@ class GnssReceiver : public Component, public ILoggable { AntennaModel antenna_model_; //!< Antenna model // Simple position observation - randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] - randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] + s2e::randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] + s2e::randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] s2e::math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] s2e::math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] s2e::geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 112125eb9..0af9f30e7 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -134,7 +134,7 @@ class Magnetorquer : public Component, public ILoggable { s2e::math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] RandomWalk random_walk_c_Am2_; //!< Random walk noise - randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise + s2e::randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 40f7c46a0..1120f9eeb 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -115,9 +115,9 @@ class StarSensor : public Component, public ILoggable { s2e::math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame // Noise parameters - randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction - randomization::NormalRand orthogonal_direction_noise_; //!< Random noise for orthogonal direction of sight - randomization::NormalRand sight_direction_noise_; //!< Random noise for sight direction + s2e::randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction + s2e::randomization::NormalRand orthogonal_direction_noise_; //!< Random noise for orthogonal direction of sight + s2e::randomization::NormalRand sight_direction_noise_; //!< Random noise for sight direction // Delay emulation parameters int max_delay_; //!< Max delay diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index b9fbd3cae..0b230e787 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -7,7 +7,7 @@ #include #include -using randomization::NormalRand; +using s2e::randomization::NormalRand; #include #include #include diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 81625a87c..532dfb18f 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -100,8 +100,8 @@ class SunSensor : public Component, public ILoggable { double detectable_angle_rad_; //!< half angle (>0) [rad] bool sun_detected_flag_ = false; //!< Sun detected flag // Noise parameters - randomization::NormalRand random_noise_alpha_; //!< Normal random for alpha angle - randomization::NormalRand random_noise_beta_; //!< Normal random for beta angle + s2e::randomization::NormalRand random_noise_alpha_; //!< Normal random for alpha angle + s2e::randomization::NormalRand random_noise_beta_; //!< Normal random for beta angle double bias_noise_alpha_rad_ = 0.0; //!< Constant bias for alpha angle (Value is calculated by random number generator) double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index f2466fcc9..f297b8af2 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -114,8 +114,8 @@ class SimpleThruster : public Component, public ILoggable { double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] - randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error - randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error + s2e::randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error + s2e::randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error // outputs Vector<3> output_thrust_b_N_{0.0}; //!< Generated thrust on the body fixed frame [N] Vector<3> output_torque_b_Nm_{0.0}; //!< Generated torque on the body fixed frame [Nm] diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 9af45805c..0336b1182 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -34,7 +34,7 @@ void MagneticDisturbance::CalcRMM() { static s2e::math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); static s2e::math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant - static randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), + static s2e::randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), global_randomization.MakeSeed()); rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 1ea0636a6..ceb1a9139 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -78,7 +78,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& double Atmosphere::AddNoise(const double rho_kg_m3) { // RandomWalk rw(rho_kg_m3*rw_stepwidth_,rho_kg_m3*rw_stddev_,rho_kg_m3*rw_limit_); - randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, global_randomization.MakeSeed()); + s2e::randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, global_randomization.MakeSeed()); double nrd = nr; return rho_kg_m3 + nrd; diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 6fcdcc7f9..df45b492c 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -44,7 +44,7 @@ void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { static s2e::math::Vector<3> limit(random_walk_limit_nT_); static RandomWalk<3> random_walk(0.1, standard_deviation, limit); - static randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); + static s2e::randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); for (int i = 0; i < 3; ++i) { magnetic_field_array_i_nT[i] += random_walk[i] + white_noise; diff --git a/src/math_physics/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp index 24c88ec2b..67c52b6f6 100644 --- a/src/math_physics/randomization/global_randomization.hpp +++ b/src/math_physics/randomization/global_randomization.hpp @@ -33,7 +33,7 @@ class GlobalRandomization { private: static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed - randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization + s2e::randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization long seed_; //!< Seed of global randomization }; diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp index ccd179507..c1821e93b 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.cpp @@ -5,7 +5,7 @@ */ #include "minimal_standard_linear_congruential_generator.hpp" -using randomization::MinimalStandardLcg; +using s2e::randomization::MinimalStandardLcg; #include diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp index 9120faffd..01ff61947 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator.hpp @@ -7,7 +7,7 @@ #ifndef S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ #define S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ -namespace randomization { +namespace s2e::randomization { /** * @class MinimalStandardLcg @@ -52,6 +52,6 @@ class MinimalStandardLcg { long seed_; //!< Seed of randomization }; -} // namespace randomization +} // namespace s2e::randomization #endif // S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_HPP_ diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp index ea0a6bf43..3bdd51de9 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.cpp @@ -5,7 +5,7 @@ */ #include "minimal_standard_linear_congruential_generator_with_shuffle.hpp" -using randomization::MinimalStandardLcgWithShuffle; +using s2e::randomization::MinimalStandardLcgWithShuffle; MinimalStandardLcgWithShuffle::MinimalStandardLcgWithShuffle() : table_position_(0) { Initialize(); } diff --git a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp index 5c016291f..3d5913bb7 100644 --- a/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp +++ b/src/math_physics/randomization/minimal_standard_linear_congruential_generator_with_shuffle.hpp @@ -11,7 +11,7 @@ #include "minimal_standard_linear_congruential_generator.hpp" -namespace randomization { +namespace s2e::randomization { /** * @class MinimalStandardLcgWithShuffle @@ -58,6 +58,6 @@ class MinimalStandardLcgWithShuffle { double mixing_table_[kTableSize]; //!< Mixing table }; -} // namespace randomization +} // namespace s2e::randomization #endif // S2E_LIBRARY_RANDOMIZATION_MINIMAL_STANDARD_LINEAR_CONGRUENTIAL_GENERATOR_WITH_SHUFFLE_HPP_ diff --git a/src/math_physics/randomization/normal_randomization.cpp b/src/math_physics/randomization/normal_randomization.cpp index 0e5c9e36c..b136700cb 100644 --- a/src/math_physics/randomization/normal_randomization.cpp +++ b/src/math_physics/randomization/normal_randomization.cpp @@ -4,7 +4,7 @@ * @note Ref: NUMERICAL RECIPES in C, p.216-p.217 */ #include "normal_randomization.hpp" -using randomization::NormalRand; +using s2e::randomization::NormalRand; #include //DBL_EPSILON #include //sqrt, log; diff --git a/src/math_physics/randomization/normal_randomization.hpp b/src/math_physics/randomization/normal_randomization.hpp index 81e688091..b230680a3 100644 --- a/src/math_physics/randomization/normal_randomization.hpp +++ b/src/math_physics/randomization/normal_randomization.hpp @@ -8,9 +8,9 @@ #define S2E_LIBRARY_RANDOMIZATION_NORMAL_RANDOMIZATION_HPP_ #include "minimal_standard_linear_congruential_generator_with_shuffle.hpp" -using randomization::MinimalStandardLcgWithShuffle; +using s2e::randomization::MinimalStandardLcgWithShuffle; -namespace randomization { +namespace s2e::randomization { /** * @class NormalRand @@ -106,6 +106,6 @@ class NormalRand { bool is_empty_; //!< Flag to show the holder_ has available value }; -} // namespace randomization +} // namespace s2e::randomization #endif // S2E_LIBRARY_RANDOMIZATION_NORMAL_RANDOMIZATION_HPP_ diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index 822d621aa..9f05aff9f 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -37,7 +37,7 @@ class RandomWalk : public s2e::math::OrdinaryDifferentialEquation { private: s2e::math::Vector limit_; //!< Limit of random walk - randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise + s2e::randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; #include "random_walk_template_functions.hpp" // template function definisions. From 2539d242cb326d561ecf6f239dde703ddb966de1 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:32:40 -0700 Subject: [PATCH 349/456] Rename namespaec randomization to s2e::randomization --- src/components/base/sensor_template_functions.hpp | 2 +- src/components/ideal/orbit_observer.cpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 8 ++++---- src/components/real/aocs/star_sensor.cpp | 12 ++++++------ src/components/real/aocs/sun_sensor.cpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 2 +- .../randomization/global_randomization.cpp | 6 +++++- .../randomization/global_randomization.hpp | 4 ++++ .../randomization/random_walk_template_functions.hpp | 2 +- 11 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index ef6f9a7e5..b0e4f0300 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -20,7 +20,7 @@ Sensor::Sensor(const s2e::math::Matrix& scale_factor, const s2e::math:: range_to_zero_c_(range_to_zero_c), random_walk_noise_c_(random_walk_step_width_s, random_walk_standard_deviation_c, random_walk_limit_c) { for (size_t i = 0; i < N; i++) { - normal_random_noise_c_[i].SetParameters(0.0, normal_random_standard_deviation_c[i], global_randomization.MakeSeed()); + normal_random_noise_c_[i].SetParameters(0.0, normal_random_standard_deviation_c[i], s2e::randomization::global_randomization.MakeSeed()); } RangeCheck(); } diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 48a2157d2..f724d0ce9 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -12,7 +12,7 @@ OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generato const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { - normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], global_randomization.MakeSeed()); + normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], s2e::randomization::global_randomization.MakeSeed()); } } diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 87e88abfd..f5c28e8cd 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -26,8 +26,8 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) { for (size_t i = 0; i < 3; i++) { - position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], global_randomization.MakeSeed()); - velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], global_randomization.MakeSeed()); + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], s2e::randomization::global_randomization.MakeSeed()); + velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], s2e::randomization::global_randomization.MakeSeed()); } } @@ -46,8 +46,8 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) { for (size_t i = 0; i < 3; i++) { - position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], global_randomization.MakeSeed()); - velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], global_randomization.MakeSeed()); + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], s2e::randomization::global_randomization.MakeSeed()); + velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], s2e::randomization::global_randomization.MakeSeed()); } } diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index c6c0e5384..193805226 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -24,9 +24,9 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, con : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), - rotation_noise_(global_randomization.MakeSeed()), - orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, global_randomization.MakeSeed()), - sight_direction_noise_(0.0, standard_deviation_sight_direction, global_randomization.MakeSeed()), + rotation_noise_(s2e::randomization::global_randomization.MakeSeed()), + orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, s2e::randomization::global_randomization.MakeSeed()), + sight_direction_noise_(0.0, standard_deviation_sight_direction, s2e::randomization::global_randomization.MakeSeed()), buffer_position_(0), step_time_s_(step_time_s), output_delay_(output_delay), @@ -49,9 +49,9 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, Pow : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), - rotation_noise_(global_randomization.MakeSeed()), - orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, global_randomization.MakeSeed()), - sight_direction_noise_(0.0, standard_deviation_sight_direction, global_randomization.MakeSeed()), + rotation_noise_(s2e::randomization::global_randomization.MakeSeed()), + orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, s2e::randomization::global_randomization.MakeSeed()), + sight_direction_noise_(0.0, standard_deviation_sight_direction, s2e::randomization::global_randomization.MakeSeed()), buffer_position_(0), step_time_s_(step_time_s), output_delay_(output_delay), diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 0b230e787..3070355e4 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -44,7 +44,7 @@ SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, Power void SunSensor::Initialize(const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad) { // Bias - NormalRand nr(0.0, bias_noise_standard_deviation_rad, global_randomization.MakeSeed()); + NormalRand nr(0.0, bias_noise_standard_deviation_rad, s2e::randomization::global_randomization.MakeSeed()); bias_noise_alpha_rad_ += nr; bias_noise_beta_rad_ += nr; diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 0336b1182..054032b9c 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -35,7 +35,7 @@ void MagneticDisturbance::CalcRMM() { static s2e::math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant static s2e::randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), - global_randomization.MakeSeed()); + s2e::randomization::global_randomization.MakeSeed()); rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); for (int i = 0; i < 3; ++i) { diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index ceb1a9139..ae789fdb3 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -78,7 +78,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& double Atmosphere::AddNoise(const double rho_kg_m3) { // RandomWalk rw(rho_kg_m3*rw_stepwidth_,rho_kg_m3*rw_stddev_,rho_kg_m3*rw_limit_); - s2e::randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, global_randomization.MakeSeed()); + s2e::randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, s2e::randomization::global_randomization.MakeSeed()); double nrd = nr; return rho_kg_m3 + nrd; diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index df45b492c..48cdc57c0 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -44,7 +44,7 @@ void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { static s2e::math::Vector<3> limit(random_walk_limit_nT_); static RandomWalk<3> random_walk(0.1, standard_deviation, limit); - static s2e::randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, global_randomization.MakeSeed()); + static s2e::randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, s2e::randomization::global_randomization.MakeSeed()); for (int i = 0; i < 3; ++i) { magnetic_field_array_i_nT[i] += random_walk[i] + white_noise; diff --git a/src/math_physics/randomization/global_randomization.cpp b/src/math_physics/randomization/global_randomization.cpp index 7a7282902..5c1bdef1a 100644 --- a/src/math_physics/randomization/global_randomization.cpp +++ b/src/math_physics/randomization/global_randomization.cpp @@ -5,6 +5,8 @@ #include "global_randomization.hpp" +namespace s2e::randomization { + GlobalRandomization global_randomization; GlobalRandomization::GlobalRandomization() { seed_ = 0xdeadbeef; } @@ -21,4 +23,6 @@ long GlobalRandomization::MakeSeed() { seed = 0xdeadbeef; } return seed; -} \ No newline at end of file +} + +} // namespace s2e::randomization diff --git a/src/math_physics/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp index 67c52b6f6..fd9dac4a0 100644 --- a/src/math_physics/randomization/global_randomization.hpp +++ b/src/math_physics/randomization/global_randomization.hpp @@ -8,6 +8,8 @@ #include "./minimal_standard_linear_congruential_generator.hpp" +namespace s2e::randomization { + /** * @class global_randomization.hpp * @brief Class to manage global randomization @@ -39,4 +41,6 @@ class GlobalRandomization { extern GlobalRandomization global_randomization; //!< Global randomization +} // namespace s2e::randomization + #endif // S2E_LIBRARY_RANDOMIZATION_GLOBAL_RANDOMIZATION_HPP_ diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index ee224018c..4c4a77ca6 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -14,7 +14,7 @@ RandomWalk::RandomWalk(double step_width_s, const s2e::math::Vector& stand : s2e::math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { // Set standard deviation for (size_t i = 0; i < N; ++i) { - normal_randomizer_[i].SetParameters(0.0, standard_deviation[i], global_randomization.MakeSeed()); + normal_randomizer_[i].SetParameters(0.0, standard_deviation[i], s2e::randomization::global_randomization.MakeSeed()); } } From 2c597240f7793993d6d3837eb187a83aebd8bd31 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 14 Sep 2024 00:33:44 -0700 Subject: [PATCH 350/456] Rename namespaec time_system to s2e::time_system --- src/environment/global/gnss_satellites.cpp | 26 +++++++++---------- src/environment/global/gnss_satellites.hpp | 12 ++++----- src/math_physics/gnss/antex_file_reader.cpp | 4 +-- src/math_physics/gnss/antex_file_reader.hpp | 14 +++++----- src/math_physics/gnss/sp3_file_reader.cpp | 18 ++++++------- src/math_physics/gnss/sp3_file_reader.hpp | 14 +++++----- .../time_system/date_time_format.cpp | 4 +-- .../time_system/date_time_format.hpp | 4 +-- src/math_physics/time_system/epoch_time.cpp | 4 +-- src/math_physics/time_system/epoch_time.hpp | 4 +-- src/math_physics/time_system/gps_time.cpp | 4 +-- src/math_physics/time_system/gps_time.hpp | 4 +-- .../time_system/test_date_time_format.cpp | 2 +- .../time_system/test_epoch_time.cpp | 2 +- .../time_system/test_gps_time.cpp | 2 +- 15 files changed, 59 insertions(+), 59 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 07962c016..11b551228 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -19,7 +19,7 @@ using namespace s2e::gnss; const size_t kNumberOfInterpolation = 9; -void GnssSatellites::Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time) { +void GnssSatellites::Initialize(const std::vector& sp3_files, const s2e::time_system::EpochTime start_time) { sp3_files_ = sp3_files; current_epoch_time_ = start_time; @@ -37,7 +37,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con if (nearest_epoch_id >= half_interpolation_number) { reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; } - reference_time_ = time_system::EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); + reference_time_ = s2e::time_system::EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); // Initialize orbit orbit_.assign(number_of_calculated_gnss_satellites_, s2e::orbit::InterpolationOrbit(kNumberOfInterpolation)); @@ -60,9 +60,9 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { // Get time UTC current_utc = simulation_time.GetCurrentUtc(); - time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, + s2e::time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, (size_t)current_utc.minute, current_utc.second); - current_epoch_time_ = time_system::EpochTime(current_date_time); + current_epoch_time_ = s2e::time_system::EpochTime(current_date_time); // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); @@ -74,10 +74,10 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } -s2e::math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time) const { +s2e::math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return s2e::math::Vector<3>(0.0); - time_system::EpochTime target_time; + s2e::time_system::EpochTime target_time; if (time.GetTime_s() == 0) { target_time = current_epoch_time_; @@ -92,10 +92,10 @@ s2e::math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satell return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, s2e::math::tau / kOrbitalPeriodCorrection_s); } -double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time) const { +double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return 0.0; - time_system::EpochTime target_time; + s2e::time_system::EpochTime target_time; if (time.GetTime_s() == 0) { target_time = current_epoch_time_; @@ -109,9 +109,9 @@ double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_sys return clock_[gnss_satellite_id].CalcPolynomial(diff_s) * 1e-6; } -bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time) { +bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const s2e::time_system::EpochTime current_time) { for (size_t i = 0; i < sp3_files_.size(); i++) { - time_system::EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); + s2e::time_system::EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); double diff_s = current_time.GetTimeWithFraction_s() - sp3_start_time.GetTimeWithFraction_s(); if (diff_s < 0.0) { // Error @@ -129,7 +129,7 @@ bool GnssSatellites::UpdateInterpolationInformation() { Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { - time_system::EpochTime sp3_time = time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); + s2e::time_system::EpochTime sp3_time = s2e::time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); s2e::math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); @@ -226,10 +226,10 @@ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotat } // - time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), + s2e::time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); - time_system::EpochTime start_epoch_time(start_date_time); + s2e::time_system::EpochTime start_epoch_time(start_date_time); gnss_satellites->Initialize(sp3_file_readers, start_epoch_time); return gnss_satellites; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index f807d0a75..6051ce4f5 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -54,7 +54,7 @@ class GnssSatellites : public ILoggable { * @param [in] sp3_files: List of SP3 files * @param [in] start_time: The simulation start time */ - void Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time); + void Initialize(const std::vector& sp3_files, const s2e::time_system::EpochTime start_time); /** * @fn IsCalcEnabled @@ -87,7 +87,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - s2e::math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + s2e::math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -96,7 +96,7 @@ class GnssSatellites : public ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite clock offset at the time. Or return zero when the arguments are out of range. */ - double GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + double GetClock_s(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; // Override ILoggable /** @@ -116,9 +116,9 @@ class GnssSatellites : public ILoggable { std::vector sp3_files_; //!< List of SP3 files size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites size_t sp3_file_id_; //!< Current SP3 file ID - time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling + s2e::time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - time_system::EpochTime current_epoch_time_; //!< The last updated time + s2e::time_system::EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation std::vector clock_; //!< GNSS satellite clock offset with interpolation @@ -133,7 +133,7 @@ class GnssSatellites : public ILoggable { * @param [in] current_time: Target time * @return true means no error, false means the time argument is out of range */ - bool GetCurrentSp3File(s2e::gnss::Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time); + bool GetCurrentSp3File(s2e::gnss::Sp3FileReader& current_sp3_file, const s2e::time_system::EpochTime current_time); /** * @fn UpdateInterpolationInformation diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index 2bcd93793..c27c34ff7 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -192,11 +192,11 @@ AntexPhaseCenterData AntexFileReader::ReadPhaseCenterData(std::ifstream& antex_f return phase_center_data; } -time_system::DateTime AntexFileReader::ReadDateTime(std::string line) { +s2e::time_system::DateTime AntexFileReader::ReadDateTime(std::string line) { size_t year, month, day, hour, minute; double second; sscanf(line.c_str(), "%zu %2zu %2zu %2zu %2zu %10lf", &year, &month, &day, &hour, &minute, &second); - return time_system::DateTime(year, month, day, hour, minute, second); + return s2e::time_system::DateTime(year, month, day, hour, minute, second); } } // namespace s2e::gnss diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index c25c49477..179616bb9 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -203,12 +203,12 @@ class AntexSatelliteData { * @fn SetValidStartTime * @param[in] valid_start_time: Valid start time */ - inline void SetValidStartTime(const time_system::DateTime valid_start_time) { valid_start_time_ = valid_start_time; }; + inline void SetValidStartTime(const s2e::time_system::DateTime valid_start_time) { valid_start_time_ = valid_start_time; }; /** * @fn SetValidEndTime * @param[in] valid_end_time: Valid end time */ - inline void SetValidEndTime(const time_system::DateTime valid_end_time) { valid_end_time_ = valid_end_time; }; + inline void SetValidEndTime(const s2e::time_system::DateTime valid_end_time) { valid_end_time_ = valid_end_time; }; /** * @fn SetNumberOfFrequency * @param[in] number_of_frequency: Number of frequency @@ -235,12 +235,12 @@ class AntexSatelliteData { * @fn GetValidStartTime * @return Valid start time */ - inline time_system::DateTime GetValidStartTime() const { return valid_start_time_; }; + inline s2e::time_system::DateTime GetValidStartTime() const { return valid_start_time_; }; /** * @fn GetValidEndTime * @return Valid end time */ - inline time_system::DateTime GetValidEndTime() const { return valid_end_time_; }; + inline s2e::time_system::DateTime GetValidEndTime() const { return valid_end_time_; }; /** * @fn GetNumberOfFrequency * @return Number of frequency @@ -256,8 +256,8 @@ class AntexSatelliteData { private: std::string antenna_type_; //!< Antenna type std::string serial_number_; //!< Serial number or satellite code - time_system::DateTime valid_start_time_; //!< Valid start time - time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) + s2e::time_system::DateTime valid_start_time_; //!< Valid start time + s2e::time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) size_t number_of_frequency_ = 1; //!< Number of frequency std::vector phase_center_data_; //!< Phase center data for each frequency }; @@ -342,7 +342,7 @@ class AntexFileReader { * @param[in] line: A single line in ANTEX file * @return Read date time */ - time_system::DateTime ReadDateTime(std::string line); + s2e::time_system::DateTime ReadDateTime(std::string line); }; } // namespace s2e::gnss diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index 70c170116..212661e73 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -15,9 +15,9 @@ namespace s2e::gnss { Sp3FileReader::Sp3FileReader(const std::string file_name) { ReadFile(file_name); } -time_system::DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { +s2e::time_system::DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { if (epoch_id > epoch_.size()) { - time_system::DateTime zero; + s2e::time_system::DateTime zero; return zero; } return epoch_[epoch_id]; @@ -69,7 +69,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { size_t year, month, day, hour, minute; double second; sscanf(line.substr(3, 28).c_str(), "%zu %2zu %2zu %2zu %2zu %12lf", &year, &month, &day, &hour, &minute, &second); - epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); + epoch_.push_back(s2e::time_system::DateTime(year, month, day, hour, minute, second)); // Orbit and Clock information for (size_t satellite_id = 0; satellite_id < header_.number_of_satellites_; satellite_id++) { @@ -117,7 +117,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { } // Test - time_system::DateTime test = epoch_[0]; + s2e::time_system::DateTime test = epoch_[0]; test = epoch_[1]; std::vector test_p = position_clock_[0]; test_p = position_clock_[1]; @@ -126,7 +126,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { return true; } -size_t Sp3FileReader::SearchNearestEpochId(const time_system::EpochTime time) { +size_t Sp3FileReader::SearchNearestEpochId(const s2e::time_system::EpochTime time) { size_t nearest_epoch_id = 0; // Get header info @@ -134,10 +134,10 @@ size_t Sp3FileReader::SearchNearestEpochId(const time_system::EpochTime time) { const double interval_s = header_.epoch_interval_s_; // Check range - time_system::EpochTime start_epoch(epoch_[0]); + s2e::time_system::EpochTime start_epoch(epoch_[0]); if (start_epoch > time) { nearest_epoch_id = 0; - } else if ((time_system::EpochTime)(epoch_[num_epoch - 1]) < time) { + } else if ((s2e::time_system::EpochTime)(epoch_[num_epoch - 1]) < time) { nearest_epoch_id = num_epoch - 1; } else { // Calc nearest point double diff_s = time.GetTimeWithFraction_s() - start_epoch.GetTimeWithFraction_s(); @@ -171,7 +171,7 @@ size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { size_t year, month, day, hour, minute; double second; sscanf(line.substr(3, 28).c_str(), "%zu %2zu %2zu %2zu %2zu %12lf", &year, &month, &day, &hour, &minute, &second); - header_.start_epoch_ = time_system::DateTime(year, month, day, hour, minute, second); + header_.start_epoch_ = s2e::time_system::DateTime(year, month, day, hour, minute, second); header_.number_of_epoch_ = std::stoi(line.substr(32, 7)); header_.used_data_ = line.substr(40, 5); header_.coordinate_system_ = line.substr(46, 5); @@ -199,7 +199,7 @@ size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { return 0; } // Read contents - header_.start_gps_time_ = time_system::GpsTime(std::stoi(line.substr(3, 4)), std::stod(line.substr(8, 15))); + header_.start_gps_time_ = s2e::time_system::GpsTime(std::stoi(line.substr(3, 4)), std::stod(line.substr(8, 15))); header_.epoch_interval_s_ = std::stod(line.substr(24, 14)); header_.start_time_mjday_ = std::stoi(line.substr(39, 5)); header_.start_time_mjday_fractional_day_ = std::stod(line.substr(45, 15)); diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 5068a4e82..076ebd4d4 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -52,7 +52,7 @@ struct Sp3Header { // 1st line information // version -> not implemented yet Sp3Mode mode_; //!< position or velocity - time_system::DateTime start_epoch_; //!< Time of start epoch + s2e::time_system::DateTime start_epoch_; //!< Time of start epoch size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file std::string used_data_; //!< Used data to generate the SP3 file std::string coordinate_system_; //!< Coordinate system for the position and velocity data @@ -60,7 +60,7 @@ struct Sp3Header { std::string agency_name_; //!< Agency name who generates the SP3 file // 2nd line information - time_system::GpsTime start_gps_time_; //!< Start time of orbit + s2e::time_system::GpsTime start_gps_time_; //!< Start time of orbit double epoch_interval_s_ = 1.0; //!< Epoch interval (0.0, 100000.0) size_t start_time_mjday_; //!< Start time of the orbit data (44244 = 6th Jan. 1980) [Modified Julian day] double start_time_mjday_fractional_day_ = 0.0; //!< Fractional part of the start time [0.0, 1.0) [day] @@ -172,19 +172,19 @@ class Sp3FileReader { inline Sp3Header GetHeader() const { return header_; } inline size_t GetNumberOfEpoch() const { return header_.number_of_epoch_; } inline size_t GetNumberOfSatellites() const { return header_.number_of_satellites_; } - inline time_system::DateTime GetStartEpochDateTime() const { return header_.start_epoch_; } - inline time_system::GpsTime GetStartEpochGpsTime() const { return header_.start_gps_time_; } + inline s2e::time_system::DateTime GetStartEpochDateTime() const { return header_.start_epoch_; } + inline s2e::time_system::GpsTime GetStartEpochGpsTime() const { return header_.start_gps_time_; } // Data - time_system::DateTime GetEpochData(const size_t epoch_id) const; + s2e::time_system::DateTime GetEpochData(const size_t epoch_id) const; Sp3PositionClock GetPositionClock(const size_t epoch_id, const size_t satellite_id); double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); s2e::math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); - size_t SearchNearestEpochId(const time_system::EpochTime time); + size_t SearchNearestEpochId(const s2e::time_system::EpochTime time); private: Sp3Header header_; //!< SP3 header information - std::vector epoch_; //!< Epoch data list + std::vector epoch_; //!< Epoch data list // Orbit and clock data (Use as position_clock_[satellite_id][epoch_id]) std::map> position_clock_; //!< Position and Clock data diff --git a/src/math_physics/time_system/date_time_format.cpp b/src/math_physics/time_system/date_time_format.cpp index 069c7247f..d470bfef5 100644 --- a/src/math_physics/time_system/date_time_format.cpp +++ b/src/math_physics/time_system/date_time_format.cpp @@ -11,7 +11,7 @@ #include #include -namespace time_system { +namespace s2e::time_system { DateTime::DateTime(const std::string date_time) { sscanf(date_time.c_str(), "%zu/%zu/%zu %zu:%zu:%lf", &year_, &month_, &day_, &hour_, &minute_, &second_); @@ -55,4 +55,4 @@ std::string DateTime::GetAsString() const { return output; } -} // namespace time_system +} // namespace s2e::time_system diff --git a/src/math_physics/time_system/date_time_format.hpp b/src/math_physics/time_system/date_time_format.hpp index 25084e979..540c6fefa 100644 --- a/src/math_physics/time_system/date_time_format.hpp +++ b/src/math_physics/time_system/date_time_format.hpp @@ -10,7 +10,7 @@ #include "epoch_time.hpp" -namespace time_system { +namespace s2e::time_system { class EpochTime; @@ -62,6 +62,6 @@ class DateTime { double second_; //!< Second [0.0, 60.0) }; -} // namespace time_system +} // namespace s2e::time_system #endif // S2E_LIBRARY_TIME_SYSTEM_DATE_TIME_FORMAT_HPP_ diff --git a/src/math_physics/time_system/epoch_time.cpp b/src/math_physics/time_system/epoch_time.cpp index b3b6ec730..cee1a4068 100644 --- a/src/math_physics/time_system/epoch_time.cpp +++ b/src/math_physics/time_system/epoch_time.cpp @@ -7,7 +7,7 @@ #include -namespace time_system { +namespace s2e::time_system { EpochTime::EpochTime(const DateTime date_time) { // No leap second calculation @@ -76,4 +76,4 @@ EpochTime EpochTime::operator-(const EpochTime& right_side) const { return result; } -} // namespace time_system +} // namespace s2e::time_system diff --git a/src/math_physics/time_system/epoch_time.hpp b/src/math_physics/time_system/epoch_time.hpp index 7f7dfe871..72723c066 100644 --- a/src/math_physics/time_system/epoch_time.hpp +++ b/src/math_physics/time_system/epoch_time.hpp @@ -10,7 +10,7 @@ #include "date_time_format.hpp" -namespace time_system { +namespace s2e::time_system { class DateTime; @@ -69,6 +69,6 @@ class EpochTime { double fraction_s_; //!< Fraction of second under 1 sec [0, 1) }; -} // namespace time_system +} // namespace s2e::time_system #endif // S2E_LIBRARY_TIME_SYSTEM_EPOCH_TIME_HPP_ diff --git a/src/math_physics/time_system/gps_time.cpp b/src/math_physics/time_system/gps_time.cpp index cb3a5fec9..5bed94290 100644 --- a/src/math_physics/time_system/gps_time.cpp +++ b/src/math_physics/time_system/gps_time.cpp @@ -5,7 +5,7 @@ #include "gps_time.hpp" -namespace time_system { +namespace s2e::time_system { const DateTime GpsTime::kEpochOfGpsTimeInDateTime_ = DateTime("1980/1/6 00:00:00.0"); const EpochTime GpsTime::kEpochOfGpsTimeInEpochTime_ = EpochTime(kEpochOfGpsTimeInDateTime_); @@ -26,4 +26,4 @@ void GpsTime::CalcEpochTime() { epoch_time_ = kEpochOfGpsTimeInEpochTime_ + time_diff; } -} // namespace time_system +} // namespace s2e::time_system diff --git a/src/math_physics/time_system/gps_time.hpp b/src/math_physics/time_system/gps_time.hpp index f86242754..fdc42d5a8 100644 --- a/src/math_physics/time_system/gps_time.hpp +++ b/src/math_physics/time_system/gps_time.hpp @@ -11,7 +11,7 @@ #include "date_time_format.hpp" #include "epoch_time.hpp" -namespace time_system { +namespace s2e::time_system { /** * @class GpsTime @@ -97,6 +97,6 @@ class GpsTime { void CalcEpochTime(); }; -} // namespace time_system +} // namespace s2e::time_system #endif // S2E_LIBRARY_TIME_SYSTEM_GPS_TIME_HPP_ diff --git a/src/math_physics/time_system/test_date_time_format.cpp b/src/math_physics/time_system/test_date_time_format.cpp index 4ac1a3840..935e92776 100644 --- a/src/math_physics/time_system/test_date_time_format.cpp +++ b/src/math_physics/time_system/test_date_time_format.cpp @@ -2,7 +2,7 @@ #include "date_time_format.hpp" -using namespace time_system; +using namespace s2e::time_system; /** * @brief Test Constructor with value diff --git a/src/math_physics/time_system/test_epoch_time.cpp b/src/math_physics/time_system/test_epoch_time.cpp index 6cb5f0c1b..e1281ca11 100644 --- a/src/math_physics/time_system/test_epoch_time.cpp +++ b/src/math_physics/time_system/test_epoch_time.cpp @@ -3,7 +3,7 @@ #include "date_time_format.hpp" #include "epoch_time.hpp" -using namespace time_system; +using namespace s2e::time_system; TEST(EpochTime, ConstructorNominal) { EpochTime time(1000000000, 0.250); diff --git a/src/math_physics/time_system/test_gps_time.cpp b/src/math_physics/time_system/test_gps_time.cpp index 425556774..737d2f7c6 100644 --- a/src/math_physics/time_system/test_gps_time.cpp +++ b/src/math_physics/time_system/test_gps_time.cpp @@ -2,7 +2,7 @@ #include "gps_time.hpp" -using namespace time_system; +using namespace s2e::time_system; /** * @brief Test Constructor From 7709a6c2f11013e45826d2e3174d2a58799a354d Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Tue, 17 Sep 2024 16:57:41 +0900 Subject: [PATCH 351/456] add orbit calculation with definition file --- ...orbit_calculation_with definition_file.cpp | 303 ++++++++++++++++++ ...orbit_calculation_with_definition_file.hpp | 190 +++++++++++ src/environment/global/global_environment.cpp | 4 + src/environment/global/global_environment.hpp | 2 + .../global/orbit_definition_file_reader.cpp | 119 +++++++ .../global/orbit_definition_file_reader.hpp | 56 ++++ src/simulation/case/simulation_case.cpp | 1 + src/simulation/simulation_configuration.hpp | 1 + 8 files changed, 676 insertions(+) create mode 100644 src/dynamics/orbit/orbit_calculation_with definition_file.cpp create mode 100644 src/dynamics/orbit/orbit_calculation_with_definition_file.hpp create mode 100644 src/environment/global/orbit_definition_file_reader.cpp create mode 100644 src/environment/global/orbit_definition_file_reader.hpp diff --git a/src/dynamics/orbit/orbit_calculation_with definition_file.cpp b/src/dynamics/orbit/orbit_calculation_with definition_file.cpp new file mode 100644 index 000000000..5395986e8 --- /dev/null +++ b/src/dynamics/orbit/orbit_calculation_with definition_file.cpp @@ -0,0 +1,303 @@ +/** + * @file orbit_calculation_with_definition_file.cpp + * @brief Class to calculate satellite orbit using interpolation with orbit time series input + */ + +#include "orbit_calculation_with_definition_file.hpp" + +#include + +#include +#include +#include + +#include "setting_file_reader/initialize_file_access.hpp" +#include "math_physics/time_system/date_time_format.hpp" +#include "math_physics/math/constants.hpp" +#include "logger/log_utility.hpp" + +const size_t kNumberOfInterpolation = 9; + +bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::string& file_name, std::vector& orbit_definition_data, char delimiter) { + std::ifstream ifs(file_name); + if (!ifs.is_open()) { + std::cerr << "File open error: " << file_name << std::endl; + return false; + } + + std::string line; + std::getline(ifs, line); // Skip header + + while (std::getline(ifs, line)) { + std::istringstream streamline(line); + std::string cell; + + int year, day, hour, minute; + double second; + char month_str[4]; + + int month_num; + + OrbitDefinitionData data; + + // Read time (UTC) + std::getline(streamline, cell, delimiter); + data.time_utc = cell; + + sscanf(cell.c_str(), "%d %3s %2d %2d:%2d:%lf", &year, month_str, &day, &hour, &minute, &second); + + if (strcmp(month_str, "JAN") == 0) month_num = 1; + else if (strcmp(month_str, "FEB") == 0) month_num = 2; + else if (strcmp(month_str, "MAR") == 0) month_num = 3; + else if (strcmp(month_str, "APR") == 0) month_num = 4; + else if (strcmp(month_str, "MAY") == 0) month_num = 5; + else if (strcmp(month_str, "JUN") == 0) month_num = 6; + else if (strcmp(month_str, "JUL") == 0) month_num = 7; + else if (strcmp(month_str, "AUG") == 0) month_num = 8; + else if (strcmp(month_str, "SEP") == 0) month_num = 9; + else if (strcmp(month_str, "OCT") == 0) month_num = 10; + else if (strcmp(month_str, "NOV") == 0) month_num = 11; + else if (strcmp(month_str, "DEC") == 0) month_num = 12; + else { + std::cout << "Invalid month abbreviation: " << month_str << std::endl; + return false; + } + epoch_.push_back(time_system::DateTime(year, month_num, day, hour, minute, second)); + + // Read Ephemeris time [s] + std::getline(streamline, cell, delimiter); + data.time_et_s = std::stod(cell); + + // Read EQU X(ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.equ_x_eclipj2000_km = std::stod(cell); + + // Read EQU Y(ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.equ_y_eclipj2000_km = std::stod(cell); + + // Read EQU Z(ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.equ_z_eclipj2000_km = std::stod(cell); + + // Read VX [km/s] + std::getline(streamline, cell, delimiter); + data.vx_eclipj2000_km_s = std::stod(cell); + + // Read VY [km/s] + std::getline(streamline, cell, delimiter); + data.vy_eclipj2000_km_s = std::stod(cell); + + // Read VZ [km/s] + std::getline(streamline, cell, delimiter); + data.vz_eclipj2000_km_s = std::stod(cell); + + // Read Mass [kg] + std::getline(streamline, cell, delimiter); + data.m_kg = std::stod(cell); + + // Read FX [kN] + std::getline(streamline, cell, delimiter); + data.fx_kN = std::stod(cell); + + // Read FY [kN] + std::getline(streamline, cell, delimiter); + data.fy_kN = std::stod(cell); + + // Read FZ [kN] + std::getline(streamline, cell, delimiter); + data.fz_kN = std::stod(cell); + + // Read DV NODE + std::getline(streamline, cell, delimiter); + data.dv_node = (cell == "true"); + + // Read DV_X [km/s] + std::getline(streamline, cell, delimiter); + data.dv_x_eclipj2000_km_s = std::stod(cell); + + // Read DV_Y [km/s] + std::getline(streamline, cell, delimiter); + data.dv_y_eclipj2000_km_s = std::stod(cell); + + // Read DV_Z [km/s] + std::getline(streamline, cell, delimiter); + data.dv_z_eclipj2000_km_s = std::stod(cell); + + // Read SUN X (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.sun_x_eclipj2000_km = std::stod(cell); + + // Read SUN Y (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.sun_y_eclipj2000_km = std::stod(cell); + + // Read SUN Z (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.sun_z_eclipj2000_km = std::stod(cell); + + // Read MOON X (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.moon_x_eclipj2000_km = std::stod(cell); + + // Read MOON Y (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.moon_y_eclipj2000_km = std::stod(cell); + + // Read MOON Z (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.moon_z_eclipj2000_km = std::stod(cell); + + orbit_definition_data.push_back(data); + } + return true; +} + +void OrbitCalculationWithDefinitionFile::Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { + orbit_definition_data_ = orbit_definition_data; + current_epoch_time_ = start_time; + + // Get the initialize SP3 file + // OrbitDefinitionData initial_orbit_definition_data = orbit_definition_data_[0]; + + // Get general info + // number_of_calculated_gnss_satellites_ = initial_sp3_file.GetNumberOfSatellites(); + const size_t nearest_epoch_id = SearchNearestEpochId(simulation_time); + const size_t half_interpolation_number = kNumberOfInterpolation / 2; + if (nearest_epoch_id >= half_interpolation_number) { + reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; + } + reference_time_ = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + + // Initialize orbit + orbit_.assign(1.0, orbit::InterpolationOrbit(kNumberOfInterpolation)); + + // Initialize interpolation + for (size_t i = 0; i < kNumberOfInterpolation; i++) { + UpdateInterpolationInformation(); + } + + return; +} + +void OrbitCalculationWithDefinitionFile::Update(const SimulationTime& simulation_time) { + if (!IsCalcEnabled()) return; + + // Get time + UTC current_utc = simulation_time.GetCurrentUtc(); + time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, + (size_t)current_utc.minute, current_utc.second); + current_epoch_time_ = time_system::EpochTime(current_date_time); + + // Check interpolation update + double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double medium_time_s = orbit_[0].GetTimeList()[4]; + if (diff_s > medium_time_s) { + UpdateInterpolationInformation(); + } + + return; +} + +size_t OrbitCalculationWithDefinitionFile::SearchNearestEpochId(const SimulationTime& simulation_time) { + size_t nearest_epoch_id = 0; + + // Get start ephemeris time + SpiceDouble start_et = simulation_time.GetCurrentEphemerisTime(); + + // Get the nearest epoch ID + for (size_t i = 0; i < orbit_definition_data_.size(); i++) { + if (start_et < orbit_definition_data_[i].time_et_s) { + nearest_epoch_id = i; + break; + } + } + return nearest_epoch_id; +} + +time_system::DateTime OrbitCalculationWithDefinitionFile::GetEpochData(const size_t epoch_id) const { + if (epoch_id > epoch_.size()) { + time_system::DateTime zero; + return zero; + } + return epoch_[epoch_id]; +} + + +math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition_eclipj2000_km(const time_system::EpochTime time) const { + time_system::EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); + + const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf + return orbit_[0].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); +} + +bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { + // OrbitDefinitionData orbit_definition_data = orbit_definition_data_; + + time_system::EpochTime orbit_definition_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + double time_diff_s = orbit_definition_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + math::Vector<3> orbit_definition_position_eclipj2000_km; + orbit_definition_position_eclipj2000_km(0) = orbit_definition_data_[reference_interpolation_id_].equ_x_eclipj2000_km; + orbit_definition_position_eclipj2000_km(1) = orbit_definition_data_[reference_interpolation_id_].equ_y_eclipj2000_km; + orbit_definition_position_eclipj2000_km(2) = orbit_definition_data_[reference_interpolation_id_].equ_z_eclipj2000_km; + + orbit_[0].PushAndPopData(time_diff_s, orbit_definition_position_eclipj2000_km); + + reference_interpolation_id_++; + + return true; +} + +std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { + std::string str_tmp = ""; + + str_tmp += WriteVector("satellite_position", "eclipj2000", "km", 3); + + + return str_tmp; +} + +std::string OrbitCalculationWithDefinitionFile::GetLogValue() const { + std::string str_tmp = ""; + + str_tmp += WriteVector(GetPosition_eclipj2000_km(), 16); + + return str_tmp; +} + +OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string file_name, const SimulationTime& simulation_time) { + IniAccess ini_file(file_name); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + + const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); + const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); + + OrbitCalculationWithDefinitionFile* orbit_calculation_with_definition_file = new OrbitCalculationWithDefinitionFile(is_calc_enable, is_log_enable); + if (!orbit_calculation_with_definition_file->IsCalcEnabled()) { + return orbit_calculation_with_definition_file; + } + + const std::string orbit_definition_file_path = ini_file.ReadString(section, "orbit_definition_file_path"); + + std::vector orbit_definition_data; + orbit_calculation_with_definition_file->ReadOrbitDefinitionCsv(orbit_definition_file_path, orbit_definition_data); + + time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), + (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), + (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); + time_system::EpochTime start_epoch_time(start_date_time); + orbit_calculation_with_definition_file->Initialize(orbit_definition_data, start_epoch_time, simulation_time); + + + + return orbit_calculation_with_definition_file; +} diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp new file mode 100644 index 000000000..abd480fe8 --- /dev/null +++ b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp @@ -0,0 +1,190 @@ +/** + * @file orbit_calculation_with_defnition_file.hpp + * @brief Class to calculate satellite orbit using interpolation with orbit time series input + */ + +#ifndef S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ +#define S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ + +#include +#include + + +// #include +// #include +// #include +#include +#include +// #include +// #include + +// #include "earth_rotation.hpp" +// #include "logger/loggable.hpp" +// #include "math_physics/gnss/gnss_satellite_number.hpp" +// #include "math_physics/math/vector.hpp" +#include "simulation_time.hpp" + +/** + *@struct OrbitDefinitionData + *@brief Orbit definition data + */ +struct OrbitDefinitionData { + std::string time_utc; //!< time (UTC) + double time_et_s; //!< Ephemeris time [s] + double equ_x_eclipj2000_km; //!< EQU X(ECLIPJ2000) [km] + double equ_y_eclipj2000_km; //!< EQU Y(ECLIPJ2000) [km] + double equ_z_eclipj2000_km; //!< EQU Z(ECLIPJ2000) [km] + double vx_eclipj2000_km_s; //!< VX [km/s] + double vy_eclipj2000_km_s; //!< VY [km/s] + double vz_eclipj2000_km_s; //!< VZ [km/s] + double m_kg; //!< Mass [kg] + double fx_kN; //!< FX [kN] + double fy_kN; //!< FY [kN] + double fz_kN; //!< FZ [kN] + bool dv_node; //!< DV NODE + double dv_x_eclipj2000_km_s; //!< DV_X [km/s] + double dv_y_eclipj2000_km_s; //!< DV_Y [km/s] + double dv_z_eclipj2000_km_s; //!< DV_Z [km/s] + double sun_x_eclipj2000_km; //!< SUN X (ECLIPJ2000) [km] + double sun_y_eclipj2000_km; //!< SUN Y (ECLIPJ2000) [km] + double sun_z_eclipj2000_km; //!< SUN Z (ECLIPJ2000) [km] + double moon_x_eclipj2000_km; //!< MOON X (ECLIPJ2000) [km] + double moon_y_eclipj2000_km; //!< MOON Y (ECLIPJ2000) [km] + double moon_z_eclipj2000_km; //!< MOON Z (ECLIPJ2000) [km] +}; + +/** + * @class OrbitCalculationWithDefinitionFile + * @brief Class to calculate satellite orbit using interpolation with orbit time series input + */ +class OrbitCalculationWithDefinitionFile : public ILoggable { + public: + /** + *@fn OrbitCalculationWithDefinitionFile + *@brief Constructor + * @param [in] is_calc_enabled: Flag to manage the orbit calculation + * @param [in] is_log_enabled: Flag to generate the log of orbit calculation + */ + OrbitCalculationWithDefinitionFile(const bool is_calc_enabled = false, const bool is_log_enabled = false) + : is_calc_enabled_(is_calc_enabled) { + if (!is_calc_enabled_) { + is_log_enabled_ = false; + } else { + is_log_enabled_ = is_log_enabled; + } + } + + /** + *@fn ~OrbitCalculationWithDefinitionFile + *@brief Destructor + */ + virtual ~OrbitCalculationWithDefinitionFile() {} + + /** + * @fn Initialize + * @brief Initialize function + * @param [in] orbit_definition_data: orbit definition data + * @param [in] start_time: The simulation start time + */ + void Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); + + /** + * @fn IsCalcEnabled + * @brief Return calculated enabled flag + */ + inline bool IsCalcEnabled() const { return is_calc_enabled_; } + + /** + * @fn ReadOrbitDefinitionCsv + * @brief Read orbit definition CSV file. + * @param file_name Path to orbit definition CSV file. + * @param orbit_definition_data List of orbit definition data. + * @param delimiter Delimiter for the orbit definition CSV file (default: ','). + */ + bool ReadOrbitDefinitionCsv(const std::string& file_name, std::vector& orbit_definition_data, char delimiter = ','); + + /** + * @fn GetOrbitDefinitionDataSize + * @brief Return read orbit definition data size. + */ + size_t GetOrbitDefinitionDataSize() const { return orbit_definition_data_.size(); } + + /** + * @fn GetOrbitDefinitionData + * @brief Return orbit definition data for a specific index. + * @param index The index of the orbit definition data to. + */ + OrbitDefinitionData GetOrbitDefinitionData(size_t index) const { return orbit_definition_data_[index]; } + + /** + * @fn GetEpochData + * @brief Return epoch data for a specific epoch ID. + * @param epoch_id The epoch ID of the orbit definition data. + */ + time_system::DateTime GetEpochData(const size_t epoch_id) const; + + /** + * @fn SearchNearestEpochId + * @brief Search the nearest epoch ID from the orbit definition data. + * @param simulation_time The simulation time information. + */ + size_t SearchNearestEpochId(const SimulationTime& simulation_time); + + + /** + * @fn Update + * @brief Updatesatellite information + * @param [in] simulation_time: Simulation time information + */ + void Update(const SimulationTime& simulation_time); + + /** + * @fn GetPosition_eclipj2000_km + * @brief Return satellite position at ECLIPJ2000 frame + * @param [in] time: Target time to get the satellite. When the argument is not set, the last updated time is used for the calculation. + * @return Satellite position at ECLIPJ2000 frame at the time. Or return zero vector when the arguments are out of range. + */ + math::Vector<3> GetPosition_eclipj2000_km(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + + // Override ILoggable + /** + * @fn GetLogHeader + * @brief Override GetLogHeader function of ILoggable + */ + std::string GetLogHeader() const override; + /** + * @fn GetLogValue + * @brief Override GetLogValue function of ILoggable + */ + std::string GetLogValue() const override; + + private: + bool is_calc_enabled_ = false; //!< Flag to manage the orbit calculation + + std::vector epoch_; //!< Epoch data list + + std::vector orbit_definition_data_; //!< List of orbit definition data + time_system::EpochTime current_epoch_time_; //!< The last updated time + time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling + size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + time_system::EpochTime current_epoch_time_; //!< The last updated time + + std::vector orbit_; //!< Satellite orbit with interpolation + + /** + * @fn UpdateInterpolationInformation + * @brief Update interpolation information by inserting new data + * @return true: No error, false: Orbit definition file out of range error + */ + bool UpdateInterpolationInformation(); +}; + +/** + * @fn InitOrbitCalculationWithDefinitionFile + * @brief Initialize function for OrbitCalculationWithDefinitionFile class + * @param [in] file_name: Path to the initialize file + * @param [in] simulation_time: Simulation time information + * @return Initialized OrbitCalculationWithDefinitionFile class + */ +OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string file_name, const SimulationTime& simulation_time); +#endif // S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ \ No newline at end of file diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 0e89b2346..b3e0320aa 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -14,6 +14,7 @@ GlobalEnvironment::~GlobalEnvironment() { delete celestial_information_; delete hipparcos_catalogue_; delete gnss_satellites_; + delete orbit_calculation_with_definition_file_; } void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration) { @@ -26,6 +27,7 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con simulation_time_ = InitSimulationTime(simulation_time_ini_path); hipparcos_catalogue_ = InitHipparcosCatalogue(simulation_configuration->initialize_base_file_name_); gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_, celestial_information_->GetEarthRotation(), *simulation_time_); + orbit_calculation_with_definition_file_ = InitOrbitCalculationWithDefinitionFile(simulation_configuration->orbit_definition_file_, *simulation_time_); // Calc initial value celestial_information_->UpdateAllObjectsInformation(*simulation_time_); @@ -35,12 +37,14 @@ void GlobalEnvironment::Update() { simulation_time_->UpdateTime(); celestial_information_->UpdateAllObjectsInformation(*simulation_time_); gnss_satellites_->Update(*simulation_time_); + orbit_calculation_with_definition_file_->Update(*simulation_time_); } void GlobalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(simulation_time_); logger.AddLogList(celestial_information_); logger.AddLogList(gnss_satellites_); + logger.AddLogList(orbit_calculation_with_definition_file_); } void GlobalEnvironment::Reset(void) { simulation_time_->ResetClock(); } diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index b8bb56890..1c985f2d2 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -8,6 +8,7 @@ #include "celestial_information.hpp" #include "gnss_satellites.hpp" +#include "orbit_calculation_with_definition_file.hpp" #include "hipparcos_catalogue.hpp" #include "logger/logger.hpp" #include "simulation/simulation_configuration.hpp" @@ -80,6 +81,7 @@ class GlobalEnvironment { CelestialInformation* celestial_information_; //!< Celestial bodies information HipparcosCatalogue* hipparcos_catalogue_; //!< Hipparcos catalogue GnssSatellites* gnss_satellites_; //!< GNSS satellites + OrbitCalculationWithDefinitionFile* orbit_calculation_with_definition_file_; //!< Orbit calculation with definition file }; #endif // S2E_ENVIRONMENT_GLOBAL_GLOBAL_ENVIRONMENT_HPP_ diff --git a/src/environment/global/orbit_definition_file_reader.cpp b/src/environment/global/orbit_definition_file_reader.cpp new file mode 100644 index 000000000..045614685 --- /dev/null +++ b/src/environment/global/orbit_definition_file_reader.cpp @@ -0,0 +1,119 @@ +/** + * @file orbit_definition_file_reader.cpp + * @brief A class to read the orbit definition file and provide functions to access the data + */ + +#include "orbit_definition_file_reader.hpp" + +#include +#include +#include + +bool OrbitDefinitionFileReader::ReadOrbitDefinitionCsv(const std::string& file_name, char delimiter) { + std::ifstream ifs(file_name); + if (!ifs.is_open()) { + std::cerr << "File open error: " << file_name << std::endl; + return false; + } + + std::string line; + std::getline(ifs, line); // Skip header + + while (std::getline(ifs, line)) { + std::istringstream streamline(line); + std::string cell; + + OrbitDefinitionData data; + + // Read time (UTC) + std::getline(streamline, cell, delimiter); + data.time_utc = cell; + + // Read Ephemeris time [s] + std::getline(streamline, cell, delimiter); + data.time_et_s = std::stod(cell); + + // Read EQU X(ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.equ_x_eclipj2000_km = std::stod(cell); + + // Read EQU Y(ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.equ_y_eclipj2000_km = std::stod(cell); + + // Read EQU Z(ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.equ_z_eclipj2000_km = std::stod(cell); + + // Read VX [km/s] + std::getline(streamline, cell, delimiter); + data.vx_eclipj2000_km_s = std::stod(cell); + + // Read VY [km/s] + std::getline(streamline, cell, delimiter); + data.vy_eclipj2000_km_s = std::stod(cell); + + // Read VZ [km/s] + std::getline(streamline, cell, delimiter); + data.vz_eclipj2000_km_s = std::stod(cell); + + // Read Mass [kg] + std::getline(streamline, cell, delimiter); + data.m_kg = std::stod(cell); + + // Read FX [kN] + std::getline(streamline, cell, delimiter); + data.fx_kN = std::stod(cell); + + // Read FY [kN] + std::getline(streamline, cell, delimiter); + data.fy_kN = std::stod(cell); + + // Read FZ [kN] + std::getline(streamline, cell, delimiter); + data.fz_kN = std::stod(cell); + + // Read DV NODE + std::getline(streamline, cell, delimiter); + data.dv_node = (cell == "true"); + + // Read DV_X [km/s] + std::getline(streamline, cell, delimiter); + data.dv_x_eclipj2000_km_s = std::stod(cell); + + // Read DV_Y [km/s] + std::getline(streamline, cell, delimiter); + data.dv_y_eclipj2000_km_s = std::stod(cell); + + // Read DV_Z [km/s] + std::getline(streamline, cell, delimiter); + data.dv_z_eclipj2000_km_s = std::stod(cell); + + // Read SUN X (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.sun_x_eclipj2000_km = std::stod(cell); + + // Read SUN Y (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.sun_y_eclipj2000_km = std::stod(cell); + + // Read SUN Z (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.sun_z_eclipj2000_km = std::stod(cell); + + // Read MOON X (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.moon_x_eclipj2000_km = std::stod(cell); + + // Read MOON Y (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.moon_y_eclipj2000_km = std::stod(cell); + + // Read MOON Z (ECLIPJ2000) [km] + std::getline(streamline, cell, delimiter); + data.moon_z_eclipj2000_km = std::stod(cell); + + orbit_definition_data_.push_back(data); + } + return true; +} \ No newline at end of file diff --git a/src/environment/global/orbit_definition_file_reader.hpp b/src/environment/global/orbit_definition_file_reader.hpp new file mode 100644 index 000000000..55a0d0591 --- /dev/null +++ b/src/environment/global/orbit_definition_file_reader.hpp @@ -0,0 +1,56 @@ +/** + * @file orbit_definition_file_reader.hpp + * @brief A class to read the orbit definition file and provide functions to access the data + */ + +#ifndef S2E_ENVIRONMENT_GLOBAL_ORBIT_DEFINITION_FILE_READER_HPP_ +#define S2E_ENVIRONMENT_GLOBAL_ORBIT_DEFINITION_FILE_READER_HPP_ + +#include +#include + +/** + *@struct OrbitDefinitionData + *@brief Orbit definition data + */ +struct OrbitDefinitionData { + std::string time_utc; //!< time (UTC) + double time_et_s; //!< Ephemeris time [s] + double equ_x_eclipj2000_km; //!< EQU X(ECLIPJ2000) [km] + double equ_y_eclipj2000_km; //!< EQU Y(ECLIPJ2000) [km] + double equ_z_eclipj2000_km; //!< EQU Z(ECLIPJ2000) [km] + double vx_eclipj2000_km_s; //!< VX [km/s] + double vy_eclipj2000_km_s; //!< VY [km/s] + double vz_eclipj2000_km_s; //!< VZ [km/s] + double m_kg; //!< Mass [kg] + double fx_kN; //!< FX [kN] + double fy_kN; //!< FY [kN] + double fz_kN; //!< FZ [kN] + bool dv_node; //!< DV NODE + double dv_x_eclipj2000_km_s; //!< DV_X [km/s] + double dv_y_eclipj2000_km_s; //!< DV_Y [km/s] + double dv_z_eclipj2000_km_s; //!< DV_Z [km/s] + double sun_x_eclipj2000_km; //!< SUN X (ECLIPJ2000) [km] + double sun_y_eclipj2000_km; //!< SUN Y (ECLIPJ2000) [km] + double sun_z_eclipj2000_km; //!< SUN Z (ECLIPJ2000) [km] + double moon_x_eclipj2000_km; //!< MOON X (ECLIPJ2000) [km] + double moon_y_eclipj2000_km; //!< MOON Y (ECLIPJ2000) [km] + double moon_z_eclipj2000_km; //!< MOON Z (ECLIPJ2000) [km] +}; + +/** + * @class OrbitDefinitionFileReader + * @brief + */ +class OrbitDefinitionFileReader { + public: + /** + * @fn ReadOrbitDefinitionCsv + * @brief Read orbit definition CSV file. + * @param file_name Path to orbit definition CSV file. + * @param delimiter Delimiter for the orbit definition CSV file (default: ','). + */ + bool ReadOrbitDefinitionCsv(const std::string& file_name, char delimiter = ','); +}; + +#endif // S2E_ENVIRONMENT_GLOBAL_ORBIT_DEFINITION_FILE_READER_HPP_ \ No newline at end of file diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index 1a19dd003..d4fe870d3 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -100,6 +100,7 @@ void SimulationCase::InitializeSimulationConfiguration(const std::string initial // Others simulation_configuration_.inter_sc_communication_file_ = simulation_base_ini.ReadString(section, "inter_sat_comm_file"); simulation_configuration_.gnss_file_ = simulation_base_ini.ReadString(section, "gnss_file"); + simulation_configuration_.orbit_definition_file_ = simulation_base_ini.ReadString(section, "orbit_definition_file"); // Global Environment global_environment_ = new GlobalEnvironment(&simulation_configuration_); diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index 28b6f74f0..adf967284 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -27,6 +27,7 @@ struct SimulationConfiguration { std::string inter_sc_communication_file_; //!< File name for inter-satellite communication initialization std::string gnss_file_; //!< File name for GNSS initialization + std::string orbit_definition_file_; //!< File name for orbit calculation initialization /** * @fn ~SimulationConfiguration From ea0b1ebc060bc27370d943685178f7bc916d444b Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Wed, 18 Sep 2024 14:00:48 +0900 Subject: [PATCH 352/456] modify path --- src/dynamics/orbit/orbit_calculation_with_definition_file.hpp | 3 +-- src/environment/global/global_environment.hpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp index abd480fe8..3c4d9c4ff 100644 --- a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp +++ b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp @@ -22,7 +22,7 @@ // #include "logger/loggable.hpp" // #include "math_physics/gnss/gnss_satellite_number.hpp" // #include "math_physics/math/vector.hpp" -#include "simulation_time.hpp" +#include "environment/global/simulation_time.hpp" /** *@struct OrbitDefinitionData @@ -167,7 +167,6 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { time_system::EpochTime current_epoch_time_; //!< The last updated time time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - time_system::EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< Satellite orbit with interpolation diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index 1c985f2d2..b1be324f0 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -8,7 +8,7 @@ #include "celestial_information.hpp" #include "gnss_satellites.hpp" -#include "orbit_calculation_with_definition_file.hpp" +#include "dynamics/orbit/orbit_calculation_with_definition_file.hpp" #include "hipparcos_catalogue.hpp" #include "logger/logger.hpp" #include "simulation/simulation_configuration.hpp" From bb91739ec652eeff87aedb4d1188bdc282c9f606 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Thu, 19 Sep 2024 13:12:06 +0900 Subject: [PATCH 353/456] modify file name --- ...orbit_calculation_with definition_file.cpp | 303 ------------------ 1 file changed, 303 deletions(-) delete mode 100644 src/dynamics/orbit/orbit_calculation_with definition_file.cpp diff --git a/src/dynamics/orbit/orbit_calculation_with definition_file.cpp b/src/dynamics/orbit/orbit_calculation_with definition_file.cpp deleted file mode 100644 index 5395986e8..000000000 --- a/src/dynamics/orbit/orbit_calculation_with definition_file.cpp +++ /dev/null @@ -1,303 +0,0 @@ -/** - * @file orbit_calculation_with_definition_file.cpp - * @brief Class to calculate satellite orbit using interpolation with orbit time series input - */ - -#include "orbit_calculation_with_definition_file.hpp" - -#include - -#include -#include -#include - -#include "setting_file_reader/initialize_file_access.hpp" -#include "math_physics/time_system/date_time_format.hpp" -#include "math_physics/math/constants.hpp" -#include "logger/log_utility.hpp" - -const size_t kNumberOfInterpolation = 9; - -bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::string& file_name, std::vector& orbit_definition_data, char delimiter) { - std::ifstream ifs(file_name); - if (!ifs.is_open()) { - std::cerr << "File open error: " << file_name << std::endl; - return false; - } - - std::string line; - std::getline(ifs, line); // Skip header - - while (std::getline(ifs, line)) { - std::istringstream streamline(line); - std::string cell; - - int year, day, hour, minute; - double second; - char month_str[4]; - - int month_num; - - OrbitDefinitionData data; - - // Read time (UTC) - std::getline(streamline, cell, delimiter); - data.time_utc = cell; - - sscanf(cell.c_str(), "%d %3s %2d %2d:%2d:%lf", &year, month_str, &day, &hour, &minute, &second); - - if (strcmp(month_str, "JAN") == 0) month_num = 1; - else if (strcmp(month_str, "FEB") == 0) month_num = 2; - else if (strcmp(month_str, "MAR") == 0) month_num = 3; - else if (strcmp(month_str, "APR") == 0) month_num = 4; - else if (strcmp(month_str, "MAY") == 0) month_num = 5; - else if (strcmp(month_str, "JUN") == 0) month_num = 6; - else if (strcmp(month_str, "JUL") == 0) month_num = 7; - else if (strcmp(month_str, "AUG") == 0) month_num = 8; - else if (strcmp(month_str, "SEP") == 0) month_num = 9; - else if (strcmp(month_str, "OCT") == 0) month_num = 10; - else if (strcmp(month_str, "NOV") == 0) month_num = 11; - else if (strcmp(month_str, "DEC") == 0) month_num = 12; - else { - std::cout << "Invalid month abbreviation: " << month_str << std::endl; - return false; - } - epoch_.push_back(time_system::DateTime(year, month_num, day, hour, minute, second)); - - // Read Ephemeris time [s] - std::getline(streamline, cell, delimiter); - data.time_et_s = std::stod(cell); - - // Read EQU X(ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.equ_x_eclipj2000_km = std::stod(cell); - - // Read EQU Y(ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.equ_y_eclipj2000_km = std::stod(cell); - - // Read EQU Z(ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.equ_z_eclipj2000_km = std::stod(cell); - - // Read VX [km/s] - std::getline(streamline, cell, delimiter); - data.vx_eclipj2000_km_s = std::stod(cell); - - // Read VY [km/s] - std::getline(streamline, cell, delimiter); - data.vy_eclipj2000_km_s = std::stod(cell); - - // Read VZ [km/s] - std::getline(streamline, cell, delimiter); - data.vz_eclipj2000_km_s = std::stod(cell); - - // Read Mass [kg] - std::getline(streamline, cell, delimiter); - data.m_kg = std::stod(cell); - - // Read FX [kN] - std::getline(streamline, cell, delimiter); - data.fx_kN = std::stod(cell); - - // Read FY [kN] - std::getline(streamline, cell, delimiter); - data.fy_kN = std::stod(cell); - - // Read FZ [kN] - std::getline(streamline, cell, delimiter); - data.fz_kN = std::stod(cell); - - // Read DV NODE - std::getline(streamline, cell, delimiter); - data.dv_node = (cell == "true"); - - // Read DV_X [km/s] - std::getline(streamline, cell, delimiter); - data.dv_x_eclipj2000_km_s = std::stod(cell); - - // Read DV_Y [km/s] - std::getline(streamline, cell, delimiter); - data.dv_y_eclipj2000_km_s = std::stod(cell); - - // Read DV_Z [km/s] - std::getline(streamline, cell, delimiter); - data.dv_z_eclipj2000_km_s = std::stod(cell); - - // Read SUN X (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.sun_x_eclipj2000_km = std::stod(cell); - - // Read SUN Y (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.sun_y_eclipj2000_km = std::stod(cell); - - // Read SUN Z (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.sun_z_eclipj2000_km = std::stod(cell); - - // Read MOON X (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.moon_x_eclipj2000_km = std::stod(cell); - - // Read MOON Y (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.moon_y_eclipj2000_km = std::stod(cell); - - // Read MOON Z (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.moon_z_eclipj2000_km = std::stod(cell); - - orbit_definition_data.push_back(data); - } - return true; -} - -void OrbitCalculationWithDefinitionFile::Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { - orbit_definition_data_ = orbit_definition_data; - current_epoch_time_ = start_time; - - // Get the initialize SP3 file - // OrbitDefinitionData initial_orbit_definition_data = orbit_definition_data_[0]; - - // Get general info - // number_of_calculated_gnss_satellites_ = initial_sp3_file.GetNumberOfSatellites(); - const size_t nearest_epoch_id = SearchNearestEpochId(simulation_time); - const size_t half_interpolation_number = kNumberOfInterpolation / 2; - if (nearest_epoch_id >= half_interpolation_number) { - reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; - } - reference_time_ = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); - - // Initialize orbit - orbit_.assign(1.0, orbit::InterpolationOrbit(kNumberOfInterpolation)); - - // Initialize interpolation - for (size_t i = 0; i < kNumberOfInterpolation; i++) { - UpdateInterpolationInformation(); - } - - return; -} - -void OrbitCalculationWithDefinitionFile::Update(const SimulationTime& simulation_time) { - if (!IsCalcEnabled()) return; - - // Get time - UTC current_utc = simulation_time.GetCurrentUtc(); - time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, - (size_t)current_utc.minute, current_utc.second); - current_epoch_time_ = time_system::EpochTime(current_date_time); - - // Check interpolation update - double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - double medium_time_s = orbit_[0].GetTimeList()[4]; - if (diff_s > medium_time_s) { - UpdateInterpolationInformation(); - } - - return; -} - -size_t OrbitCalculationWithDefinitionFile::SearchNearestEpochId(const SimulationTime& simulation_time) { - size_t nearest_epoch_id = 0; - - // Get start ephemeris time - SpiceDouble start_et = simulation_time.GetCurrentEphemerisTime(); - - // Get the nearest epoch ID - for (size_t i = 0; i < orbit_definition_data_.size(); i++) { - if (start_et < orbit_definition_data_[i].time_et_s) { - nearest_epoch_id = i; - break; - } - } - return nearest_epoch_id; -} - -time_system::DateTime OrbitCalculationWithDefinitionFile::GetEpochData(const size_t epoch_id) const { - if (epoch_id > epoch_.size()) { - time_system::DateTime zero; - return zero; - } - return epoch_[epoch_id]; -} - - -math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition_eclipj2000_km(const time_system::EpochTime time) const { - time_system::EpochTime target_time; - - if (time.GetTime_s() == 0) { - target_time = current_epoch_time_; - } else { - target_time = time; - } - - double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); - - const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[0].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); -} - -bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { - // OrbitDefinitionData orbit_definition_data = orbit_definition_data_; - - time_system::EpochTime orbit_definition_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); - double time_diff_s = orbit_definition_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - math::Vector<3> orbit_definition_position_eclipj2000_km; - orbit_definition_position_eclipj2000_km(0) = orbit_definition_data_[reference_interpolation_id_].equ_x_eclipj2000_km; - orbit_definition_position_eclipj2000_km(1) = orbit_definition_data_[reference_interpolation_id_].equ_y_eclipj2000_km; - orbit_definition_position_eclipj2000_km(2) = orbit_definition_data_[reference_interpolation_id_].equ_z_eclipj2000_km; - - orbit_[0].PushAndPopData(time_diff_s, orbit_definition_position_eclipj2000_km); - - reference_interpolation_id_++; - - return true; -} - -std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { - std::string str_tmp = ""; - - str_tmp += WriteVector("satellite_position", "eclipj2000", "km", 3); - - - return str_tmp; -} - -std::string OrbitCalculationWithDefinitionFile::GetLogValue() const { - std::string str_tmp = ""; - - str_tmp += WriteVector(GetPosition_eclipj2000_km(), 16); - - return str_tmp; -} - -OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string file_name, const SimulationTime& simulation_time) { - IniAccess ini_file(file_name); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; - - const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); - const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); - - OrbitCalculationWithDefinitionFile* orbit_calculation_with_definition_file = new OrbitCalculationWithDefinitionFile(is_calc_enable, is_log_enable); - if (!orbit_calculation_with_definition_file->IsCalcEnabled()) { - return orbit_calculation_with_definition_file; - } - - const std::string orbit_definition_file_path = ini_file.ReadString(section, "orbit_definition_file_path"); - - std::vector orbit_definition_data; - orbit_calculation_with_definition_file->ReadOrbitDefinitionCsv(orbit_definition_file_path, orbit_definition_data); - - time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), - (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), - (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); - time_system::EpochTime start_epoch_time(start_date_time); - orbit_calculation_with_definition_file->Initialize(orbit_definition_data, start_epoch_time, simulation_time); - - - - return orbit_calculation_with_definition_file; -} From 1c652aeadbe7b37f97f5fc90e3f4e6e394d253ee Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Thu, 19 Sep 2024 13:12:33 +0900 Subject: [PATCH 354/456] delete orbit_definition_file_reader --- .../global/orbit_definition_file_reader.cpp | 119 ------------------ .../global/orbit_definition_file_reader.hpp | 56 --------- 2 files changed, 175 deletions(-) delete mode 100644 src/environment/global/orbit_definition_file_reader.cpp delete mode 100644 src/environment/global/orbit_definition_file_reader.hpp diff --git a/src/environment/global/orbit_definition_file_reader.cpp b/src/environment/global/orbit_definition_file_reader.cpp deleted file mode 100644 index 045614685..000000000 --- a/src/environment/global/orbit_definition_file_reader.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @file orbit_definition_file_reader.cpp - * @brief A class to read the orbit definition file and provide functions to access the data - */ - -#include "orbit_definition_file_reader.hpp" - -#include -#include -#include - -bool OrbitDefinitionFileReader::ReadOrbitDefinitionCsv(const std::string& file_name, char delimiter) { - std::ifstream ifs(file_name); - if (!ifs.is_open()) { - std::cerr << "File open error: " << file_name << std::endl; - return false; - } - - std::string line; - std::getline(ifs, line); // Skip header - - while (std::getline(ifs, line)) { - std::istringstream streamline(line); - std::string cell; - - OrbitDefinitionData data; - - // Read time (UTC) - std::getline(streamline, cell, delimiter); - data.time_utc = cell; - - // Read Ephemeris time [s] - std::getline(streamline, cell, delimiter); - data.time_et_s = std::stod(cell); - - // Read EQU X(ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.equ_x_eclipj2000_km = std::stod(cell); - - // Read EQU Y(ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.equ_y_eclipj2000_km = std::stod(cell); - - // Read EQU Z(ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.equ_z_eclipj2000_km = std::stod(cell); - - // Read VX [km/s] - std::getline(streamline, cell, delimiter); - data.vx_eclipj2000_km_s = std::stod(cell); - - // Read VY [km/s] - std::getline(streamline, cell, delimiter); - data.vy_eclipj2000_km_s = std::stod(cell); - - // Read VZ [km/s] - std::getline(streamline, cell, delimiter); - data.vz_eclipj2000_km_s = std::stod(cell); - - // Read Mass [kg] - std::getline(streamline, cell, delimiter); - data.m_kg = std::stod(cell); - - // Read FX [kN] - std::getline(streamline, cell, delimiter); - data.fx_kN = std::stod(cell); - - // Read FY [kN] - std::getline(streamline, cell, delimiter); - data.fy_kN = std::stod(cell); - - // Read FZ [kN] - std::getline(streamline, cell, delimiter); - data.fz_kN = std::stod(cell); - - // Read DV NODE - std::getline(streamline, cell, delimiter); - data.dv_node = (cell == "true"); - - // Read DV_X [km/s] - std::getline(streamline, cell, delimiter); - data.dv_x_eclipj2000_km_s = std::stod(cell); - - // Read DV_Y [km/s] - std::getline(streamline, cell, delimiter); - data.dv_y_eclipj2000_km_s = std::stod(cell); - - // Read DV_Z [km/s] - std::getline(streamline, cell, delimiter); - data.dv_z_eclipj2000_km_s = std::stod(cell); - - // Read SUN X (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.sun_x_eclipj2000_km = std::stod(cell); - - // Read SUN Y (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.sun_y_eclipj2000_km = std::stod(cell); - - // Read SUN Z (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.sun_z_eclipj2000_km = std::stod(cell); - - // Read MOON X (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.moon_x_eclipj2000_km = std::stod(cell); - - // Read MOON Y (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.moon_y_eclipj2000_km = std::stod(cell); - - // Read MOON Z (ECLIPJ2000) [km] - std::getline(streamline, cell, delimiter); - data.moon_z_eclipj2000_km = std::stod(cell); - - orbit_definition_data_.push_back(data); - } - return true; -} \ No newline at end of file diff --git a/src/environment/global/orbit_definition_file_reader.hpp b/src/environment/global/orbit_definition_file_reader.hpp deleted file mode 100644 index 55a0d0591..000000000 --- a/src/environment/global/orbit_definition_file_reader.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @file orbit_definition_file_reader.hpp - * @brief A class to read the orbit definition file and provide functions to access the data - */ - -#ifndef S2E_ENVIRONMENT_GLOBAL_ORBIT_DEFINITION_FILE_READER_HPP_ -#define S2E_ENVIRONMENT_GLOBAL_ORBIT_DEFINITION_FILE_READER_HPP_ - -#include -#include - -/** - *@struct OrbitDefinitionData - *@brief Orbit definition data - */ -struct OrbitDefinitionData { - std::string time_utc; //!< time (UTC) - double time_et_s; //!< Ephemeris time [s] - double equ_x_eclipj2000_km; //!< EQU X(ECLIPJ2000) [km] - double equ_y_eclipj2000_km; //!< EQU Y(ECLIPJ2000) [km] - double equ_z_eclipj2000_km; //!< EQU Z(ECLIPJ2000) [km] - double vx_eclipj2000_km_s; //!< VX [km/s] - double vy_eclipj2000_km_s; //!< VY [km/s] - double vz_eclipj2000_km_s; //!< VZ [km/s] - double m_kg; //!< Mass [kg] - double fx_kN; //!< FX [kN] - double fy_kN; //!< FY [kN] - double fz_kN; //!< FZ [kN] - bool dv_node; //!< DV NODE - double dv_x_eclipj2000_km_s; //!< DV_X [km/s] - double dv_y_eclipj2000_km_s; //!< DV_Y [km/s] - double dv_z_eclipj2000_km_s; //!< DV_Z [km/s] - double sun_x_eclipj2000_km; //!< SUN X (ECLIPJ2000) [km] - double sun_y_eclipj2000_km; //!< SUN Y (ECLIPJ2000) [km] - double sun_z_eclipj2000_km; //!< SUN Z (ECLIPJ2000) [km] - double moon_x_eclipj2000_km; //!< MOON X (ECLIPJ2000) [km] - double moon_y_eclipj2000_km; //!< MOON Y (ECLIPJ2000) [km] - double moon_z_eclipj2000_km; //!< MOON Z (ECLIPJ2000) [km] -}; - -/** - * @class OrbitDefinitionFileReader - * @brief - */ -class OrbitDefinitionFileReader { - public: - /** - * @fn ReadOrbitDefinitionCsv - * @brief Read orbit definition CSV file. - * @param file_name Path to orbit definition CSV file. - * @param delimiter Delimiter for the orbit definition CSV file (default: ','). - */ - bool ReadOrbitDefinitionCsv(const std::string& file_name, char delimiter = ','); -}; - -#endif // S2E_ENVIRONMENT_GLOBAL_ORBIT_DEFINITION_FILE_READER_HPP_ \ No newline at end of file From 330467dfd179c0b8ee165e8dc728b34b82a8bb63 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 13:55:51 +0900 Subject: [PATCH 355/456] Refactor Node class to rename albedo flux to albedo radiation and update related methods --- src/dynamics/thermal/node.cpp | 9 +++++---- src/dynamics/thermal/node.hpp | 12 ++++++------ src/dynamics/thermal/temperature.cpp | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 454d61b62..368624183 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -25,7 +25,7 @@ Node::Node(const size_t node_id, const string node_name, const NodeType node_typ normal_vector_b_(normal_vector_b) { AssertNodeParams(); solar_radiation_W_ = 0; - albedo_flux_W_ = 0; + albedo_radiation_W_ = 0; } Node::~Node() {} @@ -51,11 +51,12 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double so if (cos_theta_albedo > 0) { // 地球からの反射光による放射フラックスを計算 (アルベドの寄与) double albedo_flux_W_m2 = solar_flux_W_m2 * albedo_factor * (earth_radius_m / earth_distance_m) * (earth_radius_m / earth_distance_m); - albedo_flux_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; + cout << "#albedo_flux_W_m2: " << albedo_flux_W_m2 << endl; + albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { - albedo_flux_W_ = 0; + albedo_radiation_W_ = 0; } - return albedo_flux_W_; + return albedo_radiation_W_; } void Node::PrintParam(void) { diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 750b423ee..3b1a42797 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -105,18 +105,18 @@ class Node { * @return double: heat capacity [J/K] */ inline double GetCapacity_J_K(void) const { return capacity_J_K_; } - /** + /**s * @fn GetSolarRadiation_W * @brief Return Solar Radiation [W] * @return double: Solar Radiation [W] */ inline double GetSolarRadiation_W(void) const { return solar_radiation_W_; } /** - * @fn GetAlbedoFlux_W - * @brief Return Albedo Flux [W] - * @return double: Albedo Flux [W] + * @fn GetAlbedoRadiation_W + * @brief Return Albedo Radiation [W] + * @return double: Albedo Radiation [W] */ - inline double GetAlbedoFlux_W(void) const { return albedo_flux_W_; } + inline double GetAlbedoRadiation_W(void) const { return albedo_radiation_W_; } /** * @fn GetNodeType * @brief Return Node Type @@ -149,7 +149,7 @@ class Node { double alpha_; double area_m2_; double solar_radiation_W_; - double albedo_flux_W_; + double albedo_radiation_W_; NodeType node_type_; libra::Vector<3> normal_vector_b_; diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 53478cd6c..17e782247 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -68,9 +68,9 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - cout << "AlbedoF: "; + cout << "AlbedoR: "; for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetAlbedoFlux_W() << " "; + cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; } std::string sun_str = "SUN"; char* c_sun = new char[sun_str.size() + 1]; From d6f2b8fa8d25393263a022de10e99bf9bc8bc16e Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 14:15:01 +0900 Subject: [PATCH 356/456] Remove unused albedo flux debug output and simplify string handling for celestial positions --- src/dynamics/thermal/node.cpp | 1 - src/dynamics/thermal/temperature.cpp | 12 ++---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 368624183..4959b1bbd 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -51,7 +51,6 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double so if (cos_theta_albedo > 0) { // 地球からの反射光による放射フラックスを計算 (アルベドの寄与) double albedo_flux_W_m2 = solar_flux_W_m2 * albedo_factor * (earth_radius_m / earth_distance_m) * (earth_radius_m / earth_distance_m); - cout << "#albedo_flux_W_m2: " << albedo_flux_W_m2 << endl; albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { albedo_radiation_W_ = 0; diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 17e782247..ac7258e8a 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -133,14 +133,8 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); - std::string sun_str = "SUN"; - char* c_sun = new char[sun_str.size() + 1]; - std::char_traits::copy(c_sun, sun_str.c_str(), sun_str.size() + 1); // string -> char* - std::string earth_str = "EARTH"; - char* c_earth = new char[earth_str.size() + 1]; - std::char_traits::copy(c_earth, earth_str.c_str(), earth_str.size() + 1); // string -> char* - libra::Vector<3> sun_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m(c_sun); - libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m(c_earth); + libra::Vector<3> sun_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN"); + libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); double sun_distance_m = sun_position_b_m.CalcNorm(); double earth_distance_m = earth_position_b_m.CalcNorm(); libra::Vector<3> sun_direction_b; @@ -181,8 +175,6 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat differentials_K_s[i] = 0; } } - delete[] c_sun; - delete[] c_earth; return differentials_K_s; } From a1cc0d8a4b14eeaa049947ccc82371c8517f8a1c Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 15:57:38 +0900 Subject: [PATCH 357/456] Refactor CalcAlbedoRadiation_W method to use earth position and eclipsed state --- src/dynamics/thermal/node.cpp | 28 +++++++++++++++++----------- src/dynamics/thermal/node.hpp | 2 +- src/dynamics/thermal/temperature.cpp | 15 +++------------ 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 4959b1bbd..a51b85e72 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -41,17 +41,23 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m) { - double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); - - // 地球の半径 - double earth_radius_m = 6371.0e3; - - // アルベドによる入熱の計算 - if (cos_theta_albedo > 0) { - // 地球からの反射光による放射フラックスを計算 (アルベドの寄与) - double albedo_flux_W_m2 = solar_flux_W_m2 * albedo_factor * (earth_radius_m / earth_distance_m) * (earth_radius_m / earth_distance_m); - albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; +double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double albedo_factor, bool is_eclipsed) { + libra::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); + double earth_distance_m = earth_position_b_m.CalcNorm(); + + // check if satellite is outside of the earth's shadow + if (!is_eclipsed) { + double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); + // earth radius + double earth_radius_m = 6371.0e3; + + // albedo radiation calculation + if (cos_theta_albedo > 0) { + double albedo_flux_W_m2 = solar_flux_W_m2 * albedo_factor * pow((earth_radius_m / earth_distance_m),2) / 4.0; + albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; + } else { + albedo_radiation_W_ = 0; + } } else { albedo_radiation_W_ = 0; } diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 3b1a42797..1800efbdd 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -66,7 +66,7 @@ class Node { * @param earth_direction_b: Earth direction in body frame * @return double: Albedo Radiation [W] */ - double CalcAlbedoRadiation_W(libra::Vector<3> earth_direction_b, double solar_flux_W_m2, double albedo_factor, double earth_distance_m); + double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double albedo_factor, bool is_eclipsed); // Getter /** diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index ac7258e8a..3360d7d6a 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -133,26 +133,17 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); - libra::Vector<3> sun_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN"); + libra::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); - double sun_distance_m = sun_position_b_m.CalcNorm(); - double earth_distance_m = earth_position_b_m.CalcNorm(); - libra::Vector<3> sun_direction_b; - for (size_t i = 0; i < 3; i++) { - sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; - } - libra::Vector<3> earth_direction_b; - for (size_t i = 0; i < 3; i++) { - earth_direction_b[i] = earth_position_b_m[i] / earth_distance_m; - } vector differentials_K_s(node_num); for (size_t i = 0; i < node_num; i++) { heatloads_[i].SetElapsedTime_s(t); if (nodes_[i].GetNodeType() == NodeType::kDiffusive) { double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); + bool is_eclipsed = srp_environment_->IsEclipsed(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); - double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_direction_b, solar_flux_W_m2, albedo_factor_, earth_distance_m); + double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, albedo_factor_, is_eclipsed); heatloads_[i].SetSolarHeatload_W(solar_radiation_W); heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); } From d637fa750ad5d15403e8f8472c7bd45c47b95964 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 15:58:43 +0900 Subject: [PATCH 358/456] Refactor temperature calculation to use GetIsEclipsed method for eclipsed state --- src/dynamics/thermal/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 3360d7d6a..45869b0d0 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -140,7 +140,7 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat heatloads_[i].SetElapsedTime_s(t); if (nodes_[i].GetNodeType() == NodeType::kDiffusive) { double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); - bool is_eclipsed = srp_environment_->IsEclipsed(); + bool is_eclipsed = srp_environment_->GetIsEclipsed(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, albedo_factor_, is_eclipsed); From 5605351d527a60677918f66103b9d0ce8dfe07b1 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 16:21:54 +0900 Subject: [PATCH 359/456] Refactor Temperature class to include calc_albedo flag for albedo radiation calculation --- src/dynamics/thermal/temperature.cpp | 16 +++++++++++----- src/dynamics/thermal/temperature.hpp | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 45869b0d0..63ec51501 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -17,7 +17,7 @@ using namespace std; Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const bool is_calc_enabled, - const SolarCalcSetting solar_calc_setting, const double albedo_factor, const bool debug) + const SolarCalcSetting solar_calc_setting, const bool calc_albedo, const double albedo_factor, const bool debug) : conductance_matrix_W_K_(conductance_matrix_W_K), radiation_matrix_m2_(radiation_matrix_m2), nodes_(nodes), @@ -29,6 +29,7 @@ Temperature::Temperature(const vector> conductance_matrix_W_K, co srp_environment_(srp_environment), is_calc_enabled_(is_calc_enabled), solar_calc_setting_(solar_calc_setting), + calc_albedo_(calc_albedo), albedo_factor_(albedo_factor), debug_(debug) { propagation_time_s_ = 0; @@ -43,6 +44,7 @@ Temperature::Temperature() { propagation_time_s_ = 0.0; solar_calc_setting_ = SolarCalcSetting::kDisable; is_calc_enabled_ = false; + calc_albedo_ = false; debug_ = false; } @@ -68,9 +70,11 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - cout << "AlbedoR: "; - for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; + if (calc_albedo_) { + cout << "AlbedoR: "; + for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { + cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; + } } std::string sun_str = "SUN"; char* c_sun = new char[sun_str.size() + 1]; @@ -327,6 +331,8 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s bool debug = mainIni.ReadEnable("THERMAL", "debug"); + bool calc_albedo = mainIni.ReadEnable("THERMAL", "calc_albedo"); + double albedo_factor = mainIni.ReadDouble("THERMAL", "albedo_factor"); // Read Heatloads from CSV File @@ -387,6 +393,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s Temperature* temperature; temperature = new Temperature(conductance_matrix, radiation_matrix, node_list, heatload_list, heater_list, heater_controller_list, node_num, - rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, albedo_factor, debug); + rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, calc_albedo ,albedo_factor, debug); return temperature; } diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 9f933a384..86926f9f3 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -44,6 +44,7 @@ class Temperature : public ILoggable { bool is_calc_enabled_; // Whether temperature calculation is enabled SolarCalcSetting solar_calc_setting_; // setting for solar calculation bool debug_; // Activate debug output or not + bool calc_albedo_; // Whether to calculate albedo radiation double albedo_factor_; // Albedo factor for calculating albedo radiation /** @@ -89,7 +90,7 @@ class Temperature : public ILoggable { Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const double albedo_factor , const bool debug); + const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool calc_albedo, const double albedo_factor , const bool debug); /** * @fn Temperature * @brief Construct a new Temperature object, used when thermal calculation is disabled. From ce7a9fa40a9388168911401231be7d2a1e0bd57e Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 16:34:59 +0900 Subject: [PATCH 360/456] Refactor Heatload class to use const double for setter parameters --- src/dynamics/thermal/heatload.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dynamics/thermal/heatload.hpp b/src/dynamics/thermal/heatload.hpp index d7cce3478..ec094e73d 100644 --- a/src/dynamics/thermal/heatload.hpp +++ b/src/dynamics/thermal/heatload.hpp @@ -73,27 +73,27 @@ class Heatload { * @brief Set the Time object * @param[in] elapsed_time_s */ - void SetElapsedTime_s(double elapsed_time_s); + void SetElapsedTime_s(const double elapsed_time_s); /** * @brief Set Internal Heatload [W] * @param[in] internal_heatload_W */ - inline void SetInternalHeatload_W(double internal_heatload_W) { internal_heatload_W_ = internal_heatload_W; } + inline void SetInternalHeatload_W(const double internal_heatload_W) { internal_heatload_W_ = internal_heatload_W; } /** * @brief Set Solar Heatload [W] * @param[in] solar_heatload_W */ - inline void SetSolarHeatload_W(double solar_heatload_W) { solar_heatload_W_ = solar_heatload_W; } + inline void SetSolarHeatload_W(const double solar_heatload_W) { solar_heatload_W_ = solar_heatload_W; } /** * @brief Set Albedo Heatload [W] * @param[in] albedo_heatload_W */ - inline void SetAlbedoHeatload_W(double albedo_heatload_W) { albedo_heatload_W_ = albedo_heatload_W; } + inline void SetAlbedoHeatload_W(const double albedo_heatload_W) { albedo_heatload_W_ = albedo_heatload_W; } /** * @brief Set Heater Heatload [W] * @param[in] heater_heatload_W */ - inline void SetHeaterHeatload_W(double heater_heatload_W) { heater_heatload_W_ = heater_heatload_W; } + inline void SetHeaterHeatload_W(const double heater_heatload_W) { heater_heatload_W_ = heater_heatload_W; } protected: double elapsed_time_s_; // Elapsed time [s] From 3885db4e8c707b1da15b89584c08f77143c53e22 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 17:09:07 +0900 Subject: [PATCH 361/456] Refactor albedo radiation calculation to use earth_albedo_factor and update related parameters --- src/dynamics/thermal/node.cpp | 6 ++-- src/dynamics/thermal/node.hpp | 2 +- src/dynamics/thermal/temperature.cpp | 46 +++++++++++++++------------- src/dynamics/thermal/temperature.hpp | 13 +++++--- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index a51b85e72..64cc3f91b 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -41,7 +41,7 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double albedo_factor, bool is_eclipsed) { +double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor, bool is_eclipsed) { libra::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); double earth_distance_m = earth_position_b_m.CalcNorm(); @@ -49,11 +49,11 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double s if (!is_eclipsed) { double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); // earth radius - double earth_radius_m = 6371.0e3; + double earth_radius_m = 6371.0e3; // albedo radiation calculation if (cos_theta_albedo > 0) { - double albedo_flux_W_m2 = solar_flux_W_m2 * albedo_factor * pow((earth_radius_m / earth_distance_m),2) / 4.0; + double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((earth_radius_m / earth_distance_m), 2) / 4.0; albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { albedo_radiation_W_ = 0; diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 1800efbdd..3d142b9e0 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -66,7 +66,7 @@ class Node { * @param earth_direction_b: Earth direction in body frame * @return double: Albedo Radiation [W] */ - double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double albedo_factor, bool is_eclipsed); + double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor, bool is_eclipsed); // Getter /** diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 63ec51501..5fa40403d 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -17,7 +17,7 @@ using namespace std; Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const bool is_calc_enabled, - const SolarCalcSetting solar_calc_setting, const bool calc_albedo, const double albedo_factor, const bool debug) + const SolarCalcSetting solar_calc_setting, const bool calc_earth_albedo, const double earth_albedo_factor, const bool debug) : conductance_matrix_W_K_(conductance_matrix_W_K), radiation_matrix_m2_(radiation_matrix_m2), nodes_(nodes), @@ -29,8 +29,8 @@ Temperature::Temperature(const vector> conductance_matrix_W_K, co srp_environment_(srp_environment), is_calc_enabled_(is_calc_enabled), solar_calc_setting_(solar_calc_setting), - calc_albedo_(calc_albedo), - albedo_factor_(albedo_factor), + calc_earth_albedo_(calc_earth_albedo), + earth_albedo_factor_(earth_albedo_factor), debug_(debug) { propagation_time_s_ = 0; if (debug_) { @@ -70,26 +70,26 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - if (calc_albedo_) { + if (calc_earth_albedo_) { cout << "AlbedoR: "; for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; } } - std::string sun_str = "SUN"; - char* c_sun = new char[sun_str.size() + 1]; - std::char_traits::copy(c_sun, sun_str.c_str(), sun_str.size() + 1); // string -> char* - libra::Vector<3> sun_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m(c_sun); - double sun_distance_m = sun_position_b_m.CalcNorm(); - libra::Vector<3> sun_direction_b; - for (size_t i = 0; i < 3; i++) { - sun_direction_b[i] = sun_position_b_m[i] / sun_distance_m; - } + libra::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); cout << "SunDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; } - delete[] c_sun; + if (calc_earth_albedo_) { + cout << "IsEclipsed: " << srp_environment_->GetIsEclipsed() << " "; + + libra::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); + cout << "EarthDir: "; + for (size_t i = 0; i < 3; i++) { + cout << setprecision(3) << earth_direction_b[i] << " "; + } + } cout << "Heatload: "; for (auto itr = heatloads_.begin(); itr != heatloads_.end(); ++itr) { cout << setprecision(3) << itr->GetTotalHeatload_W() << " "; @@ -98,7 +98,8 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf } } -void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, size_t node_num) { +void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, + size_t node_num) { vector temperatures_now_K(node_num); for (size_t i = 0; i < node_num; i++) { temperatures_now_K[i] = nodes_[i].GetTemperature_K(); @@ -133,23 +134,26 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const nodes_[i].SetTemperature_K(temperatures_next_K[i]); } } -vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, const LocalCelestialInformation* local_celestial_information, size_t node_num) { +vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, + const LocalCelestialInformation* local_celestial_information, size_t node_num) { // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); libra::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); - libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); vector differentials_K_s(node_num); for (size_t i = 0; i < node_num; i++) { heatloads_[i].SetElapsedTime_s(t); if (nodes_[i].GetNodeType() == NodeType::kDiffusive) { double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); - bool is_eclipsed = srp_environment_->GetIsEclipsed(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); - double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, albedo_factor_, is_eclipsed); + if (calc_earth_albedo_) { + bool is_eclipsed = srp_environment_->GetIsEclipsed(); + libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); + double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_factor_, is_eclipsed); + heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); + } heatloads_[i].SetSolarHeatload_W(solar_radiation_W); - heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); } double heater_power_W = GetHeaterPower_W(i); heatloads_[i].SetHeaterHeatload_W(heater_power_W); @@ -393,6 +397,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s Temperature* temperature; temperature = new Temperature(conductance_matrix, radiation_matrix, node_list, heatload_list, heater_list, heater_controller_list, node_num, - rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, calc_albedo ,albedo_factor, debug); + rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, calc_albedo, albedo_factor, debug); return temperature; } diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 86926f9f3..c96b2bbc6 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -44,8 +44,8 @@ class Temperature : public ILoggable { bool is_calc_enabled_; // Whether temperature calculation is enabled SolarCalcSetting solar_calc_setting_; // setting for solar calculation bool debug_; // Activate debug output or not - bool calc_albedo_; // Whether to calculate albedo radiation - double albedo_factor_; // Albedo factor for calculating albedo radiation + bool calc_earth_albedo_; // Whether to calculate albedo radiation + double earth_albedo_factor_; // Albedo factor for earth; Percentage of solar radiation energy received by the Earth that is reflected /** * @fn CalcRungeOneStep @@ -67,8 +67,8 @@ class Temperature : public ILoggable { * @param node_num: Number of nodes * @return std::vector: Differential of thermal equilibrium equation at time now */ - std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const LocalCelestialInformation* local_celestial_information, - size_t node_num); + std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, + const LocalCelestialInformation* local_celestial_information, size_t node_num); public: /** @@ -85,12 +85,15 @@ class Temperature : public ILoggable { * @param propagation_step_s: Propagation time step [s] * @param is_calc_enabled: Whether calculation is enabled * @param solar_calc_setting: Solar calculation settings + * @param calc_earth_albedo: Whether to calculate albedo radiation + * @param earth_albedo_factor: Albedo factor for earth * @param debug: Whether debug is enabled */ Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool calc_albedo, const double albedo_factor , const bool debug); + const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool calc_earth_albedo, const double earth_albedo_factor, + const bool debug); /** * @fn Temperature * @brief Construct a new Temperature object, used when thermal calculation is disabled. From 9f76ed3578cfd91244a8adc5541be2f4f7a5b5bc Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 17:18:22 +0900 Subject: [PATCH 362/456] Refactor Temperature class to rename albedo flags and update initialization parameters --- src/dynamics/thermal/temperature.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 5fa40403d..f4d883b0e 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -44,7 +44,8 @@ Temperature::Temperature() { propagation_time_s_ = 0.0; solar_calc_setting_ = SolarCalcSetting::kDisable; is_calc_enabled_ = false; - calc_albedo_ = false; + calc_earth_albedo_ = false; + earth_albedo_factor_ = 0.0; debug_ = false; } @@ -335,9 +336,9 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s bool debug = mainIni.ReadEnable("THERMAL", "debug"); - bool calc_albedo = mainIni.ReadEnable("THERMAL", "calc_albedo"); + bool calc_earth_albedo = mainIni.ReadEnable("THERMAL", "calc_earth_albedo"); - double albedo_factor = mainIni.ReadDouble("THERMAL", "albedo_factor"); + double earth_albedo_factor = mainIni.ReadDouble("THERMAL", "earth_albedo_factor"); // Read Heatloads from CSV File string filepath_heatload = file_path + "heatload.csv"; @@ -397,6 +398,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s Temperature* temperature; temperature = new Temperature(conductance_matrix, radiation_matrix, node_list, heatload_list, heater_list, heater_controller_list, node_num, - rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, calc_albedo, albedo_factor, debug); + rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, calc_earth_albedo, earth_albedo_factor, debug); return temperature; } From ec65e3537e8b2d8d1f6ba1e7c8c1e2d396abc739 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:24:02 +0900 Subject: [PATCH 363/456] Fix typo in documentation comment for GetSolarRadiation_W method --- src/dynamics/thermal/node.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 3d142b9e0..0ea4528dc 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -105,7 +105,7 @@ class Node { * @return double: heat capacity [J/K] */ inline double GetCapacity_J_K(void) const { return capacity_J_K_; } - /**s + /** * @fn GetSolarRadiation_W * @brief Return Solar Radiation [W] * @return double: Solar Radiation [W] From c925d85c59a391c21c9051861319b1b166325254 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:25:16 +0900 Subject: [PATCH 364/456] Update parameter names in CalcAlbedoRadiation_W for clarity --- src/dynamics/thermal/node.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 0ea4528dc..9cecdd47b 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -63,7 +63,10 @@ class Node { * @fn CalcAlbedoRadiation_W * @brief Calculate albedo radiation [W] from earth direction, albedo factor, area, and normal vector * - * @param earth_direction_b: Earth direction in body frame + * @param earth_position_b_m: Earth position in body frame + * @param solar_flux_W_m2: Solar flux [W/m^2] + * @param earth_albedo_factor: Earth albedo factor + * @param is_eclipsed: Flag if satellite is eclipsed by earth * @return double: Albedo Radiation [W] */ double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor, bool is_eclipsed); From f9c37a609dacb794b1073e8d5d2c87dd00cf1ead Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:25:45 +0900 Subject: [PATCH 365/456] Add parameter description for solar_flux_W_m2 in CalcSolarRadiation_W method --- src/dynamics/thermal/node.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 9cecdd47b..1247f73d2 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -56,6 +56,7 @@ class Node { * @brief Calculate solar radiation [W] from sun direction, alpha, area, and normal vector * * @param sun_direction_b: Sun direction in body frame + * @param solar_flux_W_m2: Solar flux [W/m^2] * @return double: Solar Radiation [W] */ double CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar_flux_W_m2); From a692e9d885a903ca6f2bc04d0f03817569bda766 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:26:55 +0900 Subject: [PATCH 366/456] Add parameter description for srp_environment in InitTemperature method --- src/dynamics/thermal/temperature.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index c96b2bbc6..3ccace5b1 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -160,6 +160,7 @@ class Temperature : public ILoggable { * @brief Initialize Temperature object from csv file * @param[in] file_name: Directory of thermal input files * @param[in] rk_prop_step_s: time step interval for temperature propagation integration + * @param[in] srp_environment: SolarRadiationPressureEnvironment object for calculating solar flux * @return Temperature* */ Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment); From 996f40e0bf9becb3e944c5af8474bcdbfc2d888f Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:27:58 +0900 Subject: [PATCH 367/456] Initialize radiation variables to zero as floating-point values for consistency --- src/dynamics/thermal/node.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 64cc3f91b..82e37a281 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -24,8 +24,8 @@ Node::Node(const size_t node_id, const string node_name, const NodeType node_typ node_type_(node_type), normal_vector_b_(normal_vector_b) { AssertNodeParams(); - solar_radiation_W_ = 0; - albedo_radiation_W_ = 0; + solar_radiation_W_ = 0.0; + albedo_radiation_W_ = 0.0; } Node::~Node() {} @@ -34,10 +34,10 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar double cos_theta = InnerProduct(sun_direction_b, normal_vector_b_); // calculate sun_power - if (cos_theta > 0) + if (cos_theta > 0.0) solar_radiation_W_ = solar_flux_W_m2 * area_m2_ * alpha_ * cos_theta; else - solar_radiation_W_ = 0; + solar_radiation_W_ = 0.0; return solar_radiation_W_; } @@ -52,14 +52,14 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double s double earth_radius_m = 6371.0e3; // albedo radiation calculation - if (cos_theta_albedo > 0) { + if (cos_theta_albedo > 0.0) { double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((earth_radius_m / earth_distance_m), 2) / 4.0; albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { - albedo_radiation_W_ = 0; + albedo_radiation_W_ = 0.0; } } else { - albedo_radiation_W_ = 0; + albedo_radiation_W_ = 0.0; } return albedo_radiation_W_; } @@ -148,10 +148,10 @@ Node InitNode(const std::vector& node_str) { std::string node_label = "temp"; // node name size_t node_type_int = 0; // node type size_t heater_id = 0; // heater node index - double temperature_K = 0; // [K] - double capacity_J_K = 0; // [J/K] - double alpha = 0; // [] - double area_m2 = 0; // [m^2] + double temperature_K = 0.0; // [K] + double capacity_J_K = 0.0; // [J/K] + double alpha = 0.0; // [] + double area_m2 = 0.0; // [m^2] // Index to read from node_str for each parameter size_t index_node_id = 0; From c9d05137645b5fe93ef8bc6e8abe56f8d31a2be5 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:28:32 +0900 Subject: [PATCH 368/456] Fix calculation of albedo_flux_W_m2 to use double precision for the exponent --- src/dynamics/thermal/node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 82e37a281..6fa80ffca 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -53,7 +53,7 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double s // albedo radiation calculation if (cos_theta_albedo > 0.0) { - double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((earth_radius_m / earth_distance_m), 2) / 4.0; + double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((earth_radius_m / earth_distance_m), 2.0) / 4.0; albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { albedo_radiation_W_ = 0.0; From fc752081be32a53581f15e7da0c1adc89eb202d5 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:32:41 +0900 Subject: [PATCH 369/456] Rename calc_earth_albedo to is_calc_earth_albedo_enabled for clarity --- src/dynamics/thermal/temperature.cpp | 12 ++++++------ src/dynamics/thermal/temperature.hpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index f4d883b0e..9ac86a158 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -17,7 +17,7 @@ using namespace std; Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const bool is_calc_enabled, - const SolarCalcSetting solar_calc_setting, const bool calc_earth_albedo, const double earth_albedo_factor, const bool debug) + const SolarCalcSetting solar_calc_setting, const bool is_calc_earth_albedo_enabled, const double earth_albedo_factor, const bool debug) : conductance_matrix_W_K_(conductance_matrix_W_K), radiation_matrix_m2_(radiation_matrix_m2), nodes_(nodes), @@ -29,7 +29,7 @@ Temperature::Temperature(const vector> conductance_matrix_W_K, co srp_environment_(srp_environment), is_calc_enabled_(is_calc_enabled), solar_calc_setting_(solar_calc_setting), - calc_earth_albedo_(calc_earth_albedo), + is_calc_earth_albedo_enabled_(is_calc_earth_albedo_enabled), earth_albedo_factor_(earth_albedo_factor), debug_(debug) { propagation_time_s_ = 0; @@ -44,7 +44,7 @@ Temperature::Temperature() { propagation_time_s_ = 0.0; solar_calc_setting_ = SolarCalcSetting::kDisable; is_calc_enabled_ = false; - calc_earth_albedo_ = false; + is_calc_earth_albedo_enabled_ = false; earth_albedo_factor_ = 0.0; debug_ = false; } @@ -71,7 +71,7 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - if (calc_earth_albedo_) { + if (is_calc_earth_albedo_enabled_) { cout << "AlbedoR: "; for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; @@ -82,7 +82,7 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; } - if (calc_earth_albedo_) { + if (is_calc_earth_albedo_enabled_) { cout << "IsEclipsed: " << srp_environment_->GetIsEclipsed() << " "; libra::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); @@ -148,7 +148,7 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); - if (calc_earth_albedo_) { + if (is_calc_earth_albedo_enabled_) { bool is_eclipsed = srp_environment_->GetIsEclipsed(); libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_factor_, is_eclipsed); diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 3ccace5b1..5c5966f20 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -44,7 +44,7 @@ class Temperature : public ILoggable { bool is_calc_enabled_; // Whether temperature calculation is enabled SolarCalcSetting solar_calc_setting_; // setting for solar calculation bool debug_; // Activate debug output or not - bool calc_earth_albedo_; // Whether to calculate albedo radiation + bool is_calc_earth_albedo_enabled_; // Whether to calculate albedo radiation double earth_albedo_factor_; // Albedo factor for earth; Percentage of solar radiation energy received by the Earth that is reflected /** @@ -92,7 +92,7 @@ class Temperature : public ILoggable { Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool calc_earth_albedo, const double earth_albedo_factor, + const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool is_calc_earth_albedo_enabled, const double earth_albedo_factor, const bool debug); /** * @fn Temperature From 2d42f5479912f9523b4758993c01af8c78d8b360 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:37:21 +0900 Subject: [PATCH 370/456] Fix albedo radiation calculation to use equatorial radius instead of hardcoded value --- src/dynamics/thermal/node.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 6fa80ffca..accb00b08 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -48,12 +48,10 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double s // check if satellite is outside of the earth's shadow if (!is_eclipsed) { double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); - // earth radius - double earth_radius_m = 6371.0e3; // albedo radiation calculation if (cos_theta_albedo > 0.0) { - double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((earth_radius_m / earth_distance_m), 2.0) / 4.0; + double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { albedo_radiation_W_ = 0.0; From 12ba8a2312693b2be9a7a86ec22ed2337fd497b3 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 22:44:37 +0900 Subject: [PATCH 371/456] Add Doxygen comments for clarity in heater and thermal classes --- src/dynamics/thermal/heater.hpp | 8 ++--- src/dynamics/thermal/heater_controller.hpp | 4 +-- src/dynamics/thermal/heatload.hpp | 24 +++++++-------- src/dynamics/thermal/node.hpp | 6 ++-- src/dynamics/thermal/temperature.hpp | 34 +++++++++++----------- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/dynamics/thermal/heater.hpp b/src/dynamics/thermal/heater.hpp index 9ea964f73..b0b5fdc60 100644 --- a/src/dynamics/thermal/heater.hpp +++ b/src/dynamics/thermal/heater.hpp @@ -78,11 +78,11 @@ class Heater { void PrintParam(void); protected: - size_t heater_id_; // heater id (Use values over 1) - double power_rating_W_; // Power Rating (100% Duty) [W] + size_t heater_id_; //!< heater id (Use values over 1) + double power_rating_W_; /! time_table_s_; // Times that internal heatload values are defined [s] - std::vector internal_heatload_table_W_; // Defined internal heatload values [W] + double elapsed_time_s_; //!< Elapsed time [s] + unsigned int node_id_; //!< Node ID to apply heatload + std::vector time_table_s_; //!< Times that internal heatload values are defined [s] + std::vector internal_heatload_table_W_; //!< Defined internal heatload values [W] - unsigned int elapsed_time_idx_; // index of time_table_s_ that is closest to elapsed_time_s_ - double solar_heatload_W_; // Heatload from solar flux [W] - double albedo_heatload_W_; // Heatload from albedo flux [W] - double internal_heatload_W_; // Heatload from internal dissipation [W] - double heater_heatload_W_; // Heatload from heater [W] - double total_heatload_W_; // Total heatload [W] + unsigned int elapsed_time_idx_; //!< index of time_table_s_ that is closest to elapsed_time_s_ + double solar_heatload_W_; //!< Heatload from solar flux [W] + double albedo_heatload_W_; //!< Heatload from albedo flux [W] + double internal_heatload_W_; //!< Heatload from internal dissipation [W] + double heater_heatload_W_; //!< Heatload from heater [W] + double total_heatload_W_; //!< Total heatload [W] - double time_table_period_s_; // Value of last element of time_table_s_, which represents the period of the heatload table [s] - double residual_elapsed_time_s_; // Residual of dividing elapsed_time_s_ by time_table_period_s_ [s] + double time_table_period_s_; //!< Value of last element of time_table_s_, which represents the period of the heatload table [s] + double residual_elapsed_time_s_; //!< Residual of dividing elapsed_time_s_ by time_table_period_s_ [s] /** * @fn AssertHeatloadParams diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 1247f73d2..f4e697b7d 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -16,11 +16,11 @@ * @brief Type of node */ enum class NodeType { - //! Diffusive Node: Calculate temperature based on heat flow + //!< Diffusive Node: Calculate temperature based on heat flow kDiffusive, - //! Boundary Node: Fixed temperature + //!< Boundary Node: Fixed temperature kBoundary, - //! Arithmetic Node: Node without heat capacity, calculate temperature after diffusive nodes + //!< Arithmetic Node: Node without heat capacity, calculate temperature after diffusive nodes kArithmetic }; diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 5c5966f20..1be7237cf 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -31,21 +31,21 @@ enum class SolarCalcSetting { */ class Temperature : public ILoggable { protected: - std::vector> conductance_matrix_W_K_; // Coupling of node i and node j by heat conduction [W/K] - std::vector> radiation_matrix_m2_; // Coupling of node i and node j by thermal radiation [m2] - std::vector nodes_; // vector of nodes - std::vector heatloads_; // vector of heatloads - std::vector heaters_; // vector of heaters - std::vector heater_controllers_; // vector of heater controllers - size_t node_num_; // number of nodes - double propagation_step_s_; // propagation step [s] - double propagation_time_s_; // Incremented time inside class Temperature [s], finish propagation when reaching end_time - const SolarRadiationPressureEnvironment* srp_environment_; // SolarRadiationPressureEnvironment for calculating solar flux - bool is_calc_enabled_; // Whether temperature calculation is enabled - SolarCalcSetting solar_calc_setting_; // setting for solar calculation - bool debug_; // Activate debug output or not - bool is_calc_earth_albedo_enabled_; // Whether to calculate albedo radiation - double earth_albedo_factor_; // Albedo factor for earth; Percentage of solar radiation energy received by the Earth that is reflected + std::vector> conductance_matrix_W_K_; //!< Coupling of node i and node j by heat conduction [W/K] + std::vector> radiation_matrix_m2_; //!< Coupling of node i and node j by thermal radiation [m2] + std::vector nodes_; //!< vector of nodes + std::vector heatloads_; //!< vector of heatloads + std::vector heaters_; //!< vector of heaters + std::vector heater_controllers_; //!< vector of heater controllers + size_t node_num_; //!< number of nodes + double propagation_step_s_; //!< propagation step [s] + double propagation_time_s_; //!< Incremented time inside class Temperature [s], finish propagation when reaching end_time + const SolarRadiationPressureEnvironment* srp_environment_; //!< SolarRadiationPressureEnvironment for calculating solar flux + bool is_calc_enabled_; //!< Whether temperature calculation is enabled + SolarCalcSetting solar_calc_setting_; //!< setting for solar calculation + bool debug_; //!< Activate debug output or not + bool is_calc_earth_albedo_enabled_; //!< Whether to calculate albedo radiation + double earth_albedo_factor_; //!< Albedo factor for earth; Percentage of solar radiation energy received by the Earth that is reflected /** * @fn CalcRungeOneStep @@ -92,8 +92,8 @@ class Temperature : public ILoggable { Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool is_calc_earth_albedo_enabled, const double earth_albedo_factor, - const bool debug); + const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool is_calc_earth_albedo_enabled, + const double earth_albedo_factor, const bool debug); /** * @fn Temperature * @brief Construct a new Temperature object, used when thermal calculation is disabled. From c4d2e3f1c6a15ec37fadf00fcaa56d13faf91a20 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 20 Sep 2024 23:59:56 +0900 Subject: [PATCH 372/456] Fix comment formatting for power rating in Heater class --- src/dynamics/thermal/heater.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynamics/thermal/heater.hpp b/src/dynamics/thermal/heater.hpp index b0b5fdc60..c6d3594f5 100644 --- a/src/dynamics/thermal/heater.hpp +++ b/src/dynamics/thermal/heater.hpp @@ -79,7 +79,7 @@ class Heater { protected: size_t heater_id_; //!< heater id (Use values over 1) - double power_rating_W_; /! Date: Sat, 21 Sep 2024 00:10:04 +0900 Subject: [PATCH 373/456] Add earth albedo calculation flag and update thermal propagation logic --- src/dynamics/dynamics.cpp | 12 ++- src/dynamics/dynamics.hpp | 1 + src/dynamics/thermal/temperature.cpp | 109 ++++++++++++++++++++++++++- src/dynamics/thermal/temperature.hpp | 30 ++++++++ 4 files changed, 149 insertions(+), 3 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 9487a45c2..9b31cb757 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -4,6 +4,8 @@ */ #include "dynamics.hpp" +#include + #include "../simulation/multiple_spacecraft/relative_information.hpp" @@ -11,6 +13,7 @@ Dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, cons const LocalEnvironment* local_environment, const int spacecraft_id, Structure* structure, RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { + is_calc_earth_albedo_enabled_ = false; Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); } @@ -34,6 +37,9 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio // To get initial value orbit_->UpdateByAttitude(attitude_->GetQuaternion_i2b()); + + auto mainIni = IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); + is_calc_earth_albedo_enabled_ = mainIni.ReadEnable("THERMAL", "is_calc_earth_albedo_enabled"); } void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { @@ -50,7 +56,11 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia // Thermal if (simulation_time->GetThermalPropagateFlag()) { - temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); + if (!is_calc_earth_albedo_enabled_) { + temperature_->Propagate(local_celestial_information->GetPositionFromSpacecraft_b_m("SUN"), simulation_time->GetElapsedTime_s()); + } else { + temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); + } } } diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index a6b5044f1..7f5a1b349 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -112,6 +112,7 @@ class Dynamics { Temperature* temperature_; //!< Thermal dynamics const Structure* structure_; //!< Structure information const LocalEnvironment* local_environment_; //!< Local environment + bool is_calc_earth_albedo_enabled_; //!< Flag to calculate earth albedo /** * @fn Initialize diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 9ac86a158..b91dabd96 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -51,6 +51,39 @@ Temperature::Temperature() { Temperature::~Temperature() {} +void Temperature::Propagate(libra::Vector<3> sun_position_b_m, const double time_end_s) { + if (!is_calc_enabled_) return; + libra::Vector<3> sun_direction_b = sun_position_b_m.CalcNormalizedVector(); + while (time_end_s - propagation_time_s_ - propagation_step_s_ > 1.0e-6) { + CalcRungeOneStep(propagation_time_s_, propagation_step_s_, sun_direction_b, node_num_); + propagation_time_s_ += propagation_step_s_; + } + CalcRungeOneStep(propagation_time_s_, time_end_s - propagation_time_s_, sun_direction_b, node_num_); + propagation_time_s_ = time_end_s; + UpdateHeaterStatus(); + + if (debug_) { + cout << fixed; + cout << "Time: " << time_end_s << " Temp: "; + for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { + cout << setprecision(4) << itr->GetTemperature_degC() << " "; + } + cout << "SolarR: "; + for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { + cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; + } + cout << "SunDir: "; + for (size_t i = 0; i < 3; i++) { + cout << setprecision(3) << sun_direction_b[i] << " "; + } + cout << "Heatload: "; + for (auto itr = heatloads_.begin(); itr != heatloads_.end(); ++itr) { + cout << setprecision(3) << itr->GetTotalHeatload_W() << " "; + } + cout << endl; + } +} + void Temperature::Propagate(const LocalCelestialInformation* local_celestial_information, const double time_end_s) { if (!is_calc_enabled_) return; while (time_end_s - propagation_time_s_ - propagation_step_s_ > 1.0e-6) { @@ -99,6 +132,42 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf } } +void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, libra::Vector<3> sun_direction_b, size_t node_num) { + vector temperatures_now_K(node_num); + for (size_t i = 0; i < node_num; i++) { + temperatures_now_K[i] = nodes_[i].GetTemperature_K(); + } + + vector k1(node_num), k2(node_num), k3(node_num), k4(node_num); + vector xk2(node_num), xk3(node_num), xk4(node_num); + + k1 = CalcTemperatureDifferentials(temperatures_now_K, time_now_s, sun_direction_b, node_num); + for (size_t i = 0; i < node_num; i++) { + xk2[i] = temperatures_now_K[i] + (time_step_s / 2.0) * k1[i]; + } + + k2 = CalcTemperatureDifferentials(xk2, (time_now_s + time_step_s / 2.0), sun_direction_b, node_num); + for (size_t i = 0; i < node_num; i++) { + xk3[i] = temperatures_now_K[i] + (time_step_s / 2.0) * k2[i]; + } + + k3 = CalcTemperatureDifferentials(xk3, (time_now_s + time_step_s / 2.0), sun_direction_b, node_num); + for (size_t i = 0; i < node_num; i++) { + xk4[i] = temperatures_now_K[i] + time_step_s * k3[i]; + } + + k4 = CalcTemperatureDifferentials(xk4, (time_now_s + time_step_s), sun_direction_b, node_num); + + vector temperatures_next_K(node_num); + for (size_t i = 0; i < node_num; i++) { + temperatures_next_K[i] = temperatures_now_K[i] + (time_step_s / 6.0) * (k1[i] + 2.0 * k2[i] + 2.0 * k3[i] + k4[i]); + } + + for (size_t i = 0; i < node_num; i++) { + nodes_[i].SetTemperature_K(temperatures_next_K[i]); + } +} + void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, size_t node_num) { vector temperatures_now_K(node_num); @@ -135,6 +204,42 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const nodes_[i].SetTemperature_K(temperatures_next_K[i]); } } + +vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, libra::Vector<3> sun_direction_b, size_t node_num) { + // TODO: consider the following unused arguments are really needed + UNUSED(temperatures_K); + + vector differentials_K_s(node_num); + for (size_t i = 0; i < node_num; i++) { + heatloads_[i].SetElapsedTime_s(t); + if (nodes_[i].GetNodeType() == NodeType::kDiffusive) { + double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); + if (solar_calc_setting_ == SolarCalcSetting::kEnable) { + double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); + heatloads_[i].SetSolarHeatload_W(solar_radiation_W); + } + double heater_power_W = GetHeaterPower_W(i); + heatloads_[i].SetHeaterHeatload_W(heater_power_W); + heatloads_[i].CalcInternalHeatload(); + heatloads_[i].UpdateTotalHeatload(); + double total_heatload_W = heatloads_[i].GetTotalHeatload_W(); // Total heatload (solar + internal + heater)[W] + + double conductive_heat_input_W = 0; + double radiative_heat_input_W = 0; + for (size_t j = 0; j < node_num; j++) { + conductive_heat_input_W += conductance_matrix_W_K_[i][j] * (nodes_[j].GetTemperature_K() - nodes_[i].GetTemperature_K()); + radiative_heat_input_W += environment::stefan_boltzmann_constant_W_m2K4 * radiation_matrix_m2_[i][j] * + (pow(nodes_[j].GetTemperature_K(), 4) - pow(nodes_[i].GetTemperature_K(), 4)); + } + double total_heat_input_W = conductive_heat_input_W + radiative_heat_input_W + total_heatload_W; + differentials_K_s[i] = total_heat_input_W / nodes_[i].GetCapacity_J_K(); + } else if (nodes_[i].GetNodeType() == NodeType::kBoundary) { + differentials_K_s[i] = 0; + } + } + return differentials_K_s; +} + vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, const LocalCelestialInformation* local_celestial_information, size_t node_num) { // TODO: consider the following unused arguments are really needed @@ -336,7 +441,7 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s bool debug = mainIni.ReadEnable("THERMAL", "debug"); - bool calc_earth_albedo = mainIni.ReadEnable("THERMAL", "calc_earth_albedo"); + bool is_calc_earth_albedo_enabled = mainIni.ReadEnable("THERMAL", "is_calc_earth_albedo_enabled"); double earth_albedo_factor = mainIni.ReadDouble("THERMAL", "earth_albedo_factor"); @@ -398,6 +503,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s Temperature* temperature; temperature = new Temperature(conductance_matrix, radiation_matrix, node_list, heatload_list, heater_list, heater_controller_list, node_num, - rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, calc_earth_albedo, earth_albedo_factor, debug); + rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, is_calc_earth_albedo_enabled, earth_albedo_factor, debug); return temperature; } diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 1be7237cf..ca427fa9c 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -47,6 +47,28 @@ class Temperature : public ILoggable { bool is_calc_earth_albedo_enabled_; //!< Whether to calculate albedo radiation double earth_albedo_factor_; //!< Albedo factor for earth; Percentage of solar radiation energy received by the Earth that is reflected + /** + * @fn CalcRungeOneStep + * @brief Calculate one step of RK4 for thermal equilibrium equation and update temperatures of nodes + * + * @param[in] time_now_s: Current elapsed time [s] + * @param[in] time_step_s: Time step of RK4 [s] + * @param[in] sun_direction_b: Sun position in body frame [m] + * @param[in] node_num: Number of nodes + */ + void CalcRungeOneStep(double time_now_s, double time_step_s, libra::Vector<3> sun_direction_b, size_t node_num); + /** + * @fn CalcTemperatureDifferentials + * @brief Calculate differential of thermal equilibrium equation + * + * @param temperatures_K: [UNUSED] Temperatures of each node [K] + * @param time_now_s: Current elapsed time [s] + * @param[in] sun_direction_b: Sun direction in body frame + * @param node_num: Number of nodes + * @return std::vector: Differential of thermal equilibrium equation at time now + */ + std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const libra::Vector<3> sun_direction_b, + size_t node_num); /** * @fn CalcRungeOneStep * @brief Calculate one step of RK4 for thermal equilibrium equation and update temperatures of nodes @@ -106,6 +128,14 @@ class Temperature : public ILoggable { * */ virtual ~Temperature(); + /** + * @fn Propagate + * @brief Propagate thermal calculation until time_end_s + * + * @param[in] sun_position_b_m: Sun position in body frame [m] + * @param time_end_s: Time to finish propagation [s] + */ + void Propagate(libra::Vector<3> sun_position_b_m, const double time_end_s); /** * @fn Propagate * @brief Propagate thermal calculation until time_end_s From 5cb8e4e6138900228dc70d5f01495789bfb20eb6 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Sat, 21 Sep 2024 09:52:51 +0900 Subject: [PATCH 374/456] complete calculation --- src/dynamics/CMakeLists.txt | 1 + ...orbit_calculation_with_definition_file.cpp | 259 ++++++++++++++++++ ...orbit_calculation_with_definition_file.hpp | 56 ++-- .../orbit/interpolation_orbit.cpp | 8 + .../orbit/interpolation_orbit.hpp | 8 + 5 files changed, 293 insertions(+), 39 deletions(-) create mode 100644 src/dynamics/orbit/orbit_calculation_with_definition_file.cpp diff --git a/src/dynamics/CMakeLists.txt b/src/dynamics/CMakeLists.txt index eb4de1bca..f75bc09a4 100644 --- a/src/dynamics/CMakeLists.txt +++ b/src/dynamics/CMakeLists.txt @@ -8,6 +8,7 @@ add_library(${PROJECT_NAME} STATIC orbit/relative_orbit.cpp orbit/kepler_orbit_propagation.cpp orbit/encke_orbit_propagation.cpp + orbit/orbit_calculation_with_definition_file.cpp orbit/initialize_orbit.cpp thermal/node.cpp diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp b/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp new file mode 100644 index 000000000..b0f8d277a --- /dev/null +++ b/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp @@ -0,0 +1,259 @@ +/** + * @file orbit_calculation_with_definition_file.cpp + * @brief Class to calculate satellite orbit using interpolation with orbit time series input + */ + +#include "orbit_calculation_with_definition_file.hpp" + +#include + +#include +#include +#include + +#include "setting_file_reader/initialize_file_access.hpp" +#include "math_physics/time_system/date_time_format.hpp" +#include "math_physics/math/constants.hpp" +#include "logger/log_utility.hpp" + +void OrbitCalculationWithDefinitionFile::Initialize(const std::string ini_file_name, const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { + IniAccess ini_file(ini_file_name); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + const size_t number_of_interpolation = ini_file.ReadInt(section, "number_of_interpolation"); + + orbit_definition_data_ = orbit_definition_data; + current_epoch_time_ = start_time; + + // Get general info + const size_t nearest_epoch_id = SearchNearestEpochId(simulation_time); + const size_t half_interpolation_number = number_of_interpolation / 2; + if (nearest_epoch_id >= half_interpolation_number) { + reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; + } + reference_time_ = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + + // Initialize orbit + orbit_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); + + // Initialize interpolation + for (size_t i = 0; i < number_of_interpolation; i++) { + UpdateInterpolationInformation(); + } + + return; +} + +std::vector ParseCsvLine(const std::string& line) { + std::vector result; + std::stringstream ss(line); + std::string field; + bool inside_quotes = false; + char current_char; + std::string temp; + + while (ss.get(current_char)) { + if (current_char == '"') { + inside_quotes = !inside_quotes; + temp += '"'; + } else if (current_char == ',' && !inside_quotes) { + result.push_back(temp); + temp.clear(); + } else { + temp += current_char; + } + } + result.push_back(temp); + + return result; +} + +bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data) { + IniAccess ini_file(ini_file_name); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + + std::ifstream file(orbit_definition_file_path); + if (!file.is_open()) { + std::cout << "file open error. filename = " << orbit_definition_file_path << std::endl; + return 1; + } + + std::string line; + + if (std::getline(file, line)) { + std::vector headers = ParseCsvLine(line); + + int index_et = -1; + int index_x = -1; + int index_y = -1; + int index_z = -1; + int index_vx = -1; + int index_vy = -1; + int index_vz = -1; + for (int i = 0; i < headers.size(); ++i) { + if (headers[i] == ini_file.ReadString(section, "header_name_et")) { + index_et = i; + } else if (headers[i] == ini_file.ReadString(section, "header_name_x")) { + index_x = i; + } else if (headers[i] == ini_file.ReadString(section, "header_name_y")) { + index_y = i; + } else if (headers[i] == ini_file.ReadString(section, "header_name_z")) { + index_z = i; + } else if (headers[i] == ini_file.ReadString(section, "header_name_vx")) { + index_vx = i; + } else if (headers[i] == ini_file.ReadString(section, "header_name_vy")) { + index_vy = i; + } else if (headers[i] == ini_file.ReadString(section, "header_name_vz")) { + index_vz = i; + } + } + + if (index_et == -1 || index_x == -1 || index_y == -1 || index_z == -1 || index_vx == -1 || index_vy == -1 || index_vz == -1) { + std::cerr << "header name error." << std::endl; + return false; + } + + int year, month, day, hour, minute; + double second; + + while (std::getline(file, line)) { + std::vector row = ParseCsvLine(line); + if (index_et < row.size() && index_x < row.size() && index_y < row.size() && index_z < row.size() && index_vx < row.size() && index_vy < row.size() && index_vz < row.size()) { + OrbitDefinitionData data; + data.et = std::stod(row[index_et]); + data.x = std::stod(row[index_x]); + data.y = std::stod(row[index_y]); + data.z = std::stod(row[index_z]); + data.vx = std::stod(row[index_vx]); + data.vy = std::stod(row[index_vy]); + data.vz = std::stod(row[index_vz]); + + SpiceChar utc_char[80]; + et2utc_c(data.et, "ISOC", 2, 80, utc_char); + sscanf(utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); + epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); + + orbit_definition_data.push_back(data); + } + } + } + + return true; +} + + +void OrbitCalculationWithDefinitionFile::Update(const SimulationTime& simulation_time) { + if (!IsCalcEnabled()) return; + + // Get time + UTC current_utc = simulation_time.GetCurrentUtc(); + time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, + (size_t)current_utc.minute, current_utc.second); + current_epoch_time_ = time_system::EpochTime(current_date_time); + + // Check interpolation update + double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double medium_time_s = orbit_[0].GetTimeList()[4]; + if (diff_s > medium_time_s) { + UpdateInterpolationInformation(); + } + + return; +} + +size_t OrbitCalculationWithDefinitionFile::SearchNearestEpochId(const SimulationTime& simulation_time) { + size_t nearest_epoch_id = 0; + + // Get start ephemeris time + SpiceDouble start_et = simulation_time.GetCurrentEphemerisTime(); + + // Get the nearest epoch ID + for (size_t i = 0; i < orbit_definition_data_.size(); i++) { + if (start_et < orbit_definition_data_[i].et) { + nearest_epoch_id = i; + break; + } + } + return nearest_epoch_id; +} + +time_system::DateTime OrbitCalculationWithDefinitionFile::GetEpochData(const size_t epoch_id) const { + if (epoch_id > epoch_.size()) { + time_system::DateTime zero; + return zero; + } + return epoch_[epoch_id]; +} + + +math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition_eclipj2000_km(const time_system::EpochTime time) const { + time_system::EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); + + return orbit_[0].CalcPositionWithPolynomial(diff_s); +} + +bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { + time_system::EpochTime orbit_definition_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + double time_diff_s = orbit_definition_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + math::Vector<3> orbit_definition_position_eclipj2000_km; + orbit_definition_position_eclipj2000_km(0) = orbit_definition_data_[reference_interpolation_id_].x; + orbit_definition_position_eclipj2000_km(1) = orbit_definition_data_[reference_interpolation_id_].y; + orbit_definition_position_eclipj2000_km(2) = orbit_definition_data_[reference_interpolation_id_].z; + + orbit_[0].PushAndPopData(time_diff_s, orbit_definition_position_eclipj2000_km); + + reference_interpolation_id_++; + + return true; +} + +std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { + std::string str_tmp = ""; + + str_tmp += WriteVector("satellite_position", "eclipj2000", "km", 3); + + + return str_tmp; +} + +std::string OrbitCalculationWithDefinitionFile::GetLogValue() const { + std::string str_tmp = ""; + + str_tmp += WriteVector(GetPosition_eclipj2000_km(), 16); + + return str_tmp; +} + +OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string ini_file_name, const SimulationTime& simulation_time) { + IniAccess ini_file(ini_file_name); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + + const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); + const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); + + OrbitCalculationWithDefinitionFile* orbit_calculation_with_definition_file = new OrbitCalculationWithDefinitionFile(is_calc_enable, is_log_enable); + if (!orbit_calculation_with_definition_file->IsCalcEnabled()) { + return orbit_calculation_with_definition_file; + } + + const std::string orbit_definition_file_path = ini_file.ReadString(section, "orbit_definition_file_path"); + + std::vector orbit_definition_data; + orbit_calculation_with_definition_file->ReadOrbitDefinitionCsv(ini_file_name, orbit_definition_file_path, orbit_definition_data); + + time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), + (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), + (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); + time_system::EpochTime start_epoch_time(start_date_time); + orbit_calculation_with_definition_file->Initialize(ini_file_name, orbit_definition_data, start_epoch_time, simulation_time); + + return orbit_calculation_with_definition_file; +} diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp index 3c4d9c4ff..cf19bcb81 100644 --- a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp +++ b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp @@ -9,48 +9,24 @@ #include #include - -// #include -// #include -// #include #include #include -// #include -// #include -// #include "earth_rotation.hpp" -// #include "logger/loggable.hpp" -// #include "math_physics/gnss/gnss_satellite_number.hpp" -// #include "math_physics/math/vector.hpp" #include "environment/global/simulation_time.hpp" /** *@struct OrbitDefinitionData *@brief Orbit definition data + *@note Coordinate system and units follow the orbit definition file */ struct OrbitDefinitionData { - std::string time_utc; //!< time (UTC) - double time_et_s; //!< Ephemeris time [s] - double equ_x_eclipj2000_km; //!< EQU X(ECLIPJ2000) [km] - double equ_y_eclipj2000_km; //!< EQU Y(ECLIPJ2000) [km] - double equ_z_eclipj2000_km; //!< EQU Z(ECLIPJ2000) [km] - double vx_eclipj2000_km_s; //!< VX [km/s] - double vy_eclipj2000_km_s; //!< VY [km/s] - double vz_eclipj2000_km_s; //!< VZ [km/s] - double m_kg; //!< Mass [kg] - double fx_kN; //!< FX [kN] - double fy_kN; //!< FY [kN] - double fz_kN; //!< FZ [kN] - bool dv_node; //!< DV NODE - double dv_x_eclipj2000_km_s; //!< DV_X [km/s] - double dv_y_eclipj2000_km_s; //!< DV_Y [km/s] - double dv_z_eclipj2000_km_s; //!< DV_Z [km/s] - double sun_x_eclipj2000_km; //!< SUN X (ECLIPJ2000) [km] - double sun_y_eclipj2000_km; //!< SUN Y (ECLIPJ2000) [km] - double sun_z_eclipj2000_km; //!< SUN Z (ECLIPJ2000) [km] - double moon_x_eclipj2000_km; //!< MOON X (ECLIPJ2000) [km] - double moon_y_eclipj2000_km; //!< MOON Y (ECLIPJ2000) [km] - double moon_z_eclipj2000_km; //!< MOON Z (ECLIPJ2000) [km] + double et; //!< Ehemeris time [s] + double x; //!< Position x + double y; //!< Position y + double z; //!< Position z + double vx; //!< Velocity x + double vy; //!< Velocity y + double vz; //!< Velocity z }; /** @@ -83,10 +59,11 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { /** * @fn Initialize * @brief Initialize function + * @param [in] ini_file_name: Path to the initialize file * @param [in] orbit_definition_data: orbit definition data * @param [in] start_time: The simulation start time */ - void Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); + void Initialize(const std::string ini_file_name, const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); /** * @fn IsCalcEnabled @@ -97,11 +74,12 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { /** * @fn ReadOrbitDefinitionCsv * @brief Read orbit definition CSV file. - * @param file_name Path to orbit definition CSV file. + * @param ini_file_name Path to the initialize file. + * @param orbit_definition_file_path Path to orbit definition CSV file. * @param orbit_definition_data List of orbit definition data. * @param delimiter Delimiter for the orbit definition CSV file (default: ','). */ - bool ReadOrbitDefinitionCsv(const std::string& file_name, std::vector& orbit_definition_data, char delimiter = ','); + bool ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data); /** * @fn GetOrbitDefinitionDataSize @@ -130,7 +108,6 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { */ size_t SearchNearestEpochId(const SimulationTime& simulation_time); - /** * @fn Update * @brief Updatesatellite information @@ -144,7 +121,7 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { * @param [in] time: Target time to get the satellite. When the argument is not set, the last updated time is used for the calculation. * @return Satellite position at ECLIPJ2000 frame at the time. Or return zero vector when the arguments are out of range. */ - math::Vector<3> GetPosition_eclipj2000_km(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + inline math::Vector<3> GetPosition_eclipj2000_km(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; // Override ILoggable /** @@ -181,9 +158,10 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { /** * @fn InitOrbitCalculationWithDefinitionFile * @brief Initialize function for OrbitCalculationWithDefinitionFile class - * @param [in] file_name: Path to the initialize file + * @param [in] ini_file_name: Path to the initialize file * @param [in] simulation_time: Simulation time information * @return Initialized OrbitCalculationWithDefinitionFile class */ -OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string file_name, const SimulationTime& simulation_time); +OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string ini_file_name, const SimulationTime& simulation_time); + #endif // S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ \ No newline at end of file diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index 33d2843a5..d4fc5fc13 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -37,4 +37,12 @@ math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double t return output_position; } +math::Vector<3> InterpolationOrbit::CalcPositionWithPolynomial(const double time) const { + math::Vector<3> output_position; + for (size_t axis = 0; axis < 3; axis++) { + output_position[axis] = interpolation_position_[axis].CalcPolynomial(time); + } + return output_position; +} + } // namespace orbit diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index cf83660ab..02f30513b 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -43,6 +43,14 @@ class InterpolationOrbit { */ math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; + /** + * @fn CalcPositionWithPolynimial + * @brief Calculate interpolated position with polynomial method + * @param [in] time: time + * @return Calculated position + */ + math::Vector<3> CalcPositionWithPolynomial(const double time) const; + // Getters /** * @fn GetDegree From ca863d1852d35f4780ac1849062d8c01ddd16fea Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 11:36:04 +0900 Subject: [PATCH 375/456] Add EarthAlbedo class and integrate into local environment --- src/environment/local/CMakeLists.txt | 1 + src/environment/local/earth_albedo.cpp | 44 +++++++++++++++ src/environment/local/earth_albedo.hpp | 61 +++++++++++++++++++++ src/environment/local/local_environment.cpp | 3 + src/environment/local/local_environment.hpp | 7 +++ 5 files changed, 116 insertions(+) create mode 100644 src/environment/local/earth_albedo.cpp create mode 100644 src/environment/local/earth_albedo.hpp diff --git a/src/environment/local/CMakeLists.txt b/src/environment/local/CMakeLists.txt index e5865f783..b9943f9d0 100644 --- a/src/environment/local/CMakeLists.txt +++ b/src/environment/local/CMakeLists.txt @@ -6,6 +6,7 @@ add_library(${PROJECT_NAME} STATIC local_environment.cpp geomagnetic_field.cpp solar_radiation_pressure_environment.cpp + earth_albedo.cpp local_celestial_information.cpp ) diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp new file mode 100644 index 000000000..8ab18335f --- /dev/null +++ b/src/environment/local/earth_albedo.cpp @@ -0,0 +1,44 @@ +/** + * @file earth_albedo.cpp + * @brief Class to manage earth albedo + */ +#include "earth_albedo.hpp" + +#include +#include +#include + +#include "library/initialize/initialize_file_access.hpp" +#include "library/logger/log_utility.hpp" +#include "library/math/constants.hpp" +#include "library/math/vector.hpp" + + +EarthAlbedo::EarthAlbedo() { earth_albedo_factor_ = 0.0; } + +std::string EarthAlbedo::GetLogHeader() const { + std::string str_tmp = ""; + + str_tmp += WriteScalar("earth_albedo_factor"); + + return str_tmp; +} + +std::string EarthAlbedo::GetLogValue() const { + std::string str_tmp = ""; + + str_tmp += WriteScalar(earth_albedo_factor_); + + return str_tmp; +} + +EarthAlbedo InitEarthAlbedo(std::string initialize_file_path) { + auto conf = IniAccess(initialize_file_path); + const char* section = "EARTH_ALBEDO"; + + EarthAlbedo earth_albedo; + earth_albedo.IsCalcEarthAlbedoEnabled = conf.ReadEnable(section, INI_CALC_LABEL); + earth_albedo.earth_albedo_factor_ = conf.ReadEnable(section, "earth_albedo_factor"); + + return earth_albedo; +} diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp new file mode 100644 index 000000000..7b919e19f --- /dev/null +++ b/src/environment/local/earth_albedo.hpp @@ -0,0 +1,61 @@ +/** + * @file earth_albedo.hpp + * @brief Class to manage earth albedo + */ + +#ifndef S2E_ENVIRONMENT_LOCAL_EARTH_ALBEDO_HPP_ +#define S2E_ENVIRONMENT_LOCAL_EARTH_ALBEDO_HPP_ + +#include "environment/global/physical_constants.hpp" +#include "environment/local/local_celestial_information.hpp" + +/** + * @class EarthAlbedo + * @brief Class to calculate Solar Radiation Pressure + */ +class EarthAlbedo : public ILoggable { + public: + bool IsCalcEarthAlbedoEnabled = false; //!< Calculation flag + double earth_albedo_factor_ = 0.3; //!< Earth albedo factor + + /** + * @fn EarthAlbedo + * @brief Constructor + */ + EarthAlbedo(); + + /** + * @fn ~EarthAlbedo + * @brief Destructor + */ + virtual ~EarthAlbedo() {} + + // Getter + /** + * @fn GetEarthAlbedoFactor + * @brief Return earth albedo factor + */ + inline double GetEarthAlbedoFactor() const { return earth_albedo_factor_; } + + // Override ILoggable + /** + * @fn GetLogHeader + * @brief Override GetLogHeader function of ILoggable + */ + virtual std::string GetLogHeader() const; + /** + * @fn GetLogValue + * @brief Override GetLogValue function of ILoggable + */ + virtual std::string GetLogValue() const; + +}; + +/** + * @fn InitEarthAlbedo + * @brief Initialize solar radiation pressure + * @param [in] initialize_file_path: Path to initialize file + */ +EarthAlbedo InitEarthAlbedo(std::string initialize_file_path); + +#endif // S2E_ENVIRONMENT_LOCAL_EARTH_ALBEDO_HPP_ diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index dba52989c..c4f10b4dc 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -16,6 +16,7 @@ LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_con LocalEnvironment::~LocalEnvironment() { delete geomagnetic_field_; delete solar_radiation_pressure_environment_; + delete earth_albedo_; delete atmosphere_; delete celestial_information_; } @@ -35,6 +36,7 @@ void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_conf atmosphere_ = new Atmosphere(InitAtmosphere(ini_fname, celestial_information_, &global_environment->GetSimulationTime())); solar_radiation_pressure_environment_ = new SolarRadiationPressureEnvironment(InitSolarRadiationPressureEnvironment(ini_fname, celestial_information_)); + earth_albedo_ = new EarthAlbedo(InitEarthAlbedo(ini_fname)); // Force to disable when the center body is not the Earth if (global_environment->GetCelestialInformation().GetCenterBodyName() != "EARTH") { @@ -69,6 +71,7 @@ void LocalEnvironment::Update(const Dynamics* dynamics, const SimulationTime* si void LocalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(geomagnetic_field_); logger.AddLogList(solar_radiation_pressure_environment_); + logger.AddLogList(earth_albedo_); logger.AddLogList(atmosphere_); logger.AddLogList(celestial_information_); } diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index 7e2d05a92..a7d0b7cac 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -8,6 +8,7 @@ #include "atmosphere.hpp" #include "dynamics/dynamics.hpp" +#include "earth_albedo.hpp" #include "environment/global/global_environment.hpp" #include "geomagnetic_field.hpp" #include "local_celestial_information.hpp" @@ -65,6 +66,11 @@ class LocalEnvironment { * @brief Return SolarRadiationPressureEnvironment class */ inline const SolarRadiationPressureEnvironment& GetSolarRadiationPressure() const { return *solar_radiation_pressure_environment_; } + /** + * @fn GetEarthAlbedo + * @brief Return EarthAlbedo class + */ + inline const EarthAlbedo& GetEarthAlbedo() const { return *earth_albedo_; } /** * @fn GetCelestialInformation * @brief Return LocalCelestialInformation class @@ -75,6 +81,7 @@ class LocalEnvironment { Atmosphere* atmosphere_; //!< Atmospheric density of the earth GeomagneticField* geomagnetic_field_; //!< Magnetic field of the earth SolarRadiationPressureEnvironment* solar_radiation_pressure_environment_; //!< Solar radiation pressure + EarthAlbedo* earth_albedo_; //!< Earth albedo LocalCelestialInformation* celestial_information_; //!< Celestial information /** From 0659e9d05e0835c46f8c1fd28161a09a92f9e83e Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 12:04:27 +0900 Subject: [PATCH 376/456] Update GetEarthAlbedoFactor to return 0.0 when calculation is disabled --- src/environment/local/earth_albedo.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index 7b919e19f..6ae6389d5 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -35,7 +35,7 @@ class EarthAlbedo : public ILoggable { * @fn GetEarthAlbedoFactor * @brief Return earth albedo factor */ - inline double GetEarthAlbedoFactor() const { return earth_albedo_factor_; } + inline double GetEarthAlbedoFactor() const { return IsCalcEarthAlbedoEnabled ? earth_albedo_factor_ : 0.0; } // Override ILoggable /** From c09c3e0274b4d772ef452d92af180c122f86033d Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 12:04:41 +0900 Subject: [PATCH 377/456] Refactor temperature and albedo calculations to integrate EarthAlbedo class and simplify parameters --- src/dynamics/dynamics.cpp | 2 +- src/dynamics/thermal/node.cpp | 8 ++---- src/dynamics/thermal/node.hpp | 3 +-- src/dynamics/thermal/temperature.cpp | 37 +++++++++++----------------- src/dynamics/thermal/temperature.hpp | 14 +++++------ 5 files changed, 26 insertions(+), 38 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 9b31cb757..478e035bc 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -33,7 +33,7 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio attitude_ = InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), spacecraft_id); temperature_ = InitTemperature(simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetThermalRkStepTime_s(), - &(local_environment_->GetSolarRadiationPressure())); + &(local_environment_->GetSolarRadiationPressure()), &(local_environment_->GetEarthAlbedo())); // To get initial value orbit_->UpdateByAttitude(attitude_->GetQuaternion_i2b()); diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index accb00b08..10727cd4e 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -41,24 +41,20 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor, bool is_eclipsed) { +double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor) { libra::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); double earth_distance_m = earth_position_b_m.CalcNorm(); // check if satellite is outside of the earth's shadow - if (!is_eclipsed) { double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); - // albedo radiation calculation + // albedo radiation calculation; solar_flux_W_m2 reflects the shadow coefficient. if earth albedo calculation is disabled, earth_albedo_factor is 0.0 if (cos_theta_albedo > 0.0) { double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { albedo_radiation_W_ = 0.0; } - } else { - albedo_radiation_W_ = 0.0; - } return albedo_radiation_W_; } diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index f4e697b7d..16f9e81f1 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -67,10 +67,9 @@ class Node { * @param earth_position_b_m: Earth position in body frame * @param solar_flux_W_m2: Solar flux [W/m^2] * @param earth_albedo_factor: Earth albedo factor - * @param is_eclipsed: Flag if satellite is eclipsed by earth * @return double: Albedo Radiation [W] */ - double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor, bool is_eclipsed); + double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor); // Getter /** diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index b91dabd96..285d87c11 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -16,8 +16,8 @@ using namespace std; Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, - const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const bool is_calc_enabled, - const SolarCalcSetting solar_calc_setting, const bool is_calc_earth_albedo_enabled, const double earth_albedo_factor, const bool debug) + const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const EarthAlbedo* earth_albedo, + const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool debug) : conductance_matrix_W_K_(conductance_matrix_W_K), radiation_matrix_m2_(radiation_matrix_m2), nodes_(nodes), @@ -27,10 +27,9 @@ Temperature::Temperature(const vector> conductance_matrix_W_K, co node_num_(node_num), propagation_step_s_(propagation_step_s), srp_environment_(srp_environment), + earth_albedo_(earth_albedo), is_calc_enabled_(is_calc_enabled), solar_calc_setting_(solar_calc_setting), - is_calc_earth_albedo_enabled_(is_calc_earth_albedo_enabled), - earth_albedo_factor_(earth_albedo_factor), debug_(debug) { propagation_time_s_ = 0; if (debug_) { @@ -44,8 +43,6 @@ Temperature::Temperature() { propagation_time_s_ = 0.0; solar_calc_setting_ = SolarCalcSetting::kDisable; is_calc_enabled_ = false; - is_calc_earth_albedo_enabled_ = false; - earth_albedo_factor_ = 0.0; debug_ = false; } @@ -104,25 +101,20 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - if (is_calc_earth_albedo_enabled_) { - cout << "AlbedoR: "; - for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; - } + cout << "AlbedoR: "; + for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { + cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; } libra::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); cout << "SunDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; } - if (is_calc_earth_albedo_enabled_) { - cout << "IsEclipsed: " << srp_environment_->GetIsEclipsed() << " "; - - libra::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); - cout << "EarthDir: "; - for (size_t i = 0; i < 3; i++) { - cout << setprecision(3) << earth_direction_b[i] << " "; - } + cout << "ShadowCoefficient: " << setprecision(4) << srp_environment_->GetShadowCoefficient() << " "; + libra::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); + cout << "EarthDir: "; + for (size_t i = 0; i < 3; i++) { + cout << setprecision(3) << earth_direction_b[i] << " "; } cout << "Heatload: "; for (auto itr = heatloads_.begin(); itr != heatloads_.end(); ++itr) { @@ -256,7 +248,7 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat if (is_calc_earth_albedo_enabled_) { bool is_eclipsed = srp_environment_->GetIsEclipsed(); libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); - double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_factor_, is_eclipsed); + double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_->GetEarthAlbedoFactor()); heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); } heatloads_[i].SetSolarHeatload_W(solar_radiation_W); @@ -404,7 +396,8 @@ First row is time data using std::string; using std::vector; -Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment) { +Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment, + const EarthAlbedo* earth_albedo) { auto mainIni = IniAccess(file_name); vector node_list; @@ -503,6 +496,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s Temperature* temperature; temperature = new Temperature(conductance_matrix, radiation_matrix, node_list, heatload_list, heater_list, heater_controller_list, node_num, - rk_prop_step_s, srp_environment, is_calc_enabled, solar_calc_setting, is_calc_earth_albedo_enabled, earth_albedo_factor, debug); + rk_prop_step_s, srp_environment, earth_albedo, is_calc_enabled, solar_calc_setting, debug); return temperature; } diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index ca427fa9c..a494b5102 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -6,6 +6,7 @@ #ifndef S2E_DYNAMICS_THERMAL_TEMPERATURE_HPP_ #define S2E_DYNAMICS_THERMAL_TEMPERATURE_HPP_ +#include #include #include #include @@ -41,11 +42,10 @@ class Temperature : public ILoggable { double propagation_step_s_; //!< propagation step [s] double propagation_time_s_; //!< Incremented time inside class Temperature [s], finish propagation when reaching end_time const SolarRadiationPressureEnvironment* srp_environment_; //!< SolarRadiationPressureEnvironment for calculating solar flux + const EarthAlbedo* earth_albedo_; //!< EarthAlbedo object for calculating earth albedo bool is_calc_enabled_; //!< Whether temperature calculation is enabled SolarCalcSetting solar_calc_setting_; //!< setting for solar calculation bool debug_; //!< Activate debug output or not - bool is_calc_earth_albedo_enabled_; //!< Whether to calculate albedo radiation - double earth_albedo_factor_; //!< Albedo factor for earth; Percentage of solar radiation energy received by the Earth that is reflected /** * @fn CalcRungeOneStep @@ -105,17 +105,16 @@ class Temperature : public ILoggable { * @param heater_controllers: Vector of all heater controllers included in calculation * @param node_num: Number of nodes * @param propagation_step_s: Propagation time step [s] + * @param srp_environment: SolarRadiationPressureEnvironment object for calculating solar flux + * @param earth_albedo: EarthAlbedo object for calculating earth albedo * @param is_calc_enabled: Whether calculation is enabled * @param solar_calc_setting: Solar calculation settings - * @param calc_earth_albedo: Whether to calculate albedo radiation - * @param earth_albedo_factor: Albedo factor for earth * @param debug: Whether debug is enabled */ Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool is_calc_earth_albedo_enabled, - const double earth_albedo_factor, const bool debug); + const EarthAlbedo* earth_albedo, const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool debug); /** * @fn Temperature * @brief Construct a new Temperature object, used when thermal calculation is disabled. @@ -193,6 +192,7 @@ class Temperature : public ILoggable { * @param[in] srp_environment: SolarRadiationPressureEnvironment object for calculating solar flux * @return Temperature* */ -Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment); +Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment, + const EarthAlbedo* earth_albedo); #endif // S2E_DYNAMICS_THERMAL_TEMPERATURE_HPP_ From ff128e4e350a549d59ce1139a59ca9cc0a4c5a87 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 12:21:10 +0900 Subject: [PATCH 378/456] Refactor Dynamics and Temperature classes to remove redundant earth albedo flag and update initialization logic --- src/dynamics/dynamics.cpp | 8 ++------ src/dynamics/dynamics.hpp | 1 - src/dynamics/thermal/temperature.cpp | 21 +++++++-------------- src/environment/local/earth_albedo.cpp | 5 ++--- src/environment/local/earth_albedo.hpp | 2 +- 5 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 478e035bc..93ca2ae66 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -4,8 +4,8 @@ */ #include "dynamics.hpp" -#include +#include #include "../simulation/multiple_spacecraft/relative_information.hpp" @@ -13,7 +13,6 @@ Dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, cons const LocalEnvironment* local_environment, const int spacecraft_id, Structure* structure, RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { - is_calc_earth_albedo_enabled_ = false; Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); } @@ -37,9 +36,6 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio // To get initial value orbit_->UpdateByAttitude(attitude_->GetQuaternion_i2b()); - - auto mainIni = IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); - is_calc_earth_albedo_enabled_ = mainIni.ReadEnable("THERMAL", "is_calc_earth_albedo_enabled"); } void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { @@ -56,7 +52,7 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia // Thermal if (simulation_time->GetThermalPropagateFlag()) { - if (!is_calc_earth_albedo_enabled_) { + if (!local_environment_->GetEarthAlbedo().IsCalcEarthAlbedoEnabled) { temperature_->Propagate(local_celestial_information->GetPositionFromSpacecraft_b_m("SUN"), simulation_time->GetElapsedTime_s()); } else { temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 7f5a1b349..a6b5044f1 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -112,7 +112,6 @@ class Dynamics { Temperature* temperature_; //!< Thermal dynamics const Structure* structure_; //!< Structure information const LocalEnvironment* local_environment_; //!< Local environment - bool is_calc_earth_albedo_enabled_; //!< Flag to calculate earth albedo /** * @fn Initialize diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 285d87c11..8abe5b182 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -101,16 +101,16 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - cout << "AlbedoR: "; - for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; - } libra::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); cout << "SunDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; } cout << "ShadowCoefficient: " << setprecision(4) << srp_environment_->GetShadowCoefficient() << " "; + cout << "EarthAlbedoR: "; + for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { + cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; + } libra::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); cout << "EarthDir: "; for (size_t i = 0; i < 3; i++) { @@ -245,12 +245,9 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); - if (is_calc_earth_albedo_enabled_) { - bool is_eclipsed = srp_environment_->GetIsEclipsed(); - libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); - double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_->GetEarthAlbedoFactor()); - heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); - } + libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); + double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_->GetEarthAlbedoFactor()); + heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); heatloads_[i].SetSolarHeatload_W(solar_radiation_W); } double heater_power_W = GetHeaterPower_W(i); @@ -434,10 +431,6 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s bool debug = mainIni.ReadEnable("THERMAL", "debug"); - bool is_calc_earth_albedo_enabled = mainIni.ReadEnable("THERMAL", "is_calc_earth_albedo_enabled"); - - double earth_albedo_factor = mainIni.ReadDouble("THERMAL", "earth_albedo_factor"); - // Read Heatloads from CSV File string filepath_heatload = file_path + "heatload.csv"; IniAccess conf_heatload(filepath_heatload); diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 8ab18335f..cd5aa88c3 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -13,8 +13,7 @@ #include "library/math/constants.hpp" #include "library/math/vector.hpp" - -EarthAlbedo::EarthAlbedo() { earth_albedo_factor_ = 0.0; } +EarthAlbedo::EarthAlbedo() {} std::string EarthAlbedo::GetLogHeader() const { std::string str_tmp = ""; @@ -38,7 +37,7 @@ EarthAlbedo InitEarthAlbedo(std::string initialize_file_path) { EarthAlbedo earth_albedo; earth_albedo.IsCalcEarthAlbedoEnabled = conf.ReadEnable(section, INI_CALC_LABEL); - earth_albedo.earth_albedo_factor_ = conf.ReadEnable(section, "earth_albedo_factor"); + earth_albedo.earth_albedo_factor_ = conf.ReadDouble(section, "earth_albedo_factor"); return earth_albedo; } diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index 6ae6389d5..4dd9b57df 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -15,7 +15,7 @@ */ class EarthAlbedo : public ILoggable { public: - bool IsCalcEarthAlbedoEnabled = false; //!< Calculation flag + bool IsCalcEarthAlbedoEnabled = true; //!< Calculation flag double earth_albedo_factor_ = 0.3; //!< Earth albedo factor /** From ec6481076cf7062ef4ca1c045e680b7924dfcd3c Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Sat, 21 Sep 2024 16:16:20 +0900 Subject: [PATCH 379/456] modify function and variable names --- src/environment/global/gnss_satellites.cpp | 2 +- .../orbit/interpolation_orbit.cpp | 28 +++++++------- .../orbit/interpolation_orbit.hpp | 38 +++++++++---------- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 21749c9aa..6f41f2520 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -89,7 +89,7 @@ math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_i if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); + return orbit_[gnss_satellite_id].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); } double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time) const { diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index d4fc5fc13..818029a93 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -10,18 +10,18 @@ namespace orbit { InterpolationOrbit::InterpolationOrbit(const size_t degree) { std::vector time; time.assign(degree, -1.0); - std::vector position; - position.assign(degree, 0.0); - math::Interpolation temp(time, position); + std::vector position_or_velocity; + position_or_velocity.assign(degree, 0.0); + math::Interpolation temp(time, position_or_velocity); for (size_t axis = 0; axis < 3; axis++) { - interpolation_position_.push_back(temp); + interpolation_position_or_velocity.push_back(temp); } } -bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position) { +bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position_or_velocity) { bool result; for (size_t axis = 0; axis < 3; axis++) { - result = interpolation_position_[axis].PushAndPopData(time, position[axis]); + result = interpolation_position_or_velocity[axis].PushAndPopData(time, position_or_velocity[axis]); if (result == false) { return false; } @@ -29,20 +29,20 @@ bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> return true; } -math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { - math::Vector<3> output_position; +math::Vector<3> InterpolationOrbit::CalcPositionOrVelocityWithTrigonometric(const double time, const double period) const { + math::Vector<3> output_position_or_velocity; for (size_t axis = 0; axis < 3; axis++) { - output_position[axis] = interpolation_position_[axis].CalcTrigonometric(time, period); + output_position_or_velocity[axis] = interpolation_position_or_velocity[axis].CalcTrigonometric(time, period); } - return output_position; + return output_position_or_velocity; } -math::Vector<3> InterpolationOrbit::CalcPositionWithPolynomial(const double time) const { - math::Vector<3> output_position; +math::Vector<3> InterpolationOrbit::CalcPositionOrVelocityWithPolynomial(const double time) const { + math::Vector<3> output_position_or_velocity; for (size_t axis = 0; axis < 3; axis++) { - output_position[axis] = interpolation_position_[axis].CalcPolynomial(time); + output_position_or_velocity[axis] = interpolation_position_or_velocity[axis].CalcPolynomial(time); } - return output_position; + return output_position_or_velocity; } } // namespace orbit diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index 02f30513b..17d9acd05 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -15,7 +15,7 @@ namespace orbit { /** * @class InterpolationOrbit * @brief Orbit calculation with mathematical interpolation - * @note Coordinate and unit of position is defined by users of this function + * @note Coordinate and unit of position or velocityis defined by users of this function */ class InterpolationOrbit { public: @@ -30,53 +30,53 @@ class InterpolationOrbit { * @fn PushAndPopData * @brief Add new data to the tail of the list and erase the head data * @param [in] time: time of the new data - * @param [in] position: Satellite position of the new data + * @param [in] position: Satellite position or velocity of the new data */ - bool PushAndPopData(const double time, const math::Vector<3> position); + bool PushAndPopData(const double time, const math::Vector<3> position_or_velocity); /** - * @fn CalcPositionWithTrigonometric - * @brief Calculate interpolated position with trigonometric method + * @fn CalcPositionOrVelocityWithTrigonometric + * @brief Calculate interpolated position position or velocity with trigonometric method * @param [in] time: time * @param [in] period: Characteristic period - * @return Calculated position + * @return Calculated position or velocity */ - math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; + math::Vector<3> CalcPositionOrVelocityWithTrigonometric(const double time, const double period = 0.0) const; /** - * @fn CalcPositionWithPolynimial - * @brief Calculate interpolated position with polynomial method + * @fn CalcPositionOrVelocityWithPolynomial + * @brief Calculate interpolated position or velocity with polynomial method * @param [in] time: time - * @return Calculated position + * @return Calculated position or velocity */ - math::Vector<3> CalcPositionWithPolynomial(const double time) const; + math::Vector<3> CalcPositionOrVelocityWithPolynomial(const double time) const; // Getters /** * @fn GetDegree * @return Degree of interpolation */ - inline size_t GetDegree() const { return interpolation_position_[0].GetDegree(); } + inline size_t GetDegree() const { return interpolation_position_or_velocity[0].GetDegree(); } /** * @fn GetTimeList * @return Time list registered for the interpolation */ - inline std::vector GetTimeList() const { return interpolation_position_[0].GetIndependentVariables(); } + inline std::vector GetTimeList() const { return interpolation_position_or_velocity[0].GetIndependentVariables(); } /** * @fn GetTimeList - * @param[in] axis: Axis of position [0, 2] - * @return Position list registered for the interpolation + * @param[in] axis: Axis of position or velocity[0, 2] + * @return Position or velocity list registered for the interpolation * @note return id=2 data when the input axis is over 3. */ - inline std::vector GetPositionDataList(const size_t axis) const { + inline std::vector GetPositionOrVelocityDataList(const size_t axis) const { if (axis > 3) { - return interpolation_position_[2].GetDependentVariables(); + return interpolation_position_or_velocity[2].GetDependentVariables(); } - return interpolation_position_[axis].GetDependentVariables(); + return interpolation_position_or_velocity[axis].GetDependentVariables(); } private: - std::vector interpolation_position_; // 3D vector of interpolation + std::vector interpolation_position_or_velocity; // 3D vector of interpolation }; } // namespace orbit From d4e8250ae36121f7c16686503b1424c551df18c4 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Sat, 21 Sep 2024 16:16:53 +0900 Subject: [PATCH 380/456] modify function name --- src/math_physics/orbit/test_interpolation_orbit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index d7fe51c67..acc050298 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -40,7 +40,7 @@ TEST(InterpolationOrbit, PushAndPop) { for (size_t i = 0; i < degree; i++) { EXPECT_DOUBLE_EQ((double)i, interpolation_orbit.GetTimeList()[i]); for (size_t axis = 0; axis < 3; axis++) { - EXPECT_DOUBLE_EQ(2.0 * i, interpolation_orbit.GetPositionDataList(axis)[i]); + EXPECT_DOUBLE_EQ(2.0 * i, interpolation_orbit.GetPositionOrVelocityDataList(axis)[i]); } } From 8010768c0b17c7252ea0f784eef141c925018433 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Sat, 21 Sep 2024 16:17:22 +0900 Subject: [PATCH 381/456] add ini file --- ..._orbit_calculation_with_definition_file.ini | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 settings/environment/sample_orbit_calculation_with_definition_file.ini diff --git a/settings/environment/sample_orbit_calculation_with_definition_file.ini b/settings/environment/sample_orbit_calculation_with_definition_file.ini new file mode 100644 index 000000000..f4f7f1da8 --- /dev/null +++ b/settings/environment/sample_orbit_calculation_with_definition_file.ini @@ -0,0 +1,18 @@ +[ORBIT_CALCULATION_WITH_DEFINITION_FILE] +orbit_definition_file_path = SETTINGS_DIR_FROM_EXE/environment/orbit_definition/sample_traj_ECLIPJ2000.csv +header_name_et = t(ET) +header_name_x = "EQU X(km, ECLIPJ2000)" +header_name_y = "EQU Y(km, ECLIPJ2000)" +header_name_z = "EQU Z(km, ECLIPJ2000)" +header_name_vx = VX(km/s) +header_name_vy = VY(km/s) +header_name_vz = VZ(km/s) +coordinate_system = eclipj2000 +unit = km + +calculation = DISABLE +logging = DISABLE + +number_of_interpolation = 5 +orbital_period_correction = 86659.2 // Only used for trigonometric method. This sample value is used for the gnss satellits (24 * 60 * 60 * 1.003). +interpolation_method = POLYNOMIAL // or TRIGONOMETRIC \ No newline at end of file From cb91a176ac97d0a81155c2cf5946ac642ee4c1d9 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Sat, 21 Sep 2024 16:17:44 +0900 Subject: [PATCH 382/456] modify error message --- ...orbit_calculation_with_definition_file.cpp | 102 ++++++++++++++---- ...orbit_calculation_with_definition_file.hpp | 29 +++-- 2 files changed, 100 insertions(+), 31 deletions(-) diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp b/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp index b0f8d277a..ca0351751 100644 --- a/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp +++ b/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp @@ -16,11 +16,20 @@ #include "math_physics/math/constants.hpp" #include "logger/log_utility.hpp" -void OrbitCalculationWithDefinitionFile::Initialize(const std::string ini_file_name, const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { - IniAccess ini_file(ini_file_name); +void OrbitCalculationWithDefinitionFile::Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { + IniAccess ini_file(ini_file_name_); char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; const size_t number_of_interpolation = ini_file.ReadInt(section, "number_of_interpolation"); + if (!(ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL" || + ini_file.ReadString(section, "interpolation_method") == "TRIGONOMETRIC")) { + std::cout << "Interpolation method error." << std::endl; + is_calc_enabled_ = false; + is_log_enabled_ = false; + return; + } + + orbit_definition_data_ = orbit_definition_data; current_epoch_time_ = start_time; @@ -33,7 +42,8 @@ void OrbitCalculationWithDefinitionFile::Initialize(const std::string ini_file_n reference_time_ = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); // Initialize orbit - orbit_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_position_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_velocity_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); // Initialize interpolation for (size_t i = 0; i < number_of_interpolation; i++) { @@ -68,13 +78,16 @@ std::vector ParseCsvLine(const std::string& line) { } bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data) { - IniAccess ini_file(ini_file_name); + ini_file_name_ = ini_file_name; + IniAccess ini_file(ini_file_name_); char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; std::ifstream file(orbit_definition_file_path); if (!file.is_open()) { - std::cout << "file open error. filename = " << orbit_definition_file_path << std::endl; - return 1; + std::cout << "File open error. filename = " << orbit_definition_file_path << std::endl; + is_calc_enabled_ = false; + is_log_enabled_ = false; + return false; } std::string line; @@ -108,7 +121,9 @@ bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::strin } if (index_et == -1 || index_x == -1 || index_y == -1 || index_z == -1 || index_vx == -1 || index_vy == -1 || index_vz == -1) { - std::cerr << "header name error." << std::endl; + std::cout << "Header name error." << std::endl; + is_calc_enabled_ = false; + is_log_enabled_ = false; return false; } @@ -136,7 +151,6 @@ bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::strin } } } - return true; } @@ -152,7 +166,7 @@ void OrbitCalculationWithDefinitionFile::Update(const SimulationTime& simulation // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - double medium_time_s = orbit_[0].GetTimeList()[4]; + double medium_time_s = orbit_position_[0].GetTimeList()[4]; if (diff_s > medium_time_s) { UpdateInterpolationInformation(); } @@ -185,7 +199,10 @@ time_system::DateTime OrbitCalculationWithDefinitionFile::GetEpochData(const siz } -math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition_eclipj2000_km(const time_system::EpochTime time) const { +math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition(const time_system::EpochTime time) const { + IniAccess ini_file(ini_file_name_); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + time_system::EpochTime target_time; if (time.GetTime_s() == 0) { @@ -197,18 +214,53 @@ math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition_eclipj2000_km(co double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); - return orbit_[0].CalcPositionWithPolynomial(diff_s); + if (ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL") { + return orbit_position_[0].CalcPositionOrVelocityWithPolynomial(diff_s); + } else if (ini_file.ReadString(section, "interpolation_method") == "TRIGONOMETRIC") { + return orbit_position_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / ini_file.ReadDouble(section, "orbital_period_correction")); + } else { + return math::Vector<3>(0.0); + } +} + +math::Vector<3> OrbitCalculationWithDefinitionFile::GetVelocity(const time_system::EpochTime time) const { + IniAccess ini_file(ini_file_name_); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + + time_system::EpochTime target_time; + + if (time.GetTime_s() == 0) { + target_time = current_epoch_time_; + } else { + target_time = time; + } + + double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); + + if (ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL") { + return orbit_velocity_[0].CalcPositionOrVelocityWithPolynomial(diff_s); + } else if (ini_file.ReadString(section, "interpolation_method") == "TRIGONOMETRIC") { + return orbit_velocity_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / ini_file.ReadDouble(section, "orbital_period_correction")); + } else { + return math::Vector<3>(0.0); + } } bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { time_system::EpochTime orbit_definition_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); double time_diff_s = orbit_definition_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - math::Vector<3> orbit_definition_position_eclipj2000_km; - orbit_definition_position_eclipj2000_km(0) = orbit_definition_data_[reference_interpolation_id_].x; - orbit_definition_position_eclipj2000_km(1) = orbit_definition_data_[reference_interpolation_id_].y; - orbit_definition_position_eclipj2000_km(2) = orbit_definition_data_[reference_interpolation_id_].z; - - orbit_[0].PushAndPopData(time_diff_s, orbit_definition_position_eclipj2000_km); + math::Vector<3> orbit_definition_position; + math::Vector<3> orbit_definition_velocity; + orbit_definition_position(0) = orbit_definition_data_[reference_interpolation_id_].x; + orbit_definition_position(1) = orbit_definition_data_[reference_interpolation_id_].y; + orbit_definition_position(2) = orbit_definition_data_[reference_interpolation_id_].z; + orbit_definition_velocity(0) = orbit_definition_data_[reference_interpolation_id_].vx; + orbit_definition_velocity(1) = orbit_definition_data_[reference_interpolation_id_].vy; + orbit_definition_velocity(2) = orbit_definition_data_[reference_interpolation_id_].vz; + + orbit_position_[0].PushAndPopData(time_diff_s, orbit_definition_position); + orbit_velocity_[0].PushAndPopData(time_diff_s, orbit_definition_velocity); reference_interpolation_id_++; @@ -216,10 +268,13 @@ bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { } std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { - std::string str_tmp = ""; + IniAccess ini_file(ini_file_name_); + char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; - str_tmp += WriteVector("satellite_position", "eclipj2000", "km", 3); + std::string str_tmp = ""; + str_tmp += WriteVector("spacecraft_position_with_definition_file", ini_file.ReadString(section, "coordinate_system"), ini_file.ReadString(section, "unit"), 3); + str_tmp += WriteVector("spacecraft_velocity_with_definition_file", ini_file.ReadString(section, "coordinate_system"), ini_file.ReadString(section, "unit"), 3); return str_tmp; } @@ -227,7 +282,8 @@ std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { std::string OrbitCalculationWithDefinitionFile::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(GetPosition_eclipj2000_km(), 16); + str_tmp += WriteVector(GetPosition(), 16); + str_tmp += WriteVector(GetVelocity(), 16); return str_tmp; } @@ -247,13 +303,15 @@ OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const const std::string orbit_definition_file_path = ini_file.ReadString(section, "orbit_definition_file_path"); std::vector orbit_definition_data; - orbit_calculation_with_definition_file->ReadOrbitDefinitionCsv(ini_file_name, orbit_definition_file_path, orbit_definition_data); + if (!orbit_calculation_with_definition_file->ReadOrbitDefinitionCsv(ini_file_name, orbit_definition_file_path, orbit_definition_data)) { + return orbit_calculation_with_definition_file; + } time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); time_system::EpochTime start_epoch_time(start_date_time); - orbit_calculation_with_definition_file->Initialize(ini_file_name, orbit_definition_data, start_epoch_time, simulation_time); + orbit_calculation_with_definition_file->Initialize(orbit_definition_data, start_epoch_time, simulation_time); return orbit_calculation_with_definition_file; } diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp index cf19bcb81..3f357bb29 100644 --- a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp +++ b/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp @@ -59,11 +59,11 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { /** * @fn Initialize * @brief Initialize function - * @param [in] ini_file_name: Path to the initialize file * @param [in] orbit_definition_data: orbit definition data * @param [in] start_time: The simulation start time + * @param [in] simulation_time: Simulation time information */ - void Initialize(const std::string ini_file_name, const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); + void Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); /** * @fn IsCalcEnabled @@ -77,7 +77,6 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { * @param ini_file_name Path to the initialize file. * @param orbit_definition_file_path Path to orbit definition CSV file. * @param orbit_definition_data List of orbit definition data. - * @param delimiter Delimiter for the orbit definition CSV file (default: ','). */ bool ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data); @@ -116,12 +115,22 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { void Update(const SimulationTime& simulation_time); /** - * @fn GetPosition_eclipj2000_km - * @brief Return satellite position at ECLIPJ2000 frame + * @fn GetPosition + * @brief Return satellite position + * @param [in] time: Target time to get the satellite. When the argument is not set, the last updated time is used for the calculation. + * @return Satellite position at the time. Or return zero vector when the arguments are out of range. + * @note Coordinate system and units follow the orbit definition file. + */ + inline math::Vector<3> GetPosition(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + + /** + * @fn GetVelocity + * @brief Return satellite velocity * @param [in] time: Target time to get the satellite. When the argument is not set, the last updated time is used for the calculation. - * @return Satellite position at ECLIPJ2000 frame at the time. Or return zero vector when the arguments are out of range. + * @return Satellite velocity at the time. Or return zero vector when the arguments are out of range. + * @note Coordinate system and units follow the orbit definition file. */ - inline math::Vector<3> GetPosition_eclipj2000_km(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; + inline math::Vector<3> GetVelocity(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; // Override ILoggable /** @@ -137,15 +146,17 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the orbit calculation + bool is_interpolation_method_error_message_displayed_ = false; //!< Flag to manage the interpolation method error message std::vector epoch_; //!< Epoch data list - + std::string ini_file_name_; //!< Path to the initialize file std::vector orbit_definition_data_; //!< List of orbit definition data time_system::EpochTime current_epoch_time_; //!< The last updated time time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - std::vector orbit_; //!< Satellite orbit with interpolation + std::vector orbit_position_; //!< Position with interpolation + std::vector orbit_velocity_; //!< Velocity with interpolation /** * @fn UpdateInterpolationInformation From 646d037a03cfb2187956deb67a3931e3a8ba7906 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 16:43:47 +0900 Subject: [PATCH 383/456] Remove unused include for initialize_file_access in Dynamics class --- src/dynamics/dynamics.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 93ca2ae66..864181e77 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -5,8 +5,6 @@ #include "dynamics.hpp" -#include - #include "../simulation/multiple_spacecraft/relative_information.hpp" Dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, From e1ce92bc482d84c6a3f062ef59e586653999ae99 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 16:49:00 +0900 Subject: [PATCH 384/456] Refactor albedo radiation calculation for improved readability and maintainability --- src/dynamics/thermal/node.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 10727cd4e..b45c5d95c 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -46,15 +46,17 @@ double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double s double earth_distance_m = earth_position_b_m.CalcNorm(); // check if satellite is outside of the earth's shadow - double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); - - // albedo radiation calculation; solar_flux_W_m2 reflects the shadow coefficient. if earth albedo calculation is disabled, earth_albedo_factor is 0.0 - if (cos_theta_albedo > 0.0) { - double albedo_flux_W_m2 = solar_flux_W_m2 * earth_albedo_factor * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; - albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; - } else { - albedo_radiation_W_ = 0.0; - } + double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); + + // albedo radiation calculation; solar_flux_W_m2 reflects the shadow coefficient. if earth albedo calculation is disabled, earth_albedo_factor is + // 0.0 + if (cos_theta_albedo > 0.0) { + double albedo_flux_W_m2 = + solar_flux_W_m2 * earth_albedo_factor * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; + albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; + } else { + albedo_radiation_W_ = 0.0; + } return albedo_radiation_W_; } @@ -142,10 +144,10 @@ Node InitNode(const std::vector& node_str) { std::string node_label = "temp"; // node name size_t node_type_int = 0; // node type size_t heater_id = 0; // heater node index - double temperature_K = 0.0; // [K] - double capacity_J_K = 0.0; // [J/K] - double alpha = 0.0; // [] - double area_m2 = 0.0; // [m^2] + double temperature_K = 0.0; // [K] + double capacity_J_K = 0.0; // [J/K] + double alpha = 0.0; // [] + double area_m2 = 0.0; // [m^2] // Index to read from node_str for each parameter size_t index_node_id = 0; From 62c27e32ca8c4b02f26258cacd0049f85515f0ec Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 18:15:45 +0900 Subject: [PATCH 385/456] Refactor EarthAlbedo and Dynamics classes to improve albedo radiation calculations and update method signatures --- src/dynamics/dynamics.cpp | 2 +- src/dynamics/thermal/node.cpp | 9 ++-- src/dynamics/thermal/node.hpp | 5 +- src/dynamics/thermal/temperature.cpp | 2 +- src/environment/local/earth_albedo.cpp | 25 +++++++-- src/environment/local/earth_albedo.hpp | 56 ++++++++++++++++++--- src/environment/local/local_environment.cpp | 12 ++--- src/environment/local/local_environment.hpp | 4 +- 8 files changed, 85 insertions(+), 30 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 864181e77..8ea006464 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -50,7 +50,7 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia // Thermal if (simulation_time->GetThermalPropagateFlag()) { - if (!local_environment_->GetEarthAlbedo().IsCalcEarthAlbedoEnabled) { + if (!local_environment_->GetEarthAlbedo().GetIsCalcEarthAlbedoEnabled()) { temperature_->Propagate(local_celestial_information->GetPositionFromSpacecraft_b_m("SUN"), simulation_time->GetElapsedTime_s()); } else { temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index b45c5d95c..97e506beb 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -41,19 +41,16 @@ double Node::CalcSolarRadiation_W(libra::Vector<3> sun_direction_b, double solar return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor) { +double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double earth_albedo_W_m2) { libra::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); double earth_distance_m = earth_position_b_m.CalcNorm(); // check if satellite is outside of the earth's shadow double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); - // albedo radiation calculation; solar_flux_W_m2 reflects the shadow coefficient. if earth albedo calculation is disabled, earth_albedo_factor is - // 0.0 + // albedo radiation calculation; earth_albedo_W_m2 reflects the shadow coefficient. if (cos_theta_albedo > 0.0) { - double albedo_flux_W_m2 = - solar_flux_W_m2 * earth_albedo_factor * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; - albedo_radiation_W_ = albedo_flux_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; + albedo_radiation_W_ = earth_albedo_W_m2 * area_m2_ * alpha_ * cos_theta_albedo; } else { albedo_radiation_W_ = 0.0; } diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 16f9e81f1..f44f5133a 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -65,11 +65,10 @@ class Node { * @brief Calculate albedo radiation [W] from earth direction, albedo factor, area, and normal vector * * @param earth_position_b_m: Earth position in body frame - * @param solar_flux_W_m2: Solar flux [W/m^2] - * @param earth_albedo_factor: Earth albedo factor + * @param earth_albedo_W_m2: Earth albedo [W/m^2] * @return double: Albedo Radiation [W] */ - double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double solar_flux_W_m2, double earth_albedo_factor); + double CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double earth_albedo_W_m2); // Getter /** diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 8abe5b182..731f4fef3 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -246,7 +246,7 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); - double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, solar_flux_W_m2, earth_albedo_->GetEarthAlbedoFactor()); + double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, earth_albedo_->GetEarthAlbedoRadiationPower_W_m2()); heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); heatloads_[i].SetSolarHeatload_W(solar_radiation_W); } diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index cd5aa88c3..2ec126d78 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -13,7 +13,13 @@ #include "library/math/constants.hpp" #include "library/math/vector.hpp" -EarthAlbedo::EarthAlbedo() {} +EarthAlbedo::EarthAlbedo(LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment) + : local_celestial_information_(local_celestial_information), srp_environment_(srp_environment) {} + +void EarthAlbedo::UpdateAllStates() { + if (!GetIsCalcEarthAlbedoEnabled()) return; + CalcEarthAlbedo(local_celestial_information_); +} std::string EarthAlbedo::GetLogHeader() const { std::string str_tmp = ""; @@ -31,13 +37,22 @@ std::string EarthAlbedo::GetLogValue() const { return str_tmp; } -EarthAlbedo InitEarthAlbedo(std::string initialize_file_path) { +void EarthAlbedo::CalcEarthAlbedo(const LocalCelestialInformation* local_celestial_information) { + libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); + double earth_distance_m = earth_position_b_m.CalcNorm(); + earth_albedo_W_m2_ = srp_environment_->GetPowerDensity_W_m2() * GetEarthAlbedoFactor() * + pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; + std::cout << "##Earth albedo: " << earth_albedo_W_m2_ << std::endl; +} + +EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information, + SolarRadiationPressureEnvironment* srp_environment) { auto conf = IniAccess(initialize_file_path); const char* section = "EARTH_ALBEDO"; - EarthAlbedo earth_albedo; - earth_albedo.IsCalcEarthAlbedoEnabled = conf.ReadEnable(section, INI_CALC_LABEL); - earth_albedo.earth_albedo_factor_ = conf.ReadDouble(section, "earth_albedo_factor"); + EarthAlbedo earth_albedo(local_celestial_information, srp_environment); + earth_albedo.SetIsCalcEarthAlbedoEnabled(conf.ReadEnable(section, INI_CALC_LABEL)); + earth_albedo.SetEarthAlbedoFactor(conf.ReadDouble(section, "earth_albedo_factor")); return earth_albedo; } diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index 4dd9b57df..528fa5053 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -8,6 +8,7 @@ #include "environment/global/physical_constants.hpp" #include "environment/local/local_celestial_information.hpp" +#include "solar_radiation_pressure_environment.hpp" /** * @class EarthAlbedo @@ -15,14 +16,12 @@ */ class EarthAlbedo : public ILoggable { public: - bool IsCalcEarthAlbedoEnabled = true; //!< Calculation flag - double earth_albedo_factor_ = 0.3; //!< Earth albedo factor - /** * @fn EarthAlbedo * @brief Constructor + * @param [in] local_celestial_information: Local celestial information */ - EarthAlbedo(); + EarthAlbedo(LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment); /** * @fn ~EarthAlbedo @@ -30,12 +29,50 @@ class EarthAlbedo : public ILoggable { */ virtual ~EarthAlbedo() {} + /** + * @fn UpdateAllStates + * @brief Update earth albedo + */ + void UpdateAllStates(); + // Getter /** * @fn GetEarthAlbedoFactor * @brief Return earth albedo factor */ - inline double GetEarthAlbedoFactor() const { return IsCalcEarthAlbedoEnabled ? earth_albedo_factor_ : 0.0; } + inline double GetEarthAlbedoFactor() const { return earth_albedo_factor_; } + /** + * @fn GetPowerDensity_W_m2 + * @brief Calculate and return earth albedo [W/m^2] + */ + inline double GetEarthAlbedoRadiationPower_W_m2() const { return earth_albedo_W_m2_; } + /** + * @fn GetIsEclipsed + * @brief Returns true if the shadow function is less than 1 + */ + inline bool GetIsCalcEarthAlbedoEnabled() const { return is_calc_earth_albedo_enabled_; } + + // Setter + /** + * @fn SetEarthAlbedoFactor + * @brief Set earth albedo factor + * @param [in] earth_albedo_factor: Earth albedo factor + */ + inline void SetEarthAlbedoFactor(double earth_albedo_factor) { earth_albedo_factor_ = earth_albedo_factor; } + /** + * @fn SetIsCalcEarthAlbedoEnabled + * @brief Set calculation flag + * @param [in] is_calc_earth_albedo_enabled: Calculation flag + */ + inline void SetIsCalcEarthAlbedoEnabled(bool is_calc_earth_albedo_enabled) { is_calc_earth_albedo_enabled_ = is_calc_earth_albedo_enabled; } + + private: + double earth_albedo_W_m2_; //!< Earth albedo [W/m^2] + bool is_calc_earth_albedo_enabled_ = true; //!< Calculation flag + double earth_albedo_factor_ = 0.3; //!< Earth albedo factor + + LocalCelestialInformation* local_celestial_information_; //!< Local celestial information + SolarRadiationPressureEnvironment* srp_environment_; //!< Solar radiation pressure environment // Override ILoggable /** @@ -49,6 +86,12 @@ class EarthAlbedo : public ILoggable { */ virtual std::string GetLogValue() const; + /** + * @fn CalcEarthAlbedo + * @brief Calculate earth albedo + * @param [in] local_celestial_information: Local celestial information + */ + void CalcEarthAlbedo(const LocalCelestialInformation* local_celestial_information); }; /** @@ -56,6 +99,7 @@ class EarthAlbedo : public ILoggable { * @brief Initialize solar radiation pressure * @param [in] initialize_file_path: Path to initialize file */ -EarthAlbedo InitEarthAlbedo(std::string initialize_file_path); +EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information, + SolarRadiationPressureEnvironment* srp_environment); #endif // S2E_ENVIRONMENT_LOCAL_EARTH_ALBEDO_HPP_ diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index c4f10b4dc..68ae43880 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -15,7 +15,7 @@ LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_con LocalEnvironment::~LocalEnvironment() { delete geomagnetic_field_; - delete solar_radiation_pressure_environment_; + delete srp_environment_; delete earth_albedo_; delete atmosphere_; delete celestial_information_; @@ -34,9 +34,8 @@ void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_conf geomagnetic_field_ = new GeomagneticField(InitGeomagneticField(ini_fname)); celestial_information_ = new LocalCelestialInformation(&(global_environment->GetCelestialInformation())); atmosphere_ = new Atmosphere(InitAtmosphere(ini_fname, celestial_information_, &global_environment->GetSimulationTime())); - solar_radiation_pressure_environment_ = - new SolarRadiationPressureEnvironment(InitSolarRadiationPressureEnvironment(ini_fname, celestial_information_)); - earth_albedo_ = new EarthAlbedo(InitEarthAlbedo(ini_fname)); + srp_environment_ = new SolarRadiationPressureEnvironment(InitSolarRadiationPressureEnvironment(ini_fname, celestial_information_)); + earth_albedo_ = new EarthAlbedo(InitEarthAlbedo(ini_fname, celestial_information_, srp_environment_)); // Force to disable when the center body is not the Earth if (global_environment->GetCelestialInformation().GetCenterBodyName() != "EARTH") { @@ -63,14 +62,15 @@ void LocalEnvironment::Update(const Dynamics* dynamics, const SimulationTime* si // Update local environments that depend only on the position if (simulation_time->GetOrbitPropagateFlag()) { - solar_radiation_pressure_environment_->UpdateAllStates(); + srp_environment_->UpdateAllStates(); + earth_albedo_->UpdateAllStates(); atmosphere_->CalcAirDensity_kg_m3(simulation_time->GetCurrentDecimalYear(), orbit); } } void LocalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(geomagnetic_field_); - logger.AddLogList(solar_radiation_pressure_environment_); + logger.AddLogList(srp_environment_); logger.AddLogList(earth_albedo_); logger.AddLogList(atmosphere_); logger.AddLogList(celestial_information_); diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index a7d0b7cac..05278f38e 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -65,7 +65,7 @@ class LocalEnvironment { * @fn GetSolarRadiationPressure * @brief Return SolarRadiationPressureEnvironment class */ - inline const SolarRadiationPressureEnvironment& GetSolarRadiationPressure() const { return *solar_radiation_pressure_environment_; } + inline const SolarRadiationPressureEnvironment& GetSolarRadiationPressure() const { return *srp_environment_; } /** * @fn GetEarthAlbedo * @brief Return EarthAlbedo class @@ -80,7 +80,7 @@ class LocalEnvironment { private: Atmosphere* atmosphere_; //!< Atmospheric density of the earth GeomagneticField* geomagnetic_field_; //!< Magnetic field of the earth - SolarRadiationPressureEnvironment* solar_radiation_pressure_environment_; //!< Solar radiation pressure + SolarRadiationPressureEnvironment* srp_environment_; //!< Solar radiation pressure EarthAlbedo* earth_albedo_; //!< Earth albedo LocalCelestialInformation* celestial_information_; //!< Celestial information From 6c80e78fd4ab757a49299096ac86db9d090227bc Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 18:23:06 +0900 Subject: [PATCH 386/456] Add EarthAlbedo configuration to sample_local_environment.ini --- data/sample/initialize_files/sample_local_environment.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/sample/initialize_files/sample_local_environment.ini b/data/sample/initialize_files/sample_local_environment.ini index fce7453c5..c41871ce5 100644 --- a/data/sample/initialize_files/sample_local_environment.ini +++ b/data/sample/initialize_files/sample_local_environment.ini @@ -16,6 +16,9 @@ number_of_third_shadow_source_ = 1 // All these bodies must be included in the "selected_body_name" of "[CelestialInformation]" third_shadow_source_name(0) = MOON +[EARTH_ALBEDO] +calculation = DISABLE +earth_albedo_factor = 0.3 [ATMOSPHERE] calculation = ENABLE From 500f300171c66b636249046b4b19203b64011a45 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Sat, 21 Sep 2024 18:25:00 +0900 Subject: [PATCH 387/456] Update sample_local_environment.ini to enable atmosphere logging and adjust Earth albedo settings --- data/sample/initialize_files/sample_local_environment.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/sample/initialize_files/sample_local_environment.ini b/data/sample/initialize_files/sample_local_environment.ini index c41871ce5..6ac59e225 100644 --- a/data/sample/initialize_files/sample_local_environment.ini +++ b/data/sample/initialize_files/sample_local_environment.ini @@ -16,10 +16,12 @@ number_of_third_shadow_source_ = 1 // All these bodies must be included in the "selected_body_name" of "[CelestialInformation]" third_shadow_source_name(0) = MOON + [EARTH_ALBEDO] calculation = DISABLE earth_albedo_factor = 0.3 + [ATMOSPHERE] calculation = ENABLE logging = ENABLE From 2485df370446e33f1dbccc7a0e98107513c6d8e1 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Wed, 25 Sep 2024 15:14:36 +0900 Subject: [PATCH 388/456] modify file name --- ...=> time_series_file_orbit_propagation.cpp} | 52 +++++++++---------- ...=> time_series_file_orbit_propagation.hpp} | 42 +++++++-------- 2 files changed, 47 insertions(+), 47 deletions(-) rename src/dynamics/orbit/{orbit_calculation_with_definition_file.cpp => time_series_file_orbit_propagation.cpp} (81%) rename src/dynamics/orbit/{orbit_calculation_with_definition_file.hpp => time_series_file_orbit_propagation.hpp} (81%) diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp similarity index 81% rename from src/dynamics/orbit/orbit_calculation_with_definition_file.cpp rename to src/dynamics/orbit/time_series_file_orbit_propagation.cpp index ca0351751..b0849ef99 100644 --- a/src/dynamics/orbit/orbit_calculation_with_definition_file.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -1,9 +1,9 @@ /** - * @file orbit_calculation_with_definition_file.cpp + * @file time_series_file_orbit_propagation.cpp * @brief Class to calculate satellite orbit using interpolation with orbit time series input */ -#include "orbit_calculation_with_definition_file.hpp" +#include "time_series_file_orbit_propagation.hpp" #include @@ -16,9 +16,9 @@ #include "math_physics/math/constants.hpp" #include "logger/log_utility.hpp" -void OrbitCalculationWithDefinitionFile::Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { +void TimeSeriesFileOrbitPropagation::Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { IniAccess ini_file(ini_file_name_); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; const size_t number_of_interpolation = ini_file.ReadInt(section, "number_of_interpolation"); if (!(ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL" || @@ -77,10 +77,10 @@ std::vector ParseCsvLine(const std::string& line) { return result; } -bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data) { +bool TimeSeriesFileOrbitPropagation::ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data) { ini_file_name_ = ini_file_name; IniAccess ini_file(ini_file_name_); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; std::ifstream file(orbit_definition_file_path); if (!file.is_open()) { @@ -155,7 +155,7 @@ bool OrbitCalculationWithDefinitionFile::ReadOrbitDefinitionCsv(const std::strin } -void OrbitCalculationWithDefinitionFile::Update(const SimulationTime& simulation_time) { +void TimeSeriesFileOrbitPropagation::Update(const SimulationTime& simulation_time) { if (!IsCalcEnabled()) return; // Get time @@ -174,7 +174,7 @@ void OrbitCalculationWithDefinitionFile::Update(const SimulationTime& simulation return; } -size_t OrbitCalculationWithDefinitionFile::SearchNearestEpochId(const SimulationTime& simulation_time) { +size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const SimulationTime& simulation_time) { size_t nearest_epoch_id = 0; // Get start ephemeris time @@ -190,7 +190,7 @@ size_t OrbitCalculationWithDefinitionFile::SearchNearestEpochId(const Simulation return nearest_epoch_id; } -time_system::DateTime OrbitCalculationWithDefinitionFile::GetEpochData(const size_t epoch_id) const { +time_system::DateTime TimeSeriesFileOrbitPropagation::GetEpochData(const size_t epoch_id) const { if (epoch_id > epoch_.size()) { time_system::DateTime zero; return zero; @@ -199,9 +199,9 @@ time_system::DateTime OrbitCalculationWithDefinitionFile::GetEpochData(const siz } -math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition(const time_system::EpochTime time) const { +math::Vector<3> TimeSeriesFileOrbitPropagation::GetPosition(const time_system::EpochTime time) const { IniAccess ini_file(ini_file_name_); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; time_system::EpochTime target_time; @@ -223,9 +223,9 @@ math::Vector<3> OrbitCalculationWithDefinitionFile::GetPosition(const time_syste } } -math::Vector<3> OrbitCalculationWithDefinitionFile::GetVelocity(const time_system::EpochTime time) const { +math::Vector<3> TimeSeriesFileOrbitPropagation::GetVelocity(const time_system::EpochTime time) const { IniAccess ini_file(ini_file_name_); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; time_system::EpochTime target_time; @@ -247,7 +247,7 @@ math::Vector<3> OrbitCalculationWithDefinitionFile::GetVelocity(const time_syste } } -bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { +bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { time_system::EpochTime orbit_definition_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); double time_diff_s = orbit_definition_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); math::Vector<3> orbit_definition_position; @@ -267,9 +267,9 @@ bool OrbitCalculationWithDefinitionFile::UpdateInterpolationInformation() { return true; } -std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { +std::string TimeSeriesFileOrbitPropagation::GetLogHeader() const { IniAccess ini_file(ini_file_name_); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; std::string str_tmp = ""; @@ -279,7 +279,7 @@ std::string OrbitCalculationWithDefinitionFile::GetLogHeader() const { return str_tmp; } -std::string OrbitCalculationWithDefinitionFile::GetLogValue() const { +std::string TimeSeriesFileOrbitPropagation::GetLogValue() const { std::string str_tmp = ""; str_tmp += WriteVector(GetPosition(), 16); @@ -288,30 +288,30 @@ std::string OrbitCalculationWithDefinitionFile::GetLogValue() const { return str_tmp; } -OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string ini_file_name, const SimulationTime& simulation_time) { +TimeSeriesFileOrbitPropagation* InitTimeSeriesFileOrbitPropagation(const std::string ini_file_name, const SimulationTime& simulation_time) { IniAccess ini_file(ini_file_name); - char section[] = "ORBIT_CALCULATION_WITH_DEFINITION_FILE"; + char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); - OrbitCalculationWithDefinitionFile* orbit_calculation_with_definition_file = new OrbitCalculationWithDefinitionFile(is_calc_enable, is_log_enable); - if (!orbit_calculation_with_definition_file->IsCalcEnabled()) { - return orbit_calculation_with_definition_file; + TimeSeriesFileOrbitPropagation* time_series_file_orbit_propagation = new TimeSeriesFileOrbitPropagation(is_calc_enable, is_log_enable); + if (!time_series_file_orbit_propagation->IsCalcEnabled()) { + return time_series_file_orbit_propagation; } const std::string orbit_definition_file_path = ini_file.ReadString(section, "orbit_definition_file_path"); std::vector orbit_definition_data; - if (!orbit_calculation_with_definition_file->ReadOrbitDefinitionCsv(ini_file_name, orbit_definition_file_path, orbit_definition_data)) { - return orbit_calculation_with_definition_file; + if (!time_series_file_orbit_propagation->ReadOrbitDefinitionCsv(ini_file_name, orbit_definition_file_path, orbit_definition_data)) { + return time_series_file_orbit_propagation; } time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); time_system::EpochTime start_epoch_time(start_date_time); - orbit_calculation_with_definition_file->Initialize(orbit_definition_data, start_epoch_time, simulation_time); + time_series_file_orbit_propagation->Initialize(orbit_definition_data, start_epoch_time, simulation_time); - return orbit_calculation_with_definition_file; + return time_series_file_orbit_propagation; } diff --git a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp similarity index 81% rename from src/dynamics/orbit/orbit_calculation_with_definition_file.hpp rename to src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 3f357bb29..7f39852be 100644 --- a/src/dynamics/orbit/orbit_calculation_with_definition_file.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -1,10 +1,10 @@ /** - * @file orbit_calculation_with_defnition_file.hpp + * @file time_series_file_orbit_propagation.hpp * @brief Class to calculate satellite orbit using interpolation with orbit time series input */ -#ifndef S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ -#define S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ +#ifndef S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ +#define S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ #include #include @@ -15,12 +15,12 @@ #include "environment/global/simulation_time.hpp" /** - *@struct OrbitDefinitionData - *@brief Orbit definition data - *@note Coordinate system and units follow the orbit definition file + *@struct TimeSeriesData + *@brief Time series data of orbit + *@note Coordinate system and units follow the time series file */ -struct OrbitDefinitionData { - double et; //!< Ehemeris time [s] +struct TimeSeriesData { + double et; //!< Ephemeris time [s] double x; //!< Position x double y; //!< Position y double z; //!< Position z @@ -30,18 +30,18 @@ struct OrbitDefinitionData { }; /** - * @class OrbitCalculationWithDefinitionFile + * @class TimeSeriesFileOrbitPropagation * @brief Class to calculate satellite orbit using interpolation with orbit time series input */ -class OrbitCalculationWithDefinitionFile : public ILoggable { +class TimeSeriesFileOrbitPropagation : public ILoggable { public: /** - *@fn OrbitCalculationWithDefinitionFile + *@fn TimeSeriesFileOrbitPropagation *@brief Constructor * @param [in] is_calc_enabled: Flag to manage the orbit calculation * @param [in] is_log_enabled: Flag to generate the log of orbit calculation */ - OrbitCalculationWithDefinitionFile(const bool is_calc_enabled = false, const bool is_log_enabled = false) + TimeSeriesFileOrbitPropagation(const bool is_calc_enabled = false, const bool is_log_enabled = false) : is_calc_enabled_(is_calc_enabled) { if (!is_calc_enabled_) { is_log_enabled_ = false; @@ -51,10 +51,10 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { } /** - *@fn ~OrbitCalculationWithDefinitionFile + *@fn ~TimeSeriesFileOrbitPropagation *@brief Destructor */ - virtual ~OrbitCalculationWithDefinitionFile() {} + virtual ~TimeSeriesFileOrbitPropagation() {} /** * @fn Initialize @@ -89,7 +89,7 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { /** * @fn GetOrbitDefinitionData * @brief Return orbit definition data for a specific index. - * @param index The index of the orbit definition data to. + * @param index The index of the orbit definition data. */ OrbitDefinitionData GetOrbitDefinitionData(size_t index) const { return orbit_definition_data_[index]; } @@ -109,7 +109,7 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { /** * @fn Update - * @brief Updatesatellite information + * @brief Update satellite information * @param [in] simulation_time: Simulation time information */ void Update(const SimulationTime& simulation_time); @@ -167,12 +167,12 @@ class OrbitCalculationWithDefinitionFile : public ILoggable { }; /** - * @fn InitOrbitCalculationWithDefinitionFile - * @brief Initialize function for OrbitCalculationWithDefinitionFile class + * @fn InitTimeSeriesFileOrbitPropagation + * @brief Initialize function for TimeSeriesFileOrbitPropagation class * @param [in] ini_file_name: Path to the initialize file * @param [in] simulation_time: Simulation time information - * @return Initialized OrbitCalculationWithDefinitionFile class + * @return Initialized TimeSeriesFileOrbitPropagation class */ -OrbitCalculationWithDefinitionFile* InitOrbitCalculationWithDefinitionFile(const std::string ini_file_name, const SimulationTime& simulation_time); +TimeSeriesFileOrbitPropagation* InitTimeSeriesFileOrbitPropagation(const std::string ini_file_name, const SimulationTime& simulation_time); -#endif // S2E_DYNAMICS_ORBIT_ORBIT_CALCULATION_WITH_DEFINITION_FILE_HPP_ \ No newline at end of file +#endif // S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ From bda7a4323c40f689f1b7f0a6e66ddbcbc28e3c45 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Thu, 26 Sep 2024 10:25:14 +0900 Subject: [PATCH 389/456] modify function and variable names --- ...=> time_series_file_orbit_propagation.ini} | 10 +- src/dynamics/CMakeLists.txt | 2 +- .../time_series_file_orbit_propagation.cpp | 147 ++++-------------- .../time_series_file_orbit_propagation.hpp | 41 +++-- src/environment/global/global_environment.cpp | 8 +- src/environment/global/global_environment.hpp | 4 +- src/simulation/case/simulation_case.cpp | 2 +- src/simulation/simulation_configuration.hpp | 2 +- 8 files changed, 67 insertions(+), 149 deletions(-) rename settings/environment/{sample_orbit_calculation_with_definition_file.ini => time_series_file_orbit_propagation.ini} (64%) diff --git a/settings/environment/sample_orbit_calculation_with_definition_file.ini b/settings/environment/time_series_file_orbit_propagation.ini similarity index 64% rename from settings/environment/sample_orbit_calculation_with_definition_file.ini rename to settings/environment/time_series_file_orbit_propagation.ini index f4f7f1da8..3939f7a58 100644 --- a/settings/environment/sample_orbit_calculation_with_definition_file.ini +++ b/settings/environment/time_series_file_orbit_propagation.ini @@ -1,5 +1,5 @@ -[ORBIT_CALCULATION_WITH_DEFINITION_FILE] -orbit_definition_file_path = SETTINGS_DIR_FROM_EXE/environment/orbit_definition/sample_traj_ECLIPJ2000.csv +[TIME_SERIES_FILE_ORBIT_PROPAGATION] +time_series_file_path = SETTINGS_DIR_FROM_EXE/environment/time_series/output.csv header_name_et = t(ET) header_name_x = "EQU X(km, ECLIPJ2000)" header_name_y = "EQU Y(km, ECLIPJ2000)" @@ -10,9 +10,9 @@ header_name_vz = VZ(km/s) coordinate_system = eclipj2000 unit = km -calculation = DISABLE -logging = DISABLE +calculation = ENABLE +logging = ENABLE number_of_interpolation = 5 orbital_period_correction = 86659.2 // Only used for trigonometric method. This sample value is used for the gnss satellits (24 * 60 * 60 * 1.003). -interpolation_method = POLYNOMIAL // or TRIGONOMETRIC \ No newline at end of file +interpolation_method = POLYNOMIAL // POLYNOMIALor TRIGONOMETRIC \ No newline at end of file diff --git a/src/dynamics/CMakeLists.txt b/src/dynamics/CMakeLists.txt index f75bc09a4..72f038590 100644 --- a/src/dynamics/CMakeLists.txt +++ b/src/dynamics/CMakeLists.txt @@ -8,7 +8,7 @@ add_library(${PROJECT_NAME} STATIC orbit/relative_orbit.cpp orbit/kepler_orbit_propagation.cpp orbit/encke_orbit_propagation.cpp - orbit/orbit_calculation_with_definition_file.cpp + orbit/time_series_file_orbit_propagation.cpp orbit/initialize_orbit.cpp thermal/node.cpp diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index b0849ef99..c41742ce2 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -16,7 +16,8 @@ #include "math_physics/math/constants.hpp" #include "logger/log_utility.hpp" -void TimeSeriesFileOrbitPropagation::Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { +void TimeSeriesFileOrbitPropagation::Initialize(const std::string ini_file_name, const std::vector>& time_series_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { + ini_file_name_ = ini_file_name; IniAccess ini_file(ini_file_name_); char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; const size_t number_of_interpolation = ini_file.ReadInt(section, "number_of_interpolation"); @@ -30,7 +31,7 @@ void TimeSeriesFileOrbitPropagation::Initialize(const std::vector ParseCsvLine(const std::string& line) { - std::vector result; - std::stringstream ss(line); - std::string field; - bool inside_quotes = false; - char current_char; - std::string temp; - - while (ss.get(current_char)) { - if (current_char == '"') { - inside_quotes = !inside_quotes; - temp += '"'; - } else if (current_char == ',' && !inside_quotes) { - result.push_back(temp); - temp.clear(); - } else { - temp += current_char; - } - } - result.push_back(temp); +bool TimeSeriesFileOrbitPropagation::ReadTimeSeriesCsv(const std::string& time_series_file_path, std::vector>& time_series_data) { + IniAccess time_series_file(time_series_file_path); - return result; -} -bool TimeSeriesFileOrbitPropagation::ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data) { - ini_file_name_ = ini_file_name; - IniAccess ini_file(ini_file_name_); - char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; + time_series_file.ReadCsvDoubleWithHeader(time_series_data, 7, 1, 0); - std::ifstream file(orbit_definition_file_path); - if (!file.is_open()) { - std::cout << "File open error. filename = " << orbit_definition_file_path << std::endl; - is_calc_enabled_ = false; - is_log_enabled_ = false; - return false; - } - - std::string line; - - if (std::getline(file, line)) { - std::vector headers = ParseCsvLine(line); - - int index_et = -1; - int index_x = -1; - int index_y = -1; - int index_z = -1; - int index_vx = -1; - int index_vy = -1; - int index_vz = -1; - for (int i = 0; i < headers.size(); ++i) { - if (headers[i] == ini_file.ReadString(section, "header_name_et")) { - index_et = i; - } else if (headers[i] == ini_file.ReadString(section, "header_name_x")) { - index_x = i; - } else if (headers[i] == ini_file.ReadString(section, "header_name_y")) { - index_y = i; - } else if (headers[i] == ini_file.ReadString(section, "header_name_z")) { - index_z = i; - } else if (headers[i] == ini_file.ReadString(section, "header_name_vx")) { - index_vx = i; - } else if (headers[i] == ini_file.ReadString(section, "header_name_vy")) { - index_vy = i; - } else if (headers[i] == ini_file.ReadString(section, "header_name_vz")) { - index_vz = i; - } - } - - if (index_et == -1 || index_x == -1 || index_y == -1 || index_z == -1 || index_vx == -1 || index_vy == -1 || index_vz == -1) { - std::cout << "Header name error." << std::endl; - is_calc_enabled_ = false; - is_log_enabled_ = false; - return false; - } + int year, month, day, hour, minute; + double second; - int year, month, day, hour, minute; - double second; - - while (std::getline(file, line)) { - std::vector row = ParseCsvLine(line); - if (index_et < row.size() && index_x < row.size() && index_y < row.size() && index_z < row.size() && index_vx < row.size() && index_vy < row.size() && index_vz < row.size()) { - OrbitDefinitionData data; - data.et = std::stod(row[index_et]); - data.x = std::stod(row[index_x]); - data.y = std::stod(row[index_y]); - data.z = std::stod(row[index_z]); - data.vx = std::stod(row[index_vx]); - data.vy = std::stod(row[index_vy]); - data.vz = std::stod(row[index_vz]); - - SpiceChar utc_char[80]; - et2utc_c(data.et, "ISOC", 2, 80, utc_char); - sscanf(utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); - epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); - - orbit_definition_data.push_back(data); - } + for (size_t i = 0; i < time_series_data.size(); ++i) { + if (!time_series_data[i].empty()) { + SpiceChar utc_char[80]; + et2utc_c(time_series_data[i][0], "ISOC", 2, 80, utc_char); + sscanf(utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); + epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); } } return true; @@ -181,8 +100,8 @@ size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const SimulationTime SpiceDouble start_et = simulation_time.GetCurrentEphemerisTime(); // Get the nearest epoch ID - for (size_t i = 0; i < orbit_definition_data_.size(); i++) { - if (start_et < orbit_definition_data_[i].et) { + for (size_t i = 0; i < time_series_data_.size(); i++) { + if (start_et < time_series_data_[i][0]) { nearest_epoch_id = i; break; } @@ -248,19 +167,19 @@ math::Vector<3> TimeSeriesFileOrbitPropagation::GetVelocity(const time_system::E } bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { - time_system::EpochTime orbit_definition_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); - double time_diff_s = orbit_definition_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - math::Vector<3> orbit_definition_position; - math::Vector<3> orbit_definition_velocity; - orbit_definition_position(0) = orbit_definition_data_[reference_interpolation_id_].x; - orbit_definition_position(1) = orbit_definition_data_[reference_interpolation_id_].y; - orbit_definition_position(2) = orbit_definition_data_[reference_interpolation_id_].z; - orbit_definition_velocity(0) = orbit_definition_data_[reference_interpolation_id_].vx; - orbit_definition_velocity(1) = orbit_definition_data_[reference_interpolation_id_].vy; - orbit_definition_velocity(2) = orbit_definition_data_[reference_interpolation_id_].vz; - - orbit_position_[0].PushAndPopData(time_diff_s, orbit_definition_position); - orbit_velocity_[0].PushAndPopData(time_diff_s, orbit_definition_velocity); + time_system::EpochTime time_series_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + double time_diff_s = time_series_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + math::Vector<3> time_series_position; + math::Vector<3> time_series_velocity; + time_series_position[0] = time_series_data_[reference_interpolation_id_][1]; + time_series_position[1] = time_series_data_[reference_interpolation_id_][2]; + time_series_position[2] = time_series_data_[reference_interpolation_id_][3]; + time_series_velocity[0] = time_series_data_[reference_interpolation_id_][4]; + time_series_velocity[1] = time_series_data_[reference_interpolation_id_][5]; + time_series_velocity[2] = time_series_data_[reference_interpolation_id_][6]; + + orbit_position_[0].PushAndPopData(time_diff_s, time_series_position); + orbit_velocity_[0].PushAndPopData(time_diff_s, time_series_velocity); reference_interpolation_id_++; @@ -300,10 +219,10 @@ TimeSeriesFileOrbitPropagation* InitTimeSeriesFileOrbitPropagation(const std::st return time_series_file_orbit_propagation; } - const std::string orbit_definition_file_path = ini_file.ReadString(section, "orbit_definition_file_path"); + const std::string time_series_file_path = ini_file.ReadString(section, "time_series_file_path"); - std::vector orbit_definition_data; - if (!time_series_file_orbit_propagation->ReadOrbitDefinitionCsv(ini_file_name, orbit_definition_file_path, orbit_definition_data)) { + std::vector> time_series_data; + if (!time_series_file_orbit_propagation->ReadTimeSeriesCsv(time_series_file_path, time_series_data)) { return time_series_file_orbit_propagation; } @@ -311,7 +230,7 @@ TimeSeriesFileOrbitPropagation* InitTimeSeriesFileOrbitPropagation(const std::st (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); time_system::EpochTime start_epoch_time(start_date_time); - time_series_file_orbit_propagation->Initialize(orbit_definition_data, start_epoch_time, simulation_time); + time_series_file_orbit_propagation->Initialize(ini_file_name, time_series_data, start_epoch_time, simulation_time); return time_series_file_orbit_propagation; } diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 7f39852be..9dac7a833 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -19,15 +19,15 @@ *@brief Time series data of orbit *@note Coordinate system and units follow the time series file */ -struct TimeSeriesData { - double et; //!< Ephemeris time [s] - double x; //!< Position x - double y; //!< Position y - double z; //!< Position z - double vx; //!< Velocity x - double vy; //!< Velocity y - double vz; //!< Velocity z -}; +// struct TimeSeriesData { +// double et; //!< Ephemeris time [s] +// double x; //!< Position x +// double y; //!< Position y +// double z; //!< Position z +// double vx; //!< Velocity x +// double vy; //!< Velocity y +// double vz; //!< Velocity z +// }; /** * @class TimeSeriesFileOrbitPropagation @@ -59,11 +59,11 @@ class TimeSeriesFileOrbitPropagation : public ILoggable { /** * @fn Initialize * @brief Initialize function - * @param [in] orbit_definition_data: orbit definition data + * @param [in] time_series_data: orbit definition data * @param [in] start_time: The simulation start time * @param [in] simulation_time: Simulation time information */ - void Initialize(const std::vector& orbit_definition_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); + void Initialize(const std::string ini_file_name, const std::vector>& time_series_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); /** * @fn IsCalcEnabled @@ -72,26 +72,26 @@ class TimeSeriesFileOrbitPropagation : public ILoggable { inline bool IsCalcEnabled() const { return is_calc_enabled_; } /** - * @fn ReadOrbitDefinitionCsv + * @fn ReadTimeSeriesCsv * @brief Read orbit definition CSV file. * @param ini_file_name Path to the initialize file. - * @param orbit_definition_file_path Path to orbit definition CSV file. - * @param orbit_definition_data List of orbit definition data. + * @param time_series_file_path Path to orbit definition CSV file. + * @param time_series_data List of orbit definition data. */ - bool ReadOrbitDefinitionCsv(const std::string ini_file_name, const std::string& orbit_definition_file_path, std::vector& orbit_definition_data); + bool ReadTimeSeriesCsv(const std::string& time_series_file_path, std::vector>& time_series_data); /** - * @fn GetOrbitDefinitionDataSize + * @fn GetTimeSeriesDataSize * @brief Return read orbit definition data size. */ - size_t GetOrbitDefinitionDataSize() const { return orbit_definition_data_.size(); } + size_t GetTimeSeriesDataSize() const { return time_series_data_.size(); } /** - * @fn GetOrbitDefinitionData + * @fn GetTimeSeriesData * @brief Return orbit definition data for a specific index. * @param index The index of the orbit definition data. */ - OrbitDefinitionData GetOrbitDefinitionData(size_t index) const { return orbit_definition_data_[index]; } + std::vector GetTimeSeriesData(size_t index) const { return time_series_data_[index]; } /** * @fn GetEpochData @@ -146,11 +146,10 @@ class TimeSeriesFileOrbitPropagation : public ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the orbit calculation - bool is_interpolation_method_error_message_displayed_ = false; //!< Flag to manage the interpolation method error message std::vector epoch_; //!< Epoch data list std::string ini_file_name_; //!< Path to the initialize file - std::vector orbit_definition_data_; //!< List of orbit definition data + std::vector> time_series_data_; //!< List of orbit definition data time_system::EpochTime current_epoch_time_; //!< The last updated time time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index b3e0320aa..ae46c34ac 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -14,7 +14,7 @@ GlobalEnvironment::~GlobalEnvironment() { delete celestial_information_; delete hipparcos_catalogue_; delete gnss_satellites_; - delete orbit_calculation_with_definition_file_; + delete time_series_file_orbit_propagation_; } void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration) { @@ -27,7 +27,7 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con simulation_time_ = InitSimulationTime(simulation_time_ini_path); hipparcos_catalogue_ = InitHipparcosCatalogue(simulation_configuration->initialize_base_file_name_); gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_, celestial_information_->GetEarthRotation(), *simulation_time_); - orbit_calculation_with_definition_file_ = InitOrbitCalculationWithDefinitionFile(simulation_configuration->orbit_definition_file_, *simulation_time_); + time_series_file_orbit_propagation_ = InitTimeSeriesFileOrbitPropagation(simulation_configuration->time_series_file_, *simulation_time_); // Calc initial value celestial_information_->UpdateAllObjectsInformation(*simulation_time_); @@ -37,14 +37,14 @@ void GlobalEnvironment::Update() { simulation_time_->UpdateTime(); celestial_information_->UpdateAllObjectsInformation(*simulation_time_); gnss_satellites_->Update(*simulation_time_); - orbit_calculation_with_definition_file_->Update(*simulation_time_); + time_series_file_orbit_propagation_->Update(*simulation_time_); } void GlobalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(simulation_time_); logger.AddLogList(celestial_information_); logger.AddLogList(gnss_satellites_); - logger.AddLogList(orbit_calculation_with_definition_file_); + logger.AddLogList(time_series_file_orbit_propagation_); } void GlobalEnvironment::Reset(void) { simulation_time_->ResetClock(); } diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index b1be324f0..0978897ac 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -8,7 +8,7 @@ #include "celestial_information.hpp" #include "gnss_satellites.hpp" -#include "dynamics/orbit/orbit_calculation_with_definition_file.hpp" +#include "dynamics/orbit/time_series_file_orbit_propagation.hpp" #include "hipparcos_catalogue.hpp" #include "logger/logger.hpp" #include "simulation/simulation_configuration.hpp" @@ -81,7 +81,7 @@ class GlobalEnvironment { CelestialInformation* celestial_information_; //!< Celestial bodies information HipparcosCatalogue* hipparcos_catalogue_; //!< Hipparcos catalogue GnssSatellites* gnss_satellites_; //!< GNSS satellites - OrbitCalculationWithDefinitionFile* orbit_calculation_with_definition_file_; //!< Orbit calculation with definition file + TimeSeriesFileOrbitPropagation* time_series_file_orbit_propagation_; //!< Orbit calculation with definition file }; #endif // S2E_ENVIRONMENT_GLOBAL_GLOBAL_ENVIRONMENT_HPP_ diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index d4fe870d3..a2fa849b7 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -100,7 +100,7 @@ void SimulationCase::InitializeSimulationConfiguration(const std::string initial // Others simulation_configuration_.inter_sc_communication_file_ = simulation_base_ini.ReadString(section, "inter_sat_comm_file"); simulation_configuration_.gnss_file_ = simulation_base_ini.ReadString(section, "gnss_file"); - simulation_configuration_.orbit_definition_file_ = simulation_base_ini.ReadString(section, "orbit_definition_file"); + simulation_configuration_.time_series_file_ = simulation_base_ini.ReadString(section, "time_series_file"); // Global Environment global_environment_ = new GlobalEnvironment(&simulation_configuration_); diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index adf967284..7bc63b669 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -27,7 +27,7 @@ struct SimulationConfiguration { std::string inter_sc_communication_file_; //!< File name for inter-satellite communication initialization std::string gnss_file_; //!< File name for GNSS initialization - std::string orbit_definition_file_; //!< File name for orbit calculation initialization + std::string time_series_file_; //!< File name for orbit calculation initialization /** * @fn ~SimulationConfiguration From 14824c66023611296e68d64e42af134576d0de7b Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 14:05:52 +0900 Subject: [PATCH 390/456] Add comment to clarify earth_albedo_factor in sample_local_environment.ini --- data/sample/initialize_files/sample_local_environment.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/data/sample/initialize_files/sample_local_environment.ini b/data/sample/initialize_files/sample_local_environment.ini index 6ac59e225..96e340a2c 100644 --- a/data/sample/initialize_files/sample_local_environment.ini +++ b/data/sample/initialize_files/sample_local_environment.ini @@ -19,6 +19,7 @@ third_shadow_source_name(0) = MOON [EARTH_ALBEDO] calculation = DISABLE +// Earth albedo factor: Percentage of sunlight reflected off the Earth surface. Value between 0.0 and 1.0 earth_albedo_factor = 0.3 From 81a5a959bbb4289eccf6c69daeda5113d480c0e0 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 14:31:44 +0900 Subject: [PATCH 391/456] Initialize earth_albedo_W_m2 to 0.0 and set is_calc_earth_albedo_enabled to false in EarthAlbedo class --- src/environment/local/earth_albedo.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index 528fa5053..f0704346e 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -67,9 +67,9 @@ class EarthAlbedo : public ILoggable { inline void SetIsCalcEarthAlbedoEnabled(bool is_calc_earth_albedo_enabled) { is_calc_earth_albedo_enabled_ = is_calc_earth_albedo_enabled; } private: - double earth_albedo_W_m2_; //!< Earth albedo [W/m^2] - bool is_calc_earth_albedo_enabled_ = true; //!< Calculation flag - double earth_albedo_factor_ = 0.3; //!< Earth albedo factor + double earth_albedo_W_m2_ = 0.0; //!< Earth albedo [W/m^2] + bool is_calc_earth_albedo_enabled_ = false; //!< Calculation flag + double earth_albedo_factor_ = 0.3; //!< Earth albedo factor LocalCelestialInformation* local_celestial_information_; //!< Local celestial information SolarRadiationPressureEnvironment* srp_environment_; //!< Solar radiation pressure environment From 4768f16a028cc76d135bf0c7f6e90833c5daf872 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 14:31:49 +0900 Subject: [PATCH 392/456] Remove debug output for Earth albedo calculation in CalcEarthAlbedo method --- src/environment/local/earth_albedo.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 2ec126d78..1d7eadf6b 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -42,7 +42,6 @@ void EarthAlbedo::CalcEarthAlbedo(const LocalCelestialInformation* local_celesti double earth_distance_m = earth_position_b_m.CalcNorm(); earth_albedo_W_m2_ = srp_environment_->GetPowerDensity_W_m2() * GetEarthAlbedoFactor() * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; - std::cout << "##Earth albedo: " << earth_albedo_W_m2_ << std::endl; } EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information, From 975534ab98633728e9e0deaf01172cac01de8029 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 14:54:49 +0900 Subject: [PATCH 393/456] Add const qualifier to parameters in SetEarthAlbedoFactor and SetIsCalcEarthAlbedoEnabled methods --- src/environment/local/earth_albedo.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index f0704346e..e07ad7b46 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -58,13 +58,13 @@ class EarthAlbedo : public ILoggable { * @brief Set earth albedo factor * @param [in] earth_albedo_factor: Earth albedo factor */ - inline void SetEarthAlbedoFactor(double earth_albedo_factor) { earth_albedo_factor_ = earth_albedo_factor; } + inline void SetEarthAlbedoFactor(const double earth_albedo_factor) { earth_albedo_factor_ = earth_albedo_factor; } /** * @fn SetIsCalcEarthAlbedoEnabled * @brief Set calculation flag * @param [in] is_calc_earth_albedo_enabled: Calculation flag */ - inline void SetIsCalcEarthAlbedoEnabled(bool is_calc_earth_albedo_enabled) { is_calc_earth_albedo_enabled_ = is_calc_earth_albedo_enabled; } + inline void SetIsCalcEarthAlbedoEnabled(const bool is_calc_earth_albedo_enabled) { is_calc_earth_albedo_enabled_ = is_calc_earth_albedo_enabled; } private: double earth_albedo_W_m2_ = 0.0; //!< Earth albedo [W/m^2] From 75480ec9108ae36509d15aed4306a41e2425da87 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 14:56:47 +0900 Subject: [PATCH 394/456] Add logging for earth_albedo_W_m2 in GetLogHeader and GetLogValue methods --- src/environment/local/earth_albedo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 1d7eadf6b..751729f61 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -25,6 +25,7 @@ std::string EarthAlbedo::GetLogHeader() const { std::string str_tmp = ""; str_tmp += WriteScalar("earth_albedo_factor"); + str_tmp += WriteScalar("earth_albedo_W_m2"); return str_tmp; } @@ -33,6 +34,7 @@ std::string EarthAlbedo::GetLogValue() const { std::string str_tmp = ""; str_tmp += WriteScalar(earth_albedo_factor_); + str_tmp += WriteScalar(earth_albedo_W_m2_); return str_tmp; } From d0d142aef2609d60f03f737f49c8da019955aaec Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 16:16:57 +0900 Subject: [PATCH 395/456] Refactor LocalEnvironment class member variable formatting --- src/environment/local/local_environment.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index 05278f38e..ea26f695f 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -78,11 +78,11 @@ class LocalEnvironment { inline const LocalCelestialInformation& GetCelestialInformation() const { return *celestial_information_; } private: - Atmosphere* atmosphere_; //!< Atmospheric density of the earth - GeomagneticField* geomagnetic_field_; //!< Magnetic field of the earth + Atmosphere* atmosphere_; //!< Atmospheric density of the earth + GeomagneticField* geomagnetic_field_; //!< Magnetic field of the earth SolarRadiationPressureEnvironment* srp_environment_; //!< Solar radiation pressure - EarthAlbedo* earth_albedo_; //!< Earth albedo - LocalCelestialInformation* celestial_information_; //!< Celestial information + EarthAlbedo* earth_albedo_; //!< Earth albedo + LocalCelestialInformation* celestial_information_; //!< Celestial information /** * @fn Initialize From 63f4bfee46555aa281d4f24fb736e2788ceea1b4 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 17:12:47 +0900 Subject: [PATCH 396/456] Refactor LocalEnvironment class member variable names --- src/environment/local/local_environment.cpp | 11 ++++++----- src/environment/local/local_environment.hpp | 12 ++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index 7c950b6db..7cd898db9 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -15,7 +15,7 @@ LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_con LocalEnvironment::~LocalEnvironment() { delete geomagnetic_field_; - delete srp_environment_; + delete solar_radiation_pressure_environment_; delete earth_albedo_; delete atmosphere_; delete celestial_information_; @@ -34,8 +34,9 @@ void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_conf geomagnetic_field_ = new GeomagneticField(InitGeomagneticField(ini_fname)); celestial_information_ = new LocalCelestialInformation(&(global_environment->GetCelestialInformation())); atmosphere_ = new Atmosphere(InitAtmosphere(ini_fname, celestial_information_, &global_environment->GetSimulationTime())); - srp_environment_ = new SolarRadiationPressureEnvironment(InitSolarRadiationPressureEnvironment(ini_fname, celestial_information_)); - earth_albedo_ = new EarthAlbedo(InitEarthAlbedo(ini_fname, celestial_information_, srp_environment_)); + solar_radiation_pressure_environment_ = + new SolarRadiationPressureEnvironment(InitSolarRadiationPressureEnvironment(ini_fname, celestial_information_)); + earth_albedo_ = new EarthAlbedo(InitEarthAlbedo(ini_fname, celestial_information_, solar_radiation_pressure_environment_)); // Force to disable when the center body is not the Earth if (global_environment->GetCelestialInformation().GetCenterBodyName() != "EARTH") { @@ -62,7 +63,7 @@ void LocalEnvironment::Update(const Dynamics* dynamics, const SimulationTime* si // Update local environments that depend only on the position if (simulation_time->GetOrbitPropagateFlag()) { - srp_environment_->UpdateAllStates(); + solar_radiation_pressure_environment_->UpdateAllStates(); earth_albedo_->UpdateAllStates(); atmosphere_->CalcAirDensity_kg_m3(simulation_time->GetCurrentDecimalYear(), orbit); } @@ -70,7 +71,7 @@ void LocalEnvironment::Update(const Dynamics* dynamics, const SimulationTime* si void LocalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(geomagnetic_field_); - logger.AddLogList(srp_environment_); + logger.AddLogList(solar_radiation_pressure_environment_); logger.AddLogList(earth_albedo_); logger.AddLogList(atmosphere_); logger.AddLogList(celestial_information_); diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index ea26f695f..a7d0b7cac 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -65,7 +65,7 @@ class LocalEnvironment { * @fn GetSolarRadiationPressure * @brief Return SolarRadiationPressureEnvironment class */ - inline const SolarRadiationPressureEnvironment& GetSolarRadiationPressure() const { return *srp_environment_; } + inline const SolarRadiationPressureEnvironment& GetSolarRadiationPressure() const { return *solar_radiation_pressure_environment_; } /** * @fn GetEarthAlbedo * @brief Return EarthAlbedo class @@ -78,11 +78,11 @@ class LocalEnvironment { inline const LocalCelestialInformation& GetCelestialInformation() const { return *celestial_information_; } private: - Atmosphere* atmosphere_; //!< Atmospheric density of the earth - GeomagneticField* geomagnetic_field_; //!< Magnetic field of the earth - SolarRadiationPressureEnvironment* srp_environment_; //!< Solar radiation pressure - EarthAlbedo* earth_albedo_; //!< Earth albedo - LocalCelestialInformation* celestial_information_; //!< Celestial information + Atmosphere* atmosphere_; //!< Atmospheric density of the earth + GeomagneticField* geomagnetic_field_; //!< Magnetic field of the earth + SolarRadiationPressureEnvironment* solar_radiation_pressure_environment_; //!< Solar radiation pressure + EarthAlbedo* earth_albedo_; //!< Earth albedo + LocalCelestialInformation* celestial_information_; //!< Celestial information /** * @fn Initialize From e043d619b315fb7ab2e92c33ca87e80f90a840e1 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 17:13:06 +0900 Subject: [PATCH 397/456] Refactor variable types in Node class and EarthAlbedo class --- src/dynamics/thermal/node.cpp | 4 ++-- src/environment/local/earth_albedo.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index d8587a69e..bc101e498 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -41,8 +41,8 @@ double Node::CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_ return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(libra::Vector<3> earth_position_b_m, double earth_albedo_W_m2) { - libra::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); +double Node::CalcAlbedoRadiation_W(math::Vector<3> earth_position_b_m, double earth_albedo_W_m2) { + math::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); double earth_distance_m = earth_position_b_m.CalcNorm(); // check if satellite is outside of the earth's shadow diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 751729f61..eabb04083 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -8,10 +8,10 @@ #include #include -#include "library/initialize/initialize_file_access.hpp" -#include "library/logger/log_utility.hpp" -#include "library/math/constants.hpp" -#include "library/math/vector.hpp" +#include "logger/log_utility.hpp" +#include "math_physics/math/constants.hpp" +#include "math_physics/math/vector.hpp" +#include "setting_file_reader/initialize_file_access.hpp" EarthAlbedo::EarthAlbedo(LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment) : local_celestial_information_(local_celestial_information), srp_environment_(srp_environment) {} @@ -40,7 +40,7 @@ std::string EarthAlbedo::GetLogValue() const { } void EarthAlbedo::CalcEarthAlbedo(const LocalCelestialInformation* local_celestial_information) { - libra::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); + math::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); double earth_distance_m = earth_position_b_m.CalcNorm(); earth_albedo_W_m2_ = srp_environment_->GetPowerDensity_W_m2() * GetEarthAlbedoFactor() * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; From b9a3e1b8947be6ed97123e7840628a0e027b2dd4 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Thu, 26 Sep 2024 17:23:16 +0900 Subject: [PATCH 398/456] Refactor thermal propagation in Dynamics::Update method --- src/dynamics/dynamics.cpp | 6 +- src/dynamics/thermal/temperature.cpp | 104 --------------------------- src/dynamics/thermal/temperature.hpp | 30 -------- 3 files changed, 1 insertion(+), 139 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index dc96d495d..8f6f54198 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -50,11 +50,7 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia // Thermal if (simulation_time->GetThermalPropagateFlag()) { - if (!local_environment_->GetEarthAlbedo().GetIsCalcEarthAlbedoEnabled()) { - temperature_->Propagate(local_celestial_information->GetPositionFromSpacecraft_b_m("SUN"), simulation_time->GetElapsedTime_s()); - } else { - temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); - } + temperature_->Propagate(local_celestial_information, simulation_time->GetElapsedTime_s()); } } diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 9db4e0907..8436db0ac 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -48,39 +48,6 @@ Temperature::Temperature() { Temperature::~Temperature() {} -void Temperature::Propagate(math::Vector<3> sun_position_b_m, const double time_end_s) { - if (!is_calc_enabled_) return; - math::Vector<3> sun_direction_b = sun_position_b_m.CalcNormalizedVector(); - while (time_end_s - propagation_time_s_ - propagation_step_s_ > 1.0e-6) { - CalcRungeOneStep(propagation_time_s_, propagation_step_s_, sun_direction_b, node_num_); - propagation_time_s_ += propagation_step_s_; - } - CalcRungeOneStep(propagation_time_s_, time_end_s - propagation_time_s_, sun_direction_b, node_num_); - propagation_time_s_ = time_end_s; - UpdateHeaterStatus(); - - if (debug_) { - cout << fixed; - cout << "Time: " << time_end_s << " Temp: "; - for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetTemperature_degC() << " "; - } - cout << "SolarR: "; - for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { - cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; - } - cout << "SunDir: "; - for (size_t i = 0; i < 3; i++) { - cout << setprecision(3) << sun_direction_b[i] << " "; - } - cout << "Heatload: "; - for (auto itr = heatloads_.begin(); itr != heatloads_.end(); ++itr) { - cout << setprecision(3) << itr->GetTotalHeatload_W() << " "; - } - cout << endl; - } -} - void Temperature::Propagate(const LocalCelestialInformation* local_celestial_information, const double time_end_s) { if (!is_calc_enabled_) return; while (time_end_s - propagation_time_s_ - propagation_step_s_ > 1.0e-6) { @@ -124,42 +91,6 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf } } -void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, math::Vector<3> sun_direction_b, size_t node_num) { - vector temperatures_now_K(node_num); - for (size_t i = 0; i < node_num; i++) { - temperatures_now_K[i] = nodes_[i].GetTemperature_K(); - } - - vector k1(node_num), k2(node_num), k3(node_num), k4(node_num); - vector xk2(node_num), xk3(node_num), xk4(node_num); - - k1 = CalcTemperatureDifferentials(temperatures_now_K, time_now_s, sun_direction_b, node_num); - for (size_t i = 0; i < node_num; i++) { - xk2[i] = temperatures_now_K[i] + (time_step_s / 2.0) * k1[i]; - } - - k2 = CalcTemperatureDifferentials(xk2, (time_now_s + time_step_s / 2.0), sun_direction_b, node_num); - for (size_t i = 0; i < node_num; i++) { - xk3[i] = temperatures_now_K[i] + (time_step_s / 2.0) * k2[i]; - } - - k3 = CalcTemperatureDifferentials(xk3, (time_now_s + time_step_s / 2.0), sun_direction_b, node_num); - for (size_t i = 0; i < node_num; i++) { - xk4[i] = temperatures_now_K[i] + time_step_s * k3[i]; - } - - k4 = CalcTemperatureDifferentials(xk4, (time_now_s + time_step_s), sun_direction_b, node_num); - - vector temperatures_next_K(node_num); - for (size_t i = 0; i < node_num; i++) { - temperatures_next_K[i] = temperatures_now_K[i] + (time_step_s / 6.0) * (k1[i] + 2.0 * k2[i] + 2.0 * k3[i] + k4[i]); - } - - for (size_t i = 0; i < node_num; i++) { - nodes_[i].SetTemperature_K(temperatures_next_K[i]); - } -} - void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, size_t node_num) { vector temperatures_now_K(node_num); @@ -197,41 +128,6 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const } } -vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, math::Vector<3> sun_direction_b, size_t node_num) { - // TODO: consider the following unused arguments are really needed - UNUSED(temperatures_K); - - vector differentials_K_s(node_num); - for (size_t i = 0; i < node_num; i++) { - heatloads_[i].SetElapsedTime_s(t); - if (nodes_[i].GetNodeType() == NodeType::kDiffusive) { - double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); - if (solar_calc_setting_ == SolarCalcSetting::kEnable) { - double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); - heatloads_[i].SetSolarHeatload_W(solar_radiation_W); - } - double heater_power_W = GetHeaterPower_W(i); - heatloads_[i].SetHeaterHeatload_W(heater_power_W); - heatloads_[i].CalcInternalHeatload(); - heatloads_[i].UpdateTotalHeatload(); - double total_heatload_W = heatloads_[i].GetTotalHeatload_W(); // Total heatload (solar + internal + heater)[W] - - double conductive_heat_input_W = 0; - double radiative_heat_input_W = 0; - for (size_t j = 0; j < node_num; j++) { - conductive_heat_input_W += conductance_matrix_W_K_[i][j] * (nodes_[j].GetTemperature_K() - nodes_[i].GetTemperature_K()); - radiative_heat_input_W += environment::stefan_boltzmann_constant_W_m2K4 * radiation_matrix_m2_[i][j] * - (pow(nodes_[j].GetTemperature_K(), 4) - pow(nodes_[i].GetTemperature_K(), 4)); - } - double total_heat_input_W = conductive_heat_input_W + radiative_heat_input_W + total_heatload_W; - differentials_K_s[i] = total_heat_input_W / nodes_[i].GetCapacity_J_K(); - } else if (nodes_[i].GetNodeType() == NodeType::kBoundary) { - differentials_K_s[i] = 0; - } - } - return differentials_K_s; -} - vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, const LocalCelestialInformation* local_celestial_information, size_t node_num) { // TODO: consider the following unused arguments are really needed diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index f144c3d5b..d286a7e91 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -47,28 +47,6 @@ class Temperature : public ILoggable { SolarCalcSetting solar_calc_setting_; //!< setting for solar calculation bool debug_; //!< Activate debug output or not - /** - * @fn CalcRungeOneStep - * @brief Calculate one step of RK4 for thermal equilibrium equation and update temperatures of nodes - * - * @param[in] time_now_s: Current elapsed time [s] - * @param[in] time_step_s: Time step of RK4 [s] - * @param[in] sun_direction_b: Sun position in body frame [m] - * @param[in] node_num: Number of nodes - */ - void CalcRungeOneStep(double time_now_s, double time_step_s, math::Vector<3> sun_direction_b, size_t node_num); - /** - * @fn CalcTemperatureDifferentials - * @brief Calculate differential of thermal equilibrium equation - * - * @param temperatures_K: [UNUSED] Temperatures of each node [K] - * @param time_now_s: Current elapsed time [s] - * @param[in] sun_direction_b: Sun direction in body frame - * @param node_num: Number of nodes - * @return std::vector: Differential of thermal equilibrium equation at time now - */ - std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, const math::Vector<3> sun_direction_b, - size_t node_num); /** * @fn CalcRungeOneStep * @brief Calculate one step of RK4 for thermal equilibrium equation and update temperatures of nodes @@ -127,14 +105,6 @@ class Temperature : public ILoggable { * */ virtual ~Temperature(); - /** - * @fn Propagate - * @brief Propagate thermal calculation until time_end_s - * - * @param[in] sun_position_b_m: Sun position in body frame [m] - * @param time_end_s: Time to finish propagation [s] - */ - void Propagate(math::Vector<3> sun_position_b_m, const double time_end_s); /** * @fn Propagate * @brief Propagate thermal calculation until time_end_s From 6ab9525341051324482f805b28b753b208b40c23 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 00:44:26 +0900 Subject: [PATCH 399/456] modyfy propagate --- src/dynamics/orbit/initialize_orbit.cpp | 12 + src/dynamics/orbit/orbit.hpp | 3 +- .../time_series_file_orbit_propagation.cpp | 242 +++++++----------- .../time_series_file_orbit_propagation.hpp | 41 ++- src/environment/global/global_environment.cpp | 4 - src/environment/global/global_environment.hpp | 1 - src/simulation/case/simulation_case.cpp | 1 - src/simulation/simulation_configuration.hpp | 1 - 8 files changed, 130 insertions(+), 175 deletions(-) diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 8ce7ab313..7dd7a3ff3 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -11,6 +11,9 @@ #include "relative_orbit.hpp" #include "rk4_orbit_propagation.hpp" #include "sgp4_orbit_propagation.hpp" +#include "time_series_file_orbit_propagation.hpp" + +#include Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, double gravity_constant_m3_s2, std::string section, RelativeInformation* relative_information) { @@ -96,6 +99,15 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string double error_tolerance = conf.ReadDouble(section_, "error_tolerance"); orbit = new EnckeOrbitPropagation(celestial_information, gravity_constant_m3_s2, step_width_s, current_time_jd, position_i_m, velocity_i_m_s, error_tolerance); + } else if (propagate_mode == "TIME_SERIES_FILE") { + // initialize orbit for propagation with time series file + const std::string time_series_file_path = conf.ReadString(section_, "time_series_file_path"); + const int number_of_interpolation = conf.ReadInt(section_, "number_of_interpolation"); + const int interpolation_method = conf.ReadInt(section_, "interpolation_method"); + const double orbital_period_correction = conf.ReadDouble(section_, "orbital_period_correction"); + + orbit = new TimeSeriesFileOrbitPropagation(celestial_information, time_series_file_path, number_of_interpolation, interpolation_method, orbital_period_correction, current_time_jd); + } else { std::cerr << "ERROR: orbit propagation mode: " << propagate_mode << " is not defined!" << std::endl; std::cerr << "The orbit mode is automatically set as RK4" << std::endl; diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index d3df8fb4a..caf4ddf25 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -25,7 +25,8 @@ enum class OrbitPropagateMode { kSgp4, //!< SGP4 propagation using TLE without thruster maneuver kRelativeOrbit, //!< Relative dynamics (for formation flying simulation) kKepler, //!< Kepler orbit propagation without disturbances and thruster maneuver - kEncke //!< Encke orbit propagation with disturbances and thruster maneuver + kEncke, //!< Encke orbit propagation with disturbances and thruster maneuver + kTimeSeriesFile //!< Orbit propagation using time series file }; /** diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index c41742ce2..51efea309 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -11,35 +11,44 @@ #include #include +#include + #include "setting_file_reader/initialize_file_access.hpp" #include "math_physics/time_system/date_time_format.hpp" #include "math_physics/math/constants.hpp" #include "logger/log_utility.hpp" -void TimeSeriesFileOrbitPropagation::Initialize(const std::string ini_file_name, const std::vector>& time_series_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time) { - ini_file_name_ = ini_file_name; - IniAccess ini_file(ini_file_name_); - char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; - const size_t number_of_interpolation = ini_file.ReadInt(section, "number_of_interpolation"); - - if (!(ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL" || - ini_file.ReadString(section, "interpolation_method") == "TRIGONOMETRIC")) { - std::cout << "Interpolation method error." << std::endl; - is_calc_enabled_ = false; - is_log_enabled_ = false; - return; - } +TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, int interpolation_method, double orbital_period_correction, const double current_time_jd) + : Orbit(celestial_information) { + propagate_mode_ = OrbitPropagateMode::kTimeSeriesFile; - time_series_data_ = time_series_data; - current_epoch_time_ = start_time; + number_of_interpolation_ = number_of_interpolation; + interpolation_method_ = interpolation_method; + orbital_period_correction_ = orbital_period_correction; + + // Read time series file + IniAccess time_series_file(time_series_file_path); + time_series_file.ReadCsvDoubleWithHeader(time_series_data_, 7, 1, 0); + int year, month, day, hour, minute; + double second; + for (size_t i = 0; i < time_series_data_.size(); ++i) { + if (!time_series_data_[i].empty()) { + SpiceChar utc_char[80]; + et2utc_c(time_series_data_[i][0], "ISOC", 2, 80, utc_char); + sscanf(utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); + epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); + } + } // Get general info - const size_t nearest_epoch_id = SearchNearestEpochId(simulation_time); + size_t nearest_epoch_id = SearchNearestEpochId(current_time_jd); + const size_t half_interpolation_number = number_of_interpolation / 2; if (nearest_epoch_id >= half_interpolation_number) { reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; } + reference_time_ = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); // Initialize orbit @@ -47,33 +56,17 @@ void TimeSeriesFileOrbitPropagation::Initialize(const std::string ini_file_name, orbit_velocity_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); // Initialize interpolation - for (size_t i = 0; i < number_of_interpolation; i++) { + for (int i = 0; i < number_of_interpolation; i++) { UpdateInterpolationInformation(); } - return; -} - -bool TimeSeriesFileOrbitPropagation::ReadTimeSeriesCsv(const std::string& time_series_file_path, std::vector>& time_series_data) { - IniAccess time_series_file(time_series_file_path); - - - time_series_file.ReadCsvDoubleWithHeader(time_series_data, 7, 1, 0); + spacecraft_acceleration_i_m_s2_ *= 0.0; - int year, month, day, hour, minute; - double second; - - for (size_t i = 0; i < time_series_data.size(); ++i) { - if (!time_series_data[i].empty()) { - SpiceChar utc_char[80]; - et2utc_c(time_series_data[i][0], "ISOC", 2, 80, utc_char); - sscanf(utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); - epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); - } - } - return true; + // To calculate initial position and velocity + is_calc_enabled_ = true; + Propagate(0.0, current_time_jd); + is_calc_enabled_ = false; } - void TimeSeriesFileOrbitPropagation::Update(const SimulationTime& simulation_time) { if (!IsCalcEnabled()) return; @@ -85,7 +78,7 @@ void TimeSeriesFileOrbitPropagation::Update(const SimulationTime& simulation_tim // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - double medium_time_s = orbit_position_[0].GetTimeList()[4]; + double medium_time_s = orbit_position_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; if (diff_s > medium_time_s) { UpdateInterpolationInformation(); } @@ -93,15 +86,15 @@ void TimeSeriesFileOrbitPropagation::Update(const SimulationTime& simulation_tim return; } -size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const SimulationTime& simulation_time) { +size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current_time_jd) { size_t nearest_epoch_id = 0; // Get start ephemeris time - SpiceDouble start_et = simulation_time.GetCurrentEphemerisTime(); + double start_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; // Get the nearest epoch ID for (size_t i = 0; i < time_series_data_.size(); i++) { - if (start_et < time_series_data_[i][0]) { + if (start_ephemris_time < time_series_data_[i][0]) { nearest_epoch_id = i; break; } @@ -117,120 +110,83 @@ time_system::DateTime TimeSeriesFileOrbitPropagation::GetEpochData(const size_t return epoch_[epoch_id]; } +void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const double current_time_jd) { + UNUSED(end_time_s); -math::Vector<3> TimeSeriesFileOrbitPropagation::GetPosition(const time_system::EpochTime time) const { - IniAccess ini_file(ini_file_name_); - char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; + if (!is_calc_enabled_) return; - time_system::EpochTime target_time; + // Get time + int year, month, day, hour, minute; + double second; + SpiceChar current_utc_char[80]; + double current_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; + et2utc_c(current_ephemris_time, "ISOC", 2, 80, current_utc_char); + sscanf(current_utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); + time_system::DateTime current_date_time(year, month, day, hour,minute, second); + current_epoch_time_ = time_system::EpochTime(current_date_time); - if (time.GetTime_s() == 0) { - target_time = current_epoch_time_; - } else { - target_time = time; + // Check interpolation update + double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double medium_time_s = orbit_position_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; + if (diff_s > medium_time_s) { + UpdateInterpolationInformation(); } - - double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); - - if (ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL") { - return orbit_position_[0].CalcPositionOrVelocityWithPolynomial(diff_s); - } else if (ini_file.ReadString(section, "interpolation_method") == "TRIGONOMETRIC") { - return orbit_position_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / ini_file.ReadDouble(section, "orbital_period_correction")); + if (diff_s < 0.0) { + std::cout << "[ERROR] Time is out of range of time serise file." << std::endl; + for (size_t i = 0; i < 3; i++) { + spacecraft_position_i_m_[i] = time_series_data_[0][i + 1]; + spacecraft_velocity_i_m_s_[i] = time_series_data_[0][i + 4]; + } + } else if (diff_s > 1e6 || reference_interpolation_id_ >= time_series_data_.size()) { + std::cout << "[ERROR] Time is out of range of time serise file." << std::endl; + for (size_t i = 0; i < 3; i++) { + spacecraft_position_i_m_[i] = time_series_data_[time_series_data_.size() - 1][i + 1]; + spacecraft_velocity_i_m_s_[i] = time_series_data_[time_series_data_.size() - 1][i + 4]; + } } else { - return math::Vector<3>(0.0); - } -} - -math::Vector<3> TimeSeriesFileOrbitPropagation::GetVelocity(const time_system::EpochTime time) const { - IniAccess ini_file(ini_file_name_); - char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; - - time_system::EpochTime target_time; - - if (time.GetTime_s() == 0) { - target_time = current_epoch_time_; + math::Vector<3> orbit_position; + math::Vector<3> orbit_velocity; + if (interpolation_method_ == 0) { + orbit_position = orbit_position_[0].CalcPositionOrVelocityWithPolynomial(diff_s); + orbit_velocity = orbit_velocity_[0].CalcPositionOrVelocityWithPolynomial(diff_s); + } else if (interpolation_method_ == 1) { + orbit_position = orbit_position_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / orbital_period_correction_); + orbit_velocity = orbit_velocity_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / orbital_period_correction_); } else { - target_time = time; + std::cerr << "[ERROR] Interpolation method: " << interpolation_method_ << " is not defined!" << std::endl; + std::cerr << "The orbit mode is automatically set as Polynomial" << std::endl; + orbit_position = orbit_position_[0].CalcPositionOrVelocityWithPolynomial(diff_s); + orbit_velocity = orbit_velocity_[0].CalcPositionOrVelocityWithPolynomial(diff_s); + } + for (size_t i = 0; i < 3; i++) { + spacecraft_position_i_m_[i] = orbit_position[i]; + spacecraft_velocity_i_m_s_[i] = orbit_velocity[i]; } - - double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); - - if (ini_file.ReadString(section, "interpolation_method") == "POLYNOMIAL") { - return orbit_velocity_[0].CalcPositionOrVelocityWithPolynomial(diff_s); - } else if (ini_file.ReadString(section, "interpolation_method") == "TRIGONOMETRIC") { - return orbit_velocity_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / ini_file.ReadDouble(section, "orbital_period_correction")); - } else { - return math::Vector<3>(0.0); } + TransformEciToEcef(); + TransformEcefToGeodetic(); } bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { - time_system::EpochTime time_series_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); - double time_diff_s = time_series_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - math::Vector<3> time_series_position; - math::Vector<3> time_series_velocity; - time_series_position[0] = time_series_data_[reference_interpolation_id_][1]; - time_series_position[1] = time_series_data_[reference_interpolation_id_][2]; - time_series_position[2] = time_series_data_[reference_interpolation_id_][3]; - time_series_velocity[0] = time_series_data_[reference_interpolation_id_][4]; - time_series_velocity[1] = time_series_data_[reference_interpolation_id_][5]; - time_series_velocity[2] = time_series_data_[reference_interpolation_id_][6]; - - orbit_position_[0].PushAndPopData(time_diff_s, time_series_position); - orbit_velocity_[0].PushAndPopData(time_diff_s, time_series_velocity); + time_system::EpochTime time_series_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + double time_diff_s = time_series_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + if (reference_interpolation_id_ >= time_series_data_.size()) { + std::cout << "[ERROR] Time is out of range." << std::endl; + for (size_t i = 0; i < 3; i++) { + spacecraft_position_i_m_[i] = time_series_data_[time_series_data_.size() - 1][i + 1]; + spacecraft_velocity_i_m_s_[i] = time_series_data_[time_series_data_.size() - 1][i + 4]; + } + } else { + for (size_t i = 0; i < 3; i++) { + spacecraft_position_i_m_[i] = time_series_data_[reference_interpolation_id_][i + 1]; + spacecraft_velocity_i_m_s_[i] = time_series_data_[reference_interpolation_id_][i + 4]; + } + } + + orbit_position_[0].PushAndPopData(time_diff_s, spacecraft_position_i_m_); + orbit_velocity_[0].PushAndPopData(time_diff_s, spacecraft_velocity_i_m_s_); reference_interpolation_id_++; return true; } - -std::string TimeSeriesFileOrbitPropagation::GetLogHeader() const { - IniAccess ini_file(ini_file_name_); - char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; - - std::string str_tmp = ""; - - str_tmp += WriteVector("spacecraft_position_with_definition_file", ini_file.ReadString(section, "coordinate_system"), ini_file.ReadString(section, "unit"), 3); - str_tmp += WriteVector("spacecraft_velocity_with_definition_file", ini_file.ReadString(section, "coordinate_system"), ini_file.ReadString(section, "unit"), 3); - - return str_tmp; -} - -std::string TimeSeriesFileOrbitPropagation::GetLogValue() const { - std::string str_tmp = ""; - - str_tmp += WriteVector(GetPosition(), 16); - str_tmp += WriteVector(GetVelocity(), 16); - - return str_tmp; -} - -TimeSeriesFileOrbitPropagation* InitTimeSeriesFileOrbitPropagation(const std::string ini_file_name, const SimulationTime& simulation_time) { - IniAccess ini_file(ini_file_name); - char section[] = "TIME_SERIES_FILE_ORBIT_PROPAGATION"; - - const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); - const bool is_log_enable = ini_file.ReadEnable(section, INI_LOG_LABEL); - - TimeSeriesFileOrbitPropagation* time_series_file_orbit_propagation = new TimeSeriesFileOrbitPropagation(is_calc_enable, is_log_enable); - if (!time_series_file_orbit_propagation->IsCalcEnabled()) { - return time_series_file_orbit_propagation; - } - - const std::string time_series_file_path = ini_file.ReadString(section, "time_series_file_path"); - - std::vector> time_series_data; - if (!time_series_file_orbit_propagation->ReadTimeSeriesCsv(time_series_file_path, time_series_data)) { - return time_series_file_orbit_propagation; - } - - time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), - (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), - (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); - time_system::EpochTime start_epoch_time(start_date_time); - time_series_file_orbit_propagation->Initialize(ini_file_name, time_series_data, start_epoch_time, simulation_time); - - return time_series_file_orbit_propagation; -} diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 9dac7a833..006327c3c 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -14,6 +14,8 @@ #include "environment/global/simulation_time.hpp" +#include "orbit.hpp" + /** *@struct TimeSeriesData *@brief Time series data of orbit @@ -33,22 +35,15 @@ * @class TimeSeriesFileOrbitPropagation * @brief Class to calculate satellite orbit using interpolation with orbit time series input */ -class TimeSeriesFileOrbitPropagation : public ILoggable { +class TimeSeriesFileOrbitPropagation : public Orbit { public: /** *@fn TimeSeriesFileOrbitPropagation *@brief Constructor - * @param [in] is_calc_enabled: Flag to manage the orbit calculation - * @param [in] is_log_enabled: Flag to generate the log of orbit calculation + * @param [in] celestial_information: Celestial information + * @param [in] current_time_jd: Current Julian day [day] */ - TimeSeriesFileOrbitPropagation(const bool is_calc_enabled = false, const bool is_log_enabled = false) - : is_calc_enabled_(is_calc_enabled) { - if (!is_calc_enabled_) { - is_log_enabled_ = false; - } else { - is_log_enabled_ = is_log_enabled; - } - } + TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, int interpolation_method, double orbital_period_correction, const double current_time_jd); /** *@fn ~TimeSeriesFileOrbitPropagation @@ -103,9 +98,9 @@ class TimeSeriesFileOrbitPropagation : public ILoggable { /** * @fn SearchNearestEpochId * @brief Search the nearest epoch ID from the orbit definition data. - * @param simulation_time The simulation time information. + * @param current_time_jd: Current Julian day [day] */ - size_t SearchNearestEpochId(const SimulationTime& simulation_time); + size_t SearchNearestEpochId(const double current_time_jd); /** * @fn Update @@ -132,23 +127,21 @@ class TimeSeriesFileOrbitPropagation : public ILoggable { */ inline math::Vector<3> GetVelocity(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; - // Override ILoggable - /** - * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable - */ - std::string GetLogHeader() const override; + // Override Orbit /** - * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @fn Propagate + * @brief Propagate orbit + * @param [in] end_time_s: End time of simulation [sec] + * @param [in] current_time_jd: Current Julian day [day] */ - std::string GetLogValue() const override; + virtual void Propagate(const double end_time_s, const double current_time_jd); private: - bool is_calc_enabled_ = false; //!< Flag to manage the orbit calculation + int number_of_interpolation_; //!< Number of interpolation + int interpolation_method_; //!< Interpolation method + double orbital_period_correction_; //!< Orbital period correction std::vector epoch_; //!< Epoch data list - std::string ini_file_name_; //!< Path to the initialize file std::vector> time_series_data_; //!< List of orbit definition data time_system::EpochTime current_epoch_time_; //!< The last updated time time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index ae46c34ac..0e89b2346 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -14,7 +14,6 @@ GlobalEnvironment::~GlobalEnvironment() { delete celestial_information_; delete hipparcos_catalogue_; delete gnss_satellites_; - delete time_series_file_orbit_propagation_; } void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration) { @@ -27,7 +26,6 @@ void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_con simulation_time_ = InitSimulationTime(simulation_time_ini_path); hipparcos_catalogue_ = InitHipparcosCatalogue(simulation_configuration->initialize_base_file_name_); gnss_satellites_ = InitGnssSatellites(simulation_configuration->gnss_file_, celestial_information_->GetEarthRotation(), *simulation_time_); - time_series_file_orbit_propagation_ = InitTimeSeriesFileOrbitPropagation(simulation_configuration->time_series_file_, *simulation_time_); // Calc initial value celestial_information_->UpdateAllObjectsInformation(*simulation_time_); @@ -37,14 +35,12 @@ void GlobalEnvironment::Update() { simulation_time_->UpdateTime(); celestial_information_->UpdateAllObjectsInformation(*simulation_time_); gnss_satellites_->Update(*simulation_time_); - time_series_file_orbit_propagation_->Update(*simulation_time_); } void GlobalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(simulation_time_); logger.AddLogList(celestial_information_); logger.AddLogList(gnss_satellites_); - logger.AddLogList(time_series_file_orbit_propagation_); } void GlobalEnvironment::Reset(void) { simulation_time_->ResetClock(); } diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index 0978897ac..b5af66a6e 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -81,7 +81,6 @@ class GlobalEnvironment { CelestialInformation* celestial_information_; //!< Celestial bodies information HipparcosCatalogue* hipparcos_catalogue_; //!< Hipparcos catalogue GnssSatellites* gnss_satellites_; //!< GNSS satellites - TimeSeriesFileOrbitPropagation* time_series_file_orbit_propagation_; //!< Orbit calculation with definition file }; #endif // S2E_ENVIRONMENT_GLOBAL_GLOBAL_ENVIRONMENT_HPP_ diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index a2fa849b7..1a19dd003 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -100,7 +100,6 @@ void SimulationCase::InitializeSimulationConfiguration(const std::string initial // Others simulation_configuration_.inter_sc_communication_file_ = simulation_base_ini.ReadString(section, "inter_sat_comm_file"); simulation_configuration_.gnss_file_ = simulation_base_ini.ReadString(section, "gnss_file"); - simulation_configuration_.time_series_file_ = simulation_base_ini.ReadString(section, "time_series_file"); // Global Environment global_environment_ = new GlobalEnvironment(&simulation_configuration_); diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index 7bc63b669..28b6f74f0 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -27,7 +27,6 @@ struct SimulationConfiguration { std::string inter_sc_communication_file_; //!< File name for inter-satellite communication initialization std::string gnss_file_; //!< File name for GNSS initialization - std::string time_series_file_; //!< File name for orbit calculation initialization /** * @fn ~SimulationConfiguration From 4e2a7f18ddd0c1496ac65263c010062f19d53753 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 27 Sep 2024 01:40:27 +0900 Subject: [PATCH 400/456] Refactor shadow check in Node::CalcAlbedoRadiation_W method --- src/dynamics/thermal/node.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index bc101e498..8660507c4 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -45,7 +45,6 @@ double Node::CalcAlbedoRadiation_W(math::Vector<3> earth_position_b_m, double ea math::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); double earth_distance_m = earth_position_b_m.CalcNorm(); - // check if satellite is outside of the earth's shadow double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); // albedo radiation calculation; earth_albedo_W_m2 reflects the shadow coefficient. From 72d328c8b29c10c792eb073c5ce3908dbbeb7b15 Mon Sep 17 00:00:00 2001 From: kai0722 Date: Fri, 27 Sep 2024 01:42:08 +0900 Subject: [PATCH 401/456] Refactor shadow check in Node::CalcAlbedoRadiation_W method --- src/dynamics/thermal/node.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 8660507c4..48f6d9232 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -43,7 +43,6 @@ double Node::CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_ double Node::CalcAlbedoRadiation_W(math::Vector<3> earth_position_b_m, double earth_albedo_W_m2) { math::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); - double earth_distance_m = earth_position_b_m.CalcNorm(); double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); From 9cb46ca72d69c2eab6a2924b0e260db8f9769fa6 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 13:07:15 +0900 Subject: [PATCH 402/456] modify function and variable names --- src/environment/global/gnss_satellites.cpp | 2 +- .../orbit/interpolation_orbit.cpp | 31 +++++++------- .../orbit/interpolation_orbit.hpp | 40 +++++++++---------- .../orbit/test_interpolation_orbit.cpp | 2 +- 4 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 6f41f2520..21749c9aa 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -89,7 +89,7 @@ math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_i if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[gnss_satellite_id].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); + return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); } double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time) const { diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index 818029a93..9b3a50e31 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -10,18 +10,18 @@ namespace orbit { InterpolationOrbit::InterpolationOrbit(const size_t degree) { std::vector time; time.assign(degree, -1.0); - std::vector position_or_velocity; - position_or_velocity.assign(degree, 0.0); - math::Interpolation temp(time, position_or_velocity); + std::vector position; + position.assign(degree, 0.0); + math::Interpolation temp(time, position); for (size_t axis = 0; axis < 3; axis++) { - interpolation_position_or_velocity.push_back(temp); + interpolation_position_.push_back(temp); } } -bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position_or_velocity) { +bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position) { bool result; for (size_t axis = 0; axis < 3; axis++) { - result = interpolation_position_or_velocity[axis].PushAndPopData(time, position_or_velocity[axis]); + result = interpolation_position_[axis].PushAndPopData(time, position[axis]); if (result == false) { return false; } @@ -29,20 +29,19 @@ bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> return true; } -math::Vector<3> InterpolationOrbit::CalcPositionOrVelocityWithTrigonometric(const double time, const double period) const { - math::Vector<3> output_position_or_velocity; +math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { + math::Vector<3> output_position; for (size_t axis = 0; axis < 3; axis++) { - output_position_or_velocity[axis] = interpolation_position_or_velocity[axis].CalcTrigonometric(time, period); + output_position[axis] = interpolation_position_[axis].CalcTrigonometric(time, period); } - return output_position_or_velocity; + return output_position; } -math::Vector<3> InterpolationOrbit::CalcPositionOrVelocityWithPolynomial(const double time) const { - math::Vector<3> output_position_or_velocity; +math::Vector<3> InterpolationOrbit::CalcPositionWithPolynomial(const double time) const { + math::Vector<3> output_position; for (size_t axis = 0; axis < 3; axis++) { - output_position_or_velocity[axis] = interpolation_position_or_velocity[axis].CalcPolynomial(time); + output_position[axis] = interpolation_position_[axis].CalcPolynomial(time); } - return output_position_or_velocity; + return output_position; } - -} // namespace orbit +} // namespace orbit \ No newline at end of file diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index 17d9acd05..f99a3d152 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -15,7 +15,7 @@ namespace orbit { /** * @class InterpolationOrbit * @brief Orbit calculation with mathematical interpolation - * @note Coordinate and unit of position or velocityis defined by users of this function + * @note Coordinate and unit of position is defined by users of this function */ class InterpolationOrbit { public: @@ -30,55 +30,55 @@ class InterpolationOrbit { * @fn PushAndPopData * @brief Add new data to the tail of the list and erase the head data * @param [in] time: time of the new data - * @param [in] position: Satellite position or velocity of the new data + * @param [in] position: Satellite position of the new data */ - bool PushAndPopData(const double time, const math::Vector<3> position_or_velocity); + bool PushAndPopData(const double time, const math::Vector<3> position); /** - * @fn CalcPositionOrVelocityWithTrigonometric - * @brief Calculate interpolated position position or velocity with trigonometric method + * @fn CalcPositionWithTrigonometric + * @brief Calculate interpolated position with trigonometric method * @param [in] time: time * @param [in] period: Characteristic period - * @return Calculated position or velocity + * @return Calculated position */ - math::Vector<3> CalcPositionOrVelocityWithTrigonometric(const double time, const double period = 0.0) const; + math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; /** - * @fn CalcPositionOrVelocityWithPolynomial - * @brief Calculate interpolated position or velocity with polynomial method + * @fn CalcPositionWithPolynomial + * @brief Calculate interpolated position with polynomial method * @param [in] time: time - * @return Calculated position or velocity + * @return Calculated position */ - math::Vector<3> CalcPositionOrVelocityWithPolynomial(const double time) const; + math::Vector<3> CalcPositionWithPolynomial(const double time) const; // Getters /** * @fn GetDegree * @return Degree of interpolation */ - inline size_t GetDegree() const { return interpolation_position_or_velocity[0].GetDegree(); } + inline size_t GetDegree() const { return interpolation_position_[0].GetDegree(); } /** * @fn GetTimeList * @return Time list registered for the interpolation */ - inline std::vector GetTimeList() const { return interpolation_position_or_velocity[0].GetIndependentVariables(); } + inline std::vector GetTimeList() const { return interpolation_position_[0].GetIndependentVariables(); } /** * @fn GetTimeList - * @param[in] axis: Axis of position or velocity[0, 2] - * @return Position or velocity list registered for the interpolation + * @param[in] axis: Axis of position [0, 2] + * @return Position list registered for the interpolation * @note return id=2 data when the input axis is over 3. */ - inline std::vector GetPositionOrVelocityDataList(const size_t axis) const { + inline std::vector GetPositionDataList(const size_t axis) const { if (axis > 3) { - return interpolation_position_or_velocity[2].GetDependentVariables(); + return interpolation_position_[2].GetDependentVariables(); } - return interpolation_position_or_velocity[axis].GetDependentVariables(); + return interpolation_position_[axis].GetDependentVariables(); } private: - std::vector interpolation_position_or_velocity; // 3D vector of interpolation + std::vector interpolation_position_; // 3D vector of interpolation }; } // namespace orbit -#endif // S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ +#endif // S2E_LIBRARY_ORBIT_INTERPOLATION_ORBIT_HPP_ \ No newline at end of file diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index acc050298..d7fe51c67 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -40,7 +40,7 @@ TEST(InterpolationOrbit, PushAndPop) { for (size_t i = 0; i < degree; i++) { EXPECT_DOUBLE_EQ((double)i, interpolation_orbit.GetTimeList()[i]); for (size_t axis = 0; axis < 3; axis++) { - EXPECT_DOUBLE_EQ(2.0 * i, interpolation_orbit.GetPositionOrVelocityDataList(axis)[i]); + EXPECT_DOUBLE_EQ(2.0 * i, interpolation_orbit.GetPositionDataList(axis)[i]); } } From 6a437ec9155b6abd2d3ddf345bcf2d3d0975d9a8 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 13:55:03 +0900 Subject: [PATCH 403/456] Add s2e::components namespace for base --- src/components/base/component.cpp | 4 ++++ src/components/base/component.hpp | 4 ++++ src/components/base/gpio_connection_with_obc.cpp | 4 ++++ src/components/base/gpio_connection_with_obc.hpp | 4 ++++ src/components/base/i2c_controller.cpp | 5 +++++ src/components/base/i2c_controller.hpp | 4 ++++ src/components/base/i2c_target_communication_with_obc.cpp | 4 ++++ src/components/base/i2c_target_communication_with_obc.hpp | 4 ++++ src/components/base/interface_gpio_component.hpp | 4 ++++ src/components/base/interface_tickable.hpp | 4 ++++ src/components/base/sensor.hpp | 4 ++++ src/components/base/sensor_template_functions.hpp | 4 ++++ src/components/base/uart_communication_with_obc.cpp | 4 ++++ src/components/base/uart_communication_with_obc.hpp | 4 ++++ 14 files changed, 57 insertions(+) diff --git a/src/components/base/component.cpp b/src/components/base/component.cpp index 82fdf14c9..df61cb1ce 100644 --- a/src/components/base/component.cpp +++ b/src/components/base/component.cpp @@ -5,6 +5,8 @@ #include "component.hpp" +namespace s2e::components { + Component::Component(const unsigned int prescaler, ClockGenerator* clock_generator, const unsigned int fast_prescaler) : clock_generator_(clock_generator) { power_port_ = new PowerPort(); @@ -48,3 +50,5 @@ void Component::FastTick(const unsigned int fast_count) { PowerOffRoutine(); } } + +} // namespace s2e::components diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 91432e1f3..72dbf6c6c 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -12,6 +12,8 @@ #include "interface_tickable.hpp" +namespace s2e::components { + /** * @class Component * @brief Base class for component emulation. All components have to inherit this. @@ -88,4 +90,6 @@ class Component : public ITickable { PowerPort* power_port_; //!< Power port }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_COMPONENT_HPP_ diff --git a/src/components/base/gpio_connection_with_obc.cpp b/src/components/base/gpio_connection_with_obc.cpp index 7a3024a66..7b87659b0 100644 --- a/src/components/base/gpio_connection_with_obc.cpp +++ b/src/components/base/gpio_connection_with_obc.cpp @@ -6,6 +6,8 @@ #include "gpio_connection_with_obc.hpp" +namespace s2e::components { + GpioConnectionWithObc::GpioConnectionWithObc(const std::vector port_id, OnBoardComputer* obc) : port_id_(port_id), obc_(obc) { for (size_t i = 0; i < port_id_.size(); i++) { obc_->GpioConnectPort(port_id_[i]); @@ -17,3 +19,5 @@ GpioConnectionWithObc::~GpioConnectionWithObc() {} bool GpioConnectionWithObc::Read(const int index) { return obc_->GpioComponentRead(port_id_[index]); } void GpioConnectionWithObc::Write(const int index, const bool is_high) { obc_->GpioComponentWrite(port_id_[index], is_high); } + +} // namespace s2e::components diff --git a/src/components/base/gpio_connection_with_obc.hpp b/src/components/base/gpio_connection_with_obc.hpp index 397456674..b066b1f38 100644 --- a/src/components/base/gpio_connection_with_obc.hpp +++ b/src/components/base/gpio_connection_with_obc.hpp @@ -9,6 +9,8 @@ #include "../real/cdh/on_board_computer.hpp" +namespace s2e::components { + /** * @class GpioConnectionWithObc * @brief Base class for GPIO communication with OBC flight software @@ -50,4 +52,6 @@ class GpioConnectionWithObc { OnBoardComputer* obc_; //!< The communication target OBC }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_GPIO_CONNECTION_WITH_OBC_HPP_ diff --git a/src/components/base/i2c_controller.cpp b/src/components/base/i2c_controller.cpp index 64e1429ba..6cc80c056 100644 --- a/src/components/base/i2c_controller.cpp +++ b/src/components/base/i2c_controller.cpp @@ -7,6 +7,9 @@ #include #include + +namespace s2e::components { + I2cController::I2cController(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager) : hils_port_id_(hils_port_id), @@ -48,3 +51,5 @@ int I2cController::SendCommand(const unsigned char length) { if (simulation_mode_ != SimulationMode::kHils) return -1; return hils_port_manager_->I2cControllerSend(hils_port_id_, &tx_buffer_.front(), 0, length); } + +} // namespace s2e::components diff --git a/src/components/base/i2c_controller.hpp b/src/components/base/i2c_controller.hpp index 62f59e480..bd1e5e2d2 100644 --- a/src/components/base/i2c_controller.hpp +++ b/src/components/base/i2c_controller.hpp @@ -9,6 +9,8 @@ #include "../../simulation/hils/hils_port_manager.hpp" #include "uart_communication_with_obc.hpp" +namespace s2e::components { + /** * @class I2cController * @brief This class simulates the I2C Controller communication with the I2C Target. @@ -64,4 +66,6 @@ class I2cController { HilsPortManager* hils_port_manager_; //!< HILS port manager }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_I2C_CONTROLLER_HPP_ diff --git a/src/components/base/i2c_target_communication_with_obc.cpp b/src/components/base/i2c_target_communication_with_obc.cpp index a4b7cc4fe..a916b0df7 100644 --- a/src/components/base/i2c_target_communication_with_obc.cpp +++ b/src/components/base/i2c_target_communication_with_obc.cpp @@ -6,6 +6,8 @@ #include +namespace s2e::components { + I2cTargetCommunicationWithObc::I2cTargetCommunicationWithObc(const unsigned int sils_port_id, const unsigned char i2c_address, OnBoardComputer* obc) : sils_port_id_(sils_port_id), i2c_address_(i2c_address), obc_(obc) { #ifdef USE_HILS @@ -163,3 +165,5 @@ int I2cTargetCommunicationWithObc::StoreTelemetry(const unsigned int stored_fram } return 0; } + +} // namespace s2e::components diff --git a/src/components/base/i2c_target_communication_with_obc.hpp b/src/components/base/i2c_target_communication_with_obc.hpp index 12ff9a4ac..4d017aafe 100644 --- a/src/components/base/i2c_target_communication_with_obc.hpp +++ b/src/components/base/i2c_target_communication_with_obc.hpp @@ -10,6 +10,8 @@ #include "../real/cdh/on_board_computer.hpp" #include "uart_communication_with_obc.hpp" +namespace s2e::components { + /** * @class I2cTargetCommunicationWithObc * @brief Base class for I2C communication as target side with OBC flight software @@ -121,4 +123,6 @@ class I2cTargetCommunicationWithObc { HilsPortManager* hils_port_manager_; //!< HILS port manager }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_I2C_TARGET_COMMUNICATION_WITH_OBC_HPP_ diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 7ed129e7b..9df3db260 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -6,6 +6,8 @@ #ifndef S2E_COMPONENTS_BASE_CLASSES_INTERFACE_GPIO_COMPONENT_HPP_ #define S2E_COMPONENTS_BASE_CLASSES_INTERFACE_GPIO_COMPONENT_HPP_ +namespace s2e::components { + /** * @class IGPIOCompo * @brief Interface class for components which have GPIO port @@ -27,4 +29,6 @@ class IGPIOCompo { virtual void GpioStateChanged(const int port_id, const bool is_positive_edge) = 0; }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_CLASSES_INTERFACE_GPIO_COMPONENT_HPP_ diff --git a/src/components/base/interface_tickable.hpp b/src/components/base/interface_tickable.hpp index 3d7171aeb..401c5d87b 100644 --- a/src/components/base/interface_tickable.hpp +++ b/src/components/base/interface_tickable.hpp @@ -6,6 +6,8 @@ #ifndef S2E_COMPONENTS_BASE_CLASSES_INTERFACE_TICKABLE_HPP_ #define S2E_COMPONENTS_BASE_CLASSES_INTERFACE_TICKABLE_HPP_ +namespace s2e::components { + /** * @class ITickable * @brief Interface class for time update of components @@ -40,4 +42,6 @@ class ITickable { bool needs_fast_update_ = false; //!< Whether or not high-frequency disturbances need to be calculated }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_CLASSES_INTERFACE_TICKABLE_HPP_ diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 43fabd0cf..38f2a9075 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + /** * @class Sensor * @brief Base class for sensor emulation to add noises @@ -85,6 +87,8 @@ template Sensor ReadSensorInformation(const std::string file_name, const double step_width_s, const std::string component_name, const std::string unit = ""); +} // namespace s2e::components + #include "./sensor_template_functions.hpp" #endif // S2E_COMPONENTS_BASE_SENSOR_HPP_ diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index b0e4f0300..31c761393 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + template Sensor::Sensor(const s2e::math::Matrix& scale_factor, const s2e::math::Vector& range_to_const_c, const s2e::math::Vector& range_to_zero_c, const s2e::math::Vector& bias_noise_c, const s2e::math::Vector& normal_random_standard_deviation_c, @@ -121,4 +123,6 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w return sensor_base; } +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_SENSOR_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/components/base/uart_communication_with_obc.cpp b/src/components/base/uart_communication_with_obc.cpp index 47df421d4..41bb777fd 100644 --- a/src/components/base/uart_communication_with_obc.cpp +++ b/src/components/base/uart_communication_with_obc.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int sils_port_id, OnBoardComputer* obc) : sils_port_id_(sils_port_id), obc_(obc) { #ifdef USE_HILS simulation_mode_ = SimulationMode::kError; @@ -173,3 +175,5 @@ int UartCommunicationWithObc::SendTelemetry(const unsigned int offset) { return -1; } } + +} // namespace s2e::components diff --git a/src/components/base/uart_communication_with_obc.hpp b/src/components/base/uart_communication_with_obc.hpp index 0db74815b..6cb45c5df 100644 --- a/src/components/base/uart_communication_with_obc.hpp +++ b/src/components/base/uart_communication_with_obc.hpp @@ -10,6 +10,8 @@ #include "../real/cdh/on_board_computer.hpp" +namespace s2e::components { + /** * @enum SimulationMode * @brief Simulation mode (SILS or HILS) @@ -129,4 +131,6 @@ class UartCommunicationWithObc { virtual int GenerateTelemetry() = 0; }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_BASE_UART_COMMUNICATION_WITH_OBC_HPP_ From 684d0d602592daa5accd22f07d963ccd8f75379d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 13:56:55 +0900 Subject: [PATCH 404/456] Add s2e::components namespace for examples --- src/components/examples/example_change_structure.cpp | 4 ++++ src/components/examples/example_change_structure.hpp | 4 ++++ src/components/examples/example_i2c_controller_for_hils.cpp | 4 ++++ src/components/examples/example_i2c_controller_for_hils.hpp | 4 ++++ src/components/examples/example_i2c_target_for_hils.cpp | 4 ++++ src/components/examples/example_i2c_target_for_hils.hpp | 4 ++++ .../examples/example_serial_communication_for_hils.cpp | 4 ++++ .../examples/example_serial_communication_for_hils.hpp | 4 ++++ .../examples/example_serial_communication_with_obc.cpp | 4 ++++ .../examples/example_serial_communication_with_obc.hpp | 4 ++++ 10 files changed, 40 insertions(+) diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index bc28f4547..9f1d6d051 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + ExampleChangeStructure::ExampleChangeStructure(ClockGenerator* clock_generator, Structure* structure) : Component(1, clock_generator), structure_(structure) {} @@ -54,3 +56,5 @@ std::string ExampleChangeStructure::GetLogValue() const { return str_tmp; } + +} // namespace s2e::components diff --git a/src/components/examples/example_change_structure.hpp b/src/components/examples/example_change_structure.hpp index 31d656c92..93d749b61 100644 --- a/src/components/examples/example_change_structure.hpp +++ b/src/components/examples/example_change_structure.hpp @@ -11,6 +11,8 @@ #include "../base/component.hpp" +namespace s2e::components { + /** * @class ExampleChangeStructure * @brief Class to show an example to change satellite structure information @@ -53,4 +55,6 @@ class ExampleChangeStructure : public Component, public ILoggable { Structure* structure_; //!< Structure information }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_EXAMPLES_EXAMPLE_CHANGE_STRUCTURE_HPP_ diff --git a/src/components/examples/example_i2c_controller_for_hils.cpp b/src/components/examples/example_i2c_controller_for_hils.cpp index 1924ec1c8..b4f2bace1 100644 --- a/src/components/examples/example_i2c_controller_for_hils.cpp +++ b/src/components/examples/example_i2c_controller_for_hils.cpp @@ -4,6 +4,8 @@ */ #include "example_i2c_controller_for_hils.hpp" +namespace s2e::components { + ExampleI2cControllerForHils::ExampleI2cControllerForHils(const int prescaler, ClockGenerator* clock_generator, const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager) @@ -54,3 +56,5 @@ void ExampleI2cControllerForHils::Receive() { std::cout << std::endl; return; } + +} // namespace s2e::components diff --git a/src/components/examples/example_i2c_controller_for_hils.hpp b/src/components/examples/example_i2c_controller_for_hils.hpp index 51b948708..1e5796c39 100644 --- a/src/components/examples/example_i2c_controller_for_hils.hpp +++ b/src/components/examples/example_i2c_controller_for_hils.hpp @@ -11,6 +11,8 @@ #include "../base/component.hpp" #include "../base/i2c_controller.hpp" +namespace s2e::components { + /** * @class ExampleI2cControllerForHils * @brief Example of component emulation for I2C controller side communication in HILS environment @@ -65,4 +67,6 @@ class ExampleI2cControllerForHils : public Component, public I2cController { static const uint8_t kCmdFooter_ = 0x50; //!< 'P' Footer for SC18IM700 }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_EXAMPLES_EXAMPLE_I2C_CONTROLLER_FOR_HILS_HPP_ diff --git a/src/components/examples/example_i2c_target_for_hils.cpp b/src/components/examples/example_i2c_target_for_hils.cpp index 3ec63ed3e..0fc2a2380 100644 --- a/src/components/examples/example_i2c_target_for_hils.cpp +++ b/src/components/examples/example_i2c_target_for_hils.cpp @@ -5,6 +5,8 @@ #include "example_i2c_target_for_hils.hpp" +namespace s2e::components { + ExampleI2cTargetForHils::ExampleI2cTargetForHils(const int prescaler, ClockGenerator* clock_generator, const int sils_port_id, unsigned char i2c_address, OnBoardComputer* obc, const unsigned int hils_port_id, HilsPortManager* hils_port_manager) @@ -39,3 +41,5 @@ void ExampleI2cTargetForHils::MainRoutine(const int time_count) { return; } + +} // namespace s2e::components diff --git a/src/components/examples/example_i2c_target_for_hils.hpp b/src/components/examples/example_i2c_target_for_hils.hpp index 9c486995f..ca03d3690 100644 --- a/src/components/examples/example_i2c_target_for_hils.hpp +++ b/src/components/examples/example_i2c_target_for_hils.hpp @@ -11,6 +11,8 @@ #include "../base/component.hpp" #include "../base/i2c_target_communication_with_obc.hpp" +namespace s2e::components { + /** * @class ExampleI2cTargetForHils * @brief Example of component emulation for I2C target side communication in HILS environment @@ -54,4 +56,6 @@ class ExampleI2cTargetForHils : public Component, public I2cTargetCommunicationW const unsigned char kNumAlphabet = 26; //!< Number of alphabet }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_EXAMPLES_EXAMPLE_I2C_TARGET_FOR_HILS_HPP_ diff --git a/src/components/examples/example_serial_communication_for_hils.cpp b/src/components/examples/example_serial_communication_for_hils.cpp index fe0b9b3d8..d4890360d 100644 --- a/src/components/examples/example_serial_communication_for_hils.cpp +++ b/src/components/examples/example_serial_communication_for_hils.cpp @@ -6,6 +6,8 @@ #include +namespace s2e::components { + ExampleSerialCommunicationForHils::ExampleSerialCommunicationForHils(ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, const unsigned int baud_rate, HilsPortManager* hils_port_manager, const int mode_id) @@ -59,3 +61,5 @@ void ExampleSerialCommunicationForHils::MainRoutine(const int time_count) { ReceiveCommand(0, kMemorySize); SendTelemetry(0); } + +} // namespace s2e::components diff --git a/src/components/examples/example_serial_communication_for_hils.hpp b/src/components/examples/example_serial_communication_for_hils.hpp index 682d4afe0..2393fa2c5 100644 --- a/src/components/examples/example_serial_communication_for_hils.hpp +++ b/src/components/examples/example_serial_communication_for_hils.hpp @@ -11,6 +11,8 @@ #include "../base/component.hpp" #include "../base/uart_communication_with_obc.hpp" +namespace s2e::components { + /** * @class ExampleSerialCommunicationForHils * @brief Example of component emulation for communication in HILS environment @@ -71,4 +73,6 @@ class ExampleSerialCommunicationForHils : public Component, public UartCommunica int GenerateTelemetry() override; }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_EXAMPLES_EXAMPLE_SERIAL_COMMUNICATION_FOR_HILS_HPP_ diff --git a/src/components/examples/example_serial_communication_with_obc.cpp b/src/components/examples/example_serial_communication_with_obc.cpp index 4042fbcb1..b44138520 100644 --- a/src/components/examples/example_serial_communication_with_obc.cpp +++ b/src/components/examples/example_serial_communication_with_obc.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + ExampleSerialCommunicationWithObc::ExampleSerialCommunicationWithObc(ClockGenerator* clock_generator, int port_id, OnBoardComputer* obc) : Component(1000, clock_generator), UartCommunicationWithObc(port_id, obc) { Initialize(); @@ -54,3 +56,5 @@ void ExampleSerialCommunicationWithObc::MainRoutine(const int time_count) { void ExampleSerialCommunicationWithObc::GpioStateChanged(const int port_id, const bool is_positive_edge) { printf("interrupted. port id = %d, is positive edge = %d./n", port_id, is_positive_edge); } + +} // namespace s2e::components diff --git a/src/components/examples/example_serial_communication_with_obc.hpp b/src/components/examples/example_serial_communication_with_obc.hpp index a83eb4bcf..9a61c1ed0 100644 --- a/src/components/examples/example_serial_communication_with_obc.hpp +++ b/src/components/examples/example_serial_communication_with_obc.hpp @@ -12,6 +12,8 @@ #include "../base/interface_gpio_component.hpp" #include "../base/uart_communication_with_obc.hpp" +namespace s2e::components { + /** * @class ExampleSerialCommunicationWithObc * @brief Example of component emulation with communication between OBC flight software @@ -89,4 +91,6 @@ class ExampleSerialCommunicationWithObc : public Component, public UartCommunica int Initialize(); }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_EXAMPLES_EXAMPLE_SERIAL_COMMUNICATION_WITH_OBC_HPP_P_ From 085a95f9666efe6321bb4c7b0312b5e50c43d537 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 13:58:37 +0900 Subject: [PATCH 405/456] Add s2e::components namespace for ideal --- src/components/ideal/angular_velocity_observer.cpp | 4 ++++ src/components/ideal/angular_velocity_observer.hpp | 4 ++++ src/components/ideal/attitude_observer.cpp | 4 ++++ src/components/ideal/attitude_observer.hpp | 4 ++++ src/components/ideal/force_generator.cpp | 4 ++++ src/components/ideal/force_generator.hpp | 4 ++++ src/components/ideal/orbit_observer.cpp | 4 ++++ src/components/ideal/orbit_observer.hpp | 4 ++++ src/components/ideal/torque_generator.cpp | 4 ++++ src/components/ideal/torque_generator.hpp | 4 ++++ 10 files changed, 40 insertions(+) diff --git a/src/components/ideal/angular_velocity_observer.cpp b/src/components/ideal/angular_velocity_observer.cpp index 6ff33272f..d6a2bbcf3 100644 --- a/src/components/ideal/angular_velocity_observer.cpp +++ b/src/components/ideal/angular_velocity_observer.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + AngularVelocityObserver::AngularVelocityObserver(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude) : Component(prescaler, clock_generator), Sensor(sensor_base), attitude_(attitude) {} @@ -46,3 +48,5 @@ AngularVelocityObserver InitializeAngularVelocityObserver(ClockGenerator* clock_ return observer; } + +} // namespace s2e::components diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index bf22777ac..47bb4a404 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -12,6 +12,8 @@ #include "../base/component.hpp" #include "../base/sensor.hpp" +namespace s2e::components { + /* * @class AngularVelocityObserver * @brief Ideal component which can observe angular velocity @@ -75,4 +77,6 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg AngularVelocityObserver InitializeAngularVelocityObserver(ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, const Attitude& attitude); +} // namespace s2e::components + #endif // S2E_COMPONENTS_IDEAL_ANGULAR_VELOCITY_OBSERVER_HPP_ diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 26ffee05b..533a636c8 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::components { + AttitudeObserver::AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, const Attitude& attitude) : Component(prescaler, clock_generator), angle_noise_(0.0, standard_deviation_rad), attitude_(attitude) { @@ -62,3 +64,5 @@ AttitudeObserver InitializeAttitudeObserver(ClockGenerator* clock_generator, con return attitude_observer; } + +} // namespace s2e::components diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 1b80659d0..0bf1e973f 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -13,6 +13,8 @@ #include "../base/component.hpp" +namespace s2e::components { + /* * @class AttitudeObserver * @brief Ideal component which can observe attitude @@ -77,4 +79,6 @@ class AttitudeObserver : public Component, public ILoggable { */ AttitudeObserver InitializeAttitudeObserver(ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude); +} // namespace s2e::components + #endif // S2E_COMPONENTS_IDEAL_ATTITUDE_OBSERVER_HPP_ diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 79a062ede..59e788ba3 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::components { + // Constructor ForceGenerator::ForceGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, const double direction_error_standard_deviation_rad, const Dynamics* dynamics) @@ -122,3 +124,5 @@ ForceGenerator InitializeForceGenerator(ClockGenerator* clock_generator, const s return force_generator; } + +} // namespace s2e::components diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 607e0a6fd..46724d9f4 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -12,6 +12,8 @@ #include #include +namespace s2e::components { + /* * @class ForceGenerator * @brief Ideal component which can generate for control algorithm test @@ -124,4 +126,6 @@ class ForceGenerator : public Component, public ILoggable { */ ForceGenerator InitializeForceGenerator(ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); +} // namespace s2e::components + #endif // S2E_COMPONENTS_IDEAL_FORCE_GENERATOR_HPP_ diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index f724d0ce9..881610793 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::components { + OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { @@ -100,3 +102,5 @@ OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std return orbit_observer; } + +} // namespace s2e::components diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 6c1119986..36ef2a447 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -13,6 +13,8 @@ #include "../base/component.hpp" +namespace s2e::components { + /** * @enum NoiseFrame * @brief Noise definition frame @@ -105,4 +107,6 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame); */ OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit); +} // namespace s2e::components + #endif // S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index efcf0392d..600f65e5a 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::components { + // Constructor TorqueGenerator::TorqueGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, const double direction_error_standard_deviation_rad, const Dynamics* dynamics) @@ -96,3 +98,5 @@ TorqueGenerator InitializeTorqueGenerator(ClockGenerator* clock_generator, const return torque_generator; } + +} // namespace s2e::components diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 3b8606464..51cbe39ee 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -12,6 +12,8 @@ #include #include +namespace s2e::components { + /* * @class TorqueGenerator * @brief Ideal component which can generate for control algorithm test @@ -102,4 +104,6 @@ class TorqueGenerator : public Component, public ILoggable { */ TorqueGenerator InitializeTorqueGenerator(ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); +} // namespace s2e::components + #endif // S2E_COMPONENTS_IDEAL_TORQUE_GENERATOR_HPP_ From 61aa36f0df027adcf2176056dd684358558ff25e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:02:00 +0900 Subject: [PATCH 406/456] Add s2e::components namespace for ports --- src/components/ports/gpio_port.cpp | 4 ++++ src/components/ports/gpio_port.hpp | 4 ++++ src/components/ports/hils_i2c_target_port.cpp | 4 ++++ src/components/ports/hils_i2c_target_port.hpp | 4 ++++ src/components/ports/hils_uart_port.cpp | 4 ++++ src/components/ports/hils_uart_port.hpp | 4 ++++ src/components/ports/i2c_port.cpp | 4 ++++ src/components/ports/i2c_port.hpp | 4 ++++ src/components/ports/power_port.cpp | 4 ++++ src/components/ports/power_port.hpp | 4 ++++ src/components/ports/uart_port.cpp | 4 ++++ src/components/ports/uart_port.hpp | 4 ++++ 12 files changed, 48 insertions(+) diff --git a/src/components/ports/gpio_port.cpp b/src/components/ports/gpio_port.cpp index 4a155cc57..bf91c2f8c 100644 --- a/src/components/ports/gpio_port.cpp +++ b/src/components/ports/gpio_port.cpp @@ -5,6 +5,8 @@ #include "gpio_port.hpp" +namespace s2e::components { + GpioPort::GpioPort(const unsigned int port_id, IGPIOCompo* component) : kPortId(port_id) { high_low_state_ = GPIO_LOW; component_ = component; @@ -24,3 +26,5 @@ int GpioPort::DigitalWrite(const bool is_high) { } bool GpioPort::DigitalRead() { return high_low_state_; } + +} // namespace s2e::components diff --git a/src/components/ports/gpio_port.hpp b/src/components/ports/gpio_port.hpp index b1c38bb2a..3feb8af86 100644 --- a/src/components/ports/gpio_port.hpp +++ b/src/components/ports/gpio_port.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::components { + #define GPIO_HIGH true #define GPIO_LOW false @@ -51,4 +53,6 @@ class GpioPort { bool high_low_state_; //!< GPIO High/Low state }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_PORTS_GPIO_PORT_HPP_ diff --git a/src/components/ports/hils_i2c_target_port.cpp b/src/components/ports/hils_i2c_target_port.cpp index c4797e31e..6d4cd71cb 100644 --- a/src/components/ports/hils_i2c_target_port.cpp +++ b/src/components/ports/hils_i2c_target_port.cpp @@ -5,6 +5,8 @@ #include "hils_i2c_target_port.hpp" +namespace s2e::components { + // #define HILS_I2C_TARGET_PORT_SHOW_DEBUG_DATA //!< Remove comment when you want to show the debug message // FIXME: The magic number. This is depending on the converter. @@ -105,3 +107,5 @@ int HilsI2cTargetPort::Send(const unsigned char data_length) // to I2C-USB Targ } int HilsI2cTargetPort::GetStoredFrameCounter() { return stored_frame_counter_; } + +} // namespace s2e::components diff --git a/src/components/ports/hils_i2c_target_port.hpp b/src/components/ports/hils_i2c_target_port.hpp index 16bee3cd4..54cb76531 100644 --- a/src/components/ports/hils_i2c_target_port.hpp +++ b/src/components/ports/hils_i2c_target_port.hpp @@ -10,6 +10,8 @@ #include "hils_uart_port.hpp" +namespace s2e::components { + const unsigned int kDefaultCommandSize = 0xff; //!< Default command size const unsigned int kDefaultTxSize = 0xff; //!< Default TX size @@ -107,4 +109,6 @@ class HilsI2cTargetPort : public HilsUartPort { std::map command_buffer_; }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_PORTS_HILS_I2C_TARGET_PORT_HPP_ diff --git a/src/components/ports/hils_uart_port.cpp b/src/components/ports/hils_uart_port.cpp index be3d1e16c..bc811269b 100644 --- a/src/components/ports/hils_uart_port.cpp +++ b/src/components/ports/hils_uart_port.cpp @@ -8,6 +8,8 @@ #include "hils_uart_port.hpp" +namespace s2e::components { + // # define HILS_UART_PORT_SHOW_DEBUG_DATA HilsUartPort::HilsUartPort(const unsigned int port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, @@ -186,3 +188,5 @@ int HilsUartPort::DiscardOutBuffer() { } return 0; } + +} // namespace s2e::components diff --git a/src/components/ports/hils_uart_port.hpp b/src/components/ports/hils_uart_port.hpp index 1be6a9b8f..be2fc9bbd 100644 --- a/src/components/ports/hils_uart_port.hpp +++ b/src/components/ports/hils_uart_port.hpp @@ -14,6 +14,8 @@ #include +namespace s2e::components { + typedef cli::array bytearray; //!< System::Byte: an 8-bit unsigned integer /** @@ -111,4 +113,6 @@ class HilsUartPort { int DiscardOutBuffer(); }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_PORTS_HILS_UART_PORT_HPP_ diff --git a/src/components/ports/i2c_port.cpp b/src/components/ports/i2c_port.cpp index 715fd9538..8b4e1cfa1 100644 --- a/src/components/ports/i2c_port.cpp +++ b/src/components/ports/i2c_port.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + I2cPort::I2cPort(void) {} I2cPort::I2cPort(const unsigned char max_register_number) : max_register_number_(max_register_number) {} @@ -93,3 +95,5 @@ unsigned char I2cPort::ReadCommand(const unsigned char i2c_address, unsigned cha } return length; } + +} // namespace s2e::components \ No newline at end of file diff --git a/src/components/ports/i2c_port.hpp b/src/components/ports/i2c_port.hpp index 57143b992..044431c0e 100644 --- a/src/components/ports/i2c_port.hpp +++ b/src/components/ports/i2c_port.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::components { + /** * @class I2cPort * @brief Class to emulate I2C(Inter-Integrated Circuit) communication port @@ -108,4 +110,6 @@ class I2cPort { std::map, unsigned char> command_buffer_; }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_PORTS_I2C_PORT_HPP_ diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index 1a3393ec3..ac763115e 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + PowerPort::PowerPort() : kPortId(-1), current_limit_A_(10.0), minimum_voltage_V_(3.3), assumed_power_consumption_W_(0.0) { is_on_ = true; // power on to work the component Initialize(); @@ -74,3 +76,5 @@ void PowerPort::InitializeWithInitializeFile(const std::string file_name) { double assumed_power_consumption_W = initialize_file.ReadDouble(section_name.c_str(), "assumed_power_consumption_W"); this->SetAssumedPowerConsumption_W(assumed_power_consumption_W); } + +} // namespace s2e::components diff --git a/src/components/ports/power_port.hpp b/src/components/ports/power_port.hpp index e890d25b5..98d0a74d6 100644 --- a/src/components/ports/power_port.hpp +++ b/src/components/ports/power_port.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::components { + /** * @class PowerPort * @brief Class to emulate electrical power port @@ -133,4 +135,6 @@ class PowerPort { void Initialize(void); }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_PORTS_POWER_PORT_HPP_ diff --git a/src/components/ports/uart_port.cpp b/src/components/ports/uart_port.cpp index a2ad5303a..a88f98699 100644 --- a/src/components/ports/uart_port.cpp +++ b/src/components/ports/uart_port.cpp @@ -5,6 +5,8 @@ #include "uart_port.hpp" +namespace s2e::components { + UartPort::UartPort() : UartPort(kDefaultBufferSize, kDefaultBufferSize) {} UartPort::UartPort(const unsigned int rx_buffer_size, const unsigned int tx_buffer_size) { @@ -36,3 +38,5 @@ int UartPort::ReadTx(unsigned char* buffer, const unsigned int offset, const uns int UartPort::ReadRx(unsigned char* buffer, const unsigned int offset, const unsigned int data_length) { return rx_buffer_->Read(buffer, offset, data_length); } + +} // namespace s2e::components diff --git a/src/components/ports/uart_port.hpp b/src/components/ports/uart_port.hpp index b50f90c28..eb5e6683c 100644 --- a/src/components/ports/uart_port.hpp +++ b/src/components/ports/uart_port.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::components { + /** * @class UartPort * @brief Class to emulate UART communication port @@ -78,4 +80,6 @@ class UartPort { RingBuffer* tx_buffer_; //!< Transmit buffer (OBC-> Component) }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_PORTS_UART_PORT_HPP_ From 50aa0554eee2482e997041aff87a73f943c8204d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:16:16 +0900 Subject: [PATCH 407/456] Add s2e::components namespace for real --- src/components/real/aocs/gnss_receiver.cpp | 4 ++++ src/components/real/aocs/gnss_receiver.hpp | 4 ++++ src/components/real/aocs/gyro_sensor.cpp | 4 ++++ src/components/real/aocs/gyro_sensor.hpp | 4 ++++ src/components/real/aocs/magnetometer.cpp | 4 ++++ src/components/real/aocs/magnetometer.hpp | 4 ++++ src/components/real/aocs/magnetorquer.cpp | 4 ++++ src/components/real/aocs/magnetorquer.hpp | 4 ++++ src/components/real/aocs/mtq_magnetometer_interference.cpp | 4 ++++ src/components/real/aocs/mtq_magnetometer_interference.hpp | 4 ++++ src/components/real/aocs/reaction_wheel.cpp | 4 ++++ src/components/real/aocs/reaction_wheel.hpp | 4 ++++ src/components/real/aocs/reaction_wheel_jitter.cpp | 4 ++++ src/components/real/aocs/reaction_wheel_jitter.hpp | 4 ++++ src/components/real/aocs/reaction_wheel_ode.cpp | 4 ++++ src/components/real/aocs/reaction_wheel_ode.hpp | 4 ++++ src/components/real/aocs/star_sensor.cpp | 4 ++++ src/components/real/aocs/star_sensor.hpp | 4 ++++ src/components/real/aocs/sun_sensor.cpp | 4 ++++ src/components/real/aocs/sun_sensor.hpp | 4 ++++ src/components/real/cdh/c2a_communication.hpp | 4 ++++ src/components/real/cdh/on_board_computer.cpp | 4 ++++ src/components/real/cdh/on_board_computer.hpp | 4 ++++ src/components/real/cdh/on_board_computer_with_c2a.cpp | 6 +++++- src/components/real/cdh/on_board_computer_with_c2a.hpp | 4 ++++ src/components/real/communication/antenna.cpp | 4 ++++ src/components/real/communication/antenna.hpp | 4 ++++ .../real/communication/antenna_radiation_pattern.cpp | 4 ++++ .../real/communication/antenna_radiation_pattern.hpp | 4 ++++ .../real/communication/ground_station_calculator.cpp | 4 ++++ .../real/communication/ground_station_calculator.hpp | 4 ++++ .../real/communication/wings_command_sender_to_c2a.cpp | 4 ++++ .../real/communication/wings_command_sender_to_c2a.hpp | 4 ++++ src/components/real/mission/telescope.cpp | 4 ++++ src/components/real/mission/telescope.hpp | 4 ++++ src/components/real/power/battery.cpp | 4 ++++ src/components/real/power/battery.hpp | 4 ++++ src/components/real/power/csv_scenario_interface.cpp | 4 ++++ src/components/real/power/csv_scenario_interface.hpp | 4 ++++ src/components/real/power/pcu_initial_study.cpp | 4 ++++ src/components/real/power/pcu_initial_study.hpp | 4 ++++ src/components/real/power/power_control_unit.cpp | 4 ++++ src/components/real/power/power_control_unit.hpp | 4 ++++ src/components/real/power/solar_array_panel.cpp | 4 ++++ src/components/real/power/solar_array_panel.hpp | 4 ++++ src/components/real/propulsion/simple_thruster.cpp | 4 ++++ src/components/real/propulsion/simple_thruster.hpp | 4 ++++ 47 files changed, 189 insertions(+), 1 deletion(-) diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index f5c28e8cd..0d899b9e8 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, @@ -311,3 +313,5 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_ gr_param.velocity_noise_standard_deviation_ecef_m_s, dynamics, gnss_satellites, simulation_time); return gnss_r; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 14a4dbc86..1ea260d0f 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -16,6 +16,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /** * @enum AntennaModel * @brief Antenna pattern model to emulate GNSS antenna @@ -240,4 +242,6 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_GNSS_RECEIVER_HPP_ diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index 244127fb1..7af914f24 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} @@ -88,3 +90,5 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, PowerPort* power_port GyroSensor gyro(prescaler, clock_generator, power_port, sensor_base, sensor_id, quaternion_b2c, dynamics); return gyro; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index cd0ec6d34..fd6ede443 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -13,6 +13,8 @@ #include "../../base/component.hpp" #include "../../base/sensor.hpp" +namespace s2e::components { + const size_t kGyroDimension = 3; //!< Dimension of gyro sensor /** @@ -110,4 +112,6 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const GyroSensor InitGyroSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics); +} //namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_GYRO_SENSOR_HPP_ diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index 91236b2e4..1326a7ba4 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -7,6 +7,8 @@ #include #include +namespace s2e::components { + Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), @@ -91,3 +93,5 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, PowerPort* power_ Magnetometer magsensor(prescaler, clock_generator, power_port, sensor_base, sensor_id, quaternion_b2c, geomagnetic_field); return magsensor; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index d4d7502e6..34dce8647 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -13,6 +13,8 @@ #include "../../base/component.hpp" #include "../../base/sensor.hpp" +namespace s2e::components { + const size_t kMagnetometerDimension = 3; //!< Dimension of magnetometer /** @@ -129,4 +131,6 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, co Magnetometer InitMagnetometer(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_MAGNETOMETER_HPP_ diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 909996b84..a213539a7 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, @@ -203,3 +205,5 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_ random_walk_limit_c_Am2, normal_random_standard_deviation_c_Am2, geomagnetic_field); return magtorquer; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index 0af9f30e7..fb7ad153e 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -16,6 +16,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + const size_t kMtqDimension = 3; //!< Dimension of magnetorquer /** @@ -170,4 +172,6 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_MAGNETORQUER_HPP_ diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index 7b603abbc..b2f23f474 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -7,6 +7,8 @@ #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::components { + MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_name, Magnetometer& magnetometer, const Magnetorquer& magnetorquer, const size_t initialize_id) : magnetometer_(magnetometer), magnetorquer_(magnetorquer) { @@ -49,3 +51,5 @@ void MtqMagnetometerInterference::UpdateInterference(void) { magnetometer_.AddConstantBiasNoise_c_nT(additional_bias_c_nT); previous_added_bias_c_nT_ = additional_bias_c_nT; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index 2c2c4c0d8..715cbce47 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -9,6 +9,8 @@ #include "magnetometer.hpp" #include "magnetorquer.hpp" +namespace s2e::components { + /** * @class MtqMagnetometerInterference * @brief Class for MTQ Magnetometer interference @@ -38,4 +40,6 @@ class MtqMagnetometerInterference { const Magnetorquer& magnetorquer_; //!< Magnetorquer }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_MTQ_MAGNETOMETER_INTERFERENCE_HPP_ diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index e0e2a1c13..918ed9578 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, @@ -353,3 +355,5 @@ ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, PowerPort* powe return rw; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 14c66a33e..4735f6193 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -17,6 +17,8 @@ #include "reaction_wheel_jitter.hpp" #include "reaction_wheel_ode.hpp" +namespace s2e::components { + /* * @class ReactionWheel * @brief Class to emulate Reaction Wheel @@ -246,4 +248,6 @@ ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, int actuator_id ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, std::string file_name, double compo_update_step_s); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index 5e4a2930b..d0b1408fe 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + ReactionWheelJitter::ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, const s2e::math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, @@ -126,3 +128,5 @@ void ReactionWheelJitter::CalcCoefficients() { coefficients_[5] = 4.0 - 4.0 * damping_factor_ * update_interval_s_ * structural_resonance_angular_frequency_Hz_ + pow(update_interval_s_, 2.0) * pow(structural_resonance_angular_frequency_Hz_, 2.0); } + +} // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index a6da8a503..ea2fcec93 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + /* * @class ReactionWheelJitter * @brief Class to calculate RW high-frequency jitter effect @@ -128,4 +130,6 @@ class ReactionWheelJitter { void CalcCoefficients(); }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_JITTER_HPP_ diff --git a/src/components/real/aocs/reaction_wheel_ode.cpp b/src/components/real/aocs/reaction_wheel_ode.cpp index 263e24460..d8b34ee86 100644 --- a/src/components/real/aocs/reaction_wheel_ode.cpp +++ b/src/components/real/aocs/reaction_wheel_ode.cpp @@ -6,6 +6,8 @@ #include +namespace s2e::components { + ReactionWheelOde::ReactionWheelOde(const double step_width_s, const double velocity_limit_rad_s, const double initial_angular_velocity_rad_s) : OrdinaryDifferentialEquation<1>(step_width_s), velocity_limit_rad_s_(velocity_limit_rad_s) { this->Setup(0.0, s2e::math::Vector<1>(initial_angular_velocity_rad_s)); @@ -28,3 +30,5 @@ void ReactionWheelOde::DerivativeFunction(double x, const s2e::math::Vector<1> & rhs[0] = angular_acceleration_rad_s2_; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index 5553ed389..552c2cc04 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::components { + /* * @file ReactionWheelOde * @brief Ordinary differential equation of angular velocity of reaction wheel with first-order lag @@ -59,4 +61,6 @@ class ReactionWheelOde : public s2e::math::OrdinaryDifferentialEquation<1> { double angular_acceleration_rad_s2_ = 0.0; //!< Angular acceleration [rad/s2] }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_ODE_HPP_ diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 193805226..83b105096 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -16,6 +16,8 @@ using namespace std; using namespace s2e::math; +namespace s2e::components { + StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, @@ -281,3 +283,5 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port moon_forbidden_angle_rad, capture_rate_rad_s, dynamics, local_environment); return stt; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 1120f9eeb..888f91b18 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -18,6 +18,8 @@ #include "../../base/component.hpp" #include "dynamics/dynamics.hpp" +namespace s2e::components { + /* * @class StarSensor * @brief Class to emulate star tracker @@ -232,4 +234,6 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_STAR_SENSOR_HPP_ diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 3070355e4..773aba273 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -14,6 +14,8 @@ using s2e::randomization::NormalRand; using namespace std; +namespace s2e::components { + SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, @@ -218,3 +220,5 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, intensity_lower_threshold_percent, srp_environment, local_celestial_information); return ss; } + +} // namespace s2e::components diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 532dfb18f..08c8982d2 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -15,6 +15,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @class SunSensor * @brief Class to emulate sun sensor @@ -165,4 +167,6 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, int sensor_id, const st SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_AOCS_SUN_SENSOR_HPP_ diff --git a/src/components/real/cdh/c2a_communication.hpp b/src/components/real/cdh/c2a_communication.hpp index c749d90e3..4517a3355 100644 --- a/src/components/real/cdh/c2a_communication.hpp +++ b/src/components/real/cdh/c2a_communication.hpp @@ -6,6 +6,8 @@ #ifndef C2A_COMMUNICATION_H_ #define C2A_COMMUNICATION_H_ +namespace s2e::components { + // If the character encoding of C2A is UTF-8, the following functions are not necessary, // and users can directory use SendFromObc_C2A and ReceivedByObc_C2A UART // TODO: Delete these functions since C2A is changed to use UTF-8 @@ -23,4 +25,6 @@ int OBC_C2A_I2cReadRegister(int port_id, const unsigned char i2c_address, unsign int OBC_C2A_GpioWrite(int port_id, const bool is_high); bool OBC_C2A_GpioRead(int port_id); // return false when the port_id is not used +} // namespace s2e::components + #endif // C2A_COMMUNICATION_H_ diff --git a/src/components/real/cdh/on_board_computer.cpp b/src/components/real/cdh/on_board_computer.cpp index ad23fadf4..33a75efd9 100644 --- a/src/components/real/cdh/on_board_computer.cpp +++ b/src/components/real/cdh/on_board_computer.cpp @@ -4,6 +4,8 @@ */ #include "on_board_computer.hpp" +namespace s2e::components { + OnBoardComputer::OnBoardComputer(ClockGenerator* clock_generator) : Component(1, clock_generator) { Initialize(); } OnBoardComputer::OnBoardComputer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port) @@ -132,3 +134,5 @@ bool OnBoardComputer::GpioComponentRead(int port_id) { if (port == nullptr) return false; return port->DigitalRead(); } + +} // namespace s2e::components diff --git a/src/components/real/cdh/on_board_computer.hpp b/src/components/real/cdh/on_board_computer.hpp index 641f1566c..1943de045 100644 --- a/src/components/real/cdh/on_board_computer.hpp +++ b/src/components/real/cdh/on_board_computer.hpp @@ -13,6 +13,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @class OnBoardComputer * @brief Class to emulate on board computer @@ -207,4 +209,6 @@ class OnBoardComputer : public Component { std::map gpio_ports_; //!< GPIO ports }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_CDH_OBC_HPP_ diff --git a/src/components/real/cdh/on_board_computer_with_c2a.cpp b/src/components/real/cdh/on_board_computer_with_c2a.cpp index 8deb53bec..c0514d03f 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.cpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.cpp @@ -26,6 +26,8 @@ #endif // c2a-core version header #endif // USE_C2A +namespace s2e::components { + std::map ObcWithC2a::com_ports_c2a_; std::map ObcWithC2a::i2c_com_ports_c2a_; std::map ObcWithC2a::gpio_ports_c2a_; @@ -255,4 +257,6 @@ bool ObcWithC2a::GpioRead_C2A(int port_id) { int OBC_C2A_GpioWrite(int port_id, const bool is_high) { return ObcWithC2a::GpioWrite_C2A(port_id, is_high); } -bool OBC_C2A_GpioRead(int port_id) { return ObcWithC2a::GpioRead_C2A(port_id); } \ No newline at end of file +bool OBC_C2A_GpioRead(int port_id) { return ObcWithC2a::GpioRead_C2A(port_id); } + +} // namespace s2e::components diff --git a/src/components/real/cdh/on_board_computer_with_c2a.hpp b/src/components/real/cdh/on_board_computer_with_c2a.hpp index bc9cc22e8..c7b5fe968 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.hpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.hpp @@ -11,6 +11,8 @@ #include "c2a_communication.hpp" #include "on_board_computer.hpp" +namespace s2e::components { + /* * @class ObcWithC2a * @brief Class to emulate on board computer with C2A flight software @@ -271,4 +273,6 @@ class ObcWithC2a : public OnBoardComputer { static std::map gpio_ports_c2a_; //!< GPIO ports }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_CDH_OBC_C2A_HPP_ diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index db044cb5d..fb22a00b8 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + Antenna::Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) : component_id_(component_id), is_transmitter_(is_transmitter), is_receiver_(is_receiver), frequency_MHz_(frequency_MHz) { @@ -164,3 +166,5 @@ Antenna InitAntenna(const int antenna_id, const std::string file_name) { rx_system_noise_temperature_K, rx_parameters); return antenna; } + +} // namespace s2e::components diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index 78d8f48df..28023cff6 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -14,6 +14,8 @@ using s2e::math::Vector; #include "./antenna_radiation_pattern.hpp" +namespace s2e::components { + /* * @enum AntennaGainModel * @brief Antenna gain model definition @@ -166,4 +168,6 @@ AntennaGainModel SetAntennaGainModel(const std::string gain_model_name); */ Antenna InitAntenna(const int antenna_id, const std::string file_name); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_HPP_ diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index a82929c11..71566f080 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + AntennaRadiationPattern::AntennaRadiationPattern() { gain_dBi_.assign(length_theta_, std::vector(length_phi_, 0.0)); } AntennaRadiationPattern::AntennaRadiationPattern(const std::string file_path, const size_t length_theta, const size_t length_phi, @@ -37,3 +39,5 @@ double AntennaRadiationPattern::GetGain_dBi(const double theta_rad, const double return gain_dBi_[theta_idx][phi_idx]; } + +} // namespace s2e::components diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index 93aff7df9..3d2382862 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -10,6 +10,8 @@ #include #include +namespace s2e::components { + /* * @class AntennaRadiationPattern * @brief Antenna radiation pattern @@ -62,4 +64,6 @@ class AntennaRadiationPattern { std::vector> gain_dBi_; //!< Antenna gain table [dBi] }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_RADIATION_PATTERN_HPP_ diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 2f4d1f19a..f53afc30a 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + GroundStationCalculator::GroundStationCalculator(const double loss_polarization_dB, const double loss_atmosphere_dB, const double loss_rainfall_dB, const double loss_others_dB, const double ebn0_dB, const double hardware_deterioration_dB, const double coding_gain_dB, const double margin_requirement_dB, const double downlink_bitrate_bps) @@ -136,3 +138,5 @@ GroundStationCalculator InitGsCalculator(const std::string file_name) { hardware_deterioration_dB, coding_gain_dB, margin_requirement_dB, downlink_bitrate_bps); return gs_calculator; } + +} // namespace s2e::components diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index a2d5eb75a..3d20f5a0b 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -13,6 +13,8 @@ #include #include +namespace s2e::components { + /* * @class GroundStationCalculator * @brief Emulation of analysis and calculation for Ground Stations @@ -144,4 +146,6 @@ class GroundStationCalculator : public ILoggable { GroundStationCalculator InitGsCalculator(const std::string file_name); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_COMMUNICATION_GROUND_STATION_CALCULATOR_HPP_ diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index 4d04ee911..f2ce172e0 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -26,6 +26,8 @@ #endif // c2a-core version header #endif // USE_C2A +namespace s2e::components { + void WingsCommandSenderToC2a::MainRoutine(const int time_count) { UNUSED(time_count); if (is_enabled_ == false) return; @@ -148,3 +150,5 @@ WingsCommandSenderToC2a InitWingsCommandSenderToC2a(ClockGenerator* clock_genera return WingsCommandSenderToC2a(prescaler, clock_generator, step_width_s, c2a_command_data_base_file, wings_operation_file, is_enabled); } + +} // namespace s2e::components diff --git a/src/components/real/communication/wings_command_sender_to_c2a.hpp b/src/components/real/communication/wings_command_sender_to_c2a.hpp index 1ae74b1c1..14e1eda9f 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.hpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.hpp @@ -11,6 +11,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @class C2aCommandSender * @brief A component to send C2A command using WINGS operation file @@ -76,4 +78,6 @@ class WingsCommandSenderToC2a : public Component { WingsCommandSenderToC2a InitWingsCommandSenderToC2a(ClockGenerator* clock_generator, const double compo_update_step_s, const std::string initialize_file); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_COMMUNICATION_C2A_COMMAND_SENDER_HPP_ diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 0e5a01c91..7d76de5c1 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -13,6 +13,8 @@ using namespace std; using namespace s2e::math; +namespace s2e::components { + Telescope::Telescope(ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, @@ -285,3 +287,5 @@ Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const st orbit); return telescope; } + +} // namespace s2e::components diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 737a49c98..e2d75c397 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -17,6 +17,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @struct Star * @brief Information of stars in the telescope's field of view @@ -170,4 +172,6 @@ Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const st const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_MISSION_TELESCOPE_HPP_P_ diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index f647fb940..a8f1bc4d0 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::components { + Battery::Battery(const int prescaler, ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, double battery_resistance_Ohm, double component_step_time_s) @@ -130,3 +132,5 @@ Battery InitBAT(ClockGenerator* clock_generator, int bat_id, const std::string f return battery; } + +} // namespace s2e::components diff --git a/src/components/real/power/battery.hpp b/src/components/real/power/battery.hpp index 39ee34c44..24f43c464 100644 --- a/src/components/real/power/battery.hpp +++ b/src/components/real/power/battery.hpp @@ -11,6 +11,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @class Battery * @brief Component emulation of battery @@ -144,4 +146,6 @@ class Battery : public Component, public ILoggable { */ Battery InitBAT(ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_POWER_BATTERY_HPP_P_ diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index 7978d510c..f0efc14fb 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::components { + bool CsvScenarioInterface::is_csv_scenario_enabled_; std::map CsvScenarioInterface::buffer_line_id_; std::map CsvScenarioInterface::buffers_; @@ -92,3 +94,5 @@ double CsvScenarioInterface::GetValueFromBuffer(const std::string buffer_name, c output = itr->second; return output; } + +} // namespace s2e::components diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index e8177ca5f..f105dd773 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::components { + typedef std::map DoubleBuffer; /* @@ -78,4 +80,6 @@ class CsvScenarioInterface { static std::map buffers_; //!< Buffer }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_POWER_CSV_SCENARIO_INTERFACE_HPP_ diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index 77f6fda37..df8527352 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -10,6 +10,8 @@ #include #include +namespace s2e::components { + PcuInitialStudy::PcuInitialStudy(const int prescaler, ClockGenerator* clock_generator, const std::vector saps, Battery* battery, double component_step_time_s) : Component(prescaler, clock_generator), @@ -124,3 +126,5 @@ PcuInitialStudy InitPCU_InitialStudy(ClockGenerator* clock_generator, int pcu_id return pcu; } + +} // namespace s2e::components diff --git a/src/components/real/power/pcu_initial_study.hpp b/src/components/real/power/pcu_initial_study.hpp index f59966774..f9dd8ccf8 100644 --- a/src/components/real/power/pcu_initial_study.hpp +++ b/src/components/real/power/pcu_initial_study.hpp @@ -13,6 +13,8 @@ #include "battery.hpp" #include "solar_array_panel.hpp" +namespace s2e::components { + class PcuInitialStudy : public Component, public ILoggable { public: /** @@ -95,4 +97,6 @@ class PcuInitialStudy : public Component, public ILoggable { PcuInitialStudy InitPCU_InitialStudy(ClockGenerator* clock_generator, int pcu_id, const std::string file_name, const std::vector saps, Battery* battery, double component_step_time_s); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_POWER_PCU_INITIAL_STUDY_HPP_ diff --git a/src/components/real/power/power_control_unit.cpp b/src/components/real/power/power_control_unit.cpp index 055300e2c..8e908c2af 100644 --- a/src/components/real/power/power_control_unit.cpp +++ b/src/components/real/power/power_control_unit.cpp @@ -4,6 +4,8 @@ */ #include "power_control_unit.hpp" +namespace s2e::components { + PowerControlUnit::PowerControlUnit(ClockGenerator* clock_generator) : Component(1, clock_generator) {} PowerControlUnit::PowerControlUnit(int prescaler, ClockGenerator* clock_generator) : Component(prescaler, clock_generator) {} @@ -52,3 +54,5 @@ std::string PowerControlUnit::GetLogValue() const { std::string str_tmp = ""; return str_tmp; } + +} // namespace s2e::components diff --git a/src/components/real/power/power_control_unit.hpp b/src/components/real/power/power_control_unit.hpp index 3e77101c2..f4765e74f 100644 --- a/src/components/real/power/power_control_unit.hpp +++ b/src/components/real/power/power_control_unit.hpp @@ -12,6 +12,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @class PowerControlUnit * @brief Component emulation of Power Control Unit @@ -95,4 +97,6 @@ class PowerControlUnit : public Component, public ILoggable { std::map power_ports_; //!< Power port list }; +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_POWER_POWER_CONTROL_UNIT_HPP_ diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index 126f66da7..67e459f6e 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, @@ -180,3 +182,5 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: return sap; } + +} // namespace s2e::components diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index db114a081..6fb7aacac 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -13,6 +13,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + class SolarArrayPanel : public Component, public ILoggable { public: /** @@ -157,4 +159,6 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_POWER_SOLAR_ARRAY_PANEL_HPP_ diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 7917b5fb1..3cfdc6da7 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::components { + // Constructor SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, @@ -177,3 +179,5 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, PowerPort* po magnitude_standard_deviation_N, deg_err, structure, dynamics); return thruster; } + +} // namespace s2e::components diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index f297b8af2..ab1e0734a 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -15,6 +15,8 @@ #include "../../base/component.hpp" +namespace s2e::components { + /* * @class SimpleThruster * @brief Component emulation of simple thruster @@ -179,4 +181,6 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics); +} // namespace s2e::components + #endif // S2E_COMPONENTS_REAL_PROPULSION_SIMPLE_THRUSTER_HPP_ From 9f6593b0fd9bbb55cd445dbfdd0cda51b2d9fbf5 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:20:01 +0900 Subject: [PATCH 408/456] Add s2e::disturbances namespace --- src/disturbances/air_drag.cpp | 4 ++++ src/disturbances/air_drag.hpp | 4 ++++ src/disturbances/disturbance.hpp | 4 ++++ src/disturbances/disturbances.cpp | 4 ++++ src/disturbances/disturbances.hpp | 4 ++++ src/disturbances/geopotential.cpp | 6 +++++- src/disturbances/geopotential.hpp | 5 +++++ src/disturbances/gravity_gradient.cpp | 4 ++++ src/disturbances/gravity_gradient.hpp | 4 ++++ src/disturbances/lunar_gravity_field.cpp | 4 ++++ src/disturbances/lunar_gravity_field.hpp | 5 +++++ src/disturbances/magnetic_disturbance.cpp | 4 ++++ src/disturbances/magnetic_disturbance.hpp | 4 ++++ src/disturbances/solar_radiation_pressure_disturbance.cpp | 4 ++++ src/disturbances/solar_radiation_pressure_disturbance.hpp | 4 ++++ src/disturbances/surface_force.cpp | 4 ++++ src/disturbances/surface_force.hpp | 4 ++++ src/disturbances/third_body_gravity.cpp | 4 ++++ src/disturbances/third_body_gravity.hpp | 4 ++++ 19 files changed, 79 insertions(+), 1 deletion(-) diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index e64593201..87884ba9b 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -12,6 +12,8 @@ #include "../logger/log_utility.hpp" +namespace s2e::disturbances { + AirDrag::AirDrag(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled), @@ -109,3 +111,5 @@ AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_AIR_DRAG_HPP_ diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 427c67fc5..58966c35a 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -9,6 +9,8 @@ #include "../environment/local/local_environment.hpp" #include "../math_physics/math/vector.hpp" +namespace s2e::disturbances { + /** * @class Disturbance * @brief Base class for a disturbance @@ -91,4 +93,6 @@ class Disturbance : public ILoggable { s2e::math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] }; +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_DISTURBANCE_HPP_ diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index 682790896..84380248b 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -15,6 +15,8 @@ #include "solar_radiation_pressure_disturbance.hpp" #include "third_body_gravity.hpp" +namespace s2e::disturbances { + Disturbances::Disturbances(const SimulationConfiguration* simulation_configuration, const int spacecraft_id, const Structure* structure, const GlobalEnvironment* global_environment) { InitializeInstances(simulation_configuration, spacecraft_id, structure, global_environment); @@ -96,3 +98,5 @@ void Disturbances::InitializeForceAndTorque() { } void Disturbances::InitializeAcceleration() { total_acceleration_i_m_s2_ = Vector<3>(0.0); } + +} // namespace s2e::disturbances diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index 948cabe47..ab1d488fe 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -14,6 +14,8 @@ class Logger; +namespace s2e::disturbances { + /** * @class Disturbances * @brief Class to manage all disturbances @@ -99,4 +101,6 @@ class Disturbances { void InitializeAcceleration(); }; +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_DISTURBANCES_HPP_ diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index b36df94d4..16123cf5d 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -15,6 +15,8 @@ #include "../logger/log_utility.hpp" #include "../utilities/macros.hpp" +namespace s2e::disturbances { + // #define DEBUG_GEOPOTENTIAL Geopotential::Geopotential(const int degree, const std::string file_path, const bool is_calculation_enabled) @@ -125,4 +127,6 @@ Geopotential InitGeopotential(const std::string initialize_file_path) { geopotential_disturbance.is_log_enabled_ = conf.ReadEnable(section, INI_LOG_LABEL); return geopotential_disturbance; -} \ No newline at end of file +} + +} // namespace s2e::disturbances diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 0d350caae..95ec16968 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -11,6 +11,9 @@ #include "../math_physics/gravity/gravity_potential.hpp" #include "../math_physics/math/vector.hpp" #include "disturbance.hpp" + +namespace s2e::disturbances { + /** * @class Geopotential * @brief Class to calculate the high-order earth gravity acceleration @@ -85,4 +88,6 @@ class Geopotential : public Disturbance { */ Geopotential InitGeopotential(const std::string initialize_file_path); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_GEOPOTENTIAL_HPP_ diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 5eff2c05a..b04b2c8d7 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -11,6 +11,8 @@ #include "../logger/log_utility.hpp" +namespace s2e::disturbances { + GravityGradient::GravityGradient(const bool is_calculation_enabled) : GravityGradient(environment::earth_gravitational_constant_m3_s2, is_calculation_enabled) {} @@ -70,3 +72,5 @@ GravityGradient InitGravityGradient(const std::string initialize_file_path, cons return gg_disturbance; } + +} // namespace s2e::disturbances diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 9ca8ff37f..c54e502dd 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -14,6 +14,8 @@ #include "../math_physics/math/vector.hpp" #include "disturbance.hpp" +namespace s2e::disturbances { + /** * @class GravityGradient * @brief Class to calculate the gravity gradient torque @@ -83,4 +85,6 @@ GravityGradient InitGravityGradient(const std::string initialize_file_path); */ GravityGradient InitGravityGradient(const std::string initialize_file_path, const double gravity_constant_m3_s2); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_GRAVITY_GRADIENT_HPP_ diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 781ede97d..747a0e065 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -15,6 +15,8 @@ #include "../logger/log_utility.hpp" #include "../utilities/macros.hpp" +namespace s2e::disturbances { + // #define DEBUG_LUNAR_GRAVITY_FIELD LunarGravityField::LunarGravityField(const int degree, const std::string file_path, const bool is_calculation_enabled) @@ -150,3 +152,5 @@ LunarGravityField InitLunarGravityField(const std::string initialize_file_path) return lunar_gravity_field; } + +} // namespace s2e::disturbances diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index dd5f049af..c809bc4fb 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -11,6 +11,9 @@ #include "../math_physics/gravity/gravity_potential.hpp" #include "../math_physics/math/vector.hpp" #include "disturbance.hpp" + +namespace s2e::disturbances { + /** * @class LunarGravityField * @brief Class to calculate the high-order earth gravity acceleration @@ -89,4 +92,6 @@ class LunarGravityField : public Disturbance { */ LunarGravityField InitLunarGravityField(const std::string initialize_file_path); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_LUNAR_GRAVITY_FIELD_HPP_ diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 054032b9c..fec275450 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -13,6 +13,8 @@ #include "../math_physics/randomization/normal_randomization.hpp" #include "../math_physics/randomization/random_walk.hpp" +namespace s2e::disturbances { + MagneticDisturbance::MagneticDisturbance(const ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), residual_magnetic_moment_(rmm_params) { rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); @@ -72,3 +74,5 @@ MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_pa return mag_disturbance; } + +} // namespace s2e::disturbances diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index e3be84928..ab3bb7375 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -13,6 +13,8 @@ #include "../simulation/spacecraft/structure/residual_magnetic_moment.hpp" #include "disturbance.hpp" +namespace s2e::disturbances { + /** * @class MagneticDisturbance * @brief Class to calculate the magnetic disturbance torque @@ -75,4 +77,6 @@ class MagneticDisturbance : public Disturbance { */ MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const ResidualMagneticMoment& rmm_params); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_MAGNETIC_DISTURBANCE_HPP_ diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index ed6386234..490938542 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -10,6 +10,8 @@ #include "../logger/log_utility.hpp" +namespace s2e::disturbances { + SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} @@ -65,3 +67,5 @@ SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const st return srp_disturbance; } + +} // namespace s2e::disturbances diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index dc4f08419..e427e6dc3 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -12,6 +12,8 @@ #include "../math_physics/math/vector.hpp" #include "surface_force.hpp" +namespace s2e::disturbances { + /** * @class SolarRadiationPressureDisturbance * @brief Class to calculate the solar radiation pressure disturbance force and torque @@ -68,4 +70,6 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_SOLAR_RADIATION_PRESSURE_DISTURBANCE_HPP_ diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 158e2a695..1bf0b1dfe 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -7,6 +7,8 @@ #include "../math_physics/math/vector.hpp" +namespace s2e::disturbances { + SurfaceForce::SurfaceForce(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { // Initialize vectors @@ -52,3 +54,5 @@ void SurfaceForce::CalcTheta(s2e::math::Vector<3>& input_direction_b) { sin_theta_[i] = sqrt(1.0 - cos_theta_[i] * cos_theta_[i]); } } + +} // namespace s2e::disturbances diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index 2fa6fa7d3..943daa9e6 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -15,6 +15,8 @@ #include "../simulation/spacecraft/structure/surface.hpp" #include "disturbance.hpp" +namespace s2e::disturbances { + /** * @class ThirdBodyGravity * @brief Class to calculate third body gravity disturbance @@ -71,4 +73,6 @@ class SurfaceForce : public Disturbance { virtual void CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item) = 0; }; +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_SURFACE_FORCE_HPP_ diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 075415ecf..eebb2ec05 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::disturbances { + ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), third_body_list_(third_body_list) { acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); @@ -99,3 +101,5 @@ ThirdBodyGravity InitThirdBodyGravity(const std::string initialize_file_path, co return third_body_disturbance; } + +} // namespace s2e::disturbances diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 36fded28d..cf45a8593 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -14,6 +14,8 @@ #include "../math_physics/math/vector.hpp" #include "disturbance.hpp" +namespace s2e::disturbances { + /** * @class ThirdBodyGravity * @brief Class to calculate third body gravity disturbance @@ -76,4 +78,6 @@ class ThirdBodyGravity : public Disturbance { */ ThirdBodyGravity InitThirdBodyGravity(const std::string initialize_file_path, const std::string ini_path_celes); +} // namespace s2e::disturbances + #endif // S2E_DISTURBANCES_THIRD_BODY_GRAVITY_HPP_ From 54c007e65b22be19bb2f8079ece56cf9b1564256 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:23:56 +0900 Subject: [PATCH 409/456] Add s2e::dynamics::attitude namespace --- src/dynamics/attitude/attitude.cpp | 4 ++++ src/dynamics/attitude/attitude.hpp | 4 ++++ src/dynamics/attitude/attitude_rk4.cpp | 4 ++++ src/dynamics/attitude/attitude_rk4.hpp | 4 ++++ .../attitude/attitude_with_cantilever_vibration.cpp | 4 ++++ .../attitude/attitude_with_cantilever_vibration.hpp | 4 ++++ src/dynamics/attitude/controlled_attitude.cpp | 4 ++++ src/dynamics/attitude/controlled_attitude.hpp | 4 ++++ src/dynamics/attitude/initialize_attitude.cpp | 4 ++++ src/dynamics/attitude/initialize_attitude.hpp | 4 ++++ .../attitude/ode_attitude_with_cantilever_vibration.hpp | 7 +++++-- 11 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 35cc6b237..4777184de 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -6,6 +6,8 @@ #include +namespace s2e::dynamics::attitude { + Attitude::Attitude(const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { angular_velocity_b_rad_s_ = s2e::math::Vector<3>(0.0); @@ -79,3 +81,5 @@ s2e::math::Matrix<4, 4> CalcAngularVelocityMatrix(s2e::math::Vector<3> angular_v return angular_velocity_matrix; } + +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 3485444d9..1dbcfa809 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -12,6 +12,8 @@ #include #include +namespace s2e::dynamics::attitude { + /** * @class Attitude * @brief Base class for attitude of spacecraft @@ -142,4 +144,6 @@ class Attitude : public ILoggable, public SimulationObject { */ s2e::math::Matrix<4, 4> CalcAngularVelocityMatrix(s2e::math::Vector<3> angular_velocity_b_rad_s); +} // namespace s2e::dynamics::attitude + #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 29e130fef..bac023c33 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::dynamics::attitude { + AttitudeRk4::AttitudeRk4(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) @@ -119,3 +121,5 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { } quaternion_i2b_.Normalize(); } + +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 003989937..1e71fca19 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -8,6 +8,8 @@ #include "attitude.hpp" +namespace s2e::dynamics::attitude { + /** * @class AttitudeRk4 * @brief Class to calculate spacecraft attitude with Runge-Kutta method @@ -68,4 +70,6 @@ class AttitudeRk4 : public Attitude { void RungeKuttaOneStep(double t, double dt); }; +} // namespace s2e::dynamics::attitude + #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_RK4_HPP_ diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index fe58833da..2b2ff73e3 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::dynamics::attitude { + AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const s2e::math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, @@ -99,3 +101,5 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); CalcAngularMomentum(); } + +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 76a8f974f..dbc96391d 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -12,6 +12,8 @@ #include "attitude.hpp" #include "ode_attitude_with_cantilever_vibration.hpp" +namespace s2e::dynamics::attitude { + /** * @class AttitudeWithCantileverVibration * @brief Class to calculate spacecraft attitude with cantilever vibration @@ -77,4 +79,6 @@ class AttitudeWithCantileverVibration : public Attitude { s2e::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; }; +} // namespace s2e::dynamics::attitude + #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 982b1b446..04937978c 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -7,6 +7,8 @@ #include #include +namespace s2e::dynamics::attitude { + ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> main_target_direction_b, const s2e::math::Vector<3> sub_target_direction_b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, @@ -178,3 +180,5 @@ void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { previous_quaternion_i2b_ = quaternion_i2b_; previous_omega_b_rad_s_ = angular_velocity_b_rad_s_; } + +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 88204270b..97154f376 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -13,6 +13,8 @@ #include "../orbit/orbit.hpp" #include "attitude.hpp" +namespace s2e::dynamics::attitude { + /** * @enum AttitudeControlMode * @brief Attitude control mode @@ -149,4 +151,6 @@ class ControlledAttitude : public Attitude { s2e::math::Matrix<3, 3> CalcDcm(const s2e::math::Vector<3> main_direction, const s2e::math::Vector<3> sub_direction); }; +} // namespace s2e::dynamics::attitude + #endif // S2E_DYNAMICS_ATTITUDE_CONTROLLED_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 640cf98c6..02e19ad09 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -6,6 +6,8 @@ #include +namespace s2e::dynamics::attitude { + Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { IniAccess ini_file(file_name); @@ -93,3 +95,5 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel return attitude; } + +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index 0e3899c02..fae3b99ab 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -11,6 +11,8 @@ #include "attitude_with_cantilever_vibration.hpp" #include "controlled_attitude.hpp" +namespace s2e::dynamics::attitude { + /** * @fn InitAttitude * @brief Initialize function for Attitude @@ -24,4 +26,6 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); +} // namespace s2e::dynamics::attitude + #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index f91e2be95..b0cc7711c 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -11,7 +11,10 @@ #include "attitude.hpp" -namespace s2e::numerical_integration { +namespace s2e::dynamics::attitude { + +using s2e::numerical_integration + /** * @class AttitudeWithCantileverVibrationOde * @brief Class to implement Ordinary Differential Equations for Attitude with Cantilever Vibration @@ -221,6 +224,6 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; -} // namespace s2e::numerical_integration +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ From 4e9a3049265a29feae41f0333cdb9c599251bc95 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:26:15 +0900 Subject: [PATCH 410/456] Add s2e::dynamics::orbit namespace --- src/dynamics/orbit/encke_orbit_propagation.cpp | 4 ++++ src/dynamics/orbit/encke_orbit_propagation.hpp | 4 ++++ src/dynamics/orbit/initialize_orbit.cpp | 4 ++++ src/dynamics/orbit/initialize_orbit.hpp | 4 ++++ src/dynamics/orbit/kepler_orbit_propagation.cpp | 4 ++++ src/dynamics/orbit/kepler_orbit_propagation.hpp | 4 ++++ src/dynamics/orbit/orbit.cpp | 4 ++++ src/dynamics/orbit/orbit.hpp | 4 ++++ src/dynamics/orbit/relative_orbit.cpp | 4 ++++ src/dynamics/orbit/relative_orbit.hpp | 4 ++++ src/dynamics/orbit/rk4_orbit_propagation.cpp | 4 ++++ src/dynamics/orbit/rk4_orbit_propagation.hpp | 4 ++++ src/dynamics/orbit/sgp4_orbit_propagation.cpp | 4 ++++ src/dynamics/orbit/sgp4_orbit_propagation.hpp | 4 ++++ 14 files changed, 56 insertions(+) diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index e25abbde4..b846fa37c 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -9,6 +9,8 @@ #include "../../math_physics/orbit/orbital_elements.hpp" +namespace s2e::dynamics::orbit { + EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, const double current_time_jd, const s2e::math::Vector<3> position_i_m, const s2e::math::Vector<3> velocity_i_m_s, const double error_tolerance) @@ -124,3 +126,5 @@ double EnckeOrbitPropagation::CalcQFunction(s2e::math::Vector<3> difference_posi return q_func; } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index a43db4e93..a06a207f1 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -10,6 +10,8 @@ #include "../../math_physics/orbit/kepler_orbit.hpp" #include "orbit.hpp" +namespace s2e::dynamics::orbit { + /** * @class EnckeOrbitPropagation * @brief Class to propagate spacecraft orbit with Encke's method @@ -93,4 +95,6 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti double CalcQFunction(const s2e::math::Vector<3> difference_position_i_m); }; +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_ENCKE_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 9d071761f..5b8329708 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -12,6 +12,8 @@ #include "rk4_orbit_propagation.hpp" #include "sgp4_orbit_propagation.hpp" +namespace s2e::dynamics::orbit { + Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, double gravity_constant_m3_s2, std::string section, RelativeInformation* relative_information) { auto conf = IniAccess(initialize_file); @@ -148,3 +150,5 @@ s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double curren return pos_vel; } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index 1bdbe44cd..59a03d8a0 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -12,6 +12,8 @@ class RelativeInformation; +namespace s2e::dynamics::orbit { + /** * @fn InitOrbit * @brief Initialize function for Orbit class @@ -37,4 +39,6 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string */ s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_INITIALIZE_ORBIT_HPP_ diff --git a/src/dynamics/orbit/kepler_orbit_propagation.cpp b/src/dynamics/orbit/kepler_orbit_propagation.cpp index 905c56e39..d745a2c3a 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.cpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.cpp @@ -8,6 +8,8 @@ #include "../../math_physics/math/s2e_math.hpp" +namespace s2e::dynamics::orbit { + KeplerOrbitPropagation::KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, KeplerOrbit kepler_orbit) : Orbit(celestial_information), KeplerOrbit(kepler_orbit) { @@ -32,3 +34,5 @@ void KeplerOrbitPropagation::UpdateState(const double current_time_jd) { TransformEciToEcef(); TransformEcefToGeodetic(); } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/kepler_orbit_propagation.hpp b/src/dynamics/orbit/kepler_orbit_propagation.hpp index 9604c4bc1..117f8edc1 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.hpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.hpp @@ -9,6 +9,8 @@ #include "../../math_physics/orbit/kepler_orbit.hpp" #include "orbit.hpp" +namespace s2e::dynamics::orbit { + /** * @class KeplerOrbitPropagation * @brief Class to propagate spacecraft orbit with Kepler equation @@ -48,4 +50,6 @@ class KeplerOrbitPropagation : public Orbit, public s2e::orbit::KeplerOrbit { void UpdateState(const double current_time_jd); }; +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_KEPLER_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index d3058f5fd..c2b94493d 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -4,6 +4,8 @@ */ #include "orbit.hpp" +namespace s2e::dynamics::orbit { + s2e::math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { s2e::math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite s2e::math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); @@ -93,3 +95,5 @@ std::string Orbit::GetLogValue() const { return str_tmp; } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 79a016b81..dabd75f59 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -16,6 +16,8 @@ #include #include +namespace s2e::dynamics::orbit { + /** * @enum OrbitPropagateMode * @brief Propagation mode of orbit @@ -217,4 +219,6 @@ class Orbit : public ILoggable { OrbitInitializeMode SetOrbitInitializeMode(const std::string initialize_mode); +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_ORBIT_HPP_ diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 5e6065776..4dbb9838a 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -8,6 +8,8 @@ #include "rk4_orbit_propagation.hpp" +namespace s2e::dynamics::orbit { + RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, @@ -157,3 +159,5 @@ void RelativeOrbit::DerivativeFunction(double t, const s2e::math::Vector<6>& sta rhs = system_matrix_ * state; (void)t; } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 3a98c1249..609994168 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -13,6 +13,8 @@ #include "orbit.hpp" +namespace s2e::dynamics::orbit { + /** * @class RelativeOrbit * @brief Class to propagate relative orbit @@ -126,4 +128,6 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati void PropagateStm(double elapsed_sec); }; +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_RELATIVE_ORBIT_HPP_ diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index dd2c5abfa..b73971d46 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::dynamics::orbit { + Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s) : Orbit(celestial_information), OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2) { @@ -86,3 +88,5 @@ void Rk4OrbitPropagation::Propagate(const double end_time_s, const double curren TransformEciToEcef(); TransformEcefToGeodetic(); } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index 83fc56bbe..dbdc33b0d 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -11,6 +11,8 @@ #include "orbit.hpp" +namespace s2e::dynamics::orbit { + /** * @class Rk4OrbitPropagation * @brief Class to propagate spacecraft orbit with Runge-Kutta-4 method @@ -69,4 +71,6 @@ class Rk4OrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferential void Initialize(s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s = 0); }; +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_RK4_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.cpp b/src/dynamics/orbit/sgp4_orbit_propagation.cpp index 30451f568..f15c8b56c 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.cpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::dynamics::orbit { + Sgp4OrbitPropagation::Sgp4OrbitPropagation(const CelestialInformation* celestial_information, char* tle1, char* tle2, const int wgs_setting, const double current_time_jd) : Orbit(celestial_information) { @@ -66,3 +68,5 @@ void Sgp4OrbitPropagation::Propagate(const double end_time_s, const double curre TransformEciToEcef(); TransformEcefToGeodetic(); } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index 42b69681c..a31be3690 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -13,6 +13,8 @@ #include "orbit.hpp" +namespace s2e::dynamics::orbit { + /** * @class Sgp4OrbitPropagation * @brief Class to propagate spacecraft orbit with SGP4 method with TLE @@ -45,4 +47,6 @@ class Sgp4OrbitPropagation : public Orbit { elsetrec sgp4_data_; //!< Structure data for SGP4 library }; +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ From 70ec6612d7a1990b54692585db9506fbb21f5634 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:29:37 +0900 Subject: [PATCH 411/456] Add s2e::dynamics::thermal namespace --- src/dynamics/thermal/heater.cpp | 4 ++++ src/dynamics/thermal/heater.hpp | 4 ++++ src/dynamics/thermal/heater_controller.cpp | 4 ++++ src/dynamics/thermal/heater_controller.hpp | 4 ++++ src/dynamics/thermal/heatload.cpp | 4 ++++ src/dynamics/thermal/heatload.hpp | 4 ++++ src/dynamics/thermal/node.cpp | 4 ++++ src/dynamics/thermal/node.hpp | 4 ++++ src/dynamics/thermal/temperature.cpp | 4 ++++ src/dynamics/thermal/temperature.hpp | 4 ++++ 10 files changed, 40 insertions(+) diff --git a/src/dynamics/thermal/heater.cpp b/src/dynamics/thermal/heater.cpp index d47ce224a..6444ae329 100644 --- a/src/dynamics/thermal/heater.cpp +++ b/src/dynamics/thermal/heater.cpp @@ -5,6 +5,8 @@ using namespace std; +namespace s2e::dynamics::thermal { + Heater::Heater(const size_t heater_id, const double power_rating_W) : heater_id_(heater_id), power_rating_W_(power_rating_W) { AssertHeaterParams(); heater_status_ = HeaterStatus::kOff; @@ -75,3 +77,5 @@ Heater InitHeater(const std::vector& heater_str) { Heater heater(heater_id, power_rating_W); return heater; } + +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/heater.hpp b/src/dynamics/thermal/heater.hpp index 42ea9774f..ac1f47c30 100644 --- a/src/dynamics/thermal/heater.hpp +++ b/src/dynamics/thermal/heater.hpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::dynamics::thermal { + /** * @enum HeaterStatus * @brief Status of heater (On/Off) @@ -99,4 +101,6 @@ class Heater { */ Heater InitHeater(const std::vector& heater_str); +} // namespace s2e::dynamics::thermal + #endif // S2E_DYNAMICS_THERMAL_HEATER_HPP_ diff --git a/src/dynamics/thermal/heater_controller.cpp b/src/dynamics/thermal/heater_controller.cpp index 93c0fc811..6c346041e 100644 --- a/src/dynamics/thermal/heater_controller.cpp +++ b/src/dynamics/thermal/heater_controller.cpp @@ -4,6 +4,8 @@ #include using namespace std; +namespace s2e::dynamics::thermal { + HeaterController::HeaterController(const double lower_threshold_degC, const double upper_threshold_degC) : lower_threshold_degC_(lower_threshold_degC), upper_threshold_degC_(upper_threshold_degC) { AssertHeaterControllerParams(); @@ -52,3 +54,5 @@ HeaterController InitHeaterController(const std::vector& heater_str HeaterController heater_controller(lower_threshold_degC, upper_threshold_degC); return heater_controller; } + +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/heater_controller.hpp b/src/dynamics/thermal/heater_controller.hpp index 4c2353fb0..638e8d9e2 100644 --- a/src/dynamics/thermal/heater_controller.hpp +++ b/src/dynamics/thermal/heater_controller.hpp @@ -13,6 +13,8 @@ #include "heater.hpp" +namespace s2e::dynamics::thermal { + class HeaterController { public: /** @@ -89,4 +91,6 @@ class HeaterController { */ HeaterController InitHeaterController(const std::vector& heater_str); +} // namespace s2e::dynamics::thermal + #endif // S2E_DYNAMICS_THERMAL_HEATER_CONTROLLER_HPP_ diff --git a/src/dynamics/thermal/heatload.cpp b/src/dynamics/thermal/heatload.cpp index f8e5d98a6..949bfa361 100644 --- a/src/dynamics/thermal/heatload.cpp +++ b/src/dynamics/thermal/heatload.cpp @@ -7,6 +7,8 @@ using namespace std; using namespace s2e::math; +namespace s2e::dynamics::thermal { + Heatload::Heatload(int node_id, std::vector time_table_s, std::vector internal_heatload_table_W) : node_id_(node_id), time_table_s_(time_table_s), internal_heatload_table_W_(internal_heatload_table_W) { elapsed_time_s_ = 0; @@ -100,3 +102,5 @@ Heatload InitHeatload(const std::vector& time_str, const std::vecto return Heatload(node_id, time_table_s, internal_heatload_table_W); } + +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/heatload.hpp b/src/dynamics/thermal/heatload.hpp index ef17d51e4..0a3106a25 100644 --- a/src/dynamics/thermal/heatload.hpp +++ b/src/dynamics/thermal/heatload.hpp @@ -10,6 +10,8 @@ #include #include +namespace s2e::dynamics::thermal { + /** * @class Heatload * @brief Class for calculating heatload value for Node class object at elapsed time @@ -127,4 +129,6 @@ class Heatload { */ Heatload InitHeatload(const std::vector& time_str, const std::vector& internal_heatload_str); +} // namespace s2e::dynamics::thermal + #endif // S2E_DYNAMICS_THERMAL_HEATLOAD_HPP_ diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 8ec1a5849..992fe489d 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -12,6 +12,8 @@ using namespace std; using namespace s2e::math; +namespace s2e::dynamics::thermal { + Node::Node(const size_t node_id, const string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, const double capacity_J_K, const double alpha, const double area_m2, s2e::math::Vector<3> normal_vector_b) : node_id_(node_id), @@ -186,3 +188,5 @@ Node InitNode(const std::vector& node_str) { Node node(node_id, node_label, node_type, heater_id, temperature_K, capacity_J_K, alpha, area_m2, normal_v_b); return node; } + +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index e6267f79d..b75e6ad72 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::dynamics::thermal { + /** * @enum NodeType * @brief Type of node @@ -170,4 +172,6 @@ class Node { */ Node InitNode(const std::vector& node_str); +}namespace s2e::dynamics::thermal + #endif // S2E_DYNAMICS_THERMAL_NODE_HPP_ diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 0025e27f0..aec2acc7a 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -14,6 +14,8 @@ using namespace std; +namespace s2e::dynamics::thermal { + Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const EarthAlbedo* earth_albedo, @@ -388,3 +390,5 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s rk_prop_step_s, srp_environment, earth_albedo, is_calc_enabled, solar_calc_setting, debug); return temperature; } + +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 4958cc06b..c0aaec67c 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -17,6 +17,8 @@ #include "heatload.hpp" #include "node.hpp" +namespace s2e::dynamics::thermal { + /** * @enum SolarCalcSetting * @brief Whether to calculate solar radiation inside simulation @@ -166,4 +168,6 @@ class Temperature : public ILoggable { Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment, const EarthAlbedo* earth_albedo); +} // namespace s2e::dynamics::thermal + #endif // S2E_DYNAMICS_THERMAL_TEMPERATURE_HPP_ From 21675ce3e4e2536f375fcb52114c5c1eccd5fc4c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:31:40 +0900 Subject: [PATCH 412/456] Add s2e::dynamics namespace --- src/dynamics/dynamics.cpp | 4 ++++ src/dynamics/dynamics.hpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 8cf774ad8..98276524c 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -7,6 +7,8 @@ #include "../simulation/multiple_spacecraft/relative_information.hpp" +namespace s2e::dynamics { + Dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const LocalEnvironment* local_environment, const int spacecraft_id, Structure* structure, RelativeInformation* relative_information) @@ -65,3 +67,5 @@ void Dynamics::LogSetup(Logger& logger) { logger.AddLogList(orbit_); logger.AddLogList(temperature_); } + +} // namespace s2e::dynamics diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 2db4bfbbd..27797a506 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -20,6 +20,8 @@ class RelativeInformation; class LocalEnvironment; +namespace s2e::dynamics { + /** * @class Dynamics * @brief Class to manage dynamics of spacecraft @@ -127,4 +129,6 @@ class Dynamics { Structure* structure, RelativeInformation* relative_information = (RelativeInformation*)nullptr); }; +} // namespace s2e::dynamics + #endif // S2E_DYNAMICS_DYNAMICS_HPP_ From 62f53388925437d6f4579846f0b3f66e3ead632f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:36:59 +0900 Subject: [PATCH 413/456] Add s2e::environment namespace --- src/environment/global/celestial_information.cpp | 4 ++++ src/environment/global/celestial_information.hpp | 4 ++++ src/environment/global/clock_generator.cpp | 4 ++++ src/environment/global/clock_generator.hpp | 4 ++++ src/environment/global/earth_rotation.cpp | 4 ++++ src/environment/global/earth_rotation.hpp | 4 ++++ src/environment/global/global_environment.cpp | 4 ++++ src/environment/global/global_environment.hpp | 4 ++++ src/environment/global/gnss_satellites.cpp | 4 ++++ src/environment/global/gnss_satellites.hpp | 4 ++++ src/environment/global/hipparcos_catalogue.cpp | 4 ++++ src/environment/global/hipparcos_catalogue.hpp | 4 ++++ src/environment/global/moon_rotation.cpp | 6 +++++- src/environment/global/moon_rotation.hpp | 4 ++++ src/environment/global/physical_constants.hpp | 4 ++-- src/environment/global/simulation_time.cpp | 4 ++++ src/environment/global/simulation_time.hpp | 4 ++++ src/environment/local/atmosphere.cpp | 4 ++++ src/environment/local/atmosphere.hpp | 4 ++++ src/environment/local/earth_albedo.cpp | 4 ++++ src/environment/local/earth_albedo.hpp | 4 ++++ src/environment/local/geomagnetic_field.cpp | 4 ++++ src/environment/local/geomagnetic_field.hpp | 4 ++++ src/environment/local/local_celestial_information.cpp | 4 ++++ src/environment/local/local_celestial_information.hpp | 4 ++++ src/environment/local/local_environment.cpp | 4 ++++ src/environment/local/local_environment.hpp | 4 ++++ .../local/solar_radiation_pressure_environment.cpp | 4 ++++ .../local/solar_radiation_pressure_environment.hpp | 4 ++++ 29 files changed, 115 insertions(+), 3 deletions(-) diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index c51461e92..4eb09cf05 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -18,6 +18,8 @@ #include "logger/log_utility.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + CelestialInformation::CelestialInformation(const std::string inertial_frame_name, const std::string aberration_correction_setting, const std::string center_body_name, const unsigned int number_of_selected_body, int* selected_body_ids, const std::vector rotation_mode_list) @@ -244,3 +246,5 @@ CelestialInformation* InitCelestialInformation(std::string file_name) { return celestial_info; } + +} // namespace s2e::environment diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 6ffe57fbf..eeb9ff5f2 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -17,6 +17,8 @@ class MoonRotation; +namespace s2e::environment { + /** * @class CelestialInformation * @brief Class to manage the information related with the celestial bodies @@ -281,4 +283,6 @@ class CelestialInformation : public ILoggable { */ CelestialInformation* InitCelestialInformation(std::string file_name); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_CELESTIAL_INFORMATION_HPP_ diff --git a/src/environment/global/clock_generator.cpp b/src/environment/global/clock_generator.cpp index a196efac0..f2a1b7c8f 100644 --- a/src/environment/global/clock_generator.cpp +++ b/src/environment/global/clock_generator.cpp @@ -5,6 +5,8 @@ #include "clock_generator.hpp" +namespace s2e::environment { + ClockGenerator::~ClockGenerator() {} void ClockGenerator::RegisterComponent(ITickable* tickable) { components_.push_back(tickable); } @@ -38,3 +40,5 @@ void ClockGenerator::UpdateComponents(const SimulationTime* simulation_time) { TickToComponents(); } } + +} // namespace s2e::environment diff --git a/src/environment/global/clock_generator.hpp b/src/environment/global/clock_generator.hpp index b09b80c4a..91ef4c383 100644 --- a/src/environment/global/clock_generator.hpp +++ b/src/environment/global/clock_generator.hpp @@ -11,6 +11,8 @@ #include "simulation_time.hpp" +namespace s2e::environment { + /** * @class ClockGenerator * @brief Class to generate clock for classes which have ITickable @@ -57,4 +59,6 @@ class ClockGenerator { unsigned int timer_count_; //!< Timer count TODO: change to long? }; +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_CLOCK_GENERATOR_HPP_ diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 8950fd904..fd62d7b10 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -15,6 +15,8 @@ #include "math_physics/orbit/sgp4/sgp4ext.h" // for jday() #include "math_physics/orbit/sgp4/sgp4unit.h" // for gstime() +namespace s2e::environment { + // Default constructor EarthRotation::EarthRotation(const EarthRotationMode rotation_mode) : rotation_mode_(rotation_mode) { dcm_j2000_to_ecef_ = s2e::math::MakeIdentityMatrix<3>(); @@ -275,3 +277,5 @@ EarthRotationMode ConvertEarthRotationMode(const std::string mode) { return rotation_mode; } + +} // namespace s2e::environment diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index f4c7f7df7..b9680e478 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -11,6 +11,8 @@ #include "math_physics/math/matrix.hpp" +namespace s2e::environment { + /** * @enum EarthRotationMode * @brief Definition of calculation mode of earth rotation @@ -122,4 +124,6 @@ class EarthRotation { EarthRotationMode ConvertEarthRotationMode(const std::string mode); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_EARTH_ROTATION_HPP_ diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 0e89b2346..b97b78da7 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -7,6 +7,8 @@ #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + GlobalEnvironment::GlobalEnvironment(const SimulationConfiguration* simulation_configuration) { Initialize(simulation_configuration); } GlobalEnvironment::~GlobalEnvironment() { @@ -43,4 +45,6 @@ void GlobalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(gnss_satellites_); } +} // namespace s2e::environment + void GlobalEnvironment::Reset(void) { simulation_time_->ResetClock(); } diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index b8bb56890..37c51cbfb 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -13,6 +13,8 @@ #include "simulation/simulation_configuration.hpp" #include "simulation_time.hpp" +namespace s2e::environment { + /** * @class GlobalEnvironment * @brief Class to manage the global environment @@ -82,4 +84,6 @@ class GlobalEnvironment { GnssSatellites* gnss_satellites_; //!< GNSS satellites }; +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_GLOBAL_ENVIRONMENT_HPP_ diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 11b551228..d16fefc26 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -17,6 +17,8 @@ using namespace s2e::gnss; +namespace s2e::environment { + const size_t kNumberOfInterpolation = 9; void GnssSatellites::Initialize(const std::vector& sp3_files, const s2e::time_system::EpochTime start_time) { @@ -234,3 +236,5 @@ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotat return gnss_satellites; } + +} // namespace s2e::environment diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 6051ce4f5..88994a500 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -21,6 +21,8 @@ #include "math_physics/math/vector.hpp" #include "simulation_time.hpp" +namespace s2e::environment { + /** * @class GnssSatellites * @brief Class to calculate GNSS satellite position and clock @@ -153,4 +155,6 @@ class GnssSatellites : public ILoggable { */ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotation& earth_rotation, const SimulationTime& simulation_time); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 70e9fca25..72ad7dfdf 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -14,6 +14,8 @@ #include "math_physics/math/constants.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + HipparcosCatalogue::HipparcosCatalogue(double max_magnitude, std::string catalogue_path) : max_magnitude_(max_magnitude), catalogue_path_(catalogue_path) {} @@ -99,3 +101,5 @@ HipparcosCatalogue* InitHipparcosCatalogue(std::string file_name) { return hipparcos_catalogue_; } + +} // namespace s2e::environment diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index 3114fdb3a..dd20fee9d 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -12,6 +12,8 @@ #include "math_physics/math/quaternion.hpp" #include "math_physics/math/vector.hpp" +namespace s2e::environment { + /** *@struct HipparcosData *@brief Hipparcos catalogue data @@ -118,4 +120,6 @@ class HipparcosCatalogue : public ILoggable { */ HipparcosCatalogue* InitHipparcosCatalogue(std::string file_name); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_HIPPARCOS_CATALOGUE_HPP_ diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index a49e236ec..c8843e3a0 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -10,6 +10,8 @@ #include #include +namespace s2e::environment { + MoonRotation::MoonRotation(const CelestialInformation& celestial_information, MoonRotationMode mode) : mode_(mode), celestial_information_(celestial_information) { dcm_j2000_to_mcmf_ = s2e::math::MakeIdentityMatrix<3>(); @@ -50,4 +52,6 @@ MoonRotationMode ConvertMoonRotationMode(const std::string mode) { } return rotation_mode; -} \ No newline at end of file +} + +} // namespace s2e::environment diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index 5df9f247a..ebdc7c4a3 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -13,6 +13,8 @@ class CelestialInformation; +namespace s2e::environment { + /** * @enum MoonRotationMode * @brief Definition of calculation mode of moon rotation @@ -62,4 +64,6 @@ class MoonRotation { const CelestialInformation &celestial_information_; //!< Celestial Information to get moon orbit }; +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_MOON_ROTATION_HPP_ diff --git a/src/environment/global/physical_constants.hpp b/src/environment/global/physical_constants.hpp index c2acd7de0..2c279b389 100644 --- a/src/environment/global/physical_constants.hpp +++ b/src/environment/global/physical_constants.hpp @@ -8,7 +8,7 @@ #include // std::is_floating_point_v -namespace environment { +namespace s2e::environment { template using enable_if_float = std::enable_if_t, T>; @@ -39,7 +39,7 @@ DEFINE_PHYSICAL_CONSTANT(earth_flattening, 3.352797e-3L) / #undef DEFINE_PHYSICAL_CONSTANT -} // namespace environment +} // namespace s2e::environment inline double degC2K(double degC) { return (degC - environment::absolute_zero_degC); } inline double K2degC(double K) { return (K + environment::absolute_zero_degC); } diff --git a/src/environment/global/simulation_time.cpp b/src/environment/global/simulation_time.cpp index 149b88f42..e44d5a416 100644 --- a/src/environment/global/simulation_time.cpp +++ b/src/environment/global/simulation_time.cpp @@ -21,6 +21,8 @@ using namespace std; +namespace s2e::environment { + SimulationTime::SimulationTime(const double end_sec, const double step_sec, const double attitude_update_interval_sec, const double attitude_rk_step_sec, const double orbit_update_interval_sec, const double orbit_rk_step_sec, const double thermal_update_interval_sec, const double thermal_rk_step_sec, const double compo_propagate_step_sec, @@ -275,3 +277,5 @@ SimulationTime* InitSimulationTime(std::string file_name) { return simTime; } + +} // namespace s2e::environment diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index f993b5ec8..27892afdf 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -19,6 +19,8 @@ #include "math_physics/orbit/sgp4/sgp4io.h" #include "math_physics/orbit/sgp4/sgp4unit.h" +namespace s2e::environment { + /** *@struct TimeState *@brief State of timing controller @@ -334,4 +336,6 @@ class SimulationTime : public ILoggable { */ SimulationTime* InitSimulationTime(std::string file_name); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_GLOBAL_SIMULATION_TIME_HPP_ diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index ae789fdb3..cfada183c 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -14,6 +14,8 @@ #include "math_physics/randomization/random_walk.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + Atmosphere::Atmosphere(const std::string model, const std::string space_weather_file_name, const double gauss_standard_deviation_rate, const bool is_manual_param, const double manual_f107, const double manual_f107a, const double manual_ap, const LocalCelestialInformation* local_celestial_information, const SimulationTime* simulation_time) @@ -133,3 +135,5 @@ Atmosphere InitAtmosphere(const std::string initialize_file_path, const LocalCel return atmosphere; } + +} // namespace s2e::environment diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 8489891d8..2c383b78c 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -15,6 +15,8 @@ #include "math_physics/atmosphere/wrapper_nrlmsise00.hpp" #include "math_physics/math/vector.hpp" +namespace s2e::environment { + /** * @class Atmosphere * @brief Class to calculate earth's atmospheric density @@ -116,4 +118,6 @@ class Atmosphere : public ILoggable { Atmosphere InitAtmosphere(const std::string initialize_file_path, const LocalCelestialInformation* local_celestial_information, const SimulationTime* simulation_time); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_LOCAL_ATMOSPHERE_HPP_ diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 5aca6b575..fb3672a8e 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -13,6 +13,8 @@ #include "math_physics/math/vector.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + EarthAlbedo::EarthAlbedo(LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment) : local_celestial_information_(local_celestial_information), srp_environment_(srp_environment) {} @@ -57,3 +59,5 @@ EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInfo return earth_albedo; } + +} // namespace s2e::environment diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index e07ad7b46..724cba2a7 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -10,6 +10,8 @@ #include "environment/local/local_celestial_information.hpp" #include "solar_radiation_pressure_environment.hpp" +namespace s2e::environment { + /** * @class EarthAlbedo * @brief Class to calculate Solar Radiation Pressure @@ -102,4 +104,6 @@ class EarthAlbedo : public ILoggable { EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_LOCAL_EARTH_ALBEDO_HPP_ diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 48cdc57c0..008f3277c 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -11,6 +11,8 @@ #include "math_physics/randomization/random_walk.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + GeomagneticField::GeomagneticField(const std::string igrf_file_name, const double random_walk_srandard_deviation_nT, const double random_walk_limit_nT, const double white_noise_standard_deviation_nT) : magnetic_field_i_nT_(0.0), @@ -85,3 +87,5 @@ GeomagneticField InitGeomagneticField(std::string initialize_file_path) { return geomagnetic_field; } + +} // namespace s2e::environment diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 3f2adf741..100baf480 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -11,6 +11,8 @@ #include "math_physics/math/quaternion.hpp" #include "math_physics/math/vector.hpp" +namespace s2e::environment { + /** * @class GeomagneticField * @brief Class to calculate magnetic field of the earth @@ -92,4 +94,6 @@ class GeomagneticField : public ILoggable { */ GeomagneticField InitGeomagneticField(std::string initialize_file_path); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index b34fcc6ed..fde483b84 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -14,6 +14,8 @@ #include "logger/log_utility.hpp" +namespace s2e::environment { + LocalCelestialInformation::LocalCelestialInformation(const CelestialInformation* global_celestial_information) : global_celestial_information_(global_celestial_information) { int num_of_state = global_celestial_information_->GetNumberOfSelectedBodies() * 3; @@ -197,3 +199,5 @@ std::string LocalCelestialInformation::GetLogValue() const { } return str_tmp; } + +} // namespace s2e::environment diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index ec3a6cbb3..26e1c354b 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -8,6 +8,8 @@ #include "../global/celestial_information.hpp" +namespace s2e::environment { + /** * @class LocalCelestialInformation * @brief Class to manage celestial body information in the spacecraft body frame @@ -120,4 +122,6 @@ class LocalCelestialInformation : public ILoggable { const s2e::math::Vector<3> angular_velocity_b); }; +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_LOCAL_LOCAL_CELESTIAL_INFORMATION_HPP_ diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index 7cd898db9..d12f5e882 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -8,6 +8,8 @@ #include "dynamics/orbit/orbit.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment + LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { Initialize(simulation_configuration, global_environment, spacecraft_id); @@ -76,3 +78,5 @@ void LocalEnvironment::LogSetup(Logger& logger) { logger.AddLogList(atmosphere_); logger.AddLogList(celestial_information_); } + +} // namespace s2e::environment diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index a7d0b7cac..807ffa100 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -17,6 +17,8 @@ class Dynamics; +namespace s2e::environment { + /** * @class LocalEnvironment * @brief Class to manage local environments @@ -94,4 +96,6 @@ class LocalEnvironment { void Initialize(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); }; +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_LOCAL_LOCAL_ENVIRONMENT_HPP_ diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index abda33801..1ab74ebdc 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -13,6 +13,8 @@ #include "math_physics/math/vector.hpp" #include "setting_file_reader/initialize_file_access.hpp" +namespace s2e::environment { + SolarRadiationPressureEnvironment::SolarRadiationPressureEnvironment(LocalCelestialInformation* local_celestial_information) : local_celestial_information_(local_celestial_information) { solar_radiation_pressure_N_m2_ = solar_constant_W_m2_ / environment::speed_of_light_m_s; @@ -119,3 +121,5 @@ SolarRadiationPressureEnvironment InitSolarRadiationPressureEnvironment(std::str return srp_env; } + +} // namespace s2e::environment diff --git a/src/environment/local/solar_radiation_pressure_environment.hpp b/src/environment/local/solar_radiation_pressure_environment.hpp index 8fbc73250..a768ce136 100644 --- a/src/environment/local/solar_radiation_pressure_environment.hpp +++ b/src/environment/local/solar_radiation_pressure_environment.hpp @@ -9,6 +9,8 @@ #include "environment/global/physical_constants.hpp" #include "environment/local/local_celestial_information.hpp" +namespace s2e::environment { + /** * @class SolarRadiationPressureEnvironment * @brief Class to calculate Solar Radiation Pressure @@ -122,4 +124,6 @@ class SolarRadiationPressureEnvironment : public ILoggable { SolarRadiationPressureEnvironment InitSolarRadiationPressureEnvironment(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information); +} // namespace s2e::environment + #endif // S2E_ENVIRONMENT_LOCAL_SOLAR_RADIATION_PRESSURE_ENVIRONMENT_HPP_ From 1f847517244b106c3a48244b72d3969eedf8b5c6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:38:17 +0900 Subject: [PATCH 414/456] Add s2e::logger namespace --- src/logger/initialize_log.cpp | 4 ++++ src/logger/initialize_log.hpp | 4 ++++ src/logger/log_utility.hpp | 4 ++++ src/logger/loggable.hpp | 4 ++++ src/logger/logger.cpp | 4 ++++ src/logger/logger.hpp | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/src/logger/initialize_log.cpp b/src/logger/initialize_log.cpp index 239cfe3d4..3dec812af 100644 --- a/src/logger/initialize_log.cpp +++ b/src/logger/initialize_log.cpp @@ -7,6 +7,8 @@ #include "../setting_file_reader/initialize_file_access.hpp" +namespace s2e::logger { + Logger* InitLog(std::string file_name) { IniAccess ini_file(file_name); @@ -28,3 +30,5 @@ Logger* InitMonteCarloLog(std::string file_name, bool enable) { return log; } + +} // namespace s2e::logger diff --git a/src/logger/initialize_log.hpp b/src/logger/initialize_log.hpp index 0d70fc1e8..630425134 100644 --- a/src/logger/initialize_log.hpp +++ b/src/logger/initialize_log.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::logger { + /** * @fn InitLog * @brief Initialize normal logger (default.csv) @@ -23,4 +25,6 @@ Logger* InitLog(std::string file_name); */ Logger* InitMonteCarloLog(std::string file_name, bool enable); +} // namespace s2e::logger + #endif // S2E_LIBRARY_LOGGER_INITIALIZE_LOG_HPP_ diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 96ccf3c31..54599ee07 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -12,6 +12,8 @@ #include #include +namespace s2e::logger { + /** * @fn WriteScalar * @brief Write scalar value @@ -156,4 +158,6 @@ std::string WriteQuaternion(const std::string name, const std::string frame) { return str_tmp.str(); } +} // namespace s2e::logger + #endif // S2E_LIBRARY_LOGGER_LOG_UTILITY_HPP_ diff --git a/src/logger/loggable.hpp b/src/logger/loggable.hpp index ab1b22a8b..064bbf952 100644 --- a/src/logger/loggable.hpp +++ b/src/logger/loggable.hpp @@ -10,6 +10,8 @@ #include "log_utility.hpp" // This is not necessary but include here for convenience +namespace s2e::logger { + /** * @class ILoggable * @brief Abstract class to manage logging @@ -34,4 +36,6 @@ class ILoggable { bool is_log_enabled_ = true; //!< Log enable flag }; +} // namespace s2e::logger + #endif // S2E_LIBRARY_LOGGER_LOGGABLE_HPP_ diff --git a/src/logger/logger.cpp b/src/logger/logger.cpp index f4795d537..0469f38e9 100644 --- a/src/logger/logger.cpp +++ b/src/logger/logger.cpp @@ -13,6 +13,8 @@ bool Logger::is_directory_created_ = false; namespace fs = std::filesystem; +namespace s2e::logger { + Logger::Logger(const std::string &file_name, const fs::path &data_path, const fs::path &ini_file_name, const bool is_ini_save_enabled, const bool is_enabled) : is_enabled_(is_enabled), is_ini_save_enabled_(is_ini_save_enabled) { @@ -103,3 +105,5 @@ void Logger::CopyFileToLogDirectory(const fs::path &ini_file_name) { fs::copy_file(ini_file_name, to_file_name); return; } + +} // namespace s2e::logger diff --git a/src/logger/logger.hpp b/src/logger/logger.hpp index e9ac5b1f0..fa85e21ed 100644 --- a/src/logger/logger.hpp +++ b/src/logger/logger.hpp @@ -15,6 +15,8 @@ #include "loggable.hpp" +namespace s2e::logger { + /** * @class Logger * @brief Class to manage log output file @@ -121,4 +123,6 @@ class Logger { std::filesystem::path CreateDirectory(const std::filesystem::path &data_path, const std::string &time); }; +} // namespace s2e::logger + #endif // S2E_LIBRARY_LOGGER_LOGGER_HPP_ From fdf93e2c24e0b62aea51907637aabb3ffdb31c14 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:41:07 +0900 Subject: [PATCH 415/456] Add s2e::setting_file_reader namespace --- src/setting_file_reader/c2a_command_database.cpp | 4 ++++ src/setting_file_reader/c2a_command_database.hpp | 4 ++++ src/setting_file_reader/initialize_file_access.cpp | 4 ++++ src/setting_file_reader/initialize_file_access.hpp | 4 ++++ src/setting_file_reader/wings_operation_file.cpp | 4 ++++ src/setting_file_reader/wings_operation_file.hpp | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/src/setting_file_reader/c2a_command_database.cpp b/src/setting_file_reader/c2a_command_database.cpp index 650c11cf5..72e8bdf18 100644 --- a/src/setting_file_reader/c2a_command_database.cpp +++ b/src/setting_file_reader/c2a_command_database.cpp @@ -11,6 +11,8 @@ #include #include +namespace s2e::setting_file_reader { + C2aCommandInformation::C2aCommandInformation(const std::string cmd_db_line) { if (cmd_db_line.find("*") == 0) return; if (cmd_db_line.find(",") != 0) return; @@ -158,3 +160,5 @@ void DecodeC2aCommandArgument(const C2aArgumentType type, const std::string argu break; } } + +} // namespace s2e::setting_file_reader diff --git a/src/setting_file_reader/c2a_command_database.hpp b/src/setting_file_reader/c2a_command_database.hpp index 9fd2e9125..fce12028f 100644 --- a/src/setting_file_reader/c2a_command_database.hpp +++ b/src/setting_file_reader/c2a_command_database.hpp @@ -12,6 +12,8 @@ #include #include +namespace s2e::setting_file_reader { + /** * @enum C2aArgumentType * @brief Argument type used in C2A command @@ -115,4 +117,6 @@ class C2aCommandDatabase { */ void DecodeC2aCommandArgument(const C2aArgumentType type, const std::string argument_string, uint8_t* param, size_t& size_param); +} // namespace s2e::setting_file_reader + #endif // S2E_LIBRARY_INITIALIZE_C2A_COMMAND_DATABASE_HPP_ diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index 565a66f98..9397057ad 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -14,6 +14,8 @@ #include "../utilities/macros.hpp" +namespace s2e::setting_file_reader { + #ifdef WIN32 IniAccess::IniAccess(const std::string file_path) : file_path_(file_path) { // strcpy_s(file_path_char_, (size_t)_countof(file_path_char_), file_path_.c_str()); @@ -283,3 +285,5 @@ void IniAccess::ReadCsvString(std::vector>& output_valu output_value.push_back(temp); } } + +} // namespace s2e::setting_file_reader diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index 06bbc2866..48ff1acd1 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -27,6 +27,8 @@ #include #include +namespace s2e::setting_file_reader { + /** * @class IniAccess * @brief Class to read and get parameters for the `ini` format file @@ -216,4 +218,6 @@ void IniAccess::ReadVector(const char* section_name, const char* key_name, s2e:: } } +} // namespace s2e::setting_file_reader + #endif // S2E_LIBRARY_INITIALIZE_INITIALIZE_FILE_ACCESS_HPP_ diff --git a/src/setting_file_reader/wings_operation_file.cpp b/src/setting_file_reader/wings_operation_file.cpp index 628c22fcf..4b9b56d0a 100644 --- a/src/setting_file_reader/wings_operation_file.cpp +++ b/src/setting_file_reader/wings_operation_file.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::setting_file_reader { + WingsOperationFile::WingsOperationFile(const std::string file_path) { // File open std::ifstream file(file_path); @@ -45,3 +47,5 @@ std::string WingsOperationFile::GetLatestLine() { return line; } + +} // namespace s2e::setting_file_reader diff --git a/src/setting_file_reader/wings_operation_file.hpp b/src/setting_file_reader/wings_operation_file.hpp index 11cb2a9b0..848010aac 100644 --- a/src/setting_file_reader/wings_operation_file.hpp +++ b/src/setting_file_reader/wings_operation_file.hpp @@ -11,6 +11,8 @@ #include "c2a_command_database.hpp" +namespace s2e::setting_file_reader { + /** * @class WingsOperationFile * @brief A class to handle WINGS operation file @@ -35,4 +37,6 @@ class WingsOperationFile { size_t line_pointer_ = 0; //!< Line pointer }; +} // namespace s2e::setting_file_reader + #endif // S2E_LIBRARY_INITIALIZE_WINGS_OPERATION_FILE_HPP_ From a4adecd467c03114842db80489ad53474d5becbc Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:49:04 +0900 Subject: [PATCH 416/456] Add s2e::simulation namespace --- src/simulation/case/simulation_case.cpp | 6 +++++- src/simulation/case/simulation_case.hpp | 4 ++++ src/simulation/ground_station/ground_station.cpp | 4 ++++ src/simulation/ground_station/ground_station.hpp | 4 ++++ src/simulation/hils/hils_port_manager.cpp | 4 ++++ src/simulation/hils/hils_port_manager.hpp | 4 ++++ .../initialize_monte_carlo_parameters.cpp | 4 ++++ .../initialize_monte_carlo_parameters.hpp | 4 ++++ .../initialize_monte_carlo_simulation.cpp | 4 ++++ .../initialize_monte_carlo_simulation.hpp | 4 ++++ .../monte_carlo_simulation_executor.cpp | 4 ++++ .../monte_carlo_simulation_executor.hpp | 4 ++++ src/simulation/monte_carlo_simulation/simulation_object.cpp | 4 ++++ src/simulation/monte_carlo_simulation/simulation_object.hpp | 4 ++++ .../multiple_spacecraft/inter_spacecraft_communication.cpp | 4 ++++ .../multiple_spacecraft/inter_spacecraft_communication.hpp | 4 ++++ src/simulation/multiple_spacecraft/relative_information.cpp | 4 ++++ src/simulation/multiple_spacecraft/relative_information.hpp | 4 ++++ src/simulation/simulation_configuration.hpp | 4 ++++ src/simulation/spacecraft/installed_components.cpp | 4 ++++ src/simulation/spacecraft/installed_components.hpp | 4 ++++ src/simulation/spacecraft/spacecraft.cpp | 4 ++++ src/simulation/spacecraft/spacecraft.hpp | 4 ++++ .../spacecraft/structure/initialize_structure.cpp | 4 ++++ .../spacecraft/structure/initialize_structure.hpp | 4 ++++ .../spacecraft/structure/kinematics_parameters.cpp | 6 +++++- .../spacecraft/structure/kinematics_parameters.hpp | 4 ++++ .../spacecraft/structure/residual_magnetic_moment.cpp | 4 ++++ .../spacecraft/structure/residual_magnetic_moment.hpp | 4 ++++ src/simulation/spacecraft/structure/structure.cpp | 4 ++++ src/simulation/spacecraft/structure/structure.hpp | 4 ++++ src/simulation/spacecraft/structure/surface.cpp | 4 ++++ src/simulation/spacecraft/structure/surface.hpp | 4 ++++ 33 files changed, 134 insertions(+), 2 deletions(-) diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index 1a19dd003..f9e869937 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::simulation { + SimulationCase::SimulationCase(const std::string initialize_base_file) { // Initialize Log simulation_configuration_.main_logger_ = InitLog(initialize_base_file); @@ -104,4 +106,6 @@ void SimulationCase::InitializeSimulationConfiguration(const std::string initial // Global Environment global_environment_ = new GlobalEnvironment(&simulation_configuration_); global_environment_->LogSetup(*(simulation_configuration_.main_logger_)); -} \ No newline at end of file +} + +} // namespace s2e::simulation diff --git a/src/simulation/case/simulation_case.hpp b/src/simulation/case/simulation_case.hpp index 68f73f66c..53d37f8a9 100644 --- a/src/simulation/case/simulation_case.hpp +++ b/src/simulation/case/simulation_case.hpp @@ -13,6 +13,8 @@ #include "../simulation_configuration.hpp" class Logger; +namespace s2e::simulation { + /** * @class SimulationCase * @brief Base class to define simulation scenario @@ -98,4 +100,6 @@ class SimulationCase : public ILoggable { virtual void UpdateTargetObjects() = 0; }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_CASE_SIMULATION_CASE_HPP_ diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 4a0110fc4..12ee9ae4a 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -13,6 +13,8 @@ #include #include +namespace s2e::simulation { + GroundStation::GroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id) : ground_station_id_(ground_station_id) { Initialize(configuration, ground_station_id_); @@ -90,3 +92,5 @@ std::string GroundStation::GetLogValue() const { str_tmp += WriteVector(position_i_m_); return str_tmp; } + +} // namespace s2e::simulation diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index bdb320af9..42a3b8cac 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -12,6 +12,8 @@ #include "../simulation_configuration.hpp" +namespace s2e::simulation { + /** * @class GroundStation * @brief Base class of ground station @@ -109,4 +111,6 @@ class GroundStation : public ILoggable { bool CalcIsVisible(const Vector<3> spacecraft_position_ecef_m); }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_GROUND_STATION_GROUND_STATION_HPP_ diff --git a/src/simulation/hils/hils_port_manager.cpp b/src/simulation/hils/hils_port_manager.cpp index 40e4d36fe..4eda6559f 100644 --- a/src/simulation/hils/hils_port_manager.cpp +++ b/src/simulation/hils/hils_port_manager.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::simulation { + // #define HILS_PORT_MANAGER_SHOW_DEBUG_DATA HilsPortManager::HilsPortManager() {} @@ -258,3 +260,5 @@ int HilsPortManager::I2cControllerReceive(unsigned int port_id, unsigned char* b int HilsPortManager::I2cControllerSend(unsigned int port_id, const unsigned char* buffer, int offset, int length) { return UartSend(port_id, buffer, offset, length); } + +} // namespace s2e::simulation diff --git a/src/simulation/hils/hils_port_manager.hpp b/src/simulation/hils/hils_port_manager.hpp index 9fbeaf2c7..06d00b2f7 100644 --- a/src/simulation/hils/hils_port_manager.hpp +++ b/src/simulation/hils/hils_port_manager.hpp @@ -12,6 +12,8 @@ #endif #include +namespace s2e::simulation { + /** * @class HilsPortManager * @brief Class to manage COM ports for HILS test @@ -168,4 +170,6 @@ class HilsPortManager { #endif }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_HILS_HILS_PORT_MANAGER_HPP_ diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index 8ffaa5ad7..0020cffc5 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -9,6 +9,8 @@ using namespace std; +namespace s2e::simulation { + random_device InitializedMonteCarloParameters::randomizer_; mt19937 InitializedMonteCarloParameters::mt_; uniform_real_distribution<>* InitializedMonteCarloParameters::uniform_distribution_; @@ -315,3 +317,5 @@ void InitializedMonteCarloParameters::GenerateQuaternionNormal() { randomized_value_.push_back(temp_q[i]); } } + +} // namespace s2e::simulation diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index 28159c98c..1570aaa1a 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -13,6 +13,8 @@ #include #include +namespace s2e::simulation { + /** * @class InitializedMonteCarloParameters * @brief Initialized parameters for Monte-Carlo simulation @@ -232,4 +234,6 @@ void InitializedMonteCarloParameters::GetRandomizedVector(s2e::math::Vector #include +namespace s2e::simulation { + #define MAX_CHAR_NUM 256 MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name) { @@ -93,3 +95,5 @@ MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name) { return monte_carlo_simulator; } + +} // namespace s2e::simulation diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.hpp index e4dcd60a2..fd7678cd4 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.hpp @@ -9,10 +9,14 @@ #include "initialize_monte_carlo_parameters.hpp" #include "monte_carlo_simulation_executor.hpp" +namespace s2e::simulation { + /** * @fn InitMonteCarloSimulation * @brief Initialize function for Monte-Carlo Simulator */ MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name); +} // namespace s2e::simulation + #endif // S2E_SIMULATION_MONTE_CARLO_SIMULATION_INITIALIZE_MONTE_CARLO_SIMULATION_HPP_ diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp index 1661c6e3a..dda7abfd0 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp @@ -7,6 +7,8 @@ using std::string; +namespace s2e::simulation { + MonteCarloSimulationExecutor::MonteCarloSimulationExecutor(unsigned long long total_num_of_executions) : total_number_of_executions_(total_num_of_executions) { number_of_executions_done_ = 0; @@ -69,3 +71,5 @@ void MonteCarloSimulationExecutor::RandomizeAllParameters() { void MonteCarloSimulationExecutor::SetSeed(unsigned long seed, bool is_deterministic) { InitializedMonteCarloParameters::SetSeed(seed, is_deterministic); } + +} // namespace s2e::simulation diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index 7209b38a0..97626e47e 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -12,6 +12,8 @@ // #include "simulation_object.hpp" #include "initialize_monte_carlo_parameters.hpp" +namespace s2e::simulation { + /** * @class MonteCarloSimulationExecutor * @brief Monte-Carlo Simulation Executor class @@ -166,4 +168,6 @@ void MonteCarloSimulationExecutor::AddInitializedMonteCarloParameter(std::string } } +} // namespace s2e::simulation + #endif // S2E_SIMULATION_MONTE_CARLO_SIMULATION_MONTE_CARLO_SIMULATION_EXECUTOR_HPP_ diff --git a/src/simulation/monte_carlo_simulation/simulation_object.cpp b/src/simulation/monte_carlo_simulation/simulation_object.cpp index a5b1e7b51..0f41bf32d 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.cpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.cpp @@ -5,6 +5,8 @@ #include "simulation_object.hpp" +namespace s2e::simulation { + std::map SimulationObject::object_list_; SimulationObject::SimulationObject(std::string name) : name_(name) { @@ -41,3 +43,5 @@ void SimulationObject::GetInitializedMonteCarloParameterQuaternion(const MonteCa std::string init_monte_carlo_parameter_name, s2e::math::Quaternion& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterQuaternion(name_, init_monte_carlo_parameter_name, destination); } + +} // namespace s2e::simulation diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index 5a16163ea..cb1c2df09 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -16,6 +16,8 @@ #include "initialize_monte_carlo_parameters.hpp" #include "monte_carlo_simulation_executor.hpp" +namespace s2e::simulation { + /** * @class SimulationObject * @brief Class to manage randomization of variables for Monte-Carlo simulation @@ -84,4 +86,6 @@ void SimulationObject::GetInitializedMonteCarloParameterVector(const MonteCarloS monte_carlo_simulator.GetInitializedMonteCarloParameterVector(name_, init_monte_carlo_parameter_name, destination); } +} // namespace s2e::simulation + #endif // S2E_SIMULATION_MONTE_CARLO_SIMULATION_SIMULATION_OBJECT_HPP_ diff --git a/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp b/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp index 0324d2e2e..1fd56c363 100644 --- a/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp +++ b/src/simulation/multiple_spacecraft/inter_spacecraft_communication.cpp @@ -7,8 +7,12 @@ #include +namespace s2e::simulation { + InterSpacecraftCommunication::InterSpacecraftCommunication(const SimulationConfiguration* simulation_configuration) { UNUSED(simulation_configuration); } InterSpacecraftCommunication::~InterSpacecraftCommunication() {} + +} // namespace s2e::simulation diff --git a/src/simulation/multiple_spacecraft/inter_spacecraft_communication.hpp b/src/simulation/multiple_spacecraft/inter_spacecraft_communication.hpp index 11b32008e..f667d60c9 100644 --- a/src/simulation/multiple_spacecraft/inter_spacecraft_communication.hpp +++ b/src/simulation/multiple_spacecraft/inter_spacecraft_communication.hpp @@ -8,6 +8,8 @@ #include "../simulation_configuration.hpp" +namespace s2e::simulation { + /** * @class InterSpacecraftCommunication * @brief Base class of inter satellite communication @@ -28,4 +30,6 @@ class InterSpacecraftCommunication { private: }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_MULTIPLE_SPACECRAFT_INTER_SPACECRAFT_COMMUNICATION_HPP_ diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index 236a9ff19..b5c85d32d 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -5,6 +5,8 @@ #include "relative_information.hpp" +namespace s2e::simulation { + RelativeInformation::RelativeInformation() {} RelativeInformation::~RelativeInformation() {} @@ -163,3 +165,5 @@ void RelativeInformation::ResizeLists() { relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); relative_attitude_quaternion_list_.assign(size, std::vector(size, s2e::math::Quaternion(0, 0, 0, 1))); } + +} // namespace s2e::simulation diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index 2eb7e7789..a5cbe1630 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -12,6 +12,8 @@ #include "../../logger/loggable.hpp" #include "../../logger/logger.hpp" +namespace s2e::simulation { + /** * @class RelativeInformation * @brief Base class to manage relative information between spacecraft @@ -170,4 +172,6 @@ class RelativeInformation : public ILoggable { void ResizeLists(); }; +} // namespace s2e::simulation + #endif // S2E_MULTIPLE_SPACECRAFT_RELATIVE_INFORMATION_HPP_ diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index 28b6f74f0..599b6ec4e 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -11,6 +11,8 @@ #include "../logger/logger.hpp" +namespace s2e::simulation { + /** * @struct SimulationConfiguration * @brief Simulation setting information @@ -35,4 +37,6 @@ struct SimulationConfiguration { ~SimulationConfiguration() { delete main_logger_; } }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SIMULATION_CONFIGURATION_HPP_ diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index 6dcb6ee8c..ff7ce9b5c 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::simulation { + s2e::math::Vector<3> InstalledComponents::GenerateForce_b_N() { s2e::math::Vector<3> force_b_N_(0.0); return force_b_N_; @@ -18,3 +20,5 @@ s2e::math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { } void InstalledComponents::LogSetup(Logger& logger) { UNUSED(logger); } + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index daf41a7a8..6e5a3c61c 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::simulation { + /** * @class InstalledComponents * @brief Base class to express components list installed on a spacecraft @@ -49,4 +51,6 @@ class InstalledComponents { virtual void LogSetup(Logger& logger); }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index 61a7762d4..c80950dd5 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::simulation { + Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information) : spacecraft_id_(spacecraft_id) { @@ -74,3 +76,5 @@ void Spacecraft::Update(const SimulationTime* simulation_time) { } void Spacecraft::Clear(void) { dynamics_->ClearForceTorque(); } + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index 2d9552f24..a59ea4eaa 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -15,6 +15,8 @@ #include "installed_components.hpp" #include "structure/structure.hpp" +namespace s2e::simulation { + /** * @class Spacecraft * @brief Base class to express Spacecraft @@ -107,4 +109,6 @@ class Spacecraft { const unsigned int spacecraft_id_; //!< ID of the spacecraft }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_SPACECRAFT_HPP_ diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index b8e578398..543203f75 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::simulation { + #define MIN_VAL 1e-6 KinematicsParameters InitKinematicsParameters(std::string file_name) { auto conf = IniAccess(file_name); @@ -119,3 +121,5 @@ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { ResidualMagneticMoment rmm_params(rmm_const_b, rmm_rwdev, random_walk_limit_Am2, random_noise_standard_deviation_Am2); return rmm_params; } + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/initialize_structure.hpp b/src/simulation/spacecraft/structure/initialize_structure.hpp index 59311219a..53065ff2e 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.hpp +++ b/src/simulation/spacecraft/structure/initialize_structure.hpp @@ -10,6 +10,8 @@ #include +namespace s2e::simulation { + /** * @fn InitKinematicsParameters * @brief Initialize the kinematics parameters with an ini file @@ -26,4 +28,6 @@ std::vector InitSurfaces(std::string file_name); */ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name); +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_INITIALIZE_STRUCTURE_HPP_ diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 289c62cc7..9318c92e7 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -5,5 +5,9 @@ #include "kinematics_parameters.hpp" +namespace s2e::simulation { + KinematicsParameters::KinematicsParameters(s2e::math::Vector<3> center_of_gravity_b_m, double mass_kg, s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) - : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} \ No newline at end of file + : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 6cea84b20..c7d3db504 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::simulation { + /** * @class KinematicsParameters * @brief Class for spacecraft Kinematics information @@ -86,4 +88,6 @@ class KinematicsParameters { s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp index 0fe90e09f..f88ef8b39 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp @@ -5,9 +5,13 @@ #include "residual_magnetic_moment.hpp" +namespace s2e::simulation { + ResidualMagneticMoment::ResidualMagneticMoment(const Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, const double random_walk_limit_Am2, const double random_noise_standard_deviation_Am2) : constant_value_b_Am2_(constant_value_b_Am2_), random_walk_standard_deviation_Am2_(random_walk_standard_deviation_Am2), random_walk_limit_Am2_(random_walk_limit_Am2), random_noise_standard_deviation_Am2_(random_noise_standard_deviation_Am2) {} + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 93d5e44ab..750db9a55 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -9,6 +9,8 @@ #include using s2e::math::Vector; +namespace s2e::simulation { + /** * @class ResidualMagneticMoment * @brief Class for spacecraft RMM (Residual Magnetic Moment) @@ -70,4 +72,6 @@ class ResidualMagneticMoment { double random_noise_standard_deviation_Am2_; //!< Standard deviation of white noise of RMM [Am2] }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/structure.cpp b/src/simulation/spacecraft/structure/structure.cpp index bf4510005..2958437de 100644 --- a/src/simulation/spacecraft/structure/structure.cpp +++ b/src/simulation/spacecraft/structure/structure.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::simulation { + Structure::Structure(const SimulationConfiguration* simulation_configuration, const int spacecraft_id) { Initialize(simulation_configuration, spacecraft_id); } @@ -28,3 +30,5 @@ void Structure::Initialize(const SimulationConfiguration* simulation_configurati surfaces_ = InitSurfaces(ini_fname); residual_magnetic_moment_ = new ResidualMagneticMoment(InitResidualMagneticMoment(ini_fname)); } + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/structure.hpp b/src/simulation/spacecraft/structure/structure.hpp index acc0b5d36..c56943f58 100644 --- a/src/simulation/spacecraft/structure/structure.hpp +++ b/src/simulation/spacecraft/structure/structure.hpp @@ -13,6 +13,8 @@ #include "residual_magnetic_moment.hpp" #include "surface.hpp" +namespace s2e::simulation { + /** * @class Structure * @brief Class for spacecraft structure information @@ -74,4 +76,6 @@ class Structure { ResidualMagneticMoment* residual_magnetic_moment_; //!< Residual Magnetic Moment }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_STRUCTURE_HPP_ diff --git a/src/simulation/spacecraft/structure/surface.cpp b/src/simulation/spacecraft/structure/surface.cpp index 58b0b4cbd..9c6c1326c 100644 --- a/src/simulation/spacecraft/structure/surface.cpp +++ b/src/simulation/spacecraft/structure/surface.cpp @@ -5,6 +5,8 @@ #include "surface.hpp" +namespace s2e::simulation { + Surface::Surface(const s2e::math::Vector<3> position_b_m, const s2e::math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity) : position_b_m_(position_b_m), @@ -13,3 +15,5 @@ Surface::Surface(const s2e::math::Vector<3> position_b_m, const s2e::math::Vecto reflectivity_(reflectivity), specularity_(specularity), air_specularity_(air_specularity) {} + +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 2b4b9439f..01367ee95 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -8,6 +8,8 @@ #include +namespace s2e::simulation { + /** * @class Surface * @brief Class for spacecraft surface @@ -113,4 +115,6 @@ class Surface { double air_specularity_; //!< Specularity for air drag }; +} // namespace s2e::simulation + #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_SURFACE_HPP_ From 2091a7070f053e0fe8a5580b3bcd123cb50ce1c9 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:52:05 +0900 Subject: [PATCH 417/456] Add s2e::utilities namespace --- src/s2e.cpp | 4 ++++ src/utilities/com_port_interface.cpp | 4 ++++ src/utilities/com_port_interface.hpp | 5 +++++ src/utilities/endian.cpp | 6 +++++- src/utilities/endian.hpp | 4 ++++ src/utilities/macros.hpp | 4 ++++ src/utilities/quantization.cpp | 4 ++++ src/utilities/quantization.hpp | 4 ++++ src/utilities/ring_buffer.cpp | 4 ++++ src/utilities/ring_buffer.hpp | 4 ++++ src/utilities/slip.cpp | 4 ++++ src/utilities/slip.hpp | 4 ++++ 12 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/s2e.cpp b/src/s2e.cpp index 960452763..cc1585976 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -23,6 +23,8 @@ // #include "interface/hils/COSMOSWrapper.h" // #include "interface/hils/HardwareMessage.h" +namespace s2e { + void print_path(std::string path) { #ifdef WIN32 std::cout << path << std::endl; @@ -79,3 +81,5 @@ int main(int argc, char *argv[]) return EXIT_SUCCESS; } + +} // namaspace s2e diff --git a/src/utilities/com_port_interface.cpp b/src/utilities/com_port_interface.cpp index ab15eb3ab..70209cde8 100644 --- a/src/utilities/com_port_interface.cpp +++ b/src/utilities/com_port_interface.cpp @@ -7,6 +7,8 @@ #include "com_port_interface.hpp" +namespace s2e::utilities { + ComPortInterface::ComPortInterface(int port_id, int baudrate, unsigned int tx_buffer_size, unsigned int rx_buffer_size) : kPortId(port_id), kPortName(PortName(port_id)), kBaudRate(baudrate), kTxBufferSize(tx_buffer_size), kRxBufferSize(rx_buffer_size) { // Allocate managed memory @@ -114,3 +116,5 @@ int ComPortInterface::DiscardInBuffer() { } return 0; } + +} // namespace s2e::utilities diff --git a/src/utilities/com_port_interface.hpp b/src/utilities/com_port_interface.hpp index 03ccd568b..aca6d663d 100644 --- a/src/utilities/com_port_interface.hpp +++ b/src/utilities/com_port_interface.hpp @@ -17,6 +17,9 @@ using namespace System; using namespace System::Runtime::InteropServices; + +namespace s2e::utilities { + typedef cli::array bytearray; /** @@ -105,4 +108,6 @@ class ComPortInterface { msclr::gcroot rx_buf_; //!< RX Buffer }; +} // namespace s2e::utilities + #endif // S2E_LIBRARY_COMMUNICATION_COM_PORT_INTERFACE_HPP_ diff --git a/src/utilities/endian.cpp b/src/utilities/endian.cpp index a20149b0c..8286204ea 100644 --- a/src/utilities/endian.cpp +++ b/src/utilities/endian.cpp @@ -7,6 +7,8 @@ #include +namespace s2e::utilities { + void *endian_memcpy(void *dst, const void *src, size_t size) { #ifdef IS_LITTLE_ENDIAN uint8_t *src_ = (uint8_t *)src; @@ -25,4 +27,6 @@ void *endian_memcpy(void *dst, const void *src, size_t size) { #else return memcpy(dst, src, size); #endif // IS_LITTLE_ENDIAN -} \ No newline at end of file +} + +} // namespace s2e::utilities diff --git a/src/utilities/endian.hpp b/src/utilities/endian.hpp index 27195efd1..966800f36 100644 --- a/src/utilities/endian.hpp +++ b/src/utilities/endian.hpp @@ -11,6 +11,8 @@ #include "endian_define.hpp" // for IS_LITTLE_ENDIAN +namespace s2e::utilities { + /** * @fn endian_memcpy * @brief Memory copy considering endian @@ -20,4 +22,6 @@ */ void *endian_memcpy(void *dst, const void *src, size_t count); +} // namespace s2e::utilities + #endif // S2E_LIBRARY_UTILITIES_ENDIAN_HPP_ diff --git a/src/utilities/macros.hpp b/src/utilities/macros.hpp index 308db3cd8..f78b16fe0 100644 --- a/src/utilities/macros.hpp +++ b/src/utilities/macros.hpp @@ -6,6 +6,10 @@ #ifndef S2E_LIBRARY_UTILITIES_MACROS_HPP_ #define S2E_LIBRARY_UTILITIES_MACROS_HPP_ +namespace s2e::utilities { + #define UNUSED(x) (void)(x) //!< Macro to avoid unused warnings +} // namespace s2e::utilities + #endif // S2E_LIBRARY_UTILITIES_MACROS_HPP_ diff --git a/src/utilities/quantization.cpp b/src/utilities/quantization.cpp index 114c0e2fe..9b8aa00d5 100644 --- a/src/utilities/quantization.cpp +++ b/src/utilities/quantization.cpp @@ -5,9 +5,13 @@ #include "quantization.hpp" +namespace s2e::utilities { + double quantization(const double continuous_number, const double resolution) { int bin_num = (int)((double)continuous_number / resolution); return (double)bin_num * resolution; } float quantization_float(const double continuous_number, const double resolution) { return (float)quantization(continuous_number, resolution); } + +} // namespace s2e::utilities diff --git a/src/utilities/quantization.hpp b/src/utilities/quantization.hpp index f23eebdeb..47bdd4f71 100644 --- a/src/utilities/quantization.hpp +++ b/src/utilities/quantization.hpp @@ -6,6 +6,8 @@ #ifndef S2E_LIBRARY_UTILITIES_QUANTIZATION_HPP_ #define S2E_LIBRARY_UTILITIES_QUANTIZATION_HPP_ +namespace s2e::utilities { + /** * @fn quantization * @brief Default constructor without any initialization @@ -24,4 +26,6 @@ double quantization(const double continuous_number, const double resolution); */ float quantization_float(const double continuous_number, const double resolution); +} // namespace s2e::utilities + #endif // S2E_LIBRARY_UTILITIES_QUANTIZATION_HPP_ diff --git a/src/utilities/ring_buffer.cpp b/src/utilities/ring_buffer.cpp index d89f10204..feb9ec73e 100644 --- a/src/utilities/ring_buffer.cpp +++ b/src/utilities/ring_buffer.cpp @@ -10,6 +10,8 @@ #include #include +namespace s2e::utilities { + RingBuffer::RingBuffer(int buffer_size) : buffer_size_(buffer_size) { buffer_ = new byte[buffer_size]; write_pointer_ = 0; @@ -44,3 +46,5 @@ int RingBuffer::Read(byte* buffer, const unsigned int offset, const unsigned int return read_count; } + +} // namespace s2e::utilities diff --git a/src/utilities/ring_buffer.hpp b/src/utilities/ring_buffer.hpp index 3e133de26..95a45d60f 100644 --- a/src/utilities/ring_buffer.hpp +++ b/src/utilities/ring_buffer.hpp @@ -6,6 +6,8 @@ #ifndef S2E_LIBRARY_UTILITIES_RING_BUFFER_HPP_ #define S2E_LIBRARY_UTILITIES_RING_BUFFER_HPP_ +namespace s2e::utilities { + typedef unsigned char byte; /** @@ -52,4 +54,6 @@ class RingBuffer { unsigned int write_pointer_; //!< Write pointer }; +} // namespace s2e::utilities + #endif // S2E_LIBRARY_UTILITIES_RING_BUFFER_HPP_ diff --git a/src/utilities/slip.cpp b/src/utilities/slip.cpp index 6f2192409..beeef8e53 100644 --- a/src/utilities/slip.cpp +++ b/src/utilities/slip.cpp @@ -8,6 +8,8 @@ #include #include +namespace s2e::utilities { + static uint8_t kSlipFend_ = 0xc0; //!< FEND: Frame End static uint8_t kSlipFesc_ = 0xdb; //!< FESC: Frame Escape static uint8_t kSlipTfend_ = 0xdc; //!< TFEND: Transposed Frame End @@ -77,3 +79,5 @@ std::vector encode_slip_with_header(const std::vector in) { out.insert(out.begin(), kSlipFend_); return out; } + +} // namespace s2e::utilities diff --git a/src/utilities/slip.hpp b/src/utilities/slip.hpp index b5355bb5d..e001295b3 100644 --- a/src/utilities/slip.hpp +++ b/src/utilities/slip.hpp @@ -10,6 +10,8 @@ #include +namespace s2e::utilities { + /** * @fn decode_slip * @brief Decode SLIP data @@ -40,4 +42,6 @@ std::vector encode_slip(std::vector in); */ std::vector encode_slip_with_header(std::vector in); +} // namespace s2e::utilities + #endif // S2E_LIBRARY_UTILITIES_SLIP_HPP_ From 27bbb1a9b1fb7c0f6cfe9435b494435e14057b0f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:52:21 +0900 Subject: [PATCH 418/456] Fix typo --- src/s2e.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/s2e.cpp b/src/s2e.cpp index cc1585976..7861f38af 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -82,4 +82,4 @@ int main(int argc, char *argv[]) return EXIT_SUCCESS; } -} // namaspace s2e +} // namespace s2e From ad7eb1cda6fabb4de133041d5a49ef9c1b01b829 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 14:59:12 +0900 Subject: [PATCH 419/456] Add s2e::sample namespace --- src/simulation_sample/case/sample_case.cpp | 6 +++++- src/simulation_sample/case/sample_case.hpp | 6 +++++- .../ground_station/sample_ground_station.cpp | 4 ++++ .../ground_station/sample_ground_station.hpp | 4 ++++ .../ground_station/sample_ground_station_components.cpp | 4 ++++ .../ground_station/sample_ground_station_components.hpp | 4 ++++ src/simulation_sample/spacecraft/sample_components.cpp | 4 ++++ src/simulation_sample/spacecraft/sample_components.hpp | 4 ++++ .../spacecraft/sample_port_configuration.hpp | 4 ++++ src/simulation_sample/spacecraft/sample_spacecraft.cpp | 4 ++++ src/simulation_sample/spacecraft/sample_spacecraft.hpp | 4 ++++ 11 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/simulation_sample/case/sample_case.cpp b/src/simulation_sample/case/sample_case.cpp index ce6376ebe..259b677b5 100644 --- a/src/simulation_sample/case/sample_case.cpp +++ b/src/simulation_sample/case/sample_case.cpp @@ -5,7 +5,9 @@ #include "sample_case.hpp" -SampleCase::SampleCase(std::string initialise_base_file) : SimulationCase(initialise_base_file) {} +namespace s2e::sample { + +SampleCase::SampleCase(std::string initialise_base_file) : s2e::simulation::SimulationCase(initialise_base_file) {} SampleCase::~SampleCase() { delete sample_spacecraft_; @@ -47,3 +49,5 @@ std::string SampleCase::GetLogValue() const { return str_tmp; } + +} // namespace s2e::sample diff --git a/src/simulation_sample/case/sample_case.hpp b/src/simulation_sample/case/sample_case.hpp index a4664a190..bbc86be45 100644 --- a/src/simulation_sample/case/sample_case.hpp +++ b/src/simulation_sample/case/sample_case.hpp @@ -11,11 +11,13 @@ #include "../ground_station/sample_ground_station.hpp" #include "../spacecraft/sample_spacecraft.hpp" +namespace s2e::sample { + /** * @class SampleCase * @brief An example of user defined simulation class */ -class SampleCase : public SimulationCase { +class SampleCase : public s2e::simulation::SimulationCase { public: /** * @fn SampleCase @@ -57,4 +59,6 @@ class SampleCase : public SimulationCase { void UpdateTargetObjects(); }; +} // namespace s2e::sample + #endif // S2E_SIMULATION_SAMPLE_CASE_SAMPLE_CASE_HPP_ diff --git a/src/simulation_sample/ground_station/sample_ground_station.cpp b/src/simulation_sample/ground_station/sample_ground_station.cpp index 1aa881352..7760419e9 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station.cpp @@ -7,6 +7,8 @@ #include "sample_ground_station_components.hpp" +namespace s2e::sample { + SampleGroundStation::SampleGroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id) : GroundStation(configuration, ground_station_id) { components_ = new SampleGsComponents(configuration); @@ -23,3 +25,5 @@ void SampleGroundStation::Update(const EarthRotation& celestial_rotation, const GroundStation::Update(celestial_rotation, spacecraft); components_->GetGsCalculator()->Update(spacecraft, spacecraft.GetInstalledComponents().GetAntenna(), *this, *(components_->GetAntenna())); } + +} // namespace s2e::sample diff --git a/src/simulation_sample/ground_station/sample_ground_station.hpp b/src/simulation_sample/ground_station/sample_ground_station.hpp index 8fe089bba..b392c1b66 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station.hpp @@ -16,6 +16,8 @@ class SampleGsComponents; +namespace s2e::sample { + /** * @class SampleGroundStation * @brief An example of user defined ground station class @@ -49,4 +51,6 @@ class SampleGroundStation : public GroundStation { SampleGsComponents* components_; //!< Ground station related components }; +} // namespace s2e::sample + #endif // S2E_SIMULATION_SAMPLE_GROUND_STATION_SAMPLE_GROUND_STATION_HPP_ diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.cpp b/src/simulation_sample/ground_station/sample_ground_station_components.cpp index bf7fbdbb6..f799b9bc6 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.cpp @@ -6,6 +6,8 @@ #include +namespace s2e::sample { + SampleGsComponents::SampleGsComponents(const SimulationConfiguration* configuration) : configuration_(configuration) { IniAccess iniAccess = IniAccess(configuration_->ground_station_file_list_[0]); @@ -26,3 +28,5 @@ void SampleGsComponents::CompoLogSetUp(Logger& logger) { // logger.AddLogList(ant_); logger.AddLogList(gs_calculator_); } + +} // namespace s2e::sample diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.hpp b/src/simulation_sample/ground_station/sample_ground_station_components.hpp index 15f1632bb..dbf87cd42 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.hpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::sample { + /** * @class SampleGsComponents * @brief An example of ground station related components list class @@ -49,4 +51,6 @@ class SampleGsComponents { const SimulationConfiguration* configuration_; //!< Simulation setting }; +} // namespace s2e::sample + #endif // S2E_SIMULATION_SAMPLE_GROUND_STATION_SAMPLE_GROUND_STATION_COMPONENTS_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 5de0f8984..956b0408c 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -9,6 +9,8 @@ #include "sample_port_configuration.hpp" +namespace s2e::sample { + SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structure, const LocalEnvironment* local_environment, const GlobalEnvironment* global_environment, const SimulationConfiguration* configuration, ClockGenerator* clock_generator, const unsigned int spacecraft_id) @@ -222,3 +224,5 @@ void SampleComponents::LogSetup(Logger& logger) { logger.AddLogList(attitude_observer_); logger.AddLogList(orbit_observer_); } + +} // namespace s2e::sample diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index c8c3603d5..619043697 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -50,6 +50,8 @@ class AngularVelocityObserver; class AttitudeObserver; class Telescope; +namespace s2e::sample { + /** * @class SampleComponents * @brief An example of user side components management class @@ -143,4 +145,6 @@ class SampleComponents : public InstalledComponents { const GlobalEnvironment* global_environment_; //!< Global environment information }; +} // namespace s2e::sample + #endif // S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_COMPONENTS_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_port_configuration.hpp b/src/simulation_sample/spacecraft/sample_port_configuration.hpp index 413e22fce..bfa1a57db 100644 --- a/src/simulation_sample/spacecraft/sample_port_configuration.hpp +++ b/src/simulation_sample/spacecraft/sample_port_configuration.hpp @@ -6,6 +6,8 @@ #ifndef S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_PORT_CONFIGURATION_HPP_ #define S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_PORT_CONFIGURATION_HPP_ +namespace s2e::sample { + /** * @enum PowerPortConfig * @brief ID list of electrical power switch ports @@ -27,4 +29,6 @@ enum class UARTPortConfig { kUartComponentMax //!< Maximum port number. Do not remove. Place on the bottom. }; +} // namespace s2e::sample + #endif // S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_PORT_CONFIGURATION_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.cpp b/src/simulation_sample/spacecraft/sample_spacecraft.cpp index 09c7df86c..3b46777ec 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.cpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.cpp @@ -10,6 +10,8 @@ #include "sample_components.hpp" +namespace s2e::sample { + SampleSpacecraft::SampleSpacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const unsigned int spacecraft_id) : Spacecraft(simulation_configuration, global_environment, spacecraft_id) { @@ -17,3 +19,5 @@ SampleSpacecraft::SampleSpacecraft(const SimulationConfiguration* simulation_con new SampleComponents(dynamics_, structure_, local_environment_, global_environment, simulation_configuration, &clock_generator_, spacecraft_id); components_ = sample_components_; } + +} // namespace s2e::sample diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.hpp b/src/simulation_sample/spacecraft/sample_spacecraft.hpp index 1436dbfe1..27b09addf 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.hpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.hpp @@ -12,6 +12,8 @@ class SampleComponents; +namespace s2e::sample { + /** * @class SampleSpacecraft * @brief An example of user side spacecraft class @@ -35,4 +37,6 @@ class SampleSpacecraft : public Spacecraft { SampleComponents* sample_components_; }; +} // namespace s2e::sample + #endif // S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_SPACECRAFT_HPP_ From ccaf910d1bd65187dc71fbaa6f92af96d426f081 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 15:21:32 +0900 Subject: [PATCH 420/456] Update namespace info in simulation sample --- src/simulation_sample/case/sample_case.cpp | 6 +- src/simulation_sample/case/sample_case.hpp | 2 +- .../ground_station/sample_ground_station.cpp | 10 +- .../ground_station/sample_ground_station.hpp | 10 +- .../sample_ground_station_components.cpp | 10 +- .../sample_ground_station_components.hpp | 12 +-- .../spacecraft/sample_components.cpp | 22 +++-- .../spacecraft/sample_components.hpp | 94 +++++++++---------- .../spacecraft/sample_spacecraft.cpp | 4 +- .../spacecraft/sample_spacecraft.hpp | 4 +- 10 files changed, 88 insertions(+), 86 deletions(-) diff --git a/src/simulation_sample/case/sample_case.cpp b/src/simulation_sample/case/sample_case.cpp index 259b677b5..5487e0e08 100644 --- a/src/simulation_sample/case/sample_case.cpp +++ b/src/simulation_sample/case/sample_case.cpp @@ -7,7 +7,7 @@ namespace s2e::sample { -SampleCase::SampleCase(std::string initialise_base_file) : s2e::simulation::SimulationCase(initialise_base_file) {} +SampleCase::SampleCase(std::string initialise_base_file) : simulation::SimulationCase(initialise_base_file) {} SampleCase::~SampleCase() { delete sample_spacecraft_; @@ -37,7 +37,7 @@ void SampleCase::UpdateTargetObjects() { std::string SampleCase::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteScalar("time", "s"); + str_tmp += logger::WriteScalar("time", "s"); return str_tmp; } @@ -45,7 +45,7 @@ std::string SampleCase::GetLogHeader() const { std::string SampleCase::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(global_environment_->GetSimulationTime().GetElapsedTime_s()); + str_tmp += logger::WriteScalar(global_environment_->GetSimulationTime().GetElapsedTime_s()); return str_tmp; } diff --git a/src/simulation_sample/case/sample_case.hpp b/src/simulation_sample/case/sample_case.hpp index bbc86be45..66302d589 100644 --- a/src/simulation_sample/case/sample_case.hpp +++ b/src/simulation_sample/case/sample_case.hpp @@ -17,7 +17,7 @@ namespace s2e::sample { * @class SampleCase * @brief An example of user defined simulation class */ -class SampleCase : public s2e::simulation::SimulationCase { +class SampleCase : public simulation::SimulationCase { public: /** * @fn SampleCase diff --git a/src/simulation_sample/ground_station/sample_ground_station.cpp b/src/simulation_sample/ground_station/sample_ground_station.cpp index 7760419e9..5489d4423 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station.cpp @@ -9,20 +9,20 @@ namespace s2e::sample { -SampleGroundStation::SampleGroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id) - : GroundStation(configuration, ground_station_id) { +SampleGroundStation::SampleGroundStation(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id) + : simulation::GroundStation(configuration, ground_station_id) { components_ = new SampleGsComponents(configuration); } SampleGroundStation::~SampleGroundStation() { delete components_; } void SampleGroundStation::LogSetup(Logger& logger) { - GroundStation::LogSetup(logger); + simulation::GroundStation::LogSetup(logger); components_->CompoLogSetUp(logger); } -void SampleGroundStation::Update(const EarthRotation& celestial_rotation, const SampleSpacecraft& spacecraft) { - GroundStation::Update(celestial_rotation, spacecraft); +void SampleGroundStation::Update(const environment::EarthRotation& celestial_rotation, const SampleSpacecraft& spacecraft) { + simulation::GroundStation::Update(celestial_rotation, spacecraft); components_->GetGsCalculator()->Update(spacecraft, spacecraft.GetInstalledComponents().GetAntenna(), *this, *(components_->GetAntenna())); } diff --git a/src/simulation_sample/ground_station/sample_ground_station.hpp b/src/simulation_sample/ground_station/sample_ground_station.hpp index b392c1b66..9acc8d613 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station.hpp @@ -14,21 +14,21 @@ #include "../spacecraft/sample_spacecraft.hpp" -class SampleGsComponents; - namespace s2e::sample { +class SampleGsComponents; + /** * @class SampleGroundStation * @brief An example of user defined ground station class */ -class SampleGroundStation : public GroundStation { +class SampleGroundStation : public simulation::GroundStation { public: /** * @fn SampleGroundStation * @brief Constructor */ - SampleGroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id); + SampleGroundStation(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id); /** * @fn ~SampleGroundStation * @brief Destructor @@ -44,7 +44,7 @@ class SampleGroundStation : public GroundStation { * @fn Update * @brief Override function of Update in GroundStation class */ - virtual void Update(const EarthRotation& celestial_rotation, const SampleSpacecraft& spacecraft); + virtual void Update(const environment::EarthRotation& celestial_rotation, const SampleSpacecraft& spacecraft); private: using GroundStation::Update; diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.cpp b/src/simulation_sample/ground_station/sample_ground_station_components.cpp index f799b9bc6..c18528bb2 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.cpp @@ -8,15 +8,15 @@ namespace s2e::sample { -SampleGsComponents::SampleGsComponents(const SimulationConfiguration* configuration) : configuration_(configuration) { - IniAccess iniAccess = IniAccess(configuration_->ground_station_file_list_[0]); +SampleGsComponents::SampleGsComponents(const simulation::SimulationConfiguration* configuration) : configuration_(configuration) { + setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(configuration_->ground_station_file_list_[0]); std::string ant_ini_path = iniAccess.ReadString("COMPONENT_FILES", "ground_station_antenna_file"); configuration_->main_logger_->CopyFileToLogDirectory(ant_ini_path); - antenna_ = new Antenna(InitAntenna(1, ant_ini_path)); + antenna_ = new components::Antenna(components::InitAntenna(1, ant_ini_path)); std::string gs_calculator_ini_path = iniAccess.ReadString("COMPONENT_FILES", "ground_station_calculator_file"); configuration_->main_logger_->CopyFileToLogDirectory(gs_calculator_ini_path); - gs_calculator_ = new GroundStationCalculator(InitGsCalculator(gs_calculator_ini_path)); + gs_calculator_ = new components::GroundStationCalculator(components::InitGsCalculator(gs_calculator_ini_path)); } SampleGsComponents::~SampleGsComponents() { @@ -24,7 +24,7 @@ SampleGsComponents::~SampleGsComponents() { delete gs_calculator_; } -void SampleGsComponents::CompoLogSetUp(Logger& logger) { +void SampleGsComponents::CompoLogSetUp(logger::Logger& logger) { // logger.AddLogList(ant_); logger.AddLogList(gs_calculator_); } diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.hpp b/src/simulation_sample/ground_station/sample_ground_station_components.hpp index dbf87cd42..1de5eec24 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.hpp @@ -21,7 +21,7 @@ class SampleGsComponents { * @fn SampleGsComponents * @brief Constructor */ - SampleGsComponents(const SimulationConfiguration* configuration); + SampleGsComponents(const simulation::SimulationConfiguration* configuration); /** * @fn ~SampleGsComponents * @brief Destructor @@ -38,17 +38,17 @@ class SampleGsComponents { * @fn GetAntenna * @brief Return antenna */ - inline Antenna* GetAntenna() const { return antenna_; } + inline components::Antenna* GetAntenna() const { return antenna_; } /** * @fn GetGsCalculator * @brief Return ground station calculator */ - inline GroundStationCalculator* GetGsCalculator() const { return gs_calculator_; } + inline components::GroundStationCalculator* GetGsCalculator() const { return gs_calculator_; } private: - Antenna* antenna_; //!< Antenna on ground station - GroundStationCalculator* gs_calculator_; //!< Ground station calculation algorithm - const SimulationConfiguration* configuration_; //!< Simulation setting + components::Antenna* antenna_; //!< Antenna on ground station + components::GroundStationCalculator* gs_calculator_; //!< Ground station calculation algorithm + const simulation::SimulationConfiguration* configuration_; //!< Simulation setting }; } // namespace s2e::sample diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 956b0408c..38debc042 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -11,15 +11,17 @@ namespace s2e::sample { -SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structure, const LocalEnvironment* local_environment, - const GlobalEnvironment* global_environment, const SimulationConfiguration* configuration, - ClockGenerator* clock_generator, const unsigned int spacecraft_id) +using namespace components; + +SampleComponents::SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, + const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, + const unsigned int spacecraft_id) : configuration_(configuration), dynamics_(dynamics), structure_(structure), local_environment_(local_environment), global_environment_(global_environment) { - IniAccess iniAccess = IniAccess(configuration_->spacecraft_file_list_[spacecraft_id]); + setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(configuration_->spacecraft_file_list_[spacecraft_id]); // PCU power port connection pcu_ = new PowerControlUnit(clock_generator); @@ -29,7 +31,7 @@ SampleComponents::SampleComponents(const Dynamics* dynamics, Structure* structur // Components obc_ = new OnBoardComputer(1, clock_generator, pcu_->GetPowerPort(0)); - hils_port_manager_ = new HilsPortManager(); + hils_port_manager_ = new simulation::HilsPortManager(); // GyroSensor std::string file_name = iniAccess.ReadString("COMPONENT_FILES", "gyro_file"); @@ -190,15 +192,15 @@ SampleComponents::~SampleComponents() { delete hils_port_manager_; // delete after exp_hils } -s2e::math::Vector<3> SampleComponents::GenerateForce_b_N() { - s2e::math::Vector<3> force_b_N_(0.0); +math::Vector<3> SampleComponents::GenerateForce_b_N() { + math::Vector<3> force_b_N_(0.0); force_b_N_ += thruster_->GetOutputThrust_b_N(); force_b_N_ += force_generator_->GetGeneratedForce_b_N(); return force_b_N_; } -s2e::math::Vector<3> SampleComponents::GenerateTorque_b_Nm() { - s2e::math::Vector<3> torque_b_Nm_(0.0); +math::Vector<3> SampleComponents::GenerateTorque_b_Nm() { + math::Vector<3> torque_b_Nm_(0.0); torque_b_Nm_ += magnetorquer_->GetOutputTorque_b_Nm(); torque_b_Nm_ += reaction_wheel_->GetOutputTorque_b_Nm(); torque_b_Nm_ += thruster_->GetOutputTorque_b_Nm(); @@ -208,7 +210,7 @@ s2e::math::Vector<3> SampleComponents::GenerateTorque_b_Nm() { void SampleComponents::ComponentInterference() { mtq_magnetometer_interference_->UpdateInterference(); } -void SampleComponents::LogSetup(Logger& logger) { +void SampleComponents::LogSetup(logger::Logger& logger) { logger.AddLogList(gyro_sensor_); logger.AddLogList(magnetometer_); logger.AddLogList(star_sensor_); diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 619043697..756e3fc9b 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -34,36 +34,36 @@ #include #include -class OnBoardComputer; -class PowerControlUnit; -class GyroSensor; -class Magnetometer; -class StarSensor; -class SunSensor; -class GnssReceiver; -class Magnetorquer; -class ReactionWheel; -class SimpleThruster; -class ForceGenerator; -class TorqueGenerator; -class AngularVelocityObserver; -class AttitudeObserver; -class Telescope; - namespace s2e::sample { +class components::OnBoardComputer; +class components::PowerControlUnit; +class components::GyroSensor; +class components::Magnetometer; +class components::StarSensor; +class components::SunSensor; +class components::GnssReceiver; +class components::Magnetorquer; +class components::ReactionWheel; +class components::SimpleThruster; +class components::ForceGenerator; +class components::TorqueGenerator; +class components::AngularVelocityObserver; +class components::AttitudeObserver; +class components::Telescope; + /** * @class SampleComponents * @brief An example of user side components management class */ -class SampleComponents : public InstalledComponents { +class SampleComponents : public simulation::InstalledComponents { public: /** * @fn SampleComponents * @brief Constructor */ - SampleComponents(const Dynamics* dynamics, Structure* structure, const LocalEnvironment* local_environment, - const GlobalEnvironment* global_environment, const SimulationConfiguration* configuration, ClockGenerator* clock_generator, + SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, + const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id); /** * @fn ~SampleComponents @@ -76,12 +76,12 @@ class SampleComponents : public InstalledComponents { * @fn GenerateForce_b_N * @brief Return force generated by components in unit Newton in body fixed frame */ - s2e::math::Vector<3> GenerateForce_b_N() override; + math::Vector<3> GenerateForce_b_N() override; /** * @fn GenerateTorque_b_Nm * @brief Return torque generated by components in unit Newton-meter in body fixed frame */ - s2e::math::Vector<3> GenerateTorque_b_Nm() override; + math::Vector<3> GenerateTorque_b_Nm() override; /** * @fn ComponentInterference * @brief Handle component interference effect @@ -92,41 +92,41 @@ class SampleComponents : public InstalledComponents { * @fn LogSetup * @brief Setup the logger for components */ - void LogSetup(Logger& logger) override; + void LogSetup(logger::Logger& logger) override; // Getter - inline Antenna& GetAntenna() const { return *antenna_; } + inline components::Antenna& GetAntenna() const { return *antenna_; } private: - PowerControlUnit* pcu_; //!< Power Control Unit - OnBoardComputer* obc_; //!< Onboard Computer - HilsPortManager* hils_port_manager_; //!< Port manager for HILS test + components::PowerControlUnit* pcu_; //!< Power Control Unit + components::OnBoardComputer* obc_; //!< Onboard Computer + simulation::HilsPortManager* hils_port_manager_; //!< Port manager for HILS test // AOCS - GyroSensor* gyro_sensor_; //!< GyroSensor sensor - Magnetometer* magnetometer_; //!< Magnetometer - StarSensor* star_sensor_; //!< Star sensor - SunSensor* sun_sensor_; //!< Sun sensor - GnssReceiver* gnss_receiver_; //!< GNSS receiver - Magnetorquer* magnetorquer_; //!< Magnetorquer - ReactionWheel* reaction_wheel_; //!< Reaction Wheel - SimpleThruster* thruster_; //!< Thruster + components::GyroSensor* gyro_sensor_; //!< GyroSensor sensor + components::Magnetometer* magnetometer_; //!< Magnetometer + components::StarSensor* star_sensor_; //!< Star sensor + components::SunSensor* sun_sensor_; //!< Sun sensor + components::GnssReceiver* gnss_receiver_; //!< GNSS receiver + components::Magnetorquer* magnetorquer_; //!< Magnetorquer + components::ReactionWheel* reaction_wheel_; //!< Reaction Wheel + components::SimpleThruster* thruster_; //!< Thruster // Ideal component - ForceGenerator* force_generator_; //!< Ideal Force Generator - TorqueGenerator* torque_generator_; //!< Ideal Torque Generator - AngularVelocityObserver* angular_velocity_observer_; //!< Ideal Angular velocity observer - AttitudeObserver* attitude_observer_; //!< Ideal Attitude observer - OrbitObserver* orbit_observer_; //!< Ideal Orbit observer + components::ForceGenerator* force_generator_; //!< Ideal Force Generator + components::TorqueGenerator* torque_generator_; //!< Ideal Torque Generator + components::AngularVelocityObserver* angular_velocity_observer_; //!< Ideal Angular velocity observer + components::AttitudeObserver* attitude_observer_; //!< Ideal Attitude observer + components::OrbitObserver* orbit_observer_; //!< Ideal Orbit observer // Mission - Telescope* telescope_; //!< Telescope + components::Telescope* telescope_; //!< Telescope // CommGs - Antenna* antenna_; //!< Antenna + components::Antenna* antenna_; //!< Antenna // Component Interference - MtqMagnetometerInterference* mtq_magnetometer_interference_; //!< Additional Bias noise by MTQ-Magnetometer interference + components::MtqMagnetometerInterference* mtq_magnetometer_interference_; //!< Additional Bias noise by MTQ-Magnetometer interference // Examples // ExampleChangeStructure* change_structure_; //!< Change structure @@ -138,11 +138,11 @@ class SampleComponents : public InstalledComponents { */ // States - const SimulationConfiguration* configuration_; //!< Simulation settings - const Dynamics* dynamics_; //!< Dynamics information of the spacecraft - Structure* structure_; //!< Structure information of the spacecraft - const LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft - const GlobalEnvironment* global_environment_; //!< Global environment information + const simulation::SimulationConfiguration* configuration_; //!< Simulation settings + const dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + simulation::Structure* structure_; //!< Structure information of the spacecraft + const environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft + const environment::GlobalEnvironment* global_environment_; //!< Global environment information }; } // namespace s2e::sample diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.cpp b/src/simulation_sample/spacecraft/sample_spacecraft.cpp index 3b46777ec..bfc1bdcc9 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.cpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.cpp @@ -12,9 +12,9 @@ namespace s2e::sample { -SampleSpacecraft::SampleSpacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, +SampleSpacecraft::SampleSpacecraft(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const unsigned int spacecraft_id) - : Spacecraft(simulation_configuration, global_environment, spacecraft_id) { + : simulation::Spacecraft(simulation_configuration, global_environment, spacecraft_id) { sample_components_ = new SampleComponents(dynamics_, structure_, local_environment_, global_environment, simulation_configuration, &clock_generator_, spacecraft_id); components_ = sample_components_; diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.hpp b/src/simulation_sample/spacecraft/sample_spacecraft.hpp index 27b09addf..43f9ff564 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.hpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.hpp @@ -18,13 +18,13 @@ namespace s2e::sample { * @class SampleSpacecraft * @brief An example of user side spacecraft class */ -class SampleSpacecraft : public Spacecraft { +class SampleSpacecraft : public simulation::Spacecraft { public: /** * @fn SampleSpacecraft * @brief Constructor */ - SampleSpacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, + SampleSpacecraft(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const unsigned int spacecraft_id); /** From e8b37f531f04446a85a5f18ee6511abc91f3dcf8 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 15:37:04 +0900 Subject: [PATCH 421/456] Update namespace info in simulation --- src/simulation/case/simulation_case.cpp | 12 +++++----- src/simulation/case/simulation_case.hpp | 6 ++--- .../ground_station/ground_station.cpp | 14 +++++------ .../ground_station/ground_station.hpp | 20 ++++++++-------- src/simulation/hils/hils_port_manager.cpp | 20 ++++++++-------- src/simulation/hils/hils_port_manager.hpp | 4 ++-- .../initialize_monte_carlo_parameters.hpp | 24 +++++++++---------- .../initialize_monte_carlo_simulation.cpp | 2 +- .../relative_information.cpp | 18 +++++++------- .../relative_information.hpp | 10 ++++---- src/simulation/simulation_configuration.hpp | 2 +- .../spacecraft/installed_components.cpp | 2 +- .../spacecraft/installed_components.hpp | 2 +- src/simulation/spacecraft/spacecraft.cpp | 14 +++++------ src/simulation/spacecraft/spacecraft.hpp | 22 ++++++++--------- .../structure/initialize_structure.cpp | 6 ++--- .../structure/residual_magnetic_moment.hpp | 7 +++--- .../spacecraft/structure/structure.cpp | 2 +- 18 files changed, 93 insertions(+), 94 deletions(-) diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index f9e869937..cda5c0786 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -13,7 +13,7 @@ namespace s2e::simulation { SimulationCase::SimulationCase(const std::string initialize_base_file) { // Initialize Log - simulation_configuration_.main_logger_ = InitLog(initialize_base_file); + simulation_configuration_.main_logger_ = logger::InitLog(initialize_base_file); // Initialize Simulation Configuration InitializeSimulationConfiguration(initialize_base_file); @@ -23,16 +23,16 @@ SimulationCase::SimulationCase(const std::string initialize_base_file, const Mon const std::string log_path) { if (monte_carlo_simulator.IsEnabled() == false) { // Monte Carlo simulation is disabled - simulation_configuration_.main_logger_ = InitLog(initialize_base_file); + simulation_configuration_.main_logger_ = logger::InitLog(initialize_base_file); } else { // Monte Carlo Simulation is enabled std::string log_file_name = "default" + std::to_string(monte_carlo_simulator.GetNumberOfExecutionsDone()) + ".csv"; - IniAccess ini_file(initialize_base_file); + setting_file_reader::IniAccess ini_file(initialize_base_file); bool save_ini_files = ini_file.ReadEnable("SIMULATION_SETTINGS", "save_initialize_files"); simulation_configuration_.main_logger_ = - new Logger(log_file_name, log_path, initialize_base_file, save_ini_files, monte_carlo_simulator.GetSaveLogHistoryFlag()); + new logger::Logger(log_file_name, log_path, initialize_base_file, save_ini_files, monte_carlo_simulator.GetSaveLogHistoryFlag()); } // Initialize Simulation Configuration InitializeSimulationConfiguration(initialize_base_file); @@ -87,7 +87,7 @@ std::string SimulationCase::GetLogValue() const { void SimulationCase::InitializeSimulationConfiguration(const std::string initialize_base_file) { // Initialize - IniAccess simulation_base_ini = IniAccess(initialize_base_file); + setting_file_reader::IniAccess simulation_base_ini = setting_file_reader::IniAccess(initialize_base_file); const char* section = "SIMULATION_SETTINGS"; simulation_configuration_.initialize_base_file_name_ = initialize_base_file; @@ -104,7 +104,7 @@ void SimulationCase::InitializeSimulationConfiguration(const std::string initial simulation_configuration_.gnss_file_ = simulation_base_ini.ReadString(section, "gnss_file"); // Global Environment - global_environment_ = new GlobalEnvironment(&simulation_configuration_); + global_environment_ = new environment::GlobalEnvironment(&simulation_configuration_); global_environment_->LogSetup(*(simulation_configuration_.main_logger_)); } diff --git a/src/simulation/case/simulation_case.hpp b/src/simulation/case/simulation_case.hpp index 53d37f8a9..47800dee7 100644 --- a/src/simulation/case/simulation_case.hpp +++ b/src/simulation/case/simulation_case.hpp @@ -19,7 +19,7 @@ namespace s2e::simulation { * @class SimulationCase * @brief Base class to define simulation scenario */ -class SimulationCase : public ILoggable { +class SimulationCase : public logger::ILoggable { public: /** * @fn SimulationCase @@ -74,11 +74,11 @@ class SimulationCase : public ILoggable { * @fn GetGlobalEnvironment * @brief Return global environment */ - inline const GlobalEnvironment& GetGlobalEnvironment() const { return *global_environment_; } + inline const environment::GlobalEnvironment& GetGlobalEnvironment() const { return *global_environment_; } protected: SimulationConfiguration simulation_configuration_; //!< Simulation setting - GlobalEnvironment* global_environment_; //!< Global Environment + environment::GlobalEnvironment* global_environment_; //!< Global Environment /** * @fn InitializeSimulationConfiguration diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 12ee9ae4a..5340c30dc 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -28,7 +28,7 @@ GroundStation::~GroundStation() {} void GroundStation::Initialize(const SimulationConfiguration* configuration, const unsigned int ground_station_id) { std::string gs_ini_path = configuration->ground_station_file_list_[0]; - auto conf = IniAccess(gs_ini_path); + auto conf = setting_file_reader::IniAccess(gs_ini_path); const char* section_base = "GROUND_STATION_"; const std::string section_tmp = section_base + std::to_string(static_cast(ground_station_id)); @@ -45,9 +45,9 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con configuration->main_logger_->CopyFileToLogDirectory(gs_ini_path); } -void GroundStation::LogSetup(Logger& logger) { logger.AddLogList(this); } +void GroundStation::LogSetup(logger::Logger& logger) { logger.AddLogList(this); } -void GroundStation::Update(const EarthRotation& celestial_rotation, const Spacecraft& spacecraft) { +void GroundStation::Update(const environment::EarthRotation& celestial_rotation, const Spacecraft& spacecraft) { s2e::math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); position_i_m_ = dcm_ecef2eci * position_ecef_m_; @@ -77,9 +77,9 @@ std::string GroundStation::GetLogHeader() const { std::string head = "ground_station" + std::to_string(ground_station_id_) + "_"; for (unsigned int i = 0; i < number_of_spacecraft_; i++) { std::string legend = head + "sc" + std::to_string(i) + "_visible_flag"; - str_tmp += WriteScalar(legend); + str_tmp += logger::WriteScalar(legend); } - str_tmp += WriteVector("ground_station_position", "eci", "m", 3); + str_tmp += logger::WriteVector("ground_station_position", "eci", "m", 3); return str_tmp; } @@ -87,9 +87,9 @@ std::string GroundStation::GetLogValue() const { std::string str_tmp = ""; for (unsigned int i = 0; i < number_of_spacecraft_; i++) { - str_tmp += WriteScalar(is_visible_.at(i)); + str_tmp += logger::WriteScalar(is_visible_.at(i)); } - str_tmp += WriteVector(position_i_m_); + str_tmp += logger::WriteVector(position_i_m_); return str_tmp; } diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index 42a3b8cac..12ca04fec 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -18,7 +18,7 @@ namespace s2e::simulation { * @class GroundStation * @brief Base class of ground station */ -class GroundStation : public ILoggable { +class GroundStation : public logger::ILoggable { public: /** * @fn GroundStation @@ -40,12 +40,12 @@ class GroundStation : public ILoggable { * @fn LogSetup * @brief Virtual function to log output setting for ground station related components */ - virtual void LogSetup(Logger& logger); + virtual void LogSetup(logger::Logger& logger); /** * @fn Update * @brief Virtual function of main routine */ - virtual void Update(const EarthRotation& celestial_rotation, const Spacecraft& spacecraft); + virtual void Update(const environment::EarthRotation& celestial_rotation, const Spacecraft& spacecraft); // Override functions for ILoggable /** @@ -69,17 +69,17 @@ class GroundStation : public ILoggable { * @fn GetGeodeticPosition * @brief Return ground station position in the geodetic frame */ - s2e::geodesy::GeodeticPosition GetGeodeticPosition() const { return geodetic_position_; } + geodesy::GeodeticPosition GetGeodeticPosition() const { return geodetic_position_; } /** * @fn GetPosition_ecef_m * @brief Return ground station position in the ECEF frame [m] */ - Vector<3> GetPosition_ecef_m() const { return position_ecef_m_; } + math::Vector<3> GetPosition_ecef_m() const { return position_ecef_m_; } /** * @fn GetPosition_i_m * @brief Return ground station position in the inertial frame [m] */ - Vector<3> GetPosition_i_m() const { return position_i_m_; } + math::Vector<3> GetPosition_i_m() const { return position_i_m_; } /** * @fn GetElevationLimitAngle_deg * @brief Return ground station elevation limit angle [deg] @@ -94,9 +94,9 @@ class GroundStation : public ILoggable { protected: unsigned int ground_station_id_; //!< Ground station ID - s2e::geodesy::GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame - Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] - Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] + geodesy::GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame + math::Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] + math::Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] double elevation_limit_angle_deg_; //!< Minimum elevation angle to work the ground station [deg] std::map is_visible_; //!< Visible flag for each spacecraft ID (not care antenna) @@ -108,7 +108,7 @@ class GroundStation : public ILoggable { * @param [in] spacecraft_position_ecef_m: spacecraft position in ECEF frame [m] * @return True when the satellite is visible from the ground station */ - bool CalcIsVisible(const Vector<3> spacecraft_position_ecef_m); + bool CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m); }; } // namespace s2e::simulation diff --git a/src/simulation/hils/hils_port_manager.cpp b/src/simulation/hils/hils_port_manager.cpp index 4eda6559f..ee0e7f1e1 100644 --- a/src/simulation/hils/hils_port_manager.cpp +++ b/src/simulation/hils/hils_port_manager.cpp @@ -47,7 +47,7 @@ int HilsPortManager::UartCloseComPort(unsigned int port_id) { } uart_ports_[port_id]->ClosePort(); - HilsUartPort* port = uart_ports_.at(port_id); + components::HilsUartPort* port = uart_ports_.at(port_id); delete port; uart_ports_.erase(port_id); return 0; @@ -60,7 +60,7 @@ int HilsPortManager::UartCloseComPort(unsigned int port_id) { int HilsPortManager::UartReceive(unsigned int port_id, unsigned char* buffer, int offset, int length) { #ifdef USE_HILS - HilsUartPort* port = uart_ports_[port_id]; + components::HilsUartPort* port = uart_ports_[port_id]; if (port == nullptr) return -1; int ret = port->ReadRx(buffer, offset, length); #ifdef HILS_PORT_MANAGER_SHOW_DEBUG_DATA @@ -85,7 +85,7 @@ int HilsPortManager::UartReceive(unsigned int port_id, unsigned char* buffer, in int HilsPortManager::UartSend(unsigned int port_id, const unsigned char* buffer, int offset, int length) { #ifdef USE_HILS - HilsUartPort* port = uart_ports_[port_id]; + components::HilsUartPort* port = uart_ports_[port_id]; if (port == nullptr) return -1; int ret = port->WriteTx(buffer, offset, length); #ifdef HILS_PORT_MANAGER_SHOW_DEBUG_DATA @@ -132,7 +132,7 @@ int HilsPortManager::I2cTargetCloseComPort(unsigned int port_id) { return -1; } i2c_ports_[port_id]->ClosePort(); - HilsI2cTargetPort* port = i2c_ports_.at(port_id); + components::HilsI2cTargetPort* port = i2c_ports_.at(port_id); delete port; i2c_ports_.erase(port_id); return 0; @@ -146,7 +146,7 @@ int HilsPortManager::I2cTargetCloseComPort(unsigned int port_id) { int HilsPortManager::I2cTargetWriteRegister(unsigned int port_id, const unsigned char register_address, const unsigned char* data, const unsigned char length) { #ifdef USE_HILS - HilsI2cTargetPort* port = i2c_ports_[port_id]; + components::HilsI2cTargetPort* port = i2c_ports_[port_id]; if (port == nullptr) return -1; for (unsigned char i = 0; i < length; i++) { port->WriteRegister(register_address + i, data[i]); @@ -165,7 +165,7 @@ int HilsPortManager::I2cTargetWriteRegister(unsigned int port_id, const unsigned int HilsPortManager::I2cTargetReadRegister(unsigned int port_id, const unsigned char register_address, unsigned char* data, const unsigned char length) { #ifdef USE_HILS - HilsI2cTargetPort* port = i2c_ports_[port_id]; + components::HilsI2cTargetPort* port = i2c_ports_[port_id]; if (port == nullptr) return -1; for (unsigned char i = 0; i < length; i++) { data[i] = port->ReadRegister(register_address + i); @@ -183,7 +183,7 @@ int HilsPortManager::I2cTargetReadRegister(unsigned int port_id, const unsigned int HilsPortManager::I2cTargetReadCommand(unsigned int port_id, unsigned char* data, const unsigned char length) { #ifdef USE_HILS - HilsI2cTargetPort* port = i2c_ports_[port_id]; + components::HilsI2cTargetPort* port = i2c_ports_[port_id]; if (port == nullptr) return -1; port->ReadCommand(data, length); return 0; @@ -198,7 +198,7 @@ int HilsPortManager::I2cTargetReadCommand(unsigned int port_id, unsigned char* d int HilsPortManager::I2cTargetReceive(unsigned int port_id) { #ifdef USE_HILS - HilsI2cTargetPort* port = i2c_ports_[port_id]; + components::HilsI2cTargetPort* port = i2c_ports_[port_id]; if (port == nullptr) return -1; int ret = port->Receive(); #ifdef HILS_PORT_MANAGER_SHOW_DEBUG_DATA @@ -216,7 +216,7 @@ int HilsPortManager::I2cTargetReceive(unsigned int port_id) { int HilsPortManager::I2cTargetSend(unsigned int port_id, const unsigned char length) { #ifdef USE_HILS - HilsI2cTargetPort* port = i2c_ports_[port_id]; + components::HilsI2cTargetPort* port = i2c_ports_[port_id]; if (port == nullptr) return -1; int ret = port->Send(length); #ifdef HILS_PORT_MANAGER_SHOW_DEBUG_DATA @@ -235,7 +235,7 @@ int HilsPortManager::I2cTargetSend(unsigned int port_id, const unsigned char len int HilsPortManager::I2cTargetGetStoredFrameCounter(unsigned int port_id) { #ifdef USE_HILS - HilsI2cTargetPort* port = i2c_ports_[port_id]; + components::HilsI2cTargetPort* port = i2c_ports_[port_id]; if (port == nullptr) return -1; return port->GetStoredFrameCounter(); #else diff --git a/src/simulation/hils/hils_port_manager.hpp b/src/simulation/hils/hils_port_manager.hpp index 06d00b2f7..8753429e6 100644 --- a/src/simulation/hils/hils_port_manager.hpp +++ b/src/simulation/hils/hils_port_manager.hpp @@ -165,8 +165,8 @@ class HilsPortManager { private: #ifdef USE_HILS - std::map uart_ports_; //!< UART ports - std::map i2c_ports_; //!< I2C ports + std::map uart_ports_; //!< UART ports + std::map i2c_ports_; //!< I2C ports #endif }; diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index 1570aaa1a..6b7493ee4 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -54,7 +54,7 @@ class InitializedMonteCarloParameters { * @brief Set randomization parameters */ template - void SetRandomConfiguration(const s2e::math::Vector& mean_or_min, const s2e::math::Vector& sigma_or_max, + void SetRandomConfiguration(const math::Vector& mean_or_min, const math::Vector& sigma_or_max, RandomizationType random_type); // Getter @@ -63,12 +63,12 @@ class InitializedMonteCarloParameters { * @brief Get randomized vector value results */ template - void GetRandomizedVector(s2e::math::Vector& destination) const; + void GetRandomizedVector(math::Vector& destination) const; /** * @fn GetRandomizedQuaternion * @brief Get randomized quaternion results */ - void GetRandomizedQuaternion(s2e::math::Quaternion& destination) const; + void GetRandomizedQuaternion(math::Quaternion& destination) const; /** * @fn GetRandomizedScalar * @brief Get randomized value results @@ -177,38 +177,38 @@ class InitializedMonteCarloParameters { * @fn CalcCircularNormalUniform * @brief Calculate randomized value with CircularNormalUniform mode */ - void CalcCircularNormalUniform(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max); + void CalcCircularNormalUniform(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max); /** * @fn CalcCircularNormalNormal * @brief Calculate randomized value with CircularNormalNormal mode */ - void CalcCircularNormalNormal(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma); + void CalcCircularNormalNormal(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma); /** * @fn CalcSphericalNormalUniformUniform * @brief Calculate randomized value with SphericalNormalUniformUniform mode */ - void CalcSphericalNormalUniformUniform(s2e::math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, + void CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, double phi_min, double phi_max); /** * @fn CalcSphericalNormalNormal * @brief Calculate randomized value with SphericalNormalNormal mode */ - void CalcSphericalNormalNormal(s2e::math::Vector<3>& destination, const s2e::math::Vector<3>& mean_vec); + void CalcSphericalNormalNormal(math::Vector<3>& destination, const math::Vector<3>& mean_vec); /** * @fn CalcQuaternionUniform * @brief Calculate randomized value with QuaternionUniform mode */ - void CalcQuaternionUniform(s2e::math::Quaternion& destination); + void CalcQuaternionUniform(math::Quaternion& destination); /** * @fn CalcQuaternionNormal * @brief Calculate randomized value with QuaternionNormal mode */ - void CalcQuaternionNormal(s2e::math::Quaternion& destination, double theta_sigma); + void CalcQuaternionNormal(math::Quaternion& destination, double theta_sigma); }; template -void InitializedMonteCarloParameters::SetRandomConfiguration(const s2e::math::Vector& mean_or_min, - const s2e::math::Vector& sigma_or_max, +void InitializedMonteCarloParameters::SetRandomConfiguration(const math::Vector& mean_or_min, + const math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type) { randomization_type_ = random_type; mean_or_min_.clear(); @@ -222,7 +222,7 @@ void InitializedMonteCarloParameters::SetRandomConfiguration(const s2e::math::Ve } template -void InitializedMonteCarloParameters::GetRandomizedVector(s2e::math::Vector& destination) const { +void InitializedMonteCarloParameters::GetRandomizedVector(math::Vector& destination) const { if (randomization_type_ == kNoRandomization) { ; } else if (NumElement > randomized_value_.size()) { diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp index 91560ea1b..720d678eb 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp @@ -13,7 +13,7 @@ namespace s2e::simulation { #define MAX_CHAR_NUM 256 MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); const char* section = "MONTE_CARLO_EXECUTION"; unsigned long long total_num_of_executions = ini_file.ReadInt(section, "number_of_executions"); diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index b5c85d32d..782b50295 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -53,28 +53,28 @@ std::string RelativeInformation::GetLogHeader() const { std::string str_tmp = ""; for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector( + str_tmp += logger::WriteVector( "satellite" + std::to_string(target_spacecraft_id) + "_position_from_satellite" + std::to_string(reference_spacecraft_id), "i", "m", 3); } } for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector( + str_tmp += logger::WriteVector( "satellite" + std::to_string(target_spacecraft_id) + "_velocity_from_satellite" + std::to_string(reference_spacecraft_id), "i", "m/s", 3); } } for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector( + str_tmp += logger::WriteVector( "satellite" + std::to_string(target_spacecraft_id) + "_position_from_satellite" + std::to_string(reference_spacecraft_id), "rtn", "m", 3); } } for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector( + str_tmp += logger::WriteVector( "satellite" + std::to_string(target_spacecraft_id) + "_velocity_from_satellite" + std::to_string(reference_spacecraft_id), "rtn", "m/s", 3); } } @@ -86,32 +86,32 @@ std::string RelativeInformation::GetLogValue() const { std::string str_tmp = ""; for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector(GetRelativePosition_i_m(target_spacecraft_id, reference_spacecraft_id)); + str_tmp += logger::WriteVector(GetRelativePosition_i_m(target_spacecraft_id, reference_spacecraft_id)); } } for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector(GetRelativeVelocity_i_m_s(target_spacecraft_id, reference_spacecraft_id)); + str_tmp += logger::WriteVector(GetRelativeVelocity_i_m_s(target_spacecraft_id, reference_spacecraft_id)); } } for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector(GetRelativePosition_rtn_m(target_spacecraft_id, reference_spacecraft_id)); + str_tmp += logger::WriteVector(GetRelativePosition_rtn_m(target_spacecraft_id, reference_spacecraft_id)); } } for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < target_spacecraft_id; reference_spacecraft_id++) { - str_tmp += WriteVector(GetRelativeVelocity_rtn_m_s(target_spacecraft_id, reference_spacecraft_id)); + str_tmp += logger::WriteVector(GetRelativeVelocity_rtn_m_s(target_spacecraft_id, reference_spacecraft_id)); } } return str_tmp; } -void RelativeInformation::LogSetup(Logger& logger) { logger.AddLogList(this); } +void RelativeInformation::LogSetup(logger::Logger& logger) { logger.AddLogList(this); } s2e::math::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { // Observer SC Body frame(obs_sat) -> ECI frame(i) diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index a5cbe1630..b68cab097 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -18,7 +18,7 @@ namespace s2e::simulation { * @class RelativeInformation * @brief Base class to manage relative information between spacecraft */ -class RelativeInformation : public ILoggable { +class RelativeInformation : public logger::ILoggable { public: /** * @fn RelativeInformation @@ -42,7 +42,7 @@ class RelativeInformation : public ILoggable { * @param [in] spacecraft_id: ID of target spacecraft * @param [in] dynamics: Dynamics information of the target spacecraft */ - void RegisterDynamicsInfo(const size_t spacecraft_id, const Dynamics* dynamics); + void RegisterDynamicsInfo(const size_t spacecraft_id, const dynamics::Dynamics* dynamics); /** * @fn RegisterDynamicsInfo * @brief Remove dynamics information of target spacecraft @@ -66,7 +66,7 @@ class RelativeInformation : public ILoggable { * @fn LogSetup * @brief Logging setup for relative information */ - void LogSetup(Logger& logger); + void LogSetup(logger::Logger& logger); // Getter /** @@ -129,12 +129,12 @@ class RelativeInformation : public ILoggable { * @brief Return the dynamics information of a spacecraft * @param [in] target_spacecraft_id: ID of the spacecraft */ - inline const Dynamics* GetReferenceSatDynamics(const size_t reference_spacecraft_id) const { + inline const dynamics::Dynamics* GetReferenceSatDynamics(const size_t reference_spacecraft_id) const { return dynamics_database_.at(reference_spacecraft_id); }; private: - std::map dynamics_database_; //!< Dynamics database of all spacecraft + std::map dynamics_database_; //!< Dynamics database of all spacecraft std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index 599b6ec4e..d8ca3078f 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -19,7 +19,7 @@ namespace s2e::simulation { */ struct SimulationConfiguration { std::string initialize_base_file_name_; //!< Base file name for initialization - Logger* main_logger_; //!< Main logger + logger::Logger* main_logger_; //!< Main logger unsigned int number_of_simulated_spacecraft_; //!< Number of simulated spacecraft std::vector spacecraft_file_list_; //!< File name list for spacecraft initialization diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index ff7ce9b5c..ebee0e571 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -19,6 +19,6 @@ s2e::math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { return torque_b_Nm_; } -void InstalledComponents::LogSetup(Logger& logger) { UNUSED(logger); } +void InstalledComponents::LogSetup(logger::Logger& logger) { UNUSED(logger); } } // namespace s2e::simulation diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index 6e5a3c61c..f357daca3 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -48,7 +48,7 @@ class InstalledComponents { * @brief Setup the logger for components * @details Users need to override this function to add logger for components */ - virtual void LogSetup(Logger& logger); + virtual void LogSetup(logger::Logger& logger); }; } // namespace s2e::simulation diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index c80950dd5..d99b1a1a5 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -10,7 +10,7 @@ namespace s2e::simulation { -Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id, +Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information) : spacecraft_id_(spacecraft_id) { Initialize(simulation_configuration, global_environment, spacecraft_id, relative_information); @@ -27,14 +27,14 @@ Spacecraft::~Spacecraft() { delete components_; } -void Spacecraft::Initialize(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, +void Spacecraft::Initialize(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information) { clock_generator_.ClearTimerCount(); structure_ = new Structure(simulation_configuration, spacecraft_id); - local_environment_ = new LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); - dynamics_ = new Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, structure_, + local_environment_ = new environment::LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); + dynamics_ = new dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, structure_, relative_information); - disturbances_ = new Disturbances(simulation_configuration, spacecraft_id, structure_, global_environment); + disturbances_ = new disturbances::Disturbances(simulation_configuration, spacecraft_id, structure_, global_environment); simulation_configuration->main_logger_->CopyFileToLogDirectory(simulation_configuration->spacecraft_file_list_[spacecraft_id]); @@ -44,14 +44,14 @@ void Spacecraft::Initialize(const SimulationConfiguration* simulation_configurat } } -void Spacecraft::LogSetup(Logger& logger) { +void Spacecraft::LogSetup(logger::Logger& logger) { dynamics_->LogSetup(logger); local_environment_->LogSetup(logger); disturbances_->LogSetup(logger); components_->LogSetup(logger); } -void Spacecraft::Update(const SimulationTime* simulation_time) { +void Spacecraft::Update(const environment::SimulationTime* simulation_time) { dynamics_->ClearForceTorque(); // Update local environment and disturbance diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index a59ea4eaa..88f612246 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -27,7 +27,7 @@ class Spacecraft { * @fn Spacecraft * @brief Constructor for single satellite simulation */ - Spacecraft(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id, + Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information = nullptr); /** @@ -45,14 +45,14 @@ class Spacecraft { * @fn Initialize * @brief Initialize function for multiple spacecraft simulation */ - virtual void Initialize(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, + virtual void Initialize(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information = nullptr); /** * @fn Update * @brief Update all states related with the spacecraft */ - virtual void Update(const SimulationTime* simulation_time); + virtual void Update(const environment::SimulationTime* simulation_time); /** * @fn Clear @@ -64,24 +64,24 @@ class Spacecraft { * @fn LogSetup * @brief Logger setting for the spacecraft specific information */ - virtual void LogSetup(Logger& logger); + virtual void LogSetup(logger::Logger& logger); // Getters /** * @fn GetDynamics * @brief Get dynamics of the spacecraft */ - inline const Dynamics& GetDynamics() const { return *dynamics_; } + inline const dynamics::Dynamics& GetDynamics() const { return *dynamics_; } /** * @fn GetLocalEnvironment * @brief Get local environment around the spacecraft */ - inline const LocalEnvironment& GetLocalEnvironment() const { return *local_environment_; } + inline const environment::LocalEnvironment& GetLocalEnvironment() const { return *local_environment_; } /** * @fn GetDisturbances * @brief Get disturbance acting of the spacecraft */ - inline const Disturbances& GetDisturbances() const { return *disturbances_; } + inline const disturbances::Disturbances& GetDisturbances() const { return *disturbances_; } /** * @fn GetStructure * @brief Get structure of the spacecraft @@ -99,11 +99,11 @@ class Spacecraft { inline unsigned int GetSpacecraftId() const { return spacecraft_id_; } protected: - ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft - Dynamics* dynamics_; //!< Dynamics information of the spacecraft + environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft + dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft - LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft - Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft + environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft + disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft Structure* structure_; //!< Structure information of the spacecraft InstalledComponents* components_; //!< Components information installed on the spacecraft const unsigned int spacecraft_id_; //!< ID of the spacecraft diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 543203f75..5eaa7c863 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -12,7 +12,7 @@ namespace s2e::simulation { #define MIN_VAL 1e-6 KinematicsParameters InitKinematicsParameters(std::string file_name) { - auto conf = IniAccess(file_name); + auto conf = setting_file_reader::IniAccess(file_name); const char* section = "KINEMATIC_PARAMETERS"; s2e::math::Vector<3> center_of_gravity_b_m; @@ -34,7 +34,7 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { std::vector InitSurfaces(std::string file_name) { using std::cout; - auto conf = IniAccess(file_name); + auto conf = setting_file_reader::IniAccess(file_name); const char* section = "SURFACES"; const int num_surface = conf.ReadInt(section, "number_of_surfaces"); @@ -109,7 +109,7 @@ std::vector InitSurfaces(std::string file_name) { } ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { - auto conf = IniAccess(file_name); + auto conf = setting_file_reader::IniAccess(file_name); const char* section = "RESIDUAL_MAGNETIC_MOMENT"; s2e::math::Vector<3> rmm_const_b; diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 750db9a55..b66d7c90d 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -7,7 +7,6 @@ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ #include -using s2e::math::Vector; namespace s2e::simulation { @@ -57,16 +56,16 @@ class ResidualMagneticMoment { * @brief Set Constant value of RMM at body frame [Am2] * @param [in] rmm_const_b_Am2: Constant value of RMM at the body frame [Am2] */ - inline void SetRmmConstant_b_Am2(const Vector<3> rmm_const_b_Am2) { constant_value_b_Am2_ = rmm_const_b_Am2; } + inline void SetRmmConstant_b_Am2(const math::Vector<3> rmm_const_b_Am2) { constant_value_b_Am2_ = rmm_const_b_Am2; } /** * @fn AddRMMConst_b_Am2 * @brief Add Constant value of RMM at body frame [Am2] * @param [in] rmm_const_b_Am2: Constant value of RMM at the body frame [Am2] */ - inline void AddRmmConstant_b_Am2(const Vector<3> rmm_const_b_Am2) { constant_value_b_Am2_ += rmm_const_b_Am2; } + inline void AddRmmConstant_b_Am2(const math::Vector<3> rmm_const_b_Am2) { constant_value_b_Am2_ += rmm_const_b_Am2; } private: - Vector<3> constant_value_b_Am2_; //!< Constant value of RMM at body frame [Am2] + math::Vector<3> constant_value_b_Am2_; //!< Constant value of RMM at body frame [Am2] double random_walk_standard_deviation_Am2_; //!< Random walk standard deviation of RMM [Am2] double random_walk_limit_Am2_; //!< Random walk limit of RMM [Am2] double random_noise_standard_deviation_Am2_; //!< Standard deviation of white noise of RMM [Am2] diff --git a/src/simulation/spacecraft/structure/structure.cpp b/src/simulation/spacecraft/structure/structure.cpp index 2958437de..ffbe55e05 100644 --- a/src/simulation/spacecraft/structure/structure.cpp +++ b/src/simulation/spacecraft/structure/structure.cpp @@ -21,7 +21,7 @@ Structure::~Structure() { void Structure::Initialize(const SimulationConfiguration* simulation_configuration, const int spacecraft_id) { // Read file name - IniAccess conf = IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); + setting_file_reader::IniAccess conf = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); std::string ini_fname = conf.ReadString("SETTING_FILES", "structure_file"); // Save ini file simulation_configuration->main_logger_->CopyFileToLogDirectory(ini_fname); From 09970898af93b8e4ee7de0e5d3945559d4eec002 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 15:37:50 +0900 Subject: [PATCH 422/456] Update namespace info in s2e --- src/s2e.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/s2e.cpp b/src/s2e.cpp index 7861f38af..853b04bee 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -71,7 +71,7 @@ int main(int argc, char *argv[]) std::cout << "\tIni file: "; print_path(ini_file); - auto simulation_case = SampleCase(ini_file); + auto simulation_case = sample::SampleCase(ini_file); simulation_case.Initialize(); simulation_case.Main(); From 10c18e1236b69248968b39167e180dfaf0f86540 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 15:44:10 +0900 Subject: [PATCH 423/456] Update namespace info in components/base --- src/components/base/component.cpp | 4 ++-- src/components/base/component.hpp | 6 +++--- src/components/base/i2c_controller.cpp | 2 +- src/components/base/i2c_controller.hpp | 4 ++-- src/components/base/i2c_target_communication_with_obc.cpp | 4 ++-- src/components/base/i2c_target_communication_with_obc.hpp | 6 +++--- src/components/base/uart_communication_with_obc.cpp | 6 +++--- src/components/base/uart_communication_with_obc.hpp | 8 ++++---- src/components/examples/example_change_structure.cpp | 6 +++--- src/components/examples/example_change_structure.hpp | 6 +++--- .../examples/example_i2c_controller_for_hils.cpp | 4 ++-- .../examples/example_i2c_controller_for_hils.hpp | 4 ++-- src/components/examples/example_i2c_target_for_hils.cpp | 4 ++-- src/components/examples/example_i2c_target_for_hils.hpp | 4 ++-- .../examples/example_serial_communication_for_hils.cpp | 4 ++-- .../examples/example_serial_communication_for_hils.hpp | 4 ++-- .../examples/example_serial_communication_with_obc.cpp | 4 ++-- .../examples/example_serial_communication_with_obc.hpp | 4 ++-- 18 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/components/base/component.cpp b/src/components/base/component.cpp index df61cb1ce..65f9f88ae 100644 --- a/src/components/base/component.cpp +++ b/src/components/base/component.cpp @@ -7,7 +7,7 @@ namespace s2e::components { -Component::Component(const unsigned int prescaler, ClockGenerator* clock_generator, const unsigned int fast_prescaler) +Component::Component(const unsigned int prescaler, environment::ClockGenerator* clock_generator, const unsigned int fast_prescaler) : clock_generator_(clock_generator) { power_port_ = new PowerPort(); clock_generator_->RegisterComponent(this); @@ -15,7 +15,7 @@ Component::Component(const unsigned int prescaler, ClockGenerator* clock_generat fast_prescaler_ = (fast_prescaler > 0) ? fast_prescaler : 1; } -Component::Component(const unsigned int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const unsigned int fast_prescaler) +Component::Component(const unsigned int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const unsigned int fast_prescaler) : clock_generator_(clock_generator), power_port_(power_port) { clock_generator_->RegisterComponent(this); prescaler_ = (prescaler > 0) ? prescaler : 1; diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 72dbf6c6c..25c035415 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -29,7 +29,7 @@ class Component : public ITickable { * @param [in] clock_generator: Clock generator * @param [in] fast_prescaler: Frequency scale factor for fast update (used only for component faster than component update period) */ - Component(const unsigned int prescaler, ClockGenerator* clock_generator, const unsigned int fast_prescaler = 1); + Component(const unsigned int prescaler, environment::ClockGenerator* clock_generator, const unsigned int fast_prescaler = 1); /** * @fn Component * @brief Constructor with power port @@ -38,7 +38,7 @@ class Component : public ITickable { * @param [in] power_port: Power port * @param [in] fast_prescaler: Frequency scale factor for fast update (used only for component faster than component update period) */ - Component(const unsigned int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const unsigned int fast_prescaler = 1); + Component(const unsigned int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const unsigned int fast_prescaler = 1); /** * @fn Component * @brief Copy constructor @@ -86,7 +86,7 @@ class Component : public ITickable { */ virtual void PowerOffRoutine(){}; - ClockGenerator* clock_generator_; //!< Clock generator + environment::ClockGenerator* clock_generator_; //!< Clock generator PowerPort* power_port_; //!< Power port }; diff --git a/src/components/base/i2c_controller.cpp b/src/components/base/i2c_controller.cpp index 6cc80c056..400c88ae3 100644 --- a/src/components/base/i2c_controller.cpp +++ b/src/components/base/i2c_controller.cpp @@ -11,7 +11,7 @@ namespace s2e::components { I2cController::I2cController(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, - const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager) + const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager) : hils_port_id_(hils_port_id), baud_rate_(baud_rate), tx_buffer_size_(tx_buffer_size), diff --git a/src/components/base/i2c_controller.hpp b/src/components/base/i2c_controller.hpp index bd1e5e2d2..f300a9710 100644 --- a/src/components/base/i2c_controller.hpp +++ b/src/components/base/i2c_controller.hpp @@ -30,7 +30,7 @@ class I2cController { * @param [in] hils_port_manager: HILS port manager */ I2cController(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, - HilsPortManager* hils_port_manager); + simulation::HilsPortManager* hils_port_manager); /** * @fn ~I2cController * @brief Destructor @@ -63,7 +63,7 @@ class I2cController { unsigned int rx_buffer_size_; //!< RX (Target to Controller) buffer size SimulationMode simulation_mode_ = SimulationMode::kError; //!< Simulation mode (SILS or HILS) - HilsPortManager* hils_port_manager_; //!< HILS port manager + simulation::HilsPortManager* hils_port_manager_; //!< HILS port manager }; } // namespace s2e::components diff --git a/src/components/base/i2c_target_communication_with_obc.cpp b/src/components/base/i2c_target_communication_with_obc.cpp index a916b0df7..7aefe1704 100644 --- a/src/components/base/i2c_target_communication_with_obc.cpp +++ b/src/components/base/i2c_target_communication_with_obc.cpp @@ -20,7 +20,7 @@ I2cTargetCommunicationWithObc::I2cTargetCommunicationWithObc(const unsigned int } I2cTargetCommunicationWithObc::I2cTargetCommunicationWithObc(const unsigned int hils_port_id, const unsigned char i2c_address, - HilsPortManager* hils_port_manager) + simulation::HilsPortManager* hils_port_manager) : hils_port_id_(hils_port_id), i2c_address_(i2c_address), hils_port_manager_(hils_port_manager) { #ifdef USE_HILS simulation_mode_ = SimulationMode::kHils; @@ -36,7 +36,7 @@ I2cTargetCommunicationWithObc::I2cTargetCommunicationWithObc(const unsigned int I2cTargetCommunicationWithObc::I2cTargetCommunicationWithObc(const unsigned int sils_port_id, const unsigned int hils_port_id, const unsigned char i2c_address, OnBoardComputer* obc, - HilsPortManager* hils_port_manager) + simulation::HilsPortManager* hils_port_manager) : sils_port_id_(sils_port_id), hils_port_id_(hils_port_id), i2c_address_(i2c_address), obc_(obc), hils_port_manager_(hils_port_manager) { #ifdef USE_HILS simulation_mode_ = SimulationMode::kHils; diff --git a/src/components/base/i2c_target_communication_with_obc.hpp b/src/components/base/i2c_target_communication_with_obc.hpp index 4d017aafe..61a1b3e34 100644 --- a/src/components/base/i2c_target_communication_with_obc.hpp +++ b/src/components/base/i2c_target_communication_with_obc.hpp @@ -34,7 +34,7 @@ class I2cTargetCommunicationWithObc { * @param [in] i2c_address: I2C address for the target * @param [in] hils_port_manager: HILS port manager */ - I2cTargetCommunicationWithObc(const unsigned int hils_port_id, const unsigned char i2c_address, HilsPortManager* hils_port_manager); + I2cTargetCommunicationWithObc(const unsigned int hils_port_id, const unsigned char i2c_address, simulation::HilsPortManager* hils_port_manager); /** * @fn I2cTargetCommunicationWithObc * @brief Constructor for both SILS and HILS mode @@ -45,7 +45,7 @@ class I2cTargetCommunicationWithObc { * @param [in] hils_port_manager: HILS port manager */ I2cTargetCommunicationWithObc(const unsigned int sils_port_id, const unsigned int hils_port_id, const unsigned char i2c_address, - OnBoardComputer* obc, HilsPortManager* hils_port_manager); + OnBoardComputer* obc, simulation::HilsPortManager* hils_port_manager); /** * @fn I2cTargetCommunicationWithObc * @brief Prevent double freeing of memory when this class is copied @@ -120,7 +120,7 @@ class I2cTargetCommunicationWithObc { SimulationMode simulation_mode_ = SimulationMode::kError; //!< Simulation mode OnBoardComputer* obc_; //!< Communication target OBC - HilsPortManager* hils_port_manager_; //!< HILS port manager + simulation::HilsPortManager* hils_port_manager_; //!< HILS port manager }; } // namespace s2e::components diff --git a/src/components/base/uart_communication_with_obc.cpp b/src/components/base/uart_communication_with_obc.cpp index 41bb777fd..075b67944 100644 --- a/src/components/base/uart_communication_with_obc.cpp +++ b/src/components/base/uart_communication_with_obc.cpp @@ -35,7 +35,7 @@ UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int sils_port_ InitializeObcComBase(); } -UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, HilsPortManager* hils_port_manager) +UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager) : hils_port_id_(hils_port_id), baud_rate_(baud_rate), hils_port_manager_(hils_port_manager) { #ifdef USE_HILS simulation_mode_ = SimulationMode::kHils; @@ -49,7 +49,7 @@ UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_ } UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, - const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager) + const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager) : hils_port_id_(hils_port_id), baud_rate_(baud_rate), tx_buffer_size_(tx_buffer_size), @@ -67,7 +67,7 @@ UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_ } UartCommunicationWithObc::UartCommunicationWithObc(const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, - const unsigned int baud_rate, HilsPortManager* hils_port_manager) + const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager) : sils_port_id_(sils_port_id), hils_port_id_(hils_port_id), baud_rate_(baud_rate), obc_(obc), hils_port_manager_(hils_port_manager) { #ifdef USE_HILS simulation_mode_ = SimulationMode::kHils; diff --git a/src/components/base/uart_communication_with_obc.hpp b/src/components/base/uart_communication_with_obc.hpp index 6cb45c5df..caad9f1c9 100644 --- a/src/components/base/uart_communication_with_obc.hpp +++ b/src/components/base/uart_communication_with_obc.hpp @@ -56,7 +56,7 @@ class UartCommunicationWithObc { * @param [in] baud_rate: Baud rate of HILS communication port * @param [in] hils_port_manager: HILS port manager */ - UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, HilsPortManager* hils_port_manager); + UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager); /** * @fn UartCommunicationWithObc * @brief Constructor for HILS mode @@ -67,7 +67,7 @@ class UartCommunicationWithObc { * @param [in] hils_port_manager: HILS port manager */ UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, - const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager); + const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager); /** * @fn UartCommunicationWithObc * @brief Constructor for both SILS and HILS mode @@ -79,7 +79,7 @@ class UartCommunicationWithObc { * @param [in] hils_port_manager: HILS port manager */ UartCommunicationWithObc(const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, const unsigned int baud_rate, - HilsPortManager* hils_port_manager); + simulation::HilsPortManager* hils_port_manager); /** * @fn ~UartCommunicationWithObc * @brief Destructor @@ -110,7 +110,7 @@ class UartCommunicationWithObc { SimulationMode simulation_mode_ = SimulationMode::kError; //!< Simulation mode OnBoardComputer* obc_; //!< Communication target OBC - HilsPortManager* hils_port_manager_; //!< HILS port manager + simulation::HilsPortManager* hils_port_manager_; //!< HILS port manager /** * @fn InitializeObcComBase diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index 9f1d6d051..0ee982771 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -9,7 +9,7 @@ namespace s2e::components { -ExampleChangeStructure::ExampleChangeStructure(ClockGenerator* clock_generator, Structure* structure) +ExampleChangeStructure::ExampleChangeStructure(environment::ClockGenerator* clock_generator, simulation::Structure* structure) : Component(1, clock_generator), structure_(structure) {} ExampleChangeStructure::~ExampleChangeStructure() {} @@ -20,14 +20,14 @@ void ExampleChangeStructure::MainRoutine(const int time_count) { structure_->GetToSetKinematicsParameters().SetMass_kg(100.0); // Center of gravity - Vector<3> cg(0.0); + math::Vector<3> cg(0.0); cg[0] = 0.01; cg[1] = -0.01; cg[2] = 0.02; structure_->GetToSetKinematicsParameters().SetCenterOfGravityVector_b_m(cg); // RMM - Vector<3> rmm(0.0); + math::Vector<3> rmm(0.0); rmm[0] = 0.1; rmm[1] = -0.1; rmm[2] = 0.2; diff --git a/src/components/examples/example_change_structure.hpp b/src/components/examples/example_change_structure.hpp index 93d749b61..bdc4f74c5 100644 --- a/src/components/examples/example_change_structure.hpp +++ b/src/components/examples/example_change_structure.hpp @@ -17,7 +17,7 @@ namespace s2e::components { * @class ExampleChangeStructure * @brief Class to show an example to change satellite structure information */ -class ExampleChangeStructure : public Component, public ILoggable { +class ExampleChangeStructure : public Component, public logger::ILoggable { public: /** * @fn ExampleChangeStructure @@ -25,7 +25,7 @@ class ExampleChangeStructure : public Component, public ILoggable { * @param [in] clock_generator: Clock generator * @param [in] structure: Structure information */ - ExampleChangeStructure(ClockGenerator* clock_generator, Structure* structure); + ExampleChangeStructure(environment::ClockGenerator* clock_generator, simulation::Structure* structure); /** * @fn ~ChangeStructure * @brief Destructor @@ -52,7 +52,7 @@ class ExampleChangeStructure : public Component, public ILoggable { virtual std::string GetLogValue() const override; protected: - Structure* structure_; //!< Structure information + simulation::Structure* structure_; //!< Structure information }; } // namespace s2e::components diff --git a/src/components/examples/example_i2c_controller_for_hils.cpp b/src/components/examples/example_i2c_controller_for_hils.cpp index b4f2bace1..c67f5fe8e 100644 --- a/src/components/examples/example_i2c_controller_for_hils.cpp +++ b/src/components/examples/example_i2c_controller_for_hils.cpp @@ -6,9 +6,9 @@ namespace s2e::components { -ExampleI2cControllerForHils::ExampleI2cControllerForHils(const int prescaler, ClockGenerator* clock_generator, const unsigned int hils_port_id, +ExampleI2cControllerForHils::ExampleI2cControllerForHils(const int prescaler, environment::ClockGenerator* clock_generator, const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, - const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager) + const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager) : Component(prescaler, clock_generator), I2cController(hils_port_id, baud_rate, tx_buffer_size, rx_buffer_size, hils_port_manager) {} ExampleI2cControllerForHils::~ExampleI2cControllerForHils() {} diff --git a/src/components/examples/example_i2c_controller_for_hils.hpp b/src/components/examples/example_i2c_controller_for_hils.hpp index 1e5796c39..84537cf6a 100644 --- a/src/components/examples/example_i2c_controller_for_hils.hpp +++ b/src/components/examples/example_i2c_controller_for_hils.hpp @@ -33,8 +33,8 @@ class ExampleI2cControllerForHils : public Component, public I2cController { * @param [in] rx_buffer_size: RX (Target to Controller) buffer size * @param [in] hils_port_manager: HILS port manager */ - ExampleI2cControllerForHils(const int prescaler, ClockGenerator* clock_generator, const unsigned int hils_port_id, const unsigned int baud_rate, - const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, HilsPortManager* hils_port_manager); + ExampleI2cControllerForHils(const int prescaler, environment::ClockGenerator* clock_generator, const unsigned int hils_port_id, const unsigned int baud_rate, + const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager); /** * @fn ~ExampleI2cControllerForHils * @brief Destructor diff --git a/src/components/examples/example_i2c_target_for_hils.cpp b/src/components/examples/example_i2c_target_for_hils.cpp index 0fc2a2380..b278d7313 100644 --- a/src/components/examples/example_i2c_target_for_hils.cpp +++ b/src/components/examples/example_i2c_target_for_hils.cpp @@ -7,9 +7,9 @@ namespace s2e::components { -ExampleI2cTargetForHils::ExampleI2cTargetForHils(const int prescaler, ClockGenerator* clock_generator, const int sils_port_id, +ExampleI2cTargetForHils::ExampleI2cTargetForHils(const int prescaler, environment::ClockGenerator* clock_generator, const int sils_port_id, unsigned char i2c_address, OnBoardComputer* obc, const unsigned int hils_port_id, - HilsPortManager* hils_port_manager) + simulation::HilsPortManager* hils_port_manager) : Component(prescaler, clock_generator), I2cTargetCommunicationWithObc(sils_port_id, hils_port_id, i2c_address, obc, hils_port_manager) {} ExampleI2cTargetForHils::~ExampleI2cTargetForHils() {} diff --git a/src/components/examples/example_i2c_target_for_hils.hpp b/src/components/examples/example_i2c_target_for_hils.hpp index ca03d3690..0e6faf2bd 100644 --- a/src/components/examples/example_i2c_target_for_hils.hpp +++ b/src/components/examples/example_i2c_target_for_hils.hpp @@ -34,8 +34,8 @@ class ExampleI2cTargetForHils : public Component, public I2cTargetCommunicationW * @param [in] hils_port_id: ID of HILS communication port * @param [in] hils_port_manager: HILS port manager */ - ExampleI2cTargetForHils(const int prescaler, ClockGenerator* clock_generator, const int sils_port_id, unsigned char i2c_address, - OnBoardComputer* obc, const unsigned int hils_port_id, HilsPortManager* hils_port_manager); + ExampleI2cTargetForHils(const int prescaler, environment::ClockGenerator* clock_generator, const int sils_port_id, unsigned char i2c_address, + OnBoardComputer* obc, const unsigned int hils_port_id, simulation::HilsPortManager* hils_port_manager); /** * @fn ~ExampleI2cTargetForHils * @brief Destructor diff --git a/src/components/examples/example_serial_communication_for_hils.cpp b/src/components/examples/example_serial_communication_for_hils.cpp index d4890360d..3c84e0b2b 100644 --- a/src/components/examples/example_serial_communication_for_hils.cpp +++ b/src/components/examples/example_serial_communication_for_hils.cpp @@ -8,9 +8,9 @@ namespace s2e::components { -ExampleSerialCommunicationForHils::ExampleSerialCommunicationForHils(ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, +ExampleSerialCommunicationForHils::ExampleSerialCommunicationForHils(environment::ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, const unsigned int baud_rate, - HilsPortManager* hils_port_manager, const int mode_id) + simulation::HilsPortManager* hils_port_manager, const int mode_id) : Component(300, clock_generator), UartCommunicationWithObc(sils_port_id, obc, hils_port_id, baud_rate, hils_port_manager), mode_id_(mode_id) {} ExampleSerialCommunicationForHils::~ExampleSerialCommunicationForHils() {} diff --git a/src/components/examples/example_serial_communication_for_hils.hpp b/src/components/examples/example_serial_communication_for_hils.hpp index 2393fa2c5..aeac14f2e 100644 --- a/src/components/examples/example_serial_communication_for_hils.hpp +++ b/src/components/examples/example_serial_communication_for_hils.hpp @@ -36,8 +36,8 @@ class ExampleSerialCommunicationForHils : public Component, public UartCommunica * @param [in] hils_port_manager: HILS port manager * @param [in] mode_id: Mode ID to select sender(0) or responder(1) */ - ExampleSerialCommunicationForHils(ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, - const unsigned int baud_rate, HilsPortManager* hils_port_manager, const int mode_id); + ExampleSerialCommunicationForHils(environment::ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, + const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager, const int mode_id); /** * @fn ~ExampleSerialCommunicationForHils * @brief Destructor diff --git a/src/components/examples/example_serial_communication_with_obc.cpp b/src/components/examples/example_serial_communication_with_obc.cpp index b44138520..3017ea96d 100644 --- a/src/components/examples/example_serial_communication_with_obc.cpp +++ b/src/components/examples/example_serial_communication_with_obc.cpp @@ -9,11 +9,11 @@ namespace s2e::components { -ExampleSerialCommunicationWithObc::ExampleSerialCommunicationWithObc(ClockGenerator* clock_generator, int port_id, OnBoardComputer* obc) +ExampleSerialCommunicationWithObc::ExampleSerialCommunicationWithObc(environment::ClockGenerator* clock_generator, int port_id, OnBoardComputer* obc) : Component(1000, clock_generator), UartCommunicationWithObc(port_id, obc) { Initialize(); } -ExampleSerialCommunicationWithObc::ExampleSerialCommunicationWithObc(ClockGenerator* clock_generator, int port_id, int prescaler, +ExampleSerialCommunicationWithObc::ExampleSerialCommunicationWithObc(environment::ClockGenerator* clock_generator, int port_id, int prescaler, OnBoardComputer* obc) : Component(prescaler, clock_generator), UartCommunicationWithObc(port_id, obc) { Initialize(); diff --git a/src/components/examples/example_serial_communication_with_obc.hpp b/src/components/examples/example_serial_communication_with_obc.hpp index 9a61c1ed0..d202fbc15 100644 --- a/src/components/examples/example_serial_communication_with_obc.hpp +++ b/src/components/examples/example_serial_communication_with_obc.hpp @@ -37,7 +37,7 @@ class ExampleSerialCommunicationWithObc : public Component, public UartCommunica * @param [in] port_id: Port ID for communication line b/w OnBoardComputer * @param [in] obc: The communication target OBC */ - ExampleSerialCommunicationWithObc(ClockGenerator* clock_generator, int port_id, OnBoardComputer* obc); + ExampleSerialCommunicationWithObc(environment::ClockGenerator* clock_generator, int port_id, OnBoardComputer* obc); /** * @fn ExampleSerialCommunicationWithObc * @brief Constructor @@ -46,7 +46,7 @@ class ExampleSerialCommunicationWithObc : public Component, public UartCommunica * @param [in] prescaler: Frequency scale factor for update * @param [in] obc: The communication target OBC */ - ExampleSerialCommunicationWithObc(ClockGenerator* clock_generator, int port_id, int prescaler, OnBoardComputer* obc); + ExampleSerialCommunicationWithObc(environment::ClockGenerator* clock_generator, int port_id, int prescaler, OnBoardComputer* obc); /** * @fn ~SerialCommunicationWithObc * @brief Destructor From 922b4abb296fbbc1cc5b395802e765522f476d58 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Fri, 27 Sep 2024 15:47:14 +0900 Subject: [PATCH 424/456] Update namespace info in components --- .../ideal/angular_velocity_observer.cpp | 4 ++-- .../ideal/angular_velocity_observer.hpp | 12 ++++++------ src/components/ideal/attitude_observer.cpp | 4 ++-- src/components/ideal/attitude_observer.hpp | 12 ++++++------ src/components/ideal/force_generator.cpp | 4 ++-- src/components/ideal/force_generator.hpp | 12 ++++++------ src/components/ideal/orbit_observer.cpp | 4 ++-- src/components/ideal/orbit_observer.hpp | 12 ++++++------ src/components/ideal/torque_generator.cpp | 4 ++-- src/components/ideal/torque_generator.hpp | 12 ++++++------ src/components/real/aocs/gnss_receiver.cpp | 8 ++++---- src/components/real/aocs/gnss_receiver.hpp | 16 ++++++++-------- src/components/real/aocs/gyro_sensor.cpp | 8 ++++---- src/components/real/aocs/gyro_sensor.hpp | 16 ++++++++-------- src/components/real/aocs/magnetometer.cpp | 8 ++++---- src/components/real/aocs/magnetometer.hpp | 16 ++++++++-------- src/components/real/aocs/magnetorquer.cpp | 8 ++++---- src/components/real/aocs/magnetorquer.hpp | 16 ++++++++-------- src/components/real/aocs/reaction_wheel.cpp | 8 ++++---- src/components/real/aocs/reaction_wheel.hpp | 16 ++++++++-------- src/components/real/aocs/star_sensor.cpp | 8 ++++---- src/components/real/aocs/star_sensor.hpp | 16 ++++++++-------- src/components/real/aocs/sun_sensor.cpp | 8 ++++---- src/components/real/aocs/sun_sensor.hpp | 16 ++++++++-------- src/components/real/cdh/on_board_computer.cpp | 6 +++--- src/components/real/cdh/on_board_computer.hpp | 6 +++--- .../real/cdh/on_board_computer_with_c2a.cpp | 6 +++--- .../real/cdh/on_board_computer_with_c2a.hpp | 6 +++--- .../ground_station_calculator.hpp | 8 ++++---- .../wings_command_sender_to_c2a.cpp | 2 +- .../wings_command_sender_to_c2a.hpp | 4 ++-- src/components/real/mission/telescope.cpp | 4 ++-- src/components/real/mission/telescope.hpp | 12 ++++++------ src/components/real/power/battery.cpp | 6 +++--- src/components/real/power/battery.hpp | 14 +++++++------- .../real/power/pcu_initial_study.cpp | 6 +++--- .../real/power/pcu_initial_study.hpp | 14 +++++++------- .../real/power/power_control_unit.cpp | 4 ++-- .../real/power/power_control_unit.hpp | 12 ++++++------ .../real/power/solar_array_panel.cpp | 10 +++++----- .../real/power/solar_array_panel.hpp | 18 +++++++++--------- .../real/propulsion/simple_thruster.cpp | 8 ++++---- .../real/propulsion/simple_thruster.hpp | 16 ++++++++-------- src/disturbances/air_drag.hpp | 6 +++--- src/disturbances/disturbance.hpp | 2 +- src/disturbances/geopotential.hpp | 6 +++--- src/disturbances/gravity_gradient.hpp | 6 +++--- src/disturbances/lunar_gravity_field.hpp | 6 +++--- src/disturbances/magnetic_disturbance.hpp | 6 +++--- .../solar_radiation_pressure_disturbance.hpp | 6 +++--- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.hpp | 8 ++++---- .../attitude_with_cantilever_vibration.hpp | 6 +++--- src/dynamics/orbit/orbit.hpp | 8 ++++---- src/dynamics/thermal/temperature.hpp | 2 +- .../global/celestial_information.hpp | 8 ++++---- src/environment/global/gnss_satellites.hpp | 8 ++++---- src/environment/global/hipparcos_catalogue.hpp | 8 ++++---- src/environment/global/simulation_time.hpp | 8 ++++---- src/environment/local/atmosphere.hpp | 8 ++++---- src/environment/local/earth_albedo.hpp | 8 ++++---- src/environment/local/geomagnetic_field.hpp | 8 ++++---- .../local/local_celestial_information.hpp | 8 ++++---- .../solar_radiation_pressure_environment.hpp | 8 ++++---- 64 files changed, 273 insertions(+), 273 deletions(-) diff --git a/src/components/ideal/angular_velocity_observer.cpp b/src/components/ideal/angular_velocity_observer.cpp index d6a2bbcf3..7e3bea5d9 100644 --- a/src/components/ideal/angular_velocity_observer.cpp +++ b/src/components/ideal/angular_velocity_observer.cpp @@ -9,7 +9,7 @@ namespace s2e::components { -AngularVelocityObserver::AngularVelocityObserver(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude) +AngularVelocityObserver::AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude) : Component(prescaler, clock_generator), Sensor(sensor_base), attitude_(attitude) {} void AngularVelocityObserver::MainRoutine(const int time_count) { @@ -34,7 +34,7 @@ std::string AngularVelocityObserver::GetLogValue() const { return str_tmp; } -AngularVelocityObserver InitializeAngularVelocityObserver(ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, +AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, const Attitude& attitude) { IniAccess ini_file(file_name); diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 47bb4a404..67d421f9b 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -18,7 +18,7 @@ namespace s2e::components { * @class AngularVelocityObserver * @brief Ideal component which can observe angular velocity */ -class AngularVelocityObserver : public Component, public Sensor<3>, public ILoggable { +class AngularVelocityObserver : public Component, public Sensor<3>, public logger::ILoggable { public: /** * @fn AngularVelocityObserver @@ -28,7 +28,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg * @param [in] sensor_base: Sensor base information * @param [in] dynamics: Dynamics information */ - AngularVelocityObserver(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude); + AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude); /** * @fn ~AngularVelocityObserver * @brief Destructor @@ -42,15 +42,15 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -74,7 +74,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public ILogg * @param [in] component_step_time_s: Component step time [sec] * @param [in] dynamics: Dynamics information */ -AngularVelocityObserver InitializeAngularVelocityObserver(ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, +AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, const Attitude& attitude); } // namespace s2e::components diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 533a636c8..1cb6e6126 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -10,7 +10,7 @@ namespace s2e::components { -AttitudeObserver::AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, +AttitudeObserver::AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, const Attitude& attitude) : Component(prescaler, clock_generator), angle_noise_(0.0, standard_deviation_rad), attitude_(attitude) { direction_noise_.SetParameters(0.0, 1.0); @@ -49,7 +49,7 @@ std::string AttitudeObserver::GetLogValue() const { return str_tmp; } -AttitudeObserver InitializeAttitudeObserver(ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude) { +AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude) { // General IniAccess ini_file(file_name); diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 0bf1e973f..8ce9697e5 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -19,7 +19,7 @@ namespace s2e::components { * @class AttitudeObserver * @brief Ideal component which can observe attitude */ -class AttitudeObserver : public Component, public ILoggable { +class AttitudeObserver : public Component, public logger::ILoggable { public: /** * @fn AttitudeObserver @@ -28,7 +28,7 @@ class AttitudeObserver : public Component, public ILoggable { * @param [in] clock_generator: Clock generator * @param [in] attitude: Attitude information */ - AttitudeObserver(const int prescaler, ClockGenerator* clock_generator, const double standard_deviation_rad, const Attitude& attitude); + AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, const Attitude& attitude); /** * @fn ~AttitudeObserver @@ -43,15 +43,15 @@ class AttitudeObserver : public Component, public ILoggable { */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -77,7 +77,7 @@ class AttitudeObserver : public Component, public ILoggable { * @param [in] file_name: Path to the initialize file * @param [in] attitude: Attitude information */ -AttitudeObserver InitializeAttitudeObserver(ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude); +AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude); } // namespace s2e::components diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 59e788ba3..f458160d7 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -11,7 +11,7 @@ namespace s2e::components { // Constructor -ForceGenerator::ForceGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, +ForceGenerator::ForceGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, const double direction_error_standard_deviation_rad, const Dynamics* dynamics) : Component(prescaler, clock_generator), magnitude_noise_(0.0, magnitude_error_standard_deviation_N), @@ -107,7 +107,7 @@ s2e::math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(s2e::math return error_quaternion; } -ForceGenerator InitializeForceGenerator(ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { +ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { // General IniAccess ini_file(file_name); diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 46724d9f4..03c4bd09b 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -18,7 +18,7 @@ namespace s2e::components { * @class ForceGenerator * @brief Ideal component which can generate for control algorithm test */ -class ForceGenerator : public Component, public ILoggable { +class ForceGenerator : public Component, public logger::ILoggable { public: /** * @fn ForceGenerator @@ -29,7 +29,7 @@ class ForceGenerator : public Component, public ILoggable { * @param [in] direction_error_standard_deviation_rad: Standard deviation of direction error [rad] * @param [in] dynamics: Dynamics information */ - ForceGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, + ForceGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, const double direction_error_standard_deviation_rad, const Dynamics* dynamics); /** * @fn ~ForceGenerator @@ -49,15 +49,15 @@ class ForceGenerator : public Component, public ILoggable { */ void PowerOffRoutine(); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; @@ -124,7 +124,7 @@ class ForceGenerator : public Component, public ILoggable { * @param [in] file_name: Path to initialize file * @param [in] dynamics: Dynamics information */ -ForceGenerator InitializeForceGenerator(ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); +ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); } // namespace s2e::components diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 881610793..0851de4d8 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -10,7 +10,7 @@ namespace s2e::components { -OrbitObserver::OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, +OrbitObserver::OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { @@ -85,7 +85,7 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame) { } } -OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { +OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { // General IniAccess ini_file(file_name); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 36ef2a447..58a2cf3c9 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -28,7 +28,7 @@ enum class NoiseFrame { * @class OrbitObserver * @brief Ideal component which can observe orbit */ -class OrbitObserver : public Component, public ILoggable { +class OrbitObserver : public Component, public logger::ILoggable { public: /** * @fn OrbitObserver @@ -39,7 +39,7 @@ class OrbitObserver : public Component, public ILoggable { * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, ClockGenerator* clock_generator, const NoiseFrame noise_frame, const s2e::math::Vector<6> error_standard_deviation, + OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit); /** @@ -55,15 +55,15 @@ class OrbitObserver : public Component, public ILoggable { */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -105,7 +105,7 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame); * @param [in] file_name: Path to the initialize file * @param [in] orbit: Orbit information */ -OrbitObserver InitializeOrbitObserver(ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit); +OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit); } // namespace s2e::components diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index 600f65e5a..a47ede7c9 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -11,7 +11,7 @@ namespace s2e::components { // Constructor -TorqueGenerator::TorqueGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, +TorqueGenerator::TorqueGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, const double direction_error_standard_deviation_rad, const Dynamics* dynamics) : Component(prescaler, clock_generator), magnitude_noise_(0.0, magnitude_error_standard_deviation_Nm), @@ -80,7 +80,7 @@ s2e::math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(s2e::mat return error_quaternion; } -TorqueGenerator InitializeTorqueGenerator(ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { +TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { // General IniAccess ini_file(file_name); diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 51cbe39ee..357f7b22c 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -18,7 +18,7 @@ namespace s2e::components { * @class TorqueGenerator * @brief Ideal component which can generate for control algorithm test */ -class TorqueGenerator : public Component, public ILoggable { +class TorqueGenerator : public Component, public logger::ILoggable { public: /** * @fn TorqueGenerator @@ -29,7 +29,7 @@ class TorqueGenerator : public Component, public ILoggable { * @param [in] direction_error_standard_deviation_rad: Standard deviation of direction error [rad] * @param [in] dynamics: Dynamics information */ - TorqueGenerator(const int prescaler, ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, + TorqueGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, const double direction_error_standard_deviation_rad, const Dynamics* dynamics); /** * @fn ~TorqueGenerator @@ -49,15 +49,15 @@ class TorqueGenerator : public Component, public ILoggable { */ void PowerOffRoutine(); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; @@ -102,7 +102,7 @@ class TorqueGenerator : public Component, public ILoggable { * @param [in] file_name: Path to initialize file * @param [in] dynamics: Dynamics information */ -TorqueGenerator InitializeTorqueGenerator(ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); +TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); } // namespace s2e::components diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 0d899b9e8..9b6a80cc8 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -13,7 +13,7 @@ namespace s2e::components { -GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, +GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, @@ -33,7 +33,7 @@ GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, } } -GnssReceiver::GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, +GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, @@ -291,7 +291,7 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat return gnss_receiver_param; } -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); @@ -301,7 +301,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp return gnss_r; } -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 1ea260d0f..3714cc772 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -42,7 +42,7 @@ typedef struct _gnss_info { * @class GnssReceiver * @brief Class to emulate GNSS receiver */ -class GnssReceiver : public Component, public ILoggable { +class GnssReceiver : public Component, public logger::ILoggable { public: /** * @fn GnssReceiver @@ -60,7 +60,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, + GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); @@ -80,7 +80,7 @@ class GnssReceiver : public Component, public ILoggable { * @param [in] gnss_satellites: GNSS Satellites information * @param [in] simulation_time: Simulation time information */ - GnssReceiver(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, + GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, @@ -116,15 +116,15 @@ class GnssReceiver : public Component, public ILoggable { */ inline const s2e::math::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; @@ -226,7 +226,7 @@ AntennaModel SetAntennaModel(const std::string antenna_model); * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn InitGnssReceiver @@ -239,7 +239,7 @@ GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, const size_t comp * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); } // namespace s2e::components diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index 7af914f24..f967195fa 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -9,11 +9,11 @@ namespace s2e::components { -GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, +GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} -GyroSensor::GyroSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, +GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), @@ -47,7 +47,7 @@ std::string GyroSensor::GetLogValue() const { return str_tmp; } -GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, +GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics) { IniAccess gyro_conf(file_name); const char* sensor_name = "GYRO_SENSOR_"; @@ -68,7 +68,7 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const return gyro; } -GyroSensor InitGyroSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, +GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics) { IniAccess gyro_conf(file_name); const char* sensor_name = "GYRO_SENSOR_"; diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index fd6ede443..c99759722 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -21,7 +21,7 @@ const size_t kGyroDimension = 3; //!< Dimension of gyro sensor * @class GyroSensor * @brief Class to emulate gyro sensor */ -class GyroSensor : public Component, public Sensor, public ILoggable { +class GyroSensor : public Component, public Sensor, public logger::ILoggable { public: /** * @fn GyroSensor @@ -33,7 +33,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] quaternion_b2c: Quaternion from body frame to component frame * @param [in] dynamics: Dynamics information */ - GyroSensor(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, + GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics); /** * @fn GyroSensor @@ -46,7 +46,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] quaternion_b2c: Quaternion from body frame to component frame * @param [in] dynamics: Dynamics information */ - GyroSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, + GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics); /** * @fn ~GyroSensor @@ -61,15 +61,15 @@ class GyroSensor : public Component, public Sensor, public ILogg */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -97,7 +97,7 @@ class GyroSensor : public Component, public Sensor, public ILogg * @param [in] file_name: Path to the initialize file * @param [in] dynamics: Dynamics information */ -GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, +GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics); /** * @fn InitGyroSensor @@ -109,7 +109,7 @@ GyroSensor InitGyroSensor(ClockGenerator* clock_generator, int sensor_id, const * @param [in] file_name: Path to the initialize file * @param [in] dynamics: Dynamics information */ -GyroSensor InitGyroSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, +GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics); } //namespace s2e::components diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index 1326a7ba4..c12e7b37f 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -9,14 +9,14 @@ namespace s2e::components { -Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, +Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), geomagnetic_field_(geomagnetic_field) {} -Magnetometer::Magnetometer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, +Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), @@ -49,7 +49,7 @@ std::string Magnetometer::GetLogValue() const { return str_tmp; } -Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, +Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { IniAccess magsensor_conf(file_name); const char* sensor_name = "MAGNETOMETER_"; @@ -70,7 +70,7 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, co return magsensor; } -Magnetometer InitMagnetometer(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, +Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { IniAccess magsensor_conf(file_name); const char* sensor_name = "MAGNETOMETER_"; diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 34dce8647..ab3c5cf85 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -21,7 +21,7 @@ const size_t kMagnetometerDimension = 3; //!< Dimension of magnetometer * @class Magnetometer * @brief Class to emulate magnetometer */ -class Magnetometer : public Component, public Sensor, public ILoggable { +class Magnetometer : public Component, public Sensor, public logger::ILoggable { public: /** * @fn Magnetometer @@ -33,7 +33,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] quaternion_b2c: Quaternion from body frame to component frame * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetometer(const int prescaler, ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, + Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn Magnetometer @@ -46,7 +46,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] quaternion_b2c: Quaternion from body frame to component frame * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetometer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, + Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn ~Magnetometer @@ -61,15 +61,15 @@ class Magnetometer : public Component, public Sensor, pu */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -116,7 +116,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] component_step_time_s: Component step time [sec] * @param [in] geomagnetic_field: Geomegnetic environment */ -Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, +Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); /** * @fn InitMagnetometer @@ -128,7 +128,7 @@ Magnetometer InitMagnetometer(ClockGenerator* clock_generator, int sensor_id, co * @param [in] component_step_time_s: Component step time [sec] * @param [in] geomagnetic_field: Geomegnetic environment */ -Magnetometer InitMagnetometer(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, +Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); } // namespace s2e::components diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index a213539a7..cab226ac7 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -13,7 +13,7 @@ namespace s2e::components { -Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, +Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, @@ -35,7 +35,7 @@ Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, } } -Magnetorquer::Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, +Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, @@ -113,7 +113,7 @@ std::string Magnetorquer::GetLogValue() const { return str_tmp; } -Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, +Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; @@ -158,7 +158,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, return magtorquer; } -Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, +Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index fb7ad153e..c5c1688bf 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -24,7 +24,7 @@ const size_t kMtqDimension = 3; //!< Dimension of magnetorquer * @class Magnetorquer * @brief Class to emulate magnetorquer */ -class Magnetorquer : public Component, public ILoggable { +class Magnetorquer : public Component, public logger::ILoggable { public: /** * @fn Magnetorquer @@ -43,7 +43,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] normal_random_standard_deviation_c_Am2: Standard deviation for the normal random noise in the component frame [Am2] * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetorquer(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const s2e::math::Vector& random_walk_standard_deviation_c_Am2, @@ -67,7 +67,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] normal_random_standard_deviation_c_Am2: Standard deviation for the normal random noise in the component frame [Am2] * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetorquer(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, + Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, @@ -86,15 +86,15 @@ class Magnetorquer : public Component, public ILoggable { */ void PowerOffRoutine() override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -157,7 +157,7 @@ class Magnetorquer : public Component, public ILoggable { * @param [in] component_step_time_s: Component step time [sec] * @param [in] geomagnetic_field: Geomegnetic environment */ -Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, +Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); /** * @fn InitMagnetorquer @@ -169,7 +169,7 @@ Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, int actuator_id, * @param [in] component_step_time_s: Component step time [sec] * @param [in] geomagnetic_field: Geomegnetic environment */ -Magnetorquer InitMagnetorquer(ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, +Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); } // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 918ed9578..9fe963c84 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -13,7 +13,7 @@ namespace s2e::components { -ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, +ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, @@ -40,7 +40,7 @@ ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generato Initialize(); } -ReactionWheel::ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, +ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, @@ -333,7 +333,7 @@ void InitParams(int actuator_id, std::string file_name, double compo_update_step } } // namespace -ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, int actuator_id, std::string file_name, double compo_update_step_s) { +ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, int actuator_id, std::string file_name, double compo_update_step_s) { InitParams(actuator_id, file_name, compo_update_step_s); ReactionWheel rw(prescaler, clock_generator, actuator_id, step_width_s, rotor_inertia_kgm2, max_torque_Nm, max_velocity_rpm, quaternion_b2c, @@ -343,7 +343,7 @@ ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, int actuator_id return rw; } -ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, std::string file_name, +ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, std::string file_name, double compo_update_step_s) { InitParams(actuator_id, file_name, compo_update_step_s); diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index 4735f6193..fc013dc11 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -24,7 +24,7 @@ namespace s2e::components { * @brief Class to emulate Reaction Wheel * @note For one reaction wheel */ -class ReactionWheel : public Component, public ILoggable { +class ReactionWheel : public Component, public logger::ILoggable { public: /** * @fn ReactionWheel @@ -50,7 +50,7 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] drive_flag: RW drive flag * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW */ - ReactionWheel(const int prescaler, ClockGenerator* clock_generator, const int component_id, const double step_width_s, + ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, @@ -80,7 +80,7 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] drive_flag: RW drive flag * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW [rad/s] */ - ReactionWheel(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, + ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, @@ -104,15 +104,15 @@ class ReactionWheel : public Component, public ILoggable { */ void FastUpdate() override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -234,7 +234,7 @@ class ReactionWheel : public Component, public ILoggable { * @param [in] file_name: Path to the initialize file * @param [in] compo_update_step_s: Component step time [sec] */ -ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, int actuator_id, std::string file_name, double compo_update_step_s); +ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, int actuator_id, std::string file_name, double compo_update_step_s); /** * @fn InitReactionWheel * @brief Initialize functions for reaction wheel with power port @@ -245,7 +245,7 @@ ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, int actuator_id * @param [in] prop_step: Propagation step for RW dynamics [sec] * @param [in] compo_update_step_s: Component step time [sec] */ -ReactionWheel InitReactionWheel(ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, std::string file_name, +ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, std::string file_name, double compo_update_step_s); } // namespace s2e::components diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 83b105096..6466a60e8 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -18,7 +18,7 @@ using namespace s2e::math; namespace s2e::components { -StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, +StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, @@ -42,7 +42,7 @@ StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, con local_environment_(local_environment) { Initialize(); } -StarSensor::StarSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, +StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, @@ -215,7 +215,7 @@ void StarSensor::MainRoutine(const int time_count) { Measure(&(local_environment_->GetCelestialInformation()), &(dynamics_->GetAttitude())); } -StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const string file_name, double component_step_time_s, +StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment) { IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; @@ -248,7 +248,7 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const return stt; } -StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, double component_step_time_s, +StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment) { IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 888f91b18..9a7ebf842 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -24,7 +24,7 @@ namespace s2e::components { * @class StarSensor * @brief Class to emulate star tracker */ -class StarSensor : public Component, public ILoggable { +class StarSensor : public Component, public logger::ILoggable { public: /** * @fn StarSensor @@ -45,7 +45,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ - StarSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, @@ -70,7 +70,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ - StarSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, + StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, @@ -84,15 +84,15 @@ class StarSensor : public Component, public ILoggable { */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -218,7 +218,7 @@ class StarSensor : public Component, public ILoggable { * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ -StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, +StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment); /** * @fn InitStarSensor @@ -231,7 +231,7 @@ StarSensor InitStarSensor(ClockGenerator* clock_generator, int sensor_id, const * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ -StarSensor InitStarSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, +StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment); } // namespace s2e::components diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 773aba273..1e0b8142a 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -16,7 +16,7 @@ using namespace std; namespace s2e::components { -SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, +SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) @@ -30,7 +30,7 @@ SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, const Initialize(random_noise_standard_deviation_rad, bias_noise_standard_deviation_rad); } -SunSensor::SunSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, +SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) @@ -153,7 +153,7 @@ string SunSensor::GetLogValue() const { return str_tmp; } -SunSensor InitSunSensor(ClockGenerator* clock_generator, int ss_id, std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, +SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; @@ -186,7 +186,7 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, int ss_id, std::string return ss; } -SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, int ss_id, std::string file_name, +SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int ss_id, std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 08c8982d2..f8aba0d41 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -21,7 +21,7 @@ namespace s2e::components { * @class SunSensor * @brief Class to emulate sun sensor */ -class SunSensor : public Component, public ILoggable { +class SunSensor : public Component, public logger::ILoggable { public: /** * @fn SunSensor @@ -37,7 +37,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] local_celestial_information: Local celestial information */ - SunSensor(const int prescaler, ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -56,7 +56,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] local_celestial_information: Local celestial information */ - SunSensor(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, + SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -68,15 +68,15 @@ class SunSensor : public Component, public ILoggable { */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -152,7 +152,7 @@ class SunSensor : public Component, public ILoggable { * @param [in] srp_environment: Solar radiation pressure environment * @param [in] local_environment: Local environment information */ -SunSensor InitSunSensor(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, +SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); /** * @fn InitSunSensor @@ -164,7 +164,7 @@ SunSensor InitSunSensor(ClockGenerator* clock_generator, int sensor_id, const st * @param [in] srp_environment: Solar radiation pressure environment * @param [in] local_environment: Local environment information */ -SunSensor InitSunSensor(ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, +SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); } // namespace s2e::components diff --git a/src/components/real/cdh/on_board_computer.cpp b/src/components/real/cdh/on_board_computer.cpp index 33a75efd9..ce38a4196 100644 --- a/src/components/real/cdh/on_board_computer.cpp +++ b/src/components/real/cdh/on_board_computer.cpp @@ -6,14 +6,14 @@ namespace s2e::components { -OnBoardComputer::OnBoardComputer(ClockGenerator* clock_generator) : Component(1, clock_generator) { Initialize(); } +OnBoardComputer::OnBoardComputer(environment::ClockGenerator* clock_generator) : Component(1, clock_generator) { Initialize(); } -OnBoardComputer::OnBoardComputer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port) +OnBoardComputer::OnBoardComputer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port) : Component(prescaler, clock_generator, power_port) { Initialize(); } -OnBoardComputer::OnBoardComputer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const double minimum_voltage_V, +OnBoardComputer::OnBoardComputer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const double minimum_voltage_V, const double assumed_power_consumption_W) : Component(prescaler, clock_generator, power_port) { power_port_->SetMinimumVoltage_V(minimum_voltage_V); diff --git a/src/components/real/cdh/on_board_computer.hpp b/src/components/real/cdh/on_board_computer.hpp index 1943de045..91aeff65b 100644 --- a/src/components/real/cdh/on_board_computer.hpp +++ b/src/components/real/cdh/on_board_computer.hpp @@ -27,7 +27,7 @@ class OnBoardComputer : public Component { * @brief Constructor * @param [in] clock_generator: Clock generator */ - OnBoardComputer(ClockGenerator* clock_generator); + OnBoardComputer(environment::ClockGenerator* clock_generator); /** * @fn OnBoardComputer * @brief Constructor @@ -35,7 +35,7 @@ class OnBoardComputer : public Component { * @param [in] clock_generator: Clock generator * @param [in] power_port: Power port */ - OnBoardComputer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port); + OnBoardComputer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port); /** * @fn OnBoardComputer * @brief Constructor @@ -45,7 +45,7 @@ class OnBoardComputer : public Component { * @param [in] minimum_voltage_V: Minimum voltage [V] * @param [in] assumed_power_consumption_W: Assumed power consumption [W] */ - OnBoardComputer(int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const double minimum_voltage_V, + OnBoardComputer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const double minimum_voltage_V, const double assumed_power_consumption_W); /** * @fn ~OnBoardComputer diff --git a/src/components/real/cdh/on_board_computer_with_c2a.cpp b/src/components/real/cdh/on_board_computer_with_c2a.cpp index c0514d03f..3c6f58d1d 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.cpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.cpp @@ -32,16 +32,16 @@ std::map ObcWithC2a::com_ports_c2a_; std::map ObcWithC2a::i2c_com_ports_c2a_; std::map ObcWithC2a::gpio_ports_c2a_; -ObcWithC2a::ObcWithC2a(ClockGenerator* clock_generator) : OnBoardComputer(clock_generator), timing_regulator_(1) { +ObcWithC2a::ObcWithC2a(environment::ClockGenerator* clock_generator) : OnBoardComputer(clock_generator), timing_regulator_(1) { // Initialize(); } -ObcWithC2a::ObcWithC2a(ClockGenerator* clock_generator, int timing_regulator) +ObcWithC2a::ObcWithC2a(environment::ClockGenerator* clock_generator, int timing_regulator) : OnBoardComputer(clock_generator), timing_regulator_(timing_regulator) { // Initialize(); } -ObcWithC2a::ObcWithC2a(int prescaler, ClockGenerator* clock_generator, int timing_regulator, PowerPort* power_port) +ObcWithC2a::ObcWithC2a(int prescaler, environment::ClockGenerator* clock_generator, int timing_regulator, PowerPort* power_port) : OnBoardComputer(prescaler, clock_generator, power_port), timing_regulator_(timing_regulator) { // Initialize(); } diff --git a/src/components/real/cdh/on_board_computer_with_c2a.hpp b/src/components/real/cdh/on_board_computer_with_c2a.hpp index c7b5fe968..05685df17 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.hpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.hpp @@ -24,14 +24,14 @@ class ObcWithC2a : public OnBoardComputer { * @brief Constructor * @param [in] clock_generator: Clock generator */ - ObcWithC2a(ClockGenerator* clock_generator); + ObcWithC2a(environment::ClockGenerator* clock_generator); /** * @fn ObcWithC2a * @brief Constructor * @param [in] clock_generator: Clock generator * @param [in] timing_regulator: Timing regulator to update flight software faster than the component update */ - ObcWithC2a(ClockGenerator* clock_generator, int timing_regulator); + ObcWithC2a(environment::ClockGenerator* clock_generator, int timing_regulator); /** * @fn ObcWithC2a * @brief Constructor @@ -40,7 +40,7 @@ class ObcWithC2a : public OnBoardComputer { * @param [in] timing_regulator: Timing regulator to update flight software faster than the component update * @param [in] power_port: Power port */ - ObcWithC2a(int prescaler, ClockGenerator* clock_generator, int timing_regulator, PowerPort* power_port); + ObcWithC2a(int prescaler, environment::ClockGenerator* clock_generator, int timing_regulator, PowerPort* power_port); /** * @fn ~ObcWithC2a * @brief Destructor diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index 3d20f5a0b..c78cc41a4 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -19,7 +19,7 @@ namespace s2e::components { * @class GroundStationCalculator * @brief Emulation of analysis and calculation for Ground Stations */ -class GroundStationCalculator : public ILoggable { +class GroundStationCalculator : public logger::ILoggable { public: /** * @fn GroundStationCalculator @@ -54,15 +54,15 @@ class GroundStationCalculator : public ILoggable { void Update(const Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna); - // Override ILoggable TODO: Maybe we don't need logabble, and this class should be used as library. + // Override logger::ILoggable TODO: Maybe we don't need logabble, and this class should be used as library. /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index f2ce172e0..899241372 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -133,7 +133,7 @@ void WingsCommandSenderToC2a::AnalyzeC2aCommand(const std::vector t #endif } -WingsCommandSenderToC2a InitWingsCommandSenderToC2a(ClockGenerator* clock_generator, const double compo_update_step_s, +WingsCommandSenderToC2a InitWingsCommandSenderToC2a(environment::ClockGenerator* clock_generator, const double compo_update_step_s, const std::string initialize_file) { IniAccess ini_access(initialize_file); std::string section = "WINGS_COMMAND_SENDER_TO_C2A"; diff --git a/src/components/real/communication/wings_command_sender_to_c2a.hpp b/src/components/real/communication/wings_command_sender_to_c2a.hpp index 14e1eda9f..accc49546 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.hpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.hpp @@ -24,7 +24,7 @@ class WingsCommandSenderToC2a : public Component { * @brief Constructor * @param [in] */ - WingsCommandSenderToC2a(int prescaler, ClockGenerator* clock_generator, const double step_width_s, const std::string command_database_file, + WingsCommandSenderToC2a(int prescaler, environment::ClockGenerator* clock_generator, const double step_width_s, const std::string command_database_file, const std::string operation_file, const bool is_enabled) : Component(prescaler, clock_generator), c2a_command_database_(command_database_file), @@ -75,7 +75,7 @@ class WingsCommandSenderToC2a : public Component { * @param[in] compo_update_step_s: Component update step time [s] * @param[in] initialize_file: Initialize file name */ -WingsCommandSenderToC2a InitWingsCommandSenderToC2a(ClockGenerator* clock_generator, const double compo_update_step_s, +WingsCommandSenderToC2a InitWingsCommandSenderToC2a(environment::ClockGenerator* clock_generator, const double compo_update_step_s, const std::string initialize_file); } // namespace s2e::components diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 7d76de5c1..5e6e3c8da 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -15,7 +15,7 @@ using namespace s2e::math; namespace s2e::components { -Telescope::Telescope(ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, +Telescope::Telescope(environment::ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, @@ -247,7 +247,7 @@ string Telescope::GetLogValue() const { return str_tmp; } -Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const string file_name, const Attitude* attitude, +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { using s2e::math::pi; diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index e2d75c397..452639e56 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -32,7 +32,7 @@ struct Star { * @class Telescope * @brief Component emulation: Telescope */ -class Telescope : public Component, public ILoggable { +class Telescope : public Component, public logger::ILoggable { public: /** * @fn Telescope @@ -52,7 +52,7 @@ class Telescope : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] orbit: Orbit information */ - Telescope(ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, + Telescope(environment::ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); @@ -136,15 +136,15 @@ class Telescope : public Component, public ILoggable { void ObserveGroundPositionDeviation(); const Orbit* orbit_; //!< Orbit information - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; @@ -168,7 +168,7 @@ class Telescope : public Component, public ILoggable { * @param [in] hipparcos: Star information by Hipparcos catalogue * @param [in] local_celestial_information: Local celestial information */ -Telescope InitTelescope(ClockGenerator* clock_generator, int sensor_id, const std::string file_name, const Attitude* attitude, +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index a8f1bc4d0..a050e35b8 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -10,7 +10,7 @@ namespace s2e::components { -Battery::Battery(const int prescaler, ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, +Battery::Battery(const int prescaler, environment::ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, double battery_resistance_Ohm, double component_step_time_s) : Component(prescaler, clock_generator), @@ -24,7 +24,7 @@ Battery::Battery(const int prescaler, ClockGenerator* clock_generator, int numbe battery_resistance_Ohm_(battery_resistance_Ohm), compo_step_time_s_(component_step_time_s) {} -Battery::Battery(ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, +Battery::Battery(environment::ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, double battery_resistance_Ohm) : Component(10, clock_generator), @@ -89,7 +89,7 @@ void Battery::UpdateBatVoltage() { battery_voltage_V_ = temp * number_of_series_; } -Battery InitBAT(ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s) { +Battery InitBAT(environment::ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s) { IniAccess bat_conf(file_name); const std::string section_name = "BATTERY_" + std::to_string(static_cast(bat_id)); diff --git a/src/components/real/power/battery.hpp b/src/components/real/power/battery.hpp index 24f43c464..c1adf5d49 100644 --- a/src/components/real/power/battery.hpp +++ b/src/components/real/power/battery.hpp @@ -17,7 +17,7 @@ namespace s2e::components { * @class Battery * @brief Component emulation of battery */ -class Battery : public Component, public ILoggable { +class Battery : public Component, public logger::ILoggable { public: /** * @fn Battery @@ -34,7 +34,7 @@ class Battery : public Component, public ILoggable { * @param [in] battery_resistance_Ohm: Battery internal resistance [Ohm] * @param [in] component_step_time_s: Component step time [sec] */ - Battery(const int prescaler, ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, + Battery(const int prescaler, environment::ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, double battery_resistance_Ohm, double component_step_time_s); /** @@ -51,7 +51,7 @@ class Battery : public Component, public ILoggable { * @param [in] cv_charge_voltage_V: Constant charge voltage [V] * @param [in] battery_resistance_Ohm: Battery internal resistance [Ohm] */ - Battery(ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, + Battery(environment::ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, double battery_resistance_Ohm); /** @@ -97,15 +97,15 @@ class Battery : public Component, public ILoggable { */ inline double GetCvChargeVoltage_V() const { return cv_charge_voltage_V_; } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ std::string GetLogValue() const override; @@ -144,7 +144,7 @@ class Battery : public Component, public ILoggable { * @param [in] file_name: Path to initialize file * @param [in] component_step_time_s: Component step time [sec] */ -Battery InitBAT(ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s); +Battery InitBAT(environment::ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s); } // namespace s2e::components diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index df8527352..c79873dea 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -12,7 +12,7 @@ namespace s2e::components { -PcuInitialStudy::PcuInitialStudy(const int prescaler, ClockGenerator* clock_generator, const std::vector saps, Battery* battery, +PcuInitialStudy::PcuInitialStudy(const int prescaler, environment::ClockGenerator* clock_generator, const std::vector saps, Battery* battery, double component_step_time_s) : Component(prescaler, clock_generator), saps_(saps), @@ -24,7 +24,7 @@ PcuInitialStudy::PcuInitialStudy(const int prescaler, ClockGenerator* clock_gene power_consumption_W_ = 0.0; } -PcuInitialStudy::PcuInitialStudy(ClockGenerator* clock_generator, const std::vector saps, Battery* battery) +PcuInitialStudy::PcuInitialStudy(environment::ClockGenerator* clock_generator, const std::vector saps, Battery* battery) : Component(10, clock_generator), saps_(saps), battery_(battery), @@ -113,7 +113,7 @@ void PcuInitialStudy::UpdateChargeCurrentAndBusVoltage() { } } -PcuInitialStudy InitPCU_InitialStudy(ClockGenerator* clock_generator, int pcu_id, const std::string file_name, +PcuInitialStudy InitPCU_InitialStudy(environment::ClockGenerator* clock_generator, int pcu_id, const std::string file_name, const std::vector saps, Battery* battery, double component_step_time_s) { IniAccess pcu_conf(file_name); diff --git a/src/components/real/power/pcu_initial_study.hpp b/src/components/real/power/pcu_initial_study.hpp index f9dd8ccf8..5a8bd074b 100644 --- a/src/components/real/power/pcu_initial_study.hpp +++ b/src/components/real/power/pcu_initial_study.hpp @@ -15,7 +15,7 @@ namespace s2e::components { -class PcuInitialStudy : public Component, public ILoggable { +class PcuInitialStudy : public Component, public logger::ILoggable { public: /** * @fn PcuInitialStudy @@ -26,7 +26,7 @@ class PcuInitialStudy : public Component, public ILoggable { * @param [in] battery: Battery * @param [in] component_step_time_s: Component step time [sec] */ - PcuInitialStudy(const int prescaler, ClockGenerator* clock_generator, const std::vector saps, Battery* battery, + PcuInitialStudy(const int prescaler, environment::ClockGenerator* clock_generator, const std::vector saps, Battery* battery, double component_step_time_s); /** * @fn PcuInitialStudy @@ -35,22 +35,22 @@ class PcuInitialStudy : public Component, public ILoggable { * @param [in] saps: Solar Array Panels * @param [in] battery: Battery */ - PcuInitialStudy(ClockGenerator* clock_generator, const std::vector saps, Battery* battery); + PcuInitialStudy(environment::ClockGenerator* clock_generator, const std::vector saps, Battery* battery); /** * @fn ~PcuInitialStudy * @brief Destructor */ ~PcuInitialStudy(); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ std::string GetLogValue() const override; @@ -94,7 +94,7 @@ class PcuInitialStudy : public Component, public ILoggable { * @param [in] battery: Battery information * @param [in] component_step_time_s: Component step time [sec] */ -PcuInitialStudy InitPCU_InitialStudy(ClockGenerator* clock_generator, int pcu_id, const std::string file_name, +PcuInitialStudy InitPCU_InitialStudy(environment::ClockGenerator* clock_generator, int pcu_id, const std::string file_name, const std::vector saps, Battery* battery, double component_step_time_s); } // namespace s2e::components diff --git a/src/components/real/power/power_control_unit.cpp b/src/components/real/power/power_control_unit.cpp index 8e908c2af..ce820b1c3 100644 --- a/src/components/real/power/power_control_unit.cpp +++ b/src/components/real/power/power_control_unit.cpp @@ -6,9 +6,9 @@ namespace s2e::components { -PowerControlUnit::PowerControlUnit(ClockGenerator* clock_generator) : Component(1, clock_generator) {} +PowerControlUnit::PowerControlUnit(environment::ClockGenerator* clock_generator) : Component(1, clock_generator) {} -PowerControlUnit::PowerControlUnit(int prescaler, ClockGenerator* clock_generator) : Component(prescaler, clock_generator) {} +PowerControlUnit::PowerControlUnit(int prescaler, environment::ClockGenerator* clock_generator) : Component(prescaler, clock_generator) {} PowerControlUnit::~PowerControlUnit() {} diff --git a/src/components/real/power/power_control_unit.hpp b/src/components/real/power/power_control_unit.hpp index f4765e74f..d61bc397b 100644 --- a/src/components/real/power/power_control_unit.hpp +++ b/src/components/real/power/power_control_unit.hpp @@ -18,21 +18,21 @@ namespace s2e::components { * @class PowerControlUnit * @brief Component emulation of Power Control Unit */ -class PowerControlUnit : public Component, public ILoggable { +class PowerControlUnit : public Component, public logger::ILoggable { public: /** * @fn PowerControlUnit * @brief Constructor * @param [in] clock_generator: Clock generator */ - PowerControlUnit(ClockGenerator* clock_generator); + PowerControlUnit(environment::ClockGenerator* clock_generator); /** * @fn PowerControlUnit * @brief Constructor * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator */ - PowerControlUnit(int prescaler, ClockGenerator* clock_generator); + PowerControlUnit(int prescaler, environment::ClockGenerator* clock_generator); /** * @fn ~PowerControlUnit * @brief Destructor @@ -46,15 +46,15 @@ class PowerControlUnit : public Component, public ILoggable { */ void MainRoutine(const int time_count) override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ std::string GetLogValue() const override; diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index 67e459f6e..fdde4d90a 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -11,7 +11,7 @@ namespace s2e::components { -SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, +SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) @@ -30,7 +30,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_gene power_generation_W_ = 0.0; } -SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, +SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) : Component(prescaler, clock_generator), @@ -47,7 +47,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, ClockGenerator* clock_gene power_generation_W_ = 0.0; } -SolarArrayPanel::SolarArrayPanel(ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, +SolarArrayPanel::SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) @@ -116,7 +116,7 @@ void SolarArrayPanel::MainRoutine(const int time_count) { if (power_generation_W_ < 0) power_generation_W_ = 0.0; } -SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std::string file_name, +SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) { IniAccess sap_conf(file_name); @@ -150,7 +150,7 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: return sap; } -SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std::string file_name, +SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) { IniAccess sap_conf(file_name); diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index 6fb7aacac..f057f5066 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -15,7 +15,7 @@ namespace s2e::components { -class SolarArrayPanel : public Component, public ILoggable { +class SolarArrayPanel : public Component, public logger::ILoggable { public: /** * @fn SolarArrayPanel @@ -33,7 +33,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] component_step_time_s: Component step time [sec] */ - SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, + SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s); @@ -52,7 +52,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] component_step_time_s: Component step time [sec] */ - SolarArrayPanel(const int prescaler, ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, + SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); /** @@ -70,7 +70,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] local_celestial_information: Local celestial information */ - SolarArrayPanel(ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, + SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); /** @@ -96,15 +96,15 @@ class SolarArrayPanel : public Component, public ILoggable { */ void SetVoltage_V(const double voltage_V) { voltage_V_ = voltage_V; } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ std::string GetLogValue() const override; @@ -143,7 +143,7 @@ class SolarArrayPanel : public Component, public ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] component_step_time_s: Component step time [sec] */ -SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std::string file_name, +SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s); @@ -156,7 +156,7 @@ SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std:: * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] component_step_time_s: Component step time [sec] */ -SolarArrayPanel InitSAP(ClockGenerator* clock_generator, int sap_id, const std::string file_name, +SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); } // namespace s2e::components diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 3cfdc6da7..9501f82bb 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -12,7 +12,7 @@ namespace s2e::components { // Constructor -SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, const int component_id, +SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics) @@ -27,7 +27,7 @@ SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_genera Initialize(magnitude_standard_deviation_N, direction_standard_deviation_rad); } -SimpleThruster::SimpleThruster(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, +SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics) @@ -122,7 +122,7 @@ s2e::math::Vector<3> SimpleThruster::CalcThrustDirection() { return thrust_dir_b_true; } -SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, +SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics) { IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); @@ -150,7 +150,7 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_ return thruster; } -SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, +SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics) { IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index ab1e0734a..ba1eb0c07 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -21,7 +21,7 @@ namespace s2e::components { * @class SimpleThruster * @brief Component emulation of simple thruster */ -class SimpleThruster : public Component, public ILoggable { +class SimpleThruster : public Component, public logger::ILoggable { public: /** * @fn SimpleThruster @@ -37,7 +37,7 @@ class SimpleThruster : public Component, public ILoggable { * @param [in] structure: Spacecraft structure information * @param [in] dynamics: Spacecraft dynamics information */ - SimpleThruster(const int prescaler, ClockGenerator* clock_generator, const int component_id, const Vector<3> thruster_position_b_m, + SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const Vector<3> thruster_position_b_m, const Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics); /** @@ -55,7 +55,7 @@ class SimpleThruster : public Component, public ILoggable { * @param [in] structure: Spacecraft structure information * @param [in] dynamics: Spacecraft dynamics information */ - SimpleThruster(const int prescaler, ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, + SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const Vector<3> thruster_position_b_m, const Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics); @@ -77,15 +77,15 @@ class SimpleThruster : public Component, public ILoggable { */ void PowerOffRoutine() override; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const override; @@ -166,7 +166,7 @@ class SimpleThruster : public Component, public ILoggable { * @param [in] structure: Spacecraft structure information * @param [in] dynamics: Spacecraft dynamics information */ -SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, +SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics); /** * @fn InitSimpleThruster @@ -178,7 +178,7 @@ SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, int thruster_ * @param [in] structure: Spacecraft structure information * @param [in] dynamics: Spacecraft dynamics information */ -SimpleThruster InitSimpleThruster(ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, +SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics); } // namespace s2e::components diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 48ab76eb3..be27dfc02 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -43,15 +43,15 @@ class AirDrag : public SurfaceForce { */ virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 58966c35a..1d153810c 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -15,7 +15,7 @@ namespace s2e::disturbances { * @class Disturbance * @brief Base class for a disturbance */ -class Disturbance : public ILoggable { +class Disturbance : public logger::ILoggable { public: /** * @fn Disturbance diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 95ec16968..fae80dedb 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -50,15 +50,15 @@ class Geopotential : public Disturbance { */ virtual void Update(const LocalEnvironment &local_environment, const Dynamics &dynamics); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index c54e502dd..785b9e0fa 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -45,15 +45,15 @@ class GravityGradient : public Disturbance { */ virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index c809bc4fb..03841dd15 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -52,15 +52,15 @@ class LunarGravityField : public Disturbance { */ virtual void Update(const LocalEnvironment &local_environment, const Dynamics &dynamics); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index ab3bb7375..ecba81538 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -37,15 +37,15 @@ class MagneticDisturbance : public Disturbance { */ virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index e427e6dc3..d33233a1b 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -38,15 +38,15 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { */ virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index cf45a8593..b1d6d5e48 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -47,7 +47,7 @@ class ThirdBodyGravity : public Disturbance { std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances s2e::math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] - // Override classes for ILoggable + // Override classes for logger::ILoggable /** * @fn GetLogHeader * @brief Override function of GetLogHeader diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 1dbcfa809..533d534f3 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -18,7 +18,7 @@ namespace s2e::dynamics::attitude { * @class Attitude * @brief Base class for attitude of spacecraft */ -class Attitude : public ILoggable, public SimulationObject { +class Attitude : public logger::ILoggable, public SimulationObject { public: /** * @fn Attitude @@ -100,15 +100,15 @@ class Attitude : public ILoggable, public SimulationObject { */ virtual void Propagate(const double end_time_s) = 0; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index dbc96391d..682759f8f 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -51,15 +51,15 @@ class AttitudeWithCantileverVibration : public Attitude { */ virtual void Propagate(const double end_time_s); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index dabd75f59..b83ba4716 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -44,7 +44,7 @@ enum class OrbitInitializeMode { * @class Orbit * @brief Base class of orbit propagation */ -class Orbit : public ILoggable { +class Orbit : public logger::ILoggable { public: /** * @fn Orbit @@ -174,15 +174,15 @@ class Orbit : public ILoggable { */ s2e::math::Quaternion CalcQuaternion_i2lvlh() const; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index c0aaec67c..7f9596ef9 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -32,7 +32,7 @@ enum class SolarCalcSetting { * @class Temperature * @brief class to calculate temperature of all nodes */ -class Temperature : public ILoggable { +class Temperature : public logger::ILoggable { protected: std::vector> conductance_matrix_W_K_; //!< Coupling of node i and node j by heat conduction [W/K] std::vector> radiation_matrix_m2_; //!< Coupling of node i and node j by thermal radiation [m2] diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index eeb9ff5f2..162fe790a 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -24,7 +24,7 @@ namespace s2e::environment { * @brief Class to manage the information related with the celestial bodies * @details This class uses SPICE to get the information of celestial bodies */ -class CelestialInformation : public ILoggable { +class CelestialInformation : public logger::ILoggable { public: /** * @fn CelestialInformation @@ -49,15 +49,15 @@ class CelestialInformation : public ILoggable { */ virtual ~CelestialInformation(); - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 88994a500..563dbd3e7 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -27,7 +27,7 @@ namespace s2e::environment { * @class GnssSatellites * @brief Class to calculate GNSS satellite position and clock */ -class GnssSatellites : public ILoggable { +class GnssSatellites : public logger::ILoggable { public: /** * @fn GnssSatellites @@ -100,15 +100,15 @@ class GnssSatellites : public ILoggable { */ double GetClock_s(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ std::string GetLogHeader() const override; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ std::string GetLogValue() const override; diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index dd20fee9d..bc7a70f0f 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -28,7 +28,7 @@ struct HipparcosData { *@class HipparcosCatalogue *@brief Class to calculate star direction with Hipparcos catalogue */ -class HipparcosCatalogue : public ILoggable { +class HipparcosCatalogue : public logger::ILoggable { public: /** *@fn HipparcosCatalogue @@ -93,15 +93,15 @@ class HipparcosCatalogue : public ILoggable { */ s2e::math::Vector<3> GetStarDirection_b(size_t rank, s2e::math::Quaternion quaternion_i2b) const; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index 27892afdf..eacefcc71 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -49,7 +49,7 @@ struct UTC { *@class SimulationTime *@brief Class to manage simulation time related information */ -class SimulationTime : public ILoggable { +class SimulationTime : public logger::ILoggable { public: /** *@fn SimulationTime @@ -241,15 +241,15 @@ class SimulationTime : public ILoggable { */ inline double GetStartSecond(void) const { return start_sec_; }; - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 2c383b78c..6bc47e246 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -21,7 +21,7 @@ namespace s2e::environment { * @class Atmosphere * @brief Class to calculate earth's atmospheric density */ -class Atmosphere : public ILoggable { +class Atmosphere : public logger::ILoggable { public: /** * @fn Atmosphere @@ -63,15 +63,15 @@ class Atmosphere : public ILoggable { */ inline void SetCalcFlag(const bool is_calc_enabled) { is_calc_enabled_ = is_calc_enabled; } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index 724cba2a7..0635afd7a 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -16,7 +16,7 @@ namespace s2e::environment { * @class EarthAlbedo * @brief Class to calculate Solar Radiation Pressure */ -class EarthAlbedo : public ILoggable { +class EarthAlbedo : public logger::ILoggable { public: /** * @fn EarthAlbedo @@ -76,15 +76,15 @@ class EarthAlbedo : public ILoggable { LocalCelestialInformation* local_celestial_information_; //!< Local celestial information SolarRadiationPressureEnvironment* srp_environment_; //!< Solar radiation pressure environment - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 100baf480..ba3f05329 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -17,7 +17,7 @@ namespace s2e::environment { * @class GeomagneticField * @brief Class to calculate magnetic field of the earth */ -class GeomagneticField : public ILoggable { +class GeomagneticField : public logger::ILoggable { public: bool IsCalcEnabled = true; //!< Calculation flag @@ -59,15 +59,15 @@ class GeomagneticField : public ILoggable { */ inline s2e::math::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index 26e1c354b..e81a7652f 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -14,7 +14,7 @@ namespace s2e::environment { * @class LocalCelestialInformation * @brief Class to manage celestial body information in the spacecraft body frame */ -class LocalCelestialInformation : public ILoggable { +class LocalCelestialInformation : public logger::ILoggable { public: /** * @fn LocalCelestialInformation @@ -70,15 +70,15 @@ class LocalCelestialInformation : public ILoggable { */ inline const CelestialInformation& GetGlobalInformation() const { return *global_celestial_information_; } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; diff --git a/src/environment/local/solar_radiation_pressure_environment.hpp b/src/environment/local/solar_radiation_pressure_environment.hpp index a768ce136..f49bc8106 100644 --- a/src/environment/local/solar_radiation_pressure_environment.hpp +++ b/src/environment/local/solar_radiation_pressure_environment.hpp @@ -15,7 +15,7 @@ namespace s2e::environment { * @class SolarRadiationPressureEnvironment * @brief Class to calculate Solar Radiation Pressure */ -class SolarRadiationPressureEnvironment : public ILoggable { +class SolarRadiationPressureEnvironment : public logger::ILoggable { public: bool IsCalcEnabled = true; //!< Calculation flag @@ -80,15 +80,15 @@ class SolarRadiationPressureEnvironment : public ILoggable { */ inline bool GetIsEclipsed() const { return (shadow_coefficient_ >= 1.0 ? false : true); } - // Override ILoggable + // Override logger::ILoggable /** * @fn GetLogHeader - * @brief Override GetLogHeader function of ILoggable + * @brief Override GetLogHeader function of logger::ILoggable */ virtual std::string GetLogHeader() const; /** * @fn GetLogValue - * @brief Override GetLogValue function of ILoggable + * @brief Override GetLogValue function of logger::ILoggable */ virtual std::string GetLogValue() const; From 85d9f0cb77cfb1f311271462b1d37abbaf9a637f Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 15:49:18 +0900 Subject: [PATCH 425/456] modify variable names --- src/dynamics/orbit/initialize_orbit.cpp | 4 +- .../time_series_file_orbit_propagation.cpp | 103 ++++++-------- .../time_series_file_orbit_propagation.hpp | 129 ++++-------------- 3 files changed, 69 insertions(+), 167 deletions(-) diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 7dd7a3ff3..835fb451b 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -104,9 +104,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string const std::string time_series_file_path = conf.ReadString(section_, "time_series_file_path"); const int number_of_interpolation = conf.ReadInt(section_, "number_of_interpolation"); const int interpolation_method = conf.ReadInt(section_, "interpolation_method"); - const double orbital_period_correction = conf.ReadDouble(section_, "orbital_period_correction"); + const double orbital_period_correction_s = conf.ReadDouble(section_, "orbital_period_correction_s"); - orbit = new TimeSeriesFileOrbitPropagation(celestial_information, time_series_file_path, number_of_interpolation, interpolation_method, orbital_period_correction, current_time_jd); + orbit = new TimeSeriesFileOrbitPropagation(celestial_information, time_series_file_path, number_of_interpolation, interpolation_method, orbital_period_correction_s, current_time_jd); } else { std::cerr << "ERROR: orbit propagation mode: " << propagate_mode << " is not defined!" << std::endl; diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 51efea309..4eeaf8a6f 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -8,25 +8,25 @@ #include #include -#include #include - +#include #include -#include "setting_file_reader/initialize_file_access.hpp" -#include "math_physics/time_system/date_time_format.hpp" -#include "math_physics/math/constants.hpp" #include "logger/log_utility.hpp" +#include "math_physics/math/constants.hpp" +#include "math_physics/time_system/date_time_format.hpp" +#include "setting_file_reader/initialize_file_access.hpp" - -TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, int interpolation_method, double orbital_period_correction, const double current_time_jd) +TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, + int number_of_interpolation, int interpolation_method, + double orbital_period_correction_s, const double current_time_jd) : Orbit(celestial_information) { propagate_mode_ = OrbitPropagateMode::kTimeSeriesFile; number_of_interpolation_ = number_of_interpolation; interpolation_method_ = interpolation_method; - orbital_period_correction_ = orbital_period_correction; - + orbital_period_correction_s_ = orbital_period_correction_s; + // Read time series file IniAccess time_series_file(time_series_file_path); time_series_file.ReadCsvDoubleWithHeader(time_series_data_, 7, 1, 0); @@ -49,11 +49,11 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; } - reference_time_ = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + reference_time_ = time_system::EpochTime(CalcEpochData(reference_interpolation_id_)); // Initialize orbit - orbit_position_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); - orbit_velocity_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_position_i_m_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_velocity_i_m_s_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); // Initialize interpolation for (int i = 0; i < number_of_interpolation; i++) { @@ -67,25 +67,6 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn is_calc_enabled_ = false; } -void TimeSeriesFileOrbitPropagation::Update(const SimulationTime& simulation_time) { - if (!IsCalcEnabled()) return; - - // Get time - UTC current_utc = simulation_time.GetCurrentUtc(); - time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, - (size_t)current_utc.minute, current_utc.second); - current_epoch_time_ = time_system::EpochTime(current_date_time); - - // Check interpolation update - double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - double medium_time_s = orbit_position_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; - if (diff_s > medium_time_s) { - UpdateInterpolationInformation(); - } - - return; -} - size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current_time_jd) { size_t nearest_epoch_id = 0; @@ -102,7 +83,7 @@ size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current return nearest_epoch_id; } -time_system::DateTime TimeSeriesFileOrbitPropagation::GetEpochData(const size_t epoch_id) const { +time_system::DateTime TimeSeriesFileOrbitPropagation::CalcEpochData(const size_t epoch_id) const { if (epoch_id > epoch_.size()) { time_system::DateTime zero; return zero; @@ -120,58 +101,60 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do double second; SpiceChar current_utc_char[80]; double current_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; - et2utc_c(current_ephemris_time, "ISOC", 2, 80, current_utc_char); + et2utc_c(current_ephemris_time, "ISOC", 2, 80, current_utc_char); sscanf(current_utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); - time_system::DateTime current_date_time(year, month, day, hour,minute, second); + time_system::DateTime current_date_time(year, month, day, hour, minute, second); current_epoch_time_ = time_system::EpochTime(current_date_time); // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - double medium_time_s = orbit_position_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; + double medium_time_s = orbit_position_i_m_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; if (diff_s > medium_time_s) { UpdateInterpolationInformation(); } if (diff_s < 0.0) { - std::cout << "[ERROR] Time is out of range of time serise file." << std::endl; + if (!is_time_range_warning_displayed_) { + std::cout << "[WARNING] Time is out of range of time series file." << std::endl; + is_time_range_warning_displayed_ = true; + } for (size_t i = 0; i < 3; i++) { spacecraft_position_i_m_[i] = time_series_data_[0][i + 1]; spacecraft_velocity_i_m_s_[i] = time_series_data_[0][i + 4]; } } else if (diff_s > 1e6 || reference_interpolation_id_ >= time_series_data_.size()) { - std::cout << "[ERROR] Time is out of range of time serise file." << std::endl; + if (!is_time_range_warning_displayed_) { + std::cout << "[WARNING] Time is out of range of time series file." << std::endl; + is_time_range_warning_displayed_ = true; + } for (size_t i = 0; i < 3; i++) { spacecraft_position_i_m_[i] = time_series_data_[time_series_data_.size() - 1][i + 1]; spacecraft_velocity_i_m_s_[i] = time_series_data_[time_series_data_.size() - 1][i + 4]; } } else { - math::Vector<3> orbit_position; - math::Vector<3> orbit_velocity; - if (interpolation_method_ == 0) { - orbit_position = orbit_position_[0].CalcPositionOrVelocityWithPolynomial(diff_s); - orbit_velocity = orbit_velocity_[0].CalcPositionOrVelocityWithPolynomial(diff_s); - } else if (interpolation_method_ == 1) { - orbit_position = orbit_position_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / orbital_period_correction_); - orbit_velocity = orbit_velocity_[0].CalcPositionOrVelocityWithTrigonometric(diff_s, math::tau / orbital_period_correction_); - } else { - std::cerr << "[ERROR] Interpolation method: " << interpolation_method_ << " is not defined!" << std::endl; - std::cerr << "The orbit mode is automatically set as Polynomial" << std::endl; - orbit_position = orbit_position_[0].CalcPositionOrVelocityWithPolynomial(diff_s); - orbit_velocity = orbit_velocity_[0].CalcPositionOrVelocityWithPolynomial(diff_s); - } - for (size_t i = 0; i < 3; i++) { - spacecraft_position_i_m_[i] = orbit_position[i]; - spacecraft_velocity_i_m_s_[i] = orbit_velocity[i]; - } + if (interpolation_method_ == 0) { + spacecraft_position_i_m_ = orbit_position_i_m_[0].CalcPositionWithPolynomial(diff_s); + spacecraft_velocity_i_m_s_ = orbit_velocity_i_m_s_[0].CalcPositionWithPolynomial(diff_s); + } else if (interpolation_method_ == 1) { + spacecraft_position_i_m_ = orbit_position_i_m_[0].CalcPositionWithTrigonometric(diff_s, math::tau / orbital_period_correction_s_); + spacecraft_velocity_i_m_s_ = orbit_velocity_i_m_s_[0].CalcPositionWithTrigonometric(diff_s, math::tau / orbital_period_correction_s_); + } else { + if (!is_interpolation_method_error_displayed_) { + std::cerr << "[ERROR] Interpolation method: " << interpolation_method_ << " is not defined!" << std::endl; + std::cerr << "The orbit mode is automatically set as Polynomial" << std::endl; + is_interpolation_method_error_displayed_ = true; + } + spacecraft_position_i_m_ = orbit_position_i_m_[0].CalcPositionWithPolynomial(diff_s); + spacecraft_velocity_i_m_s_ = orbit_velocity_i_m_s_[0].CalcPositionWithPolynomial(diff_s); + } } TransformEciToEcef(); TransformEcefToGeodetic(); } bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { - time_system::EpochTime time_series_time = time_system::EpochTime(GetEpochData(reference_interpolation_id_)); + time_system::EpochTime time_series_time = time_system::EpochTime(CalcEpochData(reference_interpolation_id_)); double time_diff_s = time_series_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); if (reference_interpolation_id_ >= time_series_data_.size()) { - std::cout << "[ERROR] Time is out of range." << std::endl; for (size_t i = 0; i < 3; i++) { spacecraft_position_i_m_[i] = time_series_data_[time_series_data_.size() - 1][i + 1]; spacecraft_velocity_i_m_s_[i] = time_series_data_[time_series_data_.size() - 1][i + 4]; @@ -183,9 +166,9 @@ bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { } } - orbit_position_[0].PushAndPopData(time_diff_s, spacecraft_position_i_m_); - orbit_velocity_[0].PushAndPopData(time_diff_s, spacecraft_velocity_i_m_s_); - + orbit_position_i_m_[0].PushAndPopData(time_diff_s, spacecraft_position_i_m_); + orbit_velocity_i_m_s_[0].PushAndPopData(time_diff_s, spacecraft_velocity_i_m_s_); + reference_interpolation_id_++; return true; diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 006327c3c..588c4e944 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -6,31 +6,13 @@ #ifndef S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ #define S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ -#include -#include - #include #include - -#include "environment/global/simulation_time.hpp" +#include +#include #include "orbit.hpp" -/** - *@struct TimeSeriesData - *@brief Time series data of orbit - *@note Coordinate system and units follow the time series file - */ -// struct TimeSeriesData { -// double et; //!< Ephemeris time [s] -// double x; //!< Position x -// double y; //!< Position y -// double z; //!< Position z -// double vx; //!< Velocity x -// double vy; //!< Velocity y -// double vz; //!< Velocity z -// }; - /** * @class TimeSeriesFileOrbitPropagation * @brief Class to calculate satellite orbit using interpolation with orbit time series input @@ -41,59 +23,27 @@ class TimeSeriesFileOrbitPropagation : public Orbit { *@fn TimeSeriesFileOrbitPropagation *@brief Constructor * @param [in] celestial_information: Celestial information + * @param [in] time_series_file_path: Path to the time series file + * @param [in] number_of_interpolation: Number of interpolation + * @param [in] interpolation_method: Interpolation method + * @param [in] orbital_period_correction_s: Orbital period correction [s] * @param [in] current_time_jd: Current Julian day [day] */ - TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, int interpolation_method, double orbital_period_correction, const double current_time_jd); + TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, + int interpolation_method, double orbital_period_correction_s, const double current_time_jd); /** *@fn ~TimeSeriesFileOrbitPropagation *@brief Destructor - */ - virtual ~TimeSeriesFileOrbitPropagation() {} - - /** - * @fn Initialize - * @brief Initialize function - * @param [in] time_series_data: orbit definition data - * @param [in] start_time: The simulation start time - * @param [in] simulation_time: Simulation time information - */ - void Initialize(const std::string ini_file_name, const std::vector>& time_series_data, const time_system::EpochTime start_time, const SimulationTime& simulation_time); - - /** - * @fn IsCalcEnabled - * @brief Return calculated enabled flag - */ - inline bool IsCalcEnabled() const { return is_calc_enabled_; } - - /** - * @fn ReadTimeSeriesCsv - * @brief Read orbit definition CSV file. - * @param ini_file_name Path to the initialize file. - * @param time_series_file_path Path to orbit definition CSV file. - * @param time_series_data List of orbit definition data. - */ - bool ReadTimeSeriesCsv(const std::string& time_series_file_path, std::vector>& time_series_data); - - /** - * @fn GetTimeSeriesDataSize - * @brief Return read orbit definition data size. - */ - size_t GetTimeSeriesDataSize() const { return time_series_data_.size(); } - - /** - * @fn GetTimeSeriesData - * @brief Return orbit definition data for a specific index. - * @param index The index of the orbit definition data. */ - std::vector GetTimeSeriesData(size_t index) const { return time_series_data_[index]; } + virtual ~TimeSeriesFileOrbitPropagation() {} /** - * @fn GetEpochData + * @fn CalcEpochData * @brief Return epoch data for a specific epoch ID. * @param epoch_id The epoch ID of the orbit definition data. */ - time_system::DateTime GetEpochData(const size_t epoch_id) const; + time_system::DateTime CalcEpochData(const size_t epoch_id) const; /** * @fn SearchNearestEpochId @@ -102,31 +52,6 @@ class TimeSeriesFileOrbitPropagation : public Orbit { */ size_t SearchNearestEpochId(const double current_time_jd); - /** - * @fn Update - * @brief Update satellite information - * @param [in] simulation_time: Simulation time information - */ - void Update(const SimulationTime& simulation_time); - - /** - * @fn GetPosition - * @brief Return satellite position - * @param [in] time: Target time to get the satellite. When the argument is not set, the last updated time is used for the calculation. - * @return Satellite position at the time. Or return zero vector when the arguments are out of range. - * @note Coordinate system and units follow the orbit definition file. - */ - inline math::Vector<3> GetPosition(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; - - /** - * @fn GetVelocity - * @brief Return satellite velocity - * @param [in] time: Target time to get the satellite. When the argument is not set, the last updated time is used for the calculation. - * @return Satellite velocity at the time. Or return zero vector when the arguments are out of range. - * @note Coordinate system and units follow the orbit definition file. - */ - inline math::Vector<3> GetVelocity(const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; - // Override Orbit /** * @fn Propagate @@ -137,18 +62,21 @@ class TimeSeriesFileOrbitPropagation : public Orbit { virtual void Propagate(const double end_time_s, const double current_time_jd); private: - int number_of_interpolation_; //!< Number of interpolation - int interpolation_method_; //!< Interpolation method - double orbital_period_correction_; //!< Orbital period correction + bool is_time_range_warning_displayed_ = false; //!< Flag for time range warning + bool is_interpolation_method_error_displayed_ = false; //!< Flag for interpolation method error + + int number_of_interpolation_; //!< Number of interpolation + int interpolation_method_; //!< Interpolation method + double orbital_period_correction_s_; //!< Orbital period correction [s] - std::vector epoch_; //!< Epoch data list + std::vector epoch_; //!< Epoch data list std::vector> time_series_data_; //!< List of orbit definition data - time_system::EpochTime current_epoch_time_; //!< The last updated time - time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling - size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - - std::vector orbit_position_; //!< Position with interpolation - std::vector orbit_velocity_; //!< Velocity with interpolation + time_system::EpochTime current_epoch_time_; //!< The last updated time + time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling + size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + + std::vector orbit_position_i_m_; //!< Position with interpolation + std::vector orbit_velocity_i_m_s_; //!< Velocity with interpolation /** * @fn UpdateInterpolationInformation @@ -158,13 +86,4 @@ class TimeSeriesFileOrbitPropagation : public Orbit { bool UpdateInterpolationInformation(); }; -/** - * @fn InitTimeSeriesFileOrbitPropagation - * @brief Initialize function for TimeSeriesFileOrbitPropagation class - * @param [in] ini_file_name: Path to the initialize file - * @param [in] simulation_time: Simulation time information - * @return Initialized TimeSeriesFileOrbitPropagation class - */ -TimeSeriesFileOrbitPropagation* InitTimeSeriesFileOrbitPropagation(const std::string ini_file_name, const SimulationTime& simulation_time); - #endif // S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ From 5e48c22269b4edf1493179113ee56e2ff34808e5 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 15:50:59 +0900 Subject: [PATCH 426/456] add TIME_SERIES_FILE propagation mode --- settings/sample_satellite/satellite.ini | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/settings/sample_satellite/satellite.ini b/settings/sample_satellite/satellite.ini index 1c0677570..28c6b19e2 100644 --- a/settings/sample_satellite/satellite.ini +++ b/settings/sample_satellite/satellite.ini @@ -60,6 +60,7 @@ logging = ENABLE // RELATIVE : Relative dynamics (for formation flying simulation) // KEPLER : Kepler orbit propagation without disturbances and thruster maneuver // ENCKE : Encke orbit propagation with disturbances and thruster maneuver +// TIME_SERIES_FILE : Orbit propagation with time series file propagate_mode = RK4 // Orbit initialize mode for RK4, KEPLER, and ENCKE @@ -123,6 +124,16 @@ reference_satellite_id = 1 error_tolerance = 0.0001 /////////////////////////////////////////////////////////////////////////////// +// Settings for orbit propagation with time series file /////////// +time_series_file_path = SETTINGS_DIR_FROM_EXE/environment/time_series/output.csv +number_of_interpolation = 5 +// Interpolation method +0: POLYNOMIAL +1: TRIGONOMETRIC +interpolation_method = 0 +orbital_period_correction_s = 86659.2 // Only used for trigonometric method. This sample value is used for the gnss satellits (24 * 60 * 60 * 1.003). +/////////////////////////////////////////////////////////////////////////////// + [THERMAL] calculation = DISABLE From 8f17cdb18e564f9b3d1b393329a0bf0994c8abd6 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 16:01:48 +0900 Subject: [PATCH 427/456] modify csv file path --- settings/sample_satellite/satellite.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sample_satellite/satellite.ini b/settings/sample_satellite/satellite.ini index 28c6b19e2..59e3c5997 100644 --- a/settings/sample_satellite/satellite.ini +++ b/settings/sample_satellite/satellite.ini @@ -125,7 +125,7 @@ error_tolerance = 0.0001 /////////////////////////////////////////////////////////////////////////////// // Settings for orbit propagation with time series file /////////// -time_series_file_path = SETTINGS_DIR_FROM_EXE/environment/time_series/output.csv +time_series_file_path = SETTINGS_DIR_FROM_EXE/sample_satellite/time_series/time_series.csv number_of_interpolation = 5 // Interpolation method 0: POLYNOMIAL From 5c0a98f93ef5a1536ece8d0b6a5f52e54fc044a9 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 16:02:38 +0900 Subject: [PATCH 428/456] modify format --- src/dynamics/orbit/initialize_orbit.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 835fb451b..33129ae58 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -4,6 +4,8 @@ */ #include "initialize_orbit.hpp" +#include + #include #include "encke_orbit_propagation.hpp" @@ -13,8 +15,6 @@ #include "sgp4_orbit_propagation.hpp" #include "time_series_file_orbit_propagation.hpp" -#include - Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, double gravity_constant_m3_s2, std::string section, RelativeInformation* relative_information) { auto conf = IniAccess(initialize_file); @@ -106,7 +106,8 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string const int interpolation_method = conf.ReadInt(section_, "interpolation_method"); const double orbital_period_correction_s = conf.ReadDouble(section_, "orbital_period_correction_s"); - orbit = new TimeSeriesFileOrbitPropagation(celestial_information, time_series_file_path, number_of_interpolation, interpolation_method, orbital_period_correction_s, current_time_jd); + orbit = new TimeSeriesFileOrbitPropagation(celestial_information, time_series_file_path, number_of_interpolation, interpolation_method, + orbital_period_correction_s, current_time_jd); } else { std::cerr << "ERROR: orbit propagation mode: " << propagate_mode << " is not defined!" << std::endl; From 4d7ca22d88b741cdaf12202be8cbefd6f3016573 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 16:05:56 +0900 Subject: [PATCH 429/456] delete time_series_file_orbit_propagation.ini --- .../time_series_file_orbit_propagation.ini | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 settings/environment/time_series_file_orbit_propagation.ini diff --git a/settings/environment/time_series_file_orbit_propagation.ini b/settings/environment/time_series_file_orbit_propagation.ini deleted file mode 100644 index 3939f7a58..000000000 --- a/settings/environment/time_series_file_orbit_propagation.ini +++ /dev/null @@ -1,18 +0,0 @@ -[TIME_SERIES_FILE_ORBIT_PROPAGATION] -time_series_file_path = SETTINGS_DIR_FROM_EXE/environment/time_series/output.csv -header_name_et = t(ET) -header_name_x = "EQU X(km, ECLIPJ2000)" -header_name_y = "EQU Y(km, ECLIPJ2000)" -header_name_z = "EQU Z(km, ECLIPJ2000)" -header_name_vx = VX(km/s) -header_name_vy = VY(km/s) -header_name_vz = VZ(km/s) -coordinate_system = eclipj2000 -unit = km - -calculation = ENABLE -logging = ENABLE - -number_of_interpolation = 5 -orbital_period_correction = 86659.2 // Only used for trigonometric method. This sample value is used for the gnss satellits (24 * 60 * 60 * 1.003). -interpolation_method = POLYNOMIAL // POLYNOMIALor TRIGONOMETRIC \ No newline at end of file From 3bded8b279dba748caf4d524324d44acfe9e76b5 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 16:17:39 +0900 Subject: [PATCH 430/456] modify error message --- src/dynamics/orbit/time_series_file_orbit_propagation.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 4eeaf8a6f..30fbf0be4 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -114,7 +114,7 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do } if (diff_s < 0.0) { if (!is_time_range_warning_displayed_) { - std::cout << "[WARNING] Time is out of range of time series file." << std::endl; + std::cout << "[WARNING] Time series file orbit propagation: Time is out of range of time series file." << std::endl; is_time_range_warning_displayed_ = true; } for (size_t i = 0; i < 3; i++) { @@ -123,7 +123,7 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do } } else if (diff_s > 1e6 || reference_interpolation_id_ >= time_series_data_.size()) { if (!is_time_range_warning_displayed_) { - std::cout << "[WARNING] Time is out of range of time series file." << std::endl; + std::cout << "[WARNING] Time series file orbit propagation: Time is out of range of time series file." << std::endl; is_time_range_warning_displayed_ = true; } for (size_t i = 0; i < 3; i++) { @@ -139,7 +139,7 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do spacecraft_velocity_i_m_s_ = orbit_velocity_i_m_s_[0].CalcPositionWithTrigonometric(diff_s, math::tau / orbital_period_correction_s_); } else { if (!is_interpolation_method_error_displayed_) { - std::cerr << "[ERROR] Interpolation method: " << interpolation_method_ << " is not defined!" << std::endl; + std::cerr << "[ERROR] Time series file orbit propagation: Interpolation method " << interpolation_method_ << " is not defined!" << std::endl; std::cerr << "The orbit mode is automatically set as Polynomial" << std::endl; is_interpolation_method_error_displayed_ = true; } From 4b30d70853ecbe3bc9ef7a4f427ed800567cf870 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 21:20:41 +0900 Subject: [PATCH 431/456] delete include file --- src/dynamics/orbit/initialize_orbit.cpp | 2 -- src/environment/global/global_environment.hpp | 1 - 2 files changed, 3 deletions(-) diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 33129ae58..33d674044 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -4,8 +4,6 @@ */ #include "initialize_orbit.hpp" -#include - #include #include "encke_orbit_propagation.hpp" diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index b5af66a6e..b8bb56890 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -8,7 +8,6 @@ #include "celestial_information.hpp" #include "gnss_satellites.hpp" -#include "dynamics/orbit/time_series_file_orbit_propagation.hpp" #include "hipparcos_catalogue.hpp" #include "logger/logger.hpp" #include "simulation/simulation_configuration.hpp" From 30bf8b68f962f5907283e72284bad7acde79b471 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 21:22:57 +0900 Subject: [PATCH 432/456] modify ephemeris time --- .../time_series_file_orbit_propagation.cpp | 63 +++++++------------ .../time_series_file_orbit_propagation.hpp | 21 +++---- 2 files changed, 32 insertions(+), 52 deletions(-) diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 30fbf0be4..8a1cc87ba 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -14,42 +14,33 @@ #include "logger/log_utility.hpp" #include "math_physics/math/constants.hpp" -#include "math_physics/time_system/date_time_format.hpp" #include "setting_file_reader/initialize_file_access.hpp" TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, int interpolation_method, double orbital_period_correction_s, const double current_time_jd) - : Orbit(celestial_information) { + : Orbit(celestial_information), + is_time_range_warning_displayed_(false), + is_interpolation_method_error_displayed_(false), + number_of_interpolation_(number_of_interpolation), + interpolation_method_(interpolation_method), + orbital_period_correction_s_(orbital_period_correction_s), + reference_interpolation_id_(0) { propagate_mode_ = OrbitPropagateMode::kTimeSeriesFile; - number_of_interpolation_ = number_of_interpolation; - interpolation_method_ = interpolation_method; - orbital_period_correction_s_ = orbital_period_correction_s; - // Read time series file IniAccess time_series_file(time_series_file_path); time_series_file.ReadCsvDoubleWithHeader(time_series_data_, 7, 1, 0); - int year, month, day, hour, minute; - double second; - for (size_t i = 0; i < time_series_data_.size(); ++i) { - if (!time_series_data_[i].empty()) { - SpiceChar utc_char[80]; - et2utc_c(time_series_data_[i][0], "ISOC", 2, 80, utc_char); - sscanf(utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); - epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); - } - } // Get general info - size_t nearest_epoch_id = SearchNearestEpochId(current_time_jd); + size_t nearest_ephemeris_time_id = SearchNearestEpochId(current_time_jd); const size_t half_interpolation_number = number_of_interpolation / 2; - if (nearest_epoch_id >= half_interpolation_number) { - reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; + if (nearest_ephemeris_time_id >= half_interpolation_number) { + reference_interpolation_id_ = nearest_ephemeris_time_id - half_interpolation_number; } - reference_time_ = time_system::EpochTime(CalcEpochData(reference_interpolation_id_)); + reference_time_ = CalcEpochData(reference_interpolation_id_); // Initialize orbit orbit_position_i_m_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); @@ -68,7 +59,7 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn } size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current_time_jd) { - size_t nearest_epoch_id = 0; + size_t nearest_ephemeris_time_id = 0; // Get start ephemeris time double start_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; @@ -76,19 +67,18 @@ size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current // Get the nearest epoch ID for (size_t i = 0; i < time_series_data_.size(); i++) { if (start_ephemris_time < time_series_data_[i][0]) { - nearest_epoch_id = i; + nearest_ephemeris_time_id = i; break; } } - return nearest_epoch_id; + return nearest_ephemeris_time_id; } -time_system::DateTime TimeSeriesFileOrbitPropagation::CalcEpochData(const size_t epoch_id) const { - if (epoch_id > epoch_.size()) { - time_system::DateTime zero; - return zero; +double TimeSeriesFileOrbitPropagation::CalcEpochData(const size_t ephemeris_time_id) const { + if (ephemeris_time_id > time_series_data_.size()) { + return 0; } - return epoch_[epoch_id]; + return time_series_data_[ephemeris_time_id][0]; } void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const double current_time_jd) { @@ -96,18 +86,9 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do if (!is_calc_enabled_) return; - // Get time - int year, month, day, hour, minute; - double second; - SpiceChar current_utc_char[80]; - double current_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; - et2utc_c(current_ephemris_time, "ISOC", 2, 80, current_utc_char); - sscanf(current_utc_char, "%d-%d-%dT%d:%d:%lf", &year, &month, &day, &hour, &minute, &second); - time_system::DateTime current_date_time(year, month, day, hour, minute, second); - current_epoch_time_ = time_system::EpochTime(current_date_time); - // Check interpolation update - double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double current_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; + double diff_s = current_ephemris_time - reference_time_; double medium_time_s = orbit_position_i_m_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; if (diff_s > medium_time_s) { UpdateInterpolationInformation(); @@ -152,8 +133,8 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do } bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { - time_system::EpochTime time_series_time = time_system::EpochTime(CalcEpochData(reference_interpolation_id_)); - double time_diff_s = time_series_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); + double time_series_data_time_s = CalcEpochData(reference_interpolation_id_); + double time_diff_s = time_series_data_time_s - reference_time_; if (reference_interpolation_id_ >= time_series_data_.size()) { for (size_t i = 0; i < 3; i++) { spacecraft_position_i_m_[i] = time_series_data_[time_series_data_.size() - 1][i + 1]; diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 588c4e944..aa18a2afc 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -7,7 +7,6 @@ #define S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ #include -#include #include #include @@ -29,8 +28,9 @@ class TimeSeriesFileOrbitPropagation : public Orbit { * @param [in] orbital_period_correction_s: Orbital period correction [s] * @param [in] current_time_jd: Current Julian day [day] */ - TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, int number_of_interpolation, - int interpolation_method, double orbital_period_correction_s, const double current_time_jd); + TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, const std::string time_series_file_path, + const int number_of_interpolation, const int interpolation_method, const double orbital_period_correction_s, + const double current_time_jd); /** *@fn ~TimeSeriesFileOrbitPropagation @@ -41,9 +41,9 @@ class TimeSeriesFileOrbitPropagation : public Orbit { /** * @fn CalcEpochData * @brief Return epoch data for a specific epoch ID. - * @param epoch_id The epoch ID of the orbit definition data. + * @param ephemeris_time_id The ephemeris time ID of the orbit definition data. */ - time_system::DateTime CalcEpochData(const size_t epoch_id) const; + double CalcEpochData(const size_t ephemeris_time_id) const; /** * @fn SearchNearestEpochId @@ -62,18 +62,16 @@ class TimeSeriesFileOrbitPropagation : public Orbit { virtual void Propagate(const double end_time_s, const double current_time_jd); private: - bool is_time_range_warning_displayed_ = false; //!< Flag for time range warning - bool is_interpolation_method_error_displayed_ = false; //!< Flag for interpolation method error + bool is_time_range_warning_displayed_; //!< Flag for time range warning + bool is_interpolation_method_error_displayed_; //!< Flag for interpolation method error int number_of_interpolation_; //!< Number of interpolation int interpolation_method_; //!< Interpolation method double orbital_period_correction_s_; //!< Orbital period correction [s] - std::vector epoch_; //!< Epoch data list std::vector> time_series_data_; //!< List of orbit definition data - time_system::EpochTime current_epoch_time_; //!< The last updated time - time_system::EpochTime reference_time_; //!< Reference start time of the orbit definition data handling - size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + double reference_time_; //!< Reference start time of the orbit definition data handling + size_t reference_interpolation_id_; //!< Reference epoch ID of the interpolation std::vector orbit_position_i_m_; //!< Position with interpolation std::vector orbit_velocity_i_m_s_; //!< Velocity with interpolation @@ -87,3 +85,4 @@ class TimeSeriesFileOrbitPropagation : public Orbit { }; #endif // S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ + From 190c7731a81692f57193b7d7349d665d2a1b4baa Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 21:29:17 +0900 Subject: [PATCH 433/456] modify ephemeris time --- .../time_series_file_orbit_propagation.cpp | 13 ++++++----- .../time_series_file_orbit_propagation.hpp | 22 +++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 8a1cc87ba..06511c93a 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -33,14 +33,14 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn time_series_file.ReadCsvDoubleWithHeader(time_series_data_, 7, 1, 0); // Get general info - size_t nearest_ephemeris_time_id = SearchNearestEpochId(current_time_jd); + size_t nearest_ephemeris_time_id = SearchNearestEphemerisTimeId(current_time_jd); const size_t half_interpolation_number = number_of_interpolation / 2; if (nearest_ephemeris_time_id >= half_interpolation_number) { reference_interpolation_id_ = nearest_ephemeris_time_id - half_interpolation_number; } - reference_time_ = CalcEpochData(reference_interpolation_id_); + reference_time_ = CalcEphemerisTimeData(reference_interpolation_id_); // Initialize orbit orbit_position_i_m_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); @@ -58,13 +58,13 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn is_calc_enabled_ = false; } -size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current_time_jd) { +size_t TimeSeriesFileOrbitPropagation::SearchNearestEphemerisTimeId(const double current_time_jd) { size_t nearest_ephemeris_time_id = 0; // Get start ephemeris time double start_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; - // Get the nearest epoch ID + // Get the nearest ephemeris time ID for (size_t i = 0; i < time_series_data_.size(); i++) { if (start_ephemris_time < time_series_data_[i][0]) { nearest_ephemeris_time_id = i; @@ -74,7 +74,7 @@ size_t TimeSeriesFileOrbitPropagation::SearchNearestEpochId(const double current return nearest_ephemeris_time_id; } -double TimeSeriesFileOrbitPropagation::CalcEpochData(const size_t ephemeris_time_id) const { +double TimeSeriesFileOrbitPropagation::CalcEphemerisTimeData(const size_t ephemeris_time_id) const { if (ephemeris_time_id > time_series_data_.size()) { return 0; } @@ -133,7 +133,7 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do } bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { - double time_series_data_time_s = CalcEpochData(reference_interpolation_id_); + double time_series_data_time_s = CalcEphemerisTimeData(reference_interpolation_id_); double time_diff_s = time_series_data_time_s - reference_time_; if (reference_interpolation_id_ >= time_series_data_.size()) { for (size_t i = 0; i < 3; i++) { @@ -154,3 +154,4 @@ bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { return true; } + diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index aa18a2afc..0db88a7de 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -39,18 +39,18 @@ class TimeSeriesFileOrbitPropagation : public Orbit { virtual ~TimeSeriesFileOrbitPropagation() {} /** - * @fn CalcEpochData - * @brief Return epoch data for a specific epoch ID. - * @param ephemeris_time_id The ephemeris time ID of the orbit definition data. + * @fn CalcEphemerisTimeData + * @brief Return ephemeris time data for a specific ephemeris time ID. + * @param ephemeris_time_id The ephemeris time ID of the time series data. */ - double CalcEpochData(const size_t ephemeris_time_id) const; + double CalcEphemerisTimeData(const size_t ephemeris_time_id) const; /** - * @fn SearchNearestEpochId - * @brief Search the nearest epoch ID from the orbit definition data. + * @fn SearchNearestEphemerisTimeId + * @brief Search the nearest ephemeris time ID from the time series data. * @param current_time_jd: Current Julian day [day] */ - size_t SearchNearestEpochId(const double current_time_jd); + size_t SearchNearestEphemerisTimeId(const double current_time_jd); // Override Orbit /** @@ -69,9 +69,9 @@ class TimeSeriesFileOrbitPropagation : public Orbit { int interpolation_method_; //!< Interpolation method double orbital_period_correction_s_; //!< Orbital period correction [s] - std::vector> time_series_data_; //!< List of orbit definition data - double reference_time_; //!< Reference start time of the orbit definition data handling - size_t reference_interpolation_id_; //!< Reference epoch ID of the interpolation + std::vector> time_series_data_; //!< List of time series data + double reference_time_; //!< Reference start time of the time series data handling + size_t reference_interpolation_id_; //!< Reference EphemerisTime ID of the interpolation std::vector orbit_position_i_m_; //!< Position with interpolation std::vector orbit_velocity_i_m_s_; //!< Velocity with interpolation @@ -79,7 +79,7 @@ class TimeSeriesFileOrbitPropagation : public Orbit { /** * @fn UpdateInterpolationInformation * @brief Update interpolation information by inserting new data - * @return true: No error, false: Orbit definition file out of range error + * @return true: No error, false: Time series file out of range error */ bool UpdateInterpolationInformation(); }; From 9d8d911db2471090ec6815c05cc4241b4f9ba619 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Fri, 27 Sep 2024 21:31:04 +0900 Subject: [PATCH 434/456] delete SpiceUsr.h --- src/dynamics/orbit/time_series_file_orbit_propagation.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 06511c93a..ad1d3d73c 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -5,8 +5,6 @@ #include "time_series_file_orbit_propagation.hpp" -#include - #include #include #include From 5a4f12c3c9279011f19808d7d613a3f7bc978c9d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 28 Sep 2024 20:45:10 +0900 Subject: [PATCH 435/456] Add logger and setting_file_reader namespace --- .../base/sensor_template_functions.hpp | 2 +- .../ideal/angular_velocity_observer.cpp | 10 ++++----- .../ideal/angular_velocity_observer.hpp | 6 ++--- src/components/ideal/attitude_observer.cpp | 6 ++--- src/components/ideal/attitude_observer.hpp | 10 ++++----- src/components/ideal/force_generator.cpp | 18 +++++++-------- src/components/ideal/orbit_observer.cpp | 10 ++++----- src/components/ideal/torque_generator.cpp | 10 ++++----- src/components/ports/power_port.cpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 10 ++++----- src/components/real/aocs/gyro_sensor.cpp | 8 +++---- src/components/real/aocs/magnetometer.cpp | 8 +++---- src/components/real/aocs/magnetorquer.cpp | 12 +++++----- .../aocs/mtq_magnetometer_interference.cpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 14 ++++++------ src/components/real/aocs/star_sensor.cpp | 10 ++++----- src/components/real/aocs/star_sensor.hpp | 12 +++++----- src/components/real/aocs/sun_sensor.cpp | 8 +++---- src/components/real/communication/antenna.cpp | 2 +- .../antenna_radiation_pattern.cpp | 2 +- .../ground_station_calculator.cpp | 2 +- .../wings_command_sender_to_c2a.cpp | 2 +- src/components/real/mission/telescope.cpp | 22 +++++++++---------- src/components/real/mission/telescope.hpp | 10 ++++----- src/components/real/power/battery.cpp | 2 +- .../real/power/csv_scenario_interface.cpp | 2 +- .../real/power/pcu_initial_study.cpp | 2 +- .../real/power/solar_array_panel.cpp | 4 ++-- .../real/propulsion/simple_thruster.cpp | 12 +++++----- src/disturbances/air_drag.cpp | 10 ++++----- src/disturbances/disturbance.hpp | 2 +- src/disturbances/disturbances.cpp | 2 +- src/disturbances/geopotential.cpp | 10 ++++----- src/disturbances/gravity_gradient.cpp | 8 +++---- src/disturbances/lunar_gravity_field.cpp | 10 ++++----- src/disturbances/magnetic_disturbance.cpp | 10 ++++----- .../solar_radiation_pressure_disturbance.cpp | 10 ++++----- src/disturbances/third_body_gravity.cpp | 8 +++---- src/dynamics/attitude/attitude.cpp | 8 +++---- .../attitude_with_cantilever_vibration.cpp | 8 +++---- src/dynamics/attitude/initialize_attitude.cpp | 8 +++---- src/dynamics/orbit/initialize_orbit.cpp | 4 ++-- src/dynamics/orbit/orbit.cpp | 20 ++++++++--------- src/dynamics/thermal/temperature.cpp | 12 +++++----- .../global/celestial_information.cpp | 6 ++--- src/environment/global/global_environment.cpp | 2 +- src/environment/global/gnss_satellites.cpp | 6 ++--- .../global/hipparcos_catalogue.cpp | 2 +- src/environment/global/simulation_time.cpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/earth_albedo.cpp | 2 +- src/environment/local/geomagnetic_field.cpp | 10 ++++----- .../local/local_celestial_information.cpp | 4 ++-- src/environment/local/local_environment.cpp | 4 ++-- .../solar_radiation_pressure_environment.cpp | 2 +- src/logger/initialize_log.cpp | 4 ++-- 56 files changed, 198 insertions(+), 198 deletions(-) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 31c761393..b1236901a 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -79,7 +79,7 @@ void Sensor::RangeCheck(void) { template Sensor ReadSensorInformation(const std::string file_name, const double step_width_s, const std::string component_name, const std::string unit) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); std::string section = "SENSOR_BASE_" + component_name; s2e::math::Vector scale_factor_vector; diff --git a/src/components/ideal/angular_velocity_observer.cpp b/src/components/ideal/angular_velocity_observer.cpp index 7e3bea5d9..94a12c467 100644 --- a/src/components/ideal/angular_velocity_observer.cpp +++ b/src/components/ideal/angular_velocity_observer.cpp @@ -9,7 +9,7 @@ namespace s2e::components { -AngularVelocityObserver::AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude) +AngularVelocityObserver::AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const dynamics::attitude::Attitude& attitude) : Component(prescaler, clock_generator), Sensor(sensor_base), attitude_(attitude) {} void AngularVelocityObserver::MainRoutine(const int time_count) { @@ -21,7 +21,7 @@ std::string AngularVelocityObserver::GetLogHeader() const { std::string str_tmp = ""; std::string sensor_name = "angular_velocity_observer_"; - str_tmp += WriteVector(sensor_name + "measured_value", "b", "rad/s", 3); + str_tmp += logger::WriteVector(sensor_name + "measured_value", "b", "rad/s", 3); return str_tmp; } @@ -29,14 +29,14 @@ std::string AngularVelocityObserver::GetLogHeader() const { std::string AngularVelocityObserver::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(angular_velocity_b_rad_s_); + str_tmp += logger::WriteVector(angular_velocity_b_rad_s_); return str_tmp; } AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, - const Attitude& attitude) { - IniAccess ini_file(file_name); + const dynamics::attitude::Attitude& attitude) { + setting_file_reader::IniAccess ini_file(file_name); int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); if (prescaler <= 1) prescaler = 1; diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 67d421f9b..404785058 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -28,7 +28,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge * @param [in] sensor_base: Sensor base information * @param [in] dynamics: Dynamics information */ - AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const Attitude& attitude); + AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const dynamics::attitude::Attitude& attitude); /** * @fn ~AngularVelocityObserver * @brief Destructor @@ -63,7 +63,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge protected: s2e::math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] - const Attitude& attitude_; //!< Dynamics information + const dynamics::attitude::Attitude& attitude_; //!< Dynamics information }; /** @@ -75,7 +75,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge * @param [in] dynamics: Dynamics information */ AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, - const Attitude& attitude); + const dynamics::attitude::Attitude& attitude); } // namespace s2e::components diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 1cb6e6126..9d2199056 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -11,7 +11,7 @@ namespace s2e::components { AttitudeObserver::AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, - const Attitude& attitude) + const dynamics::attitude::Attitude& attitude) : Component(prescaler, clock_generator), angle_noise_(0.0, standard_deviation_rad), attitude_(attitude) { direction_noise_.SetParameters(0.0, 1.0); } @@ -49,9 +49,9 @@ std::string AttitudeObserver::GetLogValue() const { return str_tmp; } -AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude) { +AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::attitude::Attitude& attitude) { // General - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); // CompoBase int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 8ce9697e5..59c00dd29 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -26,9 +26,9 @@ class AttitudeObserver : public Component, public logger::ILoggable { * @brief Constructor without power port * @param [in] prescaler: Frequency scale factor for update * @param [in] clock_generator: Clock generator - * @param [in] attitude: Attitude information + * @param [in] attitude: dynamics::attitude::Attitude information */ - AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, const Attitude& attitude); + AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, const dynamics::attitude::Attitude& attitude); /** * @fn ~AttitudeObserver @@ -67,7 +67,7 @@ class AttitudeObserver : public Component, public logger::ILoggable { s2e::randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise - const Attitude& attitude_; //!< Attitude information + const dynamics::attitude::Attitude& attitude_; //!< dynamics::attitude::Attitude information }; /** @@ -75,9 +75,9 @@ class AttitudeObserver : public Component, public logger::ILoggable { * @brief Initialize functions for AttitudeObserver * @param [in] clock_generator: Clock generator * @param [in] file_name: Path to the initialize file - * @param [in] attitude: Attitude information + * @param [in] attitude: dynamics::attitude::Attitude information */ -AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Attitude& attitude); +AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::attitude::Attitude& attitude); } // namespace s2e::components diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index f458160d7..86b17da21 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -68,10 +68,10 @@ std::string ForceGenerator::GetLogHeader() const { std::string str_tmp = ""; std::string head = "ideal_force_generator_"; - str_tmp += WriteVector(head + "ordered_force", "b", "N", 3); - str_tmp += WriteVector(head + "generated_force", "b", "N", 3); - str_tmp += WriteVector(head + "generated_force", "i", "N", 3); - str_tmp += WriteVector(head + "generated_force", "rtn", "N", 3); + str_tmp += logger::WriteVector(head + "ordered_force", "b", "N", 3); + str_tmp += logger::WriteVector(head + "generated_force", "b", "N", 3); + str_tmp += logger::WriteVector(head + "generated_force", "i", "N", 3); + str_tmp += logger::WriteVector(head + "generated_force", "rtn", "N", 3); return str_tmp; } @@ -79,10 +79,10 @@ std::string ForceGenerator::GetLogHeader() const { std::string ForceGenerator::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(ordered_force_b_N_); - str_tmp += WriteVector(generated_force_b_N_); - str_tmp += WriteVector(generated_force_i_N_); - str_tmp += WriteVector(generated_force_rtn_N_); + str_tmp += logger::WriteVector(ordered_force_b_N_); + str_tmp += logger::WriteVector(generated_force_b_N_); + str_tmp += logger::WriteVector(generated_force_i_N_); + str_tmp += logger::WriteVector(generated_force_rtn_N_); return str_tmp; } @@ -109,7 +109,7 @@ s2e::math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(s2e::math ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { // General - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); // CompoBase int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 0851de4d8..58ede8f6b 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -58,8 +58,8 @@ std::string OrbitObserver::GetLogHeader() const { std::string str_tmp = ""; std::string head = "orbit_observer_"; - str_tmp += WriteVector(head + "position", "i", "m", 3); - str_tmp += WriteVector(head + "velocity", "i", "m/s", 3); + str_tmp += logger::WriteVector(head + "position", "i", "m", 3); + str_tmp += logger::WriteVector(head + "velocity", "i", "m/s", 3); return str_tmp; } @@ -67,8 +67,8 @@ std::string OrbitObserver::GetLogHeader() const { std::string OrbitObserver::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(observed_position_i_m_, 16); - str_tmp += WriteVector(observed_velocity_i_m_s_, 16); + str_tmp += logger::WriteVector(observed_position_i_m_, 16); + str_tmp += logger::WriteVector(observed_velocity_i_m_s_, 16); return str_tmp; } @@ -87,7 +87,7 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame) { OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { // General - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); // CompoBase int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index a47ede7c9..74a478a29 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -45,8 +45,8 @@ std::string TorqueGenerator::GetLogHeader() const { std::string str_tmp = ""; std::string head = "ideal_torque_generator_"; - str_tmp += WriteVector(head + "ordered_torque", "b", "Nm", 3); - str_tmp += WriteVector(head + "generated_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector(head + "ordered_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector(head + "generated_torque", "b", "Nm", 3); return str_tmp; } @@ -54,8 +54,8 @@ std::string TorqueGenerator::GetLogHeader() const { std::string TorqueGenerator::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(ordered_torque_b_Nm_); - str_tmp += WriteVector(generated_torque_b_Nm_); + str_tmp += logger::WriteVector(ordered_torque_b_Nm_); + str_tmp += logger::WriteVector(generated_torque_b_Nm_); return str_tmp; } @@ -82,7 +82,7 @@ s2e::math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(s2e::mat TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { // General - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); // CompoBase int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index ac763115e..3964bb674 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -68,7 +68,7 @@ void PowerPort::SubtractAssumedPowerConsumption_W(const double power_W) { } void PowerPort::InitializeWithInitializeFile(const std::string file_name) { - IniAccess initialize_file(file_name); + setting_file_reader::IniAccess initialize_file(file_name); const std::string section_name = "POWER_PORT"; double minimum_voltage_V = initialize_file.ReadDouble(section_name.c_str(), "minimum_voltage_V"); diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 9b6a80cc8..f68873453 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -208,8 +208,8 @@ std::string GnssReceiver::GetLogHeader() const // For logs str_tmp += WriteScalar(sensor_name + "measured_utc_time_hour"); str_tmp += WriteScalar(sensor_name + "measured_utc_time_min"); str_tmp += WriteScalar(sensor_name + "measured_utc_time_sec"); - str_tmp += WriteVector(sensor_name + "measured_position", "ecef", "m", 3); - str_tmp += WriteVector(sensor_name + "measured_velocity", "ecef", "m/s", 3); + str_tmp += logger::WriteVector(sensor_name + "measured_position", "ecef", "m", 3); + str_tmp += logger::WriteVector(sensor_name + "measured_velocity", "ecef", "m/s", 3); str_tmp += WriteScalar(sensor_name + "measured_latitude", "rad"); str_tmp += WriteScalar(sensor_name + "measured_longitude", "rad"); str_tmp += WriteScalar(sensor_name + "measured_altitude", "m"); @@ -228,8 +228,8 @@ std::string GnssReceiver::GetLogValue() const // For logs str_tmp += WriteScalar(utc_.hour); str_tmp += WriteScalar(utc_.minute); str_tmp += WriteScalar(utc_.second); - str_tmp += WriteVector(position_ecef_m_, 10); - str_tmp += WriteVector(velocity_ecef_m_s_, 10); + str_tmp += logger::WriteVector(position_ecef_m_, 10); + str_tmp += logger::WriteVector(velocity_ecef_m_s_, 10); str_tmp += WriteScalar(geodetic_position_.GetLatitude_rad(), 10); str_tmp += WriteScalar(geodetic_position_.GetLongitude_rad(), 10); str_tmp += WriteScalar(geodetic_position_.GetAltitude_m(), 10); @@ -264,7 +264,7 @@ typedef struct _gnss_receiver_param { GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const size_t component_id) { GnssReceiverParam gnss_receiver_param; - IniAccess gnssr_conf(file_name); + setting_file_reader::IniAccess gnssr_conf(file_name); const char* sensor_name = "GNSS_RECEIVER_"; const std::string section_name = sensor_name + std::to_string(static_cast(component_id)); const char* GSection = section_name.c_str(); diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index f967195fa..fe16a6465 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -34,7 +34,7 @@ std::string GyroSensor::GetLogHeader() const { std::string str_tmp = ""; const std::string sensor_id = std::to_string(static_cast(sensor_id_)); std::string sensor_name = "gyro_sensor" + sensor_id + "_"; - str_tmp += WriteVector(sensor_name + "measured_angular_velocity", "c", "rad/s", kGyroDimension); + str_tmp += logger::WriteVector(sensor_name + "measured_angular_velocity", "c", "rad/s", kGyroDimension); return str_tmp; } @@ -42,14 +42,14 @@ std::string GyroSensor::GetLogHeader() const { std::string GyroSensor::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(angular_velocity_c_rad_s_); + str_tmp += logger::WriteVector(angular_velocity_c_rad_s_); return str_tmp; } GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics) { - IniAccess gyro_conf(file_name); + setting_file_reader::IniAccess gyro_conf(file_name); const char* sensor_name = "GYRO_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); @@ -70,7 +70,7 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sens GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const Dynamics* dynamics) { - IniAccess gyro_conf(file_name); + setting_file_reader::IniAccess gyro_conf(file_name); const char* sensor_name = "GYRO_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index c12e7b37f..dba5c8f45 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -36,7 +36,7 @@ std::string Magnetometer::GetLogHeader() const { std::string str_tmp = ""; const std::string sensor_id = std::to_string(static_cast(sensor_id_)); std::string sensor_name = "magnetometer" + sensor_id + "_"; - str_tmp += WriteVector(sensor_name + "measured_magnetic_field", "c", "nT", kMagnetometerDimension); + str_tmp += logger::WriteVector(sensor_name + "measured_magnetic_field", "c", "nT", kMagnetometerDimension); return str_tmp; } @@ -44,14 +44,14 @@ std::string Magnetometer::GetLogHeader() const { std::string Magnetometer::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(magnetic_field_c_nT_); + str_tmp += logger::WriteVector(magnetic_field_c_nT_); return str_tmp; } Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { - IniAccess magsensor_conf(file_name); + setting_file_reader::IniAccess magsensor_conf(file_name); const char* sensor_name = "MAGNETOMETER_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* MSSection = section_name.c_str(); @@ -72,7 +72,7 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { - IniAccess magsensor_conf(file_name); + setting_file_reader::IniAccess magsensor_conf(file_name); const char* sensor_name = "MAGNETOMETER_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* MSSection = section_name.c_str(); diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index cab226ac7..863d1ce5b 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -99,23 +99,23 @@ std::string Magnetorquer::GetLogHeader() const { const std::string actuator_id = std::to_string(static_cast(component_id_)); std::string actuator_name = "magnetorquer" + actuator_id + "_"; - str_tmp += WriteVector(actuator_name + "output_magnetic_moment", "b", "Am2", kMtqDimension); - str_tmp += WriteVector(actuator_name + "output_torque", "b", "Nm", kMtqDimension); + str_tmp += logger::WriteVector(actuator_name + "output_magnetic_moment", "b", "Am2", kMtqDimension); + str_tmp += logger::WriteVector(actuator_name + "output_torque", "b", "Nm", kMtqDimension); return str_tmp; } std::string Magnetorquer::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(output_magnetic_moment_b_Am2_); - str_tmp += WriteVector(torque_b_Nm_); + str_tmp += logger::WriteVector(output_magnetic_moment_b_Am2_); + str_tmp += logger::WriteVector(torque_b_Nm_); return str_tmp; } Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { - IniAccess magtorquer_conf(file_name); + setting_file_reader::IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; const std::string section_name = sensor_name + std::to_string(static_cast(actuator_id)); const char* MTSection = section_name.c_str(); @@ -160,7 +160,7 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field) { - IniAccess magtorquer_conf(file_name); + setting_file_reader::IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; const std::string section_name = sensor_name + std::to_string(static_cast(actuator_id)); const char* MTSection = section_name.c_str(); diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index b2f23f474..7113ee869 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -13,7 +13,7 @@ MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_ const size_t initialize_id) : magnetometer_(magnetometer), magnetorquer_(magnetorquer) { // Read ini file - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); std::string section = "MTQ_MAGNETOMETER_INTERFERENCE_" + std::to_string(static_cast(initialize_id)); polynomial_degree_ = (size_t)ini_file.ReadInt(section.c_str(), "polynomial_degree"); diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 9fe963c84..4124f0af1 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -205,8 +205,8 @@ std::string ReactionWheel::GetLogHeader() const { str_tmp += WriteScalar(component_name + "angular_acceleration", "rad/s2"); if (is_logged_jitter_ && is_calculated_jitter_) { - str_tmp += WriteVector(component_name + "jitter_force", "c", "N", 3); - str_tmp += WriteVector(component_name + "jitter_torque", "c", "Nm", 3); + str_tmp += logger::WriteVector(component_name + "jitter_force", "c", "N", 3); + str_tmp += logger::WriteVector(component_name + "jitter_torque", "c", "Nm", 3); } return str_tmp; @@ -222,8 +222,8 @@ std::string ReactionWheel::GetLogValue() const { str_tmp += WriteScalar(generated_angular_acceleration_rad_s2_); if (is_logged_jitter_ && is_calculated_jitter_) { - str_tmp += WriteVector(rw_jitter_.GetJitterForce_c_N()); - str_tmp += WriteVector(rw_jitter_.GetJitterTorque_c_Nm()); + str_tmp += logger::WriteVector(rw_jitter_.GetJitterForce_c_N()); + str_tmp += logger::WriteVector(rw_jitter_.GetJitterTorque_c_Nm()); } return str_tmp; @@ -260,7 +260,7 @@ ReactionWheelJitter rw_jitter; void InitParams(int actuator_id, std::string file_name, double compo_update_step_s) { // Access Parameters - IniAccess rw_ini_file(file_name); + setting_file_reader::IniAccess rw_ini_file(file_name); std::string section_tmp = "REACTION_WHEEL_" + std::to_string(static_cast(actuator_id)); const char* rw_section = section_tmp.c_str(); @@ -316,8 +316,8 @@ void InitParams(int actuator_id, std::string file_name, double compo_update_step std::string radial_force_harmonics_coefficient_path = rw_ini_file.ReadString(jitter_section, "radial_force_harmonics_coefficient_file"); std::string radial_torque_harmonics_coefficient_path = rw_ini_file.ReadString(jitter_section, "radial_torque_harmonics_coefficient_file"); int harmonics_degree = rw_ini_file.ReadInt(jitter_section, "harmonics_degree"); - IniAccess conf_radial_force_harmonics(radial_force_harmonics_coefficient_path); - IniAccess conf_radial_torque_harmonics(radial_torque_harmonics_coefficient_path); + setting_file_reader::IniAccess conf_radial_force_harmonics(radial_force_harmonics_coefficient_path); + setting_file_reader::IniAccess conf_radial_torque_harmonics(radial_torque_harmonics_coefficient_path); std::vector> radial_force_harmonics_coefficients; std::vector> radial_torque_harmonics_coefficients; conf_radial_force_harmonics.ReadCsvDouble(radial_force_harmonics_coefficients, harmonics_degree); diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 6466a60e8..324288777 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -90,7 +90,7 @@ void StarSensor::Initialize() { error_flag_ = true; } -Quaternion StarSensor::Measure(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude) { +Quaternion StarSensor::Measure(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { update(local_celestial_information, attitude); // update delay buffer if (update_count_ == 0) { int hist = buffer_position_ - output_delay_ - 1; @@ -106,7 +106,7 @@ Quaternion StarSensor::Measure(const LocalCelestialInformation* local_celestial_ return measured_quaternion_i2c_; } -void StarSensor::update(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude) { +void StarSensor::update(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { Quaternion quaternion_i2b = attitude->GetQuaternion_i2b(); // Read true value Quaternion q_stt_temp = quaternion_i2b * quaternion_b2c_; // Convert to component frame // Add noise on sight direction @@ -127,7 +127,7 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa buffer_position_ %= max_delay_; } -void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude) { +void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { int judgement = 0; judgement = SunJudgement(local_celestial_information->GetPositionFromSpacecraft_b_m("SUN")); judgement += EarthJudgement(local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH")); @@ -217,7 +217,7 @@ void StarSensor::MainRoutine(const int time_count) { StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment) { - IniAccess STT_conf(file_name); + setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* STTSection = section_name.c_str(); @@ -250,7 +250,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment) { - IniAccess STT_conf(file_name); + setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* STTSection = section_name.c_str(); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 9a7ebf842..5e3ab99b2 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -146,24 +146,24 @@ class StarSensor : public Component, public logger::ILoggable { * @fn update * @brief Update delay buffer * @param [in] local_celestial_information: Local celestial information - * @param [in] attitude: Attitude information + * @param [in] attitude: dynamics::attitude::Attitude information */ - void update(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); + void update(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn Measure * @brief Calculate measured quaternion * @param [in] local_celestial_information: Local celestial information - * @param [in] attitude: Attitude information + * @param [in] attitude: dynamics::attitude::Attitude information */ - s2e::math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); + s2e::math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn AllJudgement * @brief Calculate all error judgement * @param [in] local_celestial_information: Local celestial information - * @param [in] attitude: Attitude information + * @param [in] attitude: dynamics::attitude::Attitude information */ - void AllJudgement(const LocalCelestialInformation* local_celestial_information, const Attitude* attitude); + void AllJudgement(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn SunJudgement * @brief Judge violation of sun forbidden angle diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 1e0b8142a..82e74e40a 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -138,7 +138,7 @@ string SunSensor::GetLogHeader() const { const string sensor_id = std::to_string(static_cast(component_id_)); std::string sensor_name = "sun_sensor" + sensor_id + "_"; - str_tmp += WriteVector(sensor_name + "measured_sun_direction", "c", "-", 3); + str_tmp += logger::WriteVector(sensor_name + "measured_sun_direction", "c", "-", 3); str_tmp += WriteScalar(sensor_name + "sun_detected_flag", "-"); return str_tmp; @@ -147,7 +147,7 @@ string SunSensor::GetLogHeader() const { string SunSensor::GetLogValue() const { string str_tmp = ""; - str_tmp += WriteVector(measured_sun_direction_c_); + str_tmp += logger::WriteVector(measured_sun_direction_c_); str_tmp += WriteScalar(double(sun_detected_flag_)); return str_tmp; @@ -155,7 +155,7 @@ string SunSensor::GetLogValue() const { SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { - IniAccess ss_conf(file_name); + setting_file_reader::IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; const std::string section_tmp = sensor_name + std::to_string(static_cast(ss_id)); const char* Section = section_tmp.c_str(); @@ -188,7 +188,7 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int ss_id, std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { - IniAccess ss_conf(file_name); + setting_file_reader::IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; const std::string section_tmp = sensor_name + std::to_string(static_cast(ss_id)); const char* Section = section_tmp.c_str(); diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index fb22a00b8..3eb527fd4 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -108,7 +108,7 @@ AntennaGainModel SetAntennaGainModel(const std::string gain_model_name) { } Antenna InitAntenna(const int antenna_id, const std::string file_name) { - IniAccess antenna_conf(file_name); + setting_file_reader::IniAccess antenna_conf(file_name); const std::string section_name = "ANTENNA_" + std::to_string(static_cast(antenna_id)); diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index 71566f080..59e1ac935 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -16,7 +16,7 @@ AntennaRadiationPattern::AntennaRadiationPattern() { gain_dBi_.assign(length_the AntennaRadiationPattern::AntennaRadiationPattern(const std::string file_path, const size_t length_theta, const size_t length_phi, const double theta_max_rad, const double phi_max_rad) : length_theta_(length_theta), length_phi_(length_phi), theta_max_rad_(theta_max_rad), phi_max_rad_(phi_max_rad) { - IniAccess gain_file(file_path); + setting_file_reader::IniAccess gain_file(file_path); gain_file.ReadCsvDouble(gain_dBi_, (std::max)(length_theta_, length_phi_)); } diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index f53afc30a..554919b92 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -120,7 +120,7 @@ std::string GroundStationCalculator::GetLogValue() const { } GroundStationCalculator InitGsCalculator(const std::string file_name) { - IniAccess gs_conf(file_name); + setting_file_reader::IniAccess gs_conf(file_name); char Section[30] = "GROUND_STATION_CALCULATOR"; diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index 899241372..e075b82ae 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -135,7 +135,7 @@ void WingsCommandSenderToC2a::AnalyzeC2aCommand(const std::vector t WingsCommandSenderToC2a InitWingsCommandSenderToC2a(environment::ClockGenerator* clock_generator, const double compo_update_step_s, const std::string initialize_file) { - IniAccess ini_access(initialize_file); + setting_file_reader::IniAccess ini_access(initialize_file); std::string section = "WINGS_COMMAND_SENDER_TO_C2A"; bool is_enabled = ini_access.ReadEnable(section.c_str(), "command_send_enable"); diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 5e6e3c8da..b04e5b0da 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -18,7 +18,7 @@ namespace s2e::components { Telescope::Telescope(environment::ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, - const Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, + const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) : Component(1, clock_generator), quaternion_b2c_(quaternion_b2c), @@ -198,9 +198,9 @@ string Telescope::GetLogHeader() const { str_tmp += WriteScalar(component_name + "sun_in_exclusion_angle", ""); str_tmp += WriteScalar(component_name + "earth_in_exclusion_angle", ""); str_tmp += WriteScalar(component_name + "moon_in_exclusion_angle", ""); - str_tmp += WriteVector(component_name + "sun_position", "img", "pix", 2); - str_tmp += WriteVector(component_name + "earth_position", "img", "pix", 2); - str_tmp += WriteVector(component_name + "moon_position", "img", "pix", 2); + str_tmp += logger::WriteVector(component_name + "sun_position", "img", "pix", 2); + str_tmp += logger::WriteVector(component_name + "earth_position", "img", "pix", 2); + str_tmp += logger::WriteVector(component_name + "moon_position", "img", "pix", 2); str_tmp += WriteScalar(component_name + "ground_position_x", "pix"); str_tmp += WriteScalar(component_name + "ground_position_y", "pix"); // When Hipparcos Catalogue was not read, no output of ObserveStars @@ -208,7 +208,7 @@ string Telescope::GetLogHeader() const { for (size_t i = 0; i < number_of_logged_stars_; i++) { str_tmp += WriteScalar(component_name + "hipparcos_id (" + to_string(i) + ")", " "); str_tmp += WriteScalar(component_name + "visible_magnitude (" + to_string(i) + ")", " "); - str_tmp += WriteVector(component_name + "star_position (" + to_string(i) + ")", "img", "pix", 2); + str_tmp += logger::WriteVector(component_name + "star_position (" + to_string(i) + ")", "img", "pix", 2); } } @@ -225,9 +225,9 @@ string Telescope::GetLogValue() const { str_tmp += WriteScalar(is_sun_in_forbidden_angle); str_tmp += WriteScalar(is_earth_in_forbidden_angle); str_tmp += WriteScalar(is_moon_in_forbidden_angle); - str_tmp += WriteVector(sun_position_image_sensor); - str_tmp += WriteVector(earth_position_image_sensor); - str_tmp += WriteVector(moon_position_image_sensor); + str_tmp += logger::WriteVector(sun_position_image_sensor); + str_tmp += logger::WriteVector(earth_position_image_sensor); + str_tmp += logger::WriteVector(moon_position_image_sensor); str_tmp += WriteScalar(ground_position_x_image_sensor_); str_tmp += WriteScalar(ground_position_y_image_sensor_); // When Hipparcos Catalogue was not read, no output of ObserveStars @@ -235,7 +235,7 @@ string Telescope::GetLogValue() const { for (size_t i = 0; i < number_of_logged_stars_; i++) { str_tmp += WriteScalar(star_list_in_sight[i].hipparcos_data.hipparcos_id); str_tmp += WriteScalar(star_list_in_sight[i].hipparcos_data.visible_magnitude); - str_tmp += WriteVector(star_list_in_sight[i].position_image_sensor); + str_tmp += logger::WriteVector(star_list_in_sight[i].position_image_sensor); } } @@ -247,11 +247,11 @@ string Telescope::GetLogValue() const { return str_tmp; } -Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, const Attitude* attitude, +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { using s2e::math::pi; - IniAccess Telescope_conf(file_name); + setting_file_reader::IniAccess Telescope_conf(file_name); const string st_sensor_id = std::to_string(static_cast(sensor_id)); const char* cs = st_sensor_id.data(); diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index 452639e56..bad6d0fbf 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -47,14 +47,14 @@ class Telescope : public Component, public logger::ILoggable { * @param [in] x_fov_per_pix: Field of view per pixel of X-axis in the image plane [rad/pix] * @param [in] y_fov_per_pix: Field of view per pixel of Y-axis in the image plane [rad/pix] * @param [in] number_of_logged_stars: Number of logged stars - * @param [in] attitude: Attitude Information + * @param [in] attitude: dynamics::attitude::Attitude Information * @param [in] hipparcos: Hipparcos catalogue information * @param [in] local_celestial_information: Local celestial information * @param [in] orbit: Orbit information */ Telescope(environment::ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, - const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const Attitude* attitude, + const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); /** * @fn ~Telescope @@ -126,7 +126,7 @@ class Telescope : public Component, public logger::ILoggable { */ void ObserveStars(); - const Attitude* attitude_; //!< Attitude information + const dynamics::attitude::Attitude* attitude_; //!< dynamics::attitude::Attitude information const HipparcosCatalogue* hipparcos_; //!< Star information const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information /** @@ -164,11 +164,11 @@ class Telescope : public Component, public logger::ILoggable { * @param [in] clock_generator: Clock generator * @param [in] sensor_id: Sensor ID * @param [in] file_name: Path to initialize file - * @param [in] attitude: Attitude information + * @param [in] attitude: dynamics::attitude::Attitude information * @param [in] hipparcos: Star information by Hipparcos catalogue * @param [in] local_celestial_information: Local celestial information */ -Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, const Attitude* attitude, +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index a050e35b8..a6442ad3f 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -90,7 +90,7 @@ void Battery::UpdateBatVoltage() { } Battery InitBAT(environment::ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s) { - IniAccess bat_conf(file_name); + setting_file_reader::IniAccess bat_conf(file_name); const std::string section_name = "BATTERY_" + std::to_string(static_cast(bat_id)); diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index f0efc14fb..51f2c2f4b 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -14,7 +14,7 @@ std::map CsvScenarioInterface::buffer_line_id_; std::map CsvScenarioInterface::buffers_; void CsvScenarioInterface::Initialize(const std::string file_name) { - IniAccess scenario_conf(file_name); + setting_file_reader::IniAccess scenario_conf(file_name); char Section[30] = "SCENARIO"; CsvScenarioInterface::is_csv_scenario_enabled_ = scenario_conf.ReadBoolean(Section, "is_csv_scenario_enabled"); diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index c79873dea..e89729490 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -115,7 +115,7 @@ void PcuInitialStudy::UpdateChargeCurrentAndBusVoltage() { PcuInitialStudy InitPCU_InitialStudy(environment::ClockGenerator* clock_generator, int pcu_id, const std::string file_name, const std::vector saps, Battery* battery, double component_step_time_s) { - IniAccess pcu_conf(file_name); + setting_file_reader::IniAccess pcu_conf(file_name); const std::string section_name = "PCU_INITIAL_STUDY_" + std::to_string(static_cast(pcu_id)); diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index fdde4d90a..df4bdad96 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -119,7 +119,7 @@ void SolarArrayPanel::MainRoutine(const int time_count) { SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) { - IniAccess sap_conf(file_name); + setting_file_reader::IniAccess sap_conf(file_name); const std::string section_name = "SOLAR_ARRAY_PANEL_" + std::to_string(static_cast(sap_id)); @@ -152,7 +152,7 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) { - IniAccess sap_conf(file_name); + setting_file_reader::IniAccess sap_conf(file_name); const std::string section_name = "SOLAR_ARRAY_PANEL_" + std::to_string(static_cast(sap_id)); diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 9501f82bb..735ec87f0 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -79,8 +79,8 @@ std::string SimpleThruster::GetLogHeader() const { std::string str_tmp = ""; std::string head = "simple_thruster" + std::to_string(component_id_) + "_"; - str_tmp += WriteVector(head + "output_thrust", "b", "N", 3); - str_tmp += WriteVector(head + "output_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector(head + "output_thrust", "b", "N", 3); + str_tmp += logger::WriteVector(head + "output_torque", "b", "Nm", 3); str_tmp += WriteScalar(head + "output_thrust_norm", "N"); return str_tmp; } @@ -88,8 +88,8 @@ std::string SimpleThruster::GetLogHeader() const { std::string SimpleThruster::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(output_thrust_b_N_); - str_tmp += WriteVector(output_torque_b_Nm_); + str_tmp += logger::WriteVector(output_thrust_b_N_); + str_tmp += logger::WriteVector(output_torque_b_Nm_); str_tmp += WriteScalar(output_thrust_b_N_.CalcNorm()); return str_tmp; @@ -124,7 +124,7 @@ s2e::math::Vector<3> SimpleThruster::CalcThrustDirection() { SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics) { - IniAccess thruster_conf(file_name); + setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); @@ -152,7 +152,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, const Structure* structure, const Dynamics* dynamics) { - IniAccess thruster_conf(file_name); + setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 87884ba9b..a15817e36 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -80,8 +80,8 @@ void AirDrag::CalcCnCt(const Vector<3>& velocity_b_m_s) { std::string AirDrag::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("air_drag_torque", "b", "Nm", 3); - str_tmp += WriteVector("air_drag_force", "b", "N", 3); + str_tmp += logger::WriteVector("air_drag_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector("air_drag_force", "b", "N", 3); return str_tmp; } @@ -89,14 +89,14 @@ std::string AirDrag::GetLogHeader() const { std::string AirDrag::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(torque_b_Nm_); - str_tmp += WriteVector(force_b_N_); + str_tmp += logger::WriteVector(torque_b_Nm_); + str_tmp += logger::WriteVector(force_b_N_); return str_tmp; } AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "AIR_DRAG"; const double wall_temperature_K = conf.ReadDouble(section, "wall_temperature_degC") + 273.0; diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 1d153810c..1c93d18a9 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -21,7 +21,7 @@ class Disturbance : public logger::ILoggable { * @fn Disturbance * @brief Constructor * @param [in] is_calculation_enabled: Calculation flag - * @param [in] is_attitude_dependent: Attitude dependent flag + * @param [in] is_attitude_dependent: dynamics::attitude::Attitude dependent flag */ Disturbance(const bool is_calculation_enabled = true, const bool is_attitude_dependent = true) : is_calculation_enabled_(is_calculation_enabled), is_attitude_dependent_(is_attitude_dependent) { diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index 84380248b..e274cbe96 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -59,7 +59,7 @@ void Disturbances::LogSetup(Logger& logger) { void Disturbances::InitializeInstances(const SimulationConfiguration* simulation_configuration, const int spacecraft_id, const Structure* structure, const GlobalEnvironment* global_environment) { - IniAccess ini_access = IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); + setting_file_reader::IniAccess ini_access = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); initialize_file_name_ = ini_access.ReadString("SETTING_FILES", "disturbance_file"); GravityGradient* gg_dist = new GravityGradient( diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 16123cf5d..f28f6a591 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -94,10 +94,10 @@ std::string Geopotential::GetLogHeader() const { std::string str_tmp = ""; #ifdef DEBUG_GEOPOTENTIAL - str_tmp += WriteVector("geopotential_calculation_position_", "ecef", "m", 3); + str_tmp += logger::WriteVector("geopotential_calculation_position_", "ecef", "m", 3); str_tmp += WriteScalar("geopotential_calculation_time", "ms"); #endif - str_tmp += WriteVector("geopotential_acceleration", "ecef", "m/s2", 3); + str_tmp += logger::WriteVector("geopotential_acceleration", "ecef", "m/s2", 3); return str_tmp; } @@ -106,17 +106,17 @@ std::string Geopotential::GetLogValue() const { std::string str_tmp = ""; #ifdef DEBUG_GEOPOTENTIAL - str_tmp += WriteVector(debug_pos_ecef_m_, 15); + str_tmp += logger::WriteVector(debug_pos_ecef_m_, 15); str_tmp += WriteScalar(time_ms_); #endif - str_tmp += WriteVector(acceleration_ecef_m_s2_, 15); + str_tmp += logger::WriteVector(acceleration_ecef_m_s2_, 15); return str_tmp; } Geopotential InitGeopotential(const std::string initialize_file_path) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char *section = "GEOPOTENTIAL"; const int degree = conf.ReadInt(section, "degree"); diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index b04b2c8d7..8ac14cdfa 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -38,7 +38,7 @@ s2e::math::Vector<3> GravityGradient::CalcTorque_b_Nm(const s2e::math::Vector<3> std::string GravityGradient::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("gravity_gradient_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector("gravity_gradient_torque", "b", "Nm", 3); return str_tmp; } @@ -46,13 +46,13 @@ std::string GravityGradient::GetLogHeader() const { std::string GravityGradient::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(torque_b_Nm_); + str_tmp += logger::WriteVector(torque_b_Nm_); return str_tmp; } GravityGradient InitGravityGradient(const std::string initialize_file_path) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "GRAVITY_GRADIENT"; const bool is_calc_enable = conf.ReadEnable(section, INI_CALC_LABEL); @@ -63,7 +63,7 @@ GravityGradient InitGravityGradient(const std::string initialize_file_path) { } GravityGradient InitGravityGradient(const std::string initialize_file_path, const double gravity_constant_m3_s2) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "GRAVITY_GRADIENT"; const bool is_calc_enable = conf.ReadEnable(section, INI_CALC_LABEL); diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 747a0e065..7f7e63191 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -117,10 +117,10 @@ std::string LunarGravityField::GetLogHeader() const { std::string str_tmp = ""; #ifdef DEBUG_LUNAR_GRAVITY_FIELD - str_tmp += WriteVector("lunar_gravity_calculation_position", "mcmf", "m", 3); + str_tmp += logger::WriteVector("lunar_gravity_calculation_position", "mcmf", "m", 3); str_tmp += WriteScalar("lunar_gravity_calculation_time", "ms"); #endif - str_tmp += WriteVector("lunar_gravity_acceleration", "mcmf", "m/s2", 3); + str_tmp += logger::WriteVector("lunar_gravity_acceleration", "mcmf", "m/s2", 3); return str_tmp; } @@ -129,17 +129,17 @@ std::string LunarGravityField::GetLogValue() const { std::string str_tmp = ""; #ifdef DEBUG_LUNAR_GRAVITY_FIELD - str_tmp += WriteVector(debug_pos_mcmf_m_, 15); + str_tmp += logger::WriteVector(debug_pos_mcmf_m_, 15); str_tmp += WriteScalar(time_ms_); #endif - str_tmp += WriteVector(acceleration_mcmf_m_s2_, 15); + str_tmp += logger::WriteVector(acceleration_mcmf_m_s2_, 15); return str_tmp; } LunarGravityField InitLunarGravityField(const std::string initialize_file_path) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char *section = "LUNAR_GRAVITY_FIELD"; const int degree = conf.ReadInt(section, "degree"); diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index fec275450..3368dc8df 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -49,8 +49,8 @@ void MagneticDisturbance::CalcRMM() { std::string MagneticDisturbance::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("spacecraft_magnetic_moment", "b", "Am2", 3); - str_tmp += WriteVector("magnetic_disturbance_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector("spacecraft_magnetic_moment", "b", "Am2", 3); + str_tmp += logger::WriteVector("magnetic_disturbance_torque", "b", "Nm", 3); return str_tmp; } @@ -58,14 +58,14 @@ std::string MagneticDisturbance::GetLogHeader() const { std::string MagneticDisturbance::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(rmm_b_Am2_); - str_tmp += WriteVector(torque_b_Nm_); + str_tmp += logger::WriteVector(rmm_b_Am2_); + str_tmp += logger::WriteVector(torque_b_Nm_); return str_tmp; } MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const ResidualMagneticMoment& rmm_params) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "MAGNETIC_DISTURBANCE"; const bool is_calc_enable = conf.ReadEnable(section, INI_CALC_LABEL); diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index 490938542..b28784672 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -39,8 +39,8 @@ void SolarRadiationPressureDisturbance::CalcCoefficients(const s2e::math::Vector std::string SolarRadiationPressureDisturbance::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("srp_torque", "b", "Nm", 3); - str_tmp += WriteVector("srp_force", "b", "N", 3); + str_tmp += logger::WriteVector("srp_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector("srp_force", "b", "N", 3); return str_tmp; } @@ -48,15 +48,15 @@ std::string SolarRadiationPressureDisturbance::GetLogHeader() const { std::string SolarRadiationPressureDisturbance::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(torque_b_Nm_); - str_tmp += WriteVector(force_b_N_); + str_tmp += logger::WriteVector(torque_b_Nm_); + str_tmp += logger::WriteVector(force_b_N_); return str_tmp; } SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "SOLAR_RADIATION_PRESSURE_DISTURBANCE"; const bool is_calc_enable = conf.ReadEnable(section, INI_CALC_LABEL); diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index eebb2ec05..476fe673e 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -46,21 +46,21 @@ s2e::math::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const s2e::math:: std::string ThirdBodyGravity::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("third_body_acceleration", "i", "m/s2", 3); + str_tmp += logger::WriteVector("third_body_acceleration", "i", "m/s2", 3); return str_tmp; } std::string ThirdBodyGravity::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(acceleration_i_m_s2_); + str_tmp += logger::WriteVector(acceleration_i_m_s2_); return str_tmp; } ThirdBodyGravity InitThirdBodyGravity(const std::string initialize_file_path, const std::string ini_path_celes) { // Generate a list of bodies to be calculated in "CelesInfo" - auto conf_celes = IniAccess(ini_path_celes); + auto conf_celes = setting_file_reader::IniAccess(ini_path_celes); const char* section_celes = "CELESTIAL_INFORMATION"; const int num_of_selected_body = conf_celes.ReadInt(section_celes, "number_of_selected_body"); const std::string center_object = conf_celes.ReadString(section_celes, "center_object"); @@ -72,7 +72,7 @@ ThirdBodyGravity InitThirdBodyGravity(const std::string initialize_file_path, co } // Generate a list of bodies to be calculated in "ThirdBodyGravity" from the list of bodies of "CelesInfo" - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "THIRD_BODY_GRAVITY"; const int num_of_third_body = conf.ReadInt(section, "number_of_third_body"); diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 4777184de..2ad9c0f20 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -24,9 +24,9 @@ Attitude::Attitude(const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const std std::string Attitude::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("spacecraft_angular_velocity", "b", "rad/s", 3); + str_tmp += logger::WriteVector("spacecraft_angular_velocity", "b", "rad/s", 3); str_tmp += WriteQuaternion("spacecraft_quaternion", "i2b"); - str_tmp += WriteVector("spacecraft_torque", "b", "Nm", 3); + str_tmp += logger::WriteVector("spacecraft_torque", "b", "Nm", 3); str_tmp += WriteScalar("spacecraft_total_angular_momentum", "Nms"); str_tmp += WriteScalar("spacecraft_kinematic_energy", "J"); @@ -36,9 +36,9 @@ std::string Attitude::GetLogHeader() const { std::string Attitude::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(angular_velocity_b_rad_s_); + str_tmp += logger::WriteVector(angular_velocity_b_rad_s_); str_tmp += WriteQuaternion(quaternion_i2b_); - str_tmp += WriteVector(torque_b_Nm_); + str_tmp += logger::WriteVector(torque_b_Nm_); str_tmp += WriteScalar(angular_momentum_total_Nms_); str_tmp += WriteScalar(kinetic_energy_J_); diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 2b2ff73e3..711c623f4 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -46,8 +46,8 @@ AttitudeWithCantileverVibration::~AttitudeWithCantileverVibration() {} std::string AttitudeWithCantileverVibration::GetLogHeader() const { std::string str_tmp = Attitude::GetLogHeader(); - str_tmp += WriteVector("euler_angular_cantilever", "c", "rad", 3); - str_tmp += WriteVector("angular_velocity_cantilever", "c", "rad/s", 3); + str_tmp += logger::WriteVector("euler_angular_cantilever", "c", "rad", 3); + str_tmp += logger::WriteVector("angular_velocity_cantilever", "c", "rad/s", 3); return str_tmp; } @@ -55,8 +55,8 @@ std::string AttitudeWithCantileverVibration::GetLogHeader() const { std::string AttitudeWithCantileverVibration::GetLogValue() const { std::string str_tmp = Attitude::GetLogValue(); - str_tmp += WriteVector(euler_angular_cantilever_rad_); - str_tmp += WriteVector(angular_velocity_cantilever_rad_s_); + str_tmp += logger::WriteVector(euler_angular_cantilever_rad_); + str_tmp += logger::WriteVector(angular_velocity_cantilever_rad_s_); return str_tmp; } diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 02e19ad09..875bb92f2 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -10,7 +10,7 @@ namespace s2e::dynamics::attitude { Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); Attitude* attitude; @@ -23,7 +23,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel s2e::math::Vector<3> torque_b; if (initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) - IniAccess ini_file_ca(file_name); + setting_file_reader::IniAccess ini_file_ca(file_name); const char* section_ca_ = "CONTROLLED_ATTITUDE"; const std::string main_mode_in = ini_file.ReadString(section_ca_, "main_mode"); const std::string sub_mode_in = ini_file.ReadString(section_ca_, "sub_mode"); @@ -53,7 +53,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel attitude = new AttitudeRk4(omega_b, quaternion_i2b, inertia_tensor_kgm2, torque_b, step_width_s, mc_name); } else if (propagate_mode == "CANTILEVER_VIBRATION") { std::string ini_structure_name = ini_file.ReadString("SETTING_FILES", "structure_file"); - IniAccess ini_structure(ini_structure_name); + setting_file_reader::IniAccess ini_structure(ini_structure_name); const char* section_cantilever = "CANTILEVER_PARAMETERS"; s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; @@ -72,7 +72,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel intrinsic_angular_velocity_cantilever_rad_s, torque_b, step_width_s, mc_name); } else if (propagate_mode == "CONTROLLED") { // Controlled attitude - IniAccess ini_file_ca(file_name); + setting_file_reader::IniAccess ini_file_ca(file_name); const char* section_ca_ = "CONTROLLED_ATTITUDE"; const std::string main_mode_in = ini_file.ReadString(section_ca_, "main_mode"); const std::string sub_mode_in = ini_file.ReadString(section_ca_, "sub_mode"); diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 5b8329708..8aad74327 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -16,7 +16,7 @@ namespace s2e::dynamics::orbit { Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, double gravity_constant_m3_s2, std::string section, RelativeInformation* relative_information) { - auto conf = IniAccess(initialize_file); + auto conf = setting_file_reader::IniAccess(initialize_file); const char* section_ = section.c_str(); Orbit* orbit; @@ -118,7 +118,7 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string } s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { - auto conf = IniAccess(initialize_file); + auto conf = setting_file_reader::IniAccess(initialize_file); const char* section_ = section.c_str(); s2e::math::Vector<3> position_i_m; s2e::math::Vector<3> velocity_i_m_s; diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index c2b94493d..f838b7c76 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -69,11 +69,11 @@ OrbitInitializeMode SetOrbitInitializeMode(const std::string initialize_mode) { std::string Orbit::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("spacecraft_position", "i", "m", 3); - str_tmp += WriteVector("spacecraft_position", "ecef", "m", 3); - str_tmp += WriteVector("spacecraft_velocity", "i", "m/s", 3); - str_tmp += WriteVector("spacecraft_velocity", "b", "m/s", 3); - str_tmp += WriteVector("spacecraft_acceleration", "i", "m/s2", 3); + str_tmp += logger::WriteVector("spacecraft_position", "i", "m", 3); + str_tmp += logger::WriteVector("spacecraft_position", "ecef", "m", 3); + str_tmp += logger::WriteVector("spacecraft_velocity", "i", "m/s", 3); + str_tmp += logger::WriteVector("spacecraft_velocity", "b", "m/s", 3); + str_tmp += logger::WriteVector("spacecraft_acceleration", "i", "m/s2", 3); str_tmp += WriteScalar("spacecraft_latitude", "rad"); str_tmp += WriteScalar("spacecraft_longitude", "rad"); str_tmp += WriteScalar("spacecraft_altitude", "m"); @@ -84,11 +84,11 @@ std::string Orbit::GetLogHeader() const { std::string Orbit::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(spacecraft_position_i_m_, 16); - str_tmp += WriteVector(spacecraft_position_ecef_m_, 16); - str_tmp += WriteVector(spacecraft_velocity_i_m_s_, 10); - str_tmp += WriteVector(spacecraft_velocity_b_m_s_, 10); - str_tmp += WriteVector(spacecraft_acceleration_i_m_s2_, 10); + str_tmp += logger::WriteVector(spacecraft_position_i_m_, 16); + str_tmp += logger::WriteVector(spacecraft_position_ecef_m_, 16); + str_tmp += logger::WriteVector(spacecraft_velocity_i_m_s_, 10); + str_tmp += logger::WriteVector(spacecraft_velocity_b_m_s_, 10); + str_tmp += logger::WriteVector(spacecraft_acceleration_i_m_s2_, 10); str_tmp += WriteScalar(spacecraft_geodetic_position_.GetLatitude_rad()); str_tmp += WriteScalar(spacecraft_geodetic_position_.GetLongitude_rad()); str_tmp += WriteScalar(spacecraft_geodetic_position_.GetAltitude_m()); diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index aec2acc7a..1843b28cc 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -293,7 +293,7 @@ using std::vector; Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment, const EarthAlbedo* earth_albedo) { - auto mainIni = IniAccess(file_name); + auto mainIni = setting_file_reader::IniAccess(file_name); vector node_list; vector heater_list; @@ -331,7 +331,7 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s // Read Heatloads from CSV File string filepath_heatload = file_path + "heatload.csv"; - IniAccess conf_heatload(filepath_heatload); + setting_file_reader::IniAccess conf_heatload(filepath_heatload); conf_heatload.ReadCsvString(heatload_str_list, 100); /*since we don't know the number of node_list yet, set node_num=100 temporary. Recall that Nodes_num are given to this function only to reserve memory*/ @@ -344,7 +344,7 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s // Read Node Properties from CSV File string filepath_node = file_path + "node.csv"; - IniAccess conf_node(filepath_node); + setting_file_reader::IniAccess conf_node(filepath_node); conf_node.ReadCsvString(node_str_list, 100); /*since we don't know the number of node_list yet, set node_num=100 temporary. Recall that Nodes_num are given to this function only to reserve memory*/ @@ -359,7 +359,7 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s // Read Heater Properties from CSV File string filepath_heater = file_path + "heaters.csv"; - IniAccess conf_heater(filepath_heater); + setting_file_reader::IniAccess conf_heater(filepath_heater); conf_heater.ReadCsvString(heater_str_list, 100); /*since we don't know the number of heater_list yet, set heater_num=100 temporary. Recall that heater_num are given to this function only to reserve memory*/ @@ -375,8 +375,8 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s // Read Cij,Rij data from CSV File string filepath_cij = file_path + "cij.csv"; string filepath_rij = file_path + "rij.csv"; - IniAccess conf_cij(filepath_cij); - IniAccess conf_rij(filepath_rij); + setting_file_reader::IniAccess conf_cij(filepath_cij); + setting_file_reader::IniAccess conf_rij(filepath_rij); conf_cij.ReadCsvDoubleWithHeader(conductance_matrix, node_num, 1, 1); conf_rij.ReadCsvDoubleWithHeader(radiation_matrix, node_num, 1, 1); diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index 4eb09cf05..bcf9bf365 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -165,8 +165,8 @@ std::string CelestialInformation::GetLogHeader() const { std::string body_pos = name + "_position"; std::string body_vel = name + "_velocity"; - str_tmp += WriteVector(body_pos, "i", "m", 3); - str_tmp += WriteVector(body_vel, "i", "m/s", 3); + str_tmp += logger::WriteVector(body_pos, "i", "m", 3); + str_tmp += logger::WriteVector(body_vel, "i", "m/s", 3); } return str_tmp; } @@ -201,7 +201,7 @@ void CelestialInformation::GetPlanetOrbit(const char* planet_name, const double } CelestialInformation* InitCelestialInformation(std::string file_name) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); const char* section = "CELESTIAL_INFORMATION"; const char* furnsh_section = "CSPICE_KERNELS"; diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index b97b78da7..334c1d4ae 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -20,7 +20,7 @@ GlobalEnvironment::~GlobalEnvironment() { void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration) { // Get ini file path - IniAccess iniAccess = IniAccess(simulation_configuration->initialize_base_file_name_); + setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(simulation_configuration->initialize_base_file_name_); std::string simulation_time_ini_path = simulation_configuration->initialize_base_file_name_; // Initialize diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index d16fefc26..ee801c9b6 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -158,7 +158,7 @@ std::string GnssSatellites::GetLogHeader() const { // TODO: Add log output for other navigation systems for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector("GPS" + std::to_string(gps_index) + "_position", "ecef", "m", 3); + str_tmp += logger::WriteVector("GPS" + std::to_string(gps_index) + "_position", "ecef", "m", 3); str_tmp += WriteScalar("GPS" + std::to_string(gps_index) + "_clock_offset", "s"); } @@ -169,7 +169,7 @@ std::string GnssSatellites::GetLogValue() const { std::string str_tmp = ""; for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { - str_tmp += WriteVector(GetPosition_ecef_m(gps_index), 16); + str_tmp += logger::WriteVector(GetPosition_ecef_m(gps_index), 16); str_tmp += WriteScalar(GetClock_s(gps_index)); } @@ -177,7 +177,7 @@ std::string GnssSatellites::GetLogValue() const { } GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotation& earth_rotation, const SimulationTime& simulation_time) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); char section[] = "GNSS_SATELLITES"; const bool is_calc_enable = ini_file.ReadEnable(section, INI_CALC_LABEL); diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 72ad7dfdf..a4fb9d5f4 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -87,7 +87,7 @@ std::string HipparcosCatalogue::GetLogValue() const { } HipparcosCatalogue* InitHipparcosCatalogue(std::string file_name) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); const char* section = "HIPPARCOS_CATALOGUE"; std::string catalogue_path = ini_file.ReadString(section, "catalogue_file_path"); diff --git a/src/environment/global/simulation_time.cpp b/src/environment/global/simulation_time.cpp index e44d5a416..d1c74d495 100644 --- a/src/environment/global/simulation_time.cpp +++ b/src/environment/global/simulation_time.cpp @@ -247,7 +247,7 @@ void SimulationTime::ConvJDtoCalendarDay(const double JD) { } SimulationTime* InitSimulationTime(std::string file_name) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); const char* section = "TIME"; // Parameters about entire simulation diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index cfada183c..0b0c9cccc 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -103,7 +103,7 @@ std::string Atmosphere::GetLogHeader() const { Atmosphere InitAtmosphere(const std::string initialize_file_path, const LocalCelestialInformation* local_celestial_information, const SimulationTime* simulation_time) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "ATMOSPHERE"; double f107_threshold = 50.0; double f107_default = 150.0; diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index fb3672a8e..46831b8e5 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -50,7 +50,7 @@ void EarthAlbedo::CalcEarthAlbedo(const LocalCelestialInformation* local_celesti EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "EARTH_ALBEDO"; EarthAlbedo earth_albedo(local_celestial_information, srp_environment); diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 008f3277c..0b5eab1b9 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -57,8 +57,8 @@ void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { std::string GeomagneticField::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteVector("geomagnetic_field_at_spacecraft_position", "i", "nT", 3); - str_tmp += WriteVector("geomagnetic_field_at_spacecraft_position", "b", "nT", 3); + str_tmp += logger::WriteVector("geomagnetic_field_at_spacecraft_position", "i", "nT", 3); + str_tmp += logger::WriteVector("geomagnetic_field_at_spacecraft_position", "b", "nT", 3); return str_tmp; } @@ -66,14 +66,14 @@ std::string GeomagneticField::GetLogHeader() const { std::string GeomagneticField::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteVector(magnetic_field_i_nT_); - str_tmp += WriteVector(magnetic_field_b_nT_); + str_tmp += logger::WriteVector(magnetic_field_i_nT_); + str_tmp += logger::WriteVector(magnetic_field_b_nT_); return str_tmp; } GeomagneticField InitGeomagneticField(std::string initialize_file_path) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "MAGNETIC_FIELD_ENVIRONMENT"; std::string fname = conf.ReadString(section, "coefficient_file"); diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index fde483b84..8699e21f2 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -181,8 +181,8 @@ std::string LocalCelestialInformation::GetLogHeader() const { std::string body_pos = name + "_position_from_spacecraft"; std::string body_vel = name + "_velocity_from_spacecraft"; - str_tmp += WriteVector(body_pos, "b", "m", 3); - str_tmp += WriteVector(body_vel, "b", "m/s", 3); + str_tmp += logger::WriteVector(body_pos, "b", "m", 3); + str_tmp += logger::WriteVector(body_vel, "b", "m/s", 3); } return str_tmp; } diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index d12f5e882..b8738b87a 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -26,7 +26,7 @@ LocalEnvironment::~LocalEnvironment() { void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { // Read file name - IniAccess iniAccess = IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); + setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); std::string ini_fname = iniAccess.ReadString("SETTING_FILES", "local_environment_file"); // Save ini file @@ -47,7 +47,7 @@ void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_conf } // Log setting for Local celestial information - IniAccess conf = IniAccess(ini_fname); + setting_file_reader::IniAccess conf = setting_file_reader::IniAccess(ini_fname); celestial_information_->is_log_enabled_ = conf.ReadEnable("LOCAL_CELESTIAL_INFORMATION", "logging"); } diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index 1ab74ebdc..ff60f94be 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -106,7 +106,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow SolarRadiationPressureEnvironment InitSolarRadiationPressureEnvironment(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information) { - auto conf = IniAccess(initialize_file_path); + auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "SOLAR_RADIATION_PRESSURE_ENVIRONMENT"; SolarRadiationPressureEnvironment srp_env(local_celestial_information); diff --git a/src/logger/initialize_log.cpp b/src/logger/initialize_log.cpp index 3dec812af..30c1036bb 100644 --- a/src/logger/initialize_log.cpp +++ b/src/logger/initialize_log.cpp @@ -10,7 +10,7 @@ namespace s2e::logger { Logger* InitLog(std::string file_name) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); std::string log_file_path = ini_file.ReadString("SIMULATION_SETTINGS", "log_file_save_directory"); bool log_ini = ini_file.ReadEnable("SIMULATION_SETTINGS", "save_initialize_files"); @@ -21,7 +21,7 @@ Logger* InitLog(std::string file_name) { } Logger* InitMonteCarloLog(std::string file_name, bool enable) { - IniAccess ini_file(file_name); + setting_file_reader::IniAccess ini_file(file_name); std::string log_file_path = ini_file.ReadString("SIMULATION_SETTINGS", "log_file_save_directory"); bool log_ini = ini_file.ReadEnable("SIMULATION_SETTINGS", "save_initialize_files"); From 679e084041063d09eb794375044585f8e277005b Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 28 Sep 2024 20:46:53 +0900 Subject: [PATCH 436/456] Add logger namespace --- src/components/ideal/attitude_observer.cpp | 4 ++-- src/components/real/aocs/star_sensor.cpp | 4 ++-- src/dynamics/attitude/attitude.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 9d2199056..dad39b3e3 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -36,7 +36,7 @@ std::string AttitudeObserver::GetLogHeader() const { std::string str_tmp = ""; std::string head = "attitude_observer_"; - str_tmp += WriteQuaternion(head + "quaternion", "i2b"); + str_tmp += logger::WriteQuaternion(head + "quaternion", "i2b"); return str_tmp; } @@ -44,7 +44,7 @@ std::string AttitudeObserver::GetLogHeader() const { std::string AttitudeObserver::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteQuaternion(observed_quaternion_i2b_); + str_tmp += logger::WriteQuaternion(observed_quaternion_i2b_); return str_tmp; } diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 324288777..e84f8edc5 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -185,7 +185,7 @@ std::string StarSensor::GetLogHeader() const { const std::string sensor_id = std::to_string(static_cast(component_id_)); std::string sensor_name = "stt" + sensor_id + "_"; - str_tmp += WriteQuaternion(sensor_name + "measured_quaternion", "i2c"); + str_tmp += logger::WriteQuaternion(sensor_name + "measured_quaternion", "i2c"); str_tmp += WriteScalar(sensor_name + "error_flag"); return str_tmp; @@ -194,7 +194,7 @@ std::string StarSensor::GetLogHeader() const { std::string StarSensor::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteQuaternion(measured_quaternion_i2c_); + str_tmp += logger::WriteQuaternion(measured_quaternion_i2c_); str_tmp += WriteScalar(double(error_flag_)); return str_tmp; diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 2ad9c0f20..55e172240 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -25,7 +25,7 @@ std::string Attitude::GetLogHeader() const { std::string str_tmp = ""; str_tmp += logger::WriteVector("spacecraft_angular_velocity", "b", "rad/s", 3); - str_tmp += WriteQuaternion("spacecraft_quaternion", "i2b"); + str_tmp += logger::WriteQuaternion("spacecraft_quaternion", "i2b"); str_tmp += logger::WriteVector("spacecraft_torque", "b", "Nm", 3); str_tmp += WriteScalar("spacecraft_total_angular_momentum", "Nms"); str_tmp += WriteScalar("spacecraft_kinematic_energy", "J"); @@ -37,7 +37,7 @@ std::string Attitude::GetLogValue() const { std::string str_tmp = ""; str_tmp += logger::WriteVector(angular_velocity_b_rad_s_); - str_tmp += WriteQuaternion(quaternion_i2b_); + str_tmp += logger::WriteQuaternion(quaternion_i2b_); str_tmp += logger::WriteVector(torque_b_Nm_); str_tmp += WriteScalar(angular_momentum_total_Nms_); str_tmp += WriteScalar(kinetic_energy_J_); From ebd0f75ee9b84a1421b8aafb62587534fbf23d76 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 28 Sep 2024 21:20:38 +0900 Subject: [PATCH 437/456] Add dynamics namespace --- src/components/ideal/force_generator.cpp | 4 ++-- src/components/ideal/force_generator.hpp | 4 ++-- src/components/ideal/torque_generator.cpp | 4 ++-- src/components/ideal/torque_generator.hpp | 6 +++--- src/components/real/aocs/gnss_receiver.cpp | 8 ++++---- src/components/real/aocs/gnss_receiver.hpp | 10 +++++----- src/components/real/aocs/gyro_sensor.cpp | 8 ++++---- src/components/real/aocs/gyro_sensor.hpp | 12 ++++++------ src/components/real/aocs/star_sensor.cpp | 8 ++++---- src/components/real/aocs/star_sensor.hpp | 10 +++++----- .../real/communication/ground_station_calculator.cpp | 6 +++--- .../real/communication/ground_station_calculator.hpp | 6 +++--- src/components/real/propulsion/simple_thruster.cpp | 8 ++++---- src/components/real/propulsion/simple_thruster.hpp | 10 +++++----- src/disturbances/air_drag.cpp | 2 +- src/disturbances/air_drag.hpp | 4 ++-- src/disturbances/disturbance.hpp | 4 ++-- src/disturbances/disturbances.cpp | 2 +- src/disturbances/disturbances.hpp | 4 ++-- src/disturbances/geopotential.cpp | 2 +- src/disturbances/geopotential.hpp | 4 ++-- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/gravity_gradient.hpp | 4 ++-- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/lunar_gravity_field.hpp | 4 ++-- src/disturbances/magnetic_disturbance.cpp | 2 +- src/disturbances/magnetic_disturbance.hpp | 4 ++-- .../solar_radiation_pressure_disturbance.cpp | 2 +- .../solar_radiation_pressure_disturbance.hpp | 4 ++-- src/disturbances/third_body_gravity.cpp | 2 +- src/disturbances/third_body_gravity.hpp | 4 ++-- src/dynamics/dynamics.cpp | 12 ++++++------ src/environment/local/local_environment.cpp | 2 +- src/environment/local/local_environment.hpp | 4 ++-- .../multiple_spacecraft/relative_information.cpp | 2 +- .../multiple_spacecraft/relative_information.hpp | 6 +++--- src/simulation/spacecraft/spacecraft.cpp | 2 +- src/simulation/spacecraft/spacecraft.hpp | 4 ++-- .../spacecraft/sample_components.cpp | 2 +- .../spacecraft/sample_components.hpp | 4 ++-- 40 files changed, 97 insertions(+), 97 deletions(-) diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 86b17da21..d1770ac79 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -12,7 +12,7 @@ namespace s2e::components { // Constructor ForceGenerator::ForceGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, - const double direction_error_standard_deviation_rad, const Dynamics* dynamics) + const double direction_error_standard_deviation_rad, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), magnitude_noise_(0.0, magnitude_error_standard_deviation_N), direction_error_standard_deviation_rad_(direction_error_standard_deviation_rad), @@ -107,7 +107,7 @@ s2e::math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(s2e::math return error_quaternion; } -ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { +ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics) { // General setting_file_reader::IniAccess ini_file(file_name); diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 03c4bd09b..0881e7773 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -114,7 +114,7 @@ class ForceGenerator : public Component, public logger::ILoggable { */ s2e::math::Quaternion GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad); - const Dynamics* dynamics_; //!< Spacecraft dynamics information + const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; /** @@ -124,7 +124,7 @@ class ForceGenerator : public Component, public logger::ILoggable { * @param [in] file_name: Path to initialize file * @param [in] dynamics: Dynamics information */ -ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); +ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index 74a478a29..93b312270 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -12,7 +12,7 @@ namespace s2e::components { // Constructor TorqueGenerator::TorqueGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, - const double direction_error_standard_deviation_rad, const Dynamics* dynamics) + const double direction_error_standard_deviation_rad, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), magnitude_noise_(0.0, magnitude_error_standard_deviation_Nm), direction_error_standard_deviation_rad_(direction_error_standard_deviation_rad), @@ -80,7 +80,7 @@ s2e::math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(s2e::mat return error_quaternion; } -TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics) { +TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics) { // General setting_file_reader::IniAccess ini_file(file_name); diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 357f7b22c..7b5144729 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -30,7 +30,7 @@ class TorqueGenerator : public Component, public logger::ILoggable { * @param [in] dynamics: Dynamics information */ TorqueGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, - const double direction_error_standard_deviation_rad, const Dynamics* dynamics); + const double direction_error_standard_deviation_rad, const dynamics::Dynamics* dynamics); /** * @fn ~TorqueGenerator * @brief Destructor @@ -92,7 +92,7 @@ class TorqueGenerator : public Component, public logger::ILoggable { */ s2e::math::Quaternion GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad); - const Dynamics* dynamics_; //!< Spacecraft dynamics information + const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; /** @@ -102,7 +102,7 @@ class TorqueGenerator : public Component, public logger::ILoggable { * @param [in] file_name: Path to initialize file * @param [in] dynamics: Dynamics information */ -TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const Dynamics* dynamics); +TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index f68873453..00ba3fd58 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -16,7 +16,7 @@ namespace s2e::components { GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, - const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), @@ -36,7 +36,7 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, - const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, + const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), @@ -291,7 +291,7 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat return gnss_receiver_param; } -GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); @@ -302,7 +302,7 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, cons } GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { + const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); // PowerPort diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 3714cc772..e96f05f0f 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -63,7 +63,7 @@ class GnssReceiver : public Component, public logger::ILoggable { GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver * @brief Constructor with power port @@ -83,7 +83,7 @@ class GnssReceiver : public Component, public logger::ILoggable { GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, - const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component @@ -156,7 +156,7 @@ class GnssReceiver : public Component, public logger::ILoggable { std::vector gnss_information_list_; //!< Information List of visible GNSS satellites // References - const Dynamics* dynamics_; //!< Dynamics of spacecraft + const dynamics::Dynamics* dynamics_; //!< Dynamics of spacecraft const GnssSatellites* gnss_satellites_; //!< Information of GNSS satellites const SimulationTime* simulation_time_; //!< Simulation time @@ -226,7 +226,7 @@ AntennaModel SetAntennaModel(const std::string antenna_model); * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const Dynamics* dynamics, +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn InitGnssReceiver @@ -240,7 +240,7 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, cons * @param [in] simulation_time: Simulation time information */ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, - const Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); } // namespace s2e::components diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index fe16a6465..4776b6701 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -10,11 +10,11 @@ namespace s2e::components { GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) + const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics) + const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -48,7 +48,7 @@ std::string GyroSensor::GetLogValue() const { } GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, - const Dynamics* dynamics) { + const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess gyro_conf(file_name); const char* sensor_name = "GYRO_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); @@ -69,7 +69,7 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sens } GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - double component_step_time_s, const Dynamics* dynamics) { + double component_step_time_s, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess gyro_conf(file_name); const char* sensor_name = "GYRO_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index c99759722..f4baaad1e 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -34,7 +34,7 @@ class GyroSensor : public Component, public Sensor, public logge * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics); + const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); /** * @fn GyroSensor * @brief Constructor with power port @@ -47,7 +47,7 @@ class GyroSensor : public Component, public Sensor, public logge * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const Dynamics* dynamics); + const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); /** * @fn ~GyroSensor * @brief Destructor @@ -85,7 +85,7 @@ class GyroSensor : public Component, public Sensor, public logge unsigned int sensor_id_ = 0; //!< Sensor ID s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame - const Dynamics* dynamics_; //!< Dynamics information + const dynamics::Dynamics* dynamics_; //!< Dynamics information }; /** @@ -98,7 +98,7 @@ class GyroSensor : public Component, public Sensor, public logge * @param [in] dynamics: Dynamics information */ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, - const Dynamics* dynamics); + const dynamics::Dynamics* dynamics); /** * @fn InitGyroSensor * @brief Initialize functions for gyro sensor with power port @@ -107,10 +107,10 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sens * @param [in] sensor_id: Sensor ID * @param [in] component_step_time_s: Component step time [sec] * @param [in] file_name: Path to the initialize file - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - double component_step_time_s, const Dynamics* dynamics); + double component_step_time_s, const dynamics::Dynamics* dynamics); } //namespace s2e::components diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index e84f8edc5..c17302608 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -22,7 +22,7 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, - const double capture_rate_limit_rad_s, const Dynamics* dynamics, const LocalEnvironment* local_environment) + const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -46,7 +46,7 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, - const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const Dynamics* dynamics, + const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) : Component(prescaler, clock_generator, power_port), component_id_(component_id), @@ -216,7 +216,7 @@ void StarSensor::MainRoutine(const int time_count) { } StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, double component_step_time_s, - const Dynamics* dynamics, const LocalEnvironment* local_environment) { + const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) { setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); @@ -249,7 +249,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens } StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, double component_step_time_s, - const Dynamics* dynamics, const LocalEnvironment* local_environment) { + const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) { setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 5e3ab99b2..772e3bd53 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -49,7 +49,7 @@ class StarSensor : public Component, public logger::ILoggable { const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, - const Dynamics* dynamics, const LocalEnvironment* local_environment); + const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); /** * @fn StarSensor * @brief Constructor with power port @@ -74,7 +74,7 @@ class StarSensor : public Component, public logger::ILoggable { const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, - const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const Dynamics* dynamics, + const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); // Override functions for Component @@ -138,7 +138,7 @@ class StarSensor : public Component, public logger::ILoggable { double capture_rate_limit_rad_s_; //!< Angular rate limit to get correct attitude [rad/s] // Observed variables - const Dynamics* dynamics_; //!< Dynamics information + const dynamics::Dynamics* dynamics_; //!< Dynamics information const LocalEnvironment* local_environment_; //!< Local environment information // Internal functions @@ -219,7 +219,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] local_environment: Local environment information */ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, - const Dynamics* dynamics, const LocalEnvironment* local_environment); + const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); /** * @fn InitStarSensor * @brief Initialize functions for StarSensor with power port @@ -232,7 +232,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens * @param [in] local_environment: Local environment information */ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - double component_step_time_s, const Dynamics* dynamics, const LocalEnvironment* local_environment); + double component_step_time_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); } // namespace s2e::components diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 554919b92..a5deff17d 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -42,7 +42,7 @@ void GroundStationCalculator::Update(const Spacecraft& spacecraft, const Antenna } // Private functions -double GroundStationCalculator::CalcMaxBitrate(const Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, +double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dBHz = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); @@ -55,14 +55,14 @@ double GroundStationCalculator::CalcMaxBitrate(const Dynamics& dynamics, const A } } -double GroundStationCalculator::CalcReceiveMarginOnGs(const Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, +double GroundStationCalculator::CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dB = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); double cn0_requirement_dB = ebn0_dB_ + hardware_deterioration_dB_ + coding_gain_dB_ + 10.0 * log10(spacecraft_tx_antenna.GetBitrate_bps()); return cn0_dB - cn0_requirement_dB; } -double GroundStationCalculator::CalcCn0OnGs(const Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, +double GroundStationCalculator::CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { if (!spacecraft_tx_antenna.IsTransmitter() || !ground_station_rx_antenna.IsReceiver()) { // Check compatibility of transmitter and receiver diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index c78cc41a4..9d7551b4f 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -111,7 +111,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return Max bitrate [Mbps] */ - double CalcMaxBitrate(const Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, + double CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna); /** * @fn CalcReceiveMarginOnGs @@ -122,7 +122,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return Receive margin [dB] */ - double CalcReceiveMarginOnGs(const Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, + double CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna); /** @@ -134,7 +134,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return CN0 [dB] */ - double CalcCn0OnGs(const Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, + double CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, const Antenna& ground_station_rx_antenna); }; diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 735ec87f0..9b5b7c4b7 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -15,7 +15,7 @@ namespace s2e::components { SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, - const Dynamics* dynamics) + const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), component_id_(component_id), thruster_position_b_m_(thruster_position_b_m), @@ -30,7 +30,7 @@ SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, - const Dynamics* dynamics) + const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), component_id_(component_id), thruster_position_b_m_(thruster_position_b_m), @@ -123,7 +123,7 @@ s2e::math::Vector<3> SimpleThruster::CalcThrustDirection() { } SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, - const Dynamics* dynamics) { + const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); @@ -151,7 +151,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, } SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, - const Structure* structure, const Dynamics* dynamics) { + const Structure* structure, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index ba1eb0c07..6cb9ab066 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -39,7 +39,7 @@ class SimpleThruster : public Component, public logger::ILoggable { */ SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const Vector<3> thruster_position_b_m, const Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, - const double direction_standard_deviation_rad, const Structure* structure, const Dynamics* dynamics); + const double direction_standard_deviation_rad, const Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn SimpleThruster * @brief Constructor with power port @@ -58,7 +58,7 @@ class SimpleThruster : public Component, public logger::ILoggable { SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const Vector<3> thruster_position_b_m, const Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, - const Dynamics* dynamics); + const dynamics::Dynamics* dynamics); /** * @fn ~SimpleThruster * @brief Destructor @@ -154,7 +154,7 @@ class SimpleThruster : public Component, public logger::ILoggable { void Initialize(const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad); const Structure* structure_; //!< Spacecraft structure information - const Dynamics* dynamics_; //!< Spacecraft dynamics information + const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; /** @@ -167,7 +167,7 @@ class SimpleThruster : public Component, public logger::ILoggable { * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, - const Dynamics* dynamics); + const dynamics::Dynamics* dynamics); /** * @fn InitSimpleThruster * @brief Initialize function os SimpleThruster @@ -179,7 +179,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, - const Structure* structure, const Dynamics* dynamics); + const Structure* structure, const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index a15817e36..163a80cbd 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -25,7 +25,7 @@ AirDrag::AirDrag(const std::vector& surfaces, const s2e::math::Vector<3 cn_.assign(num, 0.0); } -void AirDrag::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { +void AirDrag::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { double air_density_kg_m3 = local_environment.GetAtmosphere().GetAirDensity_kg_m3(); s2e::math::Matrix<3, 3> dcm_ecef2eci = diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index be27dfc02..7f87e9bb7 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -39,9 +39,9 @@ class AirDrag : public SurfaceForce { * @fn Update * @brief Override Updates function of SimpleDisturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); + virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 1c93d18a9..de7d476b8 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -41,7 +41,7 @@ class Disturbance : public logger::ILoggable { * @fn UpdateIfEnabled * @brief Update calculated disturbance when the calculation flag is true */ - virtual inline void UpdateIfEnabled(const LocalEnvironment& local_environment, const Dynamics& dynamics) { + virtual inline void UpdateIfEnabled(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { if (is_calculation_enabled_) { Update(local_environment, dynamics); } else { @@ -56,7 +56,7 @@ class Disturbance : public logger::ILoggable { * @fn Update * @brief Pure virtual function to define the disturbance calculation */ - virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) = 0; + virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) = 0; /** * @fn GetTorque_b_Nm diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index e274cbe96..8d0c94037 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -30,7 +30,7 @@ Disturbances::~Disturbances() { } } -void Disturbances::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics, const SimulationTime* simulation_time) { +void Disturbances::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics, const SimulationTime* simulation_time) { InitializeForceAndTorque(); InitializeAcceleration(); diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index ab1d488fe..590dbc703 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -42,10 +42,10 @@ class Disturbances { * @fn Update * @brief Update all disturbance calculation * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information * @param [in] simulation_time: Simulation time */ - void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics, const SimulationTime* simulation_time); + void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics, const SimulationTime* simulation_time); /** * @fn LogSetup * @brief log setup for all disturbances diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index f28f6a591..40cbb3515 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -70,7 +70,7 @@ bool Geopotential::ReadCoefficientsEgm96(std::string file_name) { return true; } -void Geopotential::Update(const LocalEnvironment &local_environment, const Dynamics &dynamics) { +void Geopotential::Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { #ifdef DEBUG_GEOPOTENTIAL chrono::system_clock::time_point start, end; start = chrono::system_clock::now(); diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index fae80dedb..3bfcb83fa 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -46,9 +46,9 @@ class Geopotential : public Disturbance { * @fn Update * @brief Override Updates function of SimpleDisturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment &local_environment, const Dynamics &dynamics); + virtual void Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 8ac14cdfa..366c77778 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -19,7 +19,7 @@ GravityGradient::GravityGradient(const bool is_calculation_enabled) GravityGradient::GravityGradient(const double gravity_constant_m3_s2, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), gravity_constant_m3_s2_(gravity_constant_m3_s2) {} -void GravityGradient::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { +void GravityGradient::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { // TODO: use structure information to get inertia tensor CalcTorque_b_Nm(local_environment.GetCelestialInformation().GetCenterBodyPositionFromSpacecraft_b_m(), dynamics.GetAttitude().GetInertiaTensor_b_kgm2()); diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index 785b9e0fa..e4a578aff 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -41,9 +41,9 @@ class GravityGradient : public Disturbance { * @fn Update * @brief Override Updates function of SimpleDisturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); + virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 7f7e63191..d28ccfe76 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -88,7 +88,7 @@ bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { return true; } -void LunarGravityField::Update(const LocalEnvironment &local_environment, const Dynamics &dynamics) { +void LunarGravityField::Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { const CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); s2e::math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 03841dd15..552e0425b 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -48,9 +48,9 @@ class LunarGravityField : public Disturbance { * @fn Update * @brief Override Updates function of SimpleDisturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment &local_environment, const Dynamics &dynamics); + virtual void Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 3368dc8df..98c352c32 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -26,7 +26,7 @@ Vector<3> MagneticDisturbance::CalcTorque_b_Nm(const Vector<3>& magnetic_field_b return torque_b_Nm_; } -void MagneticDisturbance::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { +void MagneticDisturbance::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { UNUSED(dynamics); CalcTorque_b_Nm(local_environment.GetGeomagneticField().GetGeomagneticField_b_nT()); diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index ecba81538..79f795ecf 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -33,9 +33,9 @@ class MagneticDisturbance : public Disturbance { * @fn Update * @brief Override Updates function of SimpleDisturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); + virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index b28784672..18d66fd44 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -16,7 +16,7 @@ SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std:: const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} -void SolarRadiationPressureDisturbance::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { +void SolarRadiationPressureDisturbance::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { UNUSED(dynamics); s2e::math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index d33233a1b..871538ba2 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -34,9 +34,9 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @fn Update * @brief Override Updates function of SimpleDisturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); + virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 476fe673e..2598332a0 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -16,7 +16,7 @@ ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const ThirdBodyGravity::~ThirdBodyGravity() {} -void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const Dynamics& dynamics) { +void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); // initialize s2e::math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index b1d6d5e48..24a74ccc8 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -39,9 +39,9 @@ class ThirdBodyGravity : public Disturbance { * @fn Update * @brief Update third body disturbance * @param [in] local_environment: Local environment information - * @param [in] dynamics: Dynamics information + * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const Dynamics& dynamics); + virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); private: std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 98276524c..ea722d28d 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -9,20 +9,20 @@ namespace s2e::dynamics { -Dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, +dynamics::Dynamics::dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const LocalEnvironment* local_environment, const int spacecraft_id, Structure* structure, RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); } -Dynamics::~Dynamics() { +dynamics::Dynamics::~dynamics::Dynamics() { delete attitude_; delete orbit_; delete temperature_; } -void Dynamics::Initialize(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const int spacecraft_id, +void dynamics::Dynamics::Initialize(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const int spacecraft_id, Structure* structure, RelativeInformation* relative_information) { const LocalCelestialInformation& local_celestial_information = local_environment_->GetCelestialInformation(); // Initialize @@ -38,7 +38,7 @@ void Dynamics::Initialize(const SimulationConfiguration* simulation_configuratio orbit_->UpdateByAttitude(attitude_->GetQuaternion_i2b()); } -void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { +void dynamics::Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { // Attitude propagation if (simulation_time->GetAttitudePropagateFlag()) { attitude_->Propagate(simulation_time->GetElapsedTime_s()); @@ -56,13 +56,13 @@ void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestia } } -void Dynamics::ClearForceTorque(void) { +void dynamics::Dynamics::ClearForceTorque(void) { s2e::math::Vector<3> zero(0.0); attitude_->SetTorque_b_Nm(zero); orbit_->SetAcceleration_i_m_s2(zero); } -void Dynamics::LogSetup(Logger& logger) { +void dynamics::Dynamics::LogSetup(Logger& logger) { logger.AddLogList(attitude_); logger.AddLogList(orbit_); logger.AddLogList(temperature_); diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index b8738b87a..85d23926c 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -51,7 +51,7 @@ void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_conf celestial_information_->is_log_enabled_ = conf.ReadEnable("LOCAL_CELESTIAL_INFORMATION", "logging"); } -void LocalEnvironment::Update(const Dynamics* dynamics, const SimulationTime* simulation_time) { +void LocalEnvironment::Update(const dynamics::Dynamics* dynamics, const SimulationTime* simulation_time) { auto& orbit = dynamics->GetOrbit(); auto& attitude = dynamics->GetAttitude(); diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index 807ffa100..f251135f4 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -15,7 +15,7 @@ #include "simulation/simulation_configuration.hpp" #include "solar_radiation_pressure_environment.hpp" -class Dynamics; +class dynamics::Dynamics; namespace s2e::environment { @@ -45,7 +45,7 @@ class LocalEnvironment { * @param [in] dynamics: Dynamics information of the satellite * @param [in] simulation_time: Simulation time */ - void Update(const Dynamics* dynamics, const SimulationTime* simulation_time); + void Update(const dynamics::Dynamics* dynamics, const SimulationTime* simulation_time); /** * @fn LogSetup diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index 782b50295..93cd3007b 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -39,7 +39,7 @@ void RelativeInformation::Update() { } } -void RelativeInformation::RegisterDynamicsInfo(const size_t spacecraft_id, const Dynamics* dynamics) { +void RelativeInformation::RegisterDynamicsInfo(const size_t spacecraft_id, const dynamics::Dynamics* dynamics) { dynamics_database_.emplace(spacecraft_id, dynamics); ResizeLists(); } diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index b68cab097..04423a2ed 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -42,7 +42,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] spacecraft_id: ID of target spacecraft * @param [in] dynamics: Dynamics information of the target spacecraft */ - void RegisterDynamicsInfo(const size_t spacecraft_id, const dynamics::Dynamics* dynamics); + void RegisterDynamicsInfo(const size_t spacecraft_id, const dynamics::dynamics::Dynamics* dynamics); /** * @fn RegisterDynamicsInfo * @brief Remove dynamics information of target spacecraft @@ -129,12 +129,12 @@ class RelativeInformation : public logger::ILoggable { * @brief Return the dynamics information of a spacecraft * @param [in] target_spacecraft_id: ID of the spacecraft */ - inline const dynamics::Dynamics* GetReferenceSatDynamics(const size_t reference_spacecraft_id) const { + inline const dynamics::dynamics::Dynamics* GetReferenceSatDynamics(const size_t reference_spacecraft_id) const { return dynamics_database_.at(reference_spacecraft_id); }; private: - std::map dynamics_database_; //!< Dynamics database of all spacecraft + std::map dynamics_database_; //!< Dynamics database of all spacecraft std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index d99b1a1a5..b0efbad8b 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -32,7 +32,7 @@ void Spacecraft::Initialize(const SimulationConfiguration* simulation_configurat clock_generator_.ClearTimerCount(); structure_ = new Structure(simulation_configuration, spacecraft_id); local_environment_ = new environment::LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); - dynamics_ = new dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, structure_, + dynamics_ = new dynamics::dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, structure_, relative_information); disturbances_ = new disturbances::Disturbances(simulation_configuration, spacecraft_id, structure_, global_environment); diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index 88f612246..5b490ec1e 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -71,7 +71,7 @@ class Spacecraft { * @fn GetDynamics * @brief Get dynamics of the spacecraft */ - inline const dynamics::Dynamics& GetDynamics() const { return *dynamics_; } + inline const dynamics::dynamics::Dynamics& GetDynamics() const { return *dynamics_; } /** * @fn GetLocalEnvironment * @brief Get local environment around the spacecraft @@ -100,7 +100,7 @@ class Spacecraft { protected: environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft - dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 38debc042..0a61fea77 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -13,7 +13,7 @@ namespace s2e::sample { using namespace components; -SampleComponents::SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, +SampleComponents::SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id) : configuration_(configuration), diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 756e3fc9b..27c1118fc 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -62,7 +62,7 @@ class SampleComponents : public simulation::InstalledComponents { * @fn SampleComponents * @brief Constructor */ - SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, + SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id); /** @@ -139,7 +139,7 @@ class SampleComponents : public simulation::InstalledComponents { // States const simulation::SimulationConfiguration* configuration_; //!< Simulation settings - const dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + const dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft simulation::Structure* structure_; //!< Structure information of the spacecraft const environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft const environment::GlobalEnvironment* global_environment_; //!< Global environment information From 0a6a3d2fb983b64febe98437e6418b6f09aa539f Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 28 Sep 2024 22:03:29 +0900 Subject: [PATCH 438/456] Fix namespace --- src/components/base/sensor.hpp | 18 +- .../base/sensor_template_functions.hpp | 34 ++-- .../examples/example_change_structure.cpp | 2 +- .../ideal/angular_velocity_observer.hpp | 4 +- src/components/ideal/attitude_observer.cpp | 6 +- src/components/ideal/attitude_observer.hpp | 4 +- src/components/ideal/force_generator.cpp | 32 ++-- src/components/ideal/force_generator.hpp | 16 +- src/components/ideal/orbit_observer.cpp | 14 +- src/components/ideal/orbit_observer.hpp | 10 +- src/components/ideal/torque_generator.cpp | 16 +- src/components/ideal/torque_generator.hpp | 8 +- src/components/real/aocs/gnss_receiver.cpp | 104 ++++++------ src/components/real/aocs/gnss_receiver.hpp | 32 ++-- src/components/real/aocs/gyro_sensor.cpp | 8 +- src/components/real/aocs/gyro_sensor.hpp | 10 +- src/components/real/aocs/magnetometer.cpp | 8 +- src/components/real/aocs/magnetometer.hpp | 16 +- src/components/real/aocs/magnetorquer.cpp | 64 +++---- src/components/real/aocs/magnetorquer.hpp | 50 +++--- .../aocs/mtq_magnetometer_interference.cpp | 10 +- .../aocs/mtq_magnetometer_interference.hpp | 4 +- src/components/real/aocs/reaction_wheel.cpp | 58 +++---- src/components/real/aocs/reaction_wheel.hpp | 28 +-- .../real/aocs/reaction_wheel_jitter.cpp | 6 +- .../real/aocs/reaction_wheel_jitter.hpp | 40 ++--- .../real/aocs/reaction_wheel_ode.cpp | 4 +- .../real/aocs/reaction_wheel_ode.hpp | 4 +- src/components/real/aocs/star_sensor.cpp | 68 ++++---- src/components/real/aocs/star_sensor.hpp | 30 ++-- src/components/real/aocs/sun_sensor.cpp | 40 ++--- src/components/real/aocs/sun_sensor.hpp | 14 +- src/components/real/communication/antenna.cpp | 4 +- src/components/real/communication/antenna.hpp | 8 +- .../antenna_radiation_pattern.hpp | 6 +- .../ground_station_calculator.cpp | 10 +- src/components/real/mission/telescope.cpp | 86 +++++----- src/components/real/mission/telescope.hpp | 26 +-- src/components/real/power/battery.cpp | 8 +- .../real/power/csv_scenario_interface.cpp | 4 +- .../real/power/csv_scenario_interface.hpp | 2 +- .../real/power/pcu_initial_study.cpp | 8 +- .../real/power/solar_array_panel.cpp | 22 +-- .../real/power/solar_array_panel.hpp | 8 +- .../real/propulsion/simple_thruster.cpp | 34 ++-- src/disturbances/air_drag.cpp | 20 +-- src/disturbances/air_drag.hpp | 6 +- src/disturbances/disturbance.hpp | 24 +-- src/disturbances/disturbances.hpp | 6 +- src/disturbances/geopotential.cpp | 12 +- src/disturbances/geopotential.hpp | 2 +- src/disturbances/gravity_gradient.cpp | 4 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 16 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 4 +- src/disturbances/magnetic_disturbance.hpp | 4 +- .../solar_radiation_pressure_disturbance.cpp | 6 +- .../solar_radiation_pressure_disturbance.hpp | 4 +- src/disturbances/surface_force.cpp | 24 +-- src/disturbances/surface_force.hpp | 10 +- src/disturbances/third_body_gravity.cpp | 14 +- src/disturbances/third_body_gravity.hpp | 4 +- src/dynamics/attitude/attitude.cpp | 32 ++-- src/dynamics/attitude/attitude.hpp | 40 ++--- src/dynamics/attitude/attitude_rk4.cpp | 34 ++-- src/dynamics/attitude/attitude_rk4.hpp | 14 +- .../attitude_with_cantilever_vibration.cpp | 20 +-- .../attitude_with_cantilever_vibration.hpp | 14 +- src/dynamics/attitude/controlled_attitude.cpp | 58 +++---- src/dynamics/attitude/controlled_attitude.hpp | 32 ++-- src/dynamics/attitude/initialize_attitude.cpp | 20 +-- src/dynamics/attitude/initialize_attitude.hpp | 4 +- ...ode_attitude_with_cantilever_vibration.hpp | 80 +++++---- src/dynamics/dynamics.cpp | 17 +- src/dynamics/dynamics.hpp | 36 ++-- .../orbit/encke_orbit_propagation.cpp | 18 +- .../orbit/encke_orbit_propagation.hpp | 18 +- src/dynamics/orbit/initialize_orbit.cpp | 34 ++-- src/dynamics/orbit/initialize_orbit.hpp | 4 +- src/dynamics/orbit/orbit.cpp | 38 ++--- src/dynamics/orbit/orbit.hpp | 44 ++--- src/dynamics/orbit/relative_orbit.cpp | 28 +-- src/dynamics/orbit/relative_orbit.hpp | 16 +- src/dynamics/orbit/rk4_orbit_propagation.cpp | 8 +- src/dynamics/orbit/rk4_orbit_propagation.hpp | 8 +- src/dynamics/thermal/heater_controller.hpp | 4 +- src/dynamics/thermal/node.cpp | 10 +- src/dynamics/thermal/node.hpp | 10 +- src/dynamics/thermal/temperature.cpp | 16 +- src/dynamics/thermal/temperature.hpp | 18 +- .../global/celestial_information.cpp | 4 +- .../global/celestial_information.hpp | 30 ++-- src/environment/global/clock_generator.cpp | 4 +- src/environment/global/clock_generator.hpp | 6 +- src/environment/global/earth_rotation.cpp | 160 +++++++++--------- src/environment/global/earth_rotation.hpp | 16 +- src/environment/global/global_environment.cpp | 10 +- src/environment/global/global_environment.hpp | 6 +- src/environment/global/gnss_satellites.cpp | 16 +- src/environment/global/gnss_satellites.hpp | 6 +- .../global/hipparcos_catalogue.cpp | 14 +- .../global/hipparcos_catalogue.hpp | 4 +- src/environment/global/moon_rotation.cpp | 8 +- src/environment/global/moon_rotation.hpp | 8 +- src/environment/global/physical_constants.hpp | 6 +- src/environment/global/simulation_time.cpp | 6 +- src/environment/local/atmosphere.cpp | 8 +- src/environment/local/atmosphere.hpp | 2 +- src/environment/local/earth_albedo.cpp | 10 +- src/environment/local/geomagnetic_field.cpp | 6 +- src/environment/local/geomagnetic_field.hpp | 10 +- .../local/local_celestial_information.cpp | 52 +++--- .../local/local_celestial_information.hpp | 22 +-- src/environment/local/local_environment.cpp | 8 +- src/environment/local/local_environment.hpp | 6 +- .../solar_radiation_pressure_environment.cpp | 18 +- src/logger/log_utility.hpp | 12 +- src/logger/logger.cpp | 4 +- .../atmosphere/harris_priester_model.cpp | 10 +- .../atmosphere/harris_priester_model.hpp | 2 +- .../atmosphere/wrapper_nrlmsise00.cpp | 6 +- .../geodesy/geodetic_position.cpp | 10 +- .../geodesy/geodetic_position.hpp | 8 +- src/math_physics/gnss/antex_file_reader.cpp | 2 +- src/math_physics/gnss/antex_file_reader.hpp | 6 +- src/math_physics/gnss/sp3_file_reader.cpp | 10 +- src/math_physics/gnss/sp3_file_reader.hpp | 10 +- .../gravity/gravity_potential.cpp | 8 +- .../gravity/gravity_potential.hpp | 4 +- .../gravity/test_gravity_potential.cpp | 40 ++--- .../math/ordinary_differential_equation.hpp | 2 +- src/math_physics/math/s2e_math.cpp | 8 +- src/math_physics/math/test_interpolation.cpp | 30 ++-- src/math_physics/math/test_matrix.cpp | 60 +++---- src/math_physics/math/test_matrix_vector.cpp | 10 +- src/math_physics/math/test_quaternion.cpp | 134 +++++++-------- src/math_physics/math/test_s2e_math.cpp | 14 +- src/math_physics/math/test_vector.cpp | 94 +++++----- .../dormand_prince_5.hpp | 4 +- .../dormand_prince_5_implementation.hpp | 6 +- .../embedded_runge_kutta_implementation.hpp | 6 +- .../numerical_integration/interface_ode.hpp | 2 +- .../numerical_integrator.hpp | 10 +- .../numerical_integration/ode_examples.hpp | 16 +- .../numerical_integration/runge_kutta.hpp | 2 +- .../numerical_integration/runge_kutta_4.hpp | 2 +- .../runge_kutta_fehlberg.hpp | 2 +- .../runge_kutta_fehlberg_implementation.hpp | 8 +- .../runge_kutta_template.hpp | 4 +- .../test_runge_kutta.cpp | 86 +++++----- .../optics/gaussian_beam_base.cpp | 8 +- .../optics/gaussian_beam_base.hpp | 12 +- .../orbit/interpolation_orbit.cpp | 8 +- .../orbit/interpolation_orbit.hpp | 6 +- src/math_physics/orbit/kepler_orbit.cpp | 16 +- src/math_physics/orbit/kepler_orbit.hpp | 10 +- src/math_physics/orbit/orbital_elements.cpp | 16 +- src/math_physics/orbit/orbital_elements.hpp | 8 +- .../orbit/relative_orbit_models.cpp | 8 +- .../orbit/relative_orbit_models.hpp | 4 +- .../orbit/test_interpolation_orbit.cpp | 4 +- .../moon_rotation_utilities.cpp | 30 ++-- .../moon_rotation_utilities.hpp | 6 +- .../randomization/random_walk.hpp | 8 +- .../random_walk_template_functions.hpp | 6 +- .../c2a_command_database.cpp | 20 +-- .../initialize_file_access.cpp | 4 +- .../initialize_file_access.hpp | 6 +- .../ground_station/ground_station.cpp | 14 +- .../initialize_monte_carlo_parameters.cpp | 70 ++++---- .../initialize_monte_carlo_simulation.cpp | 4 +- .../monte_carlo_simulation_executor.cpp | 2 +- .../monte_carlo_simulation_executor.hpp | 12 +- .../simulation_object.cpp | 2 +- .../simulation_object.hpp | 6 +- .../relative_information.cpp | 58 +++---- .../relative_information.hpp | 26 +-- .../spacecraft/installed_components.cpp | 8 +- .../spacecraft/installed_components.hpp | 4 +- .../structure/initialize_structure.cpp | 8 +- .../structure/kinematics_parameters.cpp | 2 +- .../structure/kinematics_parameters.hpp | 14 +- .../structure/residual_magnetic_moment.cpp | 2 +- .../structure/residual_magnetic_moment.hpp | 4 +- .../spacecraft/structure/surface.cpp | 2 +- .../spacecraft/structure/surface.hpp | 14 +- .../spacecraft/sample_components.cpp | 6 +- 188 files changed, 1670 insertions(+), 1673 deletions(-) diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 38f2a9075..1091be06b 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -33,9 +33,9 @@ class Sensor { * @param [in] random_walk_standard_deviation_c: Standard deviation of random wark at the component frame * @param [in] random_walk_limit_c: Limit of random walk at the component frame */ - Sensor(const s2e::math::Matrix& scale_factor, const s2e::math::Vector& range_to_const_c, const s2e::math::Vector& range_to_zero_c, - const s2e::math::Vector& bias_noise_c, const s2e::math::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, - const s2e::math::Vector& random_walk_standard_deviation_c, const s2e::math::Vector& random_walk_limit_c); + Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_const_c, const math::Vector& range_to_zero_c, + const math::Vector& bias_noise_c, const math::Vector& normal_random_standard_deviation_c, const double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c, const math::Vector& random_walk_limit_c); /** * @fn ~Sensor * @brief Destructor @@ -43,7 +43,7 @@ class Sensor { ~Sensor(); protected: - s2e::math::Vector bias_noise_c_; //!< Constant bias noise at the component frame + math::Vector bias_noise_c_; //!< Constant bias noise at the component frame /** * @fn Measure @@ -51,12 +51,12 @@ class Sensor { * @param [in] true_value_c: True value at the component frame * @return Observed value with noise at the component frame */ - s2e::math::Vector Measure(const s2e::math::Vector true_value_c); + math::Vector Measure(const math::Vector true_value_c); private: - s2e::math::Matrix scale_factor_; //!< Scale factor matrix - s2e::math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - s2e::math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + math::Matrix scale_factor_; //!< Scale factor matrix + math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame s2e::randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random RandomWalk random_walk_noise_c_; //!< Random Walk @@ -66,7 +66,7 @@ class Sensor { * @param [in] input_c: Input value at the component frame * @return Clipped value */ - s2e::math::Vector Clip(const s2e::math::Vector input_c); + math::Vector Clip(const math::Vector input_c); /** * @fn RangeCheck * @brief Check the range_to_const_c_ and range_to_zero_c_ is correct and fixed the values diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index b1236901a..89bcd73ab 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -12,10 +12,10 @@ namespace s2e::components { template -Sensor::Sensor(const s2e::math::Matrix& scale_factor, const s2e::math::Vector& range_to_const_c, const s2e::math::Vector& range_to_zero_c, - const s2e::math::Vector& bias_noise_c, const s2e::math::Vector& normal_random_standard_deviation_c, - const double random_walk_step_width_s, const s2e::math::Vector& random_walk_standard_deviation_c, - const s2e::math::Vector& random_walk_limit_c) +Sensor::Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_const_c, const math::Vector& range_to_zero_c, + const math::Vector& bias_noise_c, const math::Vector& normal_random_standard_deviation_c, + const double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c, + const math::Vector& random_walk_limit_c) : bias_noise_c_(bias_noise_c), scale_factor_(scale_factor), range_to_const_c_(range_to_const_c), @@ -31,8 +31,8 @@ template Sensor::~Sensor() {} template -s2e::math::Vector Sensor::Measure(const s2e::math::Vector true_value_c) { - s2e::math::Vector calc_value_c; +math::Vector Sensor::Measure(const math::Vector true_value_c) { + math::Vector calc_value_c; calc_value_c = scale_factor_ * true_value_c; calc_value_c += bias_noise_c_; for (size_t i = 0; i < N; ++i) { @@ -44,8 +44,8 @@ s2e::math::Vector Sensor::Measure(const s2e::math::Vector true_value_c) } template -s2e::math::Vector Sensor::Clip(const s2e::math::Vector input_c) { - s2e::math::Vector output_c; +math::Vector Sensor::Clip(const math::Vector input_c) { + math::Vector output_c; for (size_t i = 0; i < N; ++i) { if (input_c[i] >= range_to_const_c_[i] && input_c[i] < range_to_zero_c_[i]) { output_c[i] = range_to_const_c_[i]; @@ -82,11 +82,11 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w setting_file_reader::IniAccess ini_file(file_name); std::string section = "SENSOR_BASE_" + component_name; - s2e::math::Vector scale_factor_vector; + math::Vector scale_factor_vector; ini_file.ReadVector(section.c_str(), "scale_factor_c", scale_factor_vector); - s2e::math::Matrix scale_factor_c; + math::Matrix scale_factor_c; if (scale_factor_vector.CalcNorm() == 0.0) { - scale_factor_c = s2e::math::MakeIdentityMatrix(); + scale_factor_c = math::MakeIdentityMatrix(); } else { for (size_t i = 0; i < N; i++) { for (size_t j = 0; j < N; j++) { @@ -96,26 +96,26 @@ Sensor ReadSensorInformation(const std::string file_name, const double step_w } std::string key_name; - s2e::math::Vector constant_bias_c; + math::Vector constant_bias_c; key_name = "constant_bias_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), constant_bias_c); - s2e::math::Vector normal_random_standard_deviation_c; + math::Vector normal_random_standard_deviation_c; key_name = "normal_random_standard_deviation_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), normal_random_standard_deviation_c); - s2e::math::Vector random_walk_standard_deviation_c; + math::Vector random_walk_standard_deviation_c; key_name = "random_walk_standard_deviation_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), random_walk_standard_deviation_c); - s2e::math::Vector random_walk_limit_c; + math::Vector random_walk_limit_c; key_name = "random_walk_limit_c_" + unit; ini_file.ReadVector(section.c_str(), key_name.c_str(), random_walk_limit_c); key_name = "range_to_constant_" + unit; double range_to_const = ini_file.ReadDouble(section.c_str(), key_name.c_str()); - s2e::math::Vector range_to_const_c{range_to_const}; + math::Vector range_to_const_c{range_to_const}; key_name = "range_to_zero_" + unit; double range_to_zero = ini_file.ReadDouble(section.c_str(), key_name.c_str()); - s2e::math::Vector range_to_zero_c{range_to_zero}; + math::Vector range_to_zero_c{range_to_zero}; Sensor sensor_base(scale_factor_c, range_to_const_c, range_to_zero_c, constant_bias_c, normal_random_standard_deviation_c, step_width_s, random_walk_standard_deviation_c, random_walk_limit_c); diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index 0ee982771..62e2a0cc6 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -37,7 +37,7 @@ void ExampleChangeStructure::MainRoutine(const int time_count) { structure_->GetToSetSurfaces()[0].SetArea_m2(0.5); // Inertia Tensor - s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2(0.0); + math::Matrix<3, 3> inertia_tensor_b_kgm2(0.0); inertia_tensor_b_kgm2[0][0] = 0.2; inertia_tensor_b_kgm2[1][1] = 0.2; inertia_tensor_b_kgm2[2][2] = 0.2; diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index 404785058..a99c0cb13 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -59,10 +59,10 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge * @fn GetAngularVelocity_b_rad_s * @brief Return observed angular velocity */ - inline s2e::math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } + inline math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } protected: - s2e::math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] + math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] const dynamics::attitude::Attitude& attitude_; //!< Dynamics information }; diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index dad39b3e3..9d3a84165 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -20,14 +20,14 @@ void AttitudeObserver::MainRoutine(const int time_count) { UNUSED(time_count); // Error calculation - s2e::math::Vector<3> random_direction; + math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); double error_angle_rad = angle_noise_; - s2e::math::Quaternion error_quaternion(random_direction, error_angle_rad); + math::Quaternion error_quaternion(random_direction, error_angle_rad); observed_quaternion_i2b_ = error_quaternion * attitude_.GetQuaternion_i2b(); } @@ -59,7 +59,7 @@ AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_g // AttitudeObserver double error_angle_standard_deviation_deg = ini_file.ReadDouble("ATTITUDE_OBSERVER", "error_angle_standard_deviation_deg"); - double error_angle_standard_deviation_rad = s2e::math::deg_to_rad * error_angle_standard_deviation_deg; + double error_angle_standard_deviation_rad = math::deg_to_rad * error_angle_standard_deviation_deg; AttitudeObserver attitude_observer(prescaler, clock_generator, error_angle_standard_deviation_rad, attitude); return attitude_observer; diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 59c00dd29..148b3aa4f 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -59,10 +59,10 @@ class AttitudeObserver : public Component, public logger::ILoggable { * @fn GetQuaternion_i2c * @brief Return observed quaternion from the inertial frame to the body-fixed frame */ - inline const s2e::math::Quaternion GetQuaternion_i2b() const { return observed_quaternion_i2b_; }; + inline const math::Quaternion GetQuaternion_i2b() const { return observed_quaternion_i2b_; }; protected: - s2e::math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion + math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion s2e::randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index d1770ac79..2bac42d3f 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -31,16 +31,16 @@ void ForceGenerator::MainRoutine(const int time_count) { double norm_ordered_force = ordered_force_b_N_.CalcNorm(); if (norm_ordered_force > 0.0 + DBL_EPSILON) { // Add noise only when the force is generated - s2e::math::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); - s2e::math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); - s2e::math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); + math::Vector<3> true_direction = generated_force_b_N_.CalcNormalizedVector(); + math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); + math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double force_norm_with_error = norm_ordered_force + magnitude_noise_; generated_force_b_N_ = force_norm_with_error * converted_direction; } // Convert frame - s2e::math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - s2e::math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); generated_force_i_N_ = q_i2b.InverseFrameConversion(generated_force_b_N_); generated_force_rtn_N_ = q_i2rtn.FrameConversion(generated_force_i_N_); } @@ -51,16 +51,16 @@ void ForceGenerator::PowerOffRoutine() { generated_force_rtn_N_ *= 0.0; } -void ForceGenerator::SetForce_i_N(const s2e::math::Vector<3> force_i_N) { - s2e::math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); +void ForceGenerator::SetForce_i_N(const math::Vector<3> force_i_N) { + math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } -void ForceGenerator::SetForce_rtn_N(const s2e::math::Vector<3> force_rtn_N) { - s2e::math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); - s2e::math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); +void ForceGenerator::SetForce_rtn_N(const math::Vector<3> force_rtn_N) { + math::Quaternion q_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_i2rtn = dynamics_->GetOrbit().CalcQuaternion_i2lvlh(); - s2e::math::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); + math::Vector<3> force_i_N = q_i2rtn.InverseFrameConversion(force_rtn_N); ordered_force_b_N_ = q_i2b.FrameConversion(force_i_N); } @@ -87,14 +87,14 @@ std::string ForceGenerator::GetLogValue() const { return str_tmp; } -s2e::math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad) { - s2e::math::Vector<3> random_direction; +math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { + math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); - s2e::math::Vector<3> rotation_axis; + math::Vector<3> rotation_axis; rotation_axis = OuterProduct(true_direction, random_direction); double norm_rotation_axis = rotation_axis.CalcNorm(); if (norm_rotation_axis < 0.0 + DBL_EPSILON) { @@ -103,7 +103,7 @@ s2e::math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(s2e::math } double error_angle_rad = direction_noise_ * error_standard_deviation_rad; - s2e::math::Quaternion error_quaternion(rotation_axis, error_angle_rad); + math::Quaternion error_quaternion(rotation_axis, error_angle_rad); return error_quaternion; } @@ -119,7 +119,7 @@ ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_gener char section[30] = "FORCE_GENERATOR"; double force_magnitude_standard_deviation_N = ini_file.ReadDouble(section, "force_magnitude_standard_deviation_N"); double force_direction_standard_deviation_deg = ini_file.ReadDouble(section, "force_direction_standard_deviation_deg"); - double force_direction_standard_deviation_rad = s2e::math::deg_to_rad * force_direction_standard_deviation_deg; + double force_direction_standard_deviation_rad = math::deg_to_rad * force_direction_standard_deviation_deg; ForceGenerator force_generator(prescaler, clock_generator, force_magnitude_standard_deviation_N, force_direction_standard_deviation_rad, dynamics); return force_generator; diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 0881e7773..61f94d4d9 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -83,23 +83,23 @@ class ForceGenerator : public Component, public logger::ILoggable { * @fn SetForce_b_N * @brief Set ordered force in the body fixed frame [N] */ - inline void SetForce_b_N(const s2e::math::Vector<3> force_b_N) { ordered_force_b_N_ = force_b_N; }; + inline void SetForce_b_N(const math::Vector<3> force_b_N) { ordered_force_b_N_ = force_b_N; }; /** * @fn SetForce_i_N * @brief Set ordered force in the inertial frame [N] */ - void SetForce_i_N(const s2e::math::Vector<3> force_i_N); + void SetForce_i_N(const math::Vector<3> force_i_N); /** * @fn SetForce_rtn_N * @brief Set ordered force in the RTN frame [N] */ - void SetForce_rtn_N(const s2e::math::Vector<3> force_rtn_N); + void SetForce_rtn_N(const math::Vector<3> force_rtn_N); protected: - s2e::math::Vector<3> ordered_force_b_N_{0.0}; //!< Ordered force in the body fixed frame [N] - s2e::math::Vector<3> generated_force_b_N_{0.0}; //!< Generated force in the body fixed frame [N] - s2e::math::Vector<3> generated_force_i_N_{0.0}; //!< Generated force in the inertial frame [N] - s2e::math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] + math::Vector<3> ordered_force_b_N_{0.0}; //!< Ordered force in the body fixed frame [N] + math::Vector<3> generated_force_b_N_{0.0}; //!< Generated force in the body fixed frame [N] + math::Vector<3> generated_force_i_N_{0.0}; //!< Generated force in the inertial frame [N] + math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise @@ -112,7 +112,7 @@ class ForceGenerator : public Component, public logger::ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - s2e::math::Quaternion GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad); + math::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 58ede8f6b..37e5c4dc3 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -11,7 +11,7 @@ namespace s2e::components { OrbitObserver::OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, - const s2e::math::Vector<6> error_standard_deviation, const Orbit& orbit) + const math::Vector<6> error_standard_deviation, const Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], s2e::randomization::global_randomization.MakeSeed()); @@ -22,11 +22,11 @@ void OrbitObserver::MainRoutine(const int time_count) { UNUSED(time_count); // Calc noise - s2e::math::Vector<3> position_error_i_m{0.0}; - s2e::math::Vector<3> position_error_rtn_m{0.0}; - s2e::math::Vector<3> velocity_error_i_m_s{0.0}; - s2e::math::Vector<3> velocity_error_rtn_m_s{0.0}; - s2e::math::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); + math::Vector<3> position_error_i_m{0.0}; + math::Vector<3> position_error_rtn_m{0.0}; + math::Vector<3> velocity_error_i_m_s{0.0}; + math::Vector<3> velocity_error_rtn_m_s{0.0}; + math::Quaternion q_i2rtn = orbit_.CalcQuaternion_i2lvlh(); switch (noise_frame_) { case NoiseFrame::kInertial: for (size_t axis = 0; axis < 3; axis++) { @@ -95,7 +95,7 @@ OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generat // Noise const NoiseFrame noise_frame = SetNoiseFrame(ini_file.ReadString("ORBIT_OBSERVER", "noise_frame")); - s2e::math::Vector<6> noise_standard_deviation; + math::Vector<6> noise_standard_deviation; ini_file.ReadVector("ORBIT_OBSERVER", "noise_standard_deviation", noise_standard_deviation); OrbitObserver orbit_observer(prescaler, clock_generator, noise_frame, noise_standard_deviation, orbit); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 58a2cf3c9..953184fe4 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -39,7 +39,7 @@ class OrbitObserver : public Component, public logger::ILoggable { * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, const s2e::math::Vector<6> error_standard_deviation, + OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, const math::Vector<6> error_standard_deviation, const Orbit& orbit); /** @@ -71,17 +71,17 @@ class OrbitObserver : public Component, public logger::ILoggable { * @fn GetPosition_i_m * @brief Return observed position */ - inline const s2e::math::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; + inline const math::Vector<3> GetPosition_i_m() const { return observed_position_i_m_; }; /** * @fn GetVelocity_i_m_s * @brief Return observed velocity */ - inline const s2e::math::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; + inline const math::Vector<3> GetVelocity_i_m_s() const { return observed_velocity_i_m_s_; }; protected: - s2e::math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] - s2e::math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] + math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] + math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] NoiseFrame noise_frame_; //!< Noise definition frame s2e::randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index 93b312270..aef542808 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -31,9 +31,9 @@ void TorqueGenerator::MainRoutine(const int time_count) { double norm_ordered_torque = ordered_torque_b_Nm_.CalcNorm(); if (norm_ordered_torque > 0.0 + DBL_EPSILON) { // Add noise only when the torque is generated - s2e::math::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); - s2e::math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); - s2e::math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); + math::Vector<3> true_direction = generated_torque_b_Nm_.CalcNormalizedVector(); + math::Quaternion error_quaternion = GenerateDirectionNoiseQuaternion(true_direction, direction_error_standard_deviation_rad_); + math::Vector<3> converted_direction = error_quaternion.FrameConversion(true_direction); double torque_norm_with_error = norm_ordered_torque + magnitude_noise_; generated_torque_b_Nm_ = torque_norm_with_error * converted_direction; } @@ -60,14 +60,14 @@ std::string TorqueGenerator::GetLogValue() const { return str_tmp; } -s2e::math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad) { - s2e::math::Vector<3> random_direction; +math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad) { + math::Vector<3> random_direction; random_direction[0] = direction_noise_; random_direction[1] = direction_noise_; random_direction[2] = direction_noise_; random_direction = random_direction.CalcNormalizedVector(); - s2e::math::Vector<3> rotation_axis; + math::Vector<3> rotation_axis; rotation_axis = OuterProduct(true_direction, random_direction); double norm_rotation_axis = rotation_axis.CalcNorm(); if (norm_rotation_axis < 0.0 + DBL_EPSILON) { @@ -76,7 +76,7 @@ s2e::math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(s2e::mat } double error_angle_rad = direction_noise_ * error_standard_deviation_rad; - s2e::math::Quaternion error_quaternion(rotation_axis, error_angle_rad); + math::Quaternion error_quaternion(rotation_axis, error_angle_rad); return error_quaternion; } @@ -92,7 +92,7 @@ TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_gen char section[30] = "TORQUE_GENERATOR"; double torque_magnitude_standard_deviation_Nm = ini_file.ReadDouble(section, "torque_magnitude_standard_deviation_Nm"); double torque_direction_standard_deviation_deg = ini_file.ReadDouble(section, "torque_direction_standard_deviation_deg"); - double torque_direction_standard_deviation_rad = s2e::math::deg_to_rad * torque_direction_standard_deviation_deg; + double torque_direction_standard_deviation_rad = math::deg_to_rad * torque_direction_standard_deviation_deg; TorqueGenerator torque_generator(prescaler, clock_generator, torque_magnitude_standard_deviation_Nm, torque_direction_standard_deviation_rad, dynamics); diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 7b5144729..1c4965b11 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -73,11 +73,11 @@ class TorqueGenerator : public Component, public logger::ILoggable { * @fn SetTorque_b_Nm * @brief Set ordered torque in the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { ordered_torque_b_Nm_ = torque_b_Nm; }; + inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { ordered_torque_b_Nm_ = torque_b_Nm; }; protected: - s2e::math::Vector<3> ordered_torque_b_Nm_{0.0}; //!< Ordered torque in the body fixed frame [Nm] - s2e::math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] + math::Vector<3> ordered_torque_b_Nm_{0.0}; //!< Ordered torque in the body fixed frame [Nm] + math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise @@ -90,7 +90,7 @@ class TorqueGenerator : public Component, public logger::ILoggable { * @param [in] true_direction: True direction * @param [in] error_standard_deviation_rad: Standard deviation of direction error [rad] */ - s2e::math::Quaternion GenerateDirectionNoiseQuaternion(s2e::math::Vector<3> true_direction, const double error_standard_deviation_rad); + math::Quaternion GenerateDirectionNoiseQuaternion(math::Vector<3> true_direction, const double error_standard_deviation_rad); const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 00ba3fd58..033a8db5b 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -14,9 +14,9 @@ namespace s2e::components { GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, - const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, - const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, + const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, + const math::Vector<3> position_noise_standard_deviation_ecef_m, + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), @@ -34,9 +34,9 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo } GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, - const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, - const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, + const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), @@ -58,8 +58,8 @@ void GnssReceiver::MainRoutine(const int time_count) { // Antenna checking // TODO: Use ECEF position only - s2e::math::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); - s2e::math::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); + math::Vector<3> position_true_eci = dynamics_->GetOrbit().GetPosition_i_m(); + math::Quaternion quaternion_i2b = dynamics_->GetAttitude().GetQuaternion_i2b(); CheckAntenna(position_true_eci, quaternion_i2b); if (is_gnss_visible_) { @@ -76,7 +76,7 @@ void GnssReceiver::MainRoutine(const int time_count) { ConvertJulianDayToGpsTime(simulation_time_->GetCurrentTime_jd()); } -void GnssReceiver::CheckAntenna(const s2e::math::Vector<3> position_true_eci_m, const s2e::math::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntenna(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { if (antenna_model_ == AntennaModel::kSimple) { CheckAntennaSimple(position_true_eci_m, quaternion_i2b); } else if (antenna_model_ == AntennaModel::kCone) { @@ -86,15 +86,15 @@ void GnssReceiver::CheckAntenna(const s2e::math::Vector<3> position_true_eci_m, } } -void GnssReceiver::CheckAntennaSimple(const s2e::math::Vector<3> position_true_eci_m, const s2e::math::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaSimple(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { // Simplest model // GNSS satellites are visible when antenna directs anti-earth direction // Antenna normal vector at inertial frame - s2e::math::Vector<3> antenna_direction_c(0.0); + math::Vector<3> antenna_direction_c(0.0); antenna_direction_c[2] = 1.0; - s2e::math::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); - s2e::math::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); + math::Vector<3> antenna_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_direction_c); + math::Vector<3> antenna_direction_i = quaternion_i2b.InverseFrameConversion(antenna_direction_b); double inner = InnerProduct(position_true_eci_m, antenna_direction_i); if (inner <= 0.0) { @@ -104,18 +104,18 @@ void GnssReceiver::CheckAntennaSimple(const s2e::math::Vector<3> position_true_e } } -void GnssReceiver::CheckAntennaCone(const s2e::math::Vector<3> position_true_eci_m, const s2e::math::Quaternion quaternion_i2b) { +void GnssReceiver::CheckAntennaCone(const math::Vector<3> position_true_eci_m, const math::Quaternion quaternion_i2b) { // Cone model gnss_information_list_.clear(); // Antenna pointing direction vector at inertial frame - s2e::math::Vector<3> antenna_pointing_direction_c(0.0); + math::Vector<3> antenna_pointing_direction_c(0.0); antenna_pointing_direction_c[2] = 1.0; - s2e::math::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); - s2e::math::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); + math::Vector<3> antenna_pointing_direction_b = quaternion_b2c_.InverseFrameConversion(antenna_pointing_direction_c); + math::Vector<3> antenna_pointing_direction_i = quaternion_i2b.InverseFrameConversion(antenna_pointing_direction_b); // Antenna position vector at inertial frame - s2e::math::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); + math::Vector<3> antenna_position_i_m = position_true_eci_m + quaternion_i2b.InverseFrameConversion(antenna_position_b_m_); // initialize visible_satellite_number_ = 0; @@ -124,9 +124,9 @@ void GnssReceiver::CheckAntennaCone(const s2e::math::Vector<3> position_true_eci for (size_t i = 0; i < number_of_calculated_gnss_satellites; i++) { // compute direction from sat to gnss in body-fixed frame - s2e::math::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); - s2e::math::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; - s2e::math::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); + math::Vector<3> gnss_satellite_position_i_m = gnss_satellites_->GetPosition_eci_m(i); + math::Vector<3> antenna_to_gnss_satellite_i_m = gnss_satellite_position_i_m - antenna_position_i_m; + math::Vector<3> antenna_to_gnss_satellite_direction_i = antenna_to_gnss_satellite_i_m.CalcNormalizedVector(); // Check GNSS satellites are visible from the receiver(not care antenna direction) bool is_gnss_satellite_visible_from_receiver = false; @@ -149,7 +149,7 @@ void GnssReceiver::CheckAntennaCone(const s2e::math::Vector<3> position_true_eci // Check GNSS satellites are in the antenna half width angle double inner2 = InnerProduct(antenna_pointing_direction_i, antenna_to_gnss_satellite_direction_i); - if (inner2 > cos(half_width_deg_ * s2e::math::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { + if (inner2 > cos(half_width_deg_ * math::deg_to_rad) && is_gnss_satellite_visible_from_receiver) { // is visible visible_satellite_number_++; SetGnssInfo(antenna_to_gnss_satellite_i_m, quaternion_i2b, i); @@ -163,10 +163,10 @@ void GnssReceiver::CheckAntennaCone(const s2e::math::Vector<3> position_true_eci } } -void GnssReceiver::SetGnssInfo(const s2e::math::Vector<3> antenna_to_satellite_i_m, const s2e::math::Quaternion quaternion_i2b, +void GnssReceiver::SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const math::Quaternion quaternion_i2b, const std::size_t gnss_system_id) { - s2e::math::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); - s2e::math::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); + math::Vector<3> antenna_to_satellite_direction_b = quaternion_i2b.FrameConversion(antenna_to_satellite_i_m); + math::Vector<3> antenna_to_satellite_direction_c = quaternion_b2c_.FrameConversion(antenna_to_satellite_direction_b); double distance_m = antenna_to_satellite_i_m.CalcNorm(); double longitude_rad = AcTan(antenna_to_satellite_direction_c[1], antenna_to_satellite_direction_c[0]); @@ -177,7 +177,7 @@ void GnssReceiver::SetGnssInfo(const s2e::math::Vector<3> antenna_to_satellite_i gnss_information_list_.push_back(gnss_info_new); } -void GnssReceiver::AddNoise(const s2e::math::Vector<3> position_true_ecef_m, const s2e::math::Vector<3> velocity_true_ecef_m_s) { +void GnssReceiver::AddNoise(const math::Vector<3> position_true_ecef_m, const math::Vector<3> velocity_true_ecef_m_s) { for (size_t i = 0; i < 3; i++) { position_ecef_m_[i] = position_true_ecef_m[i] + position_random_noise_ecef_m_[i]; velocity_ecef_m_s_[i] = velocity_true_ecef_m_s[i] + velocity_random_noise_ecef_m_s_[i]; @@ -202,19 +202,19 @@ std::string GnssReceiver::GetLogHeader() const // For logs const std::string sensor_id = std::to_string(static_cast(component_id_)); std::string sensor_name = "gnss_receiver" + sensor_id + "_"; - str_tmp += WriteScalar(sensor_name + "measured_utc_time_year"); - str_tmp += WriteScalar(sensor_name + "measured_utc_time_month"); - str_tmp += WriteScalar(sensor_name + "measured_utc_time_day"); - str_tmp += WriteScalar(sensor_name + "measured_utc_time_hour"); - str_tmp += WriteScalar(sensor_name + "measured_utc_time_min"); - str_tmp += WriteScalar(sensor_name + "measured_utc_time_sec"); + str_tmp += logger::WriteScalar(sensor_name + "measured_utc_time_year"); + str_tmp += logger::WriteScalar(sensor_name + "measured_utc_time_month"); + str_tmp += logger::WriteScalar(sensor_name + "measured_utc_time_day"); + str_tmp += logger::WriteScalar(sensor_name + "measured_utc_time_hour"); + str_tmp += logger::WriteScalar(sensor_name + "measured_utc_time_min"); + str_tmp += logger::WriteScalar(sensor_name + "measured_utc_time_sec"); str_tmp += logger::WriteVector(sensor_name + "measured_position", "ecef", "m", 3); str_tmp += logger::WriteVector(sensor_name + "measured_velocity", "ecef", "m/s", 3); - str_tmp += WriteScalar(sensor_name + "measured_latitude", "rad"); - str_tmp += WriteScalar(sensor_name + "measured_longitude", "rad"); - str_tmp += WriteScalar(sensor_name + "measured_altitude", "m"); - str_tmp += WriteScalar(sensor_name + "satellite_visible_flag"); - str_tmp += WriteScalar(sensor_name + "number_of_visible_satellites"); + str_tmp += logger::WriteScalar(sensor_name + "measured_latitude", "rad"); + str_tmp += logger::WriteScalar(sensor_name + "measured_longitude", "rad"); + str_tmp += logger::WriteScalar(sensor_name + "measured_altitude", "m"); + str_tmp += logger::WriteScalar(sensor_name + "satellite_visible_flag"); + str_tmp += logger::WriteScalar(sensor_name + "number_of_visible_satellites"); return str_tmp; } @@ -222,19 +222,19 @@ std::string GnssReceiver::GetLogHeader() const // For logs std::string GnssReceiver::GetLogValue() const // For logs { std::string str_tmp = ""; - str_tmp += WriteScalar(utc_.year); - str_tmp += WriteScalar(utc_.month); - str_tmp += WriteScalar(utc_.day); - str_tmp += WriteScalar(utc_.hour); - str_tmp += WriteScalar(utc_.minute); - str_tmp += WriteScalar(utc_.second); + str_tmp += logger::WriteScalar(utc_.year); + str_tmp += logger::WriteScalar(utc_.month); + str_tmp += logger::WriteScalar(utc_.day); + str_tmp += logger::WriteScalar(utc_.hour); + str_tmp += logger::WriteScalar(utc_.minute); + str_tmp += logger::WriteScalar(utc_.second); str_tmp += logger::WriteVector(position_ecef_m_, 10); str_tmp += logger::WriteVector(velocity_ecef_m_s_, 10); - str_tmp += WriteScalar(geodetic_position_.GetLatitude_rad(), 10); - str_tmp += WriteScalar(geodetic_position_.GetLongitude_rad(), 10); - str_tmp += WriteScalar(geodetic_position_.GetAltitude_m(), 10); - str_tmp += WriteScalar(is_gnss_visible_); - str_tmp += WriteScalar(visible_satellite_number_); + str_tmp += logger::WriteScalar(geodetic_position_.GetLatitude_rad(), 10); + str_tmp += logger::WriteScalar(geodetic_position_.GetLongitude_rad(), 10); + str_tmp += logger::WriteScalar(geodetic_position_.GetAltitude_m(), 10); + str_tmp += logger::WriteScalar(is_gnss_visible_); + str_tmp += logger::WriteScalar(visible_satellite_number_); return str_tmp; } @@ -254,11 +254,11 @@ AntennaModel SetAntennaModel(const std::string antenna_model) { typedef struct _gnss_receiver_param { int prescaler; AntennaModel antenna_model; - s2e::math::Vector<3> antenna_pos_b; - s2e::math::Quaternion quaternion_b2c; + math::Vector<3> antenna_pos_b; + math::Quaternion quaternion_b2c; double half_width_deg; - s2e::math::Vector<3> position_noise_standard_deviation_ecef_m; - s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; + math::Vector<3> position_noise_standard_deviation_ecef_m; + math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const size_t component_id) { diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index e96f05f0f..aa2e54f09 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -61,8 +61,8 @@ class GnssReceiver : public Component, public logger::ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, const double half_width_deg, - const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, + const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, + const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn GnssReceiver @@ -81,9 +81,9 @@ class GnssReceiver : public Component, public logger::ILoggable { * @param [in] simulation_time: Simulation time information */ GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const AntennaModel antenna_model, const s2e::math::Vector<3> antenna_position_b_m, const s2e::math::Quaternion quaternion_b2c, - const double half_width_deg, const s2e::math::Vector<3> position_noise_standard_deviation_ecef_m, - const s2e::math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, + const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component @@ -104,7 +104,7 @@ class GnssReceiver : public Component, public logger::ILoggable { * @fn GetMeasuredPosition_ecef_m * @brief Return Observed position in the ECEF frame [m] */ - inline const s2e::math::Vector<3> GetMeasuredPosition_ecef_m(void) const { return position_ecef_m_; } + inline const math::Vector<3> GetMeasuredPosition_ecef_m(void) const { return position_ecef_m_; } /** * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] @@ -114,7 +114,7 @@ class GnssReceiver : public Component, public logger::ILoggable { * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] */ - inline const s2e::math::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } + inline const math::Vector<3> GetMeasuredVelocity_ecef_m_s(void) const { return velocity_ecef_m_s_; } // Override logger::ILoggable /** @@ -133,16 +133,16 @@ class GnssReceiver : public Component, public logger::ILoggable { const size_t component_id_; //!< Receiver ID // Antenna - s2e::math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] - s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) + math::Vector<3> antenna_position_b_m_; //!< GNSS antenna position at the body-fixed frame [m] + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (antenna frame) double half_width_deg_ = 0.0; //!< Half width of the antenna cone model [deg] AntennaModel antenna_model_; //!< Antenna model // Simple position observation s2e::randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] s2e::randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - s2e::math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - s2e::math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] s2e::geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation @@ -168,7 +168,7 @@ class GnssReceiver : public Component, public logger::ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntenna(const s2e::math::Vector<3> position_true_i_m, const s2e::math::Quaternion quaternion_i2b); + void CheckAntenna(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); /** * @fn CheckAntennaSimple * @brief Check the antenna can detect GNSS signal with Simple mode @@ -176,7 +176,7 @@ class GnssReceiver : public Component, public logger::ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaSimple(const s2e::math::Vector<3> position_true_i_m, const s2e::math::Quaternion quaternion_i2b); + void CheckAntennaSimple(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); /** * @fn CheckAntennaCone * @brief Check the antenna can detect GNSS signal with Cone mode @@ -184,7 +184,7 @@ class GnssReceiver : public Component, public logger::ILoggable { * @param [in] position_true_i_m: True position of the spacecraft in the ECI frame [m] * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame */ - void CheckAntennaCone(const s2e::math::Vector<3> position_true_i_m, const s2e::math::Quaternion quaternion_i2b); + void CheckAntennaCone(const math::Vector<3> position_true_i_m, const math::Quaternion quaternion_i2b); /** * @fn SetGnssInfo * @brief Calculate and set the GnssInfo values of target GNSS satellite @@ -192,14 +192,14 @@ class GnssReceiver : public Component, public logger::ILoggable { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] gnss_system_id: ID of target GNSS satellite */ - void SetGnssInfo(const s2e::math::Vector<3> antenna_to_satellite_i_m, const s2e::math::Quaternion quaternion_i2b, const size_t gnss_system_id); + void SetGnssInfo(const math::Vector<3> antenna_to_satellite_i_m, const math::Quaternion quaternion_i2b, const size_t gnss_system_id); /** * @fn AddNoise * @brief Substitutional method for "Measure" in other sensor models inherited Sensor class * @param [in] position_true_ecef_m: True position of the spacecraft in the ECEF frame [m] * @param [in] velocity_true_ecef_m_s: True velocity of the spacecraft in the ECEF frame [m/s] */ - void AddNoise(const s2e::math::Vector<3> position_true_ecef_m, const s2e::math::Vector<3> velocity_true_ecef_m_s); + void AddNoise(const math::Vector<3> position_true_ecef_m, const math::Vector<3> velocity_true_ecef_m_s); /** * @fn ConvertJulianDayToGpsTime * @brief Convert Julian day to GPS time diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index 4776b6701..ac63221d7 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -10,11 +10,11 @@ namespace s2e::components { GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) + const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) + const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -54,7 +54,7 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sens const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; gyro_conf.ReadQuaternion(GSection, "quaternion_b2c", quaternion_b2c); int prescaler = gyro_conf.ReadInt(GSection, "prescaler"); if (prescaler <= 1) prescaler = 1; @@ -75,7 +75,7 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPor const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); const char* GSection = section_name.c_str(); - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; gyro_conf.ReadQuaternion(GSection, "quaternion_b2c", quaternion_b2c); int prescaler = gyro_conf.ReadInt(GSection, "prescaler"); if (prescaler <= 1) prescaler = 1; diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index f4baaad1e..d9f262655 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -34,7 +34,7 @@ class GyroSensor : public Component, public Sensor, public logge * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); + const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); /** * @fn GyroSensor * @brief Constructor with power port @@ -47,7 +47,7 @@ class GyroSensor : public Component, public Sensor, public logge * @param [in] dynamics: Dynamics information */ GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); + const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); /** * @fn ~GyroSensor * @brief Destructor @@ -77,13 +77,13 @@ class GyroSensor : public Component, public Sensor, public logge * @fn GetMeasuredAngularVelocity_c_rad_s * @brief Return observed angular velocity of the component frame with respect to the inertial frame */ - inline const s2e::math::Vector& GetMeasuredAngularVelocity_c_rad_s(void) const { return angular_velocity_c_rad_s_; } + inline const math::Vector& GetMeasuredAngularVelocity_c_rad_s(void) const { return angular_velocity_c_rad_s_; } protected: - s2e::math::Vector angular_velocity_c_rad_s_{ + math::Vector angular_velocity_c_rad_s_{ 0.0}; //!< Observed angular velocity of the component frame with respect to the inertial frame [rad/s] unsigned int sensor_id_ = 0; //!< Sensor ID - s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const dynamics::Dynamics* dynamics_; //!< Dynamics information }; diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index dba5c8f45..275d7fb1f 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -10,14 +10,14 @@ namespace s2e::components { Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), geomagnetic_field_(geomagnetic_field) {} Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -59,7 +59,7 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int int prescaler = magsensor_conf.ReadInt(MSSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magsensor_conf.ReadQuaternion(MSSection, "quaternion_b2c", quaternion_b2c); // Sensor @@ -80,7 +80,7 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, Powe int prescaler = magsensor_conf.ReadInt(MSSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magsensor_conf.ReadQuaternion(MSSection, "quaternion_b2c", quaternion_b2c); // Sensor diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index ab3c5cf85..896f24a3b 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -34,7 +34,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn Magnetometer * @brief Constructor with power port @@ -47,7 +47,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const s2e::math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn ~Magnetometer * @brief Destructor @@ -77,32 +77,32 @@ class Magnetometer : public Component, public Sensor, pu * @fn GetMeasuredMagneticField_c_nT * @brief Return observed magnetic field on the component frame */ - inline const s2e::math::Vector& GetMeasuredMagneticField_c_nT(void) const { return magnetic_field_c_nT_; } + inline const math::Vector& GetMeasuredMagneticField_c_nT(void) const { return magnetic_field_c_nT_; } /** * @fn SetConstantBiasNoise_c_nT * @brief Set constant bias noise at component frame [nT] * @param [in] constant_noise_c_nT: Constant bias noise at component frame [nT] */ - inline void SetConstantBiasNoise_c_nT(s2e::math::Vector constant_noise_c_nT) { bias_noise_c_ = constant_noise_c_nT; } + inline void SetConstantBiasNoise_c_nT(math::Vector constant_noise_c_nT) { bias_noise_c_ = constant_noise_c_nT; } /** * @fn AddConstantBiasNoise_c_nT * @brief Add constant bias noise at component frame [nT] * @param [in] constant_noise_c_nT: Additional constant bias noise at component frame [nT] */ - inline void AddConstantBiasNoise_c_nT(s2e::math::Vector constant_noise_c_nT) { bias_noise_c_ += constant_noise_c_nT; } + inline void AddConstantBiasNoise_c_nT(math::Vector constant_noise_c_nT) { bias_noise_c_ += constant_noise_c_nT; } /** * @fn GetConstantBiasNoise_c_nT * @brief Get constant bias noise at component frame [nT] */ - inline s2e::math::Vector GetConstantBiasNoise_c_nT() const { return bias_noise_c_; } + inline math::Vector GetConstantBiasNoise_c_nT() const { return bias_noise_c_; } protected: - s2e::math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] + math::Vector magnetic_field_c_nT_{0.0}; //!< Observed magnetic field on the component frame [nT] unsigned int sensor_id_ = 0; //!< Sensor ID - s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment }; diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 863d1ce5b..7d1352986 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -13,13 +13,13 @@ namespace s2e::components { -Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, - const s2e::math::Matrix& scale_factor, - const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, - const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const s2e::math::Vector& random_walk_standard_deviation_c_Am2, - const s2e::math::Vector& random_walk_limit_c_Am2, - const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) +Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, + const math::Matrix& scale_factor, + const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, + const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -36,12 +36,12 @@ Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clo } Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, - const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, - const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const s2e::math::Vector& random_walk_standard_deviation_c_Am2, - const s2e::math::Vector& random_walk_limit_c_Am2, - const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) + const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, + const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, + const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -69,7 +69,7 @@ void Magnetorquer::PowerOffRoutine() { output_magnetic_moment_b_Am2_ *= 0.0; } -s2e::math::Vector Magnetorquer::CalcOutputTorque(void) { +math::Vector Magnetorquer::CalcOutputTorque(void) { for (size_t i = 0; i < kMtqDimension; ++i) { // Limit Check if (output_magnetic_moment_c_Am2_[i] > max_magnetic_moment_c_Am2_[i]) { @@ -123,33 +123,33 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int int prescaler = magtorquer_conf.ReadInt(MTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - s2e::math::Vector sf_vec; + math::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); - s2e::math::Matrix scale_factor; + math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { for (size_t j = 0; j < kMtqDimension; j++) { scale_factor[i][j] = sf_vec[i * kMtqDimension + j]; } } - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); - s2e::math::Vector max_magnetic_moment_c_Am2; + math::Vector max_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "max_output_magnetic_moment_c_Am2", max_magnetic_moment_c_Am2); - s2e::math::Vector min_magnetic_moment_c_Am2; + math::Vector min_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "min_output_magnetic_moment_c_Am2", min_magnetic_moment_c_Am2); - s2e::math::Vector bias_noise_c_Am2; + math::Vector bias_noise_c_Am2; magtorquer_conf.ReadVector(MTSection, "constant_bias_noise_c_Am2", bias_noise_c_Am2); double random_walk_step_width_s = component_step_time_s * (double)prescaler; - s2e::math::Vector random_walk_standard_deviation_c_Am2; + math::Vector random_walk_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_standard_deviation_c_Am2", random_walk_standard_deviation_c_Am2); - s2e::math::Vector random_walk_limit_c_Am2; + math::Vector random_walk_limit_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_limit_c_Am2", random_walk_limit_c_Am2); - s2e::math::Vector normal_random_standard_deviation_c_Am2; + math::Vector normal_random_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "white_noise_standard_deviation_c_Am2", normal_random_standard_deviation_c_Am2); Magnetorquer magtorquer(prescaler, clock_generator, actuator_id, quaternion_b2c, scale_factor, max_magnetic_moment_c_Am2, min_magnetic_moment_c_Am2, @@ -168,33 +168,33 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, Powe int prescaler = magtorquer_conf.ReadInt(MTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; - s2e::math::Vector sf_vec; + math::Vector sf_vec; magtorquer_conf.ReadVector(MTSection, "scale_factor_c", sf_vec); - s2e::math::Matrix scale_factor; + math::Matrix scale_factor; for (size_t i = 0; i < kMtqDimension; i++) { for (size_t j = 0; j < kMtqDimension; j++) { scale_factor[i][j] = sf_vec[i * kMtqDimension + j]; } } - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; magtorquer_conf.ReadQuaternion(MTSection, "quaternion_b2c", quaternion_b2c); - s2e::math::Vector max_magnetic_moment_c_Am2; + math::Vector max_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "max_output_magnetic_moment_c_Am2", max_magnetic_moment_c_Am2); - s2e::math::Vector min_magnetic_moment_c_Am2; + math::Vector min_magnetic_moment_c_Am2; magtorquer_conf.ReadVector(MTSection, "min_output_magnetic_moment_c_Am2", min_magnetic_moment_c_Am2); - s2e::math::Vector bias_noise_c_Am2; + math::Vector bias_noise_c_Am2; magtorquer_conf.ReadVector(MTSection, "constant_bias_noise_c_Am2", bias_noise_c_Am2); double random_walk_step_width_s = component_step_time_s * (double)prescaler; - s2e::math::Vector random_walk_standard_deviation_c_Am2; + math::Vector random_walk_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_standard_deviation_c_Am2", random_walk_standard_deviation_c_Am2); - s2e::math::Vector random_walk_limit_c_Am2; + math::Vector random_walk_limit_c_Am2; magtorquer_conf.ReadVector(MTSection, "random_walk_limit_c_Am2", random_walk_limit_c_Am2); - s2e::math::Vector normal_random_standard_deviation_c_Am2; + math::Vector normal_random_standard_deviation_c_Am2; magtorquer_conf.ReadVector(MTSection, "white_noise_standard_deviation_c_Am2", normal_random_standard_deviation_c_Am2); // PowerPort diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index c5c1688bf..cec1294dd 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -43,11 +43,11 @@ class Magnetorquer : public Component, public logger::ILoggable { * @param [in] normal_random_standard_deviation_c_Am2: Standard deviation for the normal random noise in the component frame [Am2] * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, - const s2e::math::Matrix& scale_factor, const s2e::math::Vector& max_magnetic_moment_c_Am2, - const s2e::math::Vector& min_magnetic_moment_c_Am2, const s2e::math::Vector& bias_noise_c_Am2_, - double random_walk_step_width_s, const s2e::math::Vector& random_walk_standard_deviation_c_Am2, - const s2e::math::Vector& random_walk_limit_c_Am2, const s2e::math::Vector& normal_random_standard_deviation_c_Am2, + Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, + const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, + const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, + double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, + const math::Vector& random_walk_limit_c_Am2, const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); /** * @fn Magnetorquer @@ -68,11 +68,11 @@ class Magnetorquer : public Component, public logger::ILoggable { * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Quaternion& quaternion_b2c, const s2e::math::Matrix& scale_factor, - const s2e::math::Vector& max_magnetic_moment_c_Am2, const s2e::math::Vector& min_magnetic_moment_c_Am2, - const s2e::math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, - const s2e::math::Vector& random_walk_standard_deviation_c_Am2, const s2e::math::Vector& random_walk_limit_c_Am2, - const s2e::math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); + const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, + const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, + const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, + const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, + const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); // Override functions for Component /** @@ -102,39 +102,39 @@ class Magnetorquer : public Component, public logger::ILoggable { * @fn GetOutputTorque_b_Nm * @brief Return output torque in the body fixed frame [Nm] */ - inline const s2e::math::Vector& GetOutputTorque_b_Nm(void) const { return torque_b_Nm_; }; + inline const math::Vector& GetOutputTorque_b_Nm(void) const { return torque_b_Nm_; }; /** * @fn SetOutputMagneticMoment_c_Am2 * @brief Set output magnetic moment in the component frame [Am2] */ - inline void SetOutputMagneticMoment_c_Am2(const s2e::math::Vector mag_moment_c) { output_magnetic_moment_c_Am2_ = mag_moment_c; }; + inline void SetOutputMagneticMoment_c_Am2(const math::Vector mag_moment_c) { output_magnetic_moment_c_Am2_ = mag_moment_c; }; /** * @fn SetOutputMagneticMoment_b_Am2 * @brief Return output magnetic moment in the body fixed frame [Am2] */ - inline const s2e::math::Vector& SetOutputMagneticMoment_b_Am2(void) const { return output_magnetic_moment_b_Am2_; }; + inline const math::Vector& SetOutputMagneticMoment_b_Am2(void) const { return output_magnetic_moment_b_Am2_; }; /** * @fn GetOutputMagneticMoment_b_Am2 * @brief Return output magnetic moment in the body fixed frame [Am2] */ - inline const s2e::math::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; + inline const math::Vector& GetOutputMagneticMoment_c_Am2(void) const { return output_magnetic_moment_c_Am2_; }; protected: const int component_id_ = 0; //!< Actuator ID const double kConvertNanoT2T = 1.0e-9; //!< Constant to convert nT to T - s2e::math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] - s2e::math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] - s2e::math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] - s2e::math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame - s2e::math::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame - s2e::math::Matrix scale_factor_; //!< Scale factor matrix - s2e::math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] - s2e::math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] - - s2e::math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] + math::Vector torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] + math::Vector output_magnetic_moment_c_Am2_{0.0}; //!< Output output magnetic moment in the component frame [Am2] + math::Vector output_magnetic_moment_b_Am2_{0.0}; //!< Output output magnetic moment in the body fixed frame [Am2] + math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_c2b_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from component frame to body frame + math::Matrix scale_factor_; //!< Scale factor matrix + math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] + math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] + + math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] RandomWalk random_walk_c_Am2_; //!< Random walk noise s2e::randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise @@ -145,7 +145,7 @@ class Magnetorquer : public Component, public logger::ILoggable { * @brief Calculate output torque * @return Output torque in the body fixed frame [Nm] */ - s2e::math::Vector CalcOutputTorque(void); + math::Vector CalcOutputTorque(void); }; /** diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index 7113ee869..249c6f299 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -20,8 +20,8 @@ MtqMagnetometerInterference::MtqMagnetometerInterference(const std::string file_ for (size_t degree = 1; degree <= polynomial_degree_; degree++) { const std::string key_name = "additional_bias_by_mtq_coefficients_" + std::to_string(static_cast(degree)); - s2e::math::Vector<9> additional_bias_by_mtq_coefficients_vec; - s2e::math::Matrix<3, 3> additional_bias_by_mtq_coefficients; + math::Vector<9> additional_bias_by_mtq_coefficients_vec; + math::Matrix<3, 3> additional_bias_by_mtq_coefficients; ini_file.ReadVector(section.c_str(), key_name.c_str(), additional_bias_by_mtq_coefficients_vec); for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { @@ -37,10 +37,10 @@ void MtqMagnetometerInterference::UpdateInterference(void) { magnetometer_.AddConstantBiasNoise_c_nT(-1.0 * previous_added_bias_c_nT_); // Calculate bias - s2e::math::Vector<3> additional_bias_c_nT{0.0}; - s2e::math::Vector<3> mtq_output_c_Am2 = magnetorquer_.GetOutputMagneticMoment_c_Am2(); + math::Vector<3> additional_bias_c_nT{0.0}; + math::Vector<3> mtq_output_c_Am2 = magnetorquer_.GetOutputMagneticMoment_c_Am2(); for (size_t degree = 1; degree <= polynomial_degree_; degree++) { - s2e::math::Vector<3> hadamard_mtq; + math::Vector<3> hadamard_mtq; for (size_t axis = 0; axis < 3; axis++) { hadamard_mtq[axis] = pow(mtq_output_c_Am2[axis], degree); } diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index 715cbce47..f468fb497 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -33,8 +33,8 @@ class MtqMagnetometerInterference { protected: size_t polynomial_degree_; //!< Polynomial degree - std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise - s2e::math::Vector<3> previous_added_bias_c_nT_{0.0}; + std::vector> additional_bias_by_mtq_coefficients_; //!< Polynomial coefficients of additional bias noise + math::Vector<3> previous_added_bias_c_nT_{0.0}; Magnetometer& magnetometer_; //!< Magnetometer const Magnetorquer& magnetorquer_; //!< Magnetorquer diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 4124f0af1..5494ca4ee 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -15,7 +15,7 @@ namespace s2e::components { ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, + const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, bool drive_flag, const double init_velocity_rad_s) @@ -33,7 +33,7 @@ ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* c stop_limit_angular_velocity_rad_s_(stop_limit_angular_velocity_rad_s), drive_flag_(drive_flag), velocity_limit_rpm_(max_velocity_rpm_), - ode_angular_velocity_(step_width_s_, velocity_limit_rpm_ * s2e::math::rpm_to_rad_s, init_velocity_rad_s), + ode_angular_velocity_(step_width_s_, velocity_limit_rpm_ * math::rpm_to_rad_s, init_velocity_rad_s), rw_jitter_(rw_jitter), is_calculated_jitter_(is_calc_jitter_enabled), is_logged_jitter_(is_log_jitter_enabled) { @@ -42,7 +42,7 @@ ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* c ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, - const s2e::math::Quaternion quaternion_b2c, const s2e::math::Vector<3> position_b_m, const double dead_time_s, + const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag, const double init_velocity_rad_s) @@ -60,7 +60,7 @@ ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* c stop_limit_angular_velocity_rad_s_(stop_limit_angular_velocity_rad_s), drive_flag_(drive_flag), velocity_limit_rpm_(max_velocity_rpm_), - ode_angular_velocity_(step_width_s, velocity_limit_rpm_ * s2e::math::rpm_to_rad_s, init_velocity_rad_s), + ode_angular_velocity_(step_width_s, velocity_limit_rpm_ * math::rpm_to_rad_s, init_velocity_rad_s), rw_jitter_(rw_jitter), is_calculated_jitter_(is_calc_jitter_enabled), is_logged_jitter_(is_log_jitter_enabled) { @@ -68,7 +68,7 @@ ReactionWheel::ReactionWheel(const int prescaler, environment::ClockGenerator* c } void ReactionWheel::Initialize() { - rotation_axis_c_ = s2e::math::Vector<3>(0.0); + rotation_axis_c_ = math::Vector<3>(0.0); rotation_axis_c_[2] = 1.0; rotation_axis_b_ = quaternion_b2c_.InverseFrameConversion(rotation_axis_c_); @@ -79,7 +79,7 @@ void ReactionWheel::Initialize() { generated_angular_acceleration_rad_s2_ = 0.0; angular_velocity_rad_s_ = ode_angular_velocity_.GetAngularVelocity_rad_s(); - angular_velocity_rpm_ = angular_velocity_rad_s_ * s2e::math::rad_s_to_rpm; + angular_velocity_rpm_ = angular_velocity_rad_s_ * math::rad_s_to_rpm; // Turn on RW jitter calculation if (is_calculated_jitter_) { @@ -101,7 +101,7 @@ void ReactionWheel::FastUpdate() { } } -s2e::math::Vector<3> ReactionWheel::CalcTorque() { +math::Vector<3> ReactionWheel::CalcTorque() { if (!drive_flag_) // RW idle mode -> coasting mode { // Clear delay buffer @@ -118,7 +118,7 @@ s2e::math::Vector<3> ReactionWheel::CalcTorque() { if (abs_angular_velocity_rad_s < stop_limit_angular_velocity_rad_s_) { // Stop rotation rotation_direction = 0.0; - s2e::math::Vector<1> zero_rad_s{0.0}; + math::Vector<1> zero_rad_s{0.0}; ode_angular_velocity_.Setup(0.0, zero_rad_s); } else if (angular_velocity_rad_s_ > 0.0) { rotation_direction = -1.0; @@ -143,7 +143,7 @@ s2e::math::Vector<3> ReactionWheel::CalcTorque() { // Substitution double pre_angular_velocity_rad = angular_velocity_rad_s_; angular_velocity_rad_s_ = ode_angular_velocity_.GetAngularVelocity_rad_s(); - angular_velocity_rpm_ = angular_velocity_rad_s_ * s2e::math::rad_s_to_rpm; + angular_velocity_rpm_ = angular_velocity_rad_s_ * math::rad_s_to_rpm; generated_angular_acceleration_rad_s2_ = (angular_velocity_rad_s_ - pre_angular_velocity_rad) / step_width_s_; // Calc output torque by RW @@ -152,20 +152,20 @@ s2e::math::Vector<3> ReactionWheel::CalcTorque() { return output_torque_b_Nm_; } -const s2e::math::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { +const math::Vector<3> ReactionWheel::GetOutputTorque_b_Nm() const { if (is_calculated_jitter_) { // Add jitter_force_b_N_-derived torque and jitter_torque_b_Nm_ to output_torque_b - return output_torque_b_Nm_ - s2e::math::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); + return output_torque_b_Nm_ - math::OuterProduct(position_b_m_, rw_jitter_.GetJitterForce_b_N()) - rw_jitter_.GetJitterTorque_b_Nm(); } else { return output_torque_b_Nm_; } } -const s2e::math::Vector<3> ReactionWheel::GetJitterForce_b_N() const { +const math::Vector<3> ReactionWheel::GetJitterForce_b_N() const { if (is_calculated_jitter_) { return rw_jitter_.GetJitterForce_b_N(); } else { - s2e::math::Vector<3> zero{0.0}; + math::Vector<3> zero{0.0}; return zero; } } @@ -190,7 +190,7 @@ void ReactionWheel::SetVelocityLimit_rpm(const double velocity_limit_rpm) { } else { velocity_limit_rpm_ = velocity_limit_rpm; } - ode_angular_velocity_.SetAngularVelocityLimit_rad_s(velocity_limit_rpm_ * s2e::math::rpm_to_rad_s); + ode_angular_velocity_.SetAngularVelocityLimit_rad_s(velocity_limit_rpm_ * math::rpm_to_rad_s); return; } @@ -198,11 +198,11 @@ std::string ReactionWheel::GetLogHeader() const { std::string str_tmp = ""; std::string component_name = "rw" + std::to_string(static_cast(component_id_)) + "_"; - str_tmp += WriteScalar(component_name + "angular_velocity", "rad/s"); - str_tmp += WriteScalar(component_name + "angular_velocity", "rpm"); - str_tmp += WriteScalar(component_name + "angular_velocity_upper_limit", "rpm"); - str_tmp += WriteScalar(component_name + "target_angular_acceleration", "rad/s2"); - str_tmp += WriteScalar(component_name + "angular_acceleration", "rad/s2"); + str_tmp += logger::WriteScalar(component_name + "angular_velocity", "rad/s"); + str_tmp += logger::WriteScalar(component_name + "angular_velocity", "rpm"); + str_tmp += logger::WriteScalar(component_name + "angular_velocity_upper_limit", "rpm"); + str_tmp += logger::WriteScalar(component_name + "target_angular_acceleration", "rad/s2"); + str_tmp += logger::WriteScalar(component_name + "angular_acceleration", "rad/s2"); if (is_logged_jitter_ && is_calculated_jitter_) { str_tmp += logger::WriteVector(component_name + "jitter_force", "c", "N", 3); @@ -215,11 +215,11 @@ std::string ReactionWheel::GetLogHeader() const { std::string ReactionWheel::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(angular_velocity_rad_s_); - str_tmp += WriteScalar(angular_velocity_rpm_); - str_tmp += WriteScalar(velocity_limit_rpm_); - str_tmp += WriteScalar(target_acceleration_rad_s2_); - str_tmp += WriteScalar(generated_angular_acceleration_rad_s2_); + str_tmp += logger::WriteScalar(angular_velocity_rad_s_); + str_tmp += logger::WriteScalar(angular_velocity_rpm_); + str_tmp += logger::WriteScalar(velocity_limit_rpm_); + str_tmp += logger::WriteScalar(target_acceleration_rad_s2_); + str_tmp += logger::WriteScalar(generated_angular_acceleration_rad_s2_); if (is_logged_jitter_ && is_calculated_jitter_) { str_tmp += logger::WriteVector(rw_jitter_.GetJitterForce_c_N()); @@ -240,8 +240,8 @@ double rotor_inertia_kgm2; double max_torque_Nm; double max_velocity_rpm; // Mounting -s2e::math::Quaternion quaternion_b2c; -s2e::math::Vector<3> position_b_m; +math::Quaternion quaternion_b2c; +math::Vector<3> position_b_m; // Time delay double dead_time_s; double time_constant_s; @@ -281,11 +281,11 @@ void InitParams(int actuator_id, std::string file_name, double compo_update_step rw_ini_file.ReadQuaternion(rw_section, "quaternion_b2c", quaternion_b2c); } else // direction_determination_mode == "DIRECTION" { - s2e::math::Vector<3> direction_b; + math::Vector<3> direction_b; rw_ini_file.ReadVector(rw_section, "direction_b", direction_b); - s2e::math::Vector<3> direction_c(0.0); + math::Vector<3> direction_c(0.0); direction_c[2] = 1.0; - s2e::math::Quaternion q(direction_b, direction_c); + math::Quaternion q(direction_b, direction_c); quaternion_b2c = q.Conjugate(); } rw_ini_file.ReadVector(rw_section, "position_b_m", position_b_m); diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index fc013dc11..c20166028 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -51,8 +51,8 @@ class ReactionWheel : public Component, public logger::ILoggable { * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW */ ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, - const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, + const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -81,8 +81,8 @@ class ReactionWheel : public Component, public logger::ILoggable { * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW [rad/s] */ ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const s2e::math::Quaternion quaternion_b2c, - const s2e::math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, + const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -121,12 +121,12 @@ class ReactionWheel : public Component, public logger::ILoggable { * @fn GetOutputTorque_b_Nm * @brief Return output torque in the body fixed frame [Nm] */ - const s2e::math::Vector<3> GetOutputTorque_b_Nm() const; + const math::Vector<3> GetOutputTorque_b_Nm() const; /** * @fn GetJitterForce_b_N * @brief Return output force by jitter in the body fixed frame [N] */ - inline const s2e::math::Vector<3> GetJitterForce_b_N() const; + inline const math::Vector<3> GetJitterForce_b_N() const; /** * @fn GetDriveFlag * @brief Return drive flag @@ -146,7 +146,7 @@ class ReactionWheel : public Component, public logger::ILoggable { * @fn GetAngularMomentum_b_Nms * @brief Return angular momentum of RW [Nms] */ - inline const s2e::math::Vector<3> GetAngularMomentum_b_Nms() const { return angular_momentum_b_Nms_; }; + inline const math::Vector<3> GetAngularMomentum_b_Nms() const { return angular_momentum_b_Nms_; }; // Setter /** @@ -176,10 +176,10 @@ class ReactionWheel : public Component, public logger::ILoggable { const double rotor_inertia_kgm2_; //!< Inertia of RW rotor [kgm2] const double max_torque_Nm_; //!< Maximum output torque [Nm] const double max_velocity_rpm_; //!< Maximum angular velocity of rotor [rpm] - const s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame - const s2e::math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] - s2e::math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) - s2e::math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. + const math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + const math::Vector<3> position_b_m_; //!< Position of RW in the body fixed frame [m] + math::Vector<3> rotation_axis_c_; //!< Wheel rotation axis on the component frame. Constant as (0 0 1). (Output torque is minus direction) + math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. // Parameters for control delay const double step_width_s_; //!< step width for ReactionWheelOde [sec] @@ -201,8 +201,8 @@ class ReactionWheel : public Component, public logger::ILoggable { double angular_velocity_rpm_ = 0.0; //!< Current angular velocity [rpm] double angular_velocity_rad_s_ = 0.0; //!< Current angular velocity [rad/s] // Output at body frame - s2e::math::Vector<3> output_torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] - s2e::math::Vector<3> angular_momentum_b_Nms_{0.0}; //!< Angular momentum of RW [Nms] + math::Vector<3> output_torque_b_Nm_{0.0}; //!< Output torque in the body fixed frame [Nm] + math::Vector<3> angular_momentum_b_Nms_{0.0}; //!< Angular momentum of RW [Nms] // ODE double velocity_limit_rpm_; //!< Velocity limit defined by users [RPM] @@ -218,7 +218,7 @@ class ReactionWheel : public Component, public logger::ILoggable { * @fn CalcTorque * @brief Calculation of generated torque */ - s2e::math::Vector<3> CalcTorque(); + math::Vector<3> CalcTorque(); /** * @fn Initialize * @brief Initialize function diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index d0b1408fe..e9ba604df 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -13,14 +13,14 @@ namespace s2e::components { ReactionWheelJitter::ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, - const s2e::math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, + const math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, const double bandwidth, const bool considers_structural_resonance) : radial_force_harmonics_coefficients_(radial_force_harmonics_coefficients), radial_torque_harmonics_coefficients_(radial_torque_harmonics_coefficients), update_interval_s_(update_interval_s), quaternion_b2c_(quaternion_b2c), structural_resonance_frequency_Hz_(structural_resonance_frequency_Hz), - structural_resonance_angular_frequency_Hz_(s2e::math::tau * structural_resonance_frequency_Hz), + structural_resonance_angular_frequency_Hz_(math::tau * structural_resonance_frequency_Hz), damping_factor_(damping_factor), bandwidth_(bandwidth), considers_structural_resonance_(considers_structural_resonance) { @@ -28,7 +28,7 @@ ReactionWheelJitter::ReactionWheelJitter(std::vector> radial // Generate random number for initial rotation phase std::random_device seed_gen; std::default_random_engine engine(seed_gen()); - std::uniform_real_distribution dist(0.0, s2e::math::tau); + std::uniform_real_distribution dist(0.0, math::tau); // Initialize RW rotation phase for (size_t i = 0; i < radial_force_harmonics_coefficients_.size(); i++) { jitter_force_rotation_phase_.push_back(dist(engine)); diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index ea2fcec93..88c228b6f 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -38,7 +38,7 @@ class ReactionWheelJitter { */ ReactionWheelJitter(std::vector> radial_force_harmonics_coefficients, std::vector> radial_torque_harmonics_coefficients, const double update_interval_s, - const s2e::math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, + const math::Quaternion quaternion_b2c, const double structural_resonance_frequency_Hz, const double damping_factor, const double bandwidth, const bool considers_structural_resonance); /** * @fn ~ReactionWheelJitter @@ -57,24 +57,24 @@ class ReactionWheelJitter { * @fn GetJitterForce_b_N * @brief Return generated jitter force in the body fixed frame [N] */ - const s2e::math::Vector<3> GetJitterForce_b_N() const { return jitter_force_b_N_; } + const math::Vector<3> GetJitterForce_b_N() const { return jitter_force_b_N_; } /** * @fn GetJitterTorque_b_Nm * @brief Return generated jitter torque in the body fixed frame [Nm] */ - const s2e::math::Vector<3> GetJitterTorque_b_Nm() const { return jitter_torque_b_Nm_; } + const math::Vector<3> GetJitterTorque_b_Nm() const { return jitter_torque_b_Nm_; } /** * @fn GetJitterForce_c_N * @brief Return generated jitter force in the components frame [N] */ - const s2e::math::Vector<3> GetJitterForce_c_N() const { + const math::Vector<3> GetJitterForce_c_N() const { return considers_structural_resonance_ ? filtered_jitter_force_n_c_ : unfiltered_jitter_force_n_c_; } /** * @fn GetJitterTorque_c_Nm * @brief Return generated jitter torque in the component frame [Nm] */ - const s2e::math::Vector<3> GetJitterTorque_c_Nm() const { + const math::Vector<3> GetJitterTorque_c_Nm() const { return considers_structural_resonance_ ? filtered_jitter_torque_n_c_ : unfiltered_jitter_torque_n_c_; } @@ -83,7 +83,7 @@ class ReactionWheelJitter { std::vector> radial_torque_harmonics_coefficients_; //!< Coefficients for radial torque harmonics double update_interval_s_; //!< Jitter update interval [sec] - s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame double structural_resonance_frequency_Hz_; //!< Frequency of structural resonance [Hz] double structural_resonance_angular_frequency_Hz_; //!< Angular Frequency of structural resonance @@ -96,22 +96,22 @@ class ReactionWheelJitter { std::vector jitter_torque_rotation_phase_; //!< 2 * pi * h_i * Omega * t [rad] // Variables for solving difference equations in component frame - s2e::math::Vector<3> unfiltered_jitter_force_n_c_{0.0}; - s2e::math::Vector<3> unfiltered_jitter_force_n_1_c_{0.0}; - s2e::math::Vector<3> unfiltered_jitter_force_n_2_c_{0.0}; - s2e::math::Vector<3> unfiltered_jitter_torque_n_c_{0.0}; - s2e::math::Vector<3> unfiltered_jitter_torque_n_1_c_{0.0}; - s2e::math::Vector<3> unfiltered_jitter_torque_n_2_c_{0.0}; - s2e::math::Vector<3> filtered_jitter_force_n_c_{0.0}; - s2e::math::Vector<3> filtered_jitter_force_n_1_c_{0.0}; - s2e::math::Vector<3> filtered_jitter_force_n_2_c_{0.0}; - s2e::math::Vector<3> filtered_jitter_torque_n_c_{0.0}; - s2e::math::Vector<3> filtered_jitter_torque_n_1_c_{0.0}; - s2e::math::Vector<3> filtered_jitter_torque_n_2_c_{0.0}; + math::Vector<3> unfiltered_jitter_force_n_c_{0.0}; + math::Vector<3> unfiltered_jitter_force_n_1_c_{0.0}; + math::Vector<3> unfiltered_jitter_force_n_2_c_{0.0}; + math::Vector<3> unfiltered_jitter_torque_n_c_{0.0}; + math::Vector<3> unfiltered_jitter_torque_n_1_c_{0.0}; + math::Vector<3> unfiltered_jitter_torque_n_2_c_{0.0}; + math::Vector<3> filtered_jitter_force_n_c_{0.0}; + math::Vector<3> filtered_jitter_force_n_1_c_{0.0}; + math::Vector<3> filtered_jitter_force_n_2_c_{0.0}; + math::Vector<3> filtered_jitter_torque_n_c_{0.0}; + math::Vector<3> filtered_jitter_torque_n_1_c_{0.0}; + math::Vector<3> filtered_jitter_torque_n_2_c_{0.0}; double coefficients_[6]; //!< Coefficients of difference equation - s2e::math::Vector<3> jitter_force_b_N_{0.0}; //!< Generated jitter force in the body frame [N] - s2e::math::Vector<3> jitter_torque_b_Nm_{0.0}; //!< Generated jitter torque in the body frame [Nm] + math::Vector<3> jitter_force_b_N_{0.0}; //!< Generated jitter force in the body frame [N] + math::Vector<3> jitter_torque_b_Nm_{0.0}; //!< Generated jitter torque in the body frame [Nm] /** * @fn AddStructuralResonance diff --git a/src/components/real/aocs/reaction_wheel_ode.cpp b/src/components/real/aocs/reaction_wheel_ode.cpp index d8b34ee86..621b4e598 100644 --- a/src/components/real/aocs/reaction_wheel_ode.cpp +++ b/src/components/real/aocs/reaction_wheel_ode.cpp @@ -10,10 +10,10 @@ namespace s2e::components { ReactionWheelOde::ReactionWheelOde(const double step_width_s, const double velocity_limit_rad_s, const double initial_angular_velocity_rad_s) : OrdinaryDifferentialEquation<1>(step_width_s), velocity_limit_rad_s_(velocity_limit_rad_s) { - this->Setup(0.0, s2e::math::Vector<1>(initial_angular_velocity_rad_s)); + this->Setup(0.0, math::Vector<1>(initial_angular_velocity_rad_s)); } -void ReactionWheelOde::DerivativeFunction(double x, const s2e::math::Vector<1> &state, s2e::math::Vector<1> &rhs) { +void ReactionWheelOde::DerivativeFunction(double x, const math::Vector<1> &state, math::Vector<1> &rhs) { UNUSED(x); double angular_velocity_rad_s = state[0]; diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index 552c2cc04..82d3888e0 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -14,7 +14,7 @@ namespace s2e::components { * @file ReactionWheelOde * @brief Ordinary differential equation of angular velocity of reaction wheel with first-order lag */ -class ReactionWheelOde : public s2e::math::OrdinaryDifferentialEquation<1> { +class ReactionWheelOde : public math::OrdinaryDifferentialEquation<1> { public: /** * @fn ReactionWheelOde @@ -55,7 +55,7 @@ class ReactionWheelOde : public s2e::math::OrdinaryDifferentialEquation<1> { * @param [in] state: State vector * @param [out] rhs: Differentiated value of state vector */ - void DerivativeFunction(double x, const s2e::math::Vector<1>& state, s2e::math::Vector<1>& rhs) override; + void DerivativeFunction(double x, const math::Vector<1>& state, math::Vector<1>& rhs) override; double velocity_limit_rad_s_; double angular_acceleration_rad_s2_ = 0.0; //!< Angular acceleration [rad/s2] diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index c17302608..36b47095a 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -18,7 +18,7 @@ using namespace s2e::math; namespace s2e::components { -StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, +StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, @@ -43,7 +43,7 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g Initialize(); } StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, @@ -69,21 +69,21 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g } void StarSensor::Initialize() { - measured_quaternion_i2c_ = s2e::math::Quaternion(0.0, 0.0, 0.0, 1.0); + measured_quaternion_i2c_ = math::Quaternion(0.0, 0.0, 0.0, 1.0); // Decide delay buffer size max_delay_ = int(output_delay_ * 2 / step_time_s_); if (max_delay_ <= 0) max_delay_ = 1; - vector temp(max_delay_); + vector temp(max_delay_); delay_buffer_ = temp; // Initialize delay buffer for (int i = 0; i < max_delay_; ++i) { delay_buffer_[i] = measured_quaternion_i2c_; } - sight_direction_c_ = s2e::math::Vector<3>(0.0); - first_orthogonal_direction_c = s2e::math::Vector<3>(0.0); - second_orthogonal_direction_c = s2e::math::Vector<3>(0.0); + sight_direction_c_ = math::Vector<3>(0.0); + first_orthogonal_direction_c = math::Vector<3>(0.0); + second_orthogonal_direction_c = math::Vector<3>(0.0); sight_direction_c_[0] = 1.0; //(1,0,0)@Component coordinates, viewing direction first_orthogonal_direction_c[1] = 1.0; //(0,1,0)@Component coordinates, line-of-sight orthogonal direction second_orthogonal_direction_c[2] = 1.0; //(0,0,1)@Component coordinates, line-of-sight orthogonal direction @@ -112,10 +112,10 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa // Add noise on sight direction Quaternion q_sight(sight_direction_c_, sight_direction_noise_); // Random noise on orthogonal direction of sight. Range [0:2pi] - double rot = s2e::math::tau * double(rotation_noise_); + double rot = math::tau * double(rotation_noise_); // Calc observation error on orthogonal direction of sight - s2e::math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; - s2e::math::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); + math::Vector<3> rot_axis = cos(rot) * first_orthogonal_direction_c + sin(rot) * second_orthogonal_direction_c; + math::Quaternion q_ortho(rot_axis, orthogonal_direction_noise_); // Judge errors AllJudgement(local_celestial_information, attitude); @@ -139,9 +139,9 @@ void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_i error_flag_ = false; } -int StarSensor::SunJudgement(const s2e::math::Vector<3>& sun_b) { - s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); +int StarSensor::SunJudgement(const math::Vector<3>& sun_b) { + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double sun_angle_rad = CalAngleVector_rad(sun_b, sight_b); if (sun_angle_rad < sun_forbidden_angle_rad_) return 1; @@ -149,9 +149,9 @@ int StarSensor::SunJudgement(const s2e::math::Vector<3>& sun_b) { return 0; } -int StarSensor::EarthJudgement(const s2e::math::Vector<3>& earth_b) { - s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); +int StarSensor::EarthJudgement(const math::Vector<3>& earth_b) { + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double earth_size_rad = atan2(environment::earth_equatorial_radius_m, earth_b.CalcNorm()); // angles between sat<->earth_center & sat<->earth_edge double earth_center_angle_rad = CalAngleVector_rad(earth_b, sight_b); // angles between sat<->earth_center & sat_sight @@ -162,9 +162,9 @@ int StarSensor::EarthJudgement(const s2e::math::Vector<3>& earth_b) { return 0; } -int StarSensor::MoonJudgement(const s2e::math::Vector<3>& moon_b) { - s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); +int StarSensor::MoonJudgement(const math::Vector<3>& moon_b) { + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); double moon_angle_rad = CalAngleVector_rad(moon_b, sight_b); if (moon_angle_rad < moon_forbidden_angle_rad_) return 1; @@ -172,7 +172,7 @@ int StarSensor::MoonJudgement(const s2e::math::Vector<3>& moon_b) { return 0; } -int StarSensor::CaptureRateJudgement(const s2e::math::Vector<3>& omega_b_rad_s) { +int StarSensor::CaptureRateJudgement(const math::Vector<3>& omega_b_rad_s) { double omega_norm = omega_b_rad_s.CalcNorm(); if (omega_norm > capture_rate_limit_rad_s_) return 1; @@ -186,7 +186,7 @@ std::string StarSensor::GetLogHeader() const { std::string sensor_name = "stt" + sensor_id + "_"; str_tmp += logger::WriteQuaternion(sensor_name + "measured_quaternion", "i2c"); - str_tmp += WriteScalar(sensor_name + "error_flag"); + str_tmp += logger::WriteScalar(sensor_name + "error_flag"); return str_tmp; } @@ -195,14 +195,14 @@ std::string StarSensor::GetLogValue() const { std::string str_tmp = ""; str_tmp += logger::WriteQuaternion(measured_quaternion_i2c_); - str_tmp += WriteScalar(double(error_flag_)); + str_tmp += logger::WriteScalar(double(error_flag_)); return str_tmp; } double StarSensor::CalAngleVector_rad(const Vector<3>& vector1, const Vector<3>& vector2) { - s2e::math::Vector<3> vect1_normal = vector1.CalcNormalizedVector(); - s2e::math::Vector<3> vect2_normal = vector2.CalcNormalizedVector(); + math::Vector<3> vect1_normal = vector1.CalcNormalizedVector(); + math::Vector<3> vect2_normal = vector2.CalcNormalizedVector(); double cosTheta = InnerProduct(vect1_normal, vect2_normal); // Calc cos value double theta_rad = acos(cosTheta); @@ -225,7 +225,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens int prescaler = STT_conf.ReadInt(STTSection, "prescaler"); if (prescaler <= 1) prescaler = 1; double step_time_s = component_step_time_s * prescaler; - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; STT_conf.ReadQuaternion(STTSection, "quaternion_b2c", quaternion_b2c); double standard_deviation_orthogonal_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_orthogonal_direction_rad"); double standard_deviation_sight_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_sight_direction_rad"); @@ -234,13 +234,13 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens double output_interval_sec = STT_conf.ReadDouble(STTSection, "output_interval_s"); int output_interval = max(int(output_interval_sec / step_time_s), 1); double sun_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "sun_exclusion_angle_deg"); - double sun_forbidden_angle_rad = sun_forbidden_angle_deg * s2e::math::pi / 180.0; + double sun_forbidden_angle_rad = sun_forbidden_angle_deg * math::pi / 180.0; double earth_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "earth_exclusion_angle_deg"); - double earth_forbidden_angle_rad = earth_forbidden_angle_deg * s2e::math::pi / 180.0; + double earth_forbidden_angle_rad = earth_forbidden_angle_deg * math::pi / 180.0; double moon_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "moon_exclusion_angle_deg"); - double moon_forbidden_angle_rad = moon_forbidden_angle_deg * s2e::math::pi / 180.0; + double moon_forbidden_angle_rad = moon_forbidden_angle_deg * math::pi / 180.0; double capture_rate_deg_s = STT_conf.ReadDouble(STTSection, "angular_rate_limit_deg_s"); - double capture_rate_rad_s = capture_rate_deg_s * s2e::math::pi / 180.0; + double capture_rate_rad_s = capture_rate_deg_s * math::pi / 180.0; StarSensor stt(prescaler, clock_generator, sensor_id, quaternion_b2c, standard_deviation_orthogonal_direction, standard_deviation_sight_direction, step_time_s, output_delay, output_interval, sun_forbidden_angle_rad, earth_forbidden_angle_rad, moon_forbidden_angle_rad, @@ -259,7 +259,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPor if (prescaler <= 1) prescaler = 1; double step_time_s = component_step_time_s * prescaler; - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; STT_conf.ReadQuaternion(STTSection, "quaternion_b2c", quaternion_b2c); double standard_deviation_orthogonal_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_orthogonal_direction_rad"); double standard_deviation_sight_direction = STT_conf.ReadDouble(STTSection, "standard_deviation_sight_direction_rad"); @@ -268,13 +268,13 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPor double output_interval_sec = STT_conf.ReadDouble(STTSection, "output_interval_s"); int output_interval = max(int(output_interval_sec / step_time_s), 1); double sun_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "sun_exclusion_angle_deg"); - double sun_forbidden_angle_rad = sun_forbidden_angle_deg * s2e::math::pi / 180.0; + double sun_forbidden_angle_rad = sun_forbidden_angle_deg * math::pi / 180.0; double earth_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "earth_exclusion_angle_deg"); - double earth_forbidden_angle_rad = earth_forbidden_angle_deg * s2e::math::pi / 180.0; + double earth_forbidden_angle_rad = earth_forbidden_angle_deg * math::pi / 180.0; double moon_forbidden_angle_deg = STT_conf.ReadDouble(STTSection, "moon_exclusion_angle_deg"); - double moon_forbidden_angle_rad = moon_forbidden_angle_deg * s2e::math::pi / 180.0; + double moon_forbidden_angle_rad = moon_forbidden_angle_deg * math::pi / 180.0; double capture_rate_deg_s = STT_conf.ReadDouble(STTSection, "angular_rate_limit_deg_s"); - double capture_rate_rad_s = capture_rate_deg_s * s2e::math::pi / 180.0; + double capture_rate_rad_s = capture_rate_deg_s * math::pi / 180.0; power_port->InitializeWithInitializeFile(file_name); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 772e3bd53..e28e0add4 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -45,7 +45,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] dynamics: Dynamics information * @param [in] local_environment: Local environment information */ - StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, @@ -71,7 +71,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] local_environment: Local environment information */ StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, @@ -100,7 +100,7 @@ class StarSensor : public Component, public logger::ILoggable { * @fn GetMeasuredQuaternion_i2c * @brief Return observed quaternion from the inertial frame to the component frame */ - inline const s2e::math::Quaternion GetMeasuredQuaternion_i2c() const { return measured_quaternion_i2c_; }; + inline const math::Quaternion GetMeasuredQuaternion_i2c() const { return measured_quaternion_i2c_; }; /** * @fn GetErrorFlag * @brief Return error flag @@ -110,11 +110,11 @@ class StarSensor : public Component, public logger::ILoggable { protected: // StarSensor general parameters const int component_id_; //!< Sensor ID - s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame - s2e::math::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion - s2e::math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame - s2e::math::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame - s2e::math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame + math::Quaternion measured_quaternion_i2c_ = {0.0, 0.0, 0.0, 1.0}; //!< StarSensor observed quaternion + math::Vector<3> sight_direction_c_; //!< Sight direction vector at component frame + math::Vector<3> first_orthogonal_direction_c; //!< The first orthogonal direction of sight at component frame + math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame // Noise parameters s2e::randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction @@ -123,7 +123,7 @@ class StarSensor : public Component, public logger::ILoggable { // Delay emulation parameters int max_delay_; //!< Max delay - std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation + std::vector delay_buffer_; //!< Buffer of quaternion for delay emulation int buffer_position_; //!< Buffer position double step_time_s_; //!< Step time for delay calculation [sec] unsigned int output_delay_; //!< Output delay [0, max_delay_] [step_sec] @@ -155,7 +155,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] attitude: dynamics::attitude::Attitude information */ - s2e::math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); + math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn AllJudgement @@ -170,28 +170,28 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] sun_b: Sun direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int SunJudgement(const s2e::math::Vector<3>& sun_b); + int SunJudgement(const math::Vector<3>& sun_b); /** * @fn EarthJudgement * @brief Judge violation of earth forbidden angle * @param [in] earth_b: Earth direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int EarthJudgement(const s2e::math::Vector<3>& earth_b); + int EarthJudgement(const math::Vector<3>& earth_b); /** * @fn MoonJudgement * @brief Judge violation of moon forbidden angle * @param [in] moon_b: Moon direction vector in the body fixed frame * @return 1: violated, 0: not violated */ - int MoonJudgement(const s2e::math::Vector<3>& moon_b); + int MoonJudgement(const math::Vector<3>& moon_b); /** * @fn CaptureRateJudgement * @brief Judge violation of angular velocity limit * @param [in] omega_b_rad_s: Angular velocity of spacecraft in the body fixed frame * @return 1: violated, 0: not violated */ - int CaptureRateJudgement(const s2e::math::Vector<3>& omega_b_rad_s); + int CaptureRateJudgement(const math::Vector<3>& omega_b_rad_s); /** * @fn CalAngleVector_rad * @brief Calculate angle between two vectors @@ -199,7 +199,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] vector2: Second vector * @return Angle between two vectors [rad] */ - double CalAngleVector_rad(const s2e::math::Vector<3>& vector1, const s2e::math::Vector<3>& vector2); + double CalAngleVector_rad(const math::Vector<3>& vector1, const math::Vector<3>& vector2); /** * @fn Initialize diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 82e74e40a..15fe6210a 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -16,7 +16,7 @@ using namespace std; namespace s2e::components { -SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, +SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) @@ -31,7 +31,7 @@ SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_gen } SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, + const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(prescaler, clock_generator, power_port), @@ -61,8 +61,8 @@ void SunSensor::MainRoutine(const int time_count) { } void SunSensor::Measure() { - s2e::math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); - s2e::math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); + math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); + math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); sun_direction_true_c_ = quaternion_b2c_.FrameConversion(sun_dir_b); // Frame conversion from body to component @@ -89,7 +89,7 @@ void SunSensor::Measure() { measured_sun_direction_c_ = measured_sun_direction_c_.CalcNormalizedVector(); } else { - measured_sun_direction_c_ = s2e::math::Vector<3>(0); + measured_sun_direction_c_ = math::Vector<3>(0); alpha_rad_ = 0.0; beta_rad_ = 0.0; } @@ -98,7 +98,7 @@ void SunSensor::Measure() { } void SunSensor::SunDetectionJudgement() { - s2e::math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); + math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); @@ -114,10 +114,10 @@ void SunSensor::SunDetectionJudgement() { } void SunSensor::CalcSolarIlluminance() { - s2e::math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); + math::Vector<3> sun_direction_c = sun_direction_true_c_.CalcNormalizedVector(); double sun_angle_ = acos(sun_direction_c[2]); - if (sun_angle_ > s2e::math::pi_2) { + if (sun_angle_ > math::pi_2) { solar_illuminance_W_m2_ = 0.0; return; } @@ -128,8 +128,8 @@ void SunSensor::CalcSolarIlluminance() { } double SunSensor::TanRange(double x) { - if (x > s2e::math::pi_2) x = s2e::math::pi - x; - if (x < -s2e::math::pi_2) x = -s2e::math::pi - x; + if (x > math::pi_2) x = math::pi - x; + if (x < -math::pi_2) x = -math::pi - x; return x; } @@ -139,7 +139,7 @@ string SunSensor::GetLogHeader() const { std::string sensor_name = "sun_sensor" + sensor_id + "_"; str_tmp += logger::WriteVector(sensor_name + "measured_sun_direction", "c", "-", 3); - str_tmp += WriteScalar(sensor_name + "sun_detected_flag", "-"); + str_tmp += logger::WriteScalar(sensor_name + "sun_detected_flag", "-"); return str_tmp; } @@ -148,7 +148,7 @@ string SunSensor::GetLogValue() const { string str_tmp = ""; str_tmp += logger::WriteVector(measured_sun_direction_c_); - str_tmp += WriteScalar(double(sun_detected_flag_)); + str_tmp += logger::WriteScalar(double(sun_detected_flag_)); return str_tmp; } @@ -163,20 +163,20 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, int prescaler = ss_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; ss_conf.ReadQuaternion(Section, "quaternion_b2c", quaternion_b2c); double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; detectable_angle_deg = ss_conf.ReadDouble(Section, "field_of_view_deg"); - detectable_angle_rad = s2e::math::pi / 180.0 * detectable_angle_deg; + detectable_angle_rad = math::pi / 180.0 * detectable_angle_deg; double nr_stddev = 0.0; nr_stddev = ss_conf.ReadDouble(Section, "white_noise_standard_deviation_deg"); - nr_stddev *= s2e::math::pi / 180.0; + nr_stddev *= math::pi / 180.0; double nr_bias_stddev = 0.0; nr_bias_stddev = ss_conf.ReadDouble(Section, "bias_standard_deviation_deg"); - nr_bias_stddev *= s2e::math::pi / 180.0; + nr_bias_stddev *= math::pi / 180.0; double intensity_lower_threshold_percent; intensity_lower_threshold_percent = ss_conf.ReadDouble(Section, "intensity_lower_threshold_percent"); @@ -196,20 +196,20 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* int prescaler = ss_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; ss_conf.ReadQuaternion(Section, "quaternion_b2c", quaternion_b2c); double detectable_angle_deg = 0.0, detectable_angle_rad = 0.0; detectable_angle_deg = ss_conf.ReadDouble(Section, "field_of_view_deg"); - detectable_angle_rad = s2e::math::pi / 180.0 * detectable_angle_deg; + detectable_angle_rad = math::pi / 180.0 * detectable_angle_deg; double nr_stddev = 0.0; nr_stddev = ss_conf.ReadDouble(Section, "white_noise_standard_deviation_deg"); - nr_stddev *= s2e::math::pi / 180.0; + nr_stddev *= math::pi / 180.0; double nr_bias_stddev = 0.0; nr_bias_stddev = ss_conf.ReadDouble(Section, "bias_standard_deviation_deg"); - nr_bias_stddev *= s2e::math::pi / 180.0; + nr_bias_stddev *= math::pi / 180.0; double intensity_lower_threshold_percent; intensity_lower_threshold_percent = ss_conf.ReadDouble(Section, "intensity_lower_threshold_percent"); diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index f8aba0d41..cd23d2d38 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -37,7 +37,7 @@ class SunSensor : public Component, public logger::ILoggable { * @param [in] srp_environment: Solar Radiation Pressure environment * @param [in] local_celestial_information: Local celestial information */ - SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const s2e::math::Quaternion& quaternion_b2c, + SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -57,7 +57,7 @@ class SunSensor : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information */ SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, + const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); @@ -82,19 +82,19 @@ class SunSensor : public Component, public logger::ILoggable { // Getter inline bool GetSunDetectedFlag() const { return sun_detected_flag_; }; - inline const s2e::math::Vector<3> GetMeasuredSunDirection_c() const { return measured_sun_direction_c_; }; - inline const s2e::math::Vector<3> GetMeasuredSunDirection_b() const { return quaternion_b2c_.Conjugate().FrameConversion(measured_sun_direction_c_); }; + inline const math::Vector<3> GetMeasuredSunDirection_c() const { return measured_sun_direction_c_; }; + inline const math::Vector<3> GetMeasuredSunDirection_b() const { return quaternion_b2c_.Conjugate().FrameConversion(measured_sun_direction_c_); }; inline double GetSunAngleAlpha_rad() const { return alpha_rad_; }; inline double GetSunAngleBeta_rad() const { return beta_rad_; }; inline double GetSolarIlluminance_W_m2() const { return solar_illuminance_W_m2_; }; protected: const int component_id_; //!< Sensor ID - s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) + math::Quaternion quaternion_b2c_; //!< Quaternion from body frame to component frame (Z-axis of the component is sight direction) double intensity_lower_threshold_percent_; //!< If the light intensity becomes smaller than this, it becomes impossible to get the sun direction - s2e::math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame - s2e::math::Vector<3> measured_sun_direction_c_{0.0}; //!< Measured sun vector in the component frame + math::Vector<3> sun_direction_true_c_{0.0}; //!< True value of sun vector in the component frame + math::Vector<3> measured_sun_direction_c_{0.0}; //!< Measured sun vector in the component frame double alpha_rad_ = 0.0; //!< Angle between Z-axis and the sun direction projected on XZ plane [rad] double beta_rad_ = 0.0; //!< Angle between Z-axis and the sun direction projected on YZ plane [rad] diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index 3eb527fd4..12f24c46b 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -13,7 +13,7 @@ namespace s2e::components { -Antenna::Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, +Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) : component_id_(component_id), is_transmitter_(is_transmitter), is_receiver_(is_receiver), frequency_MHz_(frequency_MHz) { quaternion_b2c_ = quaternion_b2c; @@ -47,7 +47,7 @@ Antenna::Antenna(const int component_id, const s2e::math::Quaternion& quaternion } } -Antenna::Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, +Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const double tx_bitrate_bps, const double tx_output_power_W, const AntennaParameters tx_parameters, const double rx_system_noise_temperature_K, const AntennaParameters rx_parameters) : component_id_(component_id), diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index 28023cff6..7419e3219 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -8,8 +8,8 @@ #include #include -using s2e::math::Quaternion; -using s2e::math::Vector; +using math::Quaternion; +using math::Vector; #include #include "./antenna_radiation_pattern.hpp" @@ -56,7 +56,7 @@ class Antenna { * @param [in] tx_parameters: output, gain, loss_feeder, loss_pointing for TX * @param [in] rx_parameters: gain, loss_feeder, loss_pointing, system_temperature for RX */ - Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, + Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters); /** @@ -73,7 +73,7 @@ class Antenna { * @param [in] rx_system_noise_temperature_K: Receive system noise temperature [K] * @param [in] rx_parameters: RX antenna parameters */ - Antenna(const int component_id, const s2e::math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, + Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, const double frequency_MHz, const double tx_bitrate_bps, const double tx_output_power_W, const AntennaParameters tx_parameters, const double rx_system_noise_temperature_K, const AntennaParameters rx_parameters); /** diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index 3d2382862..f924fbe41 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -38,7 +38,7 @@ class AntennaRadiationPattern { * @param[in] phi_max_rad_: Maximum value of phi */ AntennaRadiationPattern(const std::string file_path, const size_t length_theta = 360, const size_t length_phi = 181, - const double theta_max_rad = s2e::math::tau, const double phi_max_rad = s2e::math::pi); + const double theta_max_rad = math::tau, const double phi_max_rad = math::pi); /** * @fn ~AntennaRadiationPattern @@ -58,8 +58,8 @@ class AntennaRadiationPattern { private: size_t length_theta_ = 360; //!< Length of grid for theta direction size_t length_phi_ = 181; //!< Length of grid for phi direction - double theta_max_rad_ = s2e::math::tau; //!< Maximum value of theta - double phi_max_rad_ = s2e::math::pi; //!< Maximum value of phi + double theta_max_rad_ = math::tau; //!< Maximum value of theta + double phi_max_rad_ = math::pi; //!< Maximum value of phi std::vector> gain_dBi_; //!< Antenna gain table [dBi] }; diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index a5deff17d..c3b3f9edd 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -74,7 +74,7 @@ double GroundStationCalculator::CalcCn0OnGs(const dynamics::Dynamics& dynamics, Vector<3> pos_gs2sc_i = sc_pos_i - gs_pos_i; double dist_sc_gs_km = pos_gs2sc_i.CalcNorm() / 1000.0; - double loss_space_dB = -20.0 * log10(4.0 * s2e::math::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); + double loss_space_dB = -20.0 * log10(4.0 * math::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); // GS direction on SC TX antenna frame Vector<3> sc_to_gs_i = gs_pos_i - sc_pos_i; @@ -104,8 +104,8 @@ std::string GroundStationCalculator::GetLogHeader() const { std::string str_tmp = ""; std::string component_name = "gs_calculator_"; - str_tmp += WriteScalar(component_name + "max_bitrate", "Mbps"); - str_tmp += WriteScalar(component_name + "receive_margin", "dB"); + str_tmp += logger::WriteScalar(component_name + "max_bitrate", "Mbps"); + str_tmp += logger::WriteScalar(component_name + "receive_margin", "dB"); return str_tmp; } @@ -113,8 +113,8 @@ std::string GroundStationCalculator::GetLogHeader() const { std::string GroundStationCalculator::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(max_bitrate_Mbps_); - str_tmp += WriteScalar(receive_margin_dB_); + str_tmp += logger::WriteScalar(max_bitrate_Mbps_); + str_tmp += logger::WriteScalar(receive_margin_dB_); return str_tmp; } diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index b04e5b0da..a05730683 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -15,7 +15,7 @@ using namespace s2e::math; namespace s2e::components { -Telescope::Telescope(environment::ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, +Telescope::Telescope(environment::ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, @@ -40,8 +40,8 @@ Telescope::Telescope(environment::ClockGenerator* clock_generator, const s2e::ma x_field_of_view_rad = x_number_of_pix_ * x_fov_per_pix_; y_field_of_view_rad = y_number_of_pix_ * y_fov_per_pix_; - assert(x_field_of_view_rad < s2e::math::pi_2); // Avoid the case that the field of view is over 90 degrees - assert(y_field_of_view_rad < s2e::math::pi_2); + assert(x_field_of_view_rad < math::pi_2); // Avoid the case that the field of view is over 90 degrees + assert(y_field_of_view_rad < math::pi_2); sight_direction_c_ = Vector<3>(0); sight_direction_c_[0] = 1; // (1,0,0) at component frame, Sight direction vector @@ -60,7 +60,7 @@ Telescope::Telescope(environment::ClockGenerator* clock_generator, const s2e::ma } // Get initial spacecraft position in ECEF if (orbit_ != nullptr) { - s2e::math::Vector<3> initial_spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); + math::Vector<3> initial_spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); initial_ground_position_ecef_m_ = environment::earth_equatorial_radius_m * initial_spacecraft_position_ecef_m; initial_ground_position_ecef_m_ /= (orbit_->GetGeodeticPosition().GetAltitude_m() + environment::earth_equatorial_radius_m); } @@ -85,26 +85,26 @@ void Telescope::MainRoutine(const int time_count) { // sun_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("SUN")); // earth_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("EARTH")); // moon_pos_c = quaternion_b2c_.FrameConversion(dynamics_->celestial_->GetPositionFromSpacecraft_b_m("MOON")); - // angle_sun = CalcAngleTwoVectors_rad(sight_direction_c_, sun_pos_c) * 180/s2e::math::pi; - // angle_earth = CalcAngleTwoVectors_rad(sight_direction_c_, earth_pos_c) * 180 / s2e::math::pi; angle_moon = - // CalcAngleTwoVectors_rad(sight_direction_c_, moon_pos_c) * 180 / s2e::math::pi; + // angle_sun = CalcAngleTwoVectors_rad(sight_direction_c_, sun_pos_c) * 180/math::pi; + // angle_earth = CalcAngleTwoVectors_rad(sight_direction_c_, earth_pos_c) * 180 / math::pi; angle_moon = + // CalcAngleTwoVectors_rad(sight_direction_c_, moon_pos_c) * 180 / math::pi; //****************************************************************************** // Direction calculation of ground point ObserveGroundPositionDeviation(); } -bool Telescope::JudgeForbiddenAngle(const s2e::math::Vector<3>& target_b, const double forbidden_angle) { - s2e::math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); - s2e::math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); - double angle_rad = s2e::math::CalcAngleTwoVectors_rad(target_b, sight_b); +bool Telescope::JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle) { + math::Quaternion q_c2b = quaternion_b2c_.Conjugate(); + math::Vector<3> sight_b = q_c2b.FrameConversion(sight_direction_c_); + double angle_rad = math::CalcAngleTwoVectors_rad(target_b, sight_b); if (angle_rad < forbidden_angle) { return true; } else return false; } -void Telescope::Observe(s2e::math::Vector<2>& position_image_sensor, const s2e::math::Vector<3, double> target_b) { - s2e::math::Vector<3, double> target_c = quaternion_b2c_.FrameConversion(target_b); +void Telescope::Observe(math::Vector<2>& position_image_sensor, const math::Vector<3, double> target_b) { + math::Vector<3, double> target_c = quaternion_b2c_.FrameConversion(target_b); double arg_x = atan2(target_c[2], target_c[0]); // Angle from X-axis on XZ plane in the component frame double arg_y = atan2(target_c[1], target_c[0]); // Angle from X-axis on XY plane in the component frame @@ -124,8 +124,8 @@ void Telescope::ObserveStars() { size_t count = 0; // Counter for while loop while (star_list_in_sight.size() < number_of_logged_stars_) { - s2e::math::Vector<3> target_b = hipparcos_->GetStarDirection_b(count, quaternion_i2b); - s2e::math::Vector<3> target_c = quaternion_b2c_.FrameConversion(target_b); + math::Vector<3> target_b = hipparcos_->GetStarDirection_b(count, quaternion_i2b); + math::Vector<3> target_c = quaternion_b2c_.FrameConversion(target_b); double arg_x = atan2(target_c[2], target_c[0]); // Angle from X-axis on XZ plane in the component frame double arg_y = atan2(target_c[1], target_c[0]); // Angle from X-axis on XY plane in the component frame @@ -176,12 +176,12 @@ void Telescope::ObserveGroundPositionDeviation() { } Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); - s2e::math::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); - s2e::math::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); - s2e::math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); - s2e::math::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); - s2e::math::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); - s2e::math::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); + math::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); + math::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); + math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + math::Vector<3> direction_i = (dcm_ecef_to_i * direction_ecef).CalcNormalizedVector(); + math::Vector<3> direction_b = quaternion_i2b.FrameConversion(direction_i); + math::Vector<3> target_c = quaternion_b2c_.FrameConversion(direction_b); // Ground position in the image sensor in the satellite frame double ground_angle_z_rad = atan2(target_c[2], target_c[0]); @@ -195,61 +195,61 @@ string Telescope::GetLogHeader() const { std::string component_name = "telescope_"; - str_tmp += WriteScalar(component_name + "sun_in_exclusion_angle", ""); - str_tmp += WriteScalar(component_name + "earth_in_exclusion_angle", ""); - str_tmp += WriteScalar(component_name + "moon_in_exclusion_angle", ""); + str_tmp += logger::WriteScalar(component_name + "sun_in_exclusion_angle", ""); + str_tmp += logger::WriteScalar(component_name + "earth_in_exclusion_angle", ""); + str_tmp += logger::WriteScalar(component_name + "moon_in_exclusion_angle", ""); str_tmp += logger::WriteVector(component_name + "sun_position", "img", "pix", 2); str_tmp += logger::WriteVector(component_name + "earth_position", "img", "pix", 2); str_tmp += logger::WriteVector(component_name + "moon_position", "img", "pix", 2); - str_tmp += WriteScalar(component_name + "ground_position_x", "pix"); - str_tmp += WriteScalar(component_name + "ground_position_y", "pix"); + str_tmp += logger::WriteScalar(component_name + "ground_position_x", "pix"); + str_tmp += logger::WriteScalar(component_name + "ground_position_y", "pix"); // When Hipparcos Catalogue was not read, no output of ObserveStars if (hipparcos_->IsCalcEnabled) { for (size_t i = 0; i < number_of_logged_stars_; i++) { - str_tmp += WriteScalar(component_name + "hipparcos_id (" + to_string(i) + ")", " "); - str_tmp += WriteScalar(component_name + "visible_magnitude (" + to_string(i) + ")", " "); + str_tmp += logger::WriteScalar(component_name + "hipparcos_id (" + to_string(i) + ")", " "); + str_tmp += logger::WriteScalar(component_name + "visible_magnitude (" + to_string(i) + ")", " "); str_tmp += logger::WriteVector(component_name + "star_position (" + to_string(i) + ")", "img", "pix", 2); } } // Debug output ********************************************** - // str_tmp += WriteScalar("angle_sun", ""); - // str_tmp += WriteScalar("angle_earth", ""); - // str_tmp += WriteScalar("angle_moon", ""); + // str_tmp += logger::WriteScalar("angle_sun", ""); + // str_tmp += logger::WriteScalar("angle_earth", ""); + // str_tmp += logger::WriteScalar("angle_moon", ""); //********************************************************** return str_tmp; } string Telescope::GetLogValue() const { string str_tmp = ""; - str_tmp += WriteScalar(is_sun_in_forbidden_angle); - str_tmp += WriteScalar(is_earth_in_forbidden_angle); - str_tmp += WriteScalar(is_moon_in_forbidden_angle); + str_tmp += logger::WriteScalar(is_sun_in_forbidden_angle); + str_tmp += logger::WriteScalar(is_earth_in_forbidden_angle); + str_tmp += logger::WriteScalar(is_moon_in_forbidden_angle); str_tmp += logger::WriteVector(sun_position_image_sensor); str_tmp += logger::WriteVector(earth_position_image_sensor); str_tmp += logger::WriteVector(moon_position_image_sensor); - str_tmp += WriteScalar(ground_position_x_image_sensor_); - str_tmp += WriteScalar(ground_position_y_image_sensor_); + str_tmp += logger::WriteScalar(ground_position_x_image_sensor_); + str_tmp += logger::WriteScalar(ground_position_y_image_sensor_); // When Hipparcos Catalogue was not read, no output of ObserveStars if (hipparcos_->IsCalcEnabled) { for (size_t i = 0; i < number_of_logged_stars_; i++) { - str_tmp += WriteScalar(star_list_in_sight[i].hipparcos_data.hipparcos_id); - str_tmp += WriteScalar(star_list_in_sight[i].hipparcos_data.visible_magnitude); + str_tmp += logger::WriteScalar(star_list_in_sight[i].hipparcos_data.hipparcos_id); + str_tmp += logger::WriteScalar(star_list_in_sight[i].hipparcos_data.visible_magnitude); str_tmp += logger::WriteVector(star_list_in_sight[i].position_image_sensor); } } // Debug output ********************************************** - // str_tmp += WriteScalar(angle_sun); - // str_tmp += WriteScalar(angle_earth); - // str_tmp += WriteScalar(angle_moon); + // str_tmp += logger::WriteScalar(angle_sun); + // str_tmp += logger::WriteScalar(angle_earth); + // str_tmp += logger::WriteScalar(angle_moon); //********************************************************** return str_tmp; } Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { - using s2e::math::pi; + using math::pi; setting_file_reader::IniAccess Telescope_conf(file_name); const string st_sensor_id = std::to_string(static_cast(sensor_id)); @@ -262,7 +262,7 @@ Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor strcat(TelescopeSection, cs); #endif - s2e::math::Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; Telescope_conf.ReadQuaternion(TelescopeSection, "quaternion_b2c", quaternion_b2c); double sun_forbidden_angle_deg = Telescope_conf.ReadDouble(TelescopeSection, "sun_exclusion_angle_deg"); diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index bad6d0fbf..d6c6310b5 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -25,7 +25,7 @@ namespace s2e::components { */ struct Star { HipparcosData hipparcos_data; //!< Hipparcos data - s2e::math::Vector<2> position_image_sensor; //!< Position of image sensor + math::Vector<2> position_image_sensor; //!< Position of image sensor }; /* @@ -52,7 +52,7 @@ class Telescope : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] orbit: Orbit information */ - Telescope(environment::ClockGenerator* clock_generator, const s2e::math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, + Telescope(environment::ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); @@ -69,8 +69,8 @@ class Telescope : public Component, public logger::ILoggable { protected: private: - s2e::math::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame - s2e::math::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame + math::Quaternion quaternion_b2c_; //!< Quaternion from the body frame to component frame + math::Vector<3> sight_direction_c_; //!< Sight direction vector in the component frame double sun_forbidden_angle_rad_; //!< Sun forbidden angle [rad] double earth_forbidden_angle_rad_; //!< Earth forbidden angle [rad] @@ -91,10 +91,10 @@ class Telescope : public Component, public logger::ILoggable { size_t number_of_logged_stars_; //!< Number of logged stars - s2e::math::Vector<2> sun_position_image_sensor{-1}; //!< Position of the sun on the image plane - s2e::math::Vector<2> earth_position_image_sensor{-1}; //!< Position of the earth on the image plane - s2e::math::Vector<2> moon_position_image_sensor{-1}; //!< Position of the moon on the image plane - s2e::math::Vector<3> initial_ground_position_ecef_m_; //!< Initial spacecraft position + math::Vector<2> sun_position_image_sensor{-1}; //!< Position of the sun on the image plane + math::Vector<2> earth_position_image_sensor{-1}; //!< Position of the earth on the image plane + math::Vector<2> moon_position_image_sensor{-1}; //!< Position of the moon on the image plane + math::Vector<3> initial_ground_position_ecef_m_; //!< Initial spacecraft position std::vector star_list_in_sight; //!< Star information in the field of view @@ -104,7 +104,7 @@ class Telescope : public Component, public logger::ILoggable { * @param [in] target_b: Direction vector of target on the body fixed frame * @param [in] forbidden_angle: Forbidden angle [rad] */ - bool JudgeForbiddenAngle(const s2e::math::Vector<3>& target_b, const double forbidden_angle); + bool JudgeForbiddenAngle(const math::Vector<3>& target_b, const double forbidden_angle); // Override functions for Component /** @@ -119,7 +119,7 @@ class Telescope : public Component, public logger::ILoggable { * @param [out] position_image_sensor: Position on image sensor plane * @param [in] target_b: Direction vector of target on the body fixed frame */ - void Observe(s2e::math::Vector<2>& position_image_sensor, const s2e::math::Vector<3, double> target_b); + void Observe(math::Vector<2>& position_image_sensor, const math::Vector<3, double> target_b); /** * @fn ObserveStars * @brief Observe stars from Hipparcos catalogue @@ -149,9 +149,9 @@ class Telescope : public Component, public logger::ILoggable { virtual std::string GetLogValue() const; // For debug ********************************************** - // s2e::math::Vector<3> sun_pos_c; - // s2e::math::Vector<3> earth_pos_c; - // s2e::math::Vector<3> moon_pos_c; + // math::Vector<3> sun_pos_c; + // math::Vector<3> earth_pos_c; + // math::Vector<3> moon_pos_c; // double angle_sun; // double angle_earth; // double angle_moon; diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index a6442ad3f..9637e5a23 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -58,15 +58,15 @@ Battery::~Battery() {} std::string Battery::GetLogHeader() const { std::string str_tmp = ""; std::string component_name = "battery_"; - str_tmp += WriteScalar(component_name + "voltage", "V"); - str_tmp += WriteScalar(component_name + "dod", "%"); + str_tmp += logger::WriteScalar(component_name + "voltage", "V"); + str_tmp += logger::WriteScalar(component_name + "dod", "%"); return str_tmp; } std::string Battery::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(battery_voltage_V_); - str_tmp += WriteScalar(depth_of_discharge_percent_); + str_tmp += logger::WriteScalar(battery_voltage_V_); + str_tmp += logger::WriteScalar(depth_of_discharge_percent_); return str_tmp; } diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index 51f2c2f4b..999369a02 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -38,8 +38,8 @@ void CsvScenarioInterface::Initialize(const std::string file_name) { bool CsvScenarioInterface::IsCsvScenarioEnabled() { return CsvScenarioInterface::is_csv_scenario_enabled_; } -s2e::math::Vector<3> CsvScenarioInterface::GetSunDirectionBody(const double time_query) { - s2e::math::Vector<3> sun_dir_b; +math::Vector<3> CsvScenarioInterface::GetSunDirectionBody(const double time_query) { + math::Vector<3> sun_dir_b; sun_dir_b[0] = GetValueFromBuffer("sun_dir_b_x", time_query); sun_dir_b[1] = GetValueFromBuffer("sun_dir_b_y", time_query); sun_dir_b[2] = GetValueFromBuffer("sun_dir_b_z", time_query); diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index f105dd773..98dc2180d 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -38,7 +38,7 @@ class CsvScenarioInterface { * @brief Return sun direction vector in the body fixed frame * @param [in] time_query: Time query */ - static s2e::math::Vector<3> GetSunDirectionBody(const double time_query); + static math::Vector<3> GetSunDirectionBody(const double time_query); /** * @fn GetSunFlag * @brief Return sun flag diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index e89729490..5a20fb79e 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -40,15 +40,15 @@ PcuInitialStudy::~PcuInitialStudy() {} std::string PcuInitialStudy::GetLogHeader() const { std::string str_tmp = ""; std::string component_name = "pcu_initial_study_"; - str_tmp += WriteScalar(component_name + "power_consumption", "W"); - str_tmp += WriteScalar(component_name + "bus_voltage", "V"); + str_tmp += logger::WriteScalar(component_name + "power_consumption", "W"); + str_tmp += logger::WriteScalar(component_name + "bus_voltage", "V"); return str_tmp; } std::string PcuInitialStudy::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(power_consumption_W_); - str_tmp += WriteScalar(bus_voltage_V_); + str_tmp += logger::WriteScalar(power_consumption_W_); + str_tmp += logger::WriteScalar(bus_voltage_V_); return str_tmp; } diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index df4bdad96..651e49eb2 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -12,7 +12,7 @@ namespace s2e::components { SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) : Component(prescaler, clock_generator), @@ -31,7 +31,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerato } SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), @@ -48,7 +48,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerato } SolarArrayPanel::SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(10, clock_generator), @@ -87,13 +87,13 @@ SolarArrayPanel::~SolarArrayPanel() {} std::string SolarArrayPanel::GetLogHeader() const { std::string str_tmp = ""; std::string component_name = "sap" + std::to_string(component_id_) + "_"; - str_tmp += WriteScalar(component_name + "generated_power", "W"); + str_tmp += logger::WriteScalar(component_name + "generated_power", "W"); return str_tmp; } std::string SolarArrayPanel::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(power_generation_W_); + str_tmp += logger::WriteScalar(power_generation_W_); return str_tmp; } @@ -101,14 +101,14 @@ void SolarArrayPanel::MainRoutine(const int time_count) { if (CsvScenarioInterface::IsCsvScenarioEnabled()) { double time_query = compo_step_time_s_ * time_count; const auto solar_constant = srp_environment_->GetSolarConstant_W_m2(); - s2e::math::Vector<3> sun_direction_body = CsvScenarioInterface::GetSunDirectionBody(time_query); - s2e::math::Vector<3> normalized_sun_direction_body = sun_direction_body.CalcNormalizedVector(); + math::Vector<3> sun_direction_body = CsvScenarioInterface::GetSunDirectionBody(time_query); + math::Vector<3> normalized_sun_direction_body = sun_direction_body.CalcNormalizedVector(); power_generation_W_ = cell_efficiency_ * transmission_efficiency_ * solar_constant * (int)CsvScenarioInterface::GetSunFlag(time_query) * cell_area_m2_ * number_of_parallel_ * number_of_series_ * InnerProduct(normal_vector_, normalized_sun_direction_body); } else { const auto power_density = srp_environment_->GetPowerDensity_W_m2(); - s2e::math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); - s2e::math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); + math::Vector<3> sun_pos_b = local_celestial_information_->GetPositionFromSpacecraft_b_m("SUN"); + math::Vector<3> sun_dir_b = sun_pos_b.CalcNormalizedVector(); power_generation_W_ = cell_efficiency_ * transmission_efficiency_ * power_density * cell_area_m2_ * number_of_parallel_ * number_of_series_ * InnerProduct(normal_vector_, sun_dir_b); // TODO: Improve implementation. For example, update IV curve with sun direction and calculate generated power @@ -135,7 +135,7 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id double cell_area_m2; cell_area_m2 = sap_conf.ReadDouble(section_name.c_str(), "cell_area_m2"); - s2e::math::Vector<3> normal_vector; + math::Vector<3> normal_vector; sap_conf.ReadVector(section_name.c_str(), "normal_vector_b", normal_vector); double cell_efficiency; @@ -168,7 +168,7 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id double cell_area_m2; cell_area_m2 = sap_conf.ReadDouble(section_name.c_str(), "cell_area_m2"); - s2e::math::Vector<3> normal_vector; + math::Vector<3> normal_vector; sap_conf.ReadVector(section_name.c_str(), "normal_vector_b", normal_vector); double cell_efficiency; diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index f057f5066..e77eecd3a 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -34,7 +34,7 @@ class SolarArrayPanel : public Component, public logger::ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s); /** @@ -53,7 +53,7 @@ class SolarArrayPanel : public Component, public logger::ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); /** * @fn SolarArrayPanel @@ -71,7 +71,7 @@ class SolarArrayPanel : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information */ SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - s2e::math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, + math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); /** * @fn SolarArrayPanel @@ -113,7 +113,7 @@ class SolarArrayPanel : public Component, public logger::ILoggable { const int number_of_series_; //!< Number of series connected solar cells const int number_of_parallel_; //!< Number of parallel connected solar cells const double cell_area_m2_; //!< Solar cell area [m^2] - const s2e::math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame + const math::Vector<3> normal_vector_; //!< Normal vector of SolarArrayPanel on the body fixed frame const double cell_efficiency_; //!< Power generation efficiency of solar cell const double transmission_efficiency_; //!< Efficiency of transmission to PCU diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 9b5b7c4b7..61b1ec766 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -13,7 +13,7 @@ namespace s2e::components { // Constructor SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, - const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, + const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), @@ -28,7 +28,7 @@ SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* } SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const s2e::math::Vector<3> thruster_position_b_m, const s2e::math::Vector<3> thrust_direction_b, const double max_magnitude_N, + const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), @@ -68,9 +68,9 @@ void SimpleThruster::CalcThrust() { output_thrust_b_N_ = mag * CalcThrustDirection(); } -void SimpleThruster::CalcTorque(const s2e::math::Vector<3> center_of_mass_b_m) { - s2e::math::Vector<3> vector_center2thruster = thruster_position_b_m_ - center_of_mass_b_m; - s2e::math::Vector<3> torque = OuterProduct(vector_center2thruster, output_thrust_b_N_); +void SimpleThruster::CalcTorque(const math::Vector<3> center_of_mass_b_m) { + math::Vector<3> vector_center2thruster = thruster_position_b_m_ - center_of_mass_b_m; + math::Vector<3> torque = OuterProduct(vector_center2thruster, output_thrust_b_N_); output_torque_b_Nm_ = torque; } @@ -81,7 +81,7 @@ std::string SimpleThruster::GetLogHeader() const { std::string head = "simple_thruster" + std::to_string(component_id_) + "_"; str_tmp += logger::WriteVector(head + "output_thrust", "b", "N", 3); str_tmp += logger::WriteVector(head + "output_torque", "b", "Nm", 3); - str_tmp += WriteScalar(head + "output_thrust_norm", "N"); + str_tmp += logger::WriteScalar(head + "output_thrust_norm", "N"); return str_tmp; } @@ -90,32 +90,32 @@ std::string SimpleThruster::GetLogValue() const { str_tmp += logger::WriteVector(output_thrust_b_N_); str_tmp += logger::WriteVector(output_torque_b_Nm_); - str_tmp += WriteScalar(output_thrust_b_N_.CalcNorm()); + str_tmp += logger::WriteScalar(output_thrust_b_N_.CalcNorm()); return str_tmp; } double SimpleThruster::CalcThrustMagnitude() { return duty_ * thrust_magnitude_max_N_; } -s2e::math::Vector<3> SimpleThruster::CalcThrustDirection() { - s2e::math::Vector<3> thrust_dir_b_true = thrust_direction_b_; +math::Vector<3> SimpleThruster::CalcThrustDirection() { + math::Vector<3> thrust_dir_b_true = thrust_direction_b_; if (direction_noise_standard_deviation_rad_ > 0.0 + DBL_EPSILON) { - s2e::math::Vector<3> ex; // Fixme: to use outer product to generate orthogonal vector + math::Vector<3> ex; // Fixme: to use outer product to generate orthogonal vector ex[0] = 1.0; ex[1] = 0.0; ex[2] = 0.0; int flag = rand() % 2; double make_axis_rot_rad; if (flag == 0) { - make_axis_rot_rad = s2e::math::pi * (double)rand() / RAND_MAX; + make_axis_rot_rad = math::pi * (double)rand() / RAND_MAX; } else { - make_axis_rot_rad = -s2e::math::pi * (double)rand() / RAND_MAX; + make_axis_rot_rad = -math::pi * (double)rand() / RAND_MAX; } - s2e::math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); - s2e::math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); + math::Quaternion make_axis_rot(thrust_dir_b_true, make_axis_rot_rad); + math::Vector<3> axis_rot = make_axis_rot.FrameConversion(ex); - s2e::math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion + math::Quaternion err_rot(axis_rot, direction_random_noise_); // Generate error quaternion thrust_dir_b_true = err_rot.FrameConversion(thrust_dir_b_true); // Add error } @@ -143,7 +143,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, magnitude_standard_deviation_N = thruster_conf.ReadDouble(Section, "thrust_error_standard_deviation_N"); double deg_err; - deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * s2e::math::pi / 180.0; + deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * math::pi / 180.0; SimpleThruster thruster(prescaler, clock_generator, thruster_id, thruster_pos, thruster_dir, max_magnitude_N, magnitude_standard_deviation_N, deg_err, structure, dynamics); @@ -171,7 +171,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, magnitude_standard_deviation_N = thruster_conf.ReadDouble(Section, "thrust_error_standard_deviation_N"); double deg_err; - deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * s2e::math::pi / 180.0; + deg_err = thruster_conf.ReadDouble(Section, "direction_error_standard_deviation_deg") * math::pi / 180.0; power_port->InitializeWithInitializeFile(file_name); diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 163a80cbd..c4f306523 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -14,7 +14,7 @@ namespace s2e::disturbances { -AirDrag::AirDrag(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, +AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled), wall_temperature_K_(wall_temperature_K), @@ -28,15 +28,15 @@ AirDrag::AirDrag(const std::vector& surfaces, const s2e::math::Vector<3 void AirDrag::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { double air_density_kg_m3 = local_environment.GetAtmosphere().GetAirDensity_kg_m3(); - s2e::math::Matrix<3, 3> dcm_ecef2eci = + math::Matrix<3, 3> dcm_ecef2eci = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); - s2e::math::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); - s2e::math::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); - s2e::math::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); + math::Vector<3> relative_velocity_wrt_atmosphere_i_m_s = dcm_ecef2eci * dynamics.GetOrbit().GetVelocity_ecef_m_s(); + math::Quaternion quaternion_i2b = dynamics.GetAttitude().GetQuaternion_i2b(); + math::Vector<3> velocity_b_m_s = quaternion_i2b.FrameConversion(relative_velocity_wrt_atmosphere_i_m_s); CalcTorqueForce(velocity_b_m_s, air_density_kg_m3); } -void AirDrag::CalcCoefficients(const s2e::math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3) { +void AirDrag::CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3) { double velocity_norm_m_s = velocity_b_m_s.CalcNorm(); CalcCnCt(velocity_b_m_s); for (size_t i = 0; i < surfaces_.size(); i++) { @@ -49,14 +49,14 @@ void AirDrag::CalcCoefficients(const s2e::math::Vector<3>& velocity_b_m_s, const double AirDrag::CalcFunctionPi(const double s) { double x; double erfs = erf(s); // ERF function is defined in math standard library - x = s * exp(-s * s) + sqrt(s2e::math::pi) * (s * s + 0.5) * (1.0 + erfs); + x = s * exp(-s * s) + sqrt(math::pi) * (s * s + 0.5) * (1.0 + erfs); return x; } double AirDrag::CalcFunctionChi(const double s) { double x; double erfs = erf(s); - x = exp(-s * s) + sqrt(s2e::math::pi) * s * (1.0 + erfs); + x = exp(-s * s) + sqrt(math::pi) * s * (1.0 + erfs); return x; } @@ -71,9 +71,9 @@ void AirDrag::CalcCnCt(const Vector<3>& velocity_b_m_s) { double speed_n = speed * cos_theta_[i]; double speed_t = speed * sin_theta_[i]; double diffuse = 1.0 - surfaces_[i].GetAirSpecularity(); - cn_[i] = (2.0 - diffuse) / sqrt(s2e::math::pi) * CalcFunctionPi(speed_n) / (speed * speed) + + cn_[i] = (2.0 - diffuse) / sqrt(math::pi) * CalcFunctionPi(speed_n) / (speed * speed) + diffuse / 2.0 * CalcFunctionChi(speed_n) / (speed * speed) * sqrt(wall_temperature_K_ / molecular_temperature_K_); - ct_[i] = diffuse * speed_t * CalcFunctionChi(speed_n) / (sqrt(s2e::math::pi) * speed * speed); + ct_[i] = diffuse * speed_t * CalcFunctionChi(speed_n) / (sqrt(math::pi) * speed * speed); } } diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 7f87e9bb7..6c031cf0b 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -32,7 +32,7 @@ class AirDrag : public SurfaceForce { * @param [in] molecular_weight_g_mol: Molecular weight [g/mol] * @param [in] is_calculation_enabled: Calculation flag */ - AirDrag(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, + AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled = true); /** @@ -68,7 +68,7 @@ class AirDrag : public SurfaceForce { * @param [in] velocity_b_m_s: Spacecraft's velocity vector in the body frame [m/s] * @param [in] air_density_kg_m3: Air density around the spacecraft [kg/m^3] */ - void CalcCoefficients(const s2e::math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3); + void CalcCoefficients(const math::Vector<3>& velocity_b_m_s, const double air_density_kg_m3); // internal function for calculation /** @@ -76,7 +76,7 @@ class AirDrag : public SurfaceForce { * @brief Calculate the Cn and Ct * @param [in] velocity_b_m_s: Spacecraft's velocity vector in the body frame [m/s] */ - void CalcCnCt(const s2e::math::Vector<3>& velocity_b_m_s); + void CalcCnCt(const math::Vector<3>& velocity_b_m_s); /** * @fn CalcFunctionPi * @brief Calculate The Pi function in the algorithm diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index de7d476b8..6321f06d2 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -25,10 +25,10 @@ class Disturbance : public logger::ILoggable { */ Disturbance(const bool is_calculation_enabled = true, const bool is_attitude_dependent = true) : is_calculation_enabled_(is_calculation_enabled), is_attitude_dependent_(is_attitude_dependent) { - force_b_N_ = s2e::math::Vector<3>(0.0); - torque_b_Nm_ = s2e::math::Vector<3>(0.0); - acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); - acceleration_b_m_s2_ = s2e::math::Vector<3>(0.0); + force_b_N_ = math::Vector<3>(0.0); + torque_b_Nm_ = math::Vector<3>(0.0); + acceleration_i_m_s2_ = math::Vector<3>(0.0); + acceleration_b_m_s2_ = math::Vector<3>(0.0); } /** @@ -62,22 +62,22 @@ class Disturbance : public logger::ILoggable { * @fn GetTorque_b_Nm * @brief Return the disturbance torque in the body frame [Nm] */ - virtual inline s2e::math::Vector<3> GetTorque_b_Nm() { return torque_b_Nm_; } + virtual inline math::Vector<3> GetTorque_b_Nm() { return torque_b_Nm_; } /** * @fn GetForce_b_N * @brief Return the disturbance force in the body frame [N] */ - virtual inline s2e::math::Vector<3> GetForce_b_N() { return force_b_N_; } + virtual inline math::Vector<3> GetForce_b_N() { return force_b_N_; } /** * @fn GetAcceleration_b_m_s2 * @brief Return the disturbance acceleration in the body frame [m/s2] */ - virtual inline s2e::math::Vector<3> GetAcceleration_b_m_s2() { return acceleration_b_m_s2_; } + virtual inline math::Vector<3> GetAcceleration_b_m_s2() { return acceleration_b_m_s2_; } /** * @fn GetAcceleration_i_m_s2 * @brief Return the disturbance acceleration in the inertial frame [m/s2] */ - virtual inline s2e::math::Vector<3> GetAcceleration_i_m_s2() { return acceleration_i_m_s2_; } + virtual inline math::Vector<3> GetAcceleration_i_m_s2() { return acceleration_i_m_s2_; } /** * @fn IsAttitudeDependent * @brief Return the attitude dependent flag @@ -87,10 +87,10 @@ class Disturbance : public logger::ILoggable { protected: bool is_calculation_enabled_; //!< Flag to calculate the disturbance bool is_attitude_dependent_; //!< Flag to show the disturbance depends on attitude information - s2e::math::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] - s2e::math::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] - s2e::math::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] - s2e::math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] + math::Vector<3> force_b_N_; //!< Disturbance force in the body frame [N] + math::Vector<3> torque_b_Nm_; //!< Disturbance torque in the body frame [Nm] + math::Vector<3> acceleration_b_m_s2_; //!< Disturbance acceleration in the body frame [m/s2] + math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] }; } // namespace s2e::disturbances diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index 590dbc703..a3f57b39a 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -57,19 +57,19 @@ class Disturbances { * @fn GetTorque * @brief Return total disturbance torque in the body frame [Nm] */ - inline s2e::math::Vector<3> GetTorque_b_Nm() { return total_torque_b_Nm_; } + inline math::Vector<3> GetTorque_b_Nm() { return total_torque_b_Nm_; } /** * @fn GetTorque * @brief Return total disturbance force in the body frame [N] */ - inline s2e::math::Vector<3> GetForce_b_N() { return total_force_b_N_; } + inline math::Vector<3> GetForce_b_N() { return total_force_b_N_; } /** * @fn GetTorque * @brief Return total disturbance acceleration in the inertial frame [m/s2] */ - inline s2e::math::Vector<3> GetAcceleration_i_m_s2() { return total_acceleration_i_m_s2_; } + inline math::Vector<3> GetAcceleration_i_m_s2() { return total_acceleration_i_m_s2_; } private: std::string initialize_file_name_; //!< Initialization file name diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 40cbb3515..dffba8b93 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -22,8 +22,8 @@ namespace s2e::disturbances { Geopotential::Geopotential(const int degree, const std::string file_path, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), degree_(degree) { // Initialize - acceleration_ecef_m_s2_ = s2e::math::Vector<3>(0.0); - debug_pos_ecef_m_ = s2e::math::Vector<3>(0.0); + acceleration_ecef_m_s2_ = math::Vector<3>(0.0); + debug_pos_ecef_m_ = math::Vector<3>(0.0); // degree if (degree_ > 360) { degree_ = 360; @@ -85,8 +85,8 @@ void Geopotential::Update(const LocalEnvironment &local_environment, const dynam UNUSED(time_ms_); #endif - s2e::math::Matrix<3, 3> trans_eci2ecef_ = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef(); - s2e::math::Matrix<3, 3> trans_ecef2eci = trans_eci2ecef_.Transpose(); + math::Matrix<3, 3> trans_eci2ecef_ = local_environment.GetCelestialInformation().GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef(); + math::Matrix<3, 3> trans_ecef2eci = trans_eci2ecef_.Transpose(); acceleration_i_m_s2_ = trans_ecef2eci * acceleration_ecef_m_s2_; } @@ -95,7 +95,7 @@ std::string Geopotential::GetLogHeader() const { #ifdef DEBUG_GEOPOTENTIAL str_tmp += logger::WriteVector("geopotential_calculation_position_", "ecef", "m", 3); - str_tmp += WriteScalar("geopotential_calculation_time", "ms"); + str_tmp += logger::WriteScalar("geopotential_calculation_time", "ms"); #endif str_tmp += logger::WriteVector("geopotential_acceleration", "ecef", "m/s2", 3); @@ -107,7 +107,7 @@ std::string Geopotential::GetLogValue() const { #ifdef DEBUG_GEOPOTENTIAL str_tmp += logger::WriteVector(debug_pos_ecef_m_, 15); - str_tmp += WriteScalar(time_ms_); + str_tmp += logger::WriteScalar(time_ms_); #endif str_tmp += logger::WriteVector(acceleration_ecef_m_s2_, 15); diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 3bfcb83fa..c82f792b1 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -70,7 +70,7 @@ class Geopotential : public Disturbance { Vector<3> acceleration_ecef_m_s2_; //!< Calculated acceleration in the ECEF frame [m/s2] // debug - s2e::math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] + math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] double time_ms_ = 0.0; //!< Calculation time [ms] /** diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 366c77778..5129ec5be 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -25,9 +25,9 @@ void GravityGradient::Update(const LocalEnvironment& local_environment, const dy dynamics.GetAttitude().GetInertiaTensor_b_kgm2()); } -s2e::math::Vector<3> GravityGradient::CalcTorque_b_Nm(const s2e::math::Vector<3> earth_position_from_sc_b_m, const s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) { +math::Vector<3> GravityGradient::CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2) { double r_norm_m = earth_position_from_sc_b_m.CalcNorm(); - s2e::math::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector + math::Vector<3> u_b = earth_position_from_sc_b_m; // TODO: make undestructive normalize function for Vector u_b /= r_norm_m; double coeff = 3.0 * gravity_constant_m3_s2_ / pow(r_norm_m, 3.0); diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index e4a578aff..b58b8df33 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -67,7 +67,7 @@ class GravityGradient : public Disturbance { * @param [in] inertia_tensor_b_kgm2: Inertia Tensor at body frame [kg*m^2] * @return Calculated torque at body frame [Nm] */ - s2e::math::Vector<3> CalcTorque_b_Nm(const s2e::math::Vector<3> earth_position_from_sc_b_m, const s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2); + math::Vector<3> CalcTorque_b_Nm(const math::Vector<3> earth_position_from_sc_b_m, const math::Matrix<3, 3> inertia_tensor_b_kgm2); }; /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index d28ccfe76..3511537e6 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -22,8 +22,8 @@ namespace s2e::disturbances { LunarGravityField::LunarGravityField(const int degree, const std::string file_path, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), degree_(degree) { // Initialize - acceleration_mcmf_m_s2_ = s2e::math::Vector<3>(0.0); - debug_pos_mcmf_m_ = s2e::math::Vector<3>(0.0); + acceleration_mcmf_m_s2_ = math::Vector<3>(0.0); + debug_pos_mcmf_m_ = math::Vector<3>(0.0); debug_pos_mcmf_m_[0] = 2000000; debug_pos_mcmf_m_[1] = 2000000; debug_pos_mcmf_m_[2] = 2000000; @@ -90,10 +90,10 @@ bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { void LunarGravityField::Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { const CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); - s2e::math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); + math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); - s2e::math::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; + math::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); + math::Vector<3> spacecraft_position_mcmf_m = dcm_mci2mcmf_ * spacecraft_position_mci_m; #ifdef DEBUG_LUNAR_GRAVITY_FIELD std::chrono::system_clock::time_point start, end; @@ -109,7 +109,7 @@ void LunarGravityField::Update(const LocalEnvironment &local_environment, const UNUSED(time_ms_); #endif - s2e::math::Matrix<3, 3> dcm_mcmf2i = dcm_mci2mcmf_.Transpose(); + math::Matrix<3, 3> dcm_mcmf2i = dcm_mci2mcmf_.Transpose(); acceleration_i_m_s2_ = dcm_mcmf2i * acceleration_mcmf_m_s2_; } @@ -118,7 +118,7 @@ std::string LunarGravityField::GetLogHeader() const { #ifdef DEBUG_LUNAR_GRAVITY_FIELD str_tmp += logger::WriteVector("lunar_gravity_calculation_position", "mcmf", "m", 3); - str_tmp += WriteScalar("lunar_gravity_calculation_time", "ms"); + str_tmp += logger::WriteScalar("lunar_gravity_calculation_time", "ms"); #endif str_tmp += logger::WriteVector("lunar_gravity_acceleration", "mcmf", "m/s2", 3); @@ -130,7 +130,7 @@ std::string LunarGravityField::GetLogValue() const { #ifdef DEBUG_LUNAR_GRAVITY_FIELD str_tmp += logger::WriteVector(debug_pos_mcmf_m_, 15); - str_tmp += WriteScalar(time_ms_); + str_tmp += logger::WriteScalar(time_ms_); #endif str_tmp += logger::WriteVector(acceleration_mcmf_m_s2_, 15); diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 552e0425b..40b5d0e7d 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -74,7 +74,7 @@ class LunarGravityField : public Disturbance { Vector<3> acceleration_mcmf_m_s2_; //!< Calculated acceleration in the MCMF(Moon Centered Moon Fixed) frame [m/s2] // debug - s2e::math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] + math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] double time_ms_ = 0.0; //!< Calculation time [ms] /** diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 98c352c32..11fc64530 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -33,8 +33,8 @@ void MagneticDisturbance::Update(const LocalEnvironment& local_environment, cons } void MagneticDisturbance::CalcRMM() { - static s2e::math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); - static s2e::math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); + static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); + static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant static s2e::randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), s2e::randomization::global_randomization.MakeSeed()); diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 79f795ecf..7b5187598 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -52,7 +52,7 @@ class MagneticDisturbance : public Disturbance { private: const double kMagUnit_ = 1.0e-9; //!< Constant value to change the unit [nT] -> [T] - s2e::math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] + math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] const ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters /** @@ -66,7 +66,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] magnetic_field_b_nT: Magnetic field vector at the body frame [nT] * @return Calculated disturbance torque in body frame [Nm] */ - s2e::math::Vector<3> CalcTorque_b_Nm(const s2e::math::Vector<3>& magnetic_field_b_nT); + math::Vector<3> CalcTorque_b_Nm(const math::Vector<3>& magnetic_field_b_nT); }; /** diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index 18d66fd44..638a19833 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -13,17 +13,17 @@ namespace s2e::disturbances { SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, - const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) + const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} void SolarRadiationPressureDisturbance::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { UNUSED(dynamics); - s2e::math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); + math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); CalcTorqueForce(sun_position_from_sc_b_m, local_environment.GetSolarRadiationPressure().GetPressure_N_m2()); } -void SolarRadiationPressureDisturbance::CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item) { +void SolarRadiationPressureDisturbance::CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) { UNUSED(input_direction_b); for (size_t i = 0; i < surfaces_.size(); i++) { // Calculate for each surface diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 871538ba2..63f20e4e0 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -27,7 +27,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SolarRadiationPressureDisturbance(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, + SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** @@ -57,7 +57,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] input_direction_b: Direction vector of the sun at the body frame * @param [in] item: Solar pressure [N/m^2] */ - void CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item); + void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item); }; /** diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 1bf0b1dfe..0cef5b365 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -9,7 +9,7 @@ namespace s2e::disturbances { -SurfaceForce::SurfaceForce(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) +SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { // Initialize vectors size_t num = surfaces_.size(); @@ -19,23 +19,23 @@ SurfaceForce::SurfaceForce(const std::vector& surfaces, const s2e::math sin_theta_.assign(num, 0.0); } -s2e::math::Vector<3> SurfaceForce::CalcTorqueForce(s2e::math::Vector<3>& input_direction_b, double item) { +math::Vector<3> SurfaceForce::CalcTorqueForce(math::Vector<3>& input_direction_b, double item) { CalcTheta(input_direction_b); CalcCoefficients(input_direction_b, item); - s2e::math::Vector<3> force_b_N(0.0); - s2e::math::Vector<3> torque_b_Nm(0.0); - s2e::math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); + math::Vector<3> force_b_N(0.0); + math::Vector<3> torque_b_Nm(0.0); + math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); for (size_t i = 0; i < surfaces_.size(); i++) { if (cos_theta_[i] > 0.0) { // if the surface faces to the disturbance source (sun or air) // calc direction of in-plane force - s2e::math::Vector<3> normal = surfaces_[i].GetNormal_b(); - s2e::math::Vector<3> ncu = OuterProduct(input_b_normal, normal); - s2e::math::Vector<3> ncu_normalized = ncu.CalcNormalizedVector(); - s2e::math::Vector<3> in_plane_force_direction = OuterProduct(ncu_normalized, normal); + math::Vector<3> normal = surfaces_[i].GetNormal_b(); + math::Vector<3> ncu = OuterProduct(input_b_normal, normal); + math::Vector<3> ncu_normalized = ncu.CalcNormalizedVector(); + math::Vector<3> in_plane_force_direction = OuterProduct(ncu_normalized, normal); // calc force - s2e::math::Vector<3> force_per_surface_b_N = -1.0 * normal_coefficients_[i] * normal + tangential_coefficients_[i] * in_plane_force_direction; + math::Vector<3> force_per_surface_b_N = -1.0 * normal_coefficients_[i] * normal + tangential_coefficients_[i] * in_plane_force_direction; force_b_N += force_per_surface_b_N; // calc torque torque_b_Nm += OuterProduct(surfaces_[i].GetPosition_b_m() - center_of_gravity_b_m_, force_per_surface_b_N); @@ -46,8 +46,8 @@ s2e::math::Vector<3> SurfaceForce::CalcTorqueForce(s2e::math::Vector<3>& input_d return torque_b_Nm_; } -void SurfaceForce::CalcTheta(s2e::math::Vector<3>& input_direction_b) { - s2e::math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); +void SurfaceForce::CalcTheta(math::Vector<3>& input_direction_b) { + math::Vector<3> input_b_normal = input_direction_b.CalcNormalizedVector(); for (size_t i = 0; i < surfaces_.size(); i++) { cos_theta_[i] = InnerProduct(surfaces_[i].GetNormal_b(), input_b_normal); diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index 943daa9e6..c6c0c3d06 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -30,7 +30,7 @@ class SurfaceForce : public Disturbance { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SurfaceForce(const std::vector& surfaces, const s2e::math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); + SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** * @fn ~SurfaceForce * @brief Destructor @@ -40,7 +40,7 @@ class SurfaceForce : public Disturbance { protected: // Spacecraft Structure parameters const std::vector& surfaces_; //!< List of surfaces - const s2e::math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] + const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] // Internal calculated variables std::vector normal_coefficients_; //!< coefficients for out-plane force for each surface @@ -56,13 +56,13 @@ class SurfaceForce : public Disturbance { * @param [in] item: Parameter which decide the magnitude of the disturbances (e.g., Solar flux, air density) * @return Calculated disturbance torque in body frame [Nm] */ - s2e::math::Vector<3> CalcTorqueForce(s2e::math::Vector<3>& input_direction_b, double item); + math::Vector<3> CalcTorqueForce(math::Vector<3>& input_direction_b, double item); /** * @fn CalcTheta * @brief Calculate cosX and sinX * @param [in] input_direction_b: Direction of disturbance source at the body frame */ - void CalcTheta(s2e::math::Vector<3>& input_direction_b); + void CalcTheta(math::Vector<3>& input_direction_b); /** * @fn CalcCoefficients @@ -70,7 +70,7 @@ class SurfaceForce : public Disturbance { * @param [in] input_direction_b: Direction of disturbance source at the body frame * @param [in] item: Parameter which decide the magnitude of the disturbances (e.g., Solar flux, air density) */ - virtual void CalcCoefficients(const s2e::math::Vector<3>& input_direction_b, const double item) = 0; + virtual void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) = 0; }; } // namespace s2e::disturbances diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 2598332a0..7d99ab2fb 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -11,18 +11,18 @@ namespace s2e::disturbances { ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, false), third_body_list_(third_body_list) { - acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); + acceleration_i_m_s2_ = math::Vector<3>(0.0); } ThirdBodyGravity::~ThirdBodyGravity() {} void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { - acceleration_i_m_s2_ = s2e::math::Vector<3>(0.0); // initialize + acceleration_i_m_s2_ = math::Vector<3>(0.0); // initialize - s2e::math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); + math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); for (auto third_body : third_body_list_) { - s2e::math::Vector<3> third_body_position_from_sc_i_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_i_m(third_body.c_str()); - s2e::math::Vector<3> third_body_pos_i_m = sc_position_i_m + third_body_position_from_sc_i_m; + math::Vector<3> third_body_position_from_sc_i_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_i_m(third_body.c_str()); + math::Vector<3> third_body_pos_i_m = sc_position_i_m + third_body_position_from_sc_i_m; double gravity_constant = local_environment.GetCelestialInformation().GetGlobalInformation().GetGravityConstant_m3_s2(third_body.c_str()); third_body_acceleration_i_m_s2_ = CalcAcceleration_i_m_s2(third_body_pos_i_m, third_body_position_from_sc_i_m, gravity_constant); @@ -30,8 +30,8 @@ void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const d } } -s2e::math::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const s2e::math::Vector<3> s, const s2e::math::Vector<3> sr, const double gravity_constant_m_s2) { - s2e::math::Vector<3> acceleration_i_m_s2; +math::Vector<3> ThirdBodyGravity::CalcAcceleration_i_m_s2(const math::Vector<3> s, const math::Vector<3> sr, const double gravity_constant_m_s2) { + math::Vector<3> acceleration_i_m_s2; double s_norm = s.CalcNorm(); double s_norm3 = s_norm * s_norm * s_norm; diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 24a74ccc8..7207f7e78 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -45,7 +45,7 @@ class ThirdBodyGravity : public Disturbance { private: std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances - s2e::math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] + math::Vector<3> third_body_acceleration_i_m_s2_{0.0}; //!< Calculated third body disturbance acceleration in the inertial frame [m/s2] // Override classes for logger::ILoggable /** @@ -67,7 +67,7 @@ class ThirdBodyGravity : public Disturbance { * @param [in] GM: The gravitational constants of the third celestial body [m3/s2] * @return Third body disturbance acceleration in the inertial frame in unit [m/s2] */ - s2e::math::Vector<3> CalcAcceleration_i_m_s2(const s2e::math::Vector<3> s, const s2e::math::Vector<3> sr, const double gravity_constant_m_s2); + math::Vector<3> CalcAcceleration_i_m_s2(const math::Vector<3> s, const math::Vector<3> sr, const double gravity_constant_m_s2); }; /** diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 55e172240..84a9040e2 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -8,15 +8,15 @@ namespace s2e::dynamics::attitude { -Attitude::Attitude(const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) +Attitude::Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name) : SimulationObject(simulation_object_name), inertia_tensor_kgm2_(inertia_tensor_kgm2) { - angular_velocity_b_rad_s_ = s2e::math::Vector<3>(0.0); - quaternion_i2b_ = s2e::math::Quaternion(0.0, 0.0, 0.0, 1.0); - torque_b_Nm_ = s2e::math::Vector<3>(0.0); - angular_momentum_spacecraft_b_Nms_ = s2e::math::Vector<3>(0.0); - angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); - angular_momentum_total_b_Nms_ = s2e::math::Vector<3>(0.0); - angular_momentum_total_i_Nms_ = s2e::math::Vector<3>(0.0); + angular_velocity_b_rad_s_ = math::Vector<3>(0.0); + quaternion_i2b_ = math::Quaternion(0.0, 0.0, 0.0, 1.0); + torque_b_Nm_ = math::Vector<3>(0.0); + angular_momentum_spacecraft_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_total_b_Nms_ = math::Vector<3>(0.0); + angular_momentum_total_i_Nms_ = math::Vector<3>(0.0); angular_momentum_total_Nms_ = 0.0; kinetic_energy_J_ = 0.0; } @@ -27,8 +27,8 @@ std::string Attitude::GetLogHeader() const { str_tmp += logger::WriteVector("spacecraft_angular_velocity", "b", "rad/s", 3); str_tmp += logger::WriteQuaternion("spacecraft_quaternion", "i2b"); str_tmp += logger::WriteVector("spacecraft_torque", "b", "Nm", 3); - str_tmp += WriteScalar("spacecraft_total_angular_momentum", "Nms"); - str_tmp += WriteScalar("spacecraft_kinematic_energy", "J"); + str_tmp += logger::WriteScalar("spacecraft_total_angular_momentum", "Nms"); + str_tmp += logger::WriteScalar("spacecraft_kinematic_energy", "J"); return str_tmp; } @@ -39,8 +39,8 @@ std::string Attitude::GetLogValue() const { str_tmp += logger::WriteVector(angular_velocity_b_rad_s_); str_tmp += logger::WriteQuaternion(quaternion_i2b_); str_tmp += logger::WriteVector(torque_b_Nm_); - str_tmp += WriteScalar(angular_momentum_total_Nms_); - str_tmp += WriteScalar(kinetic_energy_J_); + str_tmp += logger::WriteScalar(angular_momentum_total_Nms_); + str_tmp += logger::WriteScalar(kinetic_energy_J_); return str_tmp; } @@ -52,15 +52,15 @@ void Attitude::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { void Attitude::CalcAngularMomentum(void) { angular_momentum_spacecraft_b_Nms_ = inertia_tensor_kgm2_ * angular_velocity_b_rad_s_; angular_momentum_total_b_Nms_ = angular_momentum_reaction_wheel_b_Nms_ + angular_momentum_spacecraft_b_Nms_; - s2e::math::Quaternion q_b2i = quaternion_i2b_.Conjugate(); + math::Quaternion q_b2i = quaternion_i2b_.Conjugate(); angular_momentum_total_i_Nms_ = q_b2i.FrameConversion(angular_momentum_total_b_Nms_); angular_momentum_total_Nms_ = angular_momentum_total_i_Nms_.CalcNorm(); - kinetic_energy_J_ = 0.5 * s2e::math::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); + kinetic_energy_J_ = 0.5 * math::InnerProduct(angular_momentum_spacecraft_b_Nms_, angular_velocity_b_rad_s_); } -s2e::math::Matrix<4, 4> CalcAngularVelocityMatrix(s2e::math::Vector<3> angular_velocity_b_rad_s) { - s2e::math::Matrix<4, 4> angular_velocity_matrix; +math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s) { + math::Matrix<4, 4> angular_velocity_matrix; angular_velocity_matrix[0][0] = 0.0f; angular_velocity_matrix[0][1] = angular_velocity_b_rad_s[2]; diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 533d534f3..6c3c80fef 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -18,14 +18,14 @@ namespace s2e::dynamics::attitude { * @class Attitude * @brief Base class for attitude of spacecraft */ -class Attitude : public logger::ILoggable, public SimulationObject { +class Attitude : public logger::ILoggable, public simulation::SimulationObject { public: /** * @fn Attitude * @brief Constructor * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - Attitude(const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name = "attitude"); + Attitude(const math::Matrix<3, 3>& inertia_tensor_kgm2, const std::string& simulation_object_name = "attitude"); /** * @fn ~Attitude * @brief Destructor @@ -42,12 +42,12 @@ class Attitude : public logger::ILoggable, public SimulationObject { * @fn GetAngularVelocity_b_rad_s * @brief Return angular velocity of spacecraft body-fixed frame with respect to the inertial frame [rad/s] */ - inline s2e::math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } + inline math::Vector<3> GetAngularVelocity_b_rad_s() const { return angular_velocity_b_rad_s_; } /** * @fn GetQuaternion_i2b * @brief Return attitude quaternion from the inertial frame to the body fixed frame */ - inline s2e::math::Quaternion GetQuaternion_i2b() const { return quaternion_i2b_; } + inline math::Quaternion GetQuaternion_i2b() const { return quaternion_i2b_; } /** * @fn GetTotalAngularMomentNorm_Nms * @brief Return norm of total angular momentum of the spacecraft [Nms] @@ -62,34 +62,34 @@ class Attitude : public logger::ILoggable, public SimulationObject { * @fn GetInertiaTensor_b_kgm2 * @brief Return inertia tensor [kg m^2] */ - inline s2e::math::Matrix<3, 3> GetInertiaTensor_b_kgm2() const { return inertia_tensor_kgm2_; } + inline math::Matrix<3, 3> GetInertiaTensor_b_kgm2() const { return inertia_tensor_kgm2_; } // Setter /** * @fn SetAngularVelocity_b_rad_s * @brief Set angular velocity of the body fixed frame with respect to the inertial frame [rad/s] */ - inline void SetAngularVelocity_b_rad_s(const s2e::math::Vector<3> angular_velocity_b_rad_s) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; } + inline void SetAngularVelocity_b_rad_s(const math::Vector<3> angular_velocity_b_rad_s) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; } /** * @fn SetQuaternion_i2b * @brief Set attitude quaternion from the inertial frame to the body frame */ - inline void SetQuaternion_i2b(const s2e::math::Quaternion quaternion_i2b) { quaternion_i2b_ = quaternion_i2b; } + inline void SetQuaternion_i2b(const math::Quaternion quaternion_i2b) { quaternion_i2b_ = quaternion_i2b; } /** * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } /** * @fn AddTorque_b_Nm * @brief Add torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void AddTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { torque_b_Nm_ += torque_b_Nm; } + inline void AddTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ += torque_b_Nm; } /** * @fn SetRwAngularMomentum_b_Nms * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] */ - inline void SetRwAngularMomentum_b_Nms(const s2e::math::Vector<3> angular_momentum_rw_b_Nms) { + inline void SetRwAngularMomentum_b_Nms(const math::Vector<3> angular_momentum_rw_b_Nms) { angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_rw_b_Nms; } @@ -113,20 +113,20 @@ class Attitude : public logger::ILoggable, public SimulationObject { virtual std::string GetLogValue() const; // SimulationObject for McSim - virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); + virtual void SetParameters(const simulation::MonteCarloSimulationExecutor& mc_simulator); protected: bool is_calc_enabled_ = true; //!< Calculation flag double propagation_step_s_; //!< Propagation step [sec] - s2e::math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] - s2e::math::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame - s2e::math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] - const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] + math::Vector<3> angular_velocity_b_rad_s_; //!< Angular velocity of spacecraft body fixed frame with respect to the inertial frame [rad/s] + math::Quaternion quaternion_i2b_; //!< Attitude quaternion from the inertial frame to the body fixed frame + math::Vector<3> torque_b_Nm_; //!< Torque in the body fixed frame [Nm] + const math::Matrix<3, 3>& inertia_tensor_kgm2_; //!< Inertia tensor of the spacecraft [kg m^2] - s2e::math::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] - s2e::math::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] - s2e::math::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] - s2e::math::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] + math::Vector<3> angular_momentum_spacecraft_b_Nms_; //!< Angular momentum of spacecraft in the body fixed frame [Nms] + math::Vector<3> angular_momentum_reaction_wheel_b_Nms_; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + math::Vector<3> angular_momentum_total_b_Nms_; //!< Total angular momentum of spacecraft in the body fixed frame [Nms] + math::Vector<3> angular_momentum_total_i_Nms_; //!< Total angular momentum of spacecraft in the inertial frame [Nms] double angular_momentum_total_Nms_; //!< Norm of total angular momentum [Nms] double kinetic_energy_J_; //!< Rotational Kinetic Energy of Spacecraft [J] @@ -142,7 +142,7 @@ class Attitude : public logger::ILoggable, public SimulationObject { * @brief Generate angular velocity matrix for kinematics calculation * @param [in] angular_velocity_b_rad_s: Angular velocity [rad/s] */ -s2e::math::Matrix<4, 4> CalcAngularVelocityMatrix(s2e::math::Vector<3> angular_velocity_b_rad_s); +math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s); } // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index bac023c33..52af18344 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -11,8 +11,8 @@ namespace s2e::dynamics::attitude { -AttitudeRk4::AttitudeRk4(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, - const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, +AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name) { angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; @@ -20,7 +20,7 @@ AttitudeRk4::AttitudeRk4(const s2e::math::Vector<3>& angular_velocity_b_rad_s, c torque_b_Nm_ = torque_b_Nm; propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); previous_inertia_tensor_kgm2_ = inertia_tensor_kgm2_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); CalcAngularMomentum(); @@ -34,14 +34,14 @@ void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); //!< Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); //!< Consider how to handle this variable CalcAngularMomentum(); } void AttitudeRk4::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - s2e::math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); + math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2_); torque_inertia_tensor_change_b_Nm_ = dot_inertia_tensor * angular_velocity_b_rad_s_; inverse_inertia_tensor_ = CalcInverseMatrix(inertia_tensor_kgm2_); @@ -57,29 +57,29 @@ void AttitudeRk4::Propagate(const double end_time_s) { CalcAngularMomentum(); } -s2e::math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(s2e::math::Vector<7> x, double t) { +math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(math::Vector<7> x, double t) { UNUSED(t); - s2e::math::Vector<7> dxdt; + math::Vector<7> dxdt; - s2e::math::Vector<3> omega_b; + math::Vector<3> omega_b; for (int i = 0; i < 3; i++) { omega_b[i] = x[i]; } - s2e::math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; - s2e::math::Vector<3> rhs = - inverse_inertia_tensor_ * (torque_b_Nm_ - s2e::math::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); + math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b) + angular_momentum_reaction_wheel_b_Nms_; + math::Vector<3> rhs = + inverse_inertia_tensor_ * (torque_b_Nm_ - math::OuterProduct(omega_b, angular_momentum_total_b_Nms) - torque_inertia_tensor_change_b_Nm_); for (int i = 0; i < 3; ++i) { dxdt[i] = rhs[i]; } - s2e::math::Vector<4> quaternion_i2b; + math::Vector<4> quaternion_i2b; for (int i = 0; i < 4; i++) { quaternion_i2b[i] = x[i + 3]; } - s2e::math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; + math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b) * quaternion_i2b; for (int i = 0; i < 4; i++) { dxdt[i + 3] = d_quaternion[i]; @@ -89,7 +89,7 @@ s2e::math::Vector<7> AttitudeRk4::AttitudeDynamicsAndKinematics(s2e::math::Vecto } void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { - s2e::math::Vector<7> x; + math::Vector<7> x; for (int i = 0; i < 3; i++) { x[i] = angular_velocity_b_rad_s_[i]; } @@ -97,8 +97,8 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { x[i + 3] = quaternion_i2b_[i]; } - s2e::math::Vector<7> k1, k2, k3, k4; - s2e::math::Vector<7> xk2, xk3, xk4; + math::Vector<7> k1, k2, k3, k4; + math::Vector<7> xk2, xk3, xk4; k1 = AttitudeDynamicsAndKinematics(x, t); xk2 = x + (dt / 2.0) * k1; @@ -111,7 +111,7 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { k4 = AttitudeDynamicsAndKinematics(xk4, (t + dt)); - s2e::math::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); + math::Vector<7> next_x = x + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4); for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = next_x[i]; diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 1e71fca19..2b3b4f06c 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -26,8 +26,8 @@ class AttitudeRk4 : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeRk4(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, - const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); + AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeRk4 * @brief Destructor @@ -46,13 +46,13 @@ class AttitudeRk4 : public Attitude { * @brief Set parameters for Monte-Carlo simulation * @param [in] mc_simulator: Monte-Carlo simulation executor */ - virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); + virtual void SetParameters(const simulation::MonteCarloSimulationExecutor& mc_simulator); private: double current_propagation_time_s_; //!< current time [sec] - s2e::math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor - s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] - s2e::math::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] + math::Matrix<3, 3> inverse_inertia_tensor_; //!< Inverse of inertia tensor + math::Matrix<3, 3> previous_inertia_tensor_kgm2_; //!< Previous inertia tensor [kgm2] + math::Vector<3> torque_inertia_tensor_change_b_Nm_; //!< Torque generated by inertia tensor change [Nm] /** * @fn AttitudeDynamicsAndKinematics @@ -60,7 +60,7 @@ class AttitudeRk4 : public Attitude { * @param [in] x: State vector (angular velocity and quaternion) * @param [in] t: Unused TODO: remove? */ - s2e::math::Vector<7> AttitudeDynamicsAndKinematics(s2e::math::Vector<7> x, double t); + math::Vector<7> AttitudeDynamicsAndKinematics(math::Vector<7> x, double t); /** * @fn RungeKuttaOneStep * @brief Equation for one step of Runge-Kutta method diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 711c623f4..78292eb5c 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -11,9 +11,9 @@ namespace s2e::dynamics::attitude { AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( - const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, - const s2e::math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, - const double intrinsic_angular_velocity_cantilever_rad_s, const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, + const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, const math::Matrix<3, 3>& inertia_tensor_kgm2, + const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, + const double intrinsic_angular_velocity_cantilever_rad_s, const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), numerical_integrator_(propagation_step_s, attitude_ode_, @@ -23,7 +23,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( torque_b_Nm_ = torque_b_Nm; propagation_step_s_ = propagation_step_s; current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); attitude_ode_.SetInertiaTensorCantilever_kgm2(inertia_tensor_cantilever_kgm2); attitude_ode_.SetPreviousInertiaTensor_kgm2(inertia_tensor_kgm2_); @@ -32,7 +32,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( double spring_coefficient = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0); attitude_ode_.SetSpringCoefficient(spring_coefficient); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); - s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = + math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever = CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2) * inertia_tensor_kgm2_; attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever); attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); @@ -67,23 +67,23 @@ void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationEx // TODO: Consider the following calculation is needed here? current_propagation_time_s_ = 0.0; - angular_momentum_reaction_wheel_b_Nms_ = s2e::math::Vector<3>(0.0); //!< TODO: Consider how to handle this variable + angular_momentum_reaction_wheel_b_Nms_ = math::Vector<3>(0.0); //!< TODO: Consider how to handle this variable CalcAngularMomentum(); } void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { if (!is_calc_enabled_) return; - s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); + math::Matrix<3, 3> previous_inertia_tensor_kgm2 = attitude_ode_.GetPreviousInertiaTensor_kgm2(); assert(end_time_s - current_propagation_time_s_ > 1e-6); - s2e::math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); - s2e::math::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; + math::Matrix<3, 3> dot_inertia_tensor = (1.0 / (end_time_s - current_propagation_time_s_)) * (inertia_tensor_kgm2_ - previous_inertia_tensor_kgm2); + math::Vector<3> torque_inertia_tensor_b_Nm = dot_inertia_tensor * angular_velocity_b_rad_s_; attitude_ode_.SetTorqueInertiaTensor_b_Nm(torque_inertia_tensor_b_Nm); attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_)); attitude_ode_.SetTorque_b_Nm(torque_b_Nm_); attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_); - s2e::math::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, + math::Vector<13> state = attitude_ode_.SetStateFromPhysicalQuantities(angular_velocity_b_rad_s_, angular_velocity_cantilever_rad_s_, quaternion_i2b_, euler_angular_cantilever_rad_); numerical_integrator_.GetIntegrator()->SetState(propagation_step_s_, state); while (end_time_s - current_propagation_time_s_ - propagation_step_s_ > 1.0e-6) { diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 682759f8f..30469c2fd 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -33,10 +33,10 @@ class AttitudeWithCantileverVibration : public Attitude { * @param [in] propagation_step_s: Initial value of propagation step width [sec] * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - AttitudeWithCantileverVibration(const s2e::math::Vector<3>& angular_velocity_b_rad_s, const s2e::math::Quaternion& quaternion_i2b, - const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const s2e::math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, + AttitudeWithCantileverVibration(const math::Vector<3>& angular_velocity_b_rad_s, const math::Quaternion& quaternion_i2b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const math::Matrix<3, 3>& inertia_tensor_cantilever_kgm2, const double damping_ratio_cantilever, const double intrinsic_angular_velocity_cantilever_rad_s, - const s2e::math::Vector<3>& torque_b_Nm, const double propagation_step_s, + const math::Vector<3>& torque_b_Nm, const double propagation_step_s, const std::string& simulation_object_name = "attitude"); /** * @fn ~AttitudeWithCantileverVibration @@ -68,14 +68,14 @@ class AttitudeWithCantileverVibration : public Attitude { * @brief Set parameters for Monte-Carlo simulation * @param [in] mc_simulator: Monte-Carlo simulation executor */ - virtual void SetParameters(const MonteCarloSimulationExecutor& mc_simulator); + virtual void SetParameters(const simulation::MonteCarloSimulationExecutor& mc_simulator); private: double current_propagation_time_s_; //!< current time [sec] - s2e::math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] - s2e::math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] + math::Vector<3> angular_velocity_cantilever_rad_s_{0.0}; //!< Angular velocity of the cantilever with respect to the body frame [rad/s] + math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] - s2e::numerical_integration::AttitudeWithCantileverVibrationOde attitude_ode_; + AttitudeWithCantileverVibrationOde attitude_ode_; s2e::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; }; diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index 04937978c..a1850b8fb 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -9,9 +9,9 @@ namespace s2e::dynamics::attitude { -ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const s2e::math::Quaternion quaternion_i2b, - const s2e::math::Vector<3> main_target_direction_b, const s2e::math::Vector<3> sub_target_direction_b, - const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, +ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, + const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), main_mode_(main_mode), @@ -55,7 +55,7 @@ void ControlledAttitude::Initialize(void) { } void ControlledAttitude::Propagate(const double end_time_s) { - s2e::math::Vector<3> main_direction_i, sub_direction_i; + math::Vector<3> main_direction_i, sub_direction_i; if (!is_calc_enabled_) return; if (main_mode_ == AttitudeControlMode::kInertialStabilize) { @@ -74,28 +74,28 @@ void ControlledAttitude::Propagate(const double end_time_s) { return; } -s2e::math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mode) { - s2e::math::Vector<3> direction; +math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMode mode) { + math::Vector<3> direction; if (mode == AttitudeControlMode::kSunPointing) { direction = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); // When the local_celestial_information is not initialized. FIXME: This is temporary codes for attitude initialize. if (direction.CalcNorm() == 0.0) { - s2e::math::Vector<3> sun_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN"); - s2e::math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); + math::Vector<3> sun_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN"); + math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); direction = sun_position_i_m - spacecraft_position_i_m; } } else if (mode == AttitudeControlMode::kEarthCenterPointing) { direction = local_celestial_information_->GetPositionFromSpacecraft_i_m("EARTH"); // When the local_celestial_information is not initialized. FIXME: This is temporary codes for attitude initialize. if (direction.CalcNorm() == 0.0) { - s2e::math::Vector<3> earth_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("EARTH"); - s2e::math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); + math::Vector<3> earth_position_i_m = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("EARTH"); + math::Vector<3> spacecraft_position_i_m = orbit_->GetPosition_i_m(); direction = earth_position_i_m - spacecraft_position_i_m; } } else if (mode == AttitudeControlMode::kVelocityDirectionPointing) { direction = orbit_->GetVelocity_i_m_s(); } else if (mode == AttitudeControlMode::kGroundSpeedDirectionPointing) { - s2e::math::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); + math::Matrix<3, 3> dcm_ecef2eci = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); direction = dcm_ecef2eci * orbit_->GetVelocity_ecef_m_s(); } else if (mode == AttitudeControlMode::kOrbitNormalPointing) { direction = OuterProduct(orbit_->GetPosition_i_m(), orbit_->GetVelocity_i_m_s()); @@ -104,29 +104,29 @@ s2e::math::Vector<3> ControlledAttitude::CalcTargetDirection_i(AttitudeControlMo return direction; } -void ControlledAttitude::PointingControl(const s2e::math::Vector<3> main_direction_i, const s2e::math::Vector<3> sub_direction_i) { +void ControlledAttitude::PointingControl(const math::Vector<3> main_direction_i, const math::Vector<3> sub_direction_i) { // Calc DCM ECI->Target - s2e::math::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); + math::Matrix<3, 3> dcm_t2i = CalcDcm(main_direction_i, sub_direction_i); // Calc DCM Target->body - s2e::math::Matrix<3, 3> dcm_t2b = CalcDcm(main_target_direction_b_, sub_target_direction_b_); + math::Matrix<3, 3> dcm_t2b = CalcDcm(main_target_direction_b_, sub_target_direction_b_); // Calc DCM ECI->body - s2e::math::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); + math::Matrix<3, 3> dcm_i2b = dcm_t2b * dcm_t2i.Transpose(); // Convert to Quaternion - quaternion_i2b_ = s2e::math::Quaternion::ConvertFromDcm(dcm_i2b); + quaternion_i2b_ = math::Quaternion::ConvertFromDcm(dcm_i2b); } -s2e::math::Matrix<3, 3> ControlledAttitude::CalcDcm(const s2e::math::Vector<3> main_direction, const s2e::math::Vector<3> sub_direction) { +math::Matrix<3, 3> ControlledAttitude::CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction) { // Calc basis vectors - s2e::math::Vector<3> ex, ey, ez; + math::Vector<3> ex, ey, ez; ex = main_direction; - s2e::math::Vector<3> tmp1 = OuterProduct(ex, sub_direction); - s2e::math::Vector<3> tmp2 = OuterProduct(tmp1, ex); + math::Vector<3> tmp1 = OuterProduct(ex, sub_direction); + math::Vector<3> tmp2 = OuterProduct(tmp1, ex); ey = tmp2.CalcNormalizedVector(); - s2e::math::Vector<3> tmp3 = OuterProduct(ex, ey); + math::Vector<3> tmp3 = OuterProduct(ex, ey); ez = tmp3.CalcNormalizedVector(); // Generate DCM - s2e::math::Matrix<3, 3> dcm; + math::Matrix<3, 3> dcm; for (int i = 0; i < 3; i++) { dcm[i][0] = ex[i]; dcm[i][1] = ey[i]; @@ -154,24 +154,24 @@ AttitudeControlMode ConvertStringToCtrlMode(const std::string mode) { } void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { - s2e::math::Vector<3> controlled_torque_b_Nm(0.0); + math::Vector<3> controlled_torque_b_Nm(0.0); if (previous_calc_time_s_ > 0.0) { double time_diff_sec = current_time_s - previous_calc_time_s_; - s2e::math::Quaternion prev_q_b2i = previous_quaternion_i2b_.Conjugate(); - s2e::math::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; + math::Quaternion prev_q_b2i = previous_quaternion_i2b_.Conjugate(); + math::Quaternion q_diff = prev_q_b2i * quaternion_i2b_; q_diff = (2.0 / time_diff_sec) * q_diff; - s2e::math::Vector<3> angular_acc_b_rad_s2_; + math::Vector<3> angular_acc_b_rad_s2_; for (int i = 0; i < 3; i++) { angular_velocity_b_rad_s_[i] = q_diff[i]; angular_acc_b_rad_s2_[i] = (previous_omega_b_rad_s_[i] - angular_velocity_b_rad_s_[i]) / time_diff_sec; } - s2e::math::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); + math::Matrix<3, 3> inv_inertia_tensor = CalcInverseMatrix(inertia_tensor_kgm2_); controlled_torque_b_Nm = inv_inertia_tensor * angular_acc_b_rad_s2_; } else { - angular_velocity_b_rad_s_ = s2e::math::Vector<3>(0.0); - controlled_torque_b_Nm = s2e::math::Vector<3>(0.0); + angular_velocity_b_rad_s_ = math::Vector<3>(0.0); + controlled_torque_b_Nm = math::Vector<3>(0.0); } // Add torque with disturbances AddTorque_b_Nm(controlled_torque_b_Nm); diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 97154f376..0b1b65ac7 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -56,9 +56,9 @@ class ControlledAttitude : public Attitude { * @param [in] orbit: Orbit * @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation */ - ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const s2e::math::Quaternion quaternion_i2b, - const s2e::math::Vector<3> main_target_direction_b, const s2e::math::Vector<3> sub_target_direction_b, - const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit, + ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, + const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, + const math::Matrix<3, 3>& inertia_tensor_kgm2, const environment::LocalCelestialInformation* local_celestial_information, const orbit::Orbit* orbit, const std::string& simulation_object_name = "attitude"); /** * @fn ~ControlledAttitude @@ -81,17 +81,17 @@ class ControlledAttitude : public Attitude { * @fn SetQuaternion_i2t * @brief Set quaternion for INERTIAL_STABILIZE mode */ - inline void SetQuaternion_i2t(const s2e::math::Quaternion quaternion_i2t) { quaternion_i2b_ = quaternion_i2t; } + inline void SetQuaternion_i2t(const math::Quaternion quaternion_i2t) { quaternion_i2b_ = quaternion_i2t; } /** * @fn SetMainTargetDirection_b * @brief Set main target direction on the body fixed frame */ - inline void SetMainTargetDirection_b(s2e::math::Vector<3> main_target_direction_b) { main_target_direction_b_ = main_target_direction_b; } + inline void SetMainTargetDirection_b(math::Vector<3> main_target_direction_b) { main_target_direction_b_ = main_target_direction_b; } /** * @fn SetSubTargetDirection_b * @brief Set sub target direction on the body fixed frame */ - inline void SetSubTargetDirection_b(s2e::math::Vector<3> sub_target_direction_b) { sub_target_direction_b_ = sub_target_direction_b; } + inline void SetSubTargetDirection_b(math::Vector<3> sub_target_direction_b) { sub_target_direction_b_ = sub_target_direction_b; } /** * @fn Propagate @@ -103,18 +103,18 @@ class ControlledAttitude : public Attitude { private: AttitudeControlMode main_mode_; //!< Main control mode AttitudeControlMode sub_mode_; //!< Sub control mode - s2e::math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame - s2e::math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame + math::Vector<3> main_target_direction_b_; //!< Main target direction on the body fixed frame + math::Vector<3> sub_target_direction_b_; //!< Sub target direction on tge body fixed frame double previous_calc_time_s_ = -1.0; //!< Previous time of velocity calculation [sec] - s2e::math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion - s2e::math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] + math::Quaternion previous_quaternion_i2b_; //!< Previous quaternion + math::Vector<3> previous_omega_b_rad_s_; //!< Previous angular velocity [rad/s] - const double kMinDirectionAngle_rad = 30.0 * s2e::math::deg_to_rad; //!< Minimum angle b/w main and sub direction + const double kMinDirectionAngle_rad = 30.0 * math::deg_to_rad; //!< Minimum angle b/w main and sub direction // TODO Change with ini file // Inputs - const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information - const Orbit* orbit_; //!< Orbit information + const environment::LocalCelestialInformation* local_celestial_information_; //!< Local celestial information + const orbit::Orbit* orbit_; //!< Orbit information // Local functions /** @@ -128,14 +128,14 @@ class ControlledAttitude : public Attitude { * @param [in] mode: Attitude control mode * @return Target direction at the inertia frame */ - s2e::math::Vector<3> CalcTargetDirection_i(AttitudeControlMode mode); + math::Vector<3> CalcTargetDirection_i(AttitudeControlMode mode); /** * @fn PointingControl * @brief Calculate attitude quaternion * @param [in] main_direction_i: Main target direction in the inertial frame * @param [in] sub_direction_i: Sub target direction in the inertial frame */ - void PointingControl(const s2e::math::Vector<3> main_direction_i, const s2e::math::Vector<3> sub_direction_i); + void PointingControl(const math::Vector<3> main_direction_i, const math::Vector<3> sub_direction_i); /** * @fn CalcAngularVelocity * @brief Calculate angular velocity @@ -148,7 +148,7 @@ class ControlledAttitude : public Attitude { * @param [in] main_direction: Main target direction * @param [in] sub_direction: Sub target direction */ - s2e::math::Matrix<3, 3> CalcDcm(const s2e::math::Vector<3> main_direction, const s2e::math::Vector<3> sub_direction); + math::Matrix<3, 3> CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction); }; } // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 875bb92f2..8460ea988 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -9,7 +9,7 @@ namespace s2e::dynamics::attitude { Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { + const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { setting_file_reader::IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; std::string mc_name = "attitude" + std::to_string(spacecraft_id); @@ -18,9 +18,9 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel const std::string propagate_mode = ini_file.ReadString(section_, "propagate_mode"); const std::string initialize_mode = ini_file.ReadString(section_, "initialize_mode"); - s2e::math::Vector<3> omega_b; - s2e::math::Quaternion quaternion_i2b; - s2e::math::Vector<3> torque_b; + math::Vector<3> omega_b; + math::Quaternion quaternion_i2b; + math::Vector<3> torque_b; if (initialize_mode == "CONTROLLED") { // Initialize with Controlled attitude (attitude_tmp temporary used) setting_file_reader::IniAccess ini_file_ca(file_name); @@ -32,7 +32,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - s2e::math::Vector<3> main_target_direction_b, sub_target_direction_b; + math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); ini_file_ca.ReadVector(section_ca_, "sub_pointing_direction_b", sub_target_direction_b); std::string mc_name_temp = section_ + std::to_string(spacecraft_id) + "_TEMP"; @@ -40,8 +40,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel inertia_tensor_kgm2, local_celestial_information, orbit, mc_name_temp); attitude_temp->Propagate(step_width_s); quaternion_i2b = attitude_temp->GetQuaternion_i2b(); - omega_b = s2e::math::Vector<3>(0.0); - torque_b = s2e::math::Vector<3>(0.0); + omega_b = math::Vector<3>(0.0); + torque_b = math::Vector<3>(0.0); } else { // Including the case: initialize_mode == "MANUAL" ini_file.ReadVector(section_, "initial_angular_velocity_b_rad_s", omega_b); @@ -56,8 +56,8 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel setting_file_reader::IniAccess ini_structure(ini_structure_name); const char* section_cantilever = "CANTILEVER_PARAMETERS"; - s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; - s2e::math::Vector<9> inertia_vec; + math::Matrix<3, 3> inertia_tensor_cantilever_kgm2; + math::Vector<9> inertia_vec; ini_structure.ReadVector(section_cantilever, "inertia_tensor_cantilever_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { @@ -80,7 +80,7 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel AttitudeControlMode main_mode = ConvertStringToCtrlMode(main_mode_in); AttitudeControlMode sub_mode = ConvertStringToCtrlMode(sub_mode_in); ini_file_ca.ReadQuaternion(section_, "initial_quaternion_i2b", quaternion_i2b); - s2e::math::Vector<3> main_target_direction_b, sub_target_direction_b; + math::Vector<3> main_target_direction_b, sub_target_direction_b; ini_file_ca.ReadVector(section_ca_, "main_pointing_direction_b", main_target_direction_b); ini_file_ca.ReadVector(section_ca_, "sub_pointing_direction_b", sub_target_direction_b); diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index fae3b99ab..a03141105 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -23,8 +23,8 @@ namespace s2e::dynamics::attitude { * @param [in] inertia_tensor_kgm2: Inertia tensor [kg m^2] * @param [in] spacecraft_id: Satellite ID */ -Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, - const double step_width_s, const s2e::math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); +Attitude* InitAttitude(std::string file_name, const orbit::Orbit* orbit, const environment::LocalCelestialInformation* local_celestial_information, + const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); } // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index b0cc7711c..84591e9b3 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -13,15 +13,13 @@ namespace s2e::dynamics::attitude { -using s2e::numerical_integration - /** * @class AttitudeWithCantileverVibrationOde * @brief Class to implement Ordinary Differential Equations for Attitude with Cantilever Vibration * @note State variables in this ODE compose the following elenents (in order): angular_velocity_b_rad_s_ (3-dimension), * angular_velocity_cantilever_rad_s_ (3-dimension), quaternion_i2b_ (4-dmension), and euler_angular_cantilever_rad_ (3-dimension) */ -class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { +class AttitudeWithCantileverVibrationOde : public numerical_integration::InterfaceOde<13> { public: /** * @fn SetStateFromPhysicalQuantities @@ -31,10 +29,10 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @param [in] quaternion_i2b: True attitude of the spacecraft expressed by quaternion from the inertial frame to the body-fixed frame * @param [in] euler_angule_cantilever_rad: Euler angle of the cantilever@ body-fixed frame [rad] */ - s2e::math::Vector<13> SetStateFromPhysicalQuantities(const s2e::math::Vector<3> angular_velocity_b_rad_s, - const s2e::math::Vector<3> angular_velocity_cantilever_rad_s, const s2e::math::Quaternion quaternion_i2b, - const s2e::math::Vector<3> euler_angule_cantilever_rad) const { - s2e::math::Vector<13> state; + math::Vector<13> SetStateFromPhysicalQuantities(const math::Vector<3> angular_velocity_b_rad_s, + const math::Vector<3> angular_velocity_cantilever_rad_s, const math::Quaternion quaternion_i2b, + const math::Vector<3> euler_angule_cantilever_rad) const { + math::Vector<13> state; for (size_t i = 0; i < 3; i++) { state[i] = angular_velocity_b_rad_s[i]; } @@ -55,9 +53,9 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @brief Set physical quantities from state acquired by calculation of the ordinary differential equation * @param [in] state: state variables used to calculate the ordinary differential equation */ - void SetPhysicalQuantitiesFromState(const s2e::math::Vector<13> state, s2e::math::Vector<3>& angular_velocity_b_rad_s, - s2e::math::Vector<3>& angular_velocity_cantilever_rad_s, s2e::math::Quaternion& quaternion_i2b, - s2e::math::Vector<3>& euler_angular_cantilever_rad) const { + void SetPhysicalQuantitiesFromState(const math::Vector<13> state, math::Vector<3>& angular_velocity_b_rad_s, + math::Vector<3>& angular_velocity_cantilever_rad_s, math::Quaternion& quaternion_i2b, + math::Vector<3>& euler_angular_cantilever_rad) const { for (size_t i = 0; i < 3; i++) { angular_velocity_b_rad_s[i] = state[i]; } @@ -72,27 +70,27 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } } - s2e::math::Vector<13> DerivativeFunction(const double time_s, const s2e::math::Vector<13>& state) const override { + math::Vector<13> DerivativeFunction(const double time_s, const math::Vector<13>& state) const override { UNUSED(time_s); - s2e::math::Vector<13> output; + math::Vector<13> output; - s2e::math::Vector<3> omega_b_rad_s; - s2e::math::Vector<3> omega_cantilever_rad_s; - s2e::math::Quaternion quaternion_i2b; - s2e::math::Vector<3> euler_angle_cantilever_rad; + math::Vector<3> omega_b_rad_s; + math::Vector<3> omega_cantilever_rad_s; + math::Quaternion quaternion_i2b; + math::Vector<3> euler_angle_cantilever_rad; SetPhysicalQuantitiesFromState(state, omega_b_rad_s, omega_cantilever_rad_s, quaternion_i2b, euler_angle_cantilever_rad); - s2e::math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; - s2e::math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - s2e::math::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; + math::Vector<3> angular_momentum_total_b_Nms = (previous_inertia_tensor_kgm2_ * omega_b_rad_s) + angular_momentum_reaction_wheel_b_Nms_; + math::Vector<3> net_torque_b_Nm = torque_b_Nm_ - math::OuterProduct(omega_b_rad_s, angular_momentum_total_b_Nms) - torque_inertia_tensor_b_Nm_; - s2e::math::Vector<3> angular_accelaration_cantilever_rad_s2 = + math::Vector<3> angular_accelaration_cantilever_rad_s2 = -(inverse_equivalent_inertia_tensor_cantilever_ * (attenuation_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) - inverse_inertia_tensor_ * net_torque_b_Nm; - s2e::math::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); + math::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2); for (size_t i = 0; i < 3; ++i) { output[i] = rhs[i]; @@ -102,7 +100,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { output[i + 3] = angular_accelaration_cantilever_rad_s2[i]; } - s2e::math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (s2e::math::Vector<4>(quaternion_i2b)); + math::Vector<4> d_quaternion = 0.5 * CalcAngularVelocityMatrix(omega_b_rad_s) * (math::Vector<4>(quaternion_i2b)); for (size_t i = 0; i < 4; i++) { output[i + 6] = d_quaternion[i]; @@ -113,7 +111,7 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { } // The function is used to output the derivative of each corresponding physical quantity. - output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, s2e::math::Quaternion(d_quaternion), omega_cantilever_rad_s); + output = SetStateFromPhysicalQuantities(rhs, angular_accelaration_cantilever_rad_s2, math::Quaternion(d_quaternion), omega_cantilever_rad_s); return output; } @@ -133,27 +131,27 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn GetTorqueInertiaTensor_b_Nm * @brief Get torque generated by inertia tensor [Nm] */ - inline s2e::math::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } + inline math::Vector<3> GetTorqueInertiaTensor_b_Nm() { return torque_inertia_tensor_b_Nm_; } /** * @fn GetInverseInertiaTensor * @brief Get inverse of inertia tensor */ - inline s2e::math::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } + inline math::Matrix<3, 3> GetInverseInertiaTensor() { return inverse_inertia_tensor_; } /** * @fn GetPreviousInertiaTensor_kgm2 * @brief Get previous inertia tensor [kgm2] */ - inline s2e::math::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } + inline math::Matrix<3, 3> GetPreviousInertiaTensor_kgm2() { return previous_inertia_tensor_kgm2_; } /** * @fn GetInertiaTensorCantilever_kgm2 * @brief Get inertia tensor of the cantilever [kgm2] */ - inline s2e::math::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } + inline math::Matrix<3, 3> GetInertiaTensorCantilever_kgm2() { return inertia_tensor_cantilever_kgm2_; } /** * @fn GetInverseEquivalentInertiaTensorCantilever * @brief Get inverse of inertia tensor of the cantilever */ - inline s2e::math::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } + inline math::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; } // Setter /** @@ -170,58 +168,58 @@ class AttitudeWithCantileverVibrationOde : public InterfaceOde<13> { * @fn SetTorque_b_Nm * @brief Set torque acting on the spacecraft on the body fixed frame [Nm] */ - inline void SetTorque_b_Nm(const s2e::math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } + inline void SetTorque_b_Nm(const math::Vector<3> torque_b_Nm) { torque_b_Nm_ = torque_b_Nm; } /** * @fn SetTorqueInertiaTensor_b_Nm * @brief Set torque generated by inertia tensor [Nm] */ - inline void SetTorqueInertiaTensor_b_Nm(const s2e::math::Vector<3> torque_inertia_tensor_b_Nm) { + inline void SetTorqueInertiaTensor_b_Nm(const math::Vector<3> torque_inertia_tensor_b_Nm) { torque_inertia_tensor_b_Nm_ = torque_inertia_tensor_b_Nm; } /** * @fn SetAngularMomentumReactionWheel_b_Nms * @brief Set angular momentum of reaction wheel in the body fixed frame [Nms] */ - inline void SetAngularMomentumReactionWheel_b_Nms(const s2e::math::Vector<3> angular_momentum_reaction_wheel_b_Nms) { + inline void SetAngularMomentumReactionWheel_b_Nms(const math::Vector<3> angular_momentum_reaction_wheel_b_Nms) { angular_momentum_reaction_wheel_b_Nms_ = angular_momentum_reaction_wheel_b_Nms; } /** * @fn SetInverseInertiaTensor * @brief Set inverse of inertia tensor */ - inline void SetInverseInertiaTensor(const s2e::math::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } + inline void SetInverseInertiaTensor(const math::Matrix<3, 3> inverse_inertia_tensor) { inverse_inertia_tensor_ = inverse_inertia_tensor; } /** * @fn SetPreviousInertiaTensor_kgm2 * @brief Set previous inertia tensor [kgm2] */ - inline void SetPreviousInertiaTensor_kgm2(const s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2) { + inline void SetPreviousInertiaTensor_kgm2(const math::Matrix<3, 3> previous_inertia_tensor_kgm2) { previous_inertia_tensor_kgm2_ = previous_inertia_tensor_kgm2; } /** * @fn SetInertiaTensorCantilever_kgm2 * @brief Set inertia tensor of the cantilever [kgm2] */ - inline void SetInertiaTensorCantilever_kgm2(const s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { + inline void SetInertiaTensorCantilever_kgm2(const math::Matrix<3, 3> inertia_tensor_cantilever_kgm2) { inertia_tensor_cantilever_kgm2_ = inertia_tensor_cantilever_kgm2; } /** * @fn SetInverseEquivalentInertiaTensorCantilever * @brief Set inverse of inertia tensor of the cantilever */ - inline void SetInverseEquivalentInertiaTensorCantilever(const s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { + inline void SetInverseEquivalentInertiaTensorCantilever(const math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) { inverse_equivalent_inertia_tensor_cantilever_ = inverse_equivalent_inertia_tensor_cantilever; } protected: double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient double spring_coefficient_ = 0.0; //!< Spring coefficient - s2e::math::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] - s2e::math::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] - s2e::math::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] - s2e::math::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor - s2e::math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] - s2e::math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] - s2e::math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever + math::Vector<3> torque_b_Nm_{0.0}; //!< Torque in the body fixed frame [Nm] + math::Vector<3> torque_inertia_tensor_b_Nm_{0.0}; //!< Torque generated by inertia tensor [Nm] + math::Vector<3> angular_momentum_reaction_wheel_b_Nms_{0.0}; //!< Angular momentum of reaction wheel in the body fixed frame [Nms] + math::Matrix<3, 3> inverse_inertia_tensor_{0.0}; //!< Inverse of inertia tensor + math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2] + math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2] + math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; } // namespace s2e::dynamics::attitude diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index ea722d28d..e87f57dd0 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -9,20 +9,19 @@ namespace s2e::dynamics { -dynamics::Dynamics::dynamics::Dynamics(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, - const LocalEnvironment* local_environment, const int spacecraft_id, Structure* structure, - RelativeInformation* relative_information) +Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, const environment::LocalEnvironment* local_environment, + const int spacecraft_id, simulation::Structure* structure, simulation::RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); } -dynamics::Dynamics::~dynamics::Dynamics() { +Dynamics::~dynamics::Dynamics() { delete attitude_; delete orbit_; delete temperature_; } -void dynamics::Dynamics::Initialize(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const int spacecraft_id, +void Dynamics::Initialize(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const int spacecraft_id, Structure* structure, RelativeInformation* relative_information) { const LocalCelestialInformation& local_celestial_information = local_environment_->GetCelestialInformation(); // Initialize @@ -38,7 +37,7 @@ void dynamics::Dynamics::Initialize(const SimulationConfiguration* simulation_co orbit_->UpdateByAttitude(attitude_->GetQuaternion_i2b()); } -void dynamics::Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { +void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { // Attitude propagation if (simulation_time->GetAttitudePropagateFlag()) { attitude_->Propagate(simulation_time->GetElapsedTime_s()); @@ -56,13 +55,13 @@ void dynamics::Dynamics::Update(const SimulationTime* simulation_time, const Loc } } -void dynamics::Dynamics::ClearForceTorque(void) { - s2e::math::Vector<3> zero(0.0); +void Dynamics::ClearForceTorque(void) { + math::Vector<3> zero(0.0); attitude_->SetTorque_b_Nm(zero); orbit_->SetAcceleration_i_m_s2(zero); } -void dynamics::Dynamics::LogSetup(Logger& logger) { +void Dynamics::LogSetup(Logger& logger) { logger.AddLogList(attitude_); logger.AddLogList(orbit_); logger.AddLogList(temperature_); diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 27797a506..0681d6d4c 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -38,8 +38,8 @@ class Dynamics { * @param [in] structure: Structure of the spacecraft * @param [in] relative_information: Relative information */ - Dynamics(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const LocalEnvironment* local_environment, - const int spacecraft_id, Structure* structure, RelativeInformation* relative_information = (RelativeInformation*)nullptr); + Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, const environment::LocalEnvironment* local_environment, + const int spacecraft_id, simulation::Structure* structure, simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); /** * @fn ~Dynamics * @brief Destructor @@ -52,26 +52,26 @@ class Dynamics { * @param [in] simulation_time: Simulation time * @param [in] local_celestial_information: Local celestial information */ - void Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information); + void Update(const simulation::SimulationTime* simulation_time, const environment::LocalCelestialInformation* local_celestial_information); /** * @fn LogSetup * @brief Log setup for dynamics calculation */ - void LogSetup(Logger& logger); + void LogSetup(logger::Logger& logger); /** * @fn AddTorque_b_Nm * @brief Add input torque for the attitude dynamics propagation * @param [in] torque_b_Nm: Torque in the body fixed frame [Nm] */ - inline void AddTorque_b_Nm(s2e::math::Vector<3> torque_b_Nm) { attitude_->AddTorque_b_Nm(torque_b_Nm); } + inline void AddTorque_b_Nm(math::Vector<3> torque_b_Nm) { attitude_->AddTorque_b_Nm(torque_b_Nm); } /** * @fn AddForce_b_N * @brief Add input force for the orbit dynamics propagation * @param [in] force_b_N: Force in the body fixed frame [N] */ - inline void AddForce_b_N(s2e::math::Vector<3> force_b_N) { + inline void AddForce_b_N(math::Vector<3> force_b_N) { orbit_->AddForce_b_N(force_b_N, attitude_->GetQuaternion_i2b(), structure_->GetKinematicsParameters().GetMass_kg()); } /** @@ -79,7 +79,7 @@ class Dynamics { * @brief Add input acceleration for the orbit dynamics propagation * @param [in] acceleration_i_m_s2: Acceleration in the inertial fixed frame [N] */ - inline void AddAcceleration_i_m_s2(s2e::math::Vector<3> acceleration_i_m_s2) { orbit_->AddAcceleration_i_m_s2(acceleration_i_m_s2); } + inline void AddAcceleration_i_m_s2(math::Vector<3> acceleration_i_m_s2) { orbit_->AddAcceleration_i_m_s2(acceleration_i_m_s2); } /** * @fn ClearForceTorque @@ -91,29 +91,29 @@ class Dynamics { * @fn GetAttitude * @brief Return Attitude class */ - inline const Attitude& GetAttitude() const { return *attitude_; } + inline const attitude::Attitude& GetAttitude() const { return *attitude_; } /** * @fn GetOrbit * @brief Return Orbit class */ - inline const Orbit& GetOrbit() const { return *orbit_; } + inline const orbit::Orbit& GetOrbit() const { return *orbit_; } /** * @fn GetTemperature * @brief Return Temperature class */ - inline const Temperature& GetTemperature() const { return *temperature_; } + inline const thermal::Temperature& GetTemperature() const { return *temperature_; } /** * @fn SetAttitude * @brief Return Attitude class to change the Attitude */ - inline Attitude& SetAttitude() const { return *attitude_; } + inline attitude::Attitude& SetAttitude() const { return *attitude_; } private: - Attitude* attitude_; //!< Attitude dynamics - Orbit* orbit_; //!< Orbit dynamics - Temperature* temperature_; //!< Thermal dynamics - const Structure* structure_; //!< Structure information - const LocalEnvironment* local_environment_; //!< Local environment + attitude::Attitude* attitude_; //!< Attitude dynamics + orbit::Orbit* orbit_; //!< Orbit dynamics + thermal::Temperature* temperature_; //!< Thermal dynamics + const simulation::Structure* structure_; //!< Structure information + const environment::LocalEnvironment* local_environment_; //!< Local environment /** * @fn Initialize @@ -125,8 +125,8 @@ class Dynamics { * @param [in] structure: Structure of the spacecraft * @param [in] relative_information: Relative information */ - void Initialize(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const int spacecraft_id, - Structure* structure, RelativeInformation* relative_information = (RelativeInformation*)nullptr); + void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, const int spacecraft_id, + simulation::Structure* structure, simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); }; } // namespace s2e::dynamics diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index b846fa37c..ac661f705 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -12,10 +12,10 @@ namespace s2e::dynamics::orbit { EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, - const double propagation_step_s, const double current_time_jd, const s2e::math::Vector<3> position_i_m, - const s2e::math::Vector<3> velocity_i_m_s, const double error_tolerance) + const double propagation_step_s, const double current_time_jd, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s, const double error_tolerance) : Orbit(celestial_information), - s2e::math::OrdinaryDifferentialEquation<6>(propagation_step_s), + math::OrdinaryDifferentialEquation<6>(propagation_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), error_tolerance_(error_tolerance), propagation_step_s_(propagation_step_s) { @@ -62,9 +62,9 @@ void EnckeOrbitPropagation::Propagate(const double end_time_s, const double curr } // Functions for OrdinaryDifferentialEquation -void EnckeOrbitPropagation::DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs) { +void EnckeOrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs) { UNUSED(t); - s2e::math::Vector<3> difference_position_i_m_m, difference_acc_i_m_s2; + math::Vector<3> difference_position_i_m_m, difference_acc_i_m_s2; for (int i = 0; i < 3; i++) { difference_position_i_m_m[i] = state[i]; } @@ -85,7 +85,7 @@ void EnckeOrbitPropagation::DerivativeFunction(double t, const s2e::math::Vector } // Private Functions -void EnckeOrbitPropagation::Initialize(double current_time_jd, s2e::math::Vector<3> reference_position_i_m, s2e::math::Vector<3> reference_velocity_i_m_s) { +void EnckeOrbitPropagation::Initialize(double current_time_jd, math::Vector<3> reference_position_i_m, math::Vector<3> reference_velocity_i_m_s) { // General spacecraft_acceleration_i_m_s2_.FillUp(0.0); @@ -99,7 +99,7 @@ void EnckeOrbitPropagation::Initialize(double current_time_jd, s2e::math::Vector difference_position_i_m_.FillUp(0.0); difference_velocity_i_m_s_.FillUp(0.0); - s2e::math::Vector<6> zero(0.0f); + math::Vector<6> zero(0.0f); Setup(0.0, zero); UpdateSatOrbit(); @@ -113,11 +113,11 @@ void EnckeOrbitPropagation::UpdateSatOrbit() { TransformEcefToGeodetic(); } -double EnckeOrbitPropagation::CalcQFunction(s2e::math::Vector<3> difference_position_i_m) { +double EnckeOrbitPropagation::CalcQFunction(math::Vector<3> difference_position_i_m) { double r2; r2 = InnerProduct(spacecraft_position_i_m_, spacecraft_position_i_m_); - s2e::math::Vector<3> dr_2r; + math::Vector<3> dr_2r; dr_2r = difference_position_i_m - 2.0 * spacecraft_position_i_m_; double q = InnerProduct(difference_position_i_m, dr_2r) / r2; diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index a06a207f1..7b2ba00a8 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -16,7 +16,7 @@ namespace s2e::dynamics::orbit { * @class EnckeOrbitPropagation * @brief Class to propagate spacecraft orbit with Encke's method */ -class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferentialEquation<6> { +class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquation<6> { public: /** * @fn EnckeOrbitPropagation @@ -30,7 +30,7 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti * @param [in] error_tolerance: Error tolerance threshold */ EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, - const double current_time_jd, const s2e::math::Vector<3> position_i_m, const s2e::math::Vector<3> velocity_i_m_s, + const double current_time_jd, const math::Vector<3> position_i_m, const math::Vector<3> velocity_i_m_s, const double error_tolerance); /** * @fn ~EnckeOrbitPropagation @@ -55,7 +55,7 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs); + virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); private: // General @@ -65,13 +65,13 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 // reference orbit - s2e::math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] - s2e::math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] + math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] + math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] s2e::orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit - s2e::math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] - s2e::math::Vector<3> difference_velocity_i_m_s_; //!< Difference orbit velocity in the inertial frame [m/s] + math::Vector<3> difference_position_i_m_; //!< Difference orbit position in the inertial frame [m] + math::Vector<3> difference_velocity_i_m_s_; //!< Difference orbit velocity in the inertial frame [m/s] // functions /** @@ -81,7 +81,7 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti * @param [in] reference_position_i_m: Initial value of reference orbit position in the inertial frame [m] * @param [in] reference_velocity_i_m_s: Initial value of reference orbit position in the inertial frame [m] */ - void Initialize(const double current_time_jd, const s2e::math::Vector<3> reference_position_i_m, const s2e::math::Vector<3> reference_velocity_i_m_s); + void Initialize(const double current_time_jd, const math::Vector<3> reference_position_i_m, const math::Vector<3> reference_velocity_i_m_s); /** * @fn UpdateSatOrbit * @brief Update satellite orbit @@ -92,7 +92,7 @@ class EnckeOrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferenti * @brief Calculate Q function * @param [in] difference_position_i_m: Difference of position in the inertial frame [m] */ - double CalcQFunction(const s2e::math::Vector<3> difference_position_i_m); + double CalcQFunction(const math::Vector<3> difference_position_i_m); }; } // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 8aad74327..a564b2521 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -28,9 +28,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string if (propagate_mode == "RK4") { // initialize RK4 orbit propagator - s2e::math::Vector<3> position_i_m; - s2e::math::Vector<3> velocity_i_m_s; - s2e::math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -51,9 +51,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string s2e::orbit::RelativeOrbitModel relative_dynamics_model_type = (s2e::orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); s2e::orbit::StmModel stm_model_type = (s2e::orbit::StmModel)(conf.ReadInt(section_, "stm_model_type")); - s2e::math::Vector<3> init_relative_position_lvlh; + math::Vector<3> init_relative_position_lvlh; conf.ReadVector<3>(section_, "initial_relative_position_lvlh_m", init_relative_position_lvlh); - s2e::math::Vector<3> init_relative_velocity_lvlh; + math::Vector<3> init_relative_velocity_lvlh; conf.ReadVector<3>(section_, "initial_relative_velocity_lvlh_m_s", init_relative_velocity_lvlh); // There is a possibility that the orbit of the reference sat is not initialized when RelativeOrbit initialization is called To ensure that @@ -68,9 +68,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string // TODO: init_mode_kepler should be removed in the next major update if (initialize_mode == OrbitInitializeMode::kInertialPositionAndVelocity) { // initialize with position and velocity - s2e::math::Vector<3> init_pos_m; + math::Vector<3> init_pos_m; conf.ReadVector<3>(section_, "initial_position_i_m", init_pos_m); - s2e::math::Vector<3> init_vel_m_s; + math::Vector<3> init_vel_m_s; conf.ReadVector<3>(section_, "initial_velocity_i_m_s", init_vel_m_s); oe = s2e::orbit::OrbitalElements(gravity_constant_m3_s2, current_time_jd, init_pos_m, init_vel_m_s); } else { @@ -87,9 +87,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string orbit = new KeplerOrbitPropagation(celestial_information, current_time_jd, kepler_orbit); } else if (propagate_mode == "ENCKE") { // initialize orbit for Encke's method - s2e::math::Vector<3> position_i_m; - s2e::math::Vector<3> velocity_i_m_s; - s2e::math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -102,9 +102,9 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string std::cerr << "ERROR: orbit propagation mode: " << propagate_mode << " is not defined!" << std::endl; std::cerr << "The orbit mode is automatically set as RK4" << std::endl; - s2e::math::Vector<3> position_i_m; - s2e::math::Vector<3> velocity_i_m_s; - s2e::math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel = InitializePosVel(initialize_file, current_time_jd, gravity_constant_m3_s2); for (size_t i = 0; i < 3; i++) { position_i_m[i] = pos_vel[i]; velocity_i_m_s[i] = pos_vel[i + 3]; @@ -117,12 +117,12 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string return orbit; } -s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { +math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section) { auto conf = setting_file_reader::IniAccess(initialize_file); const char* section_ = section.c_str(); - s2e::math::Vector<3> position_i_m; - s2e::math::Vector<3> velocity_i_m_s; - s2e::math::Vector<6> pos_vel; + math::Vector<3> position_i_m; + math::Vector<3> velocity_i_m_s; + math::Vector<6> pos_vel; OrbitInitializeMode initialize_mode = SetOrbitInitializeMode(conf.ReadString(section_, "initialize_mode")); if (initialize_mode == OrbitInitializeMode::kOrbitalElements) { diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index 59a03d8a0..ece960dd2 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -25,7 +25,7 @@ namespace s2e::dynamics::orbit { * @param [in] section: Section name * @param [in] relative_information: Relative information */ -Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, +Orbit* InitOrbit(const environment::CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT", RelativeInformation* relative_information = (RelativeInformation*)nullptr); @@ -37,7 +37,7 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string * @param [in] gravity_constant_m3_s2: Gravity constant [m3/s2] * @param [in] section: Section name */ -s2e::math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); +math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); } // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index f838b7c76..d08e642ad 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -6,16 +6,16 @@ namespace s2e::dynamics::orbit { -s2e::math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { - s2e::math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite - s2e::math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); - s2e::math::Vector<3> lvlh_z = +math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { + math::Vector<3> lvlh_x = spacecraft_position_i_m_; // x-axis in LVLH frame is position vector direction from geocenter to satellite + math::Vector<3> lvlh_ex = lvlh_x.CalcNormalizedVector(); + math::Vector<3> lvlh_z = OuterProduct(spacecraft_position_i_m_, spacecraft_velocity_i_m_s_); // z-axis in LVLH frame is angular momentum vector direction of orbit - s2e::math::Vector<3> lvlh_ez = lvlh_z.CalcNormalizedVector(); - s2e::math::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); - s2e::math::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); + math::Vector<3> lvlh_ez = lvlh_z.CalcNormalizedVector(); + math::Vector<3> lvlh_y = OuterProduct(lvlh_z, lvlh_x); + math::Vector<3> lvlh_ey = lvlh_y.CalcNormalizedVector(); - s2e::math::Matrix<3, 3> dcm_i2lvlh; + math::Matrix<3, 3> dcm_i2lvlh; dcm_i2lvlh[0][0] = lvlh_ex[0]; dcm_i2lvlh[0][1] = lvlh_ex[1]; dcm_i2lvlh[0][2] = lvlh_ex[2]; @@ -26,19 +26,19 @@ s2e::math::Quaternion Orbit::CalcQuaternion_i2lvlh() const { dcm_i2lvlh[2][1] = lvlh_ez[1]; dcm_i2lvlh[2][2] = lvlh_ez[2]; - s2e::math::Quaternion q_i2lvlh = s2e::math::Quaternion::ConvertFromDcm(dcm_i2lvlh); + math::Quaternion q_i2lvlh = math::Quaternion::ConvertFromDcm(dcm_i2lvlh); return q_i2lvlh.Normalize(); } void Orbit::TransformEciToEcef(void) { - s2e::math::Matrix<3, 3> dcm_i_to_xcxf = celestial_information_->GetEarthRotation().GetDcmJ2000ToEcef(); + math::Matrix<3, 3> dcm_i_to_xcxf = celestial_information_->GetEarthRotation().GetDcmJ2000ToEcef(); spacecraft_position_ecef_m_ = dcm_i_to_xcxf * spacecraft_position_i_m_; // convert velocity vector in ECI to the vector in ECEF - s2e::math::Vector<3> earth_angular_velocity_i_rad_s{0.0}; + math::Vector<3> earth_angular_velocity_i_rad_s{0.0}; earth_angular_velocity_i_rad_s[2] = environment::earth_mean_angular_velocity_rad_s; - s2e::math::Vector<3> we_cross_r = OuterProduct(earth_angular_velocity_i_rad_s, spacecraft_position_i_m_); - s2e::math::Vector<3> velocity_we_cross_r = spacecraft_velocity_i_m_s_ - we_cross_r; + math::Vector<3> we_cross_r = OuterProduct(earth_angular_velocity_i_rad_s, spacecraft_position_i_m_); + math::Vector<3> velocity_we_cross_r = spacecraft_velocity_i_m_s_ - we_cross_r; spacecraft_velocity_ecef_m_s_ = dcm_i_to_xcxf * velocity_we_cross_r; } @@ -74,9 +74,9 @@ std::string Orbit::GetLogHeader() const { str_tmp += logger::WriteVector("spacecraft_velocity", "i", "m/s", 3); str_tmp += logger::WriteVector("spacecraft_velocity", "b", "m/s", 3); str_tmp += logger::WriteVector("spacecraft_acceleration", "i", "m/s2", 3); - str_tmp += WriteScalar("spacecraft_latitude", "rad"); - str_tmp += WriteScalar("spacecraft_longitude", "rad"); - str_tmp += WriteScalar("spacecraft_altitude", "m"); + str_tmp += logger::WriteScalar("spacecraft_latitude", "rad"); + str_tmp += logger::WriteScalar("spacecraft_longitude", "rad"); + str_tmp += logger::WriteScalar("spacecraft_altitude", "m"); return str_tmp; } @@ -89,9 +89,9 @@ std::string Orbit::GetLogValue() const { str_tmp += logger::WriteVector(spacecraft_velocity_i_m_s_, 10); str_tmp += logger::WriteVector(spacecraft_velocity_b_m_s_, 10); str_tmp += logger::WriteVector(spacecraft_acceleration_i_m_s2_, 10); - str_tmp += WriteScalar(spacecraft_geodetic_position_.GetLatitude_rad()); - str_tmp += WriteScalar(spacecraft_geodetic_position_.GetLongitude_rad()); - str_tmp += WriteScalar(spacecraft_geodetic_position_.GetAltitude_m()); + str_tmp += logger::WriteScalar(spacecraft_geodetic_position_.GetLatitude_rad()); + str_tmp += logger::WriteScalar(spacecraft_geodetic_position_.GetLongitude_rad()); + str_tmp += logger::WriteScalar(spacecraft_geodetic_position_.GetAltitude_m()); return str_tmp; } diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index b83ba4716..f6d80c7e7 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -51,7 +51,7 @@ class Orbit : public logger::ILoggable { * @brief Constructor * @param [in] celestial_information: Celestial information */ - Orbit(const CelestialInformation* celestial_information) : celestial_information_(celestial_information) {} + Orbit(const environment::CelestialInformation* celestial_information) : celestial_information_(celestial_information) {} /** * @fn ~Orbit * @brief Destructor @@ -71,7 +71,7 @@ class Orbit : public logger::ILoggable { * @brief Update attitude information * @param [in] quaternion_i2b: End time of simulation [sec] */ - inline void UpdateByAttitude(const s2e::math::Quaternion quaternion_i2b) { + inline void UpdateByAttitude(const math::Quaternion quaternion_i2b) { spacecraft_velocity_b_m_s_ = quaternion_i2b.FrameConversion(spacecraft_velocity_i_m_s_); } @@ -90,27 +90,27 @@ class Orbit : public logger::ILoggable { * @fn GetPosition_i_m * @brief Return spacecraft position in the inertial frame [m] */ - inline s2e::math::Vector<3> GetPosition_i_m() const { return spacecraft_position_i_m_; } + inline math::Vector<3> GetPosition_i_m() const { return spacecraft_position_i_m_; } /** * @fn GetPosition_ecef_m * @brief Return spacecraft position in the ECEF frame [m] */ - inline s2e::math::Vector<3> GetPosition_ecef_m() const { return spacecraft_position_ecef_m_; } + inline math::Vector<3> GetPosition_ecef_m() const { return spacecraft_position_ecef_m_; } /** * @fn GetVelocity_i_m_s * @brief Return spacecraft velocity in the inertial frame [m/s] */ - inline s2e::math::Vector<3> GetVelocity_i_m_s() const { return spacecraft_velocity_i_m_s_; } + inline math::Vector<3> GetVelocity_i_m_s() const { return spacecraft_velocity_i_m_s_; } /** * @fn GetVelocity_b_m_s * @brief Return spacecraft velocity in the body fixed frame [m/s] */ - inline s2e::math::Vector<3> GetVelocity_b_m_s() const { return spacecraft_velocity_b_m_s_; } + inline math::Vector<3> GetVelocity_b_m_s() const { return spacecraft_velocity_b_m_s_; } /** * @fn GetVelocity_ecef_m_s * @brief Return spacecraft velocity in the ECEF frame [m/s] */ - inline s2e::math::Vector<3> GetVelocity_ecef_m_s() const { return spacecraft_velocity_ecef_m_s_; } + inline math::Vector<3> GetVelocity_ecef_m_s() const { return spacecraft_velocity_ecef_m_s_; } /** * @fn GetGeodeticPosition * @brief Return spacecraft position in the geodetic frame [m] @@ -121,8 +121,8 @@ class Orbit : public logger::ILoggable { inline double GetLatitude_rad() const { return spacecraft_geodetic_position_.GetLatitude_rad(); } inline double GetLongitude_rad() const { return spacecraft_geodetic_position_.GetLongitude_rad(); } inline double GetAltitude_m() const { return spacecraft_geodetic_position_.GetAltitude_m(); } - inline s2e::math::Vector<3> GetLatLonAlt() const { - s2e::math::Vector<3> vec; + inline math::Vector<3> GetLatLonAlt() const { + math::Vector<3> vec; vec(0) = spacecraft_geodetic_position_.GetLatitude_rad(); vec(1) = spacecraft_geodetic_position_.GetLongitude_rad(); vec(2) = spacecraft_geodetic_position_.GetAltitude_m(); @@ -139,15 +139,15 @@ class Orbit : public logger::ILoggable { * @fn SetAcceleration_i_m_s2 * @brief Set acceleration in the inertial frame [m/s2] */ - inline void SetAcceleration_i_m_s2(const s2e::math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ = acceleration_i_m_s2; } + inline void SetAcceleration_i_m_s2(const math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ = acceleration_i_m_s2; } /** * @fn AddForce_i_N * @brief Add force * @param [in] force_i: Force in the inertial frame [N] * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_i_N(const s2e::math::Vector<3> force_i_N, double spacecraft_mass_kg) { - s2e::math::Vector<3> acceleration_i_m_s2 = force_i_N; + inline void AddForce_i_N(const math::Vector<3> force_i_N, double spacecraft_mass_kg) { + math::Vector<3> acceleration_i_m_s2 = force_i_N; acceleration_i_m_s2 /= spacecraft_mass_kg; // FIXME spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } @@ -155,7 +155,7 @@ class Orbit : public logger::ILoggable { * @fn AddAcceleration_i_m_s2 * @brief Add acceleration in the inertial frame [m/s2] */ - inline void AddAcceleration_i_m_s2(const s2e::math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } + inline void AddAcceleration_i_m_s2(const math::Vector<3> acceleration_i_m_s2) { spacecraft_acceleration_i_m_s2_ += acceleration_i_m_s2; } /** * @fn AddForce_i_N * @brief Add force @@ -163,7 +163,7 @@ class Orbit : public logger::ILoggable { * @param [in] quaternion_i2b: Quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_mass_kg: Mass of spacecraft [kg] */ - inline void AddForce_b_N(const s2e::math::Vector<3> force_b_N, const s2e::math::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { + inline void AddForce_b_N(const math::Vector<3> force_b_N, const math::Quaternion quaternion_i2b, const double spacecraft_mass_kg) { auto force_i = quaternion_i2b.InverseFrameConversion(force_b_N); AddForce_i_N(force_i, spacecraft_mass_kg); } @@ -172,7 +172,7 @@ class Orbit : public logger::ILoggable { * @fn CalcQuaternion_i2lvlh * @brief Calculate and return quaternion from the inertial frame to the LVLH frame */ - s2e::math::Quaternion CalcQuaternion_i2lvlh() const; + math::Quaternion CalcQuaternion_i2lvlh() const; // Override logger::ILoggable /** @@ -187,21 +187,21 @@ class Orbit : public logger::ILoggable { virtual std::string GetLogValue() const; protected: - const CelestialInformation* celestial_information_; //!< Celestial information + const environment::CelestialInformation* celestial_information_; //!< Celestial information // Settings bool is_calc_enabled_ = false; //!< Calculate flag OrbitPropagateMode propagate_mode_; //!< Propagation mode - s2e::math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] - s2e::math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] + math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] + math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] s2e::geodesy::GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame - s2e::math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] - s2e::math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] - s2e::math::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] + math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] + math::Vector<3> spacecraft_velocity_b_m_s_; //!< Spacecraft velocity in the body frame [m/s] + math::Vector<3> spacecraft_velocity_ecef_m_s_; //!< Spacecraft velocity in the ECEF frame [m/s] - s2e::math::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] + math::Vector<3> spacecraft_acceleration_i_m_s2_; //!< Spacecraft acceleration in the inertial frame [m/s2] //!< NOTE: Clear to zero at the end of the Propagate function // Frame Conversion TODO: consider other planet diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 4dbb9838a..7620b3866 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -11,11 +11,11 @@ namespace s2e::dynamics::orbit { RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - int reference_spacecraft_id, s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, + int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, s2e::orbit::StmModel stm_model_type, RelativeInformation* relative_information) : Orbit(celestial_information), - s2e::math::OrdinaryDifferentialEquation<6>(time_step_s), + math::OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), reference_spacecraft_id_(reference_spacecraft_id), update_method_(update_method), @@ -32,7 +32,7 @@ RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, RelativeOrbit::~RelativeOrbit() {} -void RelativeOrbit::InitializeState(s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, +void RelativeOrbit::InitializeState(math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, double initial_time_s) { relative_position_lvlh_m_ = relative_position_lvlh_m; relative_velocity_lvlh_m_s_ = relative_velocity_lvlh_m_s; @@ -40,10 +40,10 @@ void RelativeOrbit::InitializeState(s2e::math::Vector<3> relative_position_lvlh_ // Disturbance acceleration are not considered in relative orbit propagation spacecraft_acceleration_i_m_s2_ *= 0.0; - s2e::math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); - s2e::math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); - s2e::math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); + math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); + math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; spacecraft_velocity_i_m_s_ = q_lvlh2i.FrameConversion(relative_velocity_lvlh_m_s_) + reference_sat_velocity_i; @@ -110,10 +110,10 @@ void RelativeOrbit::Propagate(const double end_time_s, const double current_time PropagateStm(end_time_s); } - s2e::math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); - s2e::math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); - s2e::math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); + math::Vector<3> reference_sat_position_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_velocity_i = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().GetVelocity_i_m_s(); + math::Quaternion q_i2lvlh = relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_lvlh2i = q_i2lvlh.Conjugate(); spacecraft_position_i_m_ = q_lvlh2i.FrameConversion(relative_position_lvlh_m_) + reference_sat_position_i; spacecraft_velocity_i_m_s_ = q_lvlh2i.FrameConversion(relative_velocity_lvlh_m_s_) + reference_sat_velocity_i; @@ -140,7 +140,7 @@ void RelativeOrbit::PropagateRk4(double elapsed_sec) { } void RelativeOrbit::PropagateStm(double elapsed_sec) { - s2e::math::Vector<6> current_state; + math::Vector<6> current_state; CalculateStm(stm_model_type_, &(relative_information_->GetReferenceSatDynamics(reference_spacecraft_id_)->GetOrbit()), gravity_constant_m3_s2_, elapsed_sec); current_state = stm_ * initial_state_; @@ -153,8 +153,8 @@ void RelativeOrbit::PropagateStm(double elapsed_sec) { relative_velocity_lvlh_m_s_[2] = current_state[5]; } -void RelativeOrbit::DerivativeFunction(double t, const s2e::math::Vector<6>& state, - s2e::math::Vector<6>& rhs) // only for RK4 relative dynamics propagation +void RelativeOrbit::DerivativeFunction(double t, const math::Vector<6>& state, + math::Vector<6>& rhs) // only for RK4 relative dynamics propagation { rhs = system_matrix_ * state; (void)t; diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 609994168..7aa505d88 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -19,7 +19,7 @@ namespace s2e::dynamics::orbit { * @class RelativeOrbit * @brief Class to propagate relative orbit */ -class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquation<6> { +class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> { public: /** * @enum RelativeOrbitUpdateMethod @@ -42,7 +42,7 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati * @param [in] relative_information: Relative information */ RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, - s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, + math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, s2e::orbit::StmModel stm_model_type, RelativeInformation* relative_information); /** * @fn ~RelativeOrbit @@ -75,12 +75,12 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 [sec] double propagation_step_s_; //!< Step width for RK4 [sec] - s2e::math::Matrix<6, 6> system_matrix_; //!< System matrix - s2e::math::Matrix<6, 6> stm_; //!< State transition matrix + math::Matrix<6, 6> system_matrix_; //!< System matrix + math::Matrix<6, 6> stm_; //!< State transition matrix - s2e::math::Vector<6> initial_state_; //!< Initial state (Position and Velocity) - s2e::math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame - s2e::math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame + math::Vector<6> initial_state_; //!< Initial state (Position and Velocity) + math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame + math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame RelativeOrbitUpdateMethod update_method_; //!< Update method s2e::orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type @@ -95,7 +95,7 @@ class RelativeOrbit : public Orbit, public s2e::math::OrdinaryDifferentialEquati * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @param [in] initial_time_s: Initialize time [sec] */ - void InitializeState(s2e::math::Vector<3> relative_position_lvlh_m, s2e::math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, + void InitializeState(math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, double gravity_constant_m3_s2, double initial_time_s = 0); /** * @fn CalculateSystemMatrix diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index b73971d46..824637259 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -11,7 +11,7 @@ namespace s2e::dynamics::orbit { Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s) + math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) : Orbit(celestial_information), OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2) { propagate_mode_ = OrbitPropagateMode::kRk4; @@ -24,7 +24,7 @@ Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_i Rk4OrbitPropagation::~Rk4OrbitPropagation() {} -void Rk4OrbitPropagation::DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs) { +void Rk4OrbitPropagation::DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs) { double x = state[0], y = state[1], z = state[2]; double vx = state[3], vy = state[4], vz = state[5]; @@ -40,9 +40,9 @@ void Rk4OrbitPropagation::DerivativeFunction(double t, const s2e::math::Vector<6 (void)t; } -void Rk4OrbitPropagation::Initialize(s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s) { +void Rk4OrbitPropagation::Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) { // state vector [x,y,z,vx,vy,vz] - s2e::math::Vector<6> init_state; + math::Vector<6> init_state; init_state[0] = position_i_m[0]; init_state[1] = position_i_m[1]; init_state[2] = position_i_m[2]; diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index dbdc33b0d..b46b35646 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -17,7 +17,7 @@ namespace s2e::dynamics::orbit { * @class Rk4OrbitPropagation * @brief Class to propagate spacecraft orbit with Runge-Kutta-4 method */ -class Rk4OrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferentialEquation<6> { +class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquation<6> { public: /** * @fn Rk4OrbitPropagation @@ -30,7 +30,7 @@ class Rk4OrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferential * @param [in] initial_time_s: Initial time [sec] */ Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s = 0); + math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); /** * @fn ~Rk4OrbitPropagation * @brief Destructor @@ -45,7 +45,7 @@ class Rk4OrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferential * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const s2e::math::Vector<6>& state, s2e::math::Vector<6>& rhs); + virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); // Override Orbit /** @@ -68,7 +68,7 @@ class Rk4OrbitPropagation : public Orbit, public s2e::math::OrdinaryDifferential * @param [in] velocity_i_m_s: Initial value of velocity in the inertial frame [m/s] * @param [in] initial_time_s: Initial time [sec] */ - void Initialize(s2e::math::Vector<3> position_i_m, s2e::math::Vector<3> velocity_i_m_s, double initial_time_s = 0); + void Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); }; } // namespace s2e::dynamics::orbit diff --git a/src/dynamics/thermal/heater_controller.hpp b/src/dynamics/thermal/heater_controller.hpp index 638e8d9e2..70ff3fb6c 100644 --- a/src/dynamics/thermal/heater_controller.hpp +++ b/src/dynamics/thermal/heater_controller.hpp @@ -45,12 +45,12 @@ class HeaterController { * @fn GetLowerThreshold_K * @brief Return Lower Threshold [K] */ - inline double GetLowerThreshold_K(void) const { return degC2K(lower_threshold_degC_); } + inline double GetLowerThreshold_K(void) const { return environment::degC2K(lower_threshold_degC_); } /** * @fn GetUpperThreshold_K * @brief Return Upper Threshold [K] */ - inline double GetUpperThreshold_K(void) const { return degC2K(upper_threshold_degC_); } + inline double GetUpperThreshold_K(void) const { return environment::degC2K(upper_threshold_degC_); } // Setter /** diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 992fe489d..5c586f634 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -15,7 +15,7 @@ using namespace s2e::math; namespace s2e::dynamics::thermal { Node::Node(const size_t node_id, const string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, - const double capacity_J_K, const double alpha, const double area_m2, s2e::math::Vector<3> normal_vector_b) + const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b) : node_id_(node_id), node_name_(node_name), heater_id_(heater_id), @@ -32,7 +32,7 @@ Node::Node(const size_t node_id, const string node_name, const NodeType node_typ Node::~Node() {} -double Node::CalcSolarRadiation_W(s2e::math::Vector<3> sun_direction_b, double solar_flux_W_m2) { +double Node::CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_flux_W_m2) { double cos_theta = InnerProduct(sun_direction_b, normal_vector_b_); // calculate sun_power @@ -43,8 +43,8 @@ double Node::CalcSolarRadiation_W(s2e::math::Vector<3> sun_direction_b, double s return solar_radiation_W_; } -double Node::CalcAlbedoRadiation_W(s2e::math::Vector<3> earth_position_b_m, double earth_albedo_W_m2) { - s2e::math::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); +double Node::CalcAlbedoRadiation_W(math::Vector<3> earth_position_b_m, double earth_albedo_W_m2) { + math::Vector<3> earth_direction_b = earth_position_b_m.CalcNormalizedVector(); double cos_theta_albedo = InnerProduct(earth_direction_b, normal_vector_b_); @@ -164,7 +164,7 @@ Node InitNode(const std::vector& node_str) { capacity_J_K = stod(node_str[index_capacity]); alpha = stod(node_str[index_alpha]); area_m2 = stod(node_str[index_area]); - s2e::math::Vector<3> normal_v_b; + math::Vector<3> normal_v_b; for (size_t i = 0; i < 3; i++) { normal_v_b[i] = stod(node_str[index_normal_v_b_head + i]); } diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index b75e6ad72..fc42b4239 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -47,7 +47,7 @@ class Node { * @param[in] normal_vector_b: Normal vector of face with possibility of solar incidence (Body frame) */ Node(const size_t node_id, const std::string node_name, const NodeType node_type, const size_t heater_id, const double temperature_ini_K, - const double capacity_J_K, const double alpha, const double area_m2, s2e::math::Vector<3> normal_vector_b); + const double capacity_J_K, const double alpha, const double area_m2, math::Vector<3> normal_vector_b); /** * @fn ~Node * @brief Destroy the Node object @@ -61,7 +61,7 @@ class Node { * @param solar_flux_W_m2: Solar flux [W/m^2] * @return double: Solar Radiation [W] */ - double CalcSolarRadiation_W(s2e::math::Vector<3> sun_direction_b, double solar_flux_W_m2); + double CalcSolarRadiation_W(math::Vector<3> sun_direction_b, double solar_flux_W_m2); /** * @fn CalcAlbedoRadiation_W * @brief Calculate albedo radiation [W] from earth direction, albedo factor, area, and normal vector @@ -70,7 +70,7 @@ class Node { * @param earth_albedo_W_m2: Earth albedo [W/m^2] * @return double: Albedo Radiation [W] */ - double CalcAlbedoRadiation_W(s2e::math::Vector<3> earth_position_b_m, double earth_albedo_W_m2); + double CalcAlbedoRadiation_W(math::Vector<3> earth_position_b_m, double earth_albedo_W_m2); // Getter /** @@ -102,7 +102,7 @@ class Node { * @brief Get temperature of node in degC * @return double: temperature [degC] */ - inline double GetTemperature_degC(void) const { return K2degC(temperature_K_); } + inline double GetTemperature_degC(void) const { return environment::K2degC(temperature_K_); } /** * @fn GetCapacity_J_K * @brief Return heat capacity of node [J/K] @@ -155,7 +155,7 @@ class Node { double solar_radiation_W_; double albedo_radiation_W_; NodeType node_type_; - s2e::math::Vector<3> normal_vector_b_; + math::Vector<3> normal_vector_b_; /** * @fn AssertNodeParams diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 1843b28cc..0583ac6c0 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -70,7 +70,7 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetSolarRadiation_W() << " "; } - s2e::math::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); + math::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); cout << "SunDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << sun_direction_b[i] << " "; @@ -80,7 +80,7 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf for (auto itr = nodes_.begin(); itr != nodes_.end(); ++itr) { cout << setprecision(4) << itr->GetAlbedoRadiation_W() << " "; } - s2e::math::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); + math::Vector<3> earth_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH").CalcNormalizedVector(); cout << "EarthDir: "; for (size_t i = 0; i < 3; i++) { cout << setprecision(3) << earth_direction_b[i] << " "; @@ -135,7 +135,7 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); - s2e::math::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); + math::Vector<3> sun_direction_b = local_celestial_information->GetPositionFromSpacecraft_b_m("SUN").CalcNormalizedVector(); vector differentials_K_s(node_num); for (size_t i = 0; i < node_num; i++) { heatloads_[i].SetElapsedTime_s(t); @@ -143,7 +143,7 @@ vector Temperature::CalcTemperatureDifferentials(vector temperat double solar_flux_W_m2 = srp_environment_->GetPowerDensity_W_m2(); if (solar_calc_setting_ == SolarCalcSetting::kEnable) { double solar_radiation_W = nodes_[i].CalcSolarRadiation_W(sun_direction_b, solar_flux_W_m2); - s2e::math::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); + math::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); double albedo_radiation_W = nodes_[i].CalcAlbedoRadiation_W(earth_position_b_m, earth_albedo_->GetEarthAlbedoRadiationPower_W_m2()); heatloads_[i].SetAlbedoHeatload_W(albedo_radiation_W); heatloads_[i].SetSolarHeatload_W(solar_radiation_W); @@ -196,14 +196,14 @@ string Temperature::GetLogHeader() const { // Do not retrieve boundary node values if (nodes_[i].GetNodeType() != NodeType::kBoundary) { string str_node = "temp_" + to_string(nodes_[i].GetNodeId()) + " (" + nodes_[i].GetNodeName() + ")"; - str_tmp += WriteScalar(str_node, "deg"); + str_tmp += logger::WriteScalar(str_node, "deg"); } } for (size_t i = 0; i < node_num_; i++) { // Do not retrieve boundary node values if (nodes_[i].GetNodeType() != NodeType::kBoundary) { string str_node = "heat_" + to_string(nodes_[i].GetNodeId()) + " (" + nodes_[i].GetNodeName() + ")"; - str_tmp += WriteScalar(str_node, "W"); + str_tmp += logger::WriteScalar(str_node, "W"); } } return str_tmp; @@ -214,13 +214,13 @@ string Temperature::GetLogValue() const { for (size_t i = 0; i < node_num_; i++) { // Do not retrieve boundary node values if (nodes_[i].GetNodeType() != NodeType::kBoundary) { - str_tmp += WriteScalar(nodes_[i].GetTemperature_degC()); + str_tmp += logger::WriteScalar(nodes_[i].GetTemperature_degC()); } } for (size_t i = 0; i < node_num_; i++) { // Do not retrieve boundary node values if (nodes_[i].GetNodeType() != NodeType::kBoundary) { - str_tmp += WriteScalar(heatloads_[i].GetTotalHeatload_W()); + str_tmp += logger::WriteScalar(heatloads_[i].GetTotalHeatload_W()); } } return str_tmp; diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 7f9596ef9..8c99db6e1 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -43,8 +43,8 @@ class Temperature : public logger::ILoggable { size_t node_num_; //!< number of nodes double propagation_step_s_; //!< propagation step [s] double propagation_time_s_; //!< Incremented time inside class Temperature [s], finish propagation when reaching end_time - const SolarRadiationPressureEnvironment* srp_environment_; //!< SolarRadiationPressureEnvironment for calculating solar flux - const EarthAlbedo* earth_albedo_; //!< EarthAlbedo object for calculating earth albedo + const environment::SolarRadiationPressureEnvironment* srp_environment_; //!< SolarRadiationPressureEnvironment for calculating solar flux + const environment::EarthAlbedo* earth_albedo_; //!< EarthAlbedo object for calculating earth albedo bool is_calc_enabled_; //!< Whether temperature calculation is enabled SolarCalcSetting solar_calc_setting_; //!< setting for solar calculation bool debug_; //!< Activate debug output or not @@ -58,7 +58,7 @@ class Temperature : public logger::ILoggable { * @param[in] local_celestial_information: LocalCelestialInformation object for calculating radiation * @param[in] node_num: Number of nodes */ - void CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, size_t node_num); + void CalcRungeOneStep(double time_now_s, double time_step_s, const environment::LocalCelestialInformation* local_celestial_information, size_t node_num); /** * @fn CalcTemperatureDifferentials * @brief Calculate differential of thermal equilibrium equation @@ -70,7 +70,7 @@ class Temperature : public logger::ILoggable { * @return std::vector: Differential of thermal equilibrium equation at time now */ std::vector CalcTemperatureDifferentials(std::vector temperatures_K, double time_now_s, - const LocalCelestialInformation* local_celestial_information, size_t node_num); + const environment::LocalCelestialInformation* local_celestial_information, size_t node_num); public: /** @@ -93,8 +93,8 @@ class Temperature : public logger::ILoggable { */ Temperature(const std::vector> conductance_matrix_W_K, const std::vector> radiation_matrix_m2, std::vector nodes, std::vector heatloads, std::vector heaters, std::vector heater_controllers, - const size_t node_num, const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const EarthAlbedo* earth_albedo, const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool debug); + const size_t node_num, const double propagation_step_s, const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::EarthAlbedo* earth_albedo, const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool debug); /** * @fn Temperature * @brief Construct a new Temperature object, used when thermal calculation is disabled. @@ -114,7 +114,7 @@ class Temperature : public logger::ILoggable { * @param[in] local_celestial_information: LocalCelestialInformation object for calculating radiation * @param time_end_s: Time to finish propagation [s] */ - void Propagate(const LocalCelestialInformation* local_celestial_information, const double time_end_s); + void Propagate(const environment::LocalCelestialInformation* local_celestial_information, const double time_end_s); // Getter /** @@ -165,8 +165,8 @@ class Temperature : public logger::ILoggable { * @param[in] srp_environment: SolarRadiationPressureEnvironment object for calculating solar flux * @return Temperature* */ -Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const EarthAlbedo* earth_albedo); +Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::EarthAlbedo* earth_albedo); } // namespace s2e::dynamics::thermal diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index bcf9bf365..af94cfcb6 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -175,10 +175,10 @@ std::string CelestialInformation::GetLogValue() const { std::string str_tmp = ""; for (unsigned int i = 0; i < number_of_selected_bodies_; i++) { for (int j = 0; j < 3; j++) { - str_tmp += WriteScalar(celestial_body_position_from_center_i_m_[i * 3 + j]); + str_tmp += logger::WriteScalar(celestial_body_position_from_center_i_m_[i * 3 + j]); } for (int j = 0; j < 3; j++) { - str_tmp += WriteScalar(celestial_body_velocity_from_center_i_m_s_[i * 3 + j]); + str_tmp += logger::WriteScalar(celestial_body_velocity_from_center_i_m_s_[i * 3 + j]); } } return str_tmp; diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index 162fe790a..a00ceac53 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -75,8 +75,8 @@ class CelestialInformation : public logger::ILoggable { * @brief Return position from the center body in the inertial frame [m] * @param [in] id: ID of CelestialInformation list */ - inline s2e::math::Vector<3> GetPositionFromCenter_i_m(const unsigned int id) const { - s2e::math::Vector<3> pos(0.0); + inline math::Vector<3> GetPositionFromCenter_i_m(const unsigned int id) const { + math::Vector<3> pos(0.0); if (id > number_of_selected_bodies_) return pos; for (int i = 0; i < 3; i++) pos[i] = celestial_body_position_from_center_i_m_[id * 3 + i]; return pos; @@ -86,7 +86,7 @@ class CelestialInformation : public logger::ILoggable { * @brief Return position from the center body in the inertial frame [m] * @param [in] body_name: Name of the body defined in the SPICE */ - inline s2e::math::Vector<3> GetPositionFromCenter_i_m(const char* body_name) const { + inline math::Vector<3> GetPositionFromCenter_i_m(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetPositionFromCenter_i_m(id); } @@ -96,11 +96,11 @@ class CelestialInformation : public logger::ILoggable { * @param [in] target_body_name: Name of the target body defined in the SPICE * @param [in] reference_body_name: Name of the reference body defined in the SPICE */ - inline s2e::math::Vector<3> GetPositionFromSelectedBody_i_m(const char* target_body_name, const char* reference_body_name) const { + inline math::Vector<3> GetPositionFromSelectedBody_i_m(const char* target_body_name, const char* reference_body_name) const { int target_id = CalcBodyIdFromName(target_body_name); - s2e::math::Vector<3> target_body_position_i_m = GetPositionFromCenter_i_m(target_id); + math::Vector<3> target_body_position_i_m = GetPositionFromCenter_i_m(target_id); int reference_id = CalcBodyIdFromName(reference_body_name); - s2e::math::Vector<3> reference_body_position_i_m = GetPositionFromCenter_i_m(reference_id); + math::Vector<3> reference_body_position_i_m = GetPositionFromCenter_i_m(reference_id); return target_body_position_i_m - reference_body_position_i_m; } @@ -110,8 +110,8 @@ class CelestialInformation : public logger::ILoggable { * @brief Return velocity from the center body in the inertial frame [m/s] * @param [in] id: ID of CelestialInformation list */ - inline s2e::math::Vector<3> GetVelocityFromCenter_i_m_s(const unsigned int id) const { - s2e::math::Vector<3> vel(0.0); + inline math::Vector<3> GetVelocityFromCenter_i_m_s(const unsigned int id) const { + math::Vector<3> vel(0.0); if (id > number_of_selected_bodies_) return vel; for (int i = 0; i < 3; i++) vel[i] = celestial_body_velocity_from_center_i_m_s_[id * 3 + i]; return vel; @@ -121,7 +121,7 @@ class CelestialInformation : public logger::ILoggable { * @brief Return velocity from the center body in the inertial frame [m/s] * @param [in] body_name: Name of the body defined in the SPICE */ - inline s2e::math::Vector<3> GetVelocityFromCenter_i_m_s(const char* body_name) const { + inline math::Vector<3> GetVelocityFromCenter_i_m_s(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetVelocityFromCenter_i_m_s(id); } @@ -131,11 +131,11 @@ class CelestialInformation : public logger::ILoggable { * @param [in] target_body_name: Name of the target body defined in the SPICE * @param [in] reference_body_name: Name of the reference body defined in the SPICE */ - inline s2e::math::Vector<3> GetVelocityFromSelectedBody_i_m_s(const char* target_body_name, const char* reference_body_name) const { + inline math::Vector<3> GetVelocityFromSelectedBody_i_m_s(const char* target_body_name, const char* reference_body_name) const { int target_id = CalcBodyIdFromName(target_body_name); - s2e::math::Vector<3> target_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(target_id); + math::Vector<3> target_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(target_id); int reference_id = CalcBodyIdFromName(reference_body_name); - s2e::math::Vector<3> reference_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(reference_id); + math::Vector<3> reference_body_velocity_i_m_s = GetVelocityFromCenter_i_m_s(reference_id); return target_body_velocity_i_m_s - reference_body_velocity_i_m_s; } @@ -162,8 +162,8 @@ class CelestialInformation : public logger::ILoggable { * @brief Return 3 axis planetographic radii of a celestial body [m] * @param [in] id: ID of CelestialInformation list */ - inline s2e::math::Vector<3> GetRadii_m(const unsigned int id) const { - s2e::math::Vector<3> radii(0.0); + inline math::Vector<3> GetRadii_m(const unsigned int id) const { + math::Vector<3> radii(0.0); if (id > number_of_selected_bodies_) return radii; for (int i = 0; i < 3; i++) radii[i] = celestial_body_planetographic_radii_m_[id * 3 + i]; return radii; @@ -173,7 +173,7 @@ class CelestialInformation : public logger::ILoggable { * @brief Return 3 axis planetographic radii of a celestial body [m] * @param [in] body_name: Name of the body defined in the SPICE */ - inline s2e::math::Vector<3> GetRadiiFromName_m(const char* body_name) const { + inline math::Vector<3> GetRadiiFromName_m(const char* body_name) const { int id = CalcBodyIdFromName(body_name); return GetRadii_m(id); } diff --git a/src/environment/global/clock_generator.cpp b/src/environment/global/clock_generator.cpp index f2a1b7c8f..db573baf3 100644 --- a/src/environment/global/clock_generator.cpp +++ b/src/environment/global/clock_generator.cpp @@ -9,9 +9,9 @@ namespace s2e::environment { ClockGenerator::~ClockGenerator() {} -void ClockGenerator::RegisterComponent(ITickable* tickable) { components_.push_back(tickable); } +void ClockGenerator::RegisterComponent(components::ITickable* tickable) { components_.push_back(tickable); } -void ClockGenerator::RemoveComponent(ITickable* tickable) { +void ClockGenerator::RemoveComponent(components::ITickable* tickable) { for (auto itr = components_.begin(); itr != components_.end();) { if (*itr == tickable) { components_.erase(itr++); diff --git a/src/environment/global/clock_generator.hpp b/src/environment/global/clock_generator.hpp index 91ef4c383..d11e837f7 100644 --- a/src/environment/global/clock_generator.hpp +++ b/src/environment/global/clock_generator.hpp @@ -30,13 +30,13 @@ class ClockGenerator { * @brief Register component which has ITickable * @param [in] tickable: Component class */ - void RegisterComponent(ITickable* tickable); + void RegisterComponent(components::ITickable* tickable); /** * @fn RemoveComponent * @brief Removed registered component * @param [in] tickable: Registered component class */ - void RemoveComponent(ITickable* tickable); + void RemoveComponent(components::ITickable* tickable); /** * @fn TickToComponents * @brief Execute tick function of all registered components @@ -55,7 +55,7 @@ class ClockGenerator { inline void ClearTimerCount(void) { timer_count_ = 0; } private: - std::vector components_; //!< Component list fot tick + std::vector components_; //!< Component list fot tick unsigned int timer_count_; //!< Timer count TODO: change to long? }; diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index fd62d7b10..73d5811c8 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -19,7 +19,7 @@ namespace s2e::environment { // Default constructor EarthRotation::EarthRotation(const EarthRotationMode rotation_mode) : rotation_mode_(rotation_mode) { - dcm_j2000_to_ecef_ = s2e::math::MakeIdentityMatrix<3>(); + dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); dcm_teme_to_ecef_ = dcm_j2000_to_ecef_; InitializeParameters(); } @@ -34,80 +34,80 @@ void EarthRotation::InitializeParameters() { // Coefficients to compute mean obliquity of the ecliptic // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_epsilon_rad_[0] = 23.4392911 * s2e::math::deg_to_rad; // [rad] - c_epsilon_rad_[1] = -46.8150000 * s2e::math::arcsec_to_rad; // [rad/century] - c_epsilon_rad_[2] = -5.9000e-4 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_epsilon_rad_[3] = 1.8130e-3 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_epsilon_rad_[0] = 23.4392911 * math::deg_to_rad; // [rad] + c_epsilon_rad_[1] = -46.8150000 * math::arcsec_to_rad; // [rad/century] + c_epsilon_rad_[2] = -5.9000e-4 * math::arcsec_to_rad; // [rad/century^2] + c_epsilon_rad_[3] = 1.8130e-3 * math::arcsec_to_rad; // [rad/century^3] // Coefficients to compute Delaunay angles // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_lm_rad_[0] = 134.96340251 * s2e::math::deg_to_rad; // [rad] - c_lm_rad_[1] = 1717915923.21780000 * s2e::math::arcsec_to_rad; // [rad/century] - c_lm_rad_[2] = 31.87920000 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_lm_rad_[3] = 0.05163500 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_lm_rad_[4] = -0.00024470 * s2e::math::arcsec_to_rad; // [rad/century^4] - - c_ls_rad_[0] = 357.52910918 * s2e::math::deg_to_rad; // [rad] - c_ls_rad_[1] = 129596581.04810000 * s2e::math::arcsec_to_rad; // [rad/century] - c_ls_rad_[2] = -0.55320000 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_ls_rad_[3] = 0.00013600 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_ls_rad_[4] = -0.00001149 * s2e::math::arcsec_to_rad; // [rad/century^4] - - c_f_rad_[0] = 93.27209062 * s2e::math::deg_to_rad; // [rad] - c_f_rad_[1] = 1739527262.84780000 * s2e::math::arcsec_to_rad; // [rad/century] - c_f_rad_[2] = -12.75120000 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_f_rad_[3] = -0.00103700 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_f_rad_[4] = 0.00000417 * s2e::math::arcsec_to_rad; // [rad/century^4] - - c_d_rad_[0] = 297.85019547 * s2e::math::deg_to_rad; // [rad] - c_d_rad_[1] = 1602961601.20900000 * s2e::math::arcsec_to_rad; // [rad/century] - c_d_rad_[2] = -6.37060000 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_d_rad_[3] = 0.00659300 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_d_rad_[4] = -0.00003169 * s2e::math::arcsec_to_rad; // [rad/century^4] - - c_o_rad_[0] = 125.04455501 * s2e::math::deg_to_rad; // [rad] - c_o_rad_[1] = -6962890.54310000 * s2e::math::arcsec_to_rad; // [rad/century] - c_o_rad_[2] = 7.47220000 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_o_rad_[3] = 0.00770200 * s2e::math::arcsec_to_rad; // [rad/century^3] - c_o_rad_[4] = -0.00005939 * s2e::math::arcsec_to_rad; // [rad/century^4] + c_lm_rad_[0] = 134.96340251 * math::deg_to_rad; // [rad] + c_lm_rad_[1] = 1717915923.21780000 * math::arcsec_to_rad; // [rad/century] + c_lm_rad_[2] = 31.87920000 * math::arcsec_to_rad; // [rad/century^2] + c_lm_rad_[3] = 0.05163500 * math::arcsec_to_rad; // [rad/century^3] + c_lm_rad_[4] = -0.00024470 * math::arcsec_to_rad; // [rad/century^4] + + c_ls_rad_[0] = 357.52910918 * math::deg_to_rad; // [rad] + c_ls_rad_[1] = 129596581.04810000 * math::arcsec_to_rad; // [rad/century] + c_ls_rad_[2] = -0.55320000 * math::arcsec_to_rad; // [rad/century^2] + c_ls_rad_[3] = 0.00013600 * math::arcsec_to_rad; // [rad/century^3] + c_ls_rad_[4] = -0.00001149 * math::arcsec_to_rad; // [rad/century^4] + + c_f_rad_[0] = 93.27209062 * math::deg_to_rad; // [rad] + c_f_rad_[1] = 1739527262.84780000 * math::arcsec_to_rad; // [rad/century] + c_f_rad_[2] = -12.75120000 * math::arcsec_to_rad; // [rad/century^2] + c_f_rad_[3] = -0.00103700 * math::arcsec_to_rad; // [rad/century^3] + c_f_rad_[4] = 0.00000417 * math::arcsec_to_rad; // [rad/century^4] + + c_d_rad_[0] = 297.85019547 * math::deg_to_rad; // [rad] + c_d_rad_[1] = 1602961601.20900000 * math::arcsec_to_rad; // [rad/century] + c_d_rad_[2] = -6.37060000 * math::arcsec_to_rad; // [rad/century^2] + c_d_rad_[3] = 0.00659300 * math::arcsec_to_rad; // [rad/century^3] + c_d_rad_[4] = -0.00003169 * math::arcsec_to_rad; // [rad/century^4] + + c_o_rad_[0] = 125.04455501 * math::deg_to_rad; // [rad] + c_o_rad_[1] = -6962890.54310000 * math::arcsec_to_rad; // [rad/century] + c_o_rad_[2] = 7.47220000 * math::arcsec_to_rad; // [rad/century^2] + c_o_rad_[3] = 0.00770200 * math::arcsec_to_rad; // [rad/century^3] + c_o_rad_[4] = -0.00005939 * math::arcsec_to_rad; // [rad/century^4] // Coefficients to compute nutation angles - c_d_epsilon_rad_[0] = 9.2050 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[1] = 0.5730 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[2] = -0.0900 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[3] = 0.0980 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[4] = 0.0070 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[5] = -0.0010 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[6] = 0.0220 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[7] = 0.0130 * s2e::math::arcsec_to_rad; // [rad] - c_d_epsilon_rad_[8] = -0.0100 * s2e::math::arcsec_to_rad; // [rad] - - c_d_psi_rad_[0] = -17.2060 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[1] = -1.3170 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[2] = 0.2070 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[3] = -0.2280 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[4] = 0.1480 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[5] = 0.0710 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[6] = -0.0520 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[7] = -0.0300 * s2e::math::arcsec_to_rad; // [rad] - c_d_psi_rad_[8] = 0.0220 * s2e::math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[0] = 9.2050 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[1] = 0.5730 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[2] = -0.0900 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[3] = 0.0980 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[4] = 0.0070 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[5] = -0.0010 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[6] = 0.0220 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[7] = 0.0130 * math::arcsec_to_rad; // [rad] + c_d_epsilon_rad_[8] = -0.0100 * math::arcsec_to_rad; // [rad] + + c_d_psi_rad_[0] = -17.2060 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[1] = -1.3170 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[2] = 0.2070 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[3] = -0.2280 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[4] = 0.1480 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[5] = 0.0710 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[6] = -0.0520 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[7] = -0.0300 * math::arcsec_to_rad; // [rad] + c_d_psi_rad_[8] = 0.0220 * math::arcsec_to_rad; // [rad] // Coefficients to compute precession angle // The actual unit of the coefficients are [rad/century^i], where i is the index of the array - c_zeta_rad_[0] = 2306.218100 * s2e::math::arcsec_to_rad; // [rad/century] - c_zeta_rad_[1] = 0.301880 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_zeta_rad_[2] = 0.017998 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_zeta_rad_[0] = 2306.218100 * math::arcsec_to_rad; // [rad/century] + c_zeta_rad_[1] = 0.301880 * math::arcsec_to_rad; // [rad/century^2] + c_zeta_rad_[2] = 0.017998 * math::arcsec_to_rad; // [rad/century^3] - c_theta_rad_[0] = 2004.310900 * s2e::math::arcsec_to_rad; // [rad/century] - c_theta_rad_[1] = -0.426650 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_theta_rad_[2] = -0.041833 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_theta_rad_[0] = 2004.310900 * math::arcsec_to_rad; // [rad/century] + c_theta_rad_[1] = -0.426650 * math::arcsec_to_rad; // [rad/century^2] + c_theta_rad_[2] = -0.041833 * math::arcsec_to_rad; // [rad/century^3] - c_z_rad_[0] = 2306.218100 * s2e::math::arcsec_to_rad; // [rad/century] - c_z_rad_[1] = 1.094680 * s2e::math::arcsec_to_rad; // [rad/century^2] - c_z_rad_[2] = 0.018203 * s2e::math::arcsec_to_rad; // [rad/century^3] + c_z_rad_[0] = 2306.218100 * math::arcsec_to_rad; // [rad/century] + c_z_rad_[1] = 1.094680 * math::arcsec_to_rad; // [rad/century^2] + c_z_rad_[2] = 0.018203 * math::arcsec_to_rad; // [rad/century^3] } else { // If the rotation mode is neither Simple nor Full, disable the rotation calculation and make the DCM a unit matrix - dcm_j2000_to_ecef_ = s2e::math::MakeIdentityMatrix<3>(); + dcm_j2000_to_ecef_ = math::MakeIdentityMatrix<3>(); } } @@ -127,10 +127,10 @@ void EarthRotation::Update(const double julian_date) { terrestrial_time_julian_century[i + 1] = terrestrial_time_julian_century[i] * terrestrial_time_julian_century[0]; } - s2e::math::Matrix<3, 3> dcm_precession; - s2e::math::Matrix<3, 3> dcm_nutation; - s2e::math::Matrix<3, 3> dcm_rotation; - s2e::math::Matrix<3, 3> dcm_polar_motion; + math::Matrix<3, 3> dcm_precession; + math::Matrix<3, 3> dcm_nutation; + math::Matrix<3, 3> dcm_rotation; + math::Matrix<3, 3> dcm_polar_motion; // Nutation + Precession dcm_precession = Precession(terrestrial_time_julian_century); dcm_nutation = Nutation(terrestrial_time_julian_century); // epsilon_rad_, d_epsilon_rad_, d_psi_rad_ are updated in this procedure @@ -156,9 +156,9 @@ void EarthRotation::Update(const double julian_date) { } } -s2e::math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return s2e::math::MakeRotationMatrixZ(gast_rad); } +math::Matrix<3, 3> EarthRotation::AxialRotation(const double gast_rad) { return math::MakeRotationMatrixZ(gast_rad); } -s2e::math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { +math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) { // Mean obliquity of the ecliptic epsilon_rad_ = c_epsilon_rad_[0]; for (int i = 0; i < 3; i++) { @@ -210,17 +210,17 @@ s2e::math::Matrix<3, 3> EarthRotation::Nutation(const double (&t_tt_century)[4]) c_d_epsilon_rad_[7] * cos(2 * l_rad + lm_rad) + c_d_epsilon_rad_[8] * cos(2 * ld_rad - ls_rad); double epsi_mod_rad = epsilon_rad_ + d_epsilon_rad_; - s2e::math::Matrix<3, 3> x_epsi_1st = s2e::math::MakeRotationMatrixX(epsilon_rad_); - s2e::math::Matrix<3, 3> z_d_psi = s2e::math::MakeRotationMatrixZ(-d_psi_rad_); - s2e::math::Matrix<3, 3> x_epsi_2nd = s2e::math::MakeRotationMatrixX(-epsi_mod_rad); + math::Matrix<3, 3> x_epsi_1st = math::MakeRotationMatrixX(epsilon_rad_); + math::Matrix<3, 3> z_d_psi = math::MakeRotationMatrixZ(-d_psi_rad_); + math::Matrix<3, 3> x_epsi_2nd = math::MakeRotationMatrixX(-epsi_mod_rad); - s2e::math::Matrix<3, 3> dcm_nutation; + math::Matrix<3, 3> dcm_nutation; dcm_nutation = x_epsi_2nd * z_d_psi * x_epsi_1st; return dcm_nutation; } -s2e::math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { +math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4]) { // Compute precession angles(zeta, theta, z) double zeta_rad = 0.0; for (int i = 0; i < 3; i++) { @@ -236,18 +236,18 @@ s2e::math::Matrix<3, 3> EarthRotation::Precession(const double (&t_tt_century)[4 } // Develop transformation matrix - s2e::math::Matrix<3, 3> z_zeta = s2e::math::MakeRotationMatrixZ(-zeta_rad); - s2e::math::Matrix<3, 3> y_theta = s2e::math::MakeRotationMatrixY(theta_rad); - s2e::math::Matrix<3, 3> z_z = s2e::math::MakeRotationMatrixZ(-z_rad); + math::Matrix<3, 3> z_zeta = math::MakeRotationMatrixZ(-zeta_rad); + math::Matrix<3, 3> y_theta = math::MakeRotationMatrixY(theta_rad); + math::Matrix<3, 3> z_z = math::MakeRotationMatrixZ(-z_rad); - s2e::math::Matrix<3, 3> dcm_precession; + math::Matrix<3, 3> dcm_precession; dcm_precession = z_z * y_theta * z_zeta; return dcm_precession; } -s2e::math::Matrix<3, 3> EarthRotation::PolarMotion(const double x_p, const double y_p) { - s2e::math::Matrix<3, 3> dcm_polar_motion; +math::Matrix<3, 3> EarthRotation::PolarMotion(const double x_p, const double y_p) { + math::Matrix<3, 3> dcm_polar_motion; dcm_polar_motion[0][0] = 1.0; dcm_polar_motion[0][1] = 0.0; diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index b9680e478..25cfa1992 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -47,20 +47,20 @@ class EarthRotation { * @fn GetDcmJ2000ToEcef * @brief Return the DCM between J2000 inertial frame and the Earth Centered Earth Fixed frame */ - inline const s2e::math::Matrix<3, 3> GetDcmJ2000ToEcef() const { return dcm_j2000_to_ecef_; }; + inline const math::Matrix<3, 3> GetDcmJ2000ToEcef() const { return dcm_j2000_to_ecef_; }; /** * @fn GetDcmTemeToEcef * @brief Return the DCM between TEME (Inertial frame used in SGP4) and the Earth Centered Earth Fixed frame */ - inline const s2e::math::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; + inline const math::Matrix<3, 3> GetDcmTemeToEcef() const { return dcm_teme_to_ecef_; }; private: double d_psi_rad_; //!< Nutation in obliquity [rad] double d_epsilon_rad_; //!< Nutation in longitude [rad] double epsilon_rad_; //!< Mean obliquity of the ecliptic [rad] - s2e::math::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF - s2e::math::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF + math::Matrix<3, 3> dcm_j2000_to_ecef_; //!< Direction Cosine Matrix J2000 to ECEF + math::Matrix<3, 3> dcm_teme_to_ecef_; //!< Direction Cosine Matrix TEME to ECEF EarthRotationMode rotation_mode_; //!< Designation of dynamics model // Definitions of coefficients @@ -96,7 +96,7 @@ class EarthRotation { * @param [in] gast_rad: Greenwich 'Apparent' Sidereal Time [rad] * @return Rotation matrix */ - s2e::math::Matrix<3, 3> AxialRotation(const double gast_rad); + math::Matrix<3, 3> AxialRotation(const double gast_rad); /** * @fn Nutation @@ -104,7 +104,7 @@ class EarthRotation { * @param [in] t_tt_century: nth power of julian century for terrestrial time * @return Rotation matrix */ - s2e::math::Matrix<3, 3> Nutation(const double (&t_tt_century)[4]); + math::Matrix<3, 3> Nutation(const double (&t_tt_century)[4]); /** * @fn Precession @@ -112,14 +112,14 @@ class EarthRotation { * @param [in] t_tt_century: nth power of julian century for terrestrial time * @return Rotation matrix */ - s2e::math::Matrix<3, 3> Precession(const double (&t_tt_century)[4]); + math::Matrix<3, 3> Precession(const double (&t_tt_century)[4]); /** * @fn PolarMotion * @brief Calculate movement of the coordinate axes due to Polar Motion * @note Currently, this function is not used. */ - s2e::math::Matrix<3, 3> PolarMotion(const double x_p, const double y_p); + math::Matrix<3, 3> PolarMotion(const double x_p, const double y_p); }; EarthRotationMode ConvertEarthRotationMode(const std::string mode); diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 334c1d4ae..3657594c5 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -9,7 +9,7 @@ namespace s2e::environment { -GlobalEnvironment::GlobalEnvironment(const SimulationConfiguration* simulation_configuration) { Initialize(simulation_configuration); } +GlobalEnvironment::GlobalEnvironment(const simulation::SimulationConfiguration* simulation_configuration) { Initialize(simulation_configuration); } GlobalEnvironment::~GlobalEnvironment() { delete simulation_time_; @@ -18,7 +18,7 @@ GlobalEnvironment::~GlobalEnvironment() { delete gnss_satellites_; } -void GlobalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration) { +void GlobalEnvironment::Initialize(const simulation::SimulationConfiguration* simulation_configuration) { // Get ini file path setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(simulation_configuration->initialize_base_file_name_); std::string simulation_time_ini_path = simulation_configuration->initialize_base_file_name_; @@ -39,12 +39,12 @@ void GlobalEnvironment::Update() { gnss_satellites_->Update(*simulation_time_); } -void GlobalEnvironment::LogSetup(Logger& logger) { +void GlobalEnvironment::LogSetup(logger::Logger& logger) { logger.AddLogList(simulation_time_); logger.AddLogList(celestial_information_); logger.AddLogList(gnss_satellites_); } -} // namespace s2e::environment - void GlobalEnvironment::Reset(void) { simulation_time_->ResetClock(); } + +} // namespace s2e::environment diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index 37c51cbfb..f067c33b8 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -26,7 +26,7 @@ class GlobalEnvironment { * @brief Constructor * @param [in] simulation_configuration: Simulation configuration */ - GlobalEnvironment(const SimulationConfiguration* simulation_configuration); + GlobalEnvironment(const simulation::SimulationConfiguration* simulation_configuration); /** * @fn ~GlobalEnvironment * @brief Destructor @@ -38,7 +38,7 @@ class GlobalEnvironment { * @brief Initialize all global environment members * @param [in] simulation_configuration: Simulation configuration */ - void Initialize(const SimulationConfiguration* simulation_configuration); + void Initialize(const simulation::SimulationConfiguration* simulation_configuration); /** * @fn Update * @brief Update states of all global environment @@ -48,7 +48,7 @@ class GlobalEnvironment { * @fn LogSetup * @brief Log setup of global environment information */ - void LogSetup(Logger& logger); + void LogSetup(logger::Logger& logger); /** * @fn Reset * @brief Reset clock of SimulationTime diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index ee801c9b6..9dbf72393 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -47,7 +47,7 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con // Initialize clock std::vector temp; temp.assign(kNumberOfInterpolation, -1.0); - clock_.assign(number_of_calculated_gnss_satellites_, s2e::math::Interpolation(temp, temp)); + clock_.assign(number_of_calculated_gnss_satellites_, math::Interpolation(temp, temp)); // Initialize interpolation for (size_t i = 0; i < kNumberOfInterpolation; i++) { @@ -76,8 +76,8 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } -s2e::math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { - if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return s2e::math::Vector<3>(0.0); +math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { + if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return math::Vector<3>(0.0); s2e::time_system::EpochTime target_time; @@ -88,10 +88,10 @@ s2e::math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satell } double diff_s = target_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - if (diff_s < 0.0 || diff_s > 1e6) return s2e::math::Vector<3>(0.0); + if (diff_s < 0.0 || diff_s > 1e6) return math::Vector<3>(0.0); const double kOrbitalPeriodCorrection_s = 24 * 60 * 60 * 1.003; // See http://acc.igs.org/orbits/orbit-interp_gpssoln03.pdf - return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, s2e::math::tau / kOrbitalPeriodCorrection_s); + return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); } double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { @@ -133,7 +133,7 @@ bool GnssSatellites::UpdateInterpolationInformation() { for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { s2e::time_system::EpochTime sp3_time = s2e::time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); - s2e::math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); + math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); orbit_[gnss_id].PushAndPopData(time_diff_s, sp3_position_m); clock_[gnss_id].PushAndPopData(time_diff_s, sp3_file.GetSatelliteClockOffset(reference_interpolation_id_, gnss_id)); @@ -159,7 +159,7 @@ std::string GnssSatellites::GetLogHeader() const { // TODO: Add log output for other navigation systems for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { str_tmp += logger::WriteVector("GPS" + std::to_string(gps_index) + "_position", "ecef", "m", 3); - str_tmp += WriteScalar("GPS" + std::to_string(gps_index) + "_clock_offset", "s"); + str_tmp += logger::WriteScalar("GPS" + std::to_string(gps_index) + "_clock_offset", "s"); } return str_tmp; @@ -170,7 +170,7 @@ std::string GnssSatellites::GetLogValue() const { for (size_t gps_index = 0; gps_index < kNumberOfGpsSatellite; gps_index++) { str_tmp += logger::WriteVector(GetPosition_ecef_m(gps_index), 16); - str_tmp += WriteScalar(GetClock_s(gps_index)); + str_tmp += logger::WriteScalar(GetClock_s(gps_index)); } return str_tmp; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 563dbd3e7..49e73f2a1 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -77,7 +77,7 @@ class GnssSatellites : public logger::ILoggable { */ void Update(const SimulationTime& simulation_time); - inline s2e::math::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { + inline math::Vector<3> GetPosition_eci_m(const size_t gnss_satellite_id) const { // TODO: Add target time for earth rotation calculation return earth_rotation_.GetDcmJ2000ToEcef().Transpose() * GetPosition_ecef_m(gnss_satellite_id); } @@ -89,7 +89,7 @@ class GnssSatellites : public logger::ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - s2e::math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; + math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -123,7 +123,7 @@ class GnssSatellites : public logger::ILoggable { s2e::time_system::EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation - std::vector clock_; //!< GNSS satellite clock offset with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation // References const EarthRotation& earth_rotation_; //!< Earth rotation diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index a4fb9d5f4..83e378997 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -52,10 +52,10 @@ bool HipparcosCatalogue::ReadContents(const std::string& file_name, const char d return true; } -s2e::math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { - s2e::math::Vector<3> direction_i; - double ra_rad = GetRightAscension_deg(rank) * s2e::math::deg_to_rad; - double de_rad = GetDeclination_deg(rank) * s2e::math::deg_to_rad; +math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { + math::Vector<3> direction_i; + double ra_rad = GetRightAscension_deg(rank) * math::deg_to_rad; + double de_rad = GetDeclination_deg(rank) * math::deg_to_rad; direction_i[0] = cos(ra_rad) * cos(de_rad); direction_i[1] = sin(ra_rad) * cos(de_rad); @@ -64,9 +64,9 @@ s2e::math::Vector<3> HipparcosCatalogue::GetStarDirection_i(size_t rank) const { return direction_i; } -s2e::math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, s2e::math::Quaternion quaternion_i2b) const { - s2e::math::Vector<3> direction_i; - s2e::math::Vector<3> direction_b; +math::Vector<3> HipparcosCatalogue::GetStarDirection_b(size_t rank, math::Quaternion quaternion_i2b) const { + math::Vector<3> direction_i; + math::Vector<3> direction_b; direction_i = GetStarDirection_i(rank); direction_b = quaternion_i2b.FrameConversion(direction_i); diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index bc7a70f0f..8067bfcd5 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -84,14 +84,14 @@ class HipparcosCatalogue : public logger::ILoggable { *@brief Return direction vector of a star in the inertial frame *@param [in] rank: Rank of star magnitude in read catalogue */ - s2e::math::Vector<3> GetStarDirection_i(size_t rank) const; + math::Vector<3> GetStarDirection_i(size_t rank) const; /** *@fn GetStarDir_b *@brief Return direction vector of a star in the body-fixed frame *@param [in] rank: Rank of star magnitude in read catalogue *@param [in] quaternion_i2b: Quaternion from the inertial frame to the body-fixed frame */ - s2e::math::Vector<3> GetStarDirection_b(size_t rank, s2e::math::Quaternion quaternion_i2b) const; + math::Vector<3> GetStarDirection_b(size_t rank, math::Quaternion quaternion_i2b) const; // Override logger::ILoggable /** diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index c8843e3a0..b40692284 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -14,13 +14,13 @@ namespace s2e::environment { MoonRotation::MoonRotation(const CelestialInformation& celestial_information, MoonRotationMode mode) : mode_(mode), celestial_information_(celestial_information) { - dcm_j2000_to_mcmf_ = s2e::math::MakeIdentityMatrix<3>(); + dcm_j2000_to_mcmf_ = math::MakeIdentityMatrix<3>(); } void MoonRotation::Update(const SimulationTime& simulation_time) { if (mode_ == MoonRotationMode::kSimple) { - s2e::math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); - s2e::math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); + math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); + math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); dcm_j2000_to_mcmf_ = s2e::planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); } else if (mode_ == MoonRotationMode::kIauMoon) { ConstSpiceChar from[] = "J2000"; @@ -34,7 +34,7 @@ void MoonRotation::Update(const SimulationTime& simulation_time) { } } } else { - dcm_j2000_to_mcmf_ = s2e::math::MakeIdentityMatrix<3>(); + dcm_j2000_to_mcmf_ = math::MakeIdentityMatrix<3>(); } } diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index ebdc7c4a3..196e2d6a6 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -11,10 +11,10 @@ #include "math_physics/math/vector.hpp" #include "simulation_time.hpp" -class CelestialInformation; - namespace s2e::environment { +class CelestialInformation; + /** * @enum MoonRotationMode * @brief Definition of calculation mode of moon rotation @@ -55,11 +55,11 @@ class MoonRotation { * @brief Return the DCM between J2000 inertial frame and the Moon Centered Moon Fixed frame * @note Because this is just a DCM, users need to consider the origin of the vector, which you want to convert with this matrix. */ - inline const s2e::math::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; + inline const math::Matrix<3, 3> GetDcmJ2000ToMcmf() const { return dcm_j2000_to_mcmf_; }; private: MoonRotationMode mode_; //!< Rotation mode - s2e::math::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) + math::Matrix<3, 3> dcm_j2000_to_mcmf_; //!< Direction Cosine Matrix J2000 to MCMF (Moon Centered Moon Fixed) const CelestialInformation &celestial_information_; //!< Celestial Information to get moon orbit }; diff --git a/src/environment/global/physical_constants.hpp b/src/environment/global/physical_constants.hpp index 2c279b389..c97259ee2 100644 --- a/src/environment/global/physical_constants.hpp +++ b/src/environment/global/physical_constants.hpp @@ -39,9 +39,9 @@ DEFINE_PHYSICAL_CONSTANT(earth_flattening, 3.352797e-3L) / #undef DEFINE_PHYSICAL_CONSTANT -} // namespace s2e::environment +inline double degC2K(double degC) { return (degC - absolute_zero_degC); } +inline double K2degC(double K) { return (K + absolute_zero_degC); } -inline double degC2K(double degC) { return (degC - environment::absolute_zero_degC); } -inline double K2degC(double K) { return (K + environment::absolute_zero_degC); } +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_PHYSICAL_CONSTANT_HPP_ diff --git a/src/environment/global/simulation_time.cpp b/src/environment/global/simulation_time.cpp index d1c74d495..600e70440 100644 --- a/src/environment/global/simulation_time.cpp +++ b/src/environment/global/simulation_time.cpp @@ -204,8 +204,8 @@ void SimulationTime::PrintStartDateTime(void) const { string SimulationTime::GetLogHeader() const { string str_tmp = ""; - str_tmp += WriteScalar("elapsed_time", "s"); - str_tmp += WriteScalar("time", "UTC"); + str_tmp += logger::WriteScalar("elapsed_time", "s"); + str_tmp += logger::WriteScalar("time", "UTC"); return str_tmp; } @@ -213,7 +213,7 @@ string SimulationTime::GetLogHeader() const { string SimulationTime::GetLogValue() const { string str_tmp = ""; - str_tmp += WriteScalar(elapsed_time_sec_); + str_tmp += logger::WriteScalar(elapsed_time_sec_); const char kSize = 100; char ymdhms[kSize]; diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 0b0c9cccc..4659f8c43 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -52,7 +52,7 @@ Atmosphere::Atmosphere(const std::string model, const std::string space_weather_ } } -double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& orbit) { +double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const dynamics::orbit::Orbit& orbit) { if (!is_calc_enabled_) return 0; if (model_ == "STANDARD") { @@ -68,7 +68,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const Orbit& manual_average_f107_, manual_ap_); } else if (model_ == "HARRIS_PRIESTER") { // Harris-Priester - s2e::math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); + math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); air_density_kg_m3_ = s2e::atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); } else { // No suitable model @@ -88,7 +88,7 @@ double Atmosphere::AddNoise(const double rho_kg_m3) { std::string Atmosphere::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(air_density_kg_m3_); + str_tmp += logger::WriteScalar(air_density_kg_m3_); return str_tmp; } @@ -96,7 +96,7 @@ std::string Atmosphere::GetLogValue() const { std::string Atmosphere::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteScalar("air_density_at_spacecraft_position", "kg/m3"); + str_tmp += logger::WriteScalar("air_density_at_spacecraft_position", "kg/m3"); return str_tmp; } diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 6bc47e246..197c0972a 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -51,7 +51,7 @@ class Atmosphere : public logger::ILoggable { * @param [in] position: Position of target point to calculate the air density * @return Atmospheric density [kg/m^3] */ - double CalcAirDensity_kg_m3(const double decimal_year, const Orbit& orbit); + double CalcAirDensity_kg_m3(const double decimal_year, const dynamics::orbit::Orbit& orbit); /** * @fn GetAirDensity * @brief Return Atmospheric density [kg/m^3] diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 46831b8e5..1a38af8da 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -26,8 +26,8 @@ void EarthAlbedo::UpdateAllStates() { std::string EarthAlbedo::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteScalar("earth_albedo_factor"); - str_tmp += WriteScalar("earth_albedo_W_m2"); + str_tmp += logger::WriteScalar("earth_albedo_factor"); + str_tmp += logger::WriteScalar("earth_albedo_W_m2"); return str_tmp; } @@ -35,14 +35,14 @@ std::string EarthAlbedo::GetLogHeader() const { std::string EarthAlbedo::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(earth_albedo_factor_); - str_tmp += WriteScalar(earth_albedo_W_m2_); + str_tmp += logger::WriteScalar(earth_albedo_factor_); + str_tmp += logger::WriteScalar(earth_albedo_W_m2_); return str_tmp; } void EarthAlbedo::CalcEarthAlbedo(const LocalCelestialInformation* local_celestial_information) { - s2e::math::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); + math::Vector<3> earth_position_b_m = local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH"); double earth_distance_m = earth_position_b_m.CalcNorm(); earth_albedo_W_m2_ = srp_environment_->GetPowerDensity_W_m2() * GetEarthAlbedoFactor() * pow((environment::astronomy::earth_equatorial_radius_m / earth_distance_m), 2.0) / 4.0; diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 0b5eab1b9..5b713a11d 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -25,7 +25,7 @@ GeomagneticField::GeomagneticField(const std::string igrf_file_name, const doubl } void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const s2e::geodesy::GeodeticPosition position, - const s2e::math::Quaternion quaternion_i2b) { + const math::Quaternion quaternion_i2b) { if (!IsCalcEnabled) return; const double lat_rad = position.GetLatitude_rad(); @@ -42,8 +42,8 @@ void GeomagneticField::CalcMagneticField(const double decimal_year, const double } void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { - static s2e::math::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); - static s2e::math::Vector<3> limit(random_walk_limit_nT_); + static math::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); + static math::Vector<3> limit(random_walk_limit_nT_); static RandomWalk<3> random_walk(0.1, standard_deviation, limit); static s2e::randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, s2e::randomization::global_randomization.MakeSeed()); diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index ba3f05329..6b9857946 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -46,18 +46,18 @@ class GeomagneticField : public logger::ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ void CalcMagneticField(const double decimal_year, const double sidereal_day, const s2e::geodesy::GeodeticPosition position, - const s2e::math::Quaternion quaternion_i2b); + const math::Quaternion quaternion_i2b); /** * @fn GetGeomagneticField_i_nT * @brief Return magnetic field vector in the inertial frame [nT] */ - inline s2e::math::Vector<3> GetGeomagneticField_i_nT() const { return magnetic_field_i_nT_; } + inline math::Vector<3> GetGeomagneticField_i_nT() const { return magnetic_field_i_nT_; } /** * @fn GetGeomagneticField_b_nT * @brief Return magnetic field vector in the body fixed frame [nT] */ - inline s2e::math::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } + inline math::Vector<3> GetGeomagneticField_b_nT() const { return magnetic_field_b_nT_; } // Override logger::ILoggable /** @@ -72,8 +72,8 @@ class GeomagneticField : public logger::ILoggable { virtual std::string GetLogValue() const; private: - s2e::math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] - s2e::math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] + math::Vector<3> magnetic_field_i_nT_; //!< Magnetic field vector at the inertial frame [nT] + math::Vector<3> magnetic_field_b_nT_; //!< Magnetic field vector at the spacecraft body fixed frame [nT] double random_walk_standard_deviation_nT_; //!< Standard deviation of Random Walk [nT] double random_walk_limit_nT_; //!< Limit of Random Walk [nT] double white_noise_standard_deviation_nT_; //!< Standard deviation of white noise [nT] diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index 8699e21f2..40d78c536 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -45,11 +45,11 @@ LocalCelestialInformation::~LocalCelestialInformation() { delete[] celestial_body_velocity_from_spacecraft_b_m_s_; } -void LocalCelestialInformation::UpdateAllObjectsInformation(const s2e::math::Vector<3> spacecraft_position_from_center_i_m, - const s2e::math::Vector<3> spacecraft_velocity_from_center_i_m_s, - const s2e::math::Quaternion quaternion_i2b, - const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s) { - s2e::math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; +void LocalCelestialInformation::UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, + const math::Vector<3> spacecraft_velocity_from_center_i_m_s, + const math::Quaternion quaternion_i2b, + const math::Vector<3> spacecraft_angular_velocity_rad_s) { + math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { celestial_body_position_i_m = global_celestial_information_->GetPositionFromCenter_i_m(i); celestial_body_velocity_i_m_s = global_celestial_information_->GetVelocityFromCenter_i_m_s(i); @@ -64,8 +64,8 @@ void LocalCelestialInformation::UpdateAllObjectsInformation(const s2e::math::Vec return; } -void LocalCelestialInformation::CalcAllPosVel_b(const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s) { - s2e::math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; +void LocalCelestialInformation::CalcAllPosVel_b(const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s) { + math::Vector<3> celestial_body_position_i_m, celestial_body_velocity_i_m_s; double r_buf1_i[3], velocity_buf1_i[3], r_buf1_b[3], velocity_buf1_b[3]; double r_buf2_i[3], velocity_buf2_i[3], r_buf2_b[3], velocity_buf2_b[3]; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { @@ -91,50 +91,50 @@ void LocalCelestialInformation::CalcAllPosVel_b(const s2e::math::Quaternion quat } } -void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, s2e::math::Quaternion quaternion_i2b) { - s2e::math::Vector<3> temp_i; +void LocalCelestialInformation::ConvertInertialToBody(const double* input_i, double* output_b, math::Quaternion quaternion_i2b) { + math::Vector<3> temp_i; for (int i = 0; i < 3; i++) { temp_i[i] = input_i[i]; } - s2e::math::Vector<3> temp_b = quaternion_i2b.FrameConversion(temp_i); + math::Vector<3> temp_b = quaternion_i2b.FrameConversion(temp_i); for (int i = 0; i < 3; i++) { output_b[i] = temp_b[i]; } } void LocalCelestialInformation::ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, - const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> angular_velocity_b) { + const math::Quaternion quaternion_i2b, const math::Vector<3> angular_velocity_b) { // copy input vector - s2e::math::Vector<3> vi; + math::Vector<3> vi; for (int i = 0; i < 3; i++) { vi[i] = velocity_i[i]; } - s2e::math::Vector<3> ri; + math::Vector<3> ri; for (int i = 0; i < 3; i++) { ri[i] = position_i[i]; } // convert body rate vector into that in inertial coordinate - s2e::math::Vector<3> wb; + math::Vector<3> wb; for (int i = 0; i < 3; i++) { wb[i] = angular_velocity_b[i]; } // compute cross term wxr - s2e::math::Vector<3> wxposition_i = OuterProduct(wb, ri); + math::Vector<3> wxposition_i = OuterProduct(wb, ri); // compute dr/dt + wxr for (int i = 0; i < 3; i++) { vi[i] = vi[i] - wxposition_i[i]; } // convert vector in inertial coordinate into that in body coordinate - s2e::math::Vector<3> temp_b = quaternion_i2b.FrameConversion(vi); + math::Vector<3> temp_b = quaternion_i2b.FrameConversion(vi); for (int i = 0; i < 3; i++) { velocity_b[i] = temp_b[i]; } } -s2e::math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const char* body_name) const { - s2e::math::Vector<3> position; +math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(const char* body_name) const { + math::Vector<3> position; int index = 0; index = global_celestial_information_->CalcBodyIdFromName(body_name); for (int i = 0; i < 3; i++) { @@ -143,14 +143,14 @@ s2e::math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_i_m(co return position; } -s2e::math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_i_m() const { +math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_i_m() const { std::string body_name = global_celestial_information_->GetCenterBodyName(); - s2e::math::Vector<3> position = GetPositionFromSpacecraft_i_m(body_name.c_str()); + math::Vector<3> position = GetPositionFromSpacecraft_i_m(body_name.c_str()); return position; } -s2e::math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const char* body_name) const { - s2e::math::Vector<3> position; +math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(const char* body_name) const { + math::Vector<3> position; int index = 0; index = global_celestial_information_->CalcBodyIdFromName(body_name); for (int i = 0; i < 3; i++) { @@ -159,9 +159,9 @@ s2e::math::Vector<3> LocalCelestialInformation::GetPositionFromSpacecraft_b_m(co return position; } -s2e::math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_b_m(void) const { +math::Vector<3> LocalCelestialInformation::GetCenterBodyPositionFromSpacecraft_b_m(void) const { std::string body_name = global_celestial_information_->GetCenterBodyName(); - s2e::math::Vector<3> position = GetPositionFromSpacecraft_b_m(body_name.c_str()); + math::Vector<3> position = GetPositionFromSpacecraft_b_m(body_name.c_str()); return position; } @@ -191,10 +191,10 @@ std::string LocalCelestialInformation::GetLogValue() const { std::string str_tmp = ""; for (int i = 0; i < global_celestial_information_->GetNumberOfSelectedBodies(); i++) { for (int j = 0; j < 3; j++) { - str_tmp += WriteScalar(celestial_body_position_from_spacecraft_b_m_[i * 3 + j]); + str_tmp += logger::WriteScalar(celestial_body_position_from_spacecraft_b_m_[i * 3 + j]); } for (int j = 0; j < 3; j++) { - str_tmp += WriteScalar(celestial_body_velocity_from_spacecraft_b_m_s_[i * 3 + j]); + str_tmp += logger::WriteScalar(celestial_body_velocity_from_spacecraft_b_m_s_[i * 3 + j]); } } return str_tmp; diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index e81a7652f..93a2c13c8 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -36,33 +36,33 @@ class LocalCelestialInformation : public logger::ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void UpdateAllObjectsInformation(const s2e::math::Vector<3> spacecraft_position_from_center_i_m, - const s2e::math::Vector<3> spacecraft_velocity_from_center_i_m_s, const s2e::math::Quaternion quaternion_i2b, - const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s); + void UpdateAllObjectsInformation(const math::Vector<3> spacecraft_position_from_center_i_m, + const math::Vector<3> spacecraft_velocity_from_center_i_m_s, const math::Quaternion quaternion_i2b, + const math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn GetPositionFromSpacecraft_i_m * @brief Return position of a selected body (Origin: Spacecraft, Frame: Inertial frame) * @param [in] body_name Celestial body name */ - s2e::math::Vector<3> GetPositionFromSpacecraft_i_m(const char* body_name) const; + math::Vector<3> GetPositionFromSpacecraft_i_m(const char* body_name) const; /** * @fn GetCenterBodyPositionFromSpacecraft_i_m * @brief Return position of the center body (Origin: Spacecraft, Frame: Inertial frame) */ - s2e::math::Vector<3> GetCenterBodyPositionFromSpacecraft_i_m(void) const; + math::Vector<3> GetCenterBodyPositionFromSpacecraft_i_m(void) const; /** * @fn GetPositionFromSpacecraft_b_m * @brief Return position of a selected body (Origin: Spacecraft, Frame: Body fixed frame) * @param [in] body_name Celestial body name */ - s2e::math::Vector<3> GetPositionFromSpacecraft_b_m(const char* body_name) const; + math::Vector<3> GetPositionFromSpacecraft_b_m(const char* body_name) const; /** * @fn GetCenterBodyPositionFromSpacecraft_b_m * @brief Return position of the center body (Origin: Spacecraft, Frame: Body fixed frame) */ - s2e::math::Vector<3> GetCenterBodyPositionFromSpacecraft_b_m(void) const; + math::Vector<3> GetCenterBodyPositionFromSpacecraft_b_m(void) const; /** * @fn GetGlobalInfo @@ -98,7 +98,7 @@ class LocalCelestialInformation : public logger::ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] spacecraft_angular_velocity_rad_s: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void CalcAllPosVel_b(const s2e::math::Quaternion quaternion_i2b, const s2e::math::Vector<3> spacecraft_angular_velocity_rad_s); + void CalcAllPosVel_b(const math::Quaternion quaternion_i2b, const math::Vector<3> spacecraft_angular_velocity_rad_s); /** * @fn ConvertInertialToBody @@ -107,7 +107,7 @@ class LocalCelestialInformation : public logger::ILoggable { * @param [out] output_b: Output vector in the body fixed frame * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ - void ConvertInertialToBody(const double* input_i, double* output_b, const s2e::math::Quaternion quaternion_i2b); + void ConvertInertialToBody(const double* input_i, double* output_b, const math::Quaternion quaternion_i2b); /** * @fn ConvertVelocityInertialToBody @@ -118,8 +118,8 @@ class LocalCelestialInformation : public logger::ILoggable { * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame * @param [in] angular_velocity_b: Spacecraft angular velocity with respect to the inertial frame [rad/s] */ - void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const s2e::math::Quaternion quaternion_i2b, - const s2e::math::Vector<3> angular_velocity_b); + void ConvertVelocityInertialToBody(const double* position_i, const double* velocity_i, double* velocity_b, const math::Quaternion quaternion_i2b, + const math::Vector<3> angular_velocity_b); }; } // namespace s2e::environment diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index 85d23926c..3fbe777b1 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -8,9 +8,9 @@ #include "dynamics/orbit/orbit.hpp" #include "setting_file_reader/initialize_file_access.hpp" -namespace s2e::environment +namespace s2e::environment{ -LocalEnvironment::LocalEnvironment(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, +LocalEnvironment::LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { Initialize(simulation_configuration, global_environment, spacecraft_id); } @@ -23,7 +23,7 @@ LocalEnvironment::~LocalEnvironment() { delete celestial_information_; } -void LocalEnvironment::Initialize(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, +void LocalEnvironment::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { // Read file name setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); @@ -71,7 +71,7 @@ void LocalEnvironment::Update(const dynamics::Dynamics* dynamics, const Simulati } } -void LocalEnvironment::LogSetup(Logger& logger) { +void LocalEnvironment::LogSetup(logger::Logger& logger) { logger.AddLogList(geomagnetic_field_); logger.AddLogList(solar_radiation_pressure_environment_); logger.AddLogList(earth_albedo_); diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index f251135f4..f6d698f67 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -32,7 +32,7 @@ class LocalEnvironment { * @param [in] global_environment: Global environment * @param [in] spacecraft_id: Satellite ID */ - LocalEnvironment(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); + LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); /** * @fn ~LocalEnvironment * @brief Destructor @@ -51,7 +51,7 @@ class LocalEnvironment { * @fn LogSetup * @brief Log setup for local environments */ - void LogSetup(Logger& logger); + void LogSetup(logger::Logger& logger); /** * @fn GetAtmosphere @@ -93,7 +93,7 @@ class LocalEnvironment { * @param [in] global_environment: Global environment * @param [in] spacecraft_id: Satellite ID */ - void Initialize(const SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); + void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); }; } // namespace s2e::environment diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index ff60f94be..ba259567b 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -33,7 +33,7 @@ void SolarRadiationPressureEnvironment::UpdateAllStates() { } void SolarRadiationPressureEnvironment::UpdatePressure() { - const s2e::math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); + const math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); const double distance_sat_to_sun = r_sc2sun_eci.CalcNorm(); solar_radiation_pressure_N_m2_ = solar_constant_W_m2_ / environment::speed_of_light_m_s / pow(distance_sat_to_sun / environment::astronomical_unit_m, 2.0); @@ -42,8 +42,8 @@ void SolarRadiationPressureEnvironment::UpdatePressure() { std::string SolarRadiationPressureEnvironment::GetLogHeader() const { std::string str_tmp = ""; - str_tmp += WriteScalar("solar_radiation_pressure_at_spacecraft_position", "N/m2"); - str_tmp += WriteScalar("shadow_coefficient_at_spacecraft_position"); + str_tmp += logger::WriteScalar("solar_radiation_pressure_at_spacecraft_position", "N/m2"); + str_tmp += logger::WriteScalar("shadow_coefficient_at_spacecraft_position"); return str_tmp; } @@ -51,8 +51,8 @@ std::string SolarRadiationPressureEnvironment::GetLogHeader() const { std::string SolarRadiationPressureEnvironment::GetLogValue() const { std::string str_tmp = ""; - str_tmp += WriteScalar(solar_radiation_pressure_N_m2_ * shadow_coefficient_); - str_tmp += WriteScalar(shadow_coefficient_); + str_tmp += logger::WriteScalar(solar_radiation_pressure_N_m2_ * shadow_coefficient_); + str_tmp += logger::WriteScalar(shadow_coefficient_); return str_tmp; } @@ -63,8 +63,8 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow return; } - const s2e::math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); - const s2e::math::Vector<3> r_sc2source_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m(shadow_source_name.c_str()); + const math::Vector<3> r_sc2sun_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m("SUN"); + const math::Vector<3> r_sc2source_eci = local_celestial_information_->GetPositionFromSpacecraft_i_m(shadow_source_name.c_str()); const double shadow_source_radius_m = local_celestial_information_->GetGlobalInformation().GetMeanRadiusFromName_m(shadow_source_name.c_str()); @@ -73,7 +73,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow const double sd_source = asin(shadow_source_radius_m / r_sc2source_eci.CalcNorm()); // Apparent radius of the shadow source // Angle of deviation from shadow source center to sun center - s2e::math::Vector<3> r_source2sun_eci = r_sc2sun_eci - r_sc2source_eci; + math::Vector<3> r_source2sun_eci = r_sc2sun_eci - r_sc2source_eci; const double delta = acos(InnerProduct(r_sc2source_eci, r_sc2sun_eci - r_sc2source_eci) / r_sc2source_eci.CalcNorm() / r_source2sun_eci.CalcNorm()); // The angle between the center of the sun and the common chord const double x = (delta * delta + sd_sun * sd_sun - sd_source * sd_source) / (2.0 * delta); @@ -93,7 +93,7 @@ void SolarRadiationPressureEnvironment::CalcShadowCoefficient(std::string shadow } else if (fabs(a - b) <= c && c <= (a + b)) // spacecraft is in penumbra { double A = a * a * acos(x / a) + b * b * acos((c - x) / b) - c * y; // The area of the occulted segment of the apparent solar disk - shadow_coefficient_ *= 1.0 - A / (s2e::math::pi * a * a); + shadow_coefficient_ *= 1.0 - A / (math::pi * a * a); } else { // no occultation takes place if (c < (a + b)) { std::cout << "[Error SRP Environment]: The calculation error was occurred at the shadow calculation." << std::endl; diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 54599ee07..40f47f8f1 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -37,7 +37,7 @@ inline std::string WriteScalar(const std::string name, const std::string unit); * @param [in] precision: precision for the value (number of digit) */ template -inline std::string WriteVector(const s2e::math::Vector vector, const int precision = 6); +inline std::string WriteVector(const math::Vector vector, const int precision = 6); /** * @fn WriteVector * @brief Write header for vector value @@ -54,7 +54,7 @@ inline std::string WriteVector(const std::string name, const std::string frame, * @param [in] matrix: matrix value */ template -inline std::string WriteMatrix(const s2e::math::Matrix matrix, const int precision = 6); +inline std::string WriteMatrix(const math::Matrix matrix, const int precision = 6); /** * @fn WriteMatrix * @brief Write header for matrix value @@ -72,7 +72,7 @@ inline std::string WriteMatrix(const std::string name, const std::string frame, * @brief Write quaternion value * @param [in] quaternion: Quaternion */ -inline std::string WriteQuaternion(const s2e::math::Quaternion quaternion, const int precision = 6); +inline std::string WriteQuaternion(const math::Quaternion quaternion, const int precision = 6); /** * @fn WriteQuaternion * @brief Write header for quaternion @@ -93,7 +93,7 @@ std::string WriteScalar(const T scalar, const int precision) { std::string WriteScalar(const std::string name, const std::string unit) { return name + "[" + unit + "],"; } template -std::string WriteVector(const s2e::math::Vector vector, const int precision) { +std::string WriteVector(const math::Vector vector, const int precision) { std::stringstream str_tmp; for (size_t n = 0; n < NUM; n++) { @@ -117,7 +117,7 @@ std::string WriteVector(const std::string name, const std::string frame, const s } template -std::string WriteMatrix(const s2e::math::Matrix matrix, const int precision) { +std::string WriteMatrix(const math::Matrix matrix, const int precision) { std::stringstream str_tmp; for (size_t n = 0; n < ROW; n++) { @@ -140,7 +140,7 @@ std::string WriteMatrix(const std::string name, const std::string frame, const s return str_tmp.str(); } -std::string WriteQuaternion(const s2e::math::Quaternion quaternion, const int precision) { +std::string WriteQuaternion(const math::Quaternion quaternion, const int precision) { std::stringstream str_tmp; for (size_t i = 0; i < 4; i++) { diff --git a/src/logger/logger.cpp b/src/logger/logger.cpp index 0469f38e9..4299127db 100644 --- a/src/logger/logger.cpp +++ b/src/logger/logger.cpp @@ -8,13 +8,13 @@ #include #include +namespace s2e::logger { + std::vector log_list_; bool Logger::is_directory_created_ = false; namespace fs = std::filesystem; -namespace s2e::logger { - Logger::Logger(const std::string &file_name, const fs::path &data_path, const fs::path &ini_file_name, const bool is_ini_save_enabled, const bool is_enabled) : is_enabled_(is_enabled), is_ini_save_enabled_(is_ini_save_enabled) { diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index e38476335..09d7a2143 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -28,27 +28,27 @@ double CalcScaleHeight_km(const std::map::const_iterator density */ double CalcApexDensity_g_km3(const std::map::const_iterator density_itr, const double altitude_km); -double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7, const double exponent_parameter) { // Altitude double altitude_km = geodetic_position.GetAltitude_m() / 1000.0; // Position - s2e::math::Vector<3> position_ecef_m = geodetic_position.CalcEcefPosition(); + math::Vector<3> position_ecef_m = geodetic_position.CalcEcefPosition(); // Phi: angle between the satellite position and apex of the diurnal bulge double sun_ra_rad; //!< Right ascension of the sun phi double sun_dec_rad; //!< Declination of the sun theta sun_ra_rad = atan2(sun_direction_eci[1], sun_direction_eci[0]); sun_dec_rad = atan2(sun_direction_eci[2], sqrt(sun_direction_eci[0] * sun_direction_eci[0] + sun_direction_eci[1] * sun_direction_eci[1])); - s2e::math::Vector<3> apex_direction; - const double lag_angle_rad = 30.0 * s2e::math::deg_to_rad; + math::Vector<3> apex_direction; + const double lag_angle_rad = 30.0 * math::deg_to_rad; double apex_ra_rad = sun_ra_rad + lag_angle_rad; apex_direction[0] = cos(sun_dec_rad) * cos(apex_ra_rad); apex_direction[1] = cos(sun_dec_rad) * sin(apex_ra_rad); apex_direction[2] = sin(sun_dec_rad); - double beta_rad = s2e::math::InnerProduct(position_ecef_m.CalcNormalizedVector(), apex_direction); + double beta_rad = math::InnerProduct(position_ecef_m.CalcNormalizedVector(), apex_direction); double cos_phi = pow(0.5 + beta_rad / 2.0, exponent_parameter / 2.0); // Find density coefficients from altitude diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index a5b05bc7e..266682c88 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -20,7 +20,7 @@ namespace s2e::atmosphere { * @param [in] exponent_parameter: n in the equation. n=2 for low inclination orbit and n=6 for polar orbit. * @return Atmospheric density [kg/m^3] */ -double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const s2e::math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); } // namespace s2e::atmosphere diff --git a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp index 8401d233b..c000ca49e 100644 --- a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp +++ b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp @@ -187,9 +187,9 @@ double CalcNRLMSISE00(double decyear, double latrad, double lonrad, double alt, input.year = 0; /* without effect */ input.sec = date[3] * 60.0 * 60.0 + date[4] * 60.0 + date[5]; input.alt = alt / 1000.0; - input.g_lat = latrad * s2e::math::rad_to_deg; - input.g_long = lonrad * s2e::math::rad_to_deg; - input.lst = input.sec / 3600.0 + lonrad * s2e::math::rad_to_deg / 15.0; + input.g_lat = latrad * math::rad_to_deg; + input.g_long = lonrad * math::rad_to_deg; + input.lst = input.sec / 3600.0 + lonrad * math::rad_to_deg / 15.0; if (is_manual_param) { input.f107 = manual_f107; diff --git a/src/math_physics/geodesy/geodetic_position.cpp b/src/math_physics/geodesy/geodetic_position.cpp index 50bac4071..b72aa1804 100644 --- a/src/math_physics/geodesy/geodetic_position.cpp +++ b/src/math_physics/geodesy/geodetic_position.cpp @@ -25,7 +25,7 @@ GeodeticPosition::GeodeticPosition(const double latitude_rad, const double longi CalcQuaternionXcxfToLtc(); } -void GeodeticPosition::UpdateFromEcef(const s2e::math::Vector<3> position_ecef_m) { +void GeodeticPosition::UpdateFromEcef(const math::Vector<3> position_ecef_m) { const double earth_radius_m = environment::earth_equatorial_radius_m; const double flattening = environment::earth_flattening; @@ -46,7 +46,7 @@ void GeodeticPosition::UpdateFromEcef(const s2e::math::Vector<3> position_ecef_m altitude_m_ = r_m / cos(lat_tmp_rad) - c * earth_radius_m; - if (lat_tmp_rad > s2e::math::pi_2) lat_tmp_rad -= s2e::math::tau; + if (lat_tmp_rad > math::pi_2) lat_tmp_rad -= math::tau; latitude_rad_ = lat_tmp_rad; @@ -54,7 +54,7 @@ void GeodeticPosition::UpdateFromEcef(const s2e::math::Vector<3> position_ecef_m return; } -s2e::math::Vector<3> GeodeticPosition::CalcEcefPosition() const { +math::Vector<3> GeodeticPosition::CalcEcefPosition() const { const double earth_radius_m = environment::earth_equatorial_radius_m; const double flattening = environment::earth_flattening; @@ -63,7 +63,7 @@ s2e::math::Vector<3> GeodeticPosition::CalcEcefPosition() const { double c = 1.0 / sqrt(1.0 - e2 * sin(latitude_rad_) * sin(latitude_rad_)); double n = c * earth_radius_m; - s2e::math::Vector<3> pos_ecef_m; + math::Vector<3> pos_ecef_m; pos_ecef_m(0) = (n + altitude_m_) * cos(latitude_rad_) * cos(theta); pos_ecef_m(1) = (n + altitude_m_) * cos(latitude_rad_) * sin(theta); pos_ecef_m(2) = (n * (1.0 - e2) + altitude_m_) * sin(latitude_rad_); @@ -72,7 +72,7 @@ s2e::math::Vector<3> GeodeticPosition::CalcEcefPosition() const { } void GeodeticPosition::CalcQuaternionXcxfToLtc() { - s2e::math::Matrix<3, 3> dcm_xcxf_to_ltc; + math::Matrix<3, 3> dcm_xcxf_to_ltc; dcm_xcxf_to_ltc[0][0] = -sin(longitude_rad_); dcm_xcxf_to_ltc[0][1] = cos(longitude_rad_); dcm_xcxf_to_ltc[0][2] = 0; diff --git a/src/math_physics/geodesy/geodetic_position.hpp b/src/math_physics/geodesy/geodetic_position.hpp index 9687e0ea9..36cb4e839 100644 --- a/src/math_physics/geodesy/geodetic_position.hpp +++ b/src/math_physics/geodesy/geodetic_position.hpp @@ -36,13 +36,13 @@ class GeodeticPosition { * @brief Update geodetic position with position vector in the ECEF frame * @param [in] position_ecef_m: Position vector in the ECEF frame [m] */ - void UpdateFromEcef(const s2e::math::Vector<3> position_ecef_m); + void UpdateFromEcef(const math::Vector<3> position_ecef_m); /** * @fn CalcEcefPosition * @brief Calculate and return the ECEF position from the geodetic position */ - s2e::math::Vector<3> CalcEcefPosition() const; + math::Vector<3> CalcEcefPosition() const; // Getter /** @@ -64,14 +64,14 @@ class GeodeticPosition { * @fn GetQuaternionXcxfToLtc * @brief Conversion quaternion from XCXF (e.g. ECEF) to LTC frame */ - inline s2e::math::Quaternion GetQuaternionXcxfToLtc() const { return quaternion_xcxf_to_ltc_; } + inline math::Quaternion GetQuaternionXcxfToLtc() const { return quaternion_xcxf_to_ltc_; } private: double latitude_rad_; //!< Latitude [rad] South: -π/2 to 0, North: 0 to π/2 double longitude_rad_; //!< Longitude [rad] East: 0 to π, West: 2π to π (i.e., defined as 0 to 2π [rad] east of the Greenwich meridian) double altitude_m_; //!< Altitude [m] - s2e::math::Quaternion quaternion_xcxf_to_ltc_; //!< Conversion quaternion from XCXF (e.g. ECEF) to LTC (Local Topographic Coordinate) + math::Quaternion quaternion_xcxf_to_ltc_; //!< Conversion quaternion from XCXF (e.g. ECEF) to LTC (Local Topographic Coordinate) /** * @fn CalcQuaternionXcxfToLtc diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index c27c34ff7..e3008d6b0 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -171,7 +171,7 @@ AntexPhaseCenterData AntexFileReader::ReadPhaseCenterData(std::ifstream& antex_f } // Phase center offset if (line.find("NORTH / EAST / UP") == ANTEX_LINE_TYPE_POSITION) { - s2e::math::Vector<3> offset{0.0}; + math::Vector<3> offset{0.0}; sscanf(line.c_str(), "%lf %lf %lf", &offset[0], &offset[1], &offset[2]); phase_center_data.SetPhaseCenterOffset_mm(offset); } diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 179616bb9..9e30ebce6 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -128,7 +128,7 @@ class AntexPhaseCenterData { * @fn SetPhaseCenterOffset_mm * @param[in] phase_center_offset_mm: Phase center offset vector [mm] */ - inline void SetPhaseCenterOffset_mm(const s2e::math::Vector<3> phase_center_offset_mm) { phase_center_offset_mm_ = phase_center_offset_mm; } + inline void SetPhaseCenterOffset_mm(const math::Vector<3> phase_center_offset_mm) { phase_center_offset_mm_ = phase_center_offset_mm; } /** * @fn SetGridInformation * @param[in] grid_information: Grid information @@ -152,7 +152,7 @@ class AntexPhaseCenterData { * @fn GetPhaseCenterOffset_mm * @return Phase center offset vector [mm] */ - inline s2e::math::Vector<3> GetPhaseCenterOffset_mm() const { return phase_center_offset_mm_; } + inline math::Vector<3> GetPhaseCenterOffset_mm() const { return phase_center_offset_mm_; } /** * @fn GetGridInformation * @return Grid information @@ -166,7 +166,7 @@ class AntexPhaseCenterData { private: std::string frequency_name_ = ""; //!< Frequency name - s2e::math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] + math::Vector<3> phase_center_offset_mm_{0.0}; //!< Phase center offset [mm] AntexGridDefinition grid_information_; //!< Grid information std::vector> phase_center_variation_matrix_mm_; //!< Phase center variation [mm] (column, row definition: [azimuth][zenith]) }; diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index 212661e73..aa857965a 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -40,7 +40,7 @@ double Sp3FileReader::GetSatelliteClockOffset(const size_t epoch_id, const size_ return position_clock.clock_us_; } -s2e::math::Vector<3> Sp3FileReader::GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id) { +math::Vector<3> Sp3FileReader::GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id) { Sp3PositionClock position_clock = GetPositionClock(epoch_id, satellite_id); return position_clock.position_km_; } @@ -314,7 +314,7 @@ Sp3PositionClock Sp3FileReader::DecodePositionClockData(std::string line) { position_clock.satellite_id_ = line.substr(1, 3); // Position and clock - s2e::math::Vector<3> position_km; + math::Vector<3> position_km; for (size_t axis = 0; axis < 3; axis++) { position_km[axis] = stod(line.substr(4 + axis * 14, 14)); } @@ -323,7 +323,7 @@ Sp3PositionClock Sp3FileReader::DecodePositionClockData(std::string line) { // Standard deviations if (line.size() > 61) { - s2e::math::Vector<3> position_standard_deviation; + math::Vector<3> position_standard_deviation; for (size_t axis = 0; axis < 3; axis++) { try { position_standard_deviation[axis] = stod(line.substr(61 + axis * 3, 2)); @@ -384,7 +384,7 @@ Sp3VelocityClockRate Sp3FileReader::DecodeVelocityClockRateData(std::string line velocity_clock_rate.satellite_id_ = line.substr(1, 3); // Velocity and clock rate - s2e::math::Vector<3> velocity_dm_s; + math::Vector<3> velocity_dm_s; for (size_t axis = 0; axis < 3; axis++) { velocity_dm_s[axis] = stod(line.substr(4 + axis * 14, 14)); } @@ -393,7 +393,7 @@ Sp3VelocityClockRate Sp3FileReader::DecodeVelocityClockRateData(std::string line // Standard deviations if (line.size() > 60) { - s2e::math::Vector<3> velocity_standard_deviation; + math::Vector<3> velocity_standard_deviation; for (size_t axis = 0; axis < 3; axis++) { velocity_standard_deviation[axis] = stod(line.substr(61 + axis * 2, 2)); } diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 076ebd4d4..1b7164dbf 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -95,9 +95,9 @@ struct Sp3Header { */ struct Sp3PositionClock { std::string satellite_id_; //!< GNSS satellite ID - s2e::math::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] + math::Vector<3> position_km_{SP3_BAD_POSITION_VALUE}; //!< Satellite position [km] double clock_us_ = SP3_BAD_CLOCK_VALUE; //!< Satellite clock offset [us] - s2e::math::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] + math::Vector<3> position_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] double clock_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] bool clock_event_flag_ = false; //!< true when clock discontinuity is happened bool clock_prediction_flag_ = false; //!< true when clock data is predicted @@ -130,9 +130,9 @@ struct Sp3PositionClockCorrelation { */ struct Sp3VelocityClockRate { std::string satellite_id_; //!< GNSS satellite ID - s2e::math::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] + math::Vector<3> velocity_dm_s_{0.0}; //!< Satellite velocity [dm/s] double clock_rate_ = 0.0; //!< Satellite clock offset change rate [-] - s2e::math::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] + math::Vector<3> velocity_standard_deviation_{0.0}; //!< Satellite position standard deviation [-] double clock_rate_standard_deviation_ = 0.0; //!< Satellite clock offset standard deviation [-] }; @@ -178,7 +178,7 @@ class Sp3FileReader { s2e::time_system::DateTime GetEpochData(const size_t epoch_id) const; Sp3PositionClock GetPositionClock(const size_t epoch_id, const size_t satellite_id); double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); - s2e::math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); + math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); size_t SearchNearestEpochId(const s2e::time_system::EpochTime time); diff --git a/src/math_physics/gravity/gravity_potential.cpp b/src/math_physics/gravity/gravity_potential.cpp index f2adcaa7e..05f502fa5 100644 --- a/src/math_physics/gravity/gravity_potential.cpp +++ b/src/math_physics/gravity/gravity_potential.cpp @@ -28,8 +28,8 @@ GravityPotential::GravityPotential(const size_t degree, const std::vector GravityPotential::CalcAcceleration_xcxf_m_s2(const s2e::math::Vector<3> &position_xcxf_m) { - s2e::math::Vector<3> acceleration_xcxf_m_s2(0.0); +math::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const math::Vector<3> &position_xcxf_m) { + math::Vector<3> acceleration_xcxf_m_s2(0.0); if (degree_ <= 0) return acceleration_xcxf_m_s2; // TODO: Consider this assertion is needed xcxf_x_m_ = position_xcxf_m[0]; @@ -95,8 +95,8 @@ s2e::math::Vector<3> GravityPotential::CalcAcceleration_xcxf_m_s2(const s2e::mat return acceleration_xcxf_m_s2; } -s2e::math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const s2e::math::Vector<3> &position_xcxf_m) { - s2e::math::Matrix<3, 3> partial_derivative(0.0); +math::Matrix<3, 3> GravityPotential::CalcPartialDerivative_xcxf_s2(const math::Vector<3> &position_xcxf_m) { + math::Matrix<3, 3> partial_derivative(0.0); if (degree_ <= 0) return partial_derivative; xcxf_x_m_ = position_xcxf_m[0]; diff --git a/src/math_physics/gravity/gravity_potential.hpp b/src/math_physics/gravity/gravity_potential.hpp index 23d6df4c9..bf06ee4d2 100644 --- a/src/math_physics/gravity/gravity_potential.hpp +++ b/src/math_physics/gravity/gravity_potential.hpp @@ -48,7 +48,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Acceleration in XCXF frame [m/s2] */ - s2e::math::Vector<3> CalcAcceleration_xcxf_m_s2(const s2e::math::Vector<3> &position_xcxf_m); + math::Vector<3> CalcAcceleration_xcxf_m_s2(const math::Vector<3> &position_xcxf_m); /** * @fn CalcAcceleration_xcxf_m_s2 @@ -56,7 +56,7 @@ class GravityPotential { * @param [in] position_xcxf_m: Position of the spacecraft in the XCXF frame [m] * @return Partial derivative of acceleration in XCXF frame [-/s2] */ - s2e::math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const s2e::math::Vector<3> &position_xcxf_m); + math::Matrix<3, 3> CalcPartialDerivative_xcxf_s2(const math::Vector<3> &position_xcxf_m); private: size_t degree_ = 0; //!< Maximum degree diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index 54717f1c1..0ac2fa038 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -25,8 +25,8 @@ TEST(GravityPotential, Acceleration) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Acceleration Calculation check - s2e::math::Vector<3> position_xcxf_m; - s2e::math::Vector<3> acceleration_xcxf_m_s2; + math::Vector<3> position_xcxf_m; + math::Vector<3> acceleration_xcxf_m_s2; const double accuracy = 1.0e-3; // Calc Acceleration @@ -67,8 +67,8 @@ TEST(GravityPotential, PartialDerivative1) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - s2e::math::Vector<3> position_xcxf_m; - s2e::math::Matrix<3, 3> partial_derivative_xcxf_s2; + math::Vector<3> position_xcxf_m; + math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -79,22 +79,22 @@ TEST(GravityPotential, PartialDerivative1) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - s2e::math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - s2e::math::Vector<3> position_1_xcxf_m = position_xcxf_m; - s2e::math::Vector<3> position_2_xcxf_m = position_xcxf_m; + math::Vector<3> position_1_xcxf_m = position_xcxf_m; + math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - s2e::math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - s2e::math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - s2e::math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } } // Compare numerical and analytical calculation - s2e::math::Matrix<3, 3> diff; + math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); @@ -120,8 +120,8 @@ TEST(GravityPotential, PartialDerivative2) { GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - s2e::math::Vector<3> position_xcxf_m; - s2e::math::Matrix<3, 3> partial_derivative_xcxf_s2; + math::Vector<3> position_xcxf_m; + math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -132,22 +132,22 @@ TEST(GravityPotential, PartialDerivative2) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - s2e::math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - s2e::math::Vector<3> position_1_xcxf_m = position_xcxf_m; - s2e::math::Vector<3> position_2_xcxf_m = position_xcxf_m; + math::Vector<3> position_1_xcxf_m = position_xcxf_m; + math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - s2e::math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - s2e::math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - s2e::math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } } // Compare numerical and analytical calculation - s2e::math::Matrix<3, 3> diff; + math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); diff --git a/src/math_physics/math/ordinary_differential_equation.hpp b/src/math_physics/math/ordinary_differential_equation.hpp index fb0d81b36..1c861a391 100644 --- a/src/math_physics/math/ordinary_differential_equation.hpp +++ b/src/math_physics/math/ordinary_differential_equation.hpp @@ -102,7 +102,7 @@ class OrdinaryDifferentialEquation { * @fn GetState * @brief Return current state vector for inheriting class */ - inline s2e::math::Vector& GetState() { return state_; } + inline math::Vector& GetState() { return state_; } private: double independent_variable_; //!< Latest value of independent variable diff --git a/src/math_physics/math/s2e_math.cpp b/src/math_physics/math/s2e_math.cpp index 26020cd77..fb4e53e1e 100644 --- a/src/math_physics/math/s2e_math.cpp +++ b/src/math_physics/math/s2e_math.cpp @@ -12,11 +12,11 @@ double WrapTo2Pi(const double angle_rad) { double angle_out = angle_rad; if (angle_out < 0.0) { while (angle_out < 0.0) { - angle_out += s2e::math::tau; + angle_out += math::tau; } - } else if (angle_out > s2e::math::tau) { - while (angle_out > s2e::math::tau) { - angle_out -= s2e::math::tau; + } else if (angle_out > math::tau) { + while (angle_out > math::tau) { + angle_out -= math::tau; } } else { // nothing to do diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index a29f3b330..674b12419 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -15,7 +15,7 @@ TEST(Interpolation, PolynomialLinearFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - s2e::math::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(2.0 * xx, interpolation.CalcPolynomial(xx)); @@ -31,7 +31,7 @@ TEST(Interpolation, PolynomialLinearFunction) { TEST(Interpolation, PolynomialQuadraticFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 1.0, 4.0, 9.0, 16.0}; - s2e::math::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(pow(xx, 2.0), interpolation.CalcPolynomial(xx)); @@ -45,16 +45,16 @@ TEST(Interpolation, PolynomialQuadraticFunction) { * @brief Test for sin function with trigonometric interpolation */ TEST(Interpolation, TrigonometricSinFunction) { - std::vector x{0.0, s2e::math::pi_2, s2e::math::pi, s2e::math::pi * 3.0 / 2.0, s2e::math::tau}; + std::vector x{0.0, math::pi_2, math::pi, math::pi * 3.0 / 2.0, math::tau}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); } - s2e::math::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); - double xx = 0.4 * s2e::math::pi; + double xx = 0.4 * math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); - xx = 1.4 * s2e::math::pi; + xx = 1.4 * math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); } @@ -62,16 +62,16 @@ TEST(Interpolation, TrigonometricSinFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosFunction) { - std::vector x{0.0, 0.3 * s2e::math::pi_2, 0.6 * s2e::math::pi_2, 0.9 * s2e::math::pi_2, 1.2 * s2e::math::pi_2}; + std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i])); } - s2e::math::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); - double xx = 0.1 * s2e::math::pi_2; + double xx = 0.1 * math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * s2e::math::pi_2; + xx = 0.8 * math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -79,16 +79,16 @@ TEST(Interpolation, TrigonometricCosFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { - std::vector x{0.0, 0.3 * s2e::math::pi_2, 0.6 * s2e::math::pi_2, 0.9 * s2e::math::pi_2, 1.2 * s2e::math::pi_2, 1.5 * s2e::math::pi_2}; + std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2, 1.5 * math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i]) + sin(x[i])); } - s2e::math::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); - double xx = 0.1 * s2e::math::pi_2; + double xx = 0.1 * math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * s2e::math::pi_2; + xx = 0.8 * math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -98,7 +98,7 @@ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { TEST(Interpolation, PushAndPop) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - s2e::math::Interpolation interpolation(x, y); + math::Interpolation interpolation(x, y); EXPECT_EQ(x.size(), interpolation.GetDegree()); for (size_t i = 0; i < x.size(); i++) { diff --git a/src/math_physics/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp index 9b23c15d5..53dee0b75 100644 --- a/src/math_physics/math/test_matrix.cpp +++ b/src/math_physics/math/test_matrix.cpp @@ -14,7 +14,7 @@ TEST(Matrix, ConstructorWithNumber) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - s2e::math::Matrix m(initialize_value); + math::Matrix m(initialize_value); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -30,7 +30,7 @@ TEST(Matrix, ConstructorWithNumber) { TEST(Matrix, GetLength) { const size_t R = 6; const size_t C = 3; - s2e::math::Matrix m; + math::Matrix m; EXPECT_EQ(R, m.GetRowLength()); EXPECT_EQ(C, m.GetColumnLength()); @@ -43,8 +43,8 @@ TEST(Matrix, OperatorPlusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - s2e::math::Matrix m(initialize_value); - s2e::math::Matrix adding; + math::Matrix m(initialize_value); + math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -71,8 +71,8 @@ TEST(Matrix, OperatorMinusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - s2e::math::Matrix m(initialize_value); - s2e::math::Matrix subtracting; + math::Matrix m(initialize_value); + math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -99,7 +99,7 @@ TEST(Matrix, OperatorMultiplyEqual) { const size_t R = 6; const size_t C = 3; - s2e::math::Matrix m; + math::Matrix m; double multiplying = 2.0; for (size_t r = 0; r < R; r++) { @@ -125,7 +125,7 @@ TEST(Matrix, OperatorDivideEqual) { const size_t R = 6; const size_t C = 3; - s2e::math::Matrix m; + math::Matrix m; double dividing = 2.0; for (size_t r = 0; r < R; r++) { @@ -152,7 +152,7 @@ TEST(Matrix, FillUp) { const size_t C = 3; double value = 3.0; - s2e::math::Matrix m; + math::Matrix m; m.FillUp(value); @@ -169,7 +169,7 @@ TEST(Matrix, FillUp) { */ TEST(Matrix, CalcTrace) { const size_t N = 6; - s2e::math::Matrix m; + math::Matrix m; for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -201,8 +201,8 @@ TEST(Matrix, OperatorPlus) { const size_t R = 6; const size_t C = 3; double initialize_value = -2.0; - s2e::math::Matrix m(initialize_value); - s2e::math::Matrix adding; + math::Matrix m(initialize_value); + math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -210,7 +210,7 @@ TEST(Matrix, OperatorPlus) { } } - s2e::math::Matrix added = m + adding; + math::Matrix added = m + adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -230,8 +230,8 @@ TEST(Matrix, OperatorMinus) { const size_t R = 6; const size_t C = 3; double initialize_value = 0.6; - s2e::math::Matrix m(initialize_value); - s2e::math::Matrix subtracting; + math::Matrix m(initialize_value); + math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -239,7 +239,7 @@ TEST(Matrix, OperatorMinus) { } } - s2e::math::Matrix subtracted = m - subtracting; + math::Matrix subtracted = m - subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -259,7 +259,7 @@ TEST(Matrix, OperatorMultiplyScalar) { const size_t R = 6; const size_t C = 3; - s2e::math::Matrix m; + math::Matrix m; double multiplying = 0.3; for (size_t r = 0; r < R; r++) { @@ -268,7 +268,7 @@ TEST(Matrix, OperatorMultiplyScalar) { } } - s2e::math::Matrix subtracted = multiplying * m; + math::Matrix subtracted = multiplying * m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -287,8 +287,8 @@ TEST(Matrix, OperatorMultiplyMatrix) { const size_t R = 2; const size_t C = 3; - s2e::math::Matrix a; - s2e::math::Matrix b; + math::Matrix a; + math::Matrix b; a[0][0] = 1.0; a[0][1] = 2.0; @@ -304,7 +304,7 @@ TEST(Matrix, OperatorMultiplyMatrix) { b[2][0] = 5.0; b[2][1] = 6.0; - s2e::math::Matrix result = a * b; + math::Matrix result = a * b; EXPECT_DOUBLE_EQ(22.0, result[0][0]); EXPECT_DOUBLE_EQ(28.0, result[0][1]); @@ -319,14 +319,14 @@ TEST(Matrix, Transpose) { const size_t R = 6; const size_t C = 3; - s2e::math::Matrix m; + math::Matrix m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { m[r][c] = r * c; } } - s2e::math::Matrix transposed = m.Transpose(); + math::Matrix transposed = m.Transpose(); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -344,7 +344,7 @@ TEST(Matrix, Transpose) { TEST(Matrix, MakeIdentityMatrix) { const size_t N = 6; - s2e::math::Matrix m = s2e::math::MakeIdentityMatrix(); + math::Matrix m = math::MakeIdentityMatrix(); for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -362,9 +362,9 @@ TEST(Matrix, MakeIdentityMatrix) { */ TEST(Matrix, MakeRotationMatrixX) { const size_t N = 3; - double theta_rad = -45.0 * s2e::math::deg_to_rad; + double theta_rad = -45.0 * math::deg_to_rad; - s2e::math::Matrix m = s2e::math::MakeRotationMatrixX(theta_rad); + math::Matrix m = math::MakeRotationMatrixX(theta_rad); EXPECT_DOUBLE_EQ(1.0, m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -382,9 +382,9 @@ TEST(Matrix, MakeRotationMatrixX) { */ TEST(Matrix, MakeRotationMatrixY) { const size_t N = 3; - double theta_rad = 120.0 * s2e::math::deg_to_rad; + double theta_rad = 120.0 * math::deg_to_rad; - s2e::math::Matrix m = s2e::math::MakeRotationMatrixY(theta_rad); + math::Matrix m = math::MakeRotationMatrixY(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -402,9 +402,9 @@ TEST(Matrix, MakeRotationMatrixY) { */ TEST(Matrix, MakeRotationMatrixZ) { const size_t N = 3; - double theta_rad = 30.0 * s2e::math::deg_to_rad; + double theta_rad = 30.0 * math::deg_to_rad; - s2e::math::Matrix m = s2e::math::MakeRotationMatrixZ(theta_rad); + math::Matrix m = math::MakeRotationMatrixZ(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(sin(theta_rad), m[0][1]); diff --git a/src/math_physics/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp index 958a409b6..78fc9babf 100644 --- a/src/math_physics/math/test_matrix_vector.cpp +++ b/src/math_physics/math/test_matrix_vector.cpp @@ -14,8 +14,8 @@ TEST(MatrixVector, MultiplyMatrixVector) { const size_t R = 3; const size_t C = 2; - s2e::math::Matrix m; - s2e::math::Vector v; + math::Matrix m; + math::Vector v; m[0][0] = 1.0; m[0][1] = 2.0; @@ -27,7 +27,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { v[0] = 7.0; v[1] = 1.0; - s2e::math::Vector result = m * v; + math::Vector result = m * v; EXPECT_DOUBLE_EQ(9.0, result[0]); EXPECT_DOUBLE_EQ(-7.0, result[1]); @@ -40,7 +40,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { TEST(MatrixVector, CalcInverseMatrix) { const size_t N = 3; - s2e::math::Matrix m; + math::Matrix m; m[0][0] = 1.0; m[0][1] = 1.0; @@ -52,7 +52,7 @@ TEST(MatrixVector, CalcInverseMatrix) { m[2][1] = -2.0; m[2][2] = 1.0; - s2e::math::Matrix inverse = s2e::math::CalcInverseMatrix(m); + math::Matrix inverse = math::CalcInverseMatrix(m); EXPECT_NEAR(-1.0, inverse[0][0], 1e-10); EXPECT_NEAR(-1.0, inverse[0][1], 1e-10); diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index 2821eccee..4995afccc 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -11,7 +11,7 @@ * @brief Test for constructor from four numbers */ TEST(Quaternion, ConstructorFourNumber) { - s2e::math::Quaternion q(0.5, 0.5, 0.5, 0.5); + math::Quaternion q(0.5, 0.5, 0.5, 0.5); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -23,8 +23,8 @@ TEST(Quaternion, ConstructorFourNumber) { * @brief Test for constructor from Vector */ TEST(Quaternion, ConstructorVector) { - s2e::math::Vector<4> v(0.5); - s2e::math::Quaternion q(v); + math::Vector<4> v(0.5); + math::Quaternion q(v); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -36,12 +36,12 @@ TEST(Quaternion, ConstructorVector) { * @brief Test for constructor from axis and rotation angle X rotation */ TEST(Quaternion, ConstructorAxisAndAngleX) { - s2e::math::Vector<3> axis; + math::Vector<3> axis; axis[0] = 1.0; axis[1] = 0.0; axis[2] = 0.0; - double theta_rad = 90 * s2e::math::deg_to_rad; - s2e::math::Quaternion q(axis, theta_rad); + double theta_rad = 90 * math::deg_to_rad; + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -53,12 +53,12 @@ TEST(Quaternion, ConstructorAxisAndAngleX) { * @brief Test for constructor from axis and rotation angle Y rotation */ TEST(Quaternion, ConstructorAxisAndAngleY) { - s2e::math::Vector<3> axis; + math::Vector<3> axis; axis[0] = 0.0; axis[1] = 1.0; axis[2] = 0.0; - double theta_rad = 45 * s2e::math::deg_to_rad; - s2e::math::Quaternion q(axis, theta_rad); + double theta_rad = 45 * math::deg_to_rad; + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -70,12 +70,12 @@ TEST(Quaternion, ConstructorAxisAndAngleY) { * @brief Test for constructor from axis and rotation angle Z rotation */ TEST(Quaternion, ConstructorAxisAndAngleZ) { - s2e::math::Vector<3> axis; + math::Vector<3> axis; axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; - double theta_rad = -60 * s2e::math::deg_to_rad; - s2e::math::Quaternion q(axis, theta_rad); + double theta_rad = -60 * math::deg_to_rad; + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -87,12 +87,12 @@ TEST(Quaternion, ConstructorAxisAndAngleZ) { * @brief Test for constructor from axis and rotation angle All axes rotation */ TEST(Quaternion, ConstructorAxisAndAngleAll) { - s2e::math::Vector<3> axis; + math::Vector<3> axis; axis[0] = 1.0; axis[1] = 1.0; axis[2] = 1.0; - double theta_rad = 180 * s2e::math::deg_to_rad; - s2e::math::Quaternion q(axis, theta_rad); + double theta_rad = 180 * math::deg_to_rad; + math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -104,16 +104,16 @@ TEST(Quaternion, ConstructorAxisAndAngleAll) { * @brief Test for constructor from two vectors: No rotation */ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { - s2e::math::Vector<3> before; + math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 2.0; // To check normalization - s2e::math::Vector<3> after; + math::Vector<3> after; after[0] = 0.0; after[1] = 0.0; after[2] = 1.0; - s2e::math::Quaternion q(before, after); + math::Quaternion q(before, after); EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); @@ -125,18 +125,18 @@ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { * @brief Test for constructor from two vectors: X rotation */ TEST(Quaternion, ConstructorTwoVectorsX) { - s2e::math::Vector<3> before; + math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - s2e::math::Vector<3> after; + math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; - s2e::math::Quaternion q(before, after); + math::Quaternion q(before, after); - double theta_rad = -90 * s2e::math::deg_to_rad; + double theta_rad = -90 * math::deg_to_rad; EXPECT_NEAR(sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -147,18 +147,18 @@ TEST(Quaternion, ConstructorTwoVectorsX) { * @brief Test for constructor from two vectors: Y rotation */ TEST(Quaternion, ConstructorTwoVectorsY) { - s2e::math::Vector<3> before; + math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - s2e::math::Vector<3> after; + math::Vector<3> after; after[0] = 1.0; after[1] = 0.0; after[2] = 0.0; - s2e::math::Quaternion q(before, after); + math::Quaternion q(before, after); - double theta_rad = 90 * s2e::math::deg_to_rad; + double theta_rad = 90 * math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -169,18 +169,18 @@ TEST(Quaternion, ConstructorTwoVectorsY) { * @brief Test for constructor from two vectors: Z rotation */ TEST(Quaternion, ConstructorTwoVectorsZ) { - s2e::math::Vector<3> before; + math::Vector<3> before; before[0] = 1.0; before[1] = 0.0; before[2] = 0.0; - s2e::math::Vector<3> after; + math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; - s2e::math::Quaternion q(before, after); + math::Quaternion q(before, after); - double theta_rad = 90 * s2e::math::deg_to_rad; + double theta_rad = 90 * math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[2], 1e-5); @@ -192,7 +192,7 @@ TEST(Quaternion, ConstructorTwoVectorsZ) { * @note TODO: Fix to nondestructive function */ TEST(Quaternion, Normalize) { - s2e::math::Quaternion q(1.0, 1.0, 1.0, 1.0); + math::Quaternion q(1.0, 1.0, 1.0, 1.0); EXPECT_DOUBLE_EQ(1.0, q[0]); EXPECT_DOUBLE_EQ(1.0, q[1]); EXPECT_DOUBLE_EQ(1.0, q[2]); @@ -209,9 +209,9 @@ TEST(Quaternion, Normalize) { * @brief Test for Conjugate */ TEST(Quaternion, Conjugate) { - s2e::math::Quaternion q(0.5, 0.5, 0.5, 0.5); + math::Quaternion q(0.5, 0.5, 0.5, 0.5); - s2e::math::Quaternion q_conjugate = q.Conjugate(); + math::Quaternion q_conjugate = q.Conjugate(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.5, q[0]); @@ -229,10 +229,10 @@ TEST(Quaternion, Conjugate) { * @brief Test for ConvertToDcm Y rotation */ TEST(Quaternion, ConvertToDcmY) { - s2e::math::Quaternion q(0.0, 1.0, 0.0, 1.0); + math::Quaternion q(0.0, 1.0, 0.0, 1.0); q.Normalize(); - s2e::math::Matrix<3, 3> dcm = q.ConvertToDcm(); + math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.0, q[0]); @@ -253,7 +253,7 @@ TEST(Quaternion, ConvertToDcmY) { EXPECT_NEAR(0.0, dcm[2][2], accuracy); // Inverse Conversion - s2e::math::Quaternion q_from_dcm = s2e::math::Quaternion::ConvertFromDcm(dcm); + math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -263,10 +263,10 @@ TEST(Quaternion, ConvertToDcmY) { * @brief Test for ConvertToDcm */ TEST(Quaternion, ConvertToDcm) { - s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - s2e::math::Matrix<3, 3> dcm = q.ConvertToDcm(); + math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function const double accuracy = 1.0e-5; @@ -281,7 +281,7 @@ TEST(Quaternion, ConvertToDcm) { EXPECT_NEAR(0.4962963, dcm[2][2], accuracy); // Inverse Conversion - s2e::math::Quaternion q_from_dcm = s2e::math::Quaternion::ConvertFromDcm(dcm); + math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -291,10 +291,10 @@ TEST(Quaternion, ConvertToDcm) { * @brief Test for ConvertToEuler X rotation */ TEST(Quaternion, ConvertToEulerX) { - s2e::math::Quaternion q(1.0, 0.0, 0.0, 1.0); + math::Quaternion q(1.0, 0.0, 0.0, 1.0); q.Normalize(); - s2e::math::Vector<3> euler = q.ConvertToEuler(); + math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function EXPECT_DOUBLE_EQ(1.0 / sqrt(2.0), q[0]); @@ -304,12 +304,12 @@ TEST(Quaternion, ConvertToEulerX) { // Check nondestructive function const double accuracy = 1.0e-7; - EXPECT_NEAR(90 * s2e::math::deg_to_rad, euler[0], accuracy); + EXPECT_NEAR(90 * math::deg_to_rad, euler[0], accuracy); EXPECT_NEAR(0.0, euler[1], accuracy); EXPECT_NEAR(0.0, euler[2], accuracy); // Inverse Conversion - s2e::math::Quaternion q_from_euler = s2e::math::Quaternion::ConvertFromEuler(euler); + math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -319,10 +319,10 @@ TEST(Quaternion, ConvertToEulerX) { * @brief Test for ConvertToEuler */ TEST(Quaternion, ConvertToEuler) { - s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - s2e::math::Vector<3> euler = q.ConvertToEuler(); + math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function const double accuracy = 1.0e-7; @@ -331,7 +331,7 @@ TEST(Quaternion, ConvertToEuler) { EXPECT_NEAR(0.41012734, euler[2], accuracy); // Inverse Conversion - s2e::math::Quaternion q_from_euler = s2e::math::Quaternion::ConvertFromEuler(euler); + math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -341,22 +341,22 @@ TEST(Quaternion, ConvertToEuler) { * @brief Test for FrameConversion Z rotation */ TEST(Quaternion, FrameConversionZ) { - s2e::math::Quaternion q(0.0, 0.0, 1.0, 1.0); + math::Quaternion q(0.0, 0.0, 1.0, 1.0); q.Normalize(); - s2e::math::Vector<3> v; + math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - s2e::math::Vector<3> v_frame_conv = q.FrameConversion(v); + math::Vector<3> v_frame_conv = q.FrameConversion(v); const double accuracy = 1.0e-7; EXPECT_NEAR(0.0, v_frame_conv[0], accuracy); EXPECT_NEAR(-1.0, v_frame_conv[1], accuracy); EXPECT_NEAR(0.0, v_frame_conv[2], accuracy); - s2e::math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); for (size_t i = 0; i < 3; i++) { EXPECT_NEAR(v[i], v_frame_conv_inv[i], accuracy); @@ -367,15 +367,15 @@ TEST(Quaternion, FrameConversionZ) { * @brief Test for FrameConversion */ TEST(Quaternion, FrameConversion) { - s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - s2e::math::Vector<3> v; + math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - s2e::math::Vector<3> v_frame_conv = q.FrameConversion(v); - s2e::math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + math::Vector<3> v_frame_conv = q.FrameConversion(v); + math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); const double accuracy = 1.0e-7; for (size_t i = 0; i < 3; i++) { @@ -387,9 +387,9 @@ TEST(Quaternion, FrameConversion) { * @brief Test for ConvertToVector */ TEST(Quaternion, ConvertToVector) { - s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); + math::Quaternion q(0.5, 0.3, 0.1, 1.0); - s2e::math::Vector<4> v = q.ConvertToVector(); + math::Vector<4> v = q.ConvertToVector(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(q[i], v[i]); @@ -400,10 +400,10 @@ TEST(Quaternion, ConvertToVector) { * @brief Test for operator+ */ TEST(Quaternion, OperatorPlus) { - s2e::math::Quaternion q1(0.5, 0.3, 0.1, 1.0); - s2e::math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - s2e::math::Quaternion result = q1 + q2; + math::Quaternion result = q1 + q2; EXPECT_DOUBLE_EQ(0.2, result[0]); EXPECT_DOUBLE_EQ(0.4, result[1]); @@ -415,10 +415,10 @@ TEST(Quaternion, OperatorPlus) { * @brief Test for operator- */ TEST(Quaternion, OperatorMinus) { - s2e::math::Quaternion q1(0.5, 0.3, 0.1, 1.0); - s2e::math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - s2e::math::Quaternion result = q1 - q2; + math::Quaternion result = q1 - q2; EXPECT_DOUBLE_EQ(0.8, result[0]); EXPECT_DOUBLE_EQ(0.2, result[1]); @@ -430,10 +430,10 @@ TEST(Quaternion, OperatorMinus) { * @brief Test for operator* quaternion */ TEST(Quaternion, OperatorQuaternionMultiply) { - s2e::math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); - s2e::math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); + math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); + math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); - s2e::math::Quaternion result = q1 * q2; + math::Quaternion result = q1 * q2; const double accuracy = 1.0e-7; EXPECT_NEAR(-0.3928446703722, result[0], accuracy); @@ -446,10 +446,10 @@ TEST(Quaternion, OperatorQuaternionMultiply) { * @brief Test for operator* scalar */ TEST(Quaternion, OperatorScalarMultiply) { - s2e::math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); + math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); double scalar = 2.3; - s2e::math::Quaternion result = scalar * q; + math::Quaternion result = scalar * q; const double accuracy = 1.0e-7; EXPECT_NEAR(q[0] * 2.3, result[0], accuracy); diff --git a/src/math_physics/math/test_s2e_math.cpp b/src/math_physics/math/test_s2e_math.cpp index 7a293b967..949751a3b 100644 --- a/src/math_physics/math/test_s2e_math.cpp +++ b/src/math_physics/math/test_s2e_math.cpp @@ -14,18 +14,18 @@ TEST(S2eMath, WrapTo2Pi) { const double accuracy = 1.0e-7; double input_angle_rad = 0.0; - double wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); + double wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(0.0, wrapped_angle_rad, accuracy); input_angle_rad = -1.0e-5; - wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); - EXPECT_NEAR(s2e::math::tau + input_angle_rad, wrapped_angle_rad, accuracy); + wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + EXPECT_NEAR(math::tau + input_angle_rad, wrapped_angle_rad, accuracy); - input_angle_rad = s2e::math::tau + 1.0e-5; - wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); + input_angle_rad = math::tau + 1.0e-5; + wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); - input_angle_rad = 10 * s2e::math::tau + 1.0e-5; - wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); + input_angle_rad = 10 * math::tau + 1.0e-5; + wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); } diff --git a/src/math_physics/math/test_vector.cpp b/src/math_physics/math/test_vector.cpp index e920dc0b8..5f636960d 100644 --- a/src/math_physics/math/test_vector.cpp +++ b/src/math_physics/math/test_vector.cpp @@ -13,7 +13,7 @@ TEST(Vector, ConstructorWithNumber) { const size_t N = 6; double initialize_value = 2.0; - s2e::math::Vector v(initialize_value); + math::Vector v(initialize_value); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(initialize_value, v[i]); @@ -26,7 +26,7 @@ TEST(Vector, ConstructorWithNumber) { */ TEST(Vector, GetLength) { const size_t N = 6; - s2e::math::Vector v; + math::Vector v; EXPECT_EQ(N, v.GetLength()); } @@ -37,8 +37,8 @@ TEST(Vector, GetLength) { TEST(Vector, OperatorPlusEqual) { const size_t N = 6; double initialize_value = 2.0; - s2e::math::Vector v(initialize_value); - s2e::math::Vector adding; + math::Vector v(initialize_value); + math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); @@ -60,8 +60,8 @@ TEST(Vector, OperatorPlusEqual) { TEST(Vector, OperatorMinusEqual) { const size_t N = 6; double initialize_value = 2.0; - s2e::math::Vector v(initialize_value); - s2e::math::Vector subtracting; + math::Vector v(initialize_value); + math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); @@ -82,7 +82,7 @@ TEST(Vector, OperatorMinusEqual) { */ TEST(Vector, OperatorMultiplyEqual) { const size_t N = 6; - s2e::math::Vector v; + math::Vector v; double multiplying = 2.0; for (size_t i = 0; i < N; i++) { @@ -104,7 +104,7 @@ TEST(Vector, OperatorMultiplyEqual) { */ TEST(Vector, OperatorDivideEqual) { const size_t N = 6; - s2e::math::Vector v; + math::Vector v; double dividing = 3.0; for (size_t i = 0; i < N; i++) { @@ -126,13 +126,13 @@ TEST(Vector, OperatorDivideEqual) { */ TEST(Vector, OperatorNegative) { const size_t N = 6; - s2e::math::Vector v; + math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); } - s2e::math::Vector v_negative = -v; + math::Vector v_negative = -v; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -147,7 +147,7 @@ TEST(Vector, OperatorNegative) { */ TEST(Vector, FillUp) { const size_t N = 6; - s2e::math::Vector v; + math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); @@ -171,14 +171,14 @@ TEST(Vector, FillUp) { TEST(Vector, OperatorPlus) { const size_t N = 6; double initialize_value = 2.0; - s2e::math::Vector v(initialize_value); - s2e::math::Vector adding; + math::Vector v(initialize_value); + math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); } - s2e::math::Vector added = v + adding; + math::Vector added = v + adding; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -195,14 +195,14 @@ TEST(Vector, OperatorPlus) { TEST(Vector, OperatorMinus) { const size_t N = 6; double initialize_value = 2.0; - s2e::math::Vector v(initialize_value); - s2e::math::Vector subtracting; + math::Vector v(initialize_value); + math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); } - s2e::math::Vector subtracted = v - subtracting; + math::Vector subtracted = v - subtracting; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -218,8 +218,8 @@ TEST(Vector, OperatorMinus) { */ TEST(Vector, InnerProduct) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; for (size_t i = 0; i < N; i++) { a[i] = double(i + 1); @@ -235,8 +235,8 @@ TEST(Vector, InnerProduct) { */ TEST(Vector, InnerProductZero) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -255,8 +255,8 @@ TEST(Vector, InnerProductZero) { */ TEST(Vector, OuterProductZero) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -266,7 +266,7 @@ TEST(Vector, OuterProductZero) { b[1] = 0.0; b[2] = 0.0; - s2e::math::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(0.0, result[i]); @@ -278,8 +278,8 @@ TEST(Vector, OuterProductZero) { */ TEST(Vector, OuterProductX) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -289,7 +289,7 @@ TEST(Vector, OuterProductX) { b[1] = 1.0; b[2] = 0.0; - s2e::math::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(-1.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -301,8 +301,8 @@ TEST(Vector, OuterProductX) { */ TEST(Vector, OuterProductY) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -312,7 +312,7 @@ TEST(Vector, OuterProductY) { b[1] = 0.0; b[2] = 0.0; - s2e::math::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(1.0, result[1]); @@ -324,8 +324,8 @@ TEST(Vector, OuterProductY) { */ TEST(Vector, OuterProductZ) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -335,7 +335,7 @@ TEST(Vector, OuterProductZ) { b[1] = 1.0; b[2] = 0.0; - s2e::math::Vector<3> result = OuterProduct(a, b); + math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -347,7 +347,7 @@ TEST(Vector, OuterProductZ) { */ TEST(Vector, CalcNorm) { const size_t N = 10; - s2e::math::Vector v(1.0); + math::Vector v(1.0); double norm = v.CalcNorm(); @@ -364,9 +364,9 @@ TEST(Vector, CalcNorm) { */ TEST(Vector, Normalize) { const size_t N = 5; - s2e::math::Vector v(1.0); + math::Vector v(1.0); - s2e::math::Vector normalized = v.CalcNormalizedVector(); + math::Vector normalized = v.CalcNormalizedVector(); for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -381,8 +381,8 @@ TEST(Vector, Normalize) { */ TEST(Vector, CalcAngleTwoVectors90deg) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -394,7 +394,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * s2e::math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); } /** @@ -402,7 +402,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { */ TEST(Vector, CalcAngleTwoVectors0deg) { const size_t N = 3; - s2e::math::Vector a; + math::Vector a; a[0] = 1.0; a[1] = 0.0; @@ -410,7 +410,7 @@ TEST(Vector, CalcAngleTwoVectors0deg) { double angle_rad = CalcAngleTwoVectors_rad(a, a); - EXPECT_DOUBLE_EQ(0.0 * s2e::math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(0.0 * math::deg_to_rad, angle_rad); } /** @@ -418,8 +418,8 @@ TEST(Vector, CalcAngleTwoVectors0deg) { */ TEST(Vector, CalcAngleTwoVectors45deg) { const size_t N = 3; - s2e::math::Vector a; - s2e::math::Vector b; + math::Vector a; + math::Vector b; a[0] = 0.0; a[1] = 1.0; @@ -431,7 +431,7 @@ TEST(Vector, CalcAngleTwoVectors45deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(45.0 * s2e::math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(45.0 * math::deg_to_rad, angle_rad); } /** @@ -439,11 +439,11 @@ TEST(Vector, CalcAngleTwoVectors45deg) { */ TEST(Vector, GenerateOrthogonalUnitVector) { const size_t N = 3; - s2e::math::Vector a(1.0); + math::Vector a(1.0); - s2e::math::Vector b = GenerateOrthogonalUnitVector(a); + math::Vector b = GenerateOrthogonalUnitVector(a); double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * s2e::math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); } diff --git a/src/math_physics/numerical_integration/dormand_prince_5.hpp b/src/math_physics/numerical_integration/dormand_prince_5.hpp index 90e5fb413..0e5ff40e6 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5.hpp @@ -33,10 +33,10 @@ class DormandPrince5 : public EmbeddedRungeKutta { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - s2e::math::Vector CalcInterpolationState(const double sigma) const override; + math::Vector CalcInterpolationState(const double sigma) const override; private: - std::vector> coefficients_; //!< Coefficients to calculate interpolation weights + std::vector> coefficients_; //!< Coefficients to calculate interpolation weights /** * @fn CalcInterpolationWeights * @brief Calculate weights for interpolation diff --git a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp index 3dc53411c..8a5bbb55e 100644 --- a/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp +++ b/src/math_physics/numerical_integration/dormand_prince_5_implementation.hpp @@ -75,7 +75,7 @@ DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde this->rk_matrix_[6][5] = 11.0 / 84.0; // Interpolation coefficients - s2e::math::Vector<5> coefficients_temp; + math::Vector<5> coefficients_temp; coefficients_temp[0] = 11282082432.0; coefficients_temp[1] = -32272833064.0; coefficients_temp[2] = 34969693132.0; @@ -123,10 +123,10 @@ DormandPrince5::DormandPrince5(const double step_width, const InterfaceOde } template -s2e::math::Vector DormandPrince5::CalcInterpolationState(const double sigma) const { +math::Vector DormandPrince5::CalcInterpolationState(const double sigma) const { std::vector interpolation_weights = CalcInterpolationWeights(sigma); - s2e::math::Vector interpolation_state = this->previous_state_; + math::Vector interpolation_state = this->previous_state_; for (size_t i = 0; i < this->number_of_stages_; i++) { interpolation_state = interpolation_state + (sigma * this->step_width_ * interpolation_weights[i]) * this->slope_[i]; } diff --git a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp index 1a73d0775..f4e794a0f 100644 --- a/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp +++ b/src/math_physics/numerical_integration/embedded_runge_kutta_implementation.hpp @@ -14,15 +14,15 @@ void EmbeddedRungeKutta::Integrate() { this->CalcSlope(); this->previous_state_ = this->current_state_; - s2e::math::Vector lower_current_state = this->current_state_; //!< eta in the equation - s2e::math::Vector higher_current_state = this->current_state_; //!< eta_hat in the equation + math::Vector lower_current_state = this->current_state_; //!< eta in the equation + math::Vector higher_current_state = this->current_state_; //!< eta_hat in the equation for (size_t i = 0; i < this->number_of_stages_; i++) { lower_current_state = lower_current_state + this->weights_[i] * this->step_width_ * this->slope_[i]; higher_current_state = higher_current_state + higher_order_weights_[i] * this->step_width_ * this->slope_[i]; } // Error evaluation - s2e::math::Vector truncation_error = lower_current_state - higher_current_state; + math::Vector truncation_error = lower_current_state - higher_current_state; local_truncation_error_ = truncation_error.CalcNorm(); // State update diff --git a/src/math_physics/numerical_integration/interface_ode.hpp b/src/math_physics/numerical_integration/interface_ode.hpp index a050119b9..fada6e5b0 100644 --- a/src/math_physics/numerical_integration/interface_ode.hpp +++ b/src/math_physics/numerical_integration/interface_ode.hpp @@ -24,7 +24,7 @@ class InterfaceOde { * @param [in] state: State vector * @return Differentiated value of state vector */ - virtual s2e::math::Vector DerivativeFunction(const double independent_variable, const s2e::math::Vector& state) const = 0; + virtual math::Vector DerivativeFunction(const double independent_variable, const math::Vector& state) const = 0; }; } // namespace s2e::numerical_integration diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index e125ec810..461bfa225 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -44,7 +44,7 @@ class NumericalIntegrator { * @fn SetState * @brief Set state information */ - inline void SetState(const double independent_variable, const s2e::math::Vector& state) { + inline void SetState(const double independent_variable, const math::Vector& state) { current_independent_variable_ = independent_variable; current_state_ = state; previous_state_ = state; @@ -54,7 +54,7 @@ class NumericalIntegrator { * @fn GetState * @brief Return current state vector */ - inline const s2e::math::Vector& GetState() const { return current_state_; } + inline const math::Vector& GetState() const { return current_state_; } /** * @fn CalcInterpolationState @@ -62,7 +62,7 @@ class NumericalIntegrator { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - virtual s2e::math::Vector CalcInterpolationState(const double sigma) const = 0; + virtual math::Vector CalcInterpolationState(const double sigma) const = 0; protected: // Settings @@ -71,8 +71,8 @@ class NumericalIntegrator { // States const InterfaceOde& ode_; //!< Ordinary differential equation double current_independent_variable_; //!< Latest value of independent variable - s2e::math::Vector current_state_; //!< Latest state vector - s2e::math::Vector previous_state_; //!< Previous state vector + math::Vector current_state_; //!< Latest state vector + math::Vector previous_state_; //!< Previous state vector }; } // namespace s2e::numerical_integration diff --git a/src/math_physics/numerical_integration/ode_examples.hpp b/src/math_physics/numerical_integration/ode_examples.hpp index f248f3d3b..98ee43d63 100644 --- a/src/math_physics/numerical_integration/ode_examples.hpp +++ b/src/math_physics/numerical_integration/ode_examples.hpp @@ -13,11 +13,11 @@ namespace s2e::numerical_integration { class ExampleLinearOde : public InterfaceOde<1> { public: - s2e::math::Vector<1> DerivativeFunction(const double time_s, const s2e::math::Vector<1>& state) const { + math::Vector<1> DerivativeFunction(const double time_s, const math::Vector<1>& state) const { UNUSED(time_s); UNUSED(state); - s2e::math::Vector<1> output(1.0); + math::Vector<1> output(1.0); return output; } }; @@ -35,11 +35,11 @@ class ExampleQuadraticOde : public InterfaceOde<1> { * @param [in] state: State vector * @return Differentiated value of state vector */ - virtual s2e::math::Vector<1> DerivativeFunction(const double time_s, const s2e::math::Vector<1>& state) const { + virtual math::Vector<1> DerivativeFunction(const double time_s, const math::Vector<1>& state) const { UNUSED(time_s); UNUSED(state); - s2e::math::Vector<1> output(0.0); + math::Vector<1> output(0.0); output[0] = 2.0 * time_s; return output; } @@ -51,10 +51,10 @@ class ExampleQuadraticOde : public InterfaceOde<1> { */ class Example1dPositionVelocityOde : public InterfaceOde<2> { public: - virtual s2e::math::Vector<2> DerivativeFunction(const double time_s, const s2e::math::Vector<2>& state) const { + virtual math::Vector<2> DerivativeFunction(const double time_s, const math::Vector<2>& state) const { UNUSED(time_s); - s2e::math::Vector<2> output(0.0); + math::Vector<2> output(0.0); output[0] = state[1]; output[1] = 0.0; return output; @@ -67,10 +67,10 @@ class Example1dPositionVelocityOde : public InterfaceOde<2> { */ class Example2dTwoBodyOrbitOde : public InterfaceOde<4> { public: - virtual s2e::math::Vector<4> DerivativeFunction(const double time_s, const s2e::math::Vector<4>& state) const { + virtual math::Vector<4> DerivativeFunction(const double time_s, const math::Vector<4>& state) const { UNUSED(time_s); - s2e::math::Vector<4> output(0.0); + math::Vector<4> output(0.0); output[0] = state[2]; output[1] = state[3]; double denominator = pow(state[0] * state[0] + state[1] * state[1], 3.0 / 2.0); diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index 2bb9a2505..d2072d4cb 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -46,7 +46,7 @@ class RungeKutta : public NumericalIntegrator { std::vector nodes_; //!< Nodes vector for general RK (c vector in the equation) std::vector weights_; //!< Weights vector for general RK (b vector in the equation) std::vector> rk_matrix_; //!< Runge-Kutta matrix for general RK (a matrix in the equation) - std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) + std::vector> slope_; //!< Slope vector for general RK (k vector in the equation) /** * @fn CalcSlope diff --git a/src/math_physics/numerical_integration/runge_kutta_4.hpp b/src/math_physics/numerical_integration/runge_kutta_4.hpp index d52106039..d8925f51c 100644 --- a/src/math_physics/numerical_integration/runge_kutta_4.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_4.hpp @@ -45,7 +45,7 @@ class RungeKutta4 : public RungeKutta { } // We did not implement the interpolation for RK4 - s2e::math::Vector CalcInterpolationState(const double sigma) const override { + math::Vector CalcInterpolationState(const double sigma) const override { UNUSED(sigma); return this->current_state_; } diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp index e22c969eb..11a4a51ff 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg.hpp @@ -29,7 +29,7 @@ class RungeKuttaFehlberg : public EmbeddedRungeKutta { * @param [in] sigma: Sigma value (0 < sigma < 1) for interpolation * @return : interpolated state x(t0 + sigma * h) */ - s2e::math::Vector CalcInterpolationState(const double sigma) const override; + math::Vector CalcInterpolationState(const double sigma) const override; private: /** diff --git a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp index 5ccfe3941..c9887034c 100644 --- a/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_fehlberg_implementation.hpp @@ -64,15 +64,15 @@ RungeKuttaFehlberg::RungeKuttaFehlberg(const double step_width, const Interfa } template -s2e::math::Vector RungeKuttaFehlberg::CalcInterpolationState(const double sigma) const { +math::Vector RungeKuttaFehlberg::CalcInterpolationState(const double sigma) const { // Calc k7 (slope after state update) - s2e::math::Vector state_7 = + math::Vector state_7 = this->previous_state_ + this->step_width_ * (1.0 / 6.0 * this->slope_[0] + 1.0 / 6.0 * this->slope_[4] + 2.0 / 3.0 * this->slope_[5]); - s2e::math::Vector k7 = this->ode_.DerivativeFunction(this->current_independent_variable_, state_7); + math::Vector k7 = this->ode_.DerivativeFunction(this->current_independent_variable_, state_7); std::vector interpolation_weights = CalcInterpolationWeights(sigma); - s2e::math::Vector interpolation_state = this->previous_state_; + math::Vector interpolation_state = this->previous_state_; for (size_t i = 0; i < this->number_of_stages_; i++) { interpolation_state = interpolation_state + (sigma * this->step_width_ * interpolation_weights[i]) * this->slope_[i]; } diff --git a/src/math_physics/numerical_integration/runge_kutta_template.hpp b/src/math_physics/numerical_integration/runge_kutta_template.hpp index 296fe302f..0a34a7485 100644 --- a/src/math_physics/numerical_integration/runge_kutta_template.hpp +++ b/src/math_physics/numerical_integration/runge_kutta_template.hpp @@ -22,10 +22,10 @@ void RungeKutta::Integrate() { template void RungeKutta::CalcSlope() { - slope_.assign(number_of_stages_, s2e::math::Vector(0.0)); + slope_.assign(number_of_stages_, math::Vector(0.0)); for (size_t i = 0; i < number_of_stages_; i++) { - s2e::math::Vector state = this->current_state_; + math::Vector state = this->current_state_; for (size_t j = 0; j < i; j++) { state = state + rk_matrix_[i][j] * this->step_width_ * slope_[j]; } diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index b2571ba5c..2223a9a9b 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -18,7 +18,7 @@ TEST(NUMERICAL_INTEGRATION, Constructor) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); - s2e::math::Vector<1> state = linear_ode.GetState(); + math::Vector<1> state = linear_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); } @@ -30,7 +30,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - s2e::math::Vector<1> state = rk4_ode.GetState(); + math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -51,7 +51,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - s2e::math::Vector<1> state = rkf_ode.GetState(); + math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -72,7 +72,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - s2e::math::Vector<1> state = dp5_ode.GetState(); + math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -93,7 +93,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); - s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -115,7 +115,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, s2e::numerical_integration::NumericalIntegrationMethod::kRkf); - s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -141,7 +141,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, s2e::numerical_integration::NumericalIntegrationMethod::kDp5); - s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -166,7 +166,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - s2e::math::Vector<1> state = rk4_ode.GetState(); + math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -187,7 +187,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - s2e::math::Vector<1> state = rkf_ode.GetState(); + math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -208,7 +208,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - s2e::math::Vector<1> state = rkf_ode.GetState(); + math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); rkf_ode.Integrate(); @@ -237,7 +237,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - s2e::math::Vector<1> state = dp5_ode.GetState(); + math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -258,7 +258,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - s2e::math::Vector<1> state = dp5_ode.GetState(); + math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); dp5_ode.Integrate(); @@ -287,12 +287,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { s2e::numerical_integration::Example1dPositionVelocityOde ode; s2e::numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); - s2e::math::Vector<2> initial_state(0.0); + math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rk4_ode.SetState(0.0, initial_state); - s2e::math::Vector<2> state = rk4_ode.GetState(); + math::Vector<2> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -301,7 +301,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { rk4_ode.Integrate(); } state = rk4_ode.GetState(); - s2e::math::Vector<2> estimated_result(0.0); + math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -317,12 +317,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { s2e::numerical_integration::Example1dPositionVelocityOde ode; s2e::numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); - s2e::math::Vector<2> initial_state(0.0); + math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rkf_ode.SetState(0.0, initial_state); - s2e::math::Vector<2> state = rkf_ode.GetState(); + math::Vector<2> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -331,7 +331,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { rkf_ode.Integrate(); } state = rkf_ode.GetState(); - s2e::math::Vector<2> estimated_result(0.0); + math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -347,12 +347,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { s2e::numerical_integration::Example1dPositionVelocityOde ode; s2e::numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); - s2e::math::Vector<2> initial_state(0.0); + math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; dp5_ode.SetState(0.0, initial_state); - s2e::math::Vector<2> state = dp5_ode.GetState(); + math::Vector<2> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -361,7 +361,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { dp5_ode.Integrate(); } state = dp5_ode.GetState(); - s2e::math::Vector<2> estimated_result(0.0); + math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -379,7 +379,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - s2e::math::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -389,9 +389,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - s2e::math::Vector<4> state_rk4 = rk4_ode.GetState(); - s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); - s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rk4 = rk4_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -409,8 +409,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - s2e::math::Vector<3> initial_position(0.0); - s2e::math::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -449,7 +449,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - s2e::math::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.9; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -459,9 +459,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - s2e::math::Vector<4> state_rk4 = rk4_ode.GetState(); - s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); - s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rk4 = rk4_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -479,8 +479,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - s2e::math::Vector<3> initial_position(0.0); - s2e::math::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -518,7 +518,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - s2e::math::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -527,8 +527,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); - s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -543,8 +543,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - s2e::math::Vector<3> initial_position(0.0); - s2e::math::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; @@ -613,7 +613,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - s2e::math::Vector<4> initial_state(0.0); + math::Vector<4> initial_state(0.0); const double eccentricity = 0.8; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -622,8 +622,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); - s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); + math::Vector<4> state_rkf = rkf_ode.GetState(); + math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -638,8 +638,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - s2e::math::Vector<3> initial_position(0.0); - s2e::math::Vector<3> initial_velocity(0.0); + math::Vector<3> initial_position(0.0); + math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; diff --git a/src/math_physics/optics/gaussian_beam_base.cpp b/src/math_physics/optics/gaussian_beam_base.cpp index 0cfc5e40b..10b9745c8 100644 --- a/src/math_physics/optics/gaussian_beam_base.cpp +++ b/src/math_physics/optics/gaussian_beam_base.cpp @@ -30,19 +30,19 @@ void GaussianBeamBase::SetTotalPower_W(const double total_power_W) { total_power_W_ = total_power_W; } -void GaussianBeamBase::SetPointingVector_i(const s2e::math::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } +void GaussianBeamBase::SetPointingVector_i(const math::Vector<3> pointing_vector_i) { pointing_vector_i_ = pointing_vector_i; } -void GaussianBeamBase::SetBeamWaistPosition_i_m(const s2e::math::Vector<3> position_beam_waist_i_m) { position_beam_waist_i_m_ = position_beam_waist_i_m; } +void GaussianBeamBase::SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m) { position_beam_waist_i_m_ = position_beam_waist_i_m; } double GaussianBeamBase::CalcBeamWidthRadius_m(double distance_from_beam_waist_m) { - double rayleigh_length_m = s2e::math::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; + double rayleigh_length_m = math::pi * radius_beam_waist_m_ * radius_beam_waist_m_ / wavelength_m_; double beam_width_radius_m = radius_beam_waist_m_ * sqrt(1.0 + std::pow((distance_from_beam_waist_m / rayleigh_length_m), 2.0)); return beam_width_radius_m; } double GaussianBeamBase::CalcIntensity_W_m2(double distance_from_beam_waist_m, double deviation_from_optical_axis_m) { double beam_width_radius_m = CalcBeamWidthRadius_m(distance_from_beam_waist_m); - double peak_intensity_W_m2 = (2.0 * total_power_W_) / (s2e::math::pi * beam_width_radius_m * beam_width_radius_m); + double peak_intensity_W_m2 = (2.0 * total_power_W_) / (math::pi * beam_width_radius_m * beam_width_radius_m); double gaussian_dist = std::exp((-2.0 * deviation_from_optical_axis_m * deviation_from_optical_axis_m) / (beam_width_radius_m * beam_width_radius_m)); double intensity_W_m2 = peak_intensity_W_m2 * gaussian_dist; diff --git a/src/math_physics/optics/gaussian_beam_base.hpp b/src/math_physics/optics/gaussian_beam_base.hpp index f9fd71432..cf79b46e3 100644 --- a/src/math_physics/optics/gaussian_beam_base.hpp +++ b/src/math_physics/optics/gaussian_beam_base.hpp @@ -50,12 +50,12 @@ class GaussianBeamBase { * @fn SetPointingVector_i * @brief Set pointing direction vector in the inertial frame */ - void SetPointingVector_i(const s2e::math::Vector<3> pointing_vector_i); + void SetPointingVector_i(const math::Vector<3> pointing_vector_i); /** * @fn SetBeamWaistPosition_i_m * @brief Set position of beam waist in the inertial frame [m] (Not used?) */ - void SetBeamWaistPosition_i_m(const s2e::math::Vector<3> position_beam_waist_i_m); + void SetBeamWaistPosition_i_m(const math::Vector<3> position_beam_waist_i_m); // Getter /** @@ -77,12 +77,12 @@ class GaussianBeamBase { * @fn GetPointingVector_i * @brief Return pointing direction vector in the inertial frame */ - inline const s2e::math::Vector<3> GetPointingVector_i() const { return pointing_vector_i_; } + inline const math::Vector<3> GetPointingVector_i() const { return pointing_vector_i_; } /** * @fn GetBeamWaistPosition_i_m * @brief Return position of beam waist in the inertial frame [m] (Not used?) */ - inline const s2e::math::Vector<3> GetBeamWaistPosition_i_m() const { return position_beam_waist_i_m_; } + inline const math::Vector<3> GetBeamWaistPosition_i_m() const { return position_beam_waist_i_m_; } // Calculate functions /** @@ -105,8 +105,8 @@ class GaussianBeamBase { double wavelength_m_; //!< Wavelength [m] double radius_beam_waist_m_; //!< Radius of beam waist [m] double total_power_W_; //!< Total power [W] - s2e::math::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame - s2e::math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) + math::Vector<3> pointing_vector_i_{0.0}; //!< Pointing direction vector in the inertial frame + math::Vector<3> position_beam_waist_i_m_{0.0}; //!< Position of beam waist in the inertial frame [m] (Not used?) }; } // namespace s2e::optics diff --git a/src/math_physics/orbit/interpolation_orbit.cpp b/src/math_physics/orbit/interpolation_orbit.cpp index db373629a..8f35bcbae 100644 --- a/src/math_physics/orbit/interpolation_orbit.cpp +++ b/src/math_physics/orbit/interpolation_orbit.cpp @@ -12,13 +12,13 @@ InterpolationOrbit::InterpolationOrbit(const size_t degree) { time.assign(degree, -1.0); std::vector position; position.assign(degree, 0.0); - s2e::math::Interpolation temp(time, position); + math::Interpolation temp(time, position); for (size_t axis = 0; axis < 3; axis++) { interpolation_position_.push_back(temp); } } -bool InterpolationOrbit::PushAndPopData(const double time, const s2e::math::Vector<3> position) { +bool InterpolationOrbit::PushAndPopData(const double time, const math::Vector<3> position) { bool result; for (size_t axis = 0; axis < 3; axis++) { result = interpolation_position_[axis].PushAndPopData(time, position[axis]); @@ -29,8 +29,8 @@ bool InterpolationOrbit::PushAndPopData(const double time, const s2e::math::Vect return true; } -s2e::math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { - s2e::math::Vector<3> output_position; +math::Vector<3> InterpolationOrbit::CalcPositionWithTrigonometric(const double time, const double period) const { + math::Vector<3> output_position; for (size_t axis = 0; axis < 3; axis++) { output_position[axis] = interpolation_position_[axis].CalcTrigonometric(time, period); } diff --git a/src/math_physics/orbit/interpolation_orbit.hpp b/src/math_physics/orbit/interpolation_orbit.hpp index 1443ec959..77719eac7 100644 --- a/src/math_physics/orbit/interpolation_orbit.hpp +++ b/src/math_physics/orbit/interpolation_orbit.hpp @@ -32,7 +32,7 @@ class InterpolationOrbit { * @param [in] time: time of the new data * @param [in] position: Satellite position of the new data */ - bool PushAndPopData(const double time, const s2e::math::Vector<3> position); + bool PushAndPopData(const double time, const math::Vector<3> position); /** * @fn CalcPositionWithTrigonometric @@ -41,7 +41,7 @@ class InterpolationOrbit { * @param [in] period: Characteristic period * @return Calculated position */ - s2e::math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; + math::Vector<3> CalcPositionWithTrigonometric(const double time, const double period = 0.0) const; // Getters /** @@ -68,7 +68,7 @@ class InterpolationOrbit { } private: - std::vector interpolation_position_; // 3D vector of interpolation + std::vector interpolation_position_; // 3D vector of interpolation }; } // namespace s2e::orbit diff --git a/src/math_physics/orbit/kepler_orbit.cpp b/src/math_physics/orbit/kepler_orbit.cpp index 1f7630ef2..2f49fd5db 100644 --- a/src/math_physics/orbit/kepler_orbit.cpp +++ b/src/math_physics/orbit/kepler_orbit.cpp @@ -24,10 +24,10 @@ void KeplerOrbit::CalcConstKeplerMotion() { mean_motion_rad_s_ = sqrt(gravity_constant_m3_s2_ / a_m3); // DCM - s2e::math::Matrix<3, 3> dcm_arg_perigee = s2e::math::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); - s2e::math::Matrix<3, 3> dcm_inclination = s2e::math::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); - s2e::math::Matrix<3, 3> dcm_raan = s2e::math::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); - s2e::math::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; + math::Matrix<3, 3> dcm_arg_perigee = math::MakeRotationMatrixZ(-1.0 * oe_.GetArgPerigee_rad()); + math::Matrix<3, 3> dcm_inclination = math::MakeRotationMatrixX(-1.0 * oe_.GetInclination_rad()); + math::Matrix<3, 3> dcm_raan = math::MakeRotationMatrixZ(-1.0 * oe_.GetRaan_rad()); + math::Matrix<3, 3> dcm_inc_arg = dcm_inclination * dcm_arg_perigee; dcm_inplane_to_i_ = dcm_raan * dcm_inc_arg; } @@ -39,12 +39,12 @@ void KeplerOrbit::CalcOrbit(double time_jday) { double dt_s = (time_jday - oe_.GetEpoch_jday()) * (24.0 * 60.0 * 60.0); double mean_anomaly_rad = mean_motion_rad_s_ * dt_s; - double l_rad = s2e::math::WrapTo2Pi(mean_anomaly_rad); + double l_rad = math::WrapTo2Pi(mean_anomaly_rad); // Solve Kepler Equation double eccentric_anomaly_rad; eccentric_anomaly_rad = SolveKeplerNewtonMethod(e, l_rad, 1.0e-5, 10); - double u_rad = s2e::math::WrapTo2Pi(eccentric_anomaly_rad); + double u_rad = math::WrapTo2Pi(eccentric_anomaly_rad); // Calc position and velocity in the plane double cos_u = cos(u_rad); @@ -52,12 +52,12 @@ void KeplerOrbit::CalcOrbit(double time_jday) { double a_sqrt_e_m = a_m * sqrt(1.0 - e * e); double e_cos_u = 1.0 - e * cos_u; - s2e::math::Vector<3> pos_inplane_m; + math::Vector<3> pos_inplane_m; pos_inplane_m[0] = a_m * (cos_u - e); pos_inplane_m[1] = a_sqrt_e_m * sin_u; pos_inplane_m[2] = 0.0; - s2e::math::Vector<3> vel_inplane_m_s; + math::Vector<3> vel_inplane_m_s; vel_inplane_m_s[0] = -1.0 * a_m * n_rad_s * sin_u / e_cos_u; vel_inplane_m_s[1] = n_rad_s * a_sqrt_e_m * cos_u / e_cos_u; vel_inplane_m_s[2] = 0.0; diff --git a/src/math_physics/orbit/kepler_orbit.hpp b/src/math_physics/orbit/kepler_orbit.hpp index 7a12ca760..efe4e7f5c 100644 --- a/src/math_physics/orbit/kepler_orbit.hpp +++ b/src/math_physics/orbit/kepler_orbit.hpp @@ -47,22 +47,22 @@ class KeplerOrbit { * @fn GetPosition_i_m * @brief Return position vector in the inertial frame [m] */ - inline const s2e::math::Vector<3> GetPosition_i_m() const { return position_i_m_; } + inline const math::Vector<3> GetPosition_i_m() const { return position_i_m_; } /** * @fn GetVelocity_i_m_s * @brief Return velocity vector in the inertial frame [m/s] */ - inline const s2e::math::Vector<3> GetVelocity_i_m_s() const { return velocity_i_m_s_; } + inline const math::Vector<3> GetVelocity_i_m_s() const { return velocity_i_m_s_; } protected: - s2e::math::Vector<3> position_i_m_; //!< Position vector in the inertial frame [m] - s2e::math::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] + math::Vector<3> position_i_m_; //!< Position vector in the inertial frame [m] + math::Vector<3> velocity_i_m_s_; //!< Velocity vector in the inertial frame [m/s] private: double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] OrbitalElements oe_; //!< Orbital elements double mean_motion_rad_s_; //!< Mean motion of the orbit [rad/s] - s2e::math::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame + math::Matrix<3, 3> dcm_inplane_to_i_; //!< Direction cosine matrix from the in-plane frame to the inertial frame /** * @fn CalcConstKeplerMotion diff --git a/src/math_physics/orbit/orbital_elements.cpp b/src/math_physics/orbit/orbital_elements.cpp index 69817f80f..d02a324e2 100644 --- a/src/math_physics/orbit/orbital_elements.cpp +++ b/src/math_physics/orbit/orbital_elements.cpp @@ -24,20 +24,20 @@ OrbitalElements::OrbitalElements(const double epoch_jday, const double semi_majo epoch_jday_(epoch_jday) {} // initialize with position and velocity -OrbitalElements::OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, - const s2e::math::Vector<3> velocity_i_m_s) { +OrbitalElements::OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s) { CalcOeFromPosVel(gravity_constant_m3_s2, time_jday, position_i_m, velocity_i_m_s); } OrbitalElements::~OrbitalElements() {} // Private Function -void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, - const s2e::math::Vector<3> velocity_i_m_s) { +void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s) { // common variables double r_m = position_i_m.CalcNorm(); double v2_m2_s2 = InnerProduct(velocity_i_m_s, velocity_i_m_s); - s2e::math::Vector<3> h; //!< angular momentum vector + math::Vector<3> h; //!< angular momentum vector h = OuterProduct(position_i_m, velocity_i_m_s); double h_norm = h.CalcNorm(); @@ -45,7 +45,7 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons semi_major_axis_m_ = gravity_constant_m3_s2 / (2.0 * gravity_constant_m3_s2 / r_m - v2_m2_s2); // inclination - s2e::math::Vector<3> h_direction = h.CalcNormalizedVector(); + math::Vector<3> h_direction = h.CalcNormalizedVector(); inclination_rad_ = acos(h_direction[2]); // RAAN @@ -77,10 +77,10 @@ void OrbitalElements::CalcOeFromPosVel(const double gravity_constant_m3_s2, cons // true anomaly f_rad and eccentric anomaly u_rad double phi_rad = atan2(y_p_m, x_p_m); double f_rad = phi_rad - arg_perigee_rad_; - f_rad = s2e::math::WrapTo2Pi(f_rad); + f_rad = math::WrapTo2Pi(f_rad); double u_rad = atan2(r_m * sin(f_rad) / sqrt(1.0 - eccentricity_ * eccentricity_), r_m * cos(f_rad) + semi_major_axis_m_ * eccentricity_); - u_rad = s2e::math::WrapTo2Pi(u_rad); + u_rad = math::WrapTo2Pi(u_rad); // epoch t0 double n_rad_s = sqrt(gravity_constant_m3_s2 / pow(semi_major_axis_m_, 3.0)); diff --git a/src/math_physics/orbit/orbital_elements.hpp b/src/math_physics/orbit/orbital_elements.hpp index b177fda41..4b4e3f04f 100644 --- a/src/math_physics/orbit/orbital_elements.hpp +++ b/src/math_physics/orbit/orbital_elements.hpp @@ -41,8 +41,8 @@ class OrbitalElements { * @param[in] position_i_m: Position vector in the inertial frame [m] * @param[in] velocity_i_m_s: Velocity vector in the inertial frame [m/s] */ - OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, - const s2e::math::Vector<3> velocity_i_m_s); + OrbitalElements(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s); /** * @fn ~OrbitalElements * @brief Destructor @@ -102,8 +102,8 @@ class OrbitalElements { * @param[in] position_i_m: Position vector in the inertial frame [m] * @param[in] velocity_i_m_s: Velocity vector in the inertial frame [m/s] */ - void CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const s2e::math::Vector<3> position_i_m, - const s2e::math::Vector<3> velocity_i_m_s); + void CalcOeFromPosVel(const double gravity_constant_m3_s2, const double time_jday, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s); }; } // namespace s2e::orbit diff --git a/src/math_physics/orbit/relative_orbit_models.cpp b/src/math_physics/orbit/relative_orbit_models.cpp index 0c6e358b6..0ec2ebfff 100644 --- a/src/math_physics/orbit/relative_orbit_models.cpp +++ b/src/math_physics/orbit/relative_orbit_models.cpp @@ -6,8 +6,8 @@ namespace s2e::orbit { -s2e::math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { - s2e::math::Matrix<6, 6> system_matrix; +math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravity_constant_m3_s2) { + math::Matrix<6, 6> system_matrix; double n = sqrt(gravity_constant_m3_s2 / pow(orbit_radius_m, 3)); system_matrix[0][0] = 0.0; @@ -50,8 +50,8 @@ s2e::math::Matrix<6, 6> CalcHillSystemMatrix(double orbit_radius_m, double gravi return system_matrix; } -s2e::math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_s2, double elapsed_time_s) { - s2e::math::Matrix<6, 6> stm; +math::Matrix<6, 6> CalcHcwStm(double orbit_radius_m, double gravity_constant_m3_s2, double elapsed_time_s) { + math::Matrix<6, 6> stm; double n = sqrt(gravity_constant_m3_s2 / pow(orbit_radius_m, 3)); double t = elapsed_time_s; diff --git a/src/math_physics/orbit/relative_orbit_models.hpp b/src/math_physics/orbit/relative_orbit_models.hpp index 1a12bf634..eb5c42a45 100644 --- a/src/math_physics/orbit/relative_orbit_models.hpp +++ b/src/math_physics/orbit/relative_orbit_models.hpp @@ -31,7 +31,7 @@ enum class StmModel { kHcw = 0 }; * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] * @return System matrix */ -s2e::math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const double gravity_constant_m3_s2); +math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const double gravity_constant_m3_s2); // STMs /** @@ -42,7 +42,7 @@ s2e::math::Matrix<6, 6> CalcHillSystemMatrix(const double orbit_radius_m, const * @param [in] elapsed_time_s: Elapsed time [s] * @return State Transition Matrix */ -s2e::math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); +math::Matrix<6, 6> CalcHcwStm(const double orbit_radius_m, const double gravity_constant_m3_s2, const double elapsed_time_s); } // namespace s2e::orbit diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index f83a3f0cf..1e05a13fb 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -33,7 +33,7 @@ TEST(InterpolationOrbit, PushAndPop) { EXPECT_EQ(degree, interpolation_orbit.GetDegree()); for (size_t i = 0; i < degree; i++) { double time = (double)i; - s2e::math::Vector<3> position{i * 2.0}; + math::Vector<3> position{i * 2.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_TRUE(ret); } @@ -46,7 +46,7 @@ TEST(InterpolationOrbit, PushAndPop) { // False test double time = 2.0; - s2e::math::Vector<3> position{-100.0}; + math::Vector<3> position{-100.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_FALSE(ret); } diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp index f2d30c96c..370e5ba63 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.cpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.cpp @@ -12,22 +12,22 @@ namespace s2e::planet_rotation { -s2e::math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s) { - s2e::math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); - s2e::math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); +math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { + math::Matrix<3, 3> dcm_eci2me = CalcDcmEciToMeanEarth(moon_position_eci_m, moon_velocity_eci_m_s); + math::Matrix<3, 3> dcm_me2pa = CalcDcmMeanEarthToPrincipalAxis(); return dcm_me2pa * dcm_eci2me; } -s2e::math::Matrix<3, 3> CalcDcmEciToMeanEarth(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s) { - s2e::math::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); +math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s) { + math::Vector<3> me_ex_eci = -1.0 * moon_position_eci_m.CalcNormalizedVector(); - s2e::math::Vector<3> moon_orbit_norm = s2e::math::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); - s2e::math::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); + math::Vector<3> moon_orbit_norm = math::OuterProduct(moon_position_eci_m, moon_velocity_eci_m_s); + math::Vector<3> me_ez_eci = moon_orbit_norm.CalcNormalizedVector(); - s2e::math::Vector<3> me_ey_eci = s2e::math::OuterProduct(me_ez_eci, me_ex_eci); + math::Vector<3> me_ey_eci = math::OuterProduct(me_ez_eci, me_ex_eci); - s2e::math::Matrix<3, 3> dcm_eci_to_me; + math::Matrix<3, 3> dcm_eci_to_me; for (size_t i = 0; i < 3; i++) { dcm_eci_to_me[0][i] = me_ex_eci[i]; dcm_eci_to_me[1][i] = me_ey_eci[i]; @@ -37,14 +37,14 @@ s2e::math::Matrix<3, 3> CalcDcmEciToMeanEarth(const s2e::math::Vector<3> moon_po return dcm_eci_to_me; } -s2e::math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { +math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis() { // The correction values between DE430 Principal Axis and Mean Earth frame - const double theta_x_rad = 0.285 * s2e::math::arcsec_to_rad; - const double theta_y_rad = 78.580 * s2e::math::arcsec_to_rad; - const double theta_z_rad = 67.573 * s2e::math::arcsec_to_rad; + const double theta_x_rad = 0.285 * math::arcsec_to_rad; + const double theta_y_rad = 78.580 * math::arcsec_to_rad; + const double theta_z_rad = 67.573 * math::arcsec_to_rad; - s2e::math::Matrix<3, 3> dcm_me_pa = - s2e::math::MakeRotationMatrixZ(theta_z_rad) * s2e::math::MakeRotationMatrixY(theta_y_rad) * s2e::math::MakeRotationMatrixX(theta_x_rad); + math::Matrix<3, 3> dcm_me_pa = + math::MakeRotationMatrixZ(theta_z_rad) * math::MakeRotationMatrixY(theta_y_rad) * math::MakeRotationMatrixX(theta_x_rad); return dcm_me_pa; } diff --git a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp index d7e3eff30..b46dbd7e1 100644 --- a/src/math_physics/planet_rotation/moon_rotation_utilities.hpp +++ b/src/math_physics/planet_rotation/moon_rotation_utilities.hpp @@ -20,7 +20,7 @@ namespace s2e::planet_rotation { * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -s2e::math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s); +math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmEciToMeanEarth @@ -28,13 +28,13 @@ s2e::math::Matrix<3, 3> CalcDcmEciToPrincipalAxis(const s2e::math::Vector<3> moo * @param[in] moon_position_eci_m: Moon position vector @ ECI frame [m] * @param[in] moon_velocity_eci_m_s: Moon velocity vector @ ECI frame [m/s] */ -s2e::math::Matrix<3, 3> CalcDcmEciToMeanEarth(const s2e::math::Vector<3> moon_position_eci_m, const s2e::math::Vector<3> moon_velocity_eci_m_s); +math::Matrix<3, 3> CalcDcmEciToMeanEarth(const math::Vector<3> moon_position_eci_m, const math::Vector<3> moon_velocity_eci_m_s); /** * @fn CalcDcmMeToPrincipalAxis * @brief Calculate DCM from ME (Mean Earth) moon fixed frame to PA (Principal Axis) moon fixed frame */ -s2e::math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); +math::Matrix<3, 3> CalcDcmMeanEarthToPrincipalAxis(); } // namespace s2e::planet_rotation diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index 9f05aff9f..ee7db5bb6 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -15,7 +15,7 @@ * @brief Class to calculate random wark value */ template -class RandomWalk : public s2e::math::OrdinaryDifferentialEquation { +class RandomWalk : public math::OrdinaryDifferentialEquation { public: /** * @fn RandomWalk @@ -24,7 +24,7 @@ class RandomWalk : public s2e::math::OrdinaryDifferentialEquation { * @param standard_deviation: Standard deviation of random walk excitation noise * @param limit: Limit of random walk */ - RandomWalk(double step_width_s, const s2e::math::Vector& standard_deviation, const s2e::math::Vector& limit); + RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit); /** * @fn DerivativeFunction @@ -33,10 +33,10 @@ class RandomWalk : public s2e::math::OrdinaryDifferentialEquation { * @param [in] state: State vector * @param [out] rhs: Differentiated value of state vector */ - virtual void DerivativeFunction(double x, const s2e::math::Vector& state, s2e::math::Vector& rhs); + virtual void DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs); private: - s2e::math::Vector limit_; //!< Limit of random walk + math::Vector limit_; //!< Limit of random walk s2e::randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index 4c4a77ca6..68fa37eea 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -10,8 +10,8 @@ #include template -RandomWalk::RandomWalk(double step_width_s, const s2e::math::Vector& standard_deviation, const s2e::math::Vector& limit) - : s2e::math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { +RandomWalk::RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit) + : math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { // Set standard deviation for (size_t i = 0; i < N; ++i) { normal_randomizer_[i].SetParameters(0.0, standard_deviation[i], s2e::randomization::global_randomization.MakeSeed()); @@ -19,7 +19,7 @@ RandomWalk::RandomWalk(double step_width_s, const s2e::math::Vector& stand } template -void RandomWalk::DerivativeFunction(double x, const s2e::math::Vector& state, s2e::math::Vector& rhs) { +void RandomWalk::DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs) { UNUSED(x); // TODO: consider the x is really need for this function for (size_t i = 0; i < N; ++i) { diff --git a/src/setting_file_reader/c2a_command_database.cpp b/src/setting_file_reader/c2a_command_database.cpp index 72e8bdf18..76572c1ab 100644 --- a/src/setting_file_reader/c2a_command_database.cpp +++ b/src/setting_file_reader/c2a_command_database.cpp @@ -95,61 +95,61 @@ void DecodeC2aCommandArgument(const C2aArgumentType type, const std::string argu case C2aArgumentType::kUint8t: { size_param = 1; uint8_t argument = (uint8_t)std::stoul(argument_string); // TODO: 範囲外処理 - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kUint16t: { size_param = 2; uint16_t argument = (uint16_t)std::stoul(argument_string); // TODO: 範囲外処理 - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kUint32t: { size_param = 4; uint32_t argument = (uint32_t)std::stoul(argument_string); // TODO: 範囲外処理 - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kUint64t: { size_param = 8; uint64_t argument = std::stoul(argument_string); - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kInt8t: { size_param = 1; int8_t argument = (int8_t)std::stoi(argument_string); // TODO: 範囲外処理 - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kInt16t: { size_param = 2; int16_t argument = (int16_t)std::stoi(argument_string); // TODO: 範囲外処理 - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kInt32t: { size_param = 4; int32_t argument = std::stoi(argument_string); - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kInt64t: { size_param = 8; int64_t argument = std::stol(argument_string); - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kFloat: { size_param = 4; float argument = std::stof(argument_string); - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kDouble: { size_param = 8; double argument = std::stod(argument_string); - endian_memcpy(param, &argument, size_param); + utilities::endian_memcpy(param, &argument, size_param); break; } case C2aArgumentType::kRaw: { diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index 9397057ad..4ca4c0769 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -120,8 +120,8 @@ std::vector IniAccess::ReadVectorDouble(const char* section_name, const return data; } -void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, s2e::math::Quaternion& data) { - s2e::math::Quaternion temp; +void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, math::Quaternion& data) { + math::Quaternion temp; double norm = 0.0; for (int i = 0; i < 4; i++) { // Read Quaternion as new format diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index 48ff1acd1..9af1a3a8a 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -112,7 +112,7 @@ class IniAccess { * @param[out] data: Read vector type data */ template - void ReadVector(const char* section_name, const char* key_name, s2e::math::Vector& data); + void ReadVector(const char* section_name, const char* key_name, math::Vector& data); /** * @fn ReadStrVector * @brief Read list of string type @@ -128,7 +128,7 @@ class IniAccess { * @param[in] key_name: Key name * @param[out] data: Read quaternion data */ - void ReadQuaternion(const char* section_name, const char* key_name, s2e::math::Quaternion& data); + void ReadQuaternion(const char* section_name, const char* key_name, math::Quaternion& data); /** * @fn ReadChar * @brief Read characters data @@ -210,7 +210,7 @@ class IniAccess { }; template -void IniAccess::ReadVector(const char* section_name, const char* key_name, s2e::math::Vector& data) { +void IniAccess::ReadVector(const char* section_name, const char* key_name, math::Vector& data) { for (size_t i = 0; i < NumElement; i++) { std::stringstream c_name; c_name << key_name << "(" << i << ")"; diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index 5340c30dc..d6f230149 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -37,7 +37,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con double latitude_deg = conf.ReadDouble(Section, "latitude_deg"); double longitude_deg = conf.ReadDouble(Section, "longitude_deg"); double height_m = conf.ReadDouble(Section, "height_m"); - geodetic_position_ = s2e::geodesy::GeodeticPosition(latitude_deg * s2e::math::deg_to_rad, longitude_deg * s2e::math::deg_to_rad, height_m); + geodetic_position_ = s2e::geodesy::GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); position_ecef_m_ = geodetic_position_.CalcEcefPosition(); elevation_limit_angle_deg_ = conf.ReadDouble(Section, "elevation_limit_angle_deg"); @@ -48,23 +48,23 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con void GroundStation::LogSetup(logger::Logger& logger) { logger.AddLogList(this); } void GroundStation::Update(const environment::EarthRotation& celestial_rotation, const Spacecraft& spacecraft) { - s2e::math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); + math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); position_i_m_ = dcm_ecef2eci * position_ecef_m_; is_visible_[spacecraft.GetSpacecraftId()] = CalcIsVisible(spacecraft.GetDynamics().GetOrbit().GetPosition_ecef_m()); } -bool GroundStation::CalcIsVisible(const s2e::math::Vector<3> spacecraft_position_ecef_m) { - s2e::math::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); +bool GroundStation::CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m) { + math::Quaternion q_ecef_to_ltc = geodetic_position_.GetQuaternionXcxfToLtc(); - s2e::math::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] + math::Vector<3> sc_pos_ltc = q_ecef_to_ltc.FrameConversion(spacecraft_position_ecef_m - position_ecef_m_); // Satellite position in LTC frame [m] sc_pos_ltc = sc_pos_ltc.CalcNormalizedVector(); - s2e::math::Vector<3> dir_gs_to_zenith = s2e::math::Vector<3>(0); + math::Vector<3> dir_gs_to_zenith = math::Vector<3>(0); dir_gs_to_zenith[2] = 1; // Judge the satellite position angle is over the minimum elevation - if (dot(sc_pos_ltc, dir_gs_to_zenith) > sin(elevation_limit_angle_deg_ * s2e::math::deg_to_rad)) { + if (dot(sc_pos_ltc, dir_gs_to_zenith) > sin(elevation_limit_angle_deg_ * math::deg_to_rad)) { return true; } else { return false; diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index 0020cffc5..0a8cfb0e5 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -48,7 +48,7 @@ void InitializedMonteCarloParameters::GetRandomizedScalar(double& destination) c } } -void InitializedMonteCarloParameters::GetRandomizedQuaternion(s2e::math::Quaternion& destination) const { +void InitializedMonteCarloParameters::GetRandomizedQuaternion(math::Quaternion& destination) const { if (randomization_type_ == kNoRandomization) { ; } else if (4 > randomized_value_.size()) { @@ -122,7 +122,7 @@ void InitializedMonteCarloParameters::GenerateCartesianNormal() { } } -void InitializedMonteCarloParameters::CalcCircularNormalUniform(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, +void InitializedMonteCarloParameters::CalcCircularNormalUniform(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_min, double theta_max) { // r follows normal distribution, and θ follows uniform distribution in Circular frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -136,7 +136,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalUniform() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - s2e::math::Vector temp_vec; + math::Vector temp_vec; CalcCircularNormalUniform(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1]); randomized_value_.clear(); @@ -145,7 +145,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalUniform() { } } -void InitializedMonteCarloParameters::CalcCircularNormalNormal(s2e::math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, +void InitializedMonteCarloParameters::CalcCircularNormalNormal(math::Vector<2>& destination, double r_mean, double r_sigma, double theta_mean, double theta_sigma) { // r and θ follow normal distribution in Circular frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -159,7 +159,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - s2e::math::Vector temp_vec; + math::Vector temp_vec; CalcCircularNormalNormal(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1]); randomized_value_.clear(); @@ -168,7 +168,7 @@ void InitializedMonteCarloParameters::GenerateCircularNormalNormal() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(s2e::math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, +void InitializedMonteCarloParameters::CalcSphericalNormalUniformUniform(math::Vector<3>& destination, double r_mean, double r_sigma, double theta_min, double theta_max, double phi_min, double phi_max) { // r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame double r = InitializedMonteCarloParameters::Generate1dNormal(r_mean, r_sigma); @@ -184,7 +184,7 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalUniformUniform() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < dim) { throw "Config parameters dimension unmatched."; } - s2e::math::Vector temp_vec; + math::Vector temp_vec; CalcSphericalNormalUniformUniform(temp_vec, mean_or_min_[0], sigma_or_max_[0], mean_or_min_[1], sigma_or_max_[1], mean_or_min_[2], sigma_or_max_[2]); @@ -194,29 +194,29 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalUniformUniform() { } } -void InitializedMonteCarloParameters::CalcSphericalNormalNormal(s2e::math::Vector<3>& destination, const s2e::math::Vector<3>& mean_vec) { +void InitializedMonteCarloParameters::CalcSphericalNormalNormal(math::Vector<3>& destination, const math::Vector<3>& mean_vec) { // r and θ follow normal distribution, and mean vector angle φ follows uniform distribution [0,2*pi] - s2e::math::Vector<3> mean_vec_dir; + math::Vector<3> mean_vec_dir; mean_vec_dir = 1.0 / mean_vec.CalcNorm() * mean_vec; // Unit vector of mean vector direction - s2e::math::Vector<3> x_axis(0.0), y_axis(0.0); + math::Vector<3> x_axis(0.0), y_axis(0.0); x_axis[0] = 1.0; y_axis[1] = 1.0; - s2e::math::Vector<3> op_x = OuterProduct(mean_vec_dir, x_axis); - s2e::math::Vector<3> op_y = OuterProduct(mean_vec_dir, y_axis); + math::Vector<3> op_x = OuterProduct(mean_vec_dir, x_axis); + math::Vector<3> op_y = OuterProduct(mean_vec_dir, y_axis); // An unit vector perpendicular with the mean vector // In case of the mean vector is parallel with X or Y axis, selecting the axis depend on the norm of outer product - s2e::math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); + math::Vector<3> normal_unit_vec = op_x.CalcNorm() > op_y.CalcNorm() ? op_x = op_x.CalcNormalizedVector() : op_y = op_y.CalcNormalizedVector(); - double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, s2e::math::tau); - s2e::math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, + double rotation_angle_of_normal_unit_vec = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); + math::Quaternion rotation_of_normal_unit_vec(mean_vec_dir, -rotation_angle_of_normal_unit_vec); // Use opposite sign to rotate the vector (not the frame) - s2e::math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation + math::Vector<3> rotation_axis = rotation_of_normal_unit_vec.FrameConversion(normal_unit_vec); // Axis of mean vector rotation double rotation_angle_of_mean_vec = InitializedMonteCarloParameters::Generate1dNormal(0.0, sigma_or_max_[1]); - s2e::math::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) - s2e::math::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction + math::Quaternion rotation_of_mean_vec(rotation_axis, -rotation_angle_of_mean_vec); // Use opposite sign to rotate the vector (not the frame) + math::Vector<3> ret_vec = rotation_of_mean_vec.FrameConversion(mean_vec_dir); // Complete calculation of the direction ret_vec = InitializedMonteCarloParameters::Generate1dNormal(mean_vec.CalcNorm(), sigma_or_max_[0]) * ret_vec; // multiply norm @@ -230,7 +230,7 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { if (mean_or_min_.size() < dim || sigma_or_max_.size() < 2) { throw "Config parameters dimension unmatched."; } - s2e::math::Vector temp_vec, temp_mean_vec; + math::Vector temp_vec, temp_mean_vec; for (int i = 0; i < dim; i++) { temp_mean_vec[i] = mean_or_min_[i]; } @@ -242,32 +242,32 @@ void InitializedMonteCarloParameters::GenerateSphericalNormalNormal() { } } -void InitializedMonteCarloParameters::CalcQuaternionUniform(s2e::math::Quaternion& destination) { - // Perfectly Randomized s2e::math::Quaternion - s2e::math::Vector<3> x_axis(0.0); +void InitializedMonteCarloParameters::CalcQuaternionUniform(math::Quaternion& destination) { + // Perfectly Randomized math::Quaternion + math::Vector<3> x_axis(0.0); x_axis[0] = 1.0; // A direction vector converted from the X-axis by a quaternion may follows the uniform distribution in full sphere. - s2e::math::Quaternion first_cnv; - s2e::math::Vector<3> x_axis_cnvd; + math::Quaternion first_cnv; + math::Vector<3> x_axis_cnvd; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); - double phi = InitializedMonteCarloParameters::Generate1dUniform(0, s2e::math::tau); + double phi = InitializedMonteCarloParameters::Generate1dUniform(0, math::tau); x_axis_cnvd[0] = sin(theta) * cos(phi); x_axis_cnvd[1] = sin(theta) * sin(phi); x_axis_cnvd[2] = cos(theta); double cos_angle_between = InnerProduct(x_axis, x_axis_cnvd); - s2e::math::Vector<3> op = OuterProduct(x_axis, x_axis_cnvd); + math::Vector<3> op = OuterProduct(x_axis, x_axis_cnvd); for (int i = 0; i < 3; i++) { first_cnv[i] = op[i]; } first_cnv[3] = cos_angle_between; // Generate randomized rotation angle around the X-axis - double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, s2e::math::tau); - s2e::math::Quaternion second_cnv(x_axis, rotation_angle); + double rotation_angle = InitializedMonteCarloParameters::Generate1dUniform(0.0, math::tau); + math::Quaternion second_cnv(x_axis, rotation_angle); - s2e::math::Quaternion ret_q = first_cnv * second_cnv; + math::Quaternion ret_q = first_cnv * second_cnv; for (int i = 0; i < 4; i++) { destination[i] = ret_q[i]; @@ -276,7 +276,7 @@ void InitializedMonteCarloParameters::CalcQuaternionUniform(s2e::math::Quaternio void InitializedMonteCarloParameters::GenerateQuaternionUniform() { const static int dim = 4; - s2e::math::Quaternion temp_q; + math::Quaternion temp_q; CalcQuaternionUniform(temp_q); randomized_value_.clear(); @@ -285,19 +285,19 @@ void InitializedMonteCarloParameters::GenerateQuaternionUniform() { } } -void InitializedMonteCarloParameters::CalcQuaternionNormal(s2e::math::Quaternion& destination, double theta_sigma) { +void InitializedMonteCarloParameters::CalcQuaternionNormal(math::Quaternion& destination, double theta_sigma) { // Angle from the default quaternion θ follows normal distribution // The rotation axis follows uniform distribution on full sphere - s2e::math::Vector<3> rot_axis; + math::Vector<3> rot_axis; double theta = acos(1 - (1 - (-1)) * InitializedMonteCarloParameters::Generate1dUniform(0.0, 1.0)); - double phi = InitializedMonteCarloParameters::Generate1dUniform(0, s2e::math::tau); + double phi = InitializedMonteCarloParameters::Generate1dUniform(0, math::tau); rot_axis[0] = sin(theta) * cos(phi); rot_axis[1] = sin(theta) * sin(phi); rot_axis[2] = cos(theta); double rotation_angle = InitializedMonteCarloParameters::Generate1dNormal(0.0, theta_sigma); - s2e::math::Quaternion ret_q(rot_axis, rotation_angle); + math::Quaternion ret_q(rot_axis, rotation_angle); for (int i = 0; i < 4; i++) { destination[i] = ret_q[i]; } @@ -309,7 +309,7 @@ void InitializedMonteCarloParameters::GenerateQuaternionNormal() { if (sigma_or_max_.size() < 1) { throw "Config parameters dimension unmatched."; } - s2e::math::Quaternion temp_q; + math::Quaternion temp_q; CalcQuaternionNormal(temp_q, sigma_or_max_[0]); randomized_value_.clear(); diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp index 720d678eb..348a459de 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_simulation.cpp @@ -81,12 +81,12 @@ MonteCarloSimulationExecutor* InitMonteCarloSimulation(std::string file_name) { // Read mean_or_min vector key_name = so_dot_ip_str + MonteCarloSimulationExecutor::separator_ + "mean_or_min"; - s2e::math::Vector<3> mean_or_min; + math::Vector<3> mean_or_min; ini_file.ReadVector(section, key_name.c_str(), mean_or_min); // Read sigma_or_max vector key_name = so_dot_ip_str + MonteCarloSimulationExecutor::separator_ + "sigma_or_max"; - s2e::math::Vector<3> sigma_or_max; + math::Vector<3> sigma_or_max; ini_file.ReadVector(section, key_name.c_str(), sigma_or_max); // Write randomize setting diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp index dda7abfd0..6f422e5ce 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.cpp @@ -49,7 +49,7 @@ void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterDouble(strin } void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterQuaternion(string so_name, string init_monte_carlo_parameter_name, - s2e::math::Quaternion& destination) const { + math::Quaternion& destination) const { if (!enabled_) return; { string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; diff --git a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp index 97626e47e..fdf2328dc 100644 --- a/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp +++ b/src/simulation/monte_carlo_simulation/monte_carlo_simulation_executor.hpp @@ -88,7 +88,7 @@ class MonteCarloSimulationExecutor { */ template void GetInitializedMonteCarloParameterVector(std::string so_name, std::string init_monte_carlo_parameter_name, - s2e::math::Vector& destination) const; + math::Vector& destination) const; /** * @fn GetInitializedMonteCarloParameterDouble * @brief Get randomized value and store it in dest @@ -99,7 +99,7 @@ class MonteCarloSimulationExecutor { * @brief Get randomized quaternion and store it in dest_quat */ void GetInitializedMonteCarloParameterQuaternion(std::string so_name, std::string init_monte_carlo_parameter_name, - s2e::math::Quaternion& destination) const; + math::Quaternion& destination) const; // Calculation /** @@ -128,7 +128,7 @@ class MonteCarloSimulationExecutor { * @brief Add initialized parameter */ void AddInitializedMonteCarloParameter(std::string so_name, std::string init_monte_carlo_parameter_name, - const s2e::math::Vector& mean_or_min, const s2e::math::Vector& sigma_or_max, + const math::Vector& mean_or_min, const math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type); /** @@ -140,7 +140,7 @@ class MonteCarloSimulationExecutor { template void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterVector(std::string so_name, std::string init_monte_carlo_parameter_name, - s2e::math::Vector& destination) const { + math::Vector& destination) const { if (!enabled_) return; std::string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; if (init_parameter_list_.find(name) == init_parameter_list_.end()) { @@ -153,8 +153,8 @@ void MonteCarloSimulationExecutor::GetInitializedMonteCarloParameterVector(std:: template void MonteCarloSimulationExecutor::AddInitializedMonteCarloParameter(std::string so_name, std::string init_monte_carlo_parameter_name, - const s2e::math::Vector& mean_or_min, - const s2e::math::Vector& sigma_or_max, + const math::Vector& mean_or_min, + const math::Vector& sigma_or_max, InitializedMonteCarloParameters::RandomizationType random_type) { std::string name = so_name + MonteCarloSimulationExecutor::separator_ + init_monte_carlo_parameter_name; if (init_parameter_list_.find(name) == init_parameter_list_.end()) { diff --git a/src/simulation/monte_carlo_simulation/simulation_object.cpp b/src/simulation/monte_carlo_simulation/simulation_object.cpp index 0f41bf32d..cb5f015ec 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.cpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.cpp @@ -40,7 +40,7 @@ void SimulationObject::GetInitializedMonteCarloParameterDouble(const MonteCarloS } void SimulationObject::GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, - std::string init_monte_carlo_parameter_name, s2e::math::Quaternion& destination) const { + std::string init_monte_carlo_parameter_name, math::Quaternion& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterQuaternion(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/monte_carlo_simulation/simulation_object.hpp b/src/simulation/monte_carlo_simulation/simulation_object.hpp index cb1c2df09..4273771ec 100644 --- a/src/simulation/monte_carlo_simulation/simulation_object.hpp +++ b/src/simulation/monte_carlo_simulation/simulation_object.hpp @@ -42,7 +42,7 @@ class SimulationObject { */ template void GetInitializedMonteCarloParameterVector(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - s2e::math::Vector& destination) const; + math::Vector& destination) const; /** * @fn GetInitializedMonteCarloParameterDouble @@ -56,7 +56,7 @@ class SimulationObject { * @brief Get randomized quaternion and store it in destination */ void GetInitializedMonteCarloParameterQuaternion(const MonteCarloSimulationExecutor& monte_carlo_simulator, - std::string init_monte_carlo_parameter_name, s2e::math::Quaternion& destination) const; + std::string init_monte_carlo_parameter_name, math::Quaternion& destination) const; /** * @fn SetParameters @@ -82,7 +82,7 @@ class SimulationObject { template void SimulationObject::GetInitializedMonteCarloParameterVector(const MonteCarloSimulationExecutor& monte_carlo_simulator, std::string init_monte_carlo_parameter_name, - s2e::math::Vector& destination) const { + math::Vector& destination) const { monte_carlo_simulator.GetInitializedMonteCarloParameterVector(name_, init_monte_carlo_parameter_name, destination); } diff --git a/src/simulation/multiple_spacecraft/relative_information.cpp b/src/simulation/multiple_spacecraft/relative_information.cpp index 93cd3007b..8c1465239 100644 --- a/src/simulation/multiple_spacecraft/relative_information.cpp +++ b/src/simulation/multiple_spacecraft/relative_information.cpp @@ -15,8 +15,8 @@ void RelativeInformation::Update() { for (size_t target_spacecraft_id = 0; target_spacecraft_id < dynamics_database_.size(); target_spacecraft_id++) { for (size_t reference_spacecraft_id = 0; reference_spacecraft_id < dynamics_database_.size(); reference_spacecraft_id++) { // Position - s2e::math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id] = target_sat_pos_i - reference_sat_pos_i; relative_position_list_rtn_m_[target_spacecraft_id][reference_spacecraft_id] = CalcRelativePosition_rtn_m(target_spacecraft_id, reference_spacecraft_id); @@ -26,8 +26,8 @@ void RelativeInformation::Update() { relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id].CalcNorm(); // Velocity - s2e::math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - s2e::math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); relative_velocity_list_i_m_s_[target_spacecraft_id][reference_spacecraft_id] = target_sat_vel_i - reference_sat_vel_i; relative_velocity_list_rtn_m_s_[target_spacecraft_id][reference_spacecraft_id] = CalcRelativeVelocity_rtn_m_s(target_spacecraft_id, reference_spacecraft_id); @@ -113,57 +113,57 @@ std::string RelativeInformation::GetLogValue() const { void RelativeInformation::LogSetup(logger::Logger& logger) { logger.AddLogList(this); } -s2e::math::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { +math::Quaternion RelativeInformation::CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { // Observer SC Body frame(obs_sat) -> ECI frame(i) - s2e::math::Quaternion q_reference_i2b = dynamics_database_.at(reference_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); - s2e::math::Quaternion q_reference_b2i = q_reference_i2b.Conjugate(); + math::Quaternion q_reference_i2b = dynamics_database_.at(reference_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_reference_b2i = q_reference_i2b.Conjugate(); // ECI frame(i) -> Target SC body frame(main_sat) - s2e::math::Quaternion q_target_i2b = dynamics_database_.at(target_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); + math::Quaternion q_target_i2b = dynamics_database_.at(target_spacecraft_id)->GetAttitude().GetQuaternion_i2b(); return q_target_i2b * q_reference_b2i; } -s2e::math::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { - s2e::math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; +math::Vector<3> RelativeInformation::CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { + math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite - s2e::math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); - s2e::math::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); + math::Vector<3> relative_pos_rtn = q_i2rtn.FrameConversion(relative_pos_i); return relative_pos_rtn; } -s2e::math::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { - s2e::math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); - s2e::math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; +math::Vector<3> RelativeInformation::CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) { + math::Vector<3> target_sat_pos_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> reference_sat_pos_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetPosition_i_m(); + math::Vector<3> relative_pos_i = target_sat_pos_i - reference_sat_pos_i; // RTN frame for the reference satellite - s2e::math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); + math::Quaternion q_i2rtn = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().CalcQuaternion_i2lvlh(); // Rotation vector of RTN frame - s2e::math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - s2e::math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); - s2e::math::Vector<3> rot_vec_rtn_i = cross(reference_sat_pos_i, reference_sat_vel_i); + math::Vector<3> reference_sat_vel_i = dynamics_database_.at(reference_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> target_sat_vel_i = dynamics_database_.at(target_spacecraft_id)->GetOrbit().GetVelocity_i_m_s(); + math::Vector<3> rot_vec_rtn_i = cross(reference_sat_pos_i, reference_sat_vel_i); double r2_ref = reference_sat_pos_i.CalcNorm() * reference_sat_pos_i.CalcNorm(); rot_vec_rtn_i /= r2_ref; - s2e::math::Vector<3> relative_vel_i = target_sat_vel_i - reference_sat_vel_i - cross(rot_vec_rtn_i, relative_pos_i); + math::Vector<3> relative_vel_i = target_sat_vel_i - reference_sat_vel_i - cross(rot_vec_rtn_i, relative_pos_i); - s2e::math::Vector<3> relative_vel_rtn = q_i2rtn.FrameConversion(relative_vel_i); + math::Vector<3> relative_vel_rtn = q_i2rtn.FrameConversion(relative_vel_i); return relative_vel_rtn; } void RelativeInformation::ResizeLists() { size_t size = dynamics_database_.size(); - relative_position_list_i_m_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); - relative_velocity_list_i_m_s_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); + relative_position_list_i_m_.assign(size, std::vector>(size, math::Vector<3>(0))); + relative_velocity_list_i_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); relative_distance_list_m_.assign(size, std::vector(size, 0.0)); - relative_position_list_rtn_m_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); - relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, s2e::math::Vector<3>(0))); - relative_attitude_quaternion_list_.assign(size, std::vector(size, s2e::math::Quaternion(0, 0, 0, 1))); + relative_position_list_rtn_m_.assign(size, std::vector>(size, math::Vector<3>(0))); + relative_velocity_list_rtn_m_s_.assign(size, std::vector>(size, math::Vector<3>(0))); + relative_attitude_quaternion_list_.assign(size, std::vector(size, math::Quaternion(0, 0, 0, 1))); } } // namespace s2e::simulation diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index 04423a2ed..e0dbf1a78 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -75,7 +75,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline s2e::math::Quaternion GetRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Quaternion GetRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_attitude_quaternion_list_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -84,7 +84,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline s2e::math::Vector<3> GetRelativePosition_i_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativePosition_i_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_position_list_i_m_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -93,7 +93,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline s2e::math::Vector<3> GetRelativeVelocity_i_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativeVelocity_i_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_velocity_list_i_m_s_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -111,7 +111,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline s2e::math::Vector<3> GetRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_position_list_rtn_m_[target_spacecraft_id][reference_spacecraft_id]; } /** @@ -120,7 +120,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] target_spacecraft_id: ID of target spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - inline s2e::math::Vector<3> GetRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { + inline math::Vector<3> GetRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id) const { return relative_velocity_list_rtn_m_s_[target_spacecraft_id][reference_spacecraft_id]; } @@ -136,12 +136,12 @@ class RelativeInformation : public logger::ILoggable { private: std::map dynamics_database_; //!< Dynamics database of all spacecraft - std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] - std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] - std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] - std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] + std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] + std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] + std::vector>> relative_position_list_rtn_m_; //!< Relative position list in the RTN frame in unit [m] + std::vector>> relative_velocity_list_rtn_m_s_; //!< Relative velocity list in the RTN frame in unit [m/s] std::vector> relative_distance_list_m_; //!< Relative distance list in unit [m] - std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list + std::vector> relative_attitude_quaternion_list_; //!< Relative attitude quaternion list /** * @fn CalcRelativeAttitudeQuaternion @@ -149,21 +149,21 @@ class RelativeInformation : public logger::ILoggable { * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - s2e::math::Quaternion CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + math::Quaternion CalcRelativeAttitudeQuaternion(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn CalcRelativePosition_rtn_m * @brief Calculate and return the relative position in RTN frame * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - s2e::math::Vector<3> CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + math::Vector<3> CalcRelativePosition_rtn_m(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn CalcRelativeVelocity_rtn_m_s * @brief Calculate and return the relative velocity in RTN frame * @param [in] target_spacecraft_id: ID of the spacecraft * @param [in] reference_spacecraft_id: ID of reference spacecraft */ - s2e::math::Vector<3> CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); + math::Vector<3> CalcRelativeVelocity_rtn_m_s(const size_t target_spacecraft_id, const size_t reference_spacecraft_id); /** * @fn ResizeLists diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index ebee0e571..db5899965 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -9,13 +9,13 @@ namespace s2e::simulation { -s2e::math::Vector<3> InstalledComponents::GenerateForce_b_N() { - s2e::math::Vector<3> force_b_N_(0.0); +math::Vector<3> InstalledComponents::GenerateForce_b_N() { + math::Vector<3> force_b_N_(0.0); return force_b_N_; } -s2e::math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { - s2e::math::Vector<3> torque_b_Nm_(0.0); +math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { + math::Vector<3> torque_b_Nm_(0.0); return torque_b_Nm_; } diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index f357daca3..d0a731355 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -28,14 +28,14 @@ class InstalledComponents { * @brief Return force generated by components in unit Newton in body fixed frame * @details Users need to override this function to add force generated by components */ - virtual s2e::math::Vector<3> GenerateForce_b_N(); + virtual math::Vector<3> GenerateForce_b_N(); /** * @fn GenerateTorque_b_Nm * @brief Return torque generated by components in unit Newton-meter in body fixed frame * @details Users need to override this function to add torque generated by components */ - virtual s2e::math::Vector<3> GenerateTorque_b_Nm(); + virtual math::Vector<3> GenerateTorque_b_Nm(); /** * @fn ComponentInterference diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 5eaa7c863..b52091e23 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -15,11 +15,11 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { auto conf = setting_file_reader::IniAccess(file_name); const char* section = "KINEMATIC_PARAMETERS"; - s2e::math::Vector<3> center_of_gravity_b_m; + math::Vector<3> center_of_gravity_b_m; conf.ReadVector(section, "center_of_gravity_b_m", center_of_gravity_b_m); double mass_kg = conf.ReadDouble(section, "mass_kg"); - s2e::math::Vector<9> inertia_vec; - s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2; + math::Vector<9> inertia_vec; + math::Matrix<3, 3> inertia_tensor_b_kgm2; conf.ReadVector(section, "inertia_tensor_kgm2", inertia_vec); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { @@ -112,7 +112,7 @@ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { auto conf = setting_file_reader::IniAccess(file_name); const char* section = "RESIDUAL_MAGNETIC_MOMENT"; - s2e::math::Vector<3> rmm_const_b; + math::Vector<3> rmm_const_b; conf.ReadVector(section, "rmm_constant_b_Am2", rmm_const_b); double rmm_rwdev = conf.ReadDouble(section, "rmm_random_walk_speed_Am2"); double random_walk_limit_Am2 = conf.ReadDouble(section, "rmm_random_walk_limit_Am2"); diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 9318c92e7..403487a3f 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -7,7 +7,7 @@ namespace s2e::simulation { -KinematicsParameters::KinematicsParameters(s2e::math::Vector<3> center_of_gravity_b_m, double mass_kg, s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) +KinematicsParameters::KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} } // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index c7d3db504..2a1805dc3 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -21,7 +21,7 @@ class KinematicsParameters { * @fn KinematicsParameters * @brief Constructor */ - KinematicsParameters(s2e::math::Vector<3> center_of_gravity_b_m, double mass_kg, s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2); + KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2); /** * @fn ~KinematicsParameters * @brief Destructor @@ -33,7 +33,7 @@ class KinematicsParameters { * @fn GetCenterOfGravity_b_m * @brief Return Position vector of center of gravity at body frame [m] */ - inline const s2e::math::Vector<3>& GetCenterOfGravity_b_m() const { return center_of_gravity_b_m_; } + inline const math::Vector<3>& GetCenterOfGravity_b_m() const { return center_of_gravity_b_m_; } /** * @fn GetMass_kg * @brief Return Mass of the satellite [kg] @@ -43,7 +43,7 @@ class KinematicsParameters { * @fn GetInertiaTensor_b_kgm2 * @brief Return Inertia tensor at body frame [kgm2] */ - inline const s2e::math::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } + inline const math::Matrix<3, 3>& GetInertiaTensor_b_kgm2() const { return inertia_tensor_b_kgm2_; } // Setter /** @@ -51,7 +51,7 @@ class KinematicsParameters { * @brief Set center of gravity vector at the body frame [m] * @param [in] center_of_gravity_vector_b_m: Center of gravity vector at the body frame [m] */ - inline void SetCenterOfGravityVector_b_m(const s2e::math::Vector<3> center_of_gravity_vector_b_m) { + inline void SetCenterOfGravityVector_b_m(const math::Vector<3> center_of_gravity_vector_b_m) { center_of_gravity_b_m_ = center_of_gravity_vector_b_m; } /** @@ -77,15 +77,15 @@ class KinematicsParameters { * @brief Inertia tensor at body frame * @param [in] inertia_tensor_b_kgm2: Inertia tensor at body frame [kgm2] */ - inline void SetInertiaTensor_b_kgm2(const s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2) { + inline void SetInertiaTensor_b_kgm2(const math::Matrix<3, 3> inertia_tensor_b_kgm2) { // TODO add assertion check inertia_tensor_b_kgm2_ = inertia_tensor_b_kgm2; } private: - s2e::math::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] + math::Vector<3> center_of_gravity_b_m_; //!< Position vector of center of gravity at body frame [m] double mass_kg_; //!< Mass of the satellite [kg] - s2e::math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] + math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; } // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp index f88ef8b39..0f8fc1377 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp @@ -7,7 +7,7 @@ namespace s2e::simulation { -ResidualMagneticMoment::ResidualMagneticMoment(const Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, +ResidualMagneticMoment::ResidualMagneticMoment(const math::Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, const double random_walk_limit_Am2, const double random_noise_standard_deviation_Am2) : constant_value_b_Am2_(constant_value_b_Am2_), random_walk_standard_deviation_Am2_(random_walk_standard_deviation_Am2), diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index b66d7c90d..138e8ddf0 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -20,7 +20,7 @@ class ResidualMagneticMoment { * @fn ResidualMagneticMoment * @brief Constructor */ - ResidualMagneticMoment(const Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, const double random_walk_limit_Am2, + ResidualMagneticMoment(const math::Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, const double random_walk_limit_Am2, const double random_noise_standard_deviation_Am2); /** * @fn ~ResidualMagneticMoment @@ -33,7 +33,7 @@ class ResidualMagneticMoment { * @fn GetConstantValue_b_Am2 * @brief Return Constant value of RMM at body frame [Am2] */ - inline const Vector<3>& GetConstantValue_b_Am2(void) const { return constant_value_b_Am2_; } + inline const math::Vector<3>& GetConstantValue_b_Am2(void) const { return constant_value_b_Am2_; } /** * @fn GetRandomWalkStandardDeviation_Am2 * @brief Return Random walk standard deviation of RMM [Am2] diff --git a/src/simulation/spacecraft/structure/surface.cpp b/src/simulation/spacecraft/structure/surface.cpp index 9c6c1326c..6ea2356b0 100644 --- a/src/simulation/spacecraft/structure/surface.cpp +++ b/src/simulation/spacecraft/structure/surface.cpp @@ -7,7 +7,7 @@ namespace s2e::simulation { -Surface::Surface(const s2e::math::Vector<3> position_b_m, const s2e::math::Vector<3> normal_b, const double area_m2, const double reflectivity, +Surface::Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity) : position_b_m_(position_b_m), normal_b_(normal_b), diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 01367ee95..5f9007fe4 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -20,7 +20,7 @@ class Surface { * @fn Surface * @brief Constructor */ - Surface(const s2e::math::Vector<3> position_b_m, const s2e::math::Vector<3> normal_b, const double area_m2, const double reflectivity, + Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity); /** * @fn ~Surface @@ -33,12 +33,12 @@ class Surface { * @fn GetPosition_b_m * @brief Return position vector of geometric center of the surface in body frame and meter unit */ - inline const s2e::math::Vector<3>& GetPosition_b_m(void) const { return position_b_m_; } + inline const math::Vector<3>& GetPosition_b_m(void) const { return position_b_m_; } /** * @fn GetNormal_b * @brief Return normal vector of the surface in body frame */ - inline const s2e::math::Vector<3>& GetNormal_b(void) const { return normal_b_; } + inline const math::Vector<3>& GetNormal_b(void) const { return normal_b_; } /** * @fn GetArea_m2 * @brief Return area of the surface in meter^2 unit @@ -66,13 +66,13 @@ class Surface { * @brief Set position vector of geometric center of the surface in body frame [m] * @param[in] position_b_m: Position vector of geometric center of the surface in body frame [m] */ - inline void SetPosition_b_m(const s2e::math::Vector<3> position_b_m) { position_b_m_ = position_b_m; } + inline void SetPosition_b_m(const math::Vector<3> position_b_m) { position_b_m_ = position_b_m; } /** * @fn SetNormal * @brief Set normal vector of the surface in body frame * @param[in] normal_b: Normal vector of the surface in body frame */ - inline void SetNormal_b(const s2e::math::Vector<3> normal_b) { normal_b_ = normal_b.CalcNormalizedVector(); } + inline void SetNormal_b(const math::Vector<3> normal_b) { normal_b_ = normal_b.CalcNormalizedVector(); } /** * @fn SetArea_m2 * @brief Set area of the surface @@ -107,8 +107,8 @@ class Surface { } private: - s2e::math::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] - s2e::math::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] + math::Vector<3> position_b_m_; //!< Position vector of the surface @ Body Frame [m] + math::Vector<3> normal_b_; //!< Normal unit vector of the surface @ Body Frame [-] double area_m2_; //!< Area of the surface [m2] double reflectivity_; //!< Total reflectivity for solar wavelength (1.0 - solar absorption) double specularity_; //!< Ratio of specular reflection in the total reflected light diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 0a61fea77..4a9d9e852 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -145,21 +145,21 @@ SampleComponents::SampleComponents(const dynamics::dynamics::Dynamics* dynamics, /**************/ // actuator debug output - // s2e::math::Vector mag_moment_c{0.01}; + // math::Vector mag_moment_c{0.01}; // magnetorquer_->SetOutputMagneticMoment_c_Am2(mag_moment_c); // reaction_wheel_->SetTargetTorque_rw_Nm(0.01); // reaction_wheel_->SetDriveFlag(true); // thruster_->SetDuty(0.9); // force generator debug output - // s2e::math::Vector<3> force_N; + // math::Vector<3> force_N; // force_N[0] = 1.0; // force_N[1] = 0.0; // force_N[2] = 0.0; // force_generator_->SetForce_b_N(force_N); // torque generator debug output - // s2e::math::Vector<3> torque_Nm; + // math::Vector<3> torque_Nm; // torque_Nm[0] = 0.1; // torque_Nm[1] = 0.0; // torque_Nm[2] = 0.0; From 3d87e0371b9ed642953d3e644da42f57248f1207 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Sat, 28 Sep 2024 22:30:26 +0900 Subject: [PATCH 439/456] Fix format --- src/components/base/component.cpp | 5 ++-- src/components/base/component.hpp | 8 ++--- .../base/gpio_connection_with_obc.cpp | 2 +- .../base/gpio_connection_with_obc.hpp | 2 +- src/components/base/i2c_controller.cpp | 3 +- .../i2c_target_communication_with_obc.hpp | 2 +- .../base/interface_gpio_component.hpp | 2 +- src/components/base/sensor.hpp | 8 ++--- .../base/uart_communication_with_obc.cpp | 3 +- .../base/uart_communication_with_obc.hpp | 2 +- .../example_i2c_controller_for_hils.cpp | 7 +++-- .../example_i2c_controller_for_hils.hpp | 5 ++-- .../example_serial_communication_for_hils.cpp | 7 +++-- .../example_serial_communication_for_hils.hpp | 5 ++-- .../ideal/angular_velocity_observer.cpp | 7 +++-- .../ideal/angular_velocity_observer.hpp | 9 +++--- src/components/ideal/attitude_observer.cpp | 3 +- src/components/ideal/attitude_observer.hpp | 6 ++-- src/components/ideal/force_generator.cpp | 3 +- src/components/ideal/force_generator.hpp | 9 +++--- src/components/ideal/orbit_observer.hpp | 8 ++--- src/components/ideal/torque_generator.cpp | 8 +++-- src/components/ideal/torque_generator.hpp | 9 +++--- src/components/ports/i2c_port.cpp | 2 +- src/components/ports/power_port.cpp | 2 +- src/components/ports/uart_port.cpp | 2 +- src/components/ports/uart_port.hpp | 2 +- src/components/real/aocs/gnss_receiver.cpp | 29 +++++++++++-------- src/components/real/aocs/gnss_receiver.hpp | 21 +++++++------- src/components/real/aocs/gyro_sensor.cpp | 6 ++-- src/components/real/aocs/gyro_sensor.hpp | 6 ++-- src/components/real/aocs/magnetometer.cpp | 6 ++-- src/components/real/aocs/magnetometer.hpp | 6 ++-- src/components/real/aocs/magnetorquer.cpp | 10 +++---- src/components/real/aocs/magnetorquer.hpp | 10 +++---- .../aocs/mtq_magnetometer_interference.cpp | 2 +- .../aocs/mtq_magnetometer_interference.hpp | 2 +- src/components/real/aocs/reaction_wheel.cpp | 2 +- src/components/real/aocs/reaction_wheel.hpp | 14 ++++----- .../real/aocs/reaction_wheel_jitter.cpp | 2 +- .../real/aocs/reaction_wheel_jitter.hpp | 2 +- .../real/aocs/reaction_wheel_ode.cpp | 2 +- .../real/aocs/reaction_wheel_ode.hpp | 2 +- src/components/real/aocs/star_sensor.cpp | 17 ++++++----- src/components/real/aocs/star_sensor.hpp | 4 +-- src/components/real/aocs/sun_sensor.cpp | 10 +++---- src/components/real/aocs/sun_sensor.hpp | 6 ++-- src/components/real/cdh/c2a_communication.hpp | 2 +- src/components/real/cdh/on_board_computer.cpp | 2 +- src/components/real/cdh/on_board_computer.hpp | 2 +- .../real/cdh/on_board_computer_with_c2a.cpp | 2 +- .../real/cdh/on_board_computer_with_c2a.hpp | 2 +- src/components/real/communication/antenna.cpp | 2 +- src/components/real/communication/antenna.hpp | 2 +- .../antenna_radiation_pattern.cpp | 2 +- .../antenna_radiation_pattern.hpp | 2 +- .../ground_station_calculator.cpp | 10 +++---- .../ground_station_calculator.hpp | 2 +- .../wings_command_sender_to_c2a.cpp | 2 +- .../wings_command_sender_to_c2a.hpp | 6 ++-- src/components/real/mission/telescope.cpp | 11 +++---- src/components/real/mission/telescope.hpp | 10 +++---- src/components/real/power/battery.cpp | 8 ++--- src/components/real/power/battery.hpp | 2 +- .../real/power/csv_scenario_interface.cpp | 2 +- .../real/power/csv_scenario_interface.hpp | 2 +- .../real/power/pcu_initial_study.cpp | 6 ++-- .../real/power/pcu_initial_study.hpp | 2 +- .../real/power/power_control_unit.cpp | 2 +- .../real/power/power_control_unit.hpp | 2 +- .../real/power/solar_array_panel.cpp | 19 ++++++------ .../real/power/solar_array_panel.hpp | 2 +- .../real/propulsion/simple_thruster.cpp | 6 ++-- .../real/propulsion/simple_thruster.hpp | 26 ++++++++--------- src/disturbances/air_drag.cpp | 2 +- src/disturbances/air_drag.hpp | 2 +- src/disturbances/disturbance.hpp | 2 +- src/disturbances/disturbances.cpp | 2 +- src/disturbances/disturbances.hpp | 2 +- src/disturbances/geopotential.cpp | 2 +- src/disturbances/geopotential.hpp | 2 +- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 4 +-- src/disturbances/magnetic_disturbance.hpp | 2 +- .../solar_radiation_pressure_disturbance.cpp | 2 +- .../solar_radiation_pressure_disturbance.hpp | 2 +- src/disturbances/surface_force.cpp | 2 +- src/disturbances/surface_force.hpp | 2 +- src/disturbances/third_body_gravity.cpp | 2 +- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.cpp | 2 +- src/dynamics/attitude/attitude.hpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- src/dynamics/attitude/attitude_rk4.hpp | 2 +- .../attitude_with_cantilever_vibration.cpp | 2 +- .../attitude_with_cantilever_vibration.hpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 2 +- src/dynamics/attitude/controlled_attitude.hpp | 8 ++--- src/dynamics/attitude/initialize_attitude.cpp | 2 +- src/dynamics/attitude/initialize_attitude.hpp | 2 +- ...ode_attitude_with_cantilever_vibration.hpp | 2 +- src/dynamics/dynamics.cpp | 7 +++-- src/dynamics/dynamics.hpp | 24 ++++++++------- .../orbit/encke_orbit_propagation.cpp | 2 +- .../orbit/encke_orbit_propagation.hpp | 6 ++-- src/dynamics/orbit/initialize_orbit.cpp | 5 ++-- src/dynamics/orbit/initialize_orbit.hpp | 6 ++-- .../orbit/kepler_orbit_propagation.cpp | 2 +- .../orbit/kepler_orbit_propagation.hpp | 2 +- src/dynamics/orbit/orbit.cpp | 2 +- src/dynamics/orbit/orbit.hpp | 6 ++-- src/dynamics/orbit/relative_orbit.cpp | 2 +- src/dynamics/orbit/relative_orbit.hpp | 12 ++++---- src/dynamics/orbit/rk4_orbit_propagation.cpp | 2 +- src/dynamics/orbit/rk4_orbit_propagation.hpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.cpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.hpp | 2 +- src/dynamics/thermal/heater.cpp | 2 +- src/dynamics/thermal/heater.hpp | 2 +- src/dynamics/thermal/heater_controller.cpp | 2 +- src/dynamics/thermal/heater_controller.hpp | 2 +- src/dynamics/thermal/heatload.cpp | 2 +- src/dynamics/thermal/heatload.hpp | 2 +- src/dynamics/thermal/node.cpp | 2 +- src/dynamics/thermal/node.hpp | 3 +- src/dynamics/thermal/temperature.cpp | 2 +- src/dynamics/thermal/temperature.hpp | 17 ++++++----- .../global/celestial_information.cpp | 2 +- .../global/celestial_information.hpp | 2 +- src/environment/global/clock_generator.cpp | 2 +- src/environment/global/clock_generator.hpp | 4 +-- src/environment/global/earth_rotation.cpp | 2 +- src/environment/global/earth_rotation.hpp | 2 +- src/environment/global/global_environment.cpp | 2 +- src/environment/global/global_environment.hpp | 2 +- src/environment/global/gnss_satellites.cpp | 8 ++--- src/environment/global/gnss_satellites.hpp | 19 ++++++------ .../global/hipparcos_catalogue.cpp | 2 +- .../global/hipparcos_catalogue.hpp | 2 +- src/environment/global/moon_rotation.cpp | 2 +- src/environment/global/moon_rotation.hpp | 2 +- src/environment/global/simulation_time.cpp | 2 +- src/environment/global/simulation_time.hpp | 2 +- src/environment/local/atmosphere.cpp | 2 +- src/environment/local/atmosphere.hpp | 6 ++-- src/environment/local/earth_albedo.cpp | 2 +- src/environment/local/earth_albedo.hpp | 2 +- src/environment/local/geomagnetic_field.cpp | 4 +-- src/environment/local/geomagnetic_field.hpp | 2 +- .../local/local_celestial_information.cpp | 2 +- .../local/local_celestial_information.hpp | 2 +- src/environment/local/local_environment.cpp | 4 +-- src/environment/local/local_environment.hpp | 10 +++---- .../solar_radiation_pressure_environment.cpp | 2 +- .../solar_radiation_pressure_environment.hpp | 2 +- src/logger/initialize_log.cpp | 2 +- src/logger/initialize_log.hpp | 2 +- src/logger/log_utility.hpp | 2 +- src/logger/loggable.hpp | 2 +- src/logger/logger.cpp | 2 +- src/logger/logger.hpp | 2 +- .../atmosphere/wrapper_nrlmsise00.cpp | 4 +++ .../atmosphere/wrapper_nrlmsise00.hpp | 4 +++ src/math_physics/gnss/antex_file_reader.hpp | 4 +-- src/math_physics/gnss/sp3_file_reader.hpp | 16 +++++----- .../numerical_integrator.hpp | 2 +- .../numerical_integration/runge_kutta.hpp | 2 +- .../test_runge_kutta.cpp | 4 +-- .../randomization/global_randomization.hpp | 4 +-- .../randomization/random_walk.hpp | 8 +++-- .../random_walk_template_functions.hpp | 4 +++ src/s2e.cpp | 2 +- .../c2a_command_database.cpp | 2 +- .../c2a_command_database.hpp | 2 +- .../initialize_file_access.cpp | 2 +- .../initialize_file_access.hpp | 2 +- .../wings_operation_file.cpp | 2 +- src/simulation/case/simulation_case.cpp | 2 +- src/simulation/case/simulation_case.hpp | 6 ++-- .../ground_station/ground_station.cpp | 2 +- .../ground_station/ground_station.hpp | 6 ++-- src/simulation/hils/hils_port_manager.cpp | 2 +- src/simulation/hils/hils_port_manager.hpp | 2 +- .../initialize_monte_carlo_parameters.cpp | 2 +- .../initialize_monte_carlo_parameters.hpp | 2 +- .../initialize_monte_carlo_simulation.cpp | 2 +- .../initialize_monte_carlo_simulation.hpp | 2 +- .../monte_carlo_simulation_executor.cpp | 2 +- .../monte_carlo_simulation_executor.hpp | 2 +- .../simulation_object.cpp | 2 +- .../simulation_object.hpp | 2 +- .../inter_spacecraft_communication.cpp | 2 +- .../inter_spacecraft_communication.hpp | 2 +- .../relative_information.cpp | 2 +- .../relative_information.hpp | 2 +- src/simulation/simulation_configuration.hpp | 4 +-- .../spacecraft/installed_components.cpp | 2 +- .../spacecraft/installed_components.hpp | 2 +- src/simulation/spacecraft/spacecraft.cpp | 10 +++---- src/simulation/spacecraft/spacecraft.hpp | 22 +++++++------- .../structure/initialize_structure.cpp | 2 +- .../structure/initialize_structure.hpp | 2 +- .../structure/kinematics_parameters.cpp | 2 +- .../structure/kinematics_parameters.hpp | 4 +-- .../structure/residual_magnetic_moment.cpp | 2 +- .../structure/residual_magnetic_moment.hpp | 10 +++---- .../spacecraft/structure/structure.cpp | 2 +- .../spacecraft/structure/structure.hpp | 2 +- .../spacecraft/structure/surface.cpp | 2 +- .../spacecraft/structure/surface.hpp | 4 +-- src/simulation_sample/case/sample_case.cpp | 2 +- src/simulation_sample/case/sample_case.hpp | 2 +- .../ground_station/sample_ground_station.cpp | 2 +- .../ground_station/sample_ground_station.hpp | 2 +- .../sample_ground_station_components.cpp | 2 +- .../sample_ground_station_components.hpp | 2 +- .../spacecraft/sample_components.cpp | 9 +++--- .../spacecraft/sample_components.hpp | 13 +++++---- .../spacecraft/sample_port_configuration.hpp | 2 +- .../spacecraft/sample_spacecraft.cpp | 6 ++-- .../spacecraft/sample_spacecraft.hpp | 2 +- src/utilities/com_port_interface.hpp | 2 +- src/utilities/endian.cpp | 2 +- src/utilities/endian.hpp | 2 +- src/utilities/macros.hpp | 2 +- src/utilities/quantization.hpp | 2 +- src/utilities/ring_buffer.cpp | 2 +- src/utilities/ring_buffer.hpp | 2 +- src/utilities/slip.cpp | 2 +- src/utilities/slip.hpp | 2 +- 233 files changed, 509 insertions(+), 458 deletions(-) diff --git a/src/components/base/component.cpp b/src/components/base/component.cpp index 65f9f88ae..469c4e981 100644 --- a/src/components/base/component.cpp +++ b/src/components/base/component.cpp @@ -15,7 +15,8 @@ Component::Component(const unsigned int prescaler, environment::ClockGenerator* fast_prescaler_ = (fast_prescaler > 0) ? fast_prescaler : 1; } -Component::Component(const unsigned int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const unsigned int fast_prescaler) +Component::Component(const unsigned int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, + const unsigned int fast_prescaler) : clock_generator_(clock_generator), power_port_(power_port) { clock_generator_->RegisterComponent(this); prescaler_ = (prescaler > 0) ? prescaler : 1; @@ -51,4 +52,4 @@ void Component::FastTick(const unsigned int fast_count) { } } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 25c035415..2cfc64db5 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -78,18 +78,18 @@ class Component : public ITickable { * @brief Pure virtual function used to calculate high-frequency disturbances(e.g. RW jitter) * @note Override only when high-frequency disturbances need to be calculated. */ - virtual void FastUpdate(){}; + virtual void FastUpdate() {}; /** * @fn PowerOffRoutine * @brief Pure virtual function executed when the power switch is off. */ - virtual void PowerOffRoutine(){}; + virtual void PowerOffRoutine() {}; environment::ClockGenerator* clock_generator_; //!< Clock generator - PowerPort* power_port_; //!< Power port + PowerPort* power_port_; //!< Power port }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_BASE_COMPONENT_HPP_ diff --git a/src/components/base/gpio_connection_with_obc.cpp b/src/components/base/gpio_connection_with_obc.cpp index 7b87659b0..ceae6170b 100644 --- a/src/components/base/gpio_connection_with_obc.cpp +++ b/src/components/base/gpio_connection_with_obc.cpp @@ -20,4 +20,4 @@ bool GpioConnectionWithObc::Read(const int index) { return obc_->GpioComponentRe void GpioConnectionWithObc::Write(const int index, const bool is_high) { obc_->GpioComponentWrite(port_id_[index], is_high); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/base/gpio_connection_with_obc.hpp b/src/components/base/gpio_connection_with_obc.hpp index b066b1f38..752d36d5b 100644 --- a/src/components/base/gpio_connection_with_obc.hpp +++ b/src/components/base/gpio_connection_with_obc.hpp @@ -52,6 +52,6 @@ class GpioConnectionWithObc { OnBoardComputer* obc_; //!< The communication target OBC }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_BASE_GPIO_CONNECTION_WITH_OBC_HPP_ diff --git a/src/components/base/i2c_controller.cpp b/src/components/base/i2c_controller.cpp index 400c88ae3..48a6850d7 100644 --- a/src/components/base/i2c_controller.cpp +++ b/src/components/base/i2c_controller.cpp @@ -7,7 +7,6 @@ #include #include - namespace s2e::components { I2cController::I2cController(const unsigned int hils_port_id, const unsigned int baud_rate, const unsigned int tx_buffer_size, @@ -52,4 +51,4 @@ int I2cController::SendCommand(const unsigned char length) { return hils_port_manager_->I2cControllerSend(hils_port_id_, &tx_buffer_.front(), 0, length); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/base/i2c_target_communication_with_obc.hpp b/src/components/base/i2c_target_communication_with_obc.hpp index 61a1b3e34..5fa5bf279 100644 --- a/src/components/base/i2c_target_communication_with_obc.hpp +++ b/src/components/base/i2c_target_communication_with_obc.hpp @@ -119,7 +119,7 @@ class I2cTargetCommunicationWithObc { SimulationMode simulation_mode_ = SimulationMode::kError; //!< Simulation mode - OnBoardComputer* obc_; //!< Communication target OBC + OnBoardComputer* obc_; //!< Communication target OBC simulation::HilsPortManager* hils_port_manager_; //!< HILS port manager }; diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 9df3db260..6a5d3bb75 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -18,7 +18,7 @@ class IGPIOCompo { * @fn ~IGPIOCompo * @brief Destructor */ - virtual ~IGPIOCompo(){}; + virtual ~IGPIOCompo() {}; /** * @fn GpioStateChanged diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 1091be06b..351a1275d 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -54,11 +54,11 @@ class Sensor { math::Vector Measure(const math::Vector true_value_c); private: - math::Matrix scale_factor_; //!< Scale factor matrix - math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + math::Matrix scale_factor_; //!< Scale factor matrix + math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame s2e::randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random - RandomWalk random_walk_noise_c_; //!< Random Walk + RandomWalk random_walk_noise_c_; //!< Random Walk /** * @fn Clip diff --git a/src/components/base/uart_communication_with_obc.cpp b/src/components/base/uart_communication_with_obc.cpp index 075b67944..74a7f92e6 100644 --- a/src/components/base/uart_communication_with_obc.cpp +++ b/src/components/base/uart_communication_with_obc.cpp @@ -35,7 +35,8 @@ UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int sils_port_ InitializeObcComBase(); } -UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager) +UartCommunicationWithObc::UartCommunicationWithObc(const unsigned int hils_port_id, const unsigned int baud_rate, + simulation::HilsPortManager* hils_port_manager) : hils_port_id_(hils_port_id), baud_rate_(baud_rate), hils_port_manager_(hils_port_manager) { #ifdef USE_HILS simulation_mode_ = SimulationMode::kHils; diff --git a/src/components/base/uart_communication_with_obc.hpp b/src/components/base/uart_communication_with_obc.hpp index caad9f1c9..ec887a685 100644 --- a/src/components/base/uart_communication_with_obc.hpp +++ b/src/components/base/uart_communication_with_obc.hpp @@ -109,7 +109,7 @@ class UartCommunicationWithObc { SimulationMode simulation_mode_ = SimulationMode::kError; //!< Simulation mode - OnBoardComputer* obc_; //!< Communication target OBC + OnBoardComputer* obc_; //!< Communication target OBC simulation::HilsPortManager* hils_port_manager_; //!< HILS port manager /** diff --git a/src/components/examples/example_i2c_controller_for_hils.cpp b/src/components/examples/example_i2c_controller_for_hils.cpp index c67f5fe8e..892268768 100644 --- a/src/components/examples/example_i2c_controller_for_hils.cpp +++ b/src/components/examples/example_i2c_controller_for_hils.cpp @@ -6,9 +6,10 @@ namespace s2e::components { -ExampleI2cControllerForHils::ExampleI2cControllerForHils(const int prescaler, environment::ClockGenerator* clock_generator, const unsigned int hils_port_id, - const unsigned int baud_rate, const unsigned int tx_buffer_size, - const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager) +ExampleI2cControllerForHils::ExampleI2cControllerForHils(const int prescaler, environment::ClockGenerator* clock_generator, + const unsigned int hils_port_id, const unsigned int baud_rate, + const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, + simulation::HilsPortManager* hils_port_manager) : Component(prescaler, clock_generator), I2cController(hils_port_id, baud_rate, tx_buffer_size, rx_buffer_size, hils_port_manager) {} ExampleI2cControllerForHils::~ExampleI2cControllerForHils() {} diff --git a/src/components/examples/example_i2c_controller_for_hils.hpp b/src/components/examples/example_i2c_controller_for_hils.hpp index 84537cf6a..84254633f 100644 --- a/src/components/examples/example_i2c_controller_for_hils.hpp +++ b/src/components/examples/example_i2c_controller_for_hils.hpp @@ -33,8 +33,9 @@ class ExampleI2cControllerForHils : public Component, public I2cController { * @param [in] rx_buffer_size: RX (Target to Controller) buffer size * @param [in] hils_port_manager: HILS port manager */ - ExampleI2cControllerForHils(const int prescaler, environment::ClockGenerator* clock_generator, const unsigned int hils_port_id, const unsigned int baud_rate, - const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, simulation::HilsPortManager* hils_port_manager); + ExampleI2cControllerForHils(const int prescaler, environment::ClockGenerator* clock_generator, const unsigned int hils_port_id, + const unsigned int baud_rate, const unsigned int tx_buffer_size, const unsigned int rx_buffer_size, + simulation::HilsPortManager* hils_port_manager); /** * @fn ~ExampleI2cControllerForHils * @brief Destructor diff --git a/src/components/examples/example_serial_communication_for_hils.cpp b/src/components/examples/example_serial_communication_for_hils.cpp index 3c84e0b2b..f39bc91fd 100644 --- a/src/components/examples/example_serial_communication_for_hils.cpp +++ b/src/components/examples/example_serial_communication_for_hils.cpp @@ -8,9 +8,10 @@ namespace s2e::components { -ExampleSerialCommunicationForHils::ExampleSerialCommunicationForHils(environment::ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, - const unsigned int hils_port_id, const unsigned int baud_rate, - simulation::HilsPortManager* hils_port_manager, const int mode_id) +ExampleSerialCommunicationForHils::ExampleSerialCommunicationForHils(environment::ClockGenerator* clock_generator, const int sils_port_id, + OnBoardComputer* obc, const unsigned int hils_port_id, + const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager, + const int mode_id) : Component(300, clock_generator), UartCommunicationWithObc(sils_port_id, obc, hils_port_id, baud_rate, hils_port_manager), mode_id_(mode_id) {} ExampleSerialCommunicationForHils::~ExampleSerialCommunicationForHils() {} diff --git a/src/components/examples/example_serial_communication_for_hils.hpp b/src/components/examples/example_serial_communication_for_hils.hpp index aeac14f2e..077c9fc30 100644 --- a/src/components/examples/example_serial_communication_for_hils.hpp +++ b/src/components/examples/example_serial_communication_for_hils.hpp @@ -36,8 +36,9 @@ class ExampleSerialCommunicationForHils : public Component, public UartCommunica * @param [in] hils_port_manager: HILS port manager * @param [in] mode_id: Mode ID to select sender(0) or responder(1) */ - ExampleSerialCommunicationForHils(environment::ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, const unsigned int hils_port_id, - const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager, const int mode_id); + ExampleSerialCommunicationForHils(environment::ClockGenerator* clock_generator, const int sils_port_id, OnBoardComputer* obc, + const unsigned int hils_port_id, const unsigned int baud_rate, simulation::HilsPortManager* hils_port_manager, + const int mode_id); /** * @fn ~ExampleSerialCommunicationForHils * @brief Destructor diff --git a/src/components/ideal/angular_velocity_observer.cpp b/src/components/ideal/angular_velocity_observer.cpp index 94a12c467..3b72b890b 100644 --- a/src/components/ideal/angular_velocity_observer.cpp +++ b/src/components/ideal/angular_velocity_observer.cpp @@ -9,7 +9,8 @@ namespace s2e::components { -AngularVelocityObserver::AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const dynamics::attitude::Attitude& attitude) +AngularVelocityObserver::AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, + const dynamics::attitude::Attitude& attitude) : Component(prescaler, clock_generator), Sensor(sensor_base), attitude_(attitude) {} void AngularVelocityObserver::MainRoutine(const int time_count) { @@ -34,8 +35,8 @@ std::string AngularVelocityObserver::GetLogValue() const { return str_tmp; } -AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, - const dynamics::attitude::Attitude& attitude) { +AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, + double component_step_time_s, const dynamics::attitude::Attitude& attitude) { setting_file_reader::IniAccess ini_file(file_name); int prescaler = ini_file.ReadInt("COMPONENT_BASE", "prescaler"); diff --git a/src/components/ideal/angular_velocity_observer.hpp b/src/components/ideal/angular_velocity_observer.hpp index a99c0cb13..5f8f10e22 100644 --- a/src/components/ideal/angular_velocity_observer.hpp +++ b/src/components/ideal/angular_velocity_observer.hpp @@ -28,7 +28,8 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge * @param [in] sensor_base: Sensor base information * @param [in] dynamics: Dynamics information */ - AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const dynamics::attitude::Attitude& attitude); + AngularVelocityObserver(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, + const dynamics::attitude::Attitude& attitude); /** * @fn ~AngularVelocityObserver * @brief Destructor @@ -63,7 +64,7 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge protected: math::Vector<3> angular_velocity_b_rad_s_{0.0}; //!< Observed angular velocity [rad/s] - const dynamics::attitude::Attitude& attitude_; //!< Dynamics information + const dynamics::attitude::Attitude& attitude_; //!< Dynamics information }; /** @@ -74,8 +75,8 @@ class AngularVelocityObserver : public Component, public Sensor<3>, public logge * @param [in] component_step_time_s: Component step time [sec] * @param [in] dynamics: Dynamics information */ -AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, double component_step_time_s, - const dynamics::attitude::Attitude& attitude); +AngularVelocityObserver InitializeAngularVelocityObserver(environment::ClockGenerator* clock_generator, const std::string file_name, + double component_step_time_s, const dynamics::attitude::Attitude& attitude); } // namespace s2e::components diff --git a/src/components/ideal/attitude_observer.cpp b/src/components/ideal/attitude_observer.cpp index 9d3a84165..a77c1b429 100644 --- a/src/components/ideal/attitude_observer.cpp +++ b/src/components/ideal/attitude_observer.cpp @@ -49,7 +49,8 @@ std::string AttitudeObserver::GetLogValue() const { return str_tmp; } -AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::attitude::Attitude& attitude) { +AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::attitude::Attitude& attitude) { // General setting_file_reader::IniAccess ini_file(file_name); diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 148b3aa4f..0dfd29fe7 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -28,7 +28,8 @@ class AttitudeObserver : public Component, public logger::ILoggable { * @param [in] clock_generator: Clock generator * @param [in] attitude: dynamics::attitude::Attitude information */ - AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, const dynamics::attitude::Attitude& attitude); + AttitudeObserver(const int prescaler, environment::ClockGenerator* clock_generator, const double standard_deviation_rad, + const dynamics::attitude::Attitude& attitude); /** * @fn ~AttitudeObserver @@ -77,7 +78,8 @@ class AttitudeObserver : public Component, public logger::ILoggable { * @param [in] file_name: Path to the initialize file * @param [in] attitude: dynamics::attitude::Attitude information */ -AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::attitude::Attitude& attitude); +AttitudeObserver InitializeAttitudeObserver(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::attitude::Attitude& attitude); } // namespace s2e::components diff --git a/src/components/ideal/force_generator.cpp b/src/components/ideal/force_generator.cpp index 2bac42d3f..2104ad4b9 100644 --- a/src/components/ideal/force_generator.cpp +++ b/src/components/ideal/force_generator.cpp @@ -107,7 +107,8 @@ math::Quaternion ForceGenerator::GenerateDirectionNoiseQuaternion(math::Vector<3 return error_quaternion; } -ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics) { +ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::Dynamics* dynamics) { // General setting_file_reader::IniAccess ini_file(file_name); diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index 61f94d4d9..b5d254414 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -102,9 +102,9 @@ class ForceGenerator : public Component, public logger::ILoggable { math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise - s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise - double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] + s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise + double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** * @fn GenerateDirectionNoiseQuaternion @@ -124,7 +124,8 @@ class ForceGenerator : public Component, public logger::ILoggable { * @param [in] file_name: Path to initialize file * @param [in] dynamics: Dynamics information */ -ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics); +ForceGenerator InitializeForceGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 953184fe4..6e56fdd59 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -39,8 +39,8 @@ class OrbitObserver : public Component, public logger::ILoggable { * @param [in] error_standard_deviation: Position and Velocity standard deviation noise [m, m/s] * @param [in] orbit: Orbit information */ - OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, const math::Vector<6> error_standard_deviation, - const Orbit& orbit); + OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, + const math::Vector<6> error_standard_deviation, const Orbit& orbit); /** * @fn ~AttitudeObserver @@ -83,7 +83,7 @@ class OrbitObserver : public Component, public logger::ILoggable { math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] - NoiseFrame noise_frame_; //!< Noise definition frame + NoiseFrame noise_frame_; //!< Noise definition frame s2e::randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables @@ -107,6 +107,6 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame); */ OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_IDEAL_ORBIT_OBSERVER_HPP_ diff --git a/src/components/ideal/torque_generator.cpp b/src/components/ideal/torque_generator.cpp index aef542808..c64478b6b 100644 --- a/src/components/ideal/torque_generator.cpp +++ b/src/components/ideal/torque_generator.cpp @@ -11,8 +11,9 @@ namespace s2e::components { // Constructor -TorqueGenerator::TorqueGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_Nm, - const double direction_error_standard_deviation_rad, const dynamics::Dynamics* dynamics) +TorqueGenerator::TorqueGenerator(const int prescaler, environment::ClockGenerator* clock_generator, + const double magnitude_error_standard_deviation_Nm, const double direction_error_standard_deviation_rad, + const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), magnitude_noise_(0.0, magnitude_error_standard_deviation_Nm), direction_error_standard_deviation_rad_(direction_error_standard_deviation_rad), @@ -80,7 +81,8 @@ math::Quaternion TorqueGenerator::GenerateDirectionNoiseQuaternion(math::Vector< return error_quaternion; } -TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics) { +TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::Dynamics* dynamics) { // General setting_file_reader::IniAccess ini_file(file_name); diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 1c4965b11..b94a54919 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -80,9 +80,9 @@ class TorqueGenerator : public Component, public logger::ILoggable { math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise - s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise - double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] + s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise + double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** * @fn GenerateDirectionNoiseQuaternion @@ -102,7 +102,8 @@ class TorqueGenerator : public Component, public logger::ILoggable { * @param [in] file_name: Path to initialize file * @param [in] dynamics: Dynamics information */ -TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::Dynamics* dynamics); +TorqueGenerator InitializeTorqueGenerator(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/components/ports/i2c_port.cpp b/src/components/ports/i2c_port.cpp index 8b4e1cfa1..3e4578a28 100644 --- a/src/components/ports/i2c_port.cpp +++ b/src/components/ports/i2c_port.cpp @@ -96,4 +96,4 @@ unsigned char I2cPort::ReadCommand(const unsigned char i2c_address, unsigned cha return length; } -} // namespace s2e::components \ No newline at end of file +} // namespace s2e::components \ No newline at end of file diff --git a/src/components/ports/power_port.cpp b/src/components/ports/power_port.cpp index 3964bb674..5671b94e9 100644 --- a/src/components/ports/power_port.cpp +++ b/src/components/ports/power_port.cpp @@ -77,4 +77,4 @@ void PowerPort::InitializeWithInitializeFile(const std::string file_name) { this->SetAssumedPowerConsumption_W(assumed_power_consumption_W); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/ports/uart_port.cpp b/src/components/ports/uart_port.cpp index a88f98699..6969b9361 100644 --- a/src/components/ports/uart_port.cpp +++ b/src/components/ports/uart_port.cpp @@ -39,4 +39,4 @@ int UartPort::ReadRx(unsigned char* buffer, const unsigned int offset, const uns return rx_buffer_->Read(buffer, offset, data_length); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/ports/uart_port.hpp b/src/components/ports/uart_port.hpp index eb5e6683c..2d00a0101 100644 --- a/src/components/ports/uart_port.hpp +++ b/src/components/ports/uart_port.hpp @@ -80,6 +80,6 @@ class UartPort { RingBuffer* tx_buffer_; //!< Transmit buffer (OBC-> Component) }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_PORTS_UART_PORT_HPP_ diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 033a8db5b..e6b528f94 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -13,9 +13,9 @@ namespace s2e::components { -GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, - const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, - const math::Vector<3> position_noise_standard_deviation_ecef_m, +GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, + const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, + const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) : Component(prescaler, clock_generator), @@ -28,8 +28,10 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) { for (size_t i = 0; i < 3; i++) { - position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], s2e::randomization::global_randomization.MakeSeed()); - velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], s2e::randomization::global_randomization.MakeSeed()); + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], + s2e::randomization::global_randomization.MakeSeed()); + velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], + s2e::randomization::global_randomization.MakeSeed()); } } @@ -48,8 +50,10 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) { for (size_t i = 0; i < 3; i++) { - position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], s2e::randomization::global_randomization.MakeSeed()); - velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], s2e::randomization::global_randomization.MakeSeed()); + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], + s2e::randomization::global_randomization.MakeSeed()); + velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], + s2e::randomization::global_randomization.MakeSeed()); } } @@ -291,8 +295,8 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat return gnss_receiver_param; } -GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const dynamics::Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, + const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.antenna_model, gr_param.antenna_pos_b, gr_param.quaternion_b2c, @@ -301,8 +305,9 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, cons return gnss_r; } -GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, - const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, + const std::string file_name, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); // PowerPort @@ -314,4 +319,4 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, Powe return gnss_r; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index aa2e54f09..2661d856b 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -83,8 +83,8 @@ class GnssReceiver : public Component, public logger::ILoggable { GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, - const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, - const SimulationTime* simulation_time); + const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, + const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); // Override functions for Component /** @@ -141,8 +141,8 @@ class GnssReceiver : public Component, public logger::ILoggable { // Simple position observation s2e::randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] s2e::randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] s2e::geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation @@ -156,7 +156,7 @@ class GnssReceiver : public Component, public logger::ILoggable { std::vector gnss_information_list_; //!< Information List of visible GNSS satellites // References - const dynamics::Dynamics* dynamics_; //!< Dynamics of spacecraft + const dynamics::Dynamics* dynamics_; //!< Dynamics of spacecraft const GnssSatellites* gnss_satellites_; //!< Information of GNSS satellites const SimulationTime* simulation_time_; //!< Simulation time @@ -226,8 +226,8 @@ AntennaModel SetAntennaModel(const std::string antenna_model); * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, const dynamics::Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, + const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); /** * @fn InitGnssReceiver * @brief Initialize functions for GNSS Receiver with power port @@ -239,9 +239,10 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, cons * @param [in] gnss_satellites: GNSS satellites information * @param [in] simulation_time: Simulation time information */ -GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, const std::string file_name, - const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); +GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, + const std::string file_name, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, + const SimulationTime* simulation_time); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_GNSS_RECEIVER_HPP_ diff --git a/src/components/real/aocs/gyro_sensor.cpp b/src/components/real/aocs/gyro_sensor.cpp index ac63221d7..5a019cd5a 100644 --- a/src/components/real/aocs/gyro_sensor.cpp +++ b/src/components/real/aocs/gyro_sensor.cpp @@ -13,8 +13,8 @@ GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_g const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), dynamics_(dynamics) {} -GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) +GyroSensor::GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, + const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -91,4 +91,4 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPor return gyro; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/gyro_sensor.hpp b/src/components/real/aocs/gyro_sensor.hpp index d9f262655..ab75c929e 100644 --- a/src/components/real/aocs/gyro_sensor.hpp +++ b/src/components/real/aocs/gyro_sensor.hpp @@ -46,8 +46,8 @@ class GyroSensor : public Component, public Sensor, public logge * @param [in] quaternion_b2c: Quaternion from body frame to component frame * @param [in] dynamics: Dynamics information */ - GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); + GyroSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, + const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const dynamics::Dynamics* dynamics); /** * @fn ~GyroSensor * @brief Destructor @@ -112,6 +112,6 @@ GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, int sens GyroSensor InitGyroSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const dynamics::Dynamics* dynamics); -} //namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_GYRO_SENSOR_HPP_ diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index 275d7fb1f..a709c91b1 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -16,8 +16,8 @@ Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_gen sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), geomagnetic_field_(geomagnetic_field) {} -Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) +Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, + const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -94,4 +94,4 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, Powe return magsensor; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 896f24a3b..7a52c30cd 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -46,8 +46,8 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] quaternion_b2c: Quaternion from body frame to component frame * @param [in] geomagnetic_field: Geomagnetic environment */ - Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, + const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); /** * @fn ~Magnetometer * @brief Destructor @@ -131,6 +131,6 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_MAGNETOMETER_HPP_ diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 7d1352986..2dcbe762a 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -13,8 +13,8 @@ namespace s2e::components { -Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, - const math::Matrix& scale_factor, +Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, + const math::Quaternion& quaternion_b2c, const math::Matrix& scale_factor, const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, @@ -113,8 +113,8 @@ std::string Magnetorquer::GetLogValue() const { return str_tmp; } -Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, - const GeomagneticField* geomagnetic_field) { +Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, + double component_step_time_s, const GeomagneticField* geomagnetic_field) { setting_file_reader::IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; const std::string section_name = sensor_name + std::to_string(static_cast(actuator_id)); @@ -206,4 +206,4 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, Powe return magtorquer; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index cec1294dd..f18dec450 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -134,8 +134,8 @@ class Magnetorquer : public Component, public logger::ILoggable { math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] - math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] - RandomWalk random_walk_c_Am2_; //!< Random walk noise + math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] + RandomWalk random_walk_c_Am2_; //!< Random walk noise s2e::randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment @@ -157,8 +157,8 @@ class Magnetorquer : public Component, public logger::ILoggable { * @param [in] component_step_time_s: Component step time [sec] * @param [in] geomagnetic_field: Geomegnetic environment */ -Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, double component_step_time_s, - const GeomagneticField* geomagnetic_field); +Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, + double component_step_time_s, const GeomagneticField* geomagnetic_field); /** * @fn InitMagnetorquer * @brief Initialize functions for magnetometer with power port @@ -172,6 +172,6 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, double component_step_time_s, const GeomagneticField* geomagnetic_field); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_MAGNETORQUER_HPP_ diff --git a/src/components/real/aocs/mtq_magnetometer_interference.cpp b/src/components/real/aocs/mtq_magnetometer_interference.cpp index 249c6f299..c2428b15b 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.cpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.cpp @@ -52,4 +52,4 @@ void MtqMagnetometerInterference::UpdateInterference(void) { previous_added_bias_c_nT_ = additional_bias_c_nT; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/mtq_magnetometer_interference.hpp b/src/components/real/aocs/mtq_magnetometer_interference.hpp index f468fb497..67c5f0863 100644 --- a/src/components/real/aocs/mtq_magnetometer_interference.hpp +++ b/src/components/real/aocs/mtq_magnetometer_interference.hpp @@ -40,6 +40,6 @@ class MtqMagnetometerInterference { const Magnetorquer& magnetorquer_; //!< Magnetorquer }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_MTQ_MAGNETOMETER_INTERFERENCE_HPP_ diff --git a/src/components/real/aocs/reaction_wheel.cpp b/src/components/real/aocs/reaction_wheel.cpp index 5494ca4ee..9cdbac455 100644 --- a/src/components/real/aocs/reaction_wheel.cpp +++ b/src/components/real/aocs/reaction_wheel.cpp @@ -356,4 +356,4 @@ ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, Po return rw; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index c20166028..e59f704b2 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -80,9 +80,9 @@ class ReactionWheel : public Component, public logger::ILoggable { * @param [in] drive_flag: RW drive flag * @param [in] init_velocity_rad_s: Initial value of angular velocity of RW [rad/s] */ - ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const double step_width_s, - const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, const math::Quaternion quaternion_b2c, - const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, + ReactionWheel(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, + const double step_width_s, const double rotor_inertia_kgm2, const double max_torque_Nm, const double max_velocity_rpm, + const math::Quaternion quaternion_b2c, const math::Vector<3> position_b_m, const double dead_time_s, const double time_constant_s, const std::vector friction_coefficients, const double stop_limit_angular_velocity_rad_s, const bool is_calc_jitter_enabled, const bool is_log_jitter_enabled, const int fast_prescaler, ReactionWheelJitter& rw_jitter, const bool drive_flag = false, const double init_velocity_rad_s = 0.0); @@ -182,9 +182,9 @@ class ReactionWheel : public Component, public logger::ILoggable { math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. // Parameters for control delay - const double step_width_s_; //!< step width for ReactionWheelOde [sec] - const double dead_time_s_; //!< dead time [sec] - std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration + const double step_width_s_; //!< step width for ReactionWheelOde [sec] + const double dead_time_s_; //!< dead time [sec] + std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration s2e::control_utilities::FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] // Coasting friction @@ -248,6 +248,6 @@ ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, in ReactionWheel InitReactionWheel(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, std::string file_name, double compo_update_step_s); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_HPP_ diff --git a/src/components/real/aocs/reaction_wheel_jitter.cpp b/src/components/real/aocs/reaction_wheel_jitter.cpp index e9ba604df..c7edc497f 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.cpp +++ b/src/components/real/aocs/reaction_wheel_jitter.cpp @@ -129,4 +129,4 @@ void ReactionWheelJitter::CalcCoefficients() { pow(update_interval_s_, 2.0) * pow(structural_resonance_angular_frequency_Hz_, 2.0); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel_jitter.hpp b/src/components/real/aocs/reaction_wheel_jitter.hpp index 88c228b6f..f926754dd 100644 --- a/src/components/real/aocs/reaction_wheel_jitter.hpp +++ b/src/components/real/aocs/reaction_wheel_jitter.hpp @@ -130,6 +130,6 @@ class ReactionWheelJitter { void CalcCoefficients(); }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_JITTER_HPP_ diff --git a/src/components/real/aocs/reaction_wheel_ode.cpp b/src/components/real/aocs/reaction_wheel_ode.cpp index 621b4e598..fa5b1ac69 100644 --- a/src/components/real/aocs/reaction_wheel_ode.cpp +++ b/src/components/real/aocs/reaction_wheel_ode.cpp @@ -31,4 +31,4 @@ void ReactionWheelOde::DerivativeFunction(double x, const math::Vector<1> &state rhs[0] = angular_acceleration_rad_s2_; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/reaction_wheel_ode.hpp b/src/components/real/aocs/reaction_wheel_ode.hpp index 82d3888e0..13c0b26f2 100644 --- a/src/components/real/aocs/reaction_wheel_ode.hpp +++ b/src/components/real/aocs/reaction_wheel_ode.hpp @@ -61,6 +61,6 @@ class ReactionWheelOde : public math::OrdinaryDifferentialEquation<1> { double angular_acceleration_rad_s2_ = 0.0; //!< Angular acceleration [rad/s2] }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_REACTION_WHEEL_ODE_HPP_ diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 36b47095a..be7ddd363 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -18,11 +18,12 @@ using namespace s2e::math; namespace s2e::components { -StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, - const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, - const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, - const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, - const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) +StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, + const math::Quaternion& quaternion_b2c, const double standard_deviation_orthogonal_direction, + const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, + const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, + const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, + const LocalEnvironment* local_environment) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -248,8 +249,8 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens return stt; } -StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, double component_step_time_s, - const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) { +StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, + double component_step_time_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) { setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); @@ -284,4 +285,4 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPor return stt; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index e28e0add4..8ad44ae86 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -138,7 +138,7 @@ class StarSensor : public Component, public logger::ILoggable { double capture_rate_limit_rad_s_; //!< Angular rate limit to get correct attitude [rad/s] // Observed variables - const dynamics::Dynamics* dynamics_; //!< Dynamics information + const dynamics::Dynamics* dynamics_; //!< Dynamics information const LocalEnvironment* local_environment_; //!< Local environment information // Internal functions @@ -234,6 +234,6 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, double component_step_time_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_STAR_SENSOR_HPP_ diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 15fe6210a..63a5ea09d 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -16,8 +16,8 @@ using namespace std; namespace s2e::components { -SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, - const double detectable_angle_rad, const double random_noise_standard_deviation_rad, +SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, + const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(prescaler, clock_generator), @@ -153,8 +153,8 @@ string SunSensor::GetLogValue() const { return str_tmp; } -SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, - const LocalCelestialInformation* local_celestial_information) { +SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, std::string file_name, + const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { setting_file_reader::IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; const std::string section_tmp = sensor_name + std::to_string(static_cast(ss_id)); @@ -221,4 +221,4 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* return ss; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index cd23d2d38..4d988d7ac 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -104,8 +104,8 @@ class SunSensor : public Component, public logger::ILoggable { // Noise parameters s2e::randomization::NormalRand random_noise_alpha_; //!< Normal random for alpha angle s2e::randomization::NormalRand random_noise_beta_; //!< Normal random for beta angle - double bias_noise_alpha_rad_ = 0.0; //!< Constant bias for alpha angle (Value is calculated by random number generator) - double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) + double bias_noise_alpha_rad_ = 0.0; //!< Constant bias for alpha angle (Value is calculated by random number generator) + double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) // Measured variables const SolarRadiationPressureEnvironment* srp_environment_; //!< Solar Radiation Pressure environment @@ -167,6 +167,6 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int sensor SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_AOCS_SUN_SENSOR_HPP_ diff --git a/src/components/real/cdh/c2a_communication.hpp b/src/components/real/cdh/c2a_communication.hpp index 4517a3355..ea7afef13 100644 --- a/src/components/real/cdh/c2a_communication.hpp +++ b/src/components/real/cdh/c2a_communication.hpp @@ -25,6 +25,6 @@ int OBC_C2A_I2cReadRegister(int port_id, const unsigned char i2c_address, unsign int OBC_C2A_GpioWrite(int port_id, const bool is_high); bool OBC_C2A_GpioRead(int port_id); // return false when the port_id is not used -} // namespace s2e::components +} // namespace s2e::components #endif // C2A_COMMUNICATION_H_ diff --git a/src/components/real/cdh/on_board_computer.cpp b/src/components/real/cdh/on_board_computer.cpp index ce38a4196..c661fc6d6 100644 --- a/src/components/real/cdh/on_board_computer.cpp +++ b/src/components/real/cdh/on_board_computer.cpp @@ -135,4 +135,4 @@ bool OnBoardComputer::GpioComponentRead(int port_id) { return port->DigitalRead(); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/cdh/on_board_computer.hpp b/src/components/real/cdh/on_board_computer.hpp index 91aeff65b..123066539 100644 --- a/src/components/real/cdh/on_board_computer.hpp +++ b/src/components/real/cdh/on_board_computer.hpp @@ -209,6 +209,6 @@ class OnBoardComputer : public Component { std::map gpio_ports_; //!< GPIO ports }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_CDH_OBC_HPP_ diff --git a/src/components/real/cdh/on_board_computer_with_c2a.cpp b/src/components/real/cdh/on_board_computer_with_c2a.cpp index 3c6f58d1d..639e87f5e 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.cpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.cpp @@ -259,4 +259,4 @@ int OBC_C2A_GpioWrite(int port_id, const bool is_high) { return ObcWithC2a::Gpio bool OBC_C2A_GpioRead(int port_id) { return ObcWithC2a::GpioRead_C2A(port_id); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/cdh/on_board_computer_with_c2a.hpp b/src/components/real/cdh/on_board_computer_with_c2a.hpp index 05685df17..4b3c043aa 100644 --- a/src/components/real/cdh/on_board_computer_with_c2a.hpp +++ b/src/components/real/cdh/on_board_computer_with_c2a.hpp @@ -273,6 +273,6 @@ class ObcWithC2a : public OnBoardComputer { static std::map gpio_ports_c2a_; //!< GPIO ports }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_CDH_OBC_C2A_HPP_ diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index 12f24c46b..9bb535a61 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -167,4 +167,4 @@ Antenna InitAntenna(const int antenna_id, const std::string file_name) { return antenna; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index 7419e3219..841fb55d0 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -168,6 +168,6 @@ AntennaGainModel SetAntennaGainModel(const std::string gain_model_name); */ Antenna InitAntenna(const int antenna_id, const std::string file_name); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_HPP_ diff --git a/src/components/real/communication/antenna_radiation_pattern.cpp b/src/components/real/communication/antenna_radiation_pattern.cpp index 59e1ac935..b1a3bced7 100644 --- a/src/components/real/communication/antenna_radiation_pattern.cpp +++ b/src/components/real/communication/antenna_radiation_pattern.cpp @@ -40,4 +40,4 @@ double AntennaRadiationPattern::GetGain_dBi(const double theta_rad, const double return gain_dBi_[theta_idx][phi_idx]; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/communication/antenna_radiation_pattern.hpp b/src/components/real/communication/antenna_radiation_pattern.hpp index f924fbe41..a6efac136 100644 --- a/src/components/real/communication/antenna_radiation_pattern.hpp +++ b/src/components/real/communication/antenna_radiation_pattern.hpp @@ -64,6 +64,6 @@ class AntennaRadiationPattern { std::vector> gain_dBi_; //!< Antenna gain table [dBi] }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_COMMUNICATION_ANTENNA_RADIATION_PATTERN_HPP_ diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index c3b3f9edd..8e00eeb82 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -42,8 +42,8 @@ void GroundStationCalculator::Update(const Spacecraft& spacecraft, const Antenna } // Private functions -double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, - const Antenna& ground_station_rx_antenna) { +double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, + const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dBHz = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); double margin_for_bitrate_dB = cn0_dBHz - (ebn0_dB_ + hardware_deterioration_dB_ + coding_gain_dB_) - margin_requirement_dB_; @@ -62,8 +62,8 @@ double GroundStationCalculator::CalcReceiveMarginOnGs(const dynamics::Dynamics& return cn0_dB - cn0_requirement_dB; } -double GroundStationCalculator::CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, - const Antenna& ground_station_rx_antenna) { +double GroundStationCalculator::CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, + const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { if (!spacecraft_tx_antenna.IsTransmitter() || !ground_station_rx_antenna.IsReceiver()) { // Check compatibility of transmitter and receiver return 0.0f; @@ -139,4 +139,4 @@ GroundStationCalculator InitGsCalculator(const std::string file_name) { return gs_calculator; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index 9d7551b4f..dbda8d681 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -146,6 +146,6 @@ class GroundStationCalculator : public logger::ILoggable { GroundStationCalculator InitGsCalculator(const std::string file_name); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_COMMUNICATION_GROUND_STATION_CALCULATOR_HPP_ diff --git a/src/components/real/communication/wings_command_sender_to_c2a.cpp b/src/components/real/communication/wings_command_sender_to_c2a.cpp index e075b82ae..ec6c25da0 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.cpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.cpp @@ -151,4 +151,4 @@ WingsCommandSenderToC2a InitWingsCommandSenderToC2a(environment::ClockGenerator* return WingsCommandSenderToC2a(prescaler, clock_generator, step_width_s, c2a_command_data_base_file, wings_operation_file, is_enabled); } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/communication/wings_command_sender_to_c2a.hpp b/src/components/real/communication/wings_command_sender_to_c2a.hpp index accc49546..167563cf9 100644 --- a/src/components/real/communication/wings_command_sender_to_c2a.hpp +++ b/src/components/real/communication/wings_command_sender_to_c2a.hpp @@ -24,8 +24,8 @@ class WingsCommandSenderToC2a : public Component { * @brief Constructor * @param [in] */ - WingsCommandSenderToC2a(int prescaler, environment::ClockGenerator* clock_generator, const double step_width_s, const std::string command_database_file, - const std::string operation_file, const bool is_enabled) + WingsCommandSenderToC2a(int prescaler, environment::ClockGenerator* clock_generator, const double step_width_s, + const std::string command_database_file, const std::string operation_file, const bool is_enabled) : Component(prescaler, clock_generator), c2a_command_database_(command_database_file), wings_operation_file_(operation_file), @@ -78,6 +78,6 @@ class WingsCommandSenderToC2a : public Component { WingsCommandSenderToC2a InitWingsCommandSenderToC2a(environment::ClockGenerator* clock_generator, const double compo_update_step_s, const std::string initialize_file); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_COMMUNICATION_C2A_COMMAND_SENDER_HPP_ diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index a05730683..7b704ba75 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -18,8 +18,8 @@ namespace s2e::components { Telescope::Telescope(environment::ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, - const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, - const Orbit* orbit) + const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, + const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) : Component(1, clock_generator), quaternion_b2c_(quaternion_b2c), sun_forbidden_angle_rad_(sun_forbidden_angle_rad), @@ -247,8 +247,9 @@ string Telescope::GetLogValue() const { return str_tmp; } -Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, const dynamics::attitude::Attitude* attitude, - const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, + const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, + const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { using math::pi; setting_file_reader::IniAccess Telescope_conf(file_name); @@ -288,4 +289,4 @@ Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor return telescope; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index d6c6310b5..c39a46854 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -126,7 +126,7 @@ class Telescope : public Component, public logger::ILoggable { */ void ObserveStars(); - const dynamics::attitude::Attitude* attitude_; //!< dynamics::attitude::Attitude information + const dynamics::attitude::Attitude* attitude_; //!< dynamics::attitude::Attitude information const HipparcosCatalogue* hipparcos_; //!< Star information const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information /** @@ -168,10 +168,10 @@ class Telescope : public Component, public logger::ILoggable { * @param [in] hipparcos: Star information by Hipparcos catalogue * @param [in] local_celestial_information: Local celestial information */ -Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, const dynamics::attitude::Attitude* attitude, - const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, - const Orbit* orbit = nullptr); +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, + const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, + const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_MISSION_TELESCOPE_HPP_P_ diff --git a/src/components/real/power/battery.cpp b/src/components/real/power/battery.cpp index 9637e5a23..247bf082b 100644 --- a/src/components/real/power/battery.cpp +++ b/src/components/real/power/battery.cpp @@ -10,9 +10,9 @@ namespace s2e::components { -Battery::Battery(const int prescaler, environment::ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, double cell_capacity_Ah, - const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, double cv_charge_voltage_V, - double battery_resistance_Ohm, double component_step_time_s) +Battery::Battery(const int prescaler, environment::ClockGenerator* clock_generator, int number_of_series, int number_of_parallel, + double cell_capacity_Ah, const std::vector cell_discharge_curve_coefficients, double initial_dod, double cc_charge_c_rate, + double cv_charge_voltage_V, double battery_resistance_Ohm, double component_step_time_s) : Component(prescaler, clock_generator), number_of_series_(number_of_series), number_of_parallel_(number_of_parallel), @@ -133,4 +133,4 @@ Battery InitBAT(environment::ClockGenerator* clock_generator, int bat_id, const return battery; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/power/battery.hpp b/src/components/real/power/battery.hpp index c1adf5d49..84d2edf9b 100644 --- a/src/components/real/power/battery.hpp +++ b/src/components/real/power/battery.hpp @@ -146,6 +146,6 @@ class Battery : public Component, public logger::ILoggable { */ Battery InitBAT(environment::ClockGenerator* clock_generator, int bat_id, const std::string file_name, double component_step_time_s); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_POWER_BATTERY_HPP_P_ diff --git a/src/components/real/power/csv_scenario_interface.cpp b/src/components/real/power/csv_scenario_interface.cpp index 999369a02..54ee31a01 100644 --- a/src/components/real/power/csv_scenario_interface.cpp +++ b/src/components/real/power/csv_scenario_interface.cpp @@ -95,4 +95,4 @@ double CsvScenarioInterface::GetValueFromBuffer(const std::string buffer_name, c return output; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/power/csv_scenario_interface.hpp b/src/components/real/power/csv_scenario_interface.hpp index 98dc2180d..d6c331ad9 100644 --- a/src/components/real/power/csv_scenario_interface.hpp +++ b/src/components/real/power/csv_scenario_interface.hpp @@ -80,6 +80,6 @@ class CsvScenarioInterface { static std::map buffers_; //!< Buffer }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_POWER_CSV_SCENARIO_INTERFACE_HPP_ diff --git a/src/components/real/power/pcu_initial_study.cpp b/src/components/real/power/pcu_initial_study.cpp index 5a20fb79e..b1d35c2a7 100644 --- a/src/components/real/power/pcu_initial_study.cpp +++ b/src/components/real/power/pcu_initial_study.cpp @@ -12,8 +12,8 @@ namespace s2e::components { -PcuInitialStudy::PcuInitialStudy(const int prescaler, environment::ClockGenerator* clock_generator, const std::vector saps, Battery* battery, - double component_step_time_s) +PcuInitialStudy::PcuInitialStudy(const int prescaler, environment::ClockGenerator* clock_generator, const std::vector saps, + Battery* battery, double component_step_time_s) : Component(prescaler, clock_generator), saps_(saps), battery_(battery), @@ -127,4 +127,4 @@ PcuInitialStudy InitPCU_InitialStudy(environment::ClockGenerator* clock_generato return pcu; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/power/pcu_initial_study.hpp b/src/components/real/power/pcu_initial_study.hpp index 5a8bd074b..65f5eda94 100644 --- a/src/components/real/power/pcu_initial_study.hpp +++ b/src/components/real/power/pcu_initial_study.hpp @@ -97,6 +97,6 @@ class PcuInitialStudy : public Component, public logger::ILoggable { PcuInitialStudy InitPCU_InitialStudy(environment::ClockGenerator* clock_generator, int pcu_id, const std::string file_name, const std::vector saps, Battery* battery, double component_step_time_s); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_POWER_PCU_INITIAL_STUDY_HPP_ diff --git a/src/components/real/power/power_control_unit.cpp b/src/components/real/power/power_control_unit.cpp index ce820b1c3..5ed558949 100644 --- a/src/components/real/power/power_control_unit.cpp +++ b/src/components/real/power/power_control_unit.cpp @@ -55,4 +55,4 @@ std::string PowerControlUnit::GetLogValue() const { return str_tmp; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/power/power_control_unit.hpp b/src/components/real/power/power_control_unit.hpp index d61bc397b..0e16e2547 100644 --- a/src/components/real/power/power_control_unit.hpp +++ b/src/components/real/power/power_control_unit.hpp @@ -97,6 +97,6 @@ class PowerControlUnit : public Component, public logger::ILoggable { std::map power_ports_; //!< Power port list }; -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_POWER_POWER_CONTROL_UNIT_HPP_ diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index 651e49eb2..f50959a07 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -11,9 +11,9 @@ namespace s2e::components { -SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, - const SolarRadiationPressureEnvironment* srp_environment, +SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, + int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, + double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), @@ -30,9 +30,10 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerato power_generation_W_ = 0.0; } -SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, - double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, - const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) +SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, + int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, + double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, + double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), number_of_series_(number_of_series), @@ -47,8 +48,8 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerato power_generation_W_ = 0.0; } -SolarArrayPanel::SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, - math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, +SolarArrayPanel::SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, + double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) : Component(10, clock_generator), @@ -183,4 +184,4 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id return sap; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index e77eecd3a..e684062cf 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -159,6 +159,6 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_POWER_SOLAR_ARRAY_PANEL_HPP_ diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 61b1ec766..dc07d7007 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -122,8 +122,8 @@ math::Vector<3> SimpleThruster::CalcThrustDirection() { return thrust_dir_b_true; } -SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, - const dynamics::Dynamics* dynamics) { +SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, + const Structure* structure, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); @@ -180,4 +180,4 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, return thruster; } -} // namespace s2e::components +} // namespace s2e::components diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index 6cb9ab066..ca0476e04 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -110,14 +110,14 @@ class SimpleThruster : public Component, public logger::ILoggable { protected: // parameters - const int component_id_; //!< Thruster ID - Vector<3> thruster_position_b_m_{0.0}; //!< Thruster position @ body frame [m] - Vector<3> thrust_direction_b_{0.0}; //!< Thrust direction @ body frame - double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] - double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] - double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] - s2e::randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error - s2e::randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error + const int component_id_; //!< Thruster ID + Vector<3> thruster_position_b_m_{0.0}; //!< Thruster position @ body frame [m] + Vector<3> thrust_direction_b_{0.0}; //!< Thrust direction @ body frame + double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] + double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] + double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] + s2e::randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error + s2e::randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error // outputs Vector<3> output_thrust_b_N_{0.0}; //!< Generated thrust on the body fixed frame [N] Vector<3> output_torque_b_Nm_{0.0}; //!< Generated torque on the body fixed frame [Nm] @@ -153,8 +153,8 @@ class SimpleThruster : public Component, public logger::ILoggable { */ void Initialize(const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad); - const Structure* structure_; //!< Spacecraft structure information - const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information + const Structure* structure_; //!< Spacecraft structure information + const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; /** @@ -166,8 +166,8 @@ class SimpleThruster : public Component, public logger::ILoggable { * @param [in] structure: Spacecraft structure information * @param [in] dynamics: Spacecraft dynamics information */ -SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, const Structure* structure, - const dynamics::Dynamics* dynamics); +SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, + const Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn InitSimpleThruster * @brief Initialize function os SimpleThruster @@ -181,6 +181,6 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, const Structure* structure, const dynamics::Dynamics* dynamics); -} // namespace s2e::components +} // namespace s2e::components #endif // S2E_COMPONENTS_REAL_PROPULSION_SIMPLE_THRUSTER_HPP_ diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index c4f306523..8b7503776 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -112,4 +112,4 @@ AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_AIR_DRAG_HPP_ diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 6321f06d2..274517736 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -93,6 +93,6 @@ class Disturbance : public logger::ILoggable { math::Vector<3> acceleration_i_m_s2_; //!< Disturbance acceleration in the inertial frame [m/s2] }; -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_DISTURBANCE_HPP_ diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index 8d0c94037..e3351d989 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -99,4 +99,4 @@ void Disturbances::InitializeForceAndTorque() { void Disturbances::InitializeAcceleration() { total_acceleration_i_m_s2_ = Vector<3>(0.0); } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index a3f57b39a..67d1f473d 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -101,6 +101,6 @@ class Disturbances { void InitializeAcceleration(); }; -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_DISTURBANCES_HPP_ diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index dffba8b93..382a10dc4 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -129,4 +129,4 @@ Geopotential InitGeopotential(const std::string initialize_file_path) { return geopotential_disturbance; } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index c82f792b1..235c1fef8 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -88,6 +88,6 @@ class Geopotential : public Disturbance { */ Geopotential InitGeopotential(const std::string initialize_file_path); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_GEOPOTENTIAL_HPP_ diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 5129ec5be..4bb880cc1 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -73,4 +73,4 @@ GravityGradient InitGravityGradient(const std::string initialize_file_path, cons return gg_disturbance; } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index b58b8df33..ad5e6fcea 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -85,6 +85,6 @@ GravityGradient InitGravityGradient(const std::string initialize_file_path); */ GravityGradient InitGravityGradient(const std::string initialize_file_path, const double gravity_constant_m3_s2); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_GRAVITY_GRADIENT_HPP_ diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 3511537e6..7d37794e4 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -153,4 +153,4 @@ LunarGravityField InitLunarGravityField(const std::string initialize_file_path) return lunar_gravity_field; } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 40b5d0e7d..a117464f5 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -92,6 +92,6 @@ class LunarGravityField : public Disturbance { */ LunarGravityField InitLunarGravityField(const std::string initialize_file_path); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_LUNAR_GRAVITY_FIELD_HPP_ diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 11fc64530..6165965f0 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -37,7 +37,7 @@ void MagneticDisturbance::CalcRMM() { static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant static s2e::randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), - s2e::randomization::global_randomization.MakeSeed()); + s2e::randomization::global_randomization.MakeSeed()); rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); for (int i = 0; i < 3; ++i) { @@ -75,4 +75,4 @@ MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_pa return mag_disturbance; } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 7b5187598..f618f9de3 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -77,6 +77,6 @@ class MagneticDisturbance : public Disturbance { */ MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const ResidualMagneticMoment& rmm_params); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_MAGNETIC_DISTURBANCE_HPP_ diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index 638a19833..bd26dec2a 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -68,4 +68,4 @@ SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const st return srp_disturbance; } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 63f20e4e0..8cfcc3df1 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -70,6 +70,6 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_SOLAR_RADIATION_PRESSURE_DISTURBANCE_HPP_ diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 0cef5b365..80ec260cf 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -55,4 +55,4 @@ void SurfaceForce::CalcTheta(math::Vector<3>& input_direction_b) { } } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index c6c0c3d06..61eb8edba 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -73,6 +73,6 @@ class SurfaceForce : public Disturbance { virtual void CalcCoefficients(const math::Vector<3>& input_direction_b, const double item) = 0; }; -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_SURFACE_FORCE_HPP_ diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 7d99ab2fb..205c129fa 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -102,4 +102,4 @@ ThirdBodyGravity InitThirdBodyGravity(const std::string initialize_file_path, co return third_body_disturbance; } -} // namespace s2e::disturbances +} // namespace s2e::disturbances diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index 7207f7e78..c55d5f2e3 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -78,6 +78,6 @@ class ThirdBodyGravity : public Disturbance { */ ThirdBodyGravity InitThirdBodyGravity(const std::string initialize_file_path, const std::string ini_path_celes); -} // namespace s2e::disturbances +} // namespace s2e::disturbances #endif // S2E_DISTURBANCES_THIRD_BODY_GRAVITY_HPP_ diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index 84a9040e2..b079c68b8 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -82,4 +82,4 @@ math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_ return angular_velocity_matrix; } -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude.hpp b/src/dynamics/attitude/attitude.hpp index 6c3c80fef..59076b6ef 100644 --- a/src/dynamics/attitude/attitude.hpp +++ b/src/dynamics/attitude/attitude.hpp @@ -144,6 +144,6 @@ class Attitude : public logger::ILoggable, public simulation::SimulationObject { */ math::Matrix<4, 4> CalcAngularVelocityMatrix(math::Vector<3> angular_velocity_b_rad_s); -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index 52af18344..f7cca9b68 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -122,4 +122,4 @@ void AttitudeRk4::RungeKuttaOneStep(double t, double dt) { quaternion_i2b_.Normalize(); } -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude_rk4.hpp b/src/dynamics/attitude/attitude_rk4.hpp index 2b3b4f06c..5924bd4cf 100644 --- a/src/dynamics/attitude/attitude_rk4.hpp +++ b/src/dynamics/attitude/attitude_rk4.hpp @@ -70,6 +70,6 @@ class AttitudeRk4 : public Attitude { void RungeKuttaOneStep(double t, double dt); }; -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_RK4_HPP_ diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index 78292eb5c..a43ba941d 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -102,4 +102,4 @@ void AttitudeWithCantileverVibration::Propagate(const double end_time_s) { CalcAngularMomentum(); } -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 30469c2fd..0484e7c54 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -79,6 +79,6 @@ class AttitudeWithCantileverVibration : public Attitude { s2e::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; }; -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index a1850b8fb..f564ebd21 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -181,4 +181,4 @@ void ControlledAttitude::CalcAngularVelocity(const double current_time_s) { previous_omega_b_rad_s_ = angular_velocity_b_rad_s_; } -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/controlled_attitude.hpp b/src/dynamics/attitude/controlled_attitude.hpp index 0b1b65ac7..c2853871e 100644 --- a/src/dynamics/attitude/controlled_attitude.hpp +++ b/src/dynamics/attitude/controlled_attitude.hpp @@ -58,8 +58,8 @@ class ControlledAttitude : public Attitude { */ ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const environment::LocalCelestialInformation* local_celestial_information, const orbit::Orbit* orbit, - const std::string& simulation_object_name = "attitude"); + const math::Matrix<3, 3>& inertia_tensor_kgm2, const environment::LocalCelestialInformation* local_celestial_information, + const orbit::Orbit* orbit, const std::string& simulation_object_name = "attitude"); /** * @fn ~ControlledAttitude * @brief Destructor @@ -114,7 +114,7 @@ class ControlledAttitude : public Attitude { // Inputs const environment::LocalCelestialInformation* local_celestial_information_; //!< Local celestial information - const orbit::Orbit* orbit_; //!< Orbit information + const orbit::Orbit* orbit_; //!< Orbit information // Local functions /** @@ -151,6 +151,6 @@ class ControlledAttitude : public Attitude { math::Matrix<3, 3> CalcDcm(const math::Vector<3> main_direction, const math::Vector<3> sub_direction); }; -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_CONTROLLED_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 8460ea988..0aea27194 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -96,4 +96,4 @@ Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCel return attitude; } -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude diff --git a/src/dynamics/attitude/initialize_attitude.hpp b/src/dynamics/attitude/initialize_attitude.hpp index a03141105..335ee0c44 100644 --- a/src/dynamics/attitude/initialize_attitude.hpp +++ b/src/dynamics/attitude/initialize_attitude.hpp @@ -26,6 +26,6 @@ namespace s2e::dynamics::attitude { Attitude* InitAttitude(std::string file_name, const orbit::Orbit* orbit, const environment::LocalCelestialInformation* local_celestial_information, const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id); -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_INITIALIZE_ATTITUDE_HPP_ diff --git a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp index 84591e9b3..c267b84f7 100644 --- a/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp @@ -222,6 +222,6 @@ class AttitudeWithCantileverVibrationOde : public numerical_integration::Interfa math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever }; -} // namespace s2e::dynamics::attitude +} // namespace s2e::dynamics::attitude #endif // S2E_DYNAMICS_ATTITUDE_ODE_ATTITUDE_WITH_CANTILEVER_VIBRATION_HPP_ diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index e87f57dd0..49f226dde 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -9,8 +9,9 @@ namespace s2e::dynamics { -Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, const environment::LocalEnvironment* local_environment, - const int spacecraft_id, simulation::Structure* structure, simulation::RelativeInformation* relative_information) +Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, + const environment::LocalEnvironment* local_environment, const int spacecraft_id, simulation::Structure* structure, + simulation::RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); } @@ -67,4 +68,4 @@ void Dynamics::LogSetup(Logger& logger) { logger.AddLogList(temperature_); } -} // namespace s2e::dynamics +} // namespace s2e::dynamics diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 0681d6d4c..5267f7a64 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -17,8 +17,8 @@ #include "dynamics/thermal/node.hpp" #include "dynamics/thermal/temperature.hpp" -class RelativeInformation; -class LocalEnvironment; +class s2e::simulation::RelativeInformation; +class s2e::environment::LocalEnvironment; namespace s2e::dynamics { @@ -38,8 +38,9 @@ class Dynamics { * @param [in] structure: Structure of the spacecraft * @param [in] relative_information: Relative information */ - Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, const environment::LocalEnvironment* local_environment, - const int spacecraft_id, simulation::Structure* structure, simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); + Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, + const environment::LocalEnvironment* local_environment, const int spacecraft_id, simulation::Structure* structure, + simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); /** * @fn ~Dynamics * @brief Destructor @@ -109,10 +110,10 @@ class Dynamics { inline attitude::Attitude& SetAttitude() const { return *attitude_; } private: - attitude::Attitude* attitude_; //!< Attitude dynamics - orbit::Orbit* orbit_; //!< Orbit dynamics - thermal::Temperature* temperature_; //!< Thermal dynamics - const simulation::Structure* structure_; //!< Structure information + attitude::Attitude* attitude_; //!< Attitude dynamics + orbit::Orbit* orbit_; //!< Orbit dynamics + thermal::Temperature* temperature_; //!< Thermal dynamics + const simulation::Structure* structure_; //!< Structure information const environment::LocalEnvironment* local_environment_; //!< Local environment /** @@ -125,10 +126,11 @@ class Dynamics { * @param [in] structure: Structure of the spacecraft * @param [in] relative_information: Relative information */ - void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, const int spacecraft_id, - simulation::Structure* structure, simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); + void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, + const int spacecraft_id, simulation::Structure* structure, + simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); }; -} // namespace s2e::dynamics +} // namespace s2e::dynamics #endif // S2E_DYNAMICS_DYNAMICS_HPP_ diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index ac661f705..adf102ceb 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -127,4 +127,4 @@ double EnckeOrbitPropagation::CalcQFunction(math::Vector<3> difference_position_ return q_func; } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index 7b2ba00a8..4101b6b71 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -65,8 +65,8 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu double propagation_time_s_; //!< Simulation current time for numerical integration by RK4 // reference orbit - math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] - math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] + math::Vector<3> reference_position_i_m_; //!< Reference orbit position in the inertial frame [m] + math::Vector<3> reference_velocity_i_m_s_; //!< Reference orbit velocity in the inertial frame [m/s] s2e::orbit::KeplerOrbit reference_kepler_orbit; //!< Reference Kepler orbital element // difference orbit @@ -95,6 +95,6 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu double CalcQFunction(const math::Vector<3> difference_position_i_m); }; -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_ENCKE_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index a564b2521..79ebd0e13 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -48,7 +48,8 @@ Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string // initialize orbit for relative dynamics of formation flying RelativeOrbit::RelativeOrbitUpdateMethod update_method = (RelativeOrbit::RelativeOrbitUpdateMethod)(conf.ReadInt(section_, "relative_orbit_update_method")); - s2e::orbit::RelativeOrbitModel relative_dynamics_model_type = (s2e::orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); + s2e::orbit::RelativeOrbitModel relative_dynamics_model_type = + (s2e::orbit::RelativeOrbitModel)(conf.ReadInt(section_, "relative_dynamics_model_type")); s2e::orbit::StmModel stm_model_type = (s2e::orbit::StmModel)(conf.ReadInt(section_, "stm_model_type")); math::Vector<3> init_relative_position_lvlh; @@ -151,4 +152,4 @@ math::Vector<6> InitializePosVel(std::string initialize_file, double current_tim return pos_vel; } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index ece960dd2..a006fe204 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -25,8 +25,8 @@ namespace s2e::dynamics::orbit { * @param [in] section: Section name * @param [in] relative_information: Relative information */ -Orbit* InitOrbit(const environment::CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, - double gravity_constant_m3_s2, std::string section = "ORBIT", +Orbit* InitOrbit(const environment::CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, + double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT", RelativeInformation* relative_information = (RelativeInformation*)nullptr); /** @@ -39,6 +39,6 @@ Orbit* InitOrbit(const environment::CelestialInformation* celestial_information, */ math::Vector<6> InitializePosVel(std::string initialize_file, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT"); -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_INITIALIZE_ORBIT_HPP_ diff --git a/src/dynamics/orbit/kepler_orbit_propagation.cpp b/src/dynamics/orbit/kepler_orbit_propagation.cpp index d745a2c3a..dadb5ef50 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.cpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.cpp @@ -35,4 +35,4 @@ void KeplerOrbitPropagation::UpdateState(const double current_time_jd) { TransformEcefToGeodetic(); } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/kepler_orbit_propagation.hpp b/src/dynamics/orbit/kepler_orbit_propagation.hpp index 117f8edc1..cd18bab8c 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.hpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.hpp @@ -50,6 +50,6 @@ class KeplerOrbitPropagation : public Orbit, public s2e::orbit::KeplerOrbit { void UpdateState(const double current_time_jd); }; -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_KEPLER_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/orbit.cpp b/src/dynamics/orbit/orbit.cpp index d08e642ad..dbdcb7791 100644 --- a/src/dynamics/orbit/orbit.cpp +++ b/src/dynamics/orbit/orbit.cpp @@ -96,4 +96,4 @@ std::string Orbit::GetLogValue() const { return str_tmp; } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index f6d80c7e7..9594aa7a1 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -193,8 +193,8 @@ class Orbit : public logger::ILoggable { bool is_calc_enabled_ = false; //!< Calculate flag OrbitPropagateMode propagate_mode_; //!< Propagation mode - math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] - math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] + math::Vector<3> spacecraft_position_i_m_; //!< Spacecraft position in the inertial frame [m] + math::Vector<3> spacecraft_position_ecef_m_; //!< Spacecraft position in the ECEF frame [m] s2e::geodesy::GeodeticPosition spacecraft_geodetic_position_; //!< Spacecraft position in the Geodetic frame math::Vector<3> spacecraft_velocity_i_m_s_; //!< Spacecraft velocity in the inertial frame [m/s] @@ -219,6 +219,6 @@ class Orbit : public logger::ILoggable { OrbitInitializeMode SetOrbitInitializeMode(const std::string initialize_mode); -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_ORBIT_HPP_ diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index 7620b3866..af1ee1d88 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -160,4 +160,4 @@ void RelativeOrbit::DerivativeFunction(double t, const math::Vector<6>& state, (void)t; } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 7aa505d88..5abf101cb 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -43,7 +43,8 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> */ RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, - s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, s2e::orbit::StmModel stm_model_type, RelativeInformation* relative_information); + s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, s2e::orbit::StmModel stm_model_type, + RelativeInformation* relative_information); /** * @fn ~RelativeOrbit * @brief Destructor @@ -82,10 +83,10 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> math::Vector<3> relative_position_lvlh_m_; //!< Relative position in the LVLH frame math::Vector<3> relative_velocity_lvlh_m_s_; //!< Relative velocity in the LVLH frame - RelativeOrbitUpdateMethod update_method_; //!< Update method + RelativeOrbitUpdateMethod update_method_; //!< Update method s2e::orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type s2e::orbit::StmModel stm_model_type_; //!< State Transition Matrix model type - RelativeInformation* relative_information_; //!< Relative information + RelativeInformation* relative_information_; //!< Relative information /** * @fn InitializeState @@ -104,7 +105,8 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] reference_sat_orbit: Orbit information of reference satellite * @param [in] gravity_constant_m3_s2: Gravity constant of the center body [m3/s2] */ - void CalculateSystemMatrix(s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, double gravity_constant_m3_s2); + void CalculateSystemMatrix(s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, const Orbit* reference_sat_orbit, + double gravity_constant_m3_s2); /** * @fn CalculateStm * @brief Calculate State Transition Matrix @@ -128,6 +130,6 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> void PropagateStm(double elapsed_sec); }; -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_RELATIVE_ORBIT_HPP_ diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index 824637259..b9fea10c7 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -89,4 +89,4 @@ void Rk4OrbitPropagation::Propagate(const double end_time_s, const double curren TransformEcefToGeodetic(); } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index b46b35646..dbda96d86 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -71,6 +71,6 @@ class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquat void Initialize(math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); }; -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_RK4_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.cpp b/src/dynamics/orbit/sgp4_orbit_propagation.cpp index f15c8b56c..1322cbeb6 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.cpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.cpp @@ -69,4 +69,4 @@ void Sgp4OrbitPropagation::Propagate(const double end_time_s, const double curre TransformEcefToGeodetic(); } -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index a31be3690..0bd59bfd3 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -47,6 +47,6 @@ class Sgp4OrbitPropagation : public Orbit { elsetrec sgp4_data_; //!< Structure data for SGP4 library }; -} // namespace s2e::dynamics::orbit +} // namespace s2e::dynamics::orbit #endif // S2E_DYNAMICS_ORBIT_SGP4_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/thermal/heater.cpp b/src/dynamics/thermal/heater.cpp index 6444ae329..e43e32951 100644 --- a/src/dynamics/thermal/heater.cpp +++ b/src/dynamics/thermal/heater.cpp @@ -78,4 +78,4 @@ Heater InitHeater(const std::vector& heater_str) { return heater; } -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/heater.hpp b/src/dynamics/thermal/heater.hpp index ac1f47c30..5643efcdc 100644 --- a/src/dynamics/thermal/heater.hpp +++ b/src/dynamics/thermal/heater.hpp @@ -101,6 +101,6 @@ class Heater { */ Heater InitHeater(const std::vector& heater_str); -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal #endif // S2E_DYNAMICS_THERMAL_HEATER_HPP_ diff --git a/src/dynamics/thermal/heater_controller.cpp b/src/dynamics/thermal/heater_controller.cpp index 6c346041e..e0c02658f 100644 --- a/src/dynamics/thermal/heater_controller.cpp +++ b/src/dynamics/thermal/heater_controller.cpp @@ -55,4 +55,4 @@ HeaterController InitHeaterController(const std::vector& heater_str return heater_controller; } -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/heater_controller.hpp b/src/dynamics/thermal/heater_controller.hpp index 70ff3fb6c..0d8f76bc5 100644 --- a/src/dynamics/thermal/heater_controller.hpp +++ b/src/dynamics/thermal/heater_controller.hpp @@ -91,6 +91,6 @@ class HeaterController { */ HeaterController InitHeaterController(const std::vector& heater_str); -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal #endif // S2E_DYNAMICS_THERMAL_HEATER_CONTROLLER_HPP_ diff --git a/src/dynamics/thermal/heatload.cpp b/src/dynamics/thermal/heatload.cpp index 949bfa361..29b8cdb44 100644 --- a/src/dynamics/thermal/heatload.cpp +++ b/src/dynamics/thermal/heatload.cpp @@ -103,4 +103,4 @@ Heatload InitHeatload(const std::vector& time_str, const std::vecto return Heatload(node_id, time_table_s, internal_heatload_table_W); } -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/heatload.hpp b/src/dynamics/thermal/heatload.hpp index 0a3106a25..a4e4afb25 100644 --- a/src/dynamics/thermal/heatload.hpp +++ b/src/dynamics/thermal/heatload.hpp @@ -129,6 +129,6 @@ class Heatload { */ Heatload InitHeatload(const std::vector& time_str, const std::vector& internal_heatload_str); -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal #endif // S2E_DYNAMICS_THERMAL_HEATLOAD_HPP_ diff --git a/src/dynamics/thermal/node.cpp b/src/dynamics/thermal/node.cpp index 5c586f634..24440ce5a 100644 --- a/src/dynamics/thermal/node.cpp +++ b/src/dynamics/thermal/node.cpp @@ -189,4 +189,4 @@ Node InitNode(const std::vector& node_str) { return node; } -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index fc42b4239..6d9cb0434 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -172,6 +172,7 @@ class Node { */ Node InitNode(const std::vector& node_str); -}namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal +namespace s2e::dynamics::thermal #endif // S2E_DYNAMICS_THERMAL_NODE_HPP_ diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index 0583ac6c0..fecd97cd4 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -391,4 +391,4 @@ Temperature* InitTemperature(const std::string file_name, const double rk_prop_s return temperature; } -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal diff --git a/src/dynamics/thermal/temperature.hpp b/src/dynamics/thermal/temperature.hpp index 8c99db6e1..292e432d5 100644 --- a/src/dynamics/thermal/temperature.hpp +++ b/src/dynamics/thermal/temperature.hpp @@ -45,9 +45,9 @@ class Temperature : public logger::ILoggable { double propagation_time_s_; //!< Incremented time inside class Temperature [s], finish propagation when reaching end_time const environment::SolarRadiationPressureEnvironment* srp_environment_; //!< SolarRadiationPressureEnvironment for calculating solar flux const environment::EarthAlbedo* earth_albedo_; //!< EarthAlbedo object for calculating earth albedo - bool is_calc_enabled_; //!< Whether temperature calculation is enabled - SolarCalcSetting solar_calc_setting_; //!< setting for solar calculation - bool debug_; //!< Activate debug output or not + bool is_calc_enabled_; //!< Whether temperature calculation is enabled + SolarCalcSetting solar_calc_setting_; //!< setting for solar calculation + bool debug_; //!< Activate debug output or not /** * @fn CalcRungeOneStep @@ -58,7 +58,8 @@ class Temperature : public logger::ILoggable { * @param[in] local_celestial_information: LocalCelestialInformation object for calculating radiation * @param[in] node_num: Number of nodes */ - void CalcRungeOneStep(double time_now_s, double time_step_s, const environment::LocalCelestialInformation* local_celestial_information, size_t node_num); + void CalcRungeOneStep(double time_now_s, double time_step_s, const environment::LocalCelestialInformation* local_celestial_information, + size_t node_num); /** * @fn CalcTemperatureDifferentials * @brief Calculate differential of thermal equilibrium equation @@ -119,7 +120,7 @@ class Temperature : public logger::ILoggable { // Getter /** * @fn GetNodes - * + * * @brief Return Nodes * @return std::vector */ @@ -165,9 +166,9 @@ class Temperature : public logger::ILoggable { * @param[in] srp_environment: SolarRadiationPressureEnvironment object for calculating solar flux * @return Temperature* */ -Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const environment::SolarRadiationPressureEnvironment* srp_environment, - const environment::EarthAlbedo* earth_albedo); +Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, + const environment::SolarRadiationPressureEnvironment* srp_environment, const environment::EarthAlbedo* earth_albedo); -} // namespace s2e::dynamics::thermal +} // namespace s2e::dynamics::thermal #endif // S2E_DYNAMICS_THERMAL_TEMPERATURE_HPP_ diff --git a/src/environment/global/celestial_information.cpp b/src/environment/global/celestial_information.cpp index af94cfcb6..a8ffde6eb 100644 --- a/src/environment/global/celestial_information.cpp +++ b/src/environment/global/celestial_information.cpp @@ -247,4 +247,4 @@ CelestialInformation* InitCelestialInformation(std::string file_name) { return celestial_info; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index a00ceac53..dbb9777d9 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -283,6 +283,6 @@ class CelestialInformation : public logger::ILoggable { */ CelestialInformation* InitCelestialInformation(std::string file_name); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_CELESTIAL_INFORMATION_HPP_ diff --git a/src/environment/global/clock_generator.cpp b/src/environment/global/clock_generator.cpp index db573baf3..5fd61999c 100644 --- a/src/environment/global/clock_generator.cpp +++ b/src/environment/global/clock_generator.cpp @@ -41,4 +41,4 @@ void ClockGenerator::UpdateComponents(const SimulationTime* simulation_time) { } } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/clock_generator.hpp b/src/environment/global/clock_generator.hpp index d11e837f7..87361d772 100644 --- a/src/environment/global/clock_generator.hpp +++ b/src/environment/global/clock_generator.hpp @@ -56,9 +56,9 @@ class ClockGenerator { private: std::vector components_; //!< Component list fot tick - unsigned int timer_count_; //!< Timer count TODO: change to long? + unsigned int timer_count_; //!< Timer count TODO: change to long? }; -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_CLOCK_GENERATOR_HPP_ diff --git a/src/environment/global/earth_rotation.cpp b/src/environment/global/earth_rotation.cpp index 73d5811c8..f7eedde82 100644 --- a/src/environment/global/earth_rotation.cpp +++ b/src/environment/global/earth_rotation.cpp @@ -278,4 +278,4 @@ EarthRotationMode ConvertEarthRotationMode(const std::string mode) { return rotation_mode; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/earth_rotation.hpp b/src/environment/global/earth_rotation.hpp index 25cfa1992..4c1668adb 100644 --- a/src/environment/global/earth_rotation.hpp +++ b/src/environment/global/earth_rotation.hpp @@ -124,6 +124,6 @@ class EarthRotation { EarthRotationMode ConvertEarthRotationMode(const std::string mode); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_EARTH_ROTATION_HPP_ diff --git a/src/environment/global/global_environment.cpp b/src/environment/global/global_environment.cpp index 3657594c5..0244387fe 100644 --- a/src/environment/global/global_environment.cpp +++ b/src/environment/global/global_environment.cpp @@ -47,4 +47,4 @@ void GlobalEnvironment::LogSetup(logger::Logger& logger) { void GlobalEnvironment::Reset(void) { simulation_time_->ResetClock(); } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/global_environment.hpp b/src/environment/global/global_environment.hpp index f067c33b8..2ce5da7c3 100644 --- a/src/environment/global/global_environment.hpp +++ b/src/environment/global/global_environment.hpp @@ -84,6 +84,6 @@ class GlobalEnvironment { GnssSatellites* gnss_satellites_; //!< GNSS satellites }; -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_GLOBAL_ENVIRONMENT_HPP_ diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 9dbf72393..17219887c 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -63,7 +63,7 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { // Get time UTC current_utc = simulation_time.GetCurrentUtc(); s2e::time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, - (size_t)current_utc.minute, current_utc.second); + (size_t)current_utc.minute, current_utc.second); current_epoch_time_ = s2e::time_system::EpochTime(current_date_time); // Check interpolation update @@ -229,12 +229,12 @@ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotat // s2e::time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), - (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), - (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); + (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), + (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); s2e::time_system::EpochTime start_epoch_time(start_date_time); gnss_satellites->Initialize(sp3_file_readers, start_epoch_time); return gnss_satellites; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index 49e73f2a1..c88f86a69 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -89,7 +89,8 @@ class GnssSatellites : public logger::ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; + math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, + const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -115,15 +116,15 @@ class GnssSatellites : public logger::ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the GNSS satellite position calculation - std::vector sp3_files_; //!< List of SP3 files - size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites - size_t sp3_file_id_; //!< Current SP3 file ID - s2e::time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling - size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - s2e::time_system::EpochTime current_epoch_time_; //!< The last updated time + std::vector sp3_files_; //!< List of SP3 files + size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites + size_t sp3_file_id_; //!< Current SP3 file ID + s2e::time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling + size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + s2e::time_system::EpochTime current_epoch_time_; //!< The last updated time std::vector orbit_; //!< GNSS satellite orbit with interpolation - std::vector clock_; //!< GNSS satellite clock offset with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation // References const EarthRotation& earth_rotation_; //!< Earth rotation @@ -155,6 +156,6 @@ class GnssSatellites : public logger::ILoggable { */ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotation& earth_rotation, const SimulationTime& simulation_time); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_GNSS_SATELLITES_HPP_ diff --git a/src/environment/global/hipparcos_catalogue.cpp b/src/environment/global/hipparcos_catalogue.cpp index 83e378997..8888085ac 100644 --- a/src/environment/global/hipparcos_catalogue.cpp +++ b/src/environment/global/hipparcos_catalogue.cpp @@ -102,4 +102,4 @@ HipparcosCatalogue* InitHipparcosCatalogue(std::string file_name) { return hipparcos_catalogue_; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/hipparcos_catalogue.hpp b/src/environment/global/hipparcos_catalogue.hpp index 8067bfcd5..23dd55630 100644 --- a/src/environment/global/hipparcos_catalogue.hpp +++ b/src/environment/global/hipparcos_catalogue.hpp @@ -120,6 +120,6 @@ class HipparcosCatalogue : public logger::ILoggable { */ HipparcosCatalogue* InitHipparcosCatalogue(std::string file_name); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_HIPPARCOS_CATALOGUE_HPP_ diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index b40692284..d2f93c659 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -54,4 +54,4 @@ MoonRotationMode ConvertMoonRotationMode(const std::string mode) { return rotation_mode; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/moon_rotation.hpp b/src/environment/global/moon_rotation.hpp index 196e2d6a6..1c5ea0d68 100644 --- a/src/environment/global/moon_rotation.hpp +++ b/src/environment/global/moon_rotation.hpp @@ -64,6 +64,6 @@ class MoonRotation { const CelestialInformation &celestial_information_; //!< Celestial Information to get moon orbit }; -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_MOON_ROTATION_HPP_ diff --git a/src/environment/global/simulation_time.cpp b/src/environment/global/simulation_time.cpp index 600e70440..6438e5011 100644 --- a/src/environment/global/simulation_time.cpp +++ b/src/environment/global/simulation_time.cpp @@ -278,4 +278,4 @@ SimulationTime* InitSimulationTime(std::string file_name) { return simTime; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/global/simulation_time.hpp b/src/environment/global/simulation_time.hpp index eacefcc71..7a2093c19 100644 --- a/src/environment/global/simulation_time.hpp +++ b/src/environment/global/simulation_time.hpp @@ -336,6 +336,6 @@ class SimulationTime : public logger::ILoggable { */ SimulationTime* InitSimulationTime(std::string file_name); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_GLOBAL_SIMULATION_TIME_HPP_ diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 4659f8c43..0e31d6b17 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -136,4 +136,4 @@ Atmosphere InitAtmosphere(const std::string initialize_file_path, const LocalCel return atmosphere; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/local/atmosphere.hpp b/src/environment/local/atmosphere.hpp index 197c0972a..81dd063eb 100644 --- a/src/environment/local/atmosphere.hpp +++ b/src/environment/local/atmosphere.hpp @@ -82,8 +82,8 @@ class Atmosphere : public logger::ILoggable { double air_density_kg_m3_; //!< Atmospheric density [kg/m^3] // NRLMSISE-00 model information - std::vector space_weather_table_; //!< Space weather table - bool is_manual_param_used_; //!< Flag to use manual parameters + std::vector space_weather_table_; //!< Space weather table + bool is_manual_param_used_; //!< Flag to use manual parameters // Reference of the following setting parameters https://www.swpc.noaa.gov/phenomena/f107-cm-radio-emissions double manual_daily_f107_; //!< Manual daily f10.7 value double manual_average_f107_; //!< Manual 3-month averaged f10.7 value @@ -118,6 +118,6 @@ class Atmosphere : public logger::ILoggable { Atmosphere InitAtmosphere(const std::string initialize_file_path, const LocalCelestialInformation* local_celestial_information, const SimulationTime* simulation_time); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_LOCAL_ATMOSPHERE_HPP_ diff --git a/src/environment/local/earth_albedo.cpp b/src/environment/local/earth_albedo.cpp index 1a38af8da..2e1ab6902 100644 --- a/src/environment/local/earth_albedo.cpp +++ b/src/environment/local/earth_albedo.cpp @@ -60,4 +60,4 @@ EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInfo return earth_albedo; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/local/earth_albedo.hpp b/src/environment/local/earth_albedo.hpp index 0635afd7a..8fbd6521b 100644 --- a/src/environment/local/earth_albedo.hpp +++ b/src/environment/local/earth_albedo.hpp @@ -104,6 +104,6 @@ class EarthAlbedo : public logger::ILoggable { EarthAlbedo InitEarthAlbedo(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information, SolarRadiationPressureEnvironment* srp_environment); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_LOCAL_EARTH_ALBEDO_HPP_ diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index 5b713a11d..ba49d575d 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -44,7 +44,7 @@ void GeomagneticField::CalcMagneticField(const double decimal_year, const double void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { static math::Vector<3> standard_deviation(random_walk_standard_deviation_nT_); static math::Vector<3> limit(random_walk_limit_nT_); - static RandomWalk<3> random_walk(0.1, standard_deviation, limit); + static randomization::RandomWalk<3> random_walk(0.1, standard_deviation, limit); static s2e::randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, s2e::randomization::global_randomization.MakeSeed()); @@ -88,4 +88,4 @@ GeomagneticField InitGeomagneticField(std::string initialize_file_path) { return geomagnetic_field; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 6b9857946..0317952f3 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -94,6 +94,6 @@ class GeomagneticField : public logger::ILoggable { */ GeomagneticField InitGeomagneticField(std::string initialize_file_path); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_LOCAL_GEOMAGNETIC_FIELD_HPP_ diff --git a/src/environment/local/local_celestial_information.cpp b/src/environment/local/local_celestial_information.cpp index 40d78c536..dab63eec9 100644 --- a/src/environment/local/local_celestial_information.cpp +++ b/src/environment/local/local_celestial_information.cpp @@ -200,4 +200,4 @@ std::string LocalCelestialInformation::GetLogValue() const { return str_tmp; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/local/local_celestial_information.hpp b/src/environment/local/local_celestial_information.hpp index 93a2c13c8..1d15a2ca6 100644 --- a/src/environment/local/local_celestial_information.hpp +++ b/src/environment/local/local_celestial_information.hpp @@ -122,6 +122,6 @@ class LocalCelestialInformation : public logger::ILoggable { const math::Vector<3> angular_velocity_b); }; -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_LOCAL_LOCAL_CELESTIAL_INFORMATION_HPP_ diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index 3fbe777b1..3f53239d1 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -8,7 +8,7 @@ #include "dynamics/orbit/orbit.hpp" #include "setting_file_reader/initialize_file_access.hpp" -namespace s2e::environment{ +namespace s2e::environment { LocalEnvironment::LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id) { @@ -79,4 +79,4 @@ void LocalEnvironment::LogSetup(logger::Logger& logger) { logger.AddLogList(celestial_information_); } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index f6d698f67..ef671a499 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -15,8 +15,6 @@ #include "simulation/simulation_configuration.hpp" #include "solar_radiation_pressure_environment.hpp" -class dynamics::Dynamics; - namespace s2e::environment { /** @@ -32,7 +30,8 @@ class LocalEnvironment { * @param [in] global_environment: Global environment * @param [in] spacecraft_id: Satellite ID */ - LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); + LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, + const int spacecraft_id); /** * @fn ~LocalEnvironment * @brief Destructor @@ -93,9 +92,10 @@ class LocalEnvironment { * @param [in] global_environment: Global environment * @param [in] spacecraft_id: Satellite ID */ - void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, const int spacecraft_id); + void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, + const int spacecraft_id); }; -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_LOCAL_LOCAL_ENVIRONMENT_HPP_ diff --git a/src/environment/local/solar_radiation_pressure_environment.cpp b/src/environment/local/solar_radiation_pressure_environment.cpp index ba259567b..c571f309f 100644 --- a/src/environment/local/solar_radiation_pressure_environment.cpp +++ b/src/environment/local/solar_radiation_pressure_environment.cpp @@ -122,4 +122,4 @@ SolarRadiationPressureEnvironment InitSolarRadiationPressureEnvironment(std::str return srp_env; } -} // namespace s2e::environment +} // namespace s2e::environment diff --git a/src/environment/local/solar_radiation_pressure_environment.hpp b/src/environment/local/solar_radiation_pressure_environment.hpp index f49bc8106..98f833b6c 100644 --- a/src/environment/local/solar_radiation_pressure_environment.hpp +++ b/src/environment/local/solar_radiation_pressure_environment.hpp @@ -124,6 +124,6 @@ class SolarRadiationPressureEnvironment : public logger::ILoggable { SolarRadiationPressureEnvironment InitSolarRadiationPressureEnvironment(std::string initialize_file_path, LocalCelestialInformation* local_celestial_information); -} // namespace s2e::environment +} // namespace s2e::environment #endif // S2E_ENVIRONMENT_LOCAL_SOLAR_RADIATION_PRESSURE_ENVIRONMENT_HPP_ diff --git a/src/logger/initialize_log.cpp b/src/logger/initialize_log.cpp index 30c1036bb..84098e57b 100644 --- a/src/logger/initialize_log.cpp +++ b/src/logger/initialize_log.cpp @@ -31,4 +31,4 @@ Logger* InitMonteCarloLog(std::string file_name, bool enable) { return log; } -} // namespace s2e::logger +} // namespace s2e::logger diff --git a/src/logger/initialize_log.hpp b/src/logger/initialize_log.hpp index 630425134..9d7c7a45b 100644 --- a/src/logger/initialize_log.hpp +++ b/src/logger/initialize_log.hpp @@ -25,6 +25,6 @@ Logger* InitLog(std::string file_name); */ Logger* InitMonteCarloLog(std::string file_name, bool enable); -} // namespace s2e::logger +} // namespace s2e::logger #endif // S2E_LIBRARY_LOGGER_INITIALIZE_LOG_HPP_ diff --git a/src/logger/log_utility.hpp b/src/logger/log_utility.hpp index 40f47f8f1..3328d358e 100644 --- a/src/logger/log_utility.hpp +++ b/src/logger/log_utility.hpp @@ -158,6 +158,6 @@ std::string WriteQuaternion(const std::string name, const std::string frame) { return str_tmp.str(); } -} // namespace s2e::logger +} // namespace s2e::logger #endif // S2E_LIBRARY_LOGGER_LOG_UTILITY_HPP_ diff --git a/src/logger/loggable.hpp b/src/logger/loggable.hpp index 064bbf952..b8616f1a7 100644 --- a/src/logger/loggable.hpp +++ b/src/logger/loggable.hpp @@ -36,6 +36,6 @@ class ILoggable { bool is_log_enabled_ = true; //!< Log enable flag }; -} // namespace s2e::logger +} // namespace s2e::logger #endif // S2E_LIBRARY_LOGGER_LOGGABLE_HPP_ diff --git a/src/logger/logger.cpp b/src/logger/logger.cpp index 4299127db..3bc823cad 100644 --- a/src/logger/logger.cpp +++ b/src/logger/logger.cpp @@ -106,4 +106,4 @@ void Logger::CopyFileToLogDirectory(const fs::path &ini_file_name) { return; } -} // namespace s2e::logger +} // namespace s2e::logger diff --git a/src/logger/logger.hpp b/src/logger/logger.hpp index fa85e21ed..066c6814f 100644 --- a/src/logger/logger.hpp +++ b/src/logger/logger.hpp @@ -123,6 +123,6 @@ class Logger { std::filesystem::path CreateDirectory(const std::filesystem::path &data_path, const std::string &time); }; -} // namespace s2e::logger +} // namespace s2e::logger #endif // S2E_LIBRARY_LOGGER_LOGGER_HPP_ diff --git a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp index c000ca49e..c467efe37 100644 --- a/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp +++ b/src/math_physics/atmosphere/wrapper_nrlmsise00.cpp @@ -23,6 +23,8 @@ extern "C" { using namespace std; +namespace s2e::atmosphere { + /* ------------------------------------------------------------------- */ /* ------------------------------ DEFINES ---------------------------- */ /* ------------------------------------------------------------------- */ @@ -305,3 +307,5 @@ size_t GetSpaceWeatherTable_(double decyear, double endsec, const string& filena return table.size(); } + +} // namespace s2e::atmosphere diff --git a/src/math_physics/atmosphere/wrapper_nrlmsise00.hpp b/src/math_physics/atmosphere/wrapper_nrlmsise00.hpp index 88bf51ee2..ea1e6e43f 100644 --- a/src/math_physics/atmosphere/wrapper_nrlmsise00.hpp +++ b/src/math_physics/atmosphere/wrapper_nrlmsise00.hpp @@ -12,6 +12,8 @@ #include #include +namespace s2e::atmosphere { + /** * @struct nrlmsise_table * @brief Parameters for NRLMSISE calculation @@ -74,4 +76,6 @@ size_t GetSpaceWeatherTable_(double decyear, double endsec, const std::string& f #define __inline_double double #endif +} // namespace s2e::atmosphere + #endif // S2E_LIBRARY_EXTERNAL_NRLMSISE00_WRAPPER_NRLMSISE00__HPP_ diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 9e30ebce6..67efe3133 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -256,8 +256,8 @@ class AntexSatelliteData { private: std::string antenna_type_; //!< Antenna type std::string serial_number_; //!< Serial number or satellite code - s2e::time_system::DateTime valid_start_time_; //!< Valid start time - s2e::time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) + s2e::time_system::DateTime valid_start_time_; //!< Valid start time + s2e::time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) size_t number_of_frequency_ = 1; //!< Number of frequency std::vector phase_center_data_; //!< Phase center data for each frequency }; diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index 1b7164dbf..e551e186d 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -51,16 +51,16 @@ enum class Sp3OrbitType { struct Sp3Header { // 1st line information // version -> not implemented yet - Sp3Mode mode_; //!< position or velocity + Sp3Mode mode_; //!< position or velocity s2e::time_system::DateTime start_epoch_; //!< Time of start epoch - size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file - std::string used_data_; //!< Used data to generate the SP3 file - std::string coordinate_system_; //!< Coordinate system for the position and velocity data - Sp3OrbitType orbit_type_; //!< Orbit type - std::string agency_name_; //!< Agency name who generates the SP3 file + size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file + std::string used_data_; //!< Used data to generate the SP3 file + std::string coordinate_system_; //!< Coordinate system for the position and velocity data + Sp3OrbitType orbit_type_; //!< Orbit type + std::string agency_name_; //!< Agency name who generates the SP3 file // 2nd line information - s2e::time_system::GpsTime start_gps_time_; //!< Start time of orbit + s2e::time_system::GpsTime start_gps_time_; //!< Start time of orbit double epoch_interval_s_ = 1.0; //!< Epoch interval (0.0, 100000.0) size_t start_time_mjday_; //!< Start time of the orbit data (44244 = 6th Jan. 1980) [Modified Julian day] double start_time_mjday_fractional_day_ = 0.0; //!< Fractional part of the start time [0.0, 1.0) [day] @@ -183,7 +183,7 @@ class Sp3FileReader { size_t SearchNearestEpochId(const s2e::time_system::EpochTime time); private: - Sp3Header header_; //!< SP3 header information + Sp3Header header_; //!< SP3 header information std::vector epoch_; //!< Epoch data list // Orbit and clock data (Use as position_clock_[satellite_id][epoch_id]) diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 461bfa225..ae708a753 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -32,7 +32,7 @@ class NumericalIntegrator { * @fn ~NumericalIntegrator * @brief Destructor */ - inline virtual ~NumericalIntegrator(){}; + inline virtual ~NumericalIntegrator() {}; /** * @fn Integrate diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index d2072d4cb..a24b4f53b 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -29,7 +29,7 @@ class RungeKutta : public NumericalIntegrator { * @fn ~RungeKutta * @brief Destructor */ - inline virtual ~RungeKutta(){}; + inline virtual ~RungeKutta() {}; /** * @fn Integrate diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index 2223a9a9b..60293ab18 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -113,7 +113,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { double step_width_s = 0.1; s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - s2e::numerical_integration::NumericalIntegrationMethod::kRkf); + s2e::numerical_integration::NumericalIntegrationMethod::kRkf); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); @@ -139,7 +139,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { double step_width_s = 0.1; s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, - s2e::numerical_integration::NumericalIntegrationMethod::kDp5); + s2e::numerical_integration::NumericalIntegrationMethod::kDp5); math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); diff --git a/src/math_physics/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp index fd9dac4a0..df464b974 100644 --- a/src/math_physics/randomization/global_randomization.hpp +++ b/src/math_physics/randomization/global_randomization.hpp @@ -34,9 +34,9 @@ class GlobalRandomization { long MakeSeed(); private: - static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed + static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed s2e::randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization - long seed_; //!< Seed of global randomization + long seed_; //!< Seed of global randomization }; extern GlobalRandomization global_randomization; //!< Global randomization diff --git a/src/math_physics/randomization/random_walk.hpp b/src/math_physics/randomization/random_walk.hpp index ee7db5bb6..aed70512b 100644 --- a/src/math_physics/randomization/random_walk.hpp +++ b/src/math_physics/randomization/random_walk.hpp @@ -10,6 +10,8 @@ #include "../math/vector.hpp" #include "./normal_randomization.hpp" +namespace s2e::randomization { + /** * @class RandomWalk * @brief Class to calculate random wark value @@ -36,10 +38,12 @@ class RandomWalk : public math::OrdinaryDifferentialEquation { virtual void DerivativeFunction(double x, const math::Vector& state, math::Vector& rhs); private: - math::Vector limit_; //!< Limit of random walk - s2e::randomization::NormalRand normal_randomizer_[N]; //!< Random walk excitation noise + math::Vector limit_; //!< Limit of random walk + NormalRand normal_randomizer_[N]; //!< Random walk excitation noise }; +} // namespace s2e::randomization + #include "random_walk_template_functions.hpp" // template function definisions. #endif // S2E_LIBRARY_RANDOMIZATION_RANDOM_WALK_HPP_ \ No newline at end of file diff --git a/src/math_physics/randomization/random_walk_template_functions.hpp b/src/math_physics/randomization/random_walk_template_functions.hpp index 68fa37eea..1f782b7cb 100644 --- a/src/math_physics/randomization/random_walk_template_functions.hpp +++ b/src/math_physics/randomization/random_walk_template_functions.hpp @@ -9,6 +9,8 @@ #include #include +namespace s2e::randomization { + template RandomWalk::RandomWalk(double step_width_s, const math::Vector& standard_deviation, const math::Vector& limit) : math::OrdinaryDifferentialEquation(step_width_s), limit_(limit) { @@ -32,4 +34,6 @@ void RandomWalk::DerivativeFunction(double x, const math::Vector& state, m } } +} // namespace s2e::randomization + #endif // S2E_LIBRARY_RANDOMIZATION_RANDOM_WALK_TEMPLATE_FUNCTIONS_HPP_ diff --git a/src/s2e.cpp b/src/s2e.cpp index 853b04bee..3c9da8fa6 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -82,4 +82,4 @@ int main(int argc, char *argv[]) return EXIT_SUCCESS; } -} // namespace s2e +} // namespace s2e diff --git a/src/setting_file_reader/c2a_command_database.cpp b/src/setting_file_reader/c2a_command_database.cpp index 76572c1ab..7811b36ee 100644 --- a/src/setting_file_reader/c2a_command_database.cpp +++ b/src/setting_file_reader/c2a_command_database.cpp @@ -161,4 +161,4 @@ void DecodeC2aCommandArgument(const C2aArgumentType type, const std::string argu } } -} // namespace s2e::setting_file_reader +} // namespace s2e::setting_file_reader diff --git a/src/setting_file_reader/c2a_command_database.hpp b/src/setting_file_reader/c2a_command_database.hpp index fce12028f..f8905f49a 100644 --- a/src/setting_file_reader/c2a_command_database.hpp +++ b/src/setting_file_reader/c2a_command_database.hpp @@ -117,6 +117,6 @@ class C2aCommandDatabase { */ void DecodeC2aCommandArgument(const C2aArgumentType type, const std::string argument_string, uint8_t* param, size_t& size_param); -} // namespace s2e::setting_file_reader +} // namespace s2e::setting_file_reader #endif // S2E_LIBRARY_INITIALIZE_C2A_COMMAND_DATABASE_HPP_ diff --git a/src/setting_file_reader/initialize_file_access.cpp b/src/setting_file_reader/initialize_file_access.cpp index 4ca4c0769..187b55998 100644 --- a/src/setting_file_reader/initialize_file_access.cpp +++ b/src/setting_file_reader/initialize_file_access.cpp @@ -286,4 +286,4 @@ void IniAccess::ReadCsvString(std::vector>& output_valu } } -} // namespace s2e::setting_file_reader +} // namespace s2e::setting_file_reader diff --git a/src/setting_file_reader/initialize_file_access.hpp b/src/setting_file_reader/initialize_file_access.hpp index 9af1a3a8a..e63cd424f 100644 --- a/src/setting_file_reader/initialize_file_access.hpp +++ b/src/setting_file_reader/initialize_file_access.hpp @@ -218,6 +218,6 @@ void IniAccess::ReadVector(const char* section_name, const char* key_name, math: } } -} // namespace s2e::setting_file_reader +} // namespace s2e::setting_file_reader #endif // S2E_LIBRARY_INITIALIZE_INITIALIZE_FILE_ACCESS_HPP_ diff --git a/src/setting_file_reader/wings_operation_file.cpp b/src/setting_file_reader/wings_operation_file.cpp index 4b9b56d0a..78efa4d9d 100644 --- a/src/setting_file_reader/wings_operation_file.cpp +++ b/src/setting_file_reader/wings_operation_file.cpp @@ -48,4 +48,4 @@ std::string WingsOperationFile::GetLatestLine() { return line; } -} // namespace s2e::setting_file_reader +} // namespace s2e::setting_file_reader diff --git a/src/simulation/case/simulation_case.cpp b/src/simulation/case/simulation_case.cpp index cda5c0786..e8cfb56e6 100644 --- a/src/simulation/case/simulation_case.cpp +++ b/src/simulation/case/simulation_case.cpp @@ -108,4 +108,4 @@ void SimulationCase::InitializeSimulationConfiguration(const std::string initial global_environment_->LogSetup(*(simulation_configuration_.main_logger_)); } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/case/simulation_case.hpp b/src/simulation/case/simulation_case.hpp index 47800dee7..26f012dc4 100644 --- a/src/simulation/case/simulation_case.hpp +++ b/src/simulation/case/simulation_case.hpp @@ -77,8 +77,8 @@ class SimulationCase : public logger::ILoggable { inline const environment::GlobalEnvironment& GetGlobalEnvironment() const { return *global_environment_; } protected: - SimulationConfiguration simulation_configuration_; //!< Simulation setting - environment::GlobalEnvironment* global_environment_; //!< Global Environment + SimulationConfiguration simulation_configuration_; //!< Simulation setting + environment::GlobalEnvironment* global_environment_; //!< Global Environment /** * @fn InitializeSimulationConfiguration @@ -100,6 +100,6 @@ class SimulationCase : public logger::ILoggable { virtual void UpdateTargetObjects() = 0; }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_CASE_SIMULATION_CASE_HPP_ diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index d6f230149..f0d233936 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -93,4 +93,4 @@ std::string GroundStation::GetLogValue() const { return str_tmp; } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index 12ca04fec..c88f96666 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -95,8 +95,8 @@ class GroundStation : public logger::ILoggable { protected: unsigned int ground_station_id_; //!< Ground station ID geodesy::GeodeticPosition geodetic_position_; //!< Ground Station Position in the geodetic frame - math::Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] - math::Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] + math::Vector<3> position_ecef_m_{0.0}; //!< Ground Station Position in the ECEF frame [m] + math::Vector<3> position_i_m_{0.0}; //!< Ground Station Position in the inertial frame [m] double elevation_limit_angle_deg_; //!< Minimum elevation angle to work the ground station [deg] std::map is_visible_; //!< Visible flag for each spacecraft ID (not care antenna) @@ -111,6 +111,6 @@ class GroundStation : public logger::ILoggable { bool CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m); }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_GROUND_STATION_GROUND_STATION_HPP_ diff --git a/src/simulation/hils/hils_port_manager.cpp b/src/simulation/hils/hils_port_manager.cpp index ee0e7f1e1..8f68bff4f 100644 --- a/src/simulation/hils/hils_port_manager.cpp +++ b/src/simulation/hils/hils_port_manager.cpp @@ -261,4 +261,4 @@ int HilsPortManager::I2cControllerSend(unsigned int port_id, const unsigned char return UartSend(port_id, buffer, offset, length); } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/hils/hils_port_manager.hpp b/src/simulation/hils/hils_port_manager.hpp index 8753429e6..cd04dc173 100644 --- a/src/simulation/hils/hils_port_manager.hpp +++ b/src/simulation/hils/hils_port_manager.hpp @@ -170,6 +170,6 @@ class HilsPortManager { #endif }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_HILS_HILS_PORT_MANAGER_HPP_ diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp index 0a8cfb0e5..967b92b1d 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.cpp @@ -318,4 +318,4 @@ void InitializedMonteCarloParameters::GenerateQuaternionNormal() { } } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index 6b7493ee4..c44529766 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -234,6 +234,6 @@ void InitializedMonteCarloParameters::GetRandomizedVector(math::Vector(size, math::Quaternion(0, 0, 0, 1))); } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index e0dbf1a78..9e77403d0 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -172,6 +172,6 @@ class RelativeInformation : public logger::ILoggable { void ResizeLists(); }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_MULTIPLE_SPACECRAFT_RELATIVE_INFORMATION_HPP_ diff --git a/src/simulation/simulation_configuration.hpp b/src/simulation/simulation_configuration.hpp index d8ca3078f..e3adeb87d 100644 --- a/src/simulation/simulation_configuration.hpp +++ b/src/simulation/simulation_configuration.hpp @@ -19,7 +19,7 @@ namespace s2e::simulation { */ struct SimulationConfiguration { std::string initialize_base_file_name_; //!< Base file name for initialization - logger::Logger* main_logger_; //!< Main logger + logger::Logger* main_logger_; //!< Main logger unsigned int number_of_simulated_spacecraft_; //!< Number of simulated spacecraft std::vector spacecraft_file_list_; //!< File name list for spacecraft initialization @@ -37,6 +37,6 @@ struct SimulationConfiguration { ~SimulationConfiguration() { delete main_logger_; } }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SIMULATION_CONFIGURATION_HPP_ diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index db5899965..7302e2ed5 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -21,4 +21,4 @@ math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { void InstalledComponents::LogSetup(logger::Logger& logger) { UNUSED(logger); } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index d0a731355..5b9f44b8c 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -51,6 +51,6 @@ class InstalledComponents { virtual void LogSetup(logger::Logger& logger); }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index b0efbad8b..36a6f91a8 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -10,8 +10,8 @@ namespace s2e::simulation { -Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, - RelativeInformation* relative_information) +Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, + const int spacecraft_id, RelativeInformation* relative_information) : spacecraft_id_(spacecraft_id) { Initialize(simulation_configuration, global_environment, spacecraft_id, relative_information); } @@ -32,8 +32,8 @@ void Spacecraft::Initialize(const SimulationConfiguration* simulation_configurat clock_generator_.ClearTimerCount(); structure_ = new Structure(simulation_configuration, spacecraft_id); local_environment_ = new environment::LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); - dynamics_ = new dynamics::dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, structure_, - relative_information); + dynamics_ = new dynamics::dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, + spacecraft_id, structure_, relative_information); disturbances_ = new disturbances::Disturbances(simulation_configuration, spacecraft_id, structure_, global_environment); simulation_configuration->main_logger_->CopyFileToLogDirectory(simulation_configuration->spacecraft_file_list_[spacecraft_id]); @@ -77,4 +77,4 @@ void Spacecraft::Update(const environment::SimulationTime* simulation_time) { void Spacecraft::Clear(void) { dynamics_->ClearForceTorque(); } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index 5b490ec1e..d1e99a444 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -27,8 +27,8 @@ class Spacecraft { * @fn Spacecraft * @brief Constructor for single satellite simulation */ - Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, - RelativeInformation* relative_information = nullptr); + Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, + const int spacecraft_id, RelativeInformation* relative_information = nullptr); /** * @fn ~Spacecraft @@ -99,16 +99,16 @@ class Spacecraft { inline unsigned int GetSpacecraftId() const { return spacecraft_id_; } protected: - environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft - dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft - RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft - environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft - disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft - Structure* structure_; //!< Structure information of the spacecraft - InstalledComponents* components_; //!< Components information installed on the spacecraft - const unsigned int spacecraft_id_; //!< ID of the spacecraft + environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft + dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft + environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft + disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft + Structure* structure_; //!< Structure information of the spacecraft + InstalledComponents* components_; //!< Components information installed on the spacecraft + const unsigned int spacecraft_id_; //!< ID of the spacecraft }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_SPACECRAFT_HPP_ diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index b52091e23..44ed97d14 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -122,4 +122,4 @@ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { return rmm_params; } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/initialize_structure.hpp b/src/simulation/spacecraft/structure/initialize_structure.hpp index 53065ff2e..0ab741839 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.hpp +++ b/src/simulation/spacecraft/structure/initialize_structure.hpp @@ -28,6 +28,6 @@ std::vector InitSurfaces(std::string file_name); */ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name); -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_INITIALIZE_STRUCTURE_HPP_ diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 403487a3f..0734e849d 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -10,4 +10,4 @@ namespace s2e::simulation { KinematicsParameters::KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 2a1805dc3..c4dfadeb2 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -26,7 +26,7 @@ class KinematicsParameters { * @fn ~KinematicsParameters * @brief Destructor */ - ~KinematicsParameters(){}; + ~KinematicsParameters() {}; // Getter /** @@ -88,6 +88,6 @@ class KinematicsParameters { math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp index 0f8fc1377..7f7108f61 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp @@ -14,4 +14,4 @@ ResidualMagneticMoment::ResidualMagneticMoment(const math::Vector<3> constant_va random_walk_limit_Am2_(random_walk_limit_Am2), random_noise_standard_deviation_Am2_(random_noise_standard_deviation_Am2) {} -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 138e8ddf0..ae06bb85d 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -20,13 +20,13 @@ class ResidualMagneticMoment { * @fn ResidualMagneticMoment * @brief Constructor */ - ResidualMagneticMoment(const math::Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, const double random_walk_limit_Am2, - const double random_noise_standard_deviation_Am2); + ResidualMagneticMoment(const math::Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, + const double random_walk_limit_Am2, const double random_noise_standard_deviation_Am2); /** * @fn ~ResidualMagneticMoment * @brief Destructor */ - ~ResidualMagneticMoment(){}; + ~ResidualMagneticMoment() {}; // Getter /** @@ -65,12 +65,12 @@ class ResidualMagneticMoment { inline void AddRmmConstant_b_Am2(const math::Vector<3> rmm_const_b_Am2) { constant_value_b_Am2_ += rmm_const_b_Am2; } private: - math::Vector<3> constant_value_b_Am2_; //!< Constant value of RMM at body frame [Am2] + math::Vector<3> constant_value_b_Am2_; //!< Constant value of RMM at body frame [Am2] double random_walk_standard_deviation_Am2_; //!< Random walk standard deviation of RMM [Am2] double random_walk_limit_Am2_; //!< Random walk limit of RMM [Am2] double random_noise_standard_deviation_Am2_; //!< Standard deviation of white noise of RMM [Am2] }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/structure.cpp b/src/simulation/spacecraft/structure/structure.cpp index ffbe55e05..72260265d 100644 --- a/src/simulation/spacecraft/structure/structure.cpp +++ b/src/simulation/spacecraft/structure/structure.cpp @@ -31,4 +31,4 @@ void Structure::Initialize(const SimulationConfiguration* simulation_configurati residual_magnetic_moment_ = new ResidualMagneticMoment(InitResidualMagneticMoment(ini_fname)); } -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/structure.hpp b/src/simulation/spacecraft/structure/structure.hpp index c56943f58..fe099cd04 100644 --- a/src/simulation/spacecraft/structure/structure.hpp +++ b/src/simulation/spacecraft/structure/structure.hpp @@ -76,6 +76,6 @@ class Structure { ResidualMagneticMoment* residual_magnetic_moment_; //!< Residual Magnetic Moment }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_STRUCTURE_HPP_ diff --git a/src/simulation/spacecraft/structure/surface.cpp b/src/simulation/spacecraft/structure/surface.cpp index 6ea2356b0..16b8b5f24 100644 --- a/src/simulation/spacecraft/structure/surface.cpp +++ b/src/simulation/spacecraft/structure/surface.cpp @@ -16,4 +16,4 @@ Surface::Surface(const math::Vector<3> position_b_m, const math::Vector<3> norma specularity_(specularity), air_specularity_(air_specularity) {} -} // namespace s2e::simulation +} // namespace s2e::simulation diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 5f9007fe4..73a09d6e6 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -26,7 +26,7 @@ class Surface { * @fn ~Surface * @brief Destructor */ - ~Surface(){}; + ~Surface() {}; // Getter /** @@ -115,6 +115,6 @@ class Surface { double air_specularity_; //!< Specularity for air drag }; -} // namespace s2e::simulation +} // namespace s2e::simulation #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_SURFACE_HPP_ diff --git a/src/simulation_sample/case/sample_case.cpp b/src/simulation_sample/case/sample_case.cpp index 5487e0e08..4697ecd07 100644 --- a/src/simulation_sample/case/sample_case.cpp +++ b/src/simulation_sample/case/sample_case.cpp @@ -50,4 +50,4 @@ std::string SampleCase::GetLogValue() const { return str_tmp; } -} // namespace s2e::sample +} // namespace s2e::sample diff --git a/src/simulation_sample/case/sample_case.hpp b/src/simulation_sample/case/sample_case.hpp index 66302d589..af3fc5b74 100644 --- a/src/simulation_sample/case/sample_case.hpp +++ b/src/simulation_sample/case/sample_case.hpp @@ -59,6 +59,6 @@ class SampleCase : public simulation::SimulationCase { void UpdateTargetObjects(); }; -} // namespace s2e::sample +} // namespace s2e::sample #endif // S2E_SIMULATION_SAMPLE_CASE_SAMPLE_CASE_HPP_ diff --git a/src/simulation_sample/ground_station/sample_ground_station.cpp b/src/simulation_sample/ground_station/sample_ground_station.cpp index 5489d4423..4ec523260 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station.cpp @@ -26,4 +26,4 @@ void SampleGroundStation::Update(const environment::EarthRotation& celestial_rot components_->GetGsCalculator()->Update(spacecraft, spacecraft.GetInstalledComponents().GetAntenna(), *this, *(components_->GetAntenna())); } -} // namespace s2e::sample +} // namespace s2e::sample diff --git a/src/simulation_sample/ground_station/sample_ground_station.hpp b/src/simulation_sample/ground_station/sample_ground_station.hpp index 9acc8d613..aafafada0 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station.hpp @@ -51,6 +51,6 @@ class SampleGroundStation : public simulation::GroundStation { SampleGsComponents* components_; //!< Ground station related components }; -} // namespace s2e::sample +} // namespace s2e::sample #endif // S2E_SIMULATION_SAMPLE_GROUND_STATION_SAMPLE_GROUND_STATION_HPP_ diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.cpp b/src/simulation_sample/ground_station/sample_ground_station_components.cpp index c18528bb2..45ba2ee24 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.cpp @@ -29,4 +29,4 @@ void SampleGsComponents::CompoLogSetUp(logger::Logger& logger) { logger.AddLogList(gs_calculator_); } -} // namespace s2e::sample +} // namespace s2e::sample diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.hpp b/src/simulation_sample/ground_station/sample_ground_station_components.hpp index 1de5eec24..35d5571da 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.hpp @@ -51,6 +51,6 @@ class SampleGsComponents { const simulation::SimulationConfiguration* configuration_; //!< Simulation setting }; -} // namespace s2e::sample +} // namespace s2e::sample #endif // S2E_SIMULATION_SAMPLE_GROUND_STATION_SAMPLE_GROUND_STATION_COMPONENTS_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 4a9d9e852..1554f6ccb 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -13,9 +13,10 @@ namespace s2e::sample { using namespace components; -SampleComponents::SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, - const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, - const unsigned int spacecraft_id) +SampleComponents::SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, + const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, + const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, + const unsigned int spacecraft_id) : configuration_(configuration), dynamics_(dynamics), structure_(structure), @@ -227,4 +228,4 @@ void SampleComponents::LogSetup(logger::Logger& logger) { logger.AddLogList(orbit_observer_); } -} // namespace s2e::sample +} // namespace s2e::sample diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 27c1118fc..428ec9645 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -62,8 +62,9 @@ class SampleComponents : public simulation::InstalledComponents { * @fn SampleComponents * @brief Constructor */ - SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, - const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, + SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, + const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, + const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id); /** * @fn ~SampleComponents @@ -139,12 +140,12 @@ class SampleComponents : public simulation::InstalledComponents { // States const simulation::SimulationConfiguration* configuration_; //!< Simulation settings - const dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + const dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft simulation::Structure* structure_; //!< Structure information of the spacecraft - const environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft - const environment::GlobalEnvironment* global_environment_; //!< Global environment information + const environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft + const environment::GlobalEnvironment* global_environment_; //!< Global environment information }; -} // namespace s2e::sample +} // namespace s2e::sample #endif // S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_COMPONENTS_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_port_configuration.hpp b/src/simulation_sample/spacecraft/sample_port_configuration.hpp index bfa1a57db..dd67bddab 100644 --- a/src/simulation_sample/spacecraft/sample_port_configuration.hpp +++ b/src/simulation_sample/spacecraft/sample_port_configuration.hpp @@ -29,6 +29,6 @@ enum class UARTPortConfig { kUartComponentMax //!< Maximum port number. Do not remove. Place on the bottom. }; -} // namespace s2e::sample +} // namespace s2e::sample #endif // S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_PORT_CONFIGURATION_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.cpp b/src/simulation_sample/spacecraft/sample_spacecraft.cpp index bfc1bdcc9..13ab3289d 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.cpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.cpp @@ -12,12 +12,12 @@ namespace s2e::sample { -SampleSpacecraft::SampleSpacecraft(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const unsigned int spacecraft_id) +SampleSpacecraft::SampleSpacecraft(const simulation::SimulationConfiguration* simulation_configuration, + const environment::GlobalEnvironment* global_environment, const unsigned int spacecraft_id) : simulation::Spacecraft(simulation_configuration, global_environment, spacecraft_id) { sample_components_ = new SampleComponents(dynamics_, structure_, local_environment_, global_environment, simulation_configuration, &clock_generator_, spacecraft_id); components_ = sample_components_; } -} // namespace s2e::sample +} // namespace s2e::sample diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.hpp b/src/simulation_sample/spacecraft/sample_spacecraft.hpp index 43f9ff564..4a3767acc 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.hpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.hpp @@ -37,6 +37,6 @@ class SampleSpacecraft : public simulation::Spacecraft { SampleComponents* sample_components_; }; -} // namespace s2e::sample +} // namespace s2e::sample #endif // S2E_SIMULATION_SAMPLE_SPACECRAFT_SAMPLE_SPACECRAFT_HPP_ diff --git a/src/utilities/com_port_interface.hpp b/src/utilities/com_port_interface.hpp index aca6d663d..3da5bd6eb 100644 --- a/src/utilities/com_port_interface.hpp +++ b/src/utilities/com_port_interface.hpp @@ -108,6 +108,6 @@ class ComPortInterface { msclr::gcroot rx_buf_; //!< RX Buffer }; -} // namespace s2e::utilities +} // namespace s2e::utilities #endif // S2E_LIBRARY_COMMUNICATION_COM_PORT_INTERFACE_HPP_ diff --git a/src/utilities/endian.cpp b/src/utilities/endian.cpp index 8286204ea..6aa2111a1 100644 --- a/src/utilities/endian.cpp +++ b/src/utilities/endian.cpp @@ -29,4 +29,4 @@ void *endian_memcpy(void *dst, const void *src, size_t size) { #endif // IS_LITTLE_ENDIAN } -} // namespace s2e::utilities +} // namespace s2e::utilities diff --git a/src/utilities/endian.hpp b/src/utilities/endian.hpp index 966800f36..0660d78f9 100644 --- a/src/utilities/endian.hpp +++ b/src/utilities/endian.hpp @@ -22,6 +22,6 @@ namespace s2e::utilities { */ void *endian_memcpy(void *dst, const void *src, size_t count); -} // namespace s2e::utilities +} // namespace s2e::utilities #endif // S2E_LIBRARY_UTILITIES_ENDIAN_HPP_ diff --git a/src/utilities/macros.hpp b/src/utilities/macros.hpp index f78b16fe0..cbd37f012 100644 --- a/src/utilities/macros.hpp +++ b/src/utilities/macros.hpp @@ -10,6 +10,6 @@ namespace s2e::utilities { #define UNUSED(x) (void)(x) //!< Macro to avoid unused warnings -} // namespace s2e::utilities +} // namespace s2e::utilities #endif // S2E_LIBRARY_UTILITIES_MACROS_HPP_ diff --git a/src/utilities/quantization.hpp b/src/utilities/quantization.hpp index 47bdd4f71..9fd075e3b 100644 --- a/src/utilities/quantization.hpp +++ b/src/utilities/quantization.hpp @@ -26,6 +26,6 @@ double quantization(const double continuous_number, const double resolution); */ float quantization_float(const double continuous_number, const double resolution); -} // namespace s2e::utilities +} // namespace s2e::utilities #endif // S2E_LIBRARY_UTILITIES_QUANTIZATION_HPP_ diff --git a/src/utilities/ring_buffer.cpp b/src/utilities/ring_buffer.cpp index feb9ec73e..40aed8adb 100644 --- a/src/utilities/ring_buffer.cpp +++ b/src/utilities/ring_buffer.cpp @@ -47,4 +47,4 @@ int RingBuffer::Read(byte* buffer, const unsigned int offset, const unsigned int return read_count; } -} // namespace s2e::utilities +} // namespace s2e::utilities diff --git a/src/utilities/ring_buffer.hpp b/src/utilities/ring_buffer.hpp index 95a45d60f..3855c8179 100644 --- a/src/utilities/ring_buffer.hpp +++ b/src/utilities/ring_buffer.hpp @@ -54,6 +54,6 @@ class RingBuffer { unsigned int write_pointer_; //!< Write pointer }; -} // namespace s2e::utilities +} // namespace s2e::utilities #endif // S2E_LIBRARY_UTILITIES_RING_BUFFER_HPP_ diff --git a/src/utilities/slip.cpp b/src/utilities/slip.cpp index beeef8e53..b1f0fbb03 100644 --- a/src/utilities/slip.cpp +++ b/src/utilities/slip.cpp @@ -80,4 +80,4 @@ std::vector encode_slip_with_header(const std::vector in) { return out; } -} // namespace s2e::utilities +} // namespace s2e::utilities diff --git a/src/utilities/slip.hpp b/src/utilities/slip.hpp index e001295b3..da9e222d5 100644 --- a/src/utilities/slip.hpp +++ b/src/utilities/slip.hpp @@ -42,6 +42,6 @@ std::vector encode_slip(std::vector in); */ std::vector encode_slip_with_header(std::vector in); -} // namespace s2e::utilities +} // namespace s2e::utilities #endif // S2E_LIBRARY_UTILITIES_SLIP_HPP_ From 38ff92f7ebbf423243490c2e2424c5625efb22c3 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Sun, 29 Sep 2024 17:39:56 +0900 Subject: [PATCH 440/456] solve build warning --- src/dynamics/orbit/time_series_file_orbit_propagation.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index ad1d3d73c..edcc344da 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -41,8 +41,8 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn reference_time_ = CalcEphemerisTimeData(reference_interpolation_id_); // Initialize orbit - orbit_position_i_m_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); - orbit_velocity_i_m_s_.assign(1.0, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_position_i_m_.assign(static_cast(1), orbit::InterpolationOrbit(number_of_interpolation)); + orbit_velocity_i_m_s_.assign(static_cast(1), orbit::InterpolationOrbit(number_of_interpolation)); // Initialize interpolation for (int i = 0; i < number_of_interpolation; i++) { @@ -87,7 +87,7 @@ void TimeSeriesFileOrbitPropagation::Propagate(const double end_time_s, const do // Check interpolation update double current_ephemris_time = (current_time_jd - 2451545.0) * 86400.0; double diff_s = current_ephemris_time - reference_time_; - double medium_time_s = orbit_position_i_m_[0].GetTimeList()[std::round(number_of_interpolation_ / 2.0)]; + double medium_time_s = orbit_position_i_m_[0].GetTimeList()[static_cast(std::round(number_of_interpolation_ / 2.0))]; if (diff_s > medium_time_s) { UpdateInterpolationInformation(); } From 9f2908f43340efa1e1005a4fb1937408d84acf6c Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Mon, 30 Sep 2024 14:59:04 +0900 Subject: [PATCH 441/456] modify 1 --- src/dynamics/orbit/time_series_file_orbit_propagation.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index edcc344da..709b23335 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -41,8 +41,8 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn reference_time_ = CalcEphemerisTimeData(reference_interpolation_id_); // Initialize orbit - orbit_position_i_m_.assign(static_cast(1), orbit::InterpolationOrbit(number_of_interpolation)); - orbit_velocity_i_m_s_.assign(static_cast(1), orbit::InterpolationOrbit(number_of_interpolation)); + orbit_position_i_m_.assign(1, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_velocity_i_m_s_.assign(1, orbit::InterpolationOrbit(number_of_interpolation)); // Initialize interpolation for (int i = 0; i < number_of_interpolation; i++) { From f372519319be08fff753911714135ff577b10c3b Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Mon, 30 Sep 2024 16:18:03 +0900 Subject: [PATCH 442/456] add time_series_orbit.csv --- .../orbit_files/time_series_orbit.csv | 4072 +++++++++++++++++ 1 file changed, 4072 insertions(+) create mode 100644 settings/sample_satellite/orbit_files/time_series_orbit.csv diff --git a/settings/sample_satellite/orbit_files/time_series_orbit.csv b/settings/sample_satellite/orbit_files/time_series_orbit.csv new file mode 100644 index 000000000..6ee1558ff --- /dev/null +++ b/settings/sample_satellite/orbit_files/time_series_orbit.csv @@ -0,0 +1,4072 @@ +ephemeris_time[s],position_i_x[m],position_i_y[m],position_i_z[m],velocity_i_x[m/s],velocity_i_y[m/s],velocity_i_z[m/s] +715564027.4963,156763245.9386,-190393643.02541184,95564270.4990822,731.5280577804,-634.4221281717596,132.98336504802236 +715571341.8627,162023931.9353,-194926426.171367,96482978.8459601,707.0923875188,-605.2501479322574,118.38289214154844 +715580751.2772,168534730.9544,-200453013.18907884,97513617.99116926,677.0422627965,-569.8108622115121,100.91295380644247 +715590160.6918,174769366.715,-205656058.9727065,98386069.09765702,648.3616956122,-536.4329528434344,84.7281405526448 +715599570.1063,180739888.6927,-210553699.56114495,99111594.6969217,620.8775450338,-504.85673407112046,69.65780767685317 +715608979.5209,186456843.2569,-215161841.20328796,99700000.18021005,594.4424482704001,-474.86616912323746,55.56158368780805 +715618388.9354,191929490.2049,-219494526.00593194,100159885.85031083,568.9295652003,-446.2798086423517,42.32279056985807 +715627798.35,197165976.2691,-223564224.29542544,100498846.07077189,544.2285178062,-418.9439729044354,29.843540226644436 +715637207.7645,202173474.02679998,-227382069.5892678,100723627.25093108,520.2421941061,-392.7275481649419,18.04101995931441 +715646617.1791,206958294.75550002,-230958052.53263763,100840256.581833,496.8841910615,-367.5179816098753,6.844649817128101 +715656026.5936,211525978.5704,-234301179.1254007,100854145.55012357,474.07671709209995,-343.2181614827633,-3.8061286693342566 +715665436.0082,215881367.1176,-237419604.4866989,100770176.03567857,451.7488351665,-319.7439821497691,-13.96358251603398 +715674845.4227,220028660.7715,-240320745.87434497,100592771.62384214,429.83494299179995,-297.02243841836514,-23.673057026772398 +715684254.8373,223971462.3471,-243011379.84516898,100325957.4025372,408.2734078304,-274.99014433466795,-32.97406764251687 +715688959.5445,225867149.03579998,-244279720.14154235,100160183.10136902,397.6062824546,-264.21500341268177,-37.48237256388195 +715691311.8982,226796212.94709998,-244894970.75910285,100069395.43673636,392.297964188,-258.88492536648516,-39.702727329505976 +715692488.075,227256066.9413,-245197905.28111902,100022049.44062343,389.6497239813,-256.2339385142843,-40.80466121931643 +715693076.1634,227484826.4524,-245348204.6453093,99997891.21608691,388.3270347076,-254.9119194651607,-41.35359225787661 +715693370.2076,227598914.58020002,-245423062.94782877,99985691.14557286,387.6660416699,-254.25177379105472,-41.62755187427055 +715693517.2297,227655885.7672,-245460419.32818958,99979560.91408469,387.3356322875,-253.92191632922396,-41.76440558805807 +715693590.7408,227684353.1452,-245479079.33489326,99976488.2546943,387.170449285,-253.75704136909724,-41.83280096885237 +715693627.4963,227698582.2808,-245488404.79353058,99974950.03975518,387.0878631942,-253.67461732285636,-41.866990796088785 +715693664.2518,227712808.3809,-245497727.22272977,99973410.56821942,387.0052807057,-253.59220222884773,-41.901175383526976 +715693737.7629,227741251.4755,-245516362.99438584,99970327.85625659,386.8401265214,-253.42739888672298,-41.969528845763975 +715693884.785,227798101.2453,-245553598.1997845,99964147.36202367,386.5098612305,-253.09789951499374,-42.10617296672511 +715694178.8292,227911655.13709998,-245627923.33201766,99951726.13516967,385.84950219539996,-252.43932944253976,-42.37921037220819 +715694766.9176,228138180.5633,-245775993.06951877,99926643.07149409,384.529464206,-251.12389936513614,-42.924284844681424 +715695943.0944,228588903.8329,-246069815.11524853,99875517.23990135,381.89205969790004,-248.49984289609012,-44.0104563161382 +715698295.448,229481054.37669998,-246648226.5915791,99769448.4335765,376.6275455973,-243.2786576436546,-46.16707754877926 +715703000.1553,231228279.27940002,-247768410.98403248,99542212.3891322,366.136563127,-232.9417901124887,-50.41889406757497 +715712409.5699,234575175.5498,-249864486.83715355,99028658.11156674,345.2814878306,-212.67380519741258,-58.68783219796623 +715721818.9844,237726448.8571,-251772294.0294614,98438697.0304816,324.5462401355,-192.91972373071175,-66.66304911845108 +715731228.399,240682937.04799998,-253496537.78884944,97774993.95556167,303.868495393,-173.65301628832583,-74.36512371635561 +715740637.8135,243444866.7706,-255041707.11874443,97040032.32399485,283.1802123355,-154.8543379394204,-81.81207590839726 +715749106.2866,245763897.3543,-256282842.75216284,96319565.32200795,264.48839461250003,-138.32610684141042,-88.30922299688848 +715756727.9124,247715273.24989998,-257281433.5083567,95624729.78376344,247.5516651684,-123.76515172840581,-93.99913165250393 +715763199.9172,249270550.2093,-258043076.82122195,95001040.2375045,233.0418097246,-111.63700398060271,-98.71860716753693 +715764453.2564,249560857.14790002,-258181540.37345752,94876746.62104207,230.2148028968,-109.31384644207176,-99.62097507452441 +715771045.722,251029266.2951,-258862240.34528878,94204497.3168601,215.232889982,-97.234187173782,-104.3069613908248 +715777638.1876,252398186.8889,-259464101.56689993,93501684.48945048,200.0225271461,-85.39821942497376,-108.89374333768635 +715780934.4204,253044820.92339998,-259735980.8259846,93139018.80778934,192.3118091493,-79.57642059676128,-111.15085981087223 +715784230.6533,253665904.8978,-259988780.5035829,92768952.32047178,184.518245749,-73.82209623673718,-113.38426428282429 +715787526.8861,254261148.2185,-260222727.98699337,92391562.61257419,176.6309866243,-68.13835213318855,-115.59430630330104 +715790823.1189,254830222.2022,-260438061.79940674,92006926.1074329,168.6377250352,-62.52885248353386,-117.78134367421778 +715794119.3517,255372754.8073,-260635033.57938743,91615118.01604319,160.52441371449999,-56.99790610783423,-119.94575581908697 +715797415.5845,255888324.3511,-260813910.3695098,91216212.23908782,152.2749120883,-51.55056962428947,-122.08796230464964 +715800711.8173,256376451.9055,-260974977.27944264,90810281.19393465,143.87054530359998,-46.192771301132986,-124.20844851937845 +715804008.0501,256836592.063,-261118540.5973533,90397395.54176973,135.2895478114,-40.93146018687843,-126.30780158925195 +715807304.2829,257268121.6288,-261244931.44170713,89977623.77370559,126.50635469939999,-35.77478615038925,-128.38676097337967 +715810600.5157,257670325.659,-261354510.06713092,89551031.59705815,117.49068989189999,-30.73231766504652,-130.44629034520545 +715813896.7486,258042380.0688,-261447670.9613115,89117681.03791566,108.206379992,-25.81530548050535,-132.48768068750726 +715815544.865,258216808.5207,-261488228.86425632,88898489.42981765,103.4501919854,-23.40789854246432,-133.50210214083344 +715817192.9814,258383329.7337,-261524848.89902028,88677629.12981617,98.60979273507999,-21.037001521689067,-134.5126997642903 +715818841.0978,258541799.28509998,-261557592.8894342,88455106.17566317,93.67822167639001,-18.70464658689187,-135.51980491408028 +715820489.2142,258692060.6556,-261586526.15264535,88230926.00746208,88.64775394707,-16.413043019068255,-136.52381157986744 +715822137.3306,258833943.8937,-261611717.80392477,88005093.35591441,83.50979066097,-14.164593385801247,-137.5251899165017 +715823785.447,258967264.0687,-261633241.08914226,87777612.10270293,78.25473014546,-11.961910974625866,-138.5245028738693 +715825433.5634,259091819.49580002,-261651173.74773768,87548485.11151291,72.87181577874,-9.80783838926299,-139.5224268191313 +715827081.6798,259207389.6891,-261665598.40631473,87317714.02060133,67.34895543604,-7.705467117967636,-140.51977721816513 +715827905.738,259261730.7033,-261671522.49707922,87201712.05298126,64.53084943674001,-6.6747085835792745,-141.01853795069 +715828729.7962,259313732.9874,-261676603.0056241,87085298.98802114,61.672506264389995,-5.658157717396243,-141.51754076888784 +715829553.8544,259363362.5727,-261680851.83007234,86968474.56262626,58.77193596654,-4.656279945320279,-142.01694239527401 +715830377.9126,259410583.7969,-261684281.26050836,86851238.37816466,55.82701663589,-3.6695599897578433,-142.51691587513807 +715831201.9708,259455359.1909,-261686903.99414158,86733589.88585323,52.8354832813,-2.6985024255133254,-143.01765247378125 +715831613.9999,259476817.469,-261687916.9332046,86674610.80802988,51.32148640578,-2.21901027313298,-143.26837221964138 +715832026.029,259497649.357,-261688733.15267596,86615528.3713341,49.794915539479994,-1.7436321819907548,-143.51936382592152 +715832438.0581,259517849.6065,-261689354.36199412,86556342.45768659,48.25544164811,-1.2724370189009235,-143.77065732636473 +715832850.0872,259537412.8313,-261689782.29894945,86497052.93615556,46.70272422018,-0.8054949711101358,-144.02228434826574 +715833056.1018,259546953.8373,-261689924.34130937,86467369.27788354,45.921289506849995,-0.5736411618520876,-144.1482332724574 +715833159.109,259551663.88189998,-261689977.47855306,86452517.71606982,45.52928349582,-0.45812251262906756,-144.21124346344493 +715833262.1163,259556333.5023,-261690018.73064944,86437659.66249217,45.13641076078,-0.3428775532437385,-144.2742782075543 +715833365.1236,259560962.6091,-261690048.1258378,86422795.11461459,44.742665523279996,-0.22790742978757095,-144.33733806403418 +715833416.6272,259563261.9418,-261690058.38588107,86415360.40446058,44.54546389627,-0.17052579110550425,-144.36887758619264 +715833442.3791,259564407.798,-261690062.40815455,86411642.44022457,44.44678051046,-0.14186089067985108,-144.38464977703632 +715833455.255,259564979.773,-261690064.14249927,86409783.30576524,44.397418134279995,-0.12753492808685252,-144.39253648380785 +715833461.6929,259565265.5221,-261690064.94046167,86408853.70044641,44.37273177024,-0.12037356969516821,-144.39647999052403 +715833468.1309,259565551.1122,-261690065.692413,86407924.06977254,44.34804195369,-0.11321329362032628,-144.40042359965884 +715833474.5688,259565836.5434,-261690066.39826164,86406994.4137039,44.32334868322,-0.10605410012540517,-144.4043673113163 +715833481.0068,259566121.8157,-261690067.05791566,86406064.73220064,44.29865195737,-0.09889598951320977,-144.40831112569202 +715833493.8827,259566691.883,-261690068.23919868,86404205.29311073,44.24924813399,-0.08458301799844037,-144.4161990630102 +715833519.6345,259567830.109,-261690070.04887435,86400486.11015661,44.15039895917,-0.05597008191628561,-144.43197617613603 +715833571.1381,259570098.92069998,-261690071.45888916,86393046.52529849,43.952534172890005,0.0012036988839412288,-144.46353538829288 +715833674.1454,259574605.9433,-261690065.4539999,86378162.47852196,43.55613624739,0.11534238591767121,-144.5266740119086 +715833777.1527,259579072.08789998,-261690047.70624298,86363271.92656122,43.15884219222,0.22920160051508986,-144.58984006005144 +715833880.16,259583497.262,-261690018.24472678,86348374.86663583,42.760645969399995,0.34278017059822474,-144.65303412985975 +715834086.1745,259592224.32450002,-261689924.29597896,86318561.21100996,41.96152259995,0.5690906628459516,-144.7795087632807 +715834498.2036,259609182.6575,-261689597.1146299,86258855.67113212,40.35217808225,1.018291759624887,-145.0328214742402 +715834910.2327,259625474.78980002,-261689085.79922697,86199045.65358807,38.72769666999,1.462868825843202,-145.2866532927219 +715835322.2618,259641094.39819998,-261688392.27123213,86139130.93565343,37.08765741761,1.9027436874575798,-145.54104762892348 +715835734.2909,259656034.9829,-261687518.48431313,86079111.27613047,35.4316237578,2.3378368583625644,-145.79605029732784 +715836558.3491,259683852.1585,-261685238.1146352,85958756.06963718,32.069744452870005,3.193353728244979,-146.30807681567416 +715837382.4073,259708870.53019997,-261682260.99020875,85837977.6974602,28.63822505694,4.0287580804102845,-146.82315341840265 +715838206.4655,259731031.0285,-261678603.9638992,85716773.4561057,25.1329309837,4.843369248123992,-147.34174987416105 +715839030.5237,259750271.04270002,-261674284.45738718,85595140.23262888,21.54939685128,5.636488761209044,-147.8643916997928 +715839854.5819,259766524.1342,-261669320.47416422,85473074.4553026,17.88279303661,6.407402465571494,-148.39166769450065 +715840678.6401,259779719.7196,-261663730.61178052,85350572.03771636,14.12788822914,7.155383391159113,-148.92423861411308 +715841502.6984,259789782.72980002,-261657534.07106,85227628.3170478,10.27900705214,7.879695636643433,-149.46284729622104 +715843150.8148,259800185.9332,-261643400.80021977,84980394.98085491,2.2741037471439998,9.254357245190995,-150.56163132943067 +715844634.1195,259797975.8742,-261628811.0746532,84756314.34089553,-5.31953792671,10.40324886362125,-151.5807702951432 +715845969.0938,259786114.5769,-261614274.80887884,84553328.72959259,-12.510306223079999,11.362263826441371,-152.5288019697381 +715847304.0681,259764404.85930002,-261598507.233625,84349054.22182807,-20.08141920621,12.247554842498914,-153.51298860023627 +715848639.0424,259732307.7008,-261581608.1765313,84143437.16427371,-28.08097505023,13.057138010599793,-154.54170530495486 +715849974.0167,259689214.5239,-261563679.52256495,83936411.39707837,-36.56534952681,13.789988345323579,-155.6254010632265 +715851308.991,259634434.98839998,-261544823.6003607,83727895.09941868,-45.600995026679996,14.446572119858857,-156.77720582770465 +715852643.9653,259567182.0871,-261525140.7072075,83517786.6940269,-55.266706171799996,15.029623075761187,-158.01374612072897 +715853978.9395,259486553.8294,-261504725.37117884,83305959.47828165,-65.65648857488,15.54527887060432,-159.3562518269308 +715855313.9138,259391510.5787,-261483660.74655542,83092254.50854683,-76.88320850091999,16.004753966824694,-160.83207376331202 +715856648.8881,259280846.9398,-261462010.33082265,82876471.13123453,-89.08325583538,16.426825074026375,-162.47679042163605 +715857983.8624,259153156.4844,-261439805.50530124,82658354.1053246,-102.4225067982,16.841544663390167,-164.33715999702287 +715858200.2221,259130751.8159,-261436153.30122408,82622763.2705383,-104.7049088838,16.910875218194327,-164.66292750087834 +715858200.2221,259130750.1223,-261436154.18654937,82622763.0612167,-104.70484791129999,16.910945282458982,-164.6629285537212 +715858428.7089,259106549.0605,-261432280.89078584,82585099.8814117,-107.1544154388,16.985516048090894,-165.01517127322052 +715859202.5569,259020328.0829,-261419034.88047567,82456922.38485497,-115.7658849424,17.25302584162487,-166.27608909142887 +715859976.4049,258927243.08670002,-261405569.61373553,82327724.62041724,-124.9031811158,17.55493394745895,-167.65507997491835 +715860750.2529,258826865.8636,-261391851.50849944,82197407.71489953,-134.6225062219,17.910014224285057,-169.1721347127964 +715861524.1009,258718721.91289997,-261377830.49471095,82065855.83497111,-144.9874500632,18.342312383606306,-170.85122474491342 +715862297.9488,258602284.3524,-261363435.39410907,81932932.77339733,-156.0699879808,18.882633088865887,-172.72121345949176 +715863071.7968,258476967.007,-261348567.9611615,81798477.73023327,-167.951550803,19.570472135757576,-174.81699600683362 +715863845.6448,258342116.68420002,-261333095.24476138,81662300.1255673,-180.7241169927,20.456532099269715,-177.18092466615087 +715864619.4928,258197004.5851,-261316839.6826969,81524173.15136464,-194.4912385027,21.606001204148498,-179.86458907704449 +715865393.3408,258040817.0448,-261299566.33131877,81383825.8121829,-209.368834704,23.102822290291414,-182.93102844162098 +715866253.1718,257853177.4276,-261278801.23187062,81224882.65631053,-227.35869979109998,25.306008190373504,-186.88160155938613 +715866683.0874,257753378.5437,-261267634.2589715,81144066.94434695,-236.98723133,26.677380493346433,-189.10989622286 +715867113.0029,257649343.0503,-261255831.91774556,81062252.32020569,-247.07207084249998,28.267129814124928,-191.5320362086942 +715867542.9185,257540869.1352,-261243293.10054716,80979350.86669968,-257.6395319475,30.109669343984578,-194.16973366633908 +715867972.834,257427743.5944,-261229900.81464338,80895264.79130565,-268.7162243657,32.2446031055684,-197.04725998051973 +715868402.7496,257309741.8089,-261215519.79508284,80809885.27137429,-280.32854594730003,34.71745350247028,-200.1916972966993 +715868832.6651,257186627.97550002,-261199993.79446837,80723091.19308814,-292.5019858904,37.580452900320964,-203.63318407341907 +715869262.5807,257058155.6935,-261183142.51600716,80634747.78781198,-305.2601885982,40.89338413361257,-207.4051375025047 +715869692.4962,256924069.00640002,-261164758.1850893,80544705.18333004,-318.623719962,44.72444199045327,-211.54442798200736 +715870122.4117,256784104.0585,-261144601.74936345,80452796.89561643,-332.608468991,49.151069729608494,-216.09147039495204 +715870552.3273,256637991.5212,-261122398.74102286,80358838.308323,-347.2236144254,54.26069857990056,-221.09018374393122 +715870982.2428,256485460.00980002,-261097834.85236806,80262625.20722757,-362.4690870616,60.15128501651576,-226.58775491016763 +715871412.1584,256326240.7043,-261070551.35474902,80163932.47405182,-378.33247059390004,66.9314971985911,-232.63412374491304 +715871842.0739,256160073.42450002,-261040140.56151566,80062513.08552508,-394.7853130649,74.72035126714566,-239.28108798283938 +715872271.9895,255986714.4208,-261006141.583833,79958097.58808737,-411.77888479250004,83.64603799806055,-246.58090989074554 +715872701.905,255805946.0825,-260968036.83668998,79850394.30869615,-429.23950196299995,93.84363177669246,-254.58429943608888 +715873131.8206,255617588.7086,-260925249.82706773,79739090.58589663,-447.06368019390004,105.45133412739101,-263.33765792001446 +715873561.7361,255421514.3231,-260877144.93278116,79623855.35940747,-465.1135640339,118.60491225812662,-272.879505438175 +715873991.6517,255217662.2821,-260823030.01179695,79504343.47369032,-483.21330106159996,133.43007384183204,-283.2360979117487 +715874421.5672,255006056.0777,-260762162.75163627,79380202.01792194,-501.14725645659996,150.0327130098471,-294.41637716488094 +715874851.4827,254786820.3249,-260693761.6272707,79251078.92272612,-518.6611347021,168.48729777925917,-306.4065924449079 +715875329.1667,254534574.7479,-260607945.6609314,79101352.9450165,-537.2773452899,191.19946580631614,-320.6273520675598 +715875568.0086,254405186.80249998,-260560831.38440293,79023889.77370863,-546.1245415594001,203.41743722773313,-328.0628625797542 +715875806.8506,254273730.125,-260510732.02597463,78944627.11955754,-554.5911726552,216.19276646787742,-335.6925123498452 +715876045.6926,254140302.1722,-260457516.8876198,78863521.0626211,-562.6224498183,229.50400133755153,-343.49526561751895 +715876284.5346,254005013.3314,-260401061.23988432,78780533.08399583,-570.1650603763,243.32259151928446,-351.4469532449376 +715876523.3765,253867986.4246,-260341248.02615008,78695630.79076853,-577.1683607486,257.61288749019127,-359.5205050046252 +715876762.2185,253729355.9392,-260277969.52342016,78608788.56627901,-583.5855912630999,272.33236523016,-367.68629495715686 +715877001.0605,253589266.9464,-260211128.94764847,78519988.13284978,-589.3750501234,287.4320832986297,-375.91259086234385 +715877239.9024,253447873.7644,-260140641.90404406,78429218.99015611,-594.5011763099,302.8573755046721,-384.1660993790824 +715877478.7444,253305338.37690002,-260066437.65027565,78336478.71523154,-598.9354806254,318.5487595476753,-392.4125857352024 +715877717.5864,253161828.651,-259988460.11894262,78241773.10778718,-602.6572750344001,334.44303041581213,-400.6175430889348 +715877837.0074,253089762.00640002,-259948043.0548229,78193687.36416368,-604.246774518,342.44578038304604,-404.69376038729 +715877896.7178,253053660.2179,-259927475.70984995,78169462.27302381,-604.9732576685,346.45741531728027,-406.7234657654023 +715877926.5731,253035593.3969,-259917102.16812658,78157304.32523862,-605.3194079008,348.46533956590247,-407.7359919241446 +715877941.5007,253026556.1535,-259911892.91231605,78151214.02139702,-605.4882087972,349.4697710290141,-408.24164545141434 +715877948.9645,253022036.5921,-259909282.6612276,78148166.03968619,-605.5715406250999,349.9720969256632,-408.4943163580958 +715877952.6964,253019776.5789,-259907976.12963375,78146641.34171736,-605.6129393824,350.223286519105,-408.6206124147834 +715877954.5624,253018646.5144,-259907322.51233047,78145878.81600356,-605.6335719718,350.34888786036674,-408.6837505376958 +715877956.4283,253017516.4115,-259906668.66064698,78145116.17248437,-605.6541600355,350.4744935251946,-408.7468820380617 +715877960.1602,253015256.0906,-259905360.25402823,78143590.53203611,-605.6952025868,350.72571770650956,-408.8731251138745 +715877967.6241,253010734.991,-259902740.62818214,78140537.83808705,-605.7767533893,351.2282165430847,-409.1255311174055 +715877982.5517,253001690.979,-259897490.12347487,78134426.80041325,-605.9377178745,352.23340894410495,-409.6300190915536 +715878012.4069,252983595.8529,-259886944.0895873,78122182.14906129,-606.2510994288,354.2445153289799,-410.6376714798529 +715878072.1174,252947378.3827,-259865671.83312324,78097602.7313932,-606.8436882011,358.26915619574777,-412.6474640989403 +715878191.5384,252874844.08449998,-259822406.04225233,78048085.04437375,-607.8923981829,366.3244923908285,-416.64328218650627 +715878430.3804,252729453.8357,-259732988.4360708,77947628.64222784,-609.4474824941,382.4303633812578,-424.5265500334899 +715878669.2223,252583777.4991,-259639730.03020683,77845308.94419435,-610.2907580268,398.4756467748739,-432.2414113318209 +715878908.0643,252437982.82299998,-259542652.83336338,77741169.36534852,-610.4423620663,414.3977584229386,-439.76162530736997 +715879146.9063,252292231.91820002,-259441793.37508473,77635259.22078595,-609.9292349016,430.13785386301873,-447.0640813503534 +715879385.7483,252146679.73929998,-259337201.70282847,77527632.94597021,-608.7841939632999,445.6417206751304,-454.1290484748662 +715879624.5902,252001472.8024,-259228940.18859878,77418349.27113454,-607.0449035378999,460.8604688692209,-460.9403070486011 +715879863.4322,251856748.1575,-259117082.20021686,77307470.38033079,-604.7527927203,475.75100999555787,-467.48516858419316 +715880102.2742,251712632.6131,-259001710.6657899,77195061.06818472,-601.951975275,490.27632736900983,-473.754395216029 +715880341.1161,251569242.227,-258882916.62408298,77081187.94173405,-598.6882077916,504.40555331309565,-479.74203363147257 +715880579.9581,251426682.0313,-258760797.76019797,76965918.66093248,-595.0079283506,518.1138738948164,-485.4451815598809 +715881057.642,251144417.036,-258507001.08805025,76731463.43352093,-586.5819631402,544.1972598578534,-495.9999223748966 +715881535.326,250866459.6449,-258241183.06458986,76492233.10643432,-577.0296351432,568.4373399435711,-505.44500467173225 +715882013.0099,250593268.9511,-257964230.7865126,76248745.51630268,-566.6752575345,590.8172588642014,-513.8355649307454 +715882490.6939,250325158.72579998,-257677025.40965626,76001487.28995924,-555.8018575041999,611.3760033927456,-521.2456011032114 +715882968.3778,250062318.2598,-257380419.34080255,75750906.91689025,-544.6473686238,630.1924304283956,-527.759530945286 +715883446.0617,249804833.8829,-257075220.62752357,75497411.42349575,-533.4053272297,647.3712793666276,-533.4655856835766 +715883923.7457,249552709.4147,-256762183.41214064,75241365.76189671,-522.2284061594,663.0318308029733,-538.4510328980825 +715884401.4296,249305884.5259,-256442003.15111396,74983094.08800298,-511.2334284429,677.299281681386,-542.7989975387314 +715884879.1135,249064250.55130002,-256115315.35710666,74722882.24028629,-500.50688464290005,690.2985658329956,-546.5865599114899 +715885356.7975,248827663.6751,-255782696.78211612,74460980.88241555,-490.1103258304,702.1501987560649,-549.8838050953557 +715885834.4814,248595955.64880002,-255444668.22567967,74197608.94788973,-480.0852741393,712.9676950150421,-552.7535362335515 +715886312.1654,248368942.3049,-255101698.22779018,73932957.0808968,-470.4574962504,722.8561534229658,-555.2514263948785 +715886789.8493,248146430.1991,-254754207.25830132,73667190.95143414,-461.2405938568,731.9116645104115,-557.4264335032443 +715887267.5332,247928221.70160002,-254402572.0572426,73400454.34051624,-452.4389483316,740.2212737019049,-559.3213571131706 +715887745.2172,247714118.8078,-254047129.88550395,73132871.93234608,-444.0500894923,747.8633005736926,-560.9734544426578 +715888222.9011,247503925.9498,-253688182.5748788,72864551.81483582,-436.0665718372,754.9078691536133,-562.4150620313933 +715888700.5851,247297452.0031,-253326000.2898401,72595587.68418634,-428.4774393625,761.4175487452954,-563.6741903915349 +715889178.269,247094511.6864,-252960824.97550634,72326060.77975962,-421.2693569329,767.4480369951131,-564.7750739654845 +715890133.6369,246698525.1798,-252222340.33430433,71785591.19109234,-407.9360729543,778.2639344449731,-566.5830913149998 +715890993.468,246352509.0748,-251549421.42595276,71297858.99332011,-397.0833718939,786.8009326932996,-567.8514040143194 +715891853.299,246015392.1765,-250869575.34839118,70809153.40140964,-387.2208309075,794.4057510481196,-568.8581969049519 +715892713.1301,245686361.9608,-250183533.86634335,70319673.25945108,-378.25898707,801.2351299189432,-569.6615115520723 +715893572.9612,245364680.3269,-249491907.14202896,69829573.36405176,-370.1144097074,807.4163324838516,-570.3063593505493 +715894432.7923,245049677.9465,-248795206.38946393,69338974.28110422,-362.7106536189,813.0531043852352,-570.8277797940292 +715895292.6234,244740748.1261,-248093862.007203,68847969.88728932,-355.97844712370005,818.2304056486531,-571.2531576932563 +715896152.4545,244437340.72939998,-247388238.0383563,68356633.15421842,-349.85545664399996,823.0181482695073,-571.603978544195 +715897012.2856,244138956.38779998,-246678643.8092127,67865020.62827346,-344.2858292701,827.4741475048332,-571.8971616272454 +715897872.1167,243845141.1721,-245965343.27505586,67373175.89608622,-339.2196388388,831.6464532809371,-572.1460755204613 +715898731.9478,243555481.7382,-245248562.6021165,66881132.291835815,-334.6123056376,835.5751969050494,-572.3613148725527 +715899591.7789,243269600.9802,-244528496.3150524,66388915.01276396,-330.4240313227,839.2940583301072,-572.551297269056 +715900451.6099,242987154.14589998,-243805312.32665077,65896542.785797186,-326.6192695247,842.831436481462,-572.7227239555455 +715901311.441,242707825.3962,-243079156.05708584,65404029.18225352,-323.1662423417,846.2113867141036,-572.8809372831702 +715902171.2721,242431324.7511,-242350153.83590284,64911383.66226097,-320.0365053045,849.4543749607425,-573.0301992694269 +715903031.1032,242157385.3967,-241618415.71520734,64418612.40575864,-317.2045602631,852.5778872683518,-573.1739098130029 +715904750.7654,241616225.09960002,-240147104.2667417,63432704.856773704,-312.3447711531,858.5244069212134,-573.4549596114506 +715906470.4276,241082589.3834,-238665856.52248073,62446312.55208876,-308.4297942335,864.1479030726866,-573.7397297495968 +715908190.0897,240554967.1983,-237175162.37620828,61459420.05121782,-305.33166833260003,869.5212959767712,-574.0379459429971 +715909909.7519,240032047.0333,-235675401.99751288,60471998.75326648,-302.945395387,874.7001836472343,-574.3554511289565 +715911629.4141,239512681.6788,-234166871.41807336,59484012.37891084,-301.18420225819995,879.7274947510876,-574.695523029984 +715913349.0763,238995860.1642,-232649801.30640793,58495420.56978906,-299.9758877807,884.636765691059,-575.0597403822909 +715915068.7385,238480685.2173,-231124371.0047185,57506181.28277931,-299.25998665640003,889.4544813863941,-575.4485572940798 +715916788.4006,237966355.0892,-229590719.12204394,56516252.377085246,-298.9855552961,894.2017709797224,-575.8616880472883 +715918508.0628,237452148.71859998,-228048951.6185357,55525592.64433466,-299.10943102109997,898.8956519445287,-576.298366591852 +715920227.725,236937413.5924,-226499148.0457458,54534162.47697193,-299.5948539601,903.5499538239378,-576.757522384823 +715921947.3872,236421555.7091,-224941366.4053263,53541924.281930335,-300.4103684219,908.1760116765795,-577.2378997434214 +715923667.0494,235904031.2461,-223375646.95996407,52548842.72260637,-301.528941168,912.7831922711462,-577.7381388843814 +715925386.7115,235384339.5867,-221802015.26413864,51554884.85096202,-302.92724901649996,917.3792968351652,-578.2568304785881 +715928826.0359,234336633.9543,-218631057.79222265,49564220.57580101,-306.48495811299995,926.5634549596509,-579.3438924695577 +715932265.3603,233275096.4074,-215428484.84523553,47569716.431194104,-310.9515721931,935.769830200443,-580.4879224453693 +715934814.2644,232477711.7638,-213034567.55784854,46088993.95262695,-314.7880830091,942.6252806481396,-581.3662303797452 +715935841.8465,232153396.8664,-212064508.18342358,45491402.99588941,-316.4525791266,945.3996566335526,-581.7266499305906 +715940288.0513,230729180.0938,-207834247.71995983,42901404.4085661,-324.3831374326,957.4884635989112,-583.3195640226397 +715944734.2562,229267223.362,-203549884.25289404,40304226.83565536,-333.4118833092,969.741705793105,-584.9527292384618 +715949180.4611,227762846.0587,-199210621.14099884,37699732.76995489,-343.4529747117,982.1876928433802,-586.6077166674213 +715953626.666,226211687.1109,-194815549.50464615,35087864.00762693,-354.4473248882,994.8489953783055,-588.2672190604881 +715958072.8708,224609600.5437,-190363669.03402773,32468637.51895196,-366.35634066349996,1007.7444591624318,-589.9146610188026 +715962519.0757,222952574.906,-185853901.3418619,29842143.03799443,-379.1576130666,1020.8905030699722,-591.5338258904436 +715966965.2806,221236667.7967,-181285098.87964752,27208542.26655376,-392.841940819,1034.301967911936,-593.1085048993194 +715971411.4854,219457952.4957,-176656050.48765302,24568069.578085884,-407.4112609924,1047.9926847434067,-594.6221623996113 +715975857.6903,217612471.6097,-171965485.0288217,21921034.199453235,-422.877241138,1061.9758537057642,-596.0576102980503 +715980303.8952,215696196.03640002,-167212073.592958,19267823.83423022,-439.2603514841,1076.2642956998095,-597.3966810752834 +715984750.1001,213704987.1968,-162394430.7934875,16608909.759262137,-456.5893044095,1090.8706126015118,-598.6198891303308 +715986973.2025,212679950.6953,-159961074.44943464,15277485.560887143,-465.61962678230003,1098.2968758661764,-599.1815067361946 +715988084.7537,212159834.9734,-158738182.02587473,14611315.306249738,-470.2284990609,1102.041462894256,-599.448602308496 +715988640.5293,211897847.2091,-158125172.0107416,14278120.167278133,-472.5566696154,1103.9217048655012,-599.5785627743454 +715988918.4171,211766366.9936,-157818274.76107347,14111495.681383163,-473.7267284325,1104.8638235251933,-599.6426258344858 +715989057.361,211700504.81770003,-157664727.91367725,14028176.784034029,-474.31325631839997,1105.3353835925545,-599.6744254983199 +715989126.833,211667543.1519,-157587929.91406745,13986515.681181751,-474.6068955235,1105.5712889750523,-599.6902670400314 +715989161.569,211651054.6674,-157549524.76780573,13965684.717309497,-474.75380902210003,1105.68927302293,-599.6981731963612 +715989196.3049,211634561.0785,-157511115.52288714,13944853.478979632,-474.900785149,1105.8072779839977,-599.7060695953107 +715989265.7769,211601558.5786,-157434284.73402697,13903190.180457428,-475.1949253814,1106.0433506714953,-599.7218330766646 +715989404.7208,211535492.23169997,-157280573.94035864,13819860.3048044,-475.7839584084,1106.5157472614635,-599.7532424366916 +715989682.6086,211403113.66120002,-156972955.32678792,13653187.51583118,-476.96503994169996,1107.4615466205532,-599.8155881305775 +715990238.3842,211137369.0947,-156356928.68723974,13319790.40456485,-479.3393071789,1109.357180585606,-599.9383663616154 +715991349.9354,210601898.7313,-155121707.26088828,12652795.079149403,-484.13660287510004,1113.1646736390783,-600.1760996922185 +715993573.0379,209514777.9066,-152638507.12123847,11318041.68619433,-493.9291009761,1120.8452318620484,-600.6188753976347 +715998019.2427,207273724.43,-147620389.00179508,8645841.464221895,-514.3303352857,1136.473977704601,-601.3618838152204 +716002465.4476,204939452.5011,-142531971.06921056,5970802.871509992,-535.8717273019,1152.4696141473883,-601.8905646587236 +716006911.6525,202506740.195,-137371595.70963556,3293949.2521394566,-558.6234686187,1168.8439241315793,-602.1725944398311 +716011357.8573,199970031.9791,-132137553.93764794,616456.9077118263,-582.6655687726,1185.6081974379529,-602.1713722625507 +716015804.0622,197323393.0143,-126828088.14639677,-2060324.1453752741,-608.0888134080999,1202.772964070552,-601.8452138532265 +716020250.2671,194560458.7145,-121441396.25324574,-4734845.505112499,-634.9959443217999,1220.3476296814576,-601.1463902920374 +716024696.472,191674378.4174,-115975637.7779044,-7405330.95328103,-663.5030877497001,1238.3399863681875,-600.019973497996 +716029142.6768,188657752.4531,-110428942.27512674,-10069741.63508568,-693.7414675644001,1256.7555591822236,-598.402436581904 +716033588.8817,185502560.32320002,-104799421.38197723,-12725733.95758938,-725.859444207,1275.596743305816,-596.219953346131 +716038035.0866,182200079.4122,-99085185.07127362,-15370609.443272755,-760.0249371046,1294.8616585882341,-593.3863109714368 +716042481.2914,178740791.7768,-93284363.93223009,-18001254.067297935,-796.4282933952001,1314.5426332496015,-589.8003381856814 +716046927.4963,175114277.1229,-87395139.14308767,-20614064.963041525,-835.2856815046,1334.6241890783629,-585.3427142522444 +716051373.7012,171309089.3187,-81415782.89423606,-23204861.171627738,-876.8430983458,1355.0803572977593,-579.8719873948426 +716055819.9061,167312613.56910002,-75344712.59952317,-25768774.580752183,-921.3810906731001,1375.8710869965375,-573.2195758967576 +716060266.1109,163110900.79779997,-69180563.72980471,-28300115.798224237,-969.2202975516,1396.9374168144807,-565.1834545201256 +716064712.3158,158688475.3738,-62922287.65016511,-30792208.35525619,-1020.7279176149999,1418.1949486087965,-555.520132740499 +716066447.513,156899022.2337,-60454219.224993736,-31752480.407225568,-1041.9138001,1426.518604280511,-551.245611501802 +716066868.3561,156459442.3189,-59853453.70354001,-31984242.44842916,-1047.148954274,1428.5381344688717,-550.1626317665787 +716069800.5229,153334421.9453,-55644117.40290637,-33585798.89826896,-1084.718704673,1442.6018223328779,-542.0823178764136 +716072732.6897,150096315.7631,-51393605.25130797,-35162201.162893064,-1124.308830337,1456.6141077492289,-532.9856896689917 +716075664.8565,146738970.7146,-47102159.167604834,-36710289.23563297,-1166.077934891,1470.5105067030547,-522.7470997500347 +716078597.0232,143255746.8266,-42770231.663849354,-38226508.0747772,-1210.199731241,1484.2113327968398,-511.2222590568838 +716081529.19,139639471.1199,-38398535.39955847,-39706848.37464055,-1256.86428493,1497.618181222992,-498.24501962325144 +716084461.3568,135882387.8646,-33988104.241163954,-41146777.01184474,-1306.279178606,1510.6095441360646,-483.6235515923444 +716087393.5236,131976105.78770001,-29540368.756371617,-42541155.29038941,-1358.670484418,1523.0353299700628,-467.13580101697266 +716090325.6904,127911542.8234,-25057249.70284211,-43884142.633647405,-1414.283362524,1534.7100002077918,-448.5241047146124 +716093257.8572,123678869.9902,-20541274.09821722,-45169083.09366515,-1473.382013906,1545.4039620138885,-427.48882670607 +716096190.024,119267456.96260001,-15995719.662504956,-46388371.63699662,-1536.248582426,1554.8327718650107,-403.6808840842697 +716099122.1907,114665822.8357,-11424794.677391771,-47533296.689884,-1603.180387667,1562.6435990645277,-376.69305558878426 +716102054.3575,109861598.82869999,-6833862.514672965,-48593855.37413478,-1674.4846058189999,1568.3983020805288,-346.0500241135558 +716104986.5243,104841511.65990001,-2229721.3982722424,-49558537.8635079,-1750.469077223,1571.552372223239,-311.19724564282717 +716108244.4874,98993213.95839,2890973.0667243116,-50501756.83337639,-1840.741408521,1571.178215468314,-266.7457704454942 +716109873.4689,95956173.77837,5448903.529460318,-50916336.071528,-1888.291647361,1569.1185264670803,-241.9540741210053 +716111502.4505,92840329.59507,8002303.485361479,-51289002.222363144,-1937.4987934679998,1565.585109254404,-215.26132092686402 +716113131.432,89642961.28395,10548615.986598026,-51616532.25624971,-1988.386797185,1560.3822702581997,-186.5106010657699 +716114760.4136,86361319.91639,13084945.92568307,-51895438.152805924,-2040.966478818,1553.2901104513815,-155.5334625382821 +716116389.3951,82992652.27662,15608018.588642245,-52121948.13117624,-2095.2315416,1544.0620514527197,-122.15002366219068 +716118018.3767,79534232.57942,18114134.17844192,-52291988.40864214,-2151.153722529,1532.4223624411943,-86.16950740305407 +716119647.3582,75983402.84796,20599118.374611437,-52401166.24939432,-2208.676946321,1518.0638174991136,-47.391359501364946 +716121276.3398,72337623.78188,23058269.34440185,-52444755.505946636,-2267.71035847,1500.6456676866908,-5.607147723545836 +716122905.3213,68594537.93835999,25486301.84737434,-52417686.019665256,-2328.120128852,1479.7921927816249,39.39650818706741 +716124534.3029,64752047.109699994,27877289.69349206,-52314538.735698864,-2389.719964299,1455.0921914810472,87.8336795796489 +716126163.2844,60808406.55432,30224608.440159917,-52129549.22888779,-2452.260358502,1426.0998760602765,139.91321314165748 +716127792.266,56762337.44033,32520881.104856484,-51856622.36486922,-2515.416727143,1392.3377798755405,195.8307772283352 +716129421.2475,52613159.35506,34757930.72144643,-51489361.841626674,-2578.7767887930004,1353.30241346305,255.75850058449362 +716131050.229,48360943.59295,36926744.93904135,-51021118.816525675,-2641.827828342,1308.4735294910092,319.83187636958274 +716132679.2106,44006686.63236,39017459.294165656,-50445064.25012155,-2703.944853685,1257.3279327940863,388.13373072906035 +716134308.1921,39552501.19388,41019367.31853649,-49754289.74799462,-2764.38111407,1199.3587490368193,460.675295605813 +716136118.1716,34490431.09493,43125539.838369735,-48843884.52788539,-2828.494364573,1126.3821527524653,546.1463186882427 +716137928.1511,29316200.42845,45091074.44752438,-47774332.77979925,-2888.071978422,1043.880658018908,636.4660597280375 +716138833.1409,26689909.46535,46015627.67015787,-47177225.500389084,-2915.68148537,998.9395204132427,683.298419018574 +716139738.1306,24039397.33801,46898381.632723905,-46537272.5906996,-2941.56498075,951.5032968188259,731.1381666009522 +716140643.1204,21366322.05517,47737074.939344645,-45853606.767966196,-2965.5095069950003,901.5677064841423,779.8844412730155 +716141548.1101,18672536.186320003,48529451.30155717,-45125459.58790971,-2987.298508716,849.1487098989278,829.4196078963796 +716142453.0999,15960088.81747,49273278.85526065,-44352176.73072979,-3006.714771815,794.2846672837472,879.6090920501377 +716143358.0896,13231224.6514,49966371.32099176,-43533233.25951718,-3023.5438002650003,737.0382540179339,930.3016088450368 +716144263.0794,10488379.87255,50606610.74680882,-42668248.47192389,-3037.577579197,677.4980233354781,981.3298421518853 +716145168.0691,7734174.4598900005,51191971.46382447,-41756999.916169755,-3048.618644156,615.7795039211776,1032.5116184453657 +716145620.564,6353677.772881,51463470.590746105,-41284003.645303905,-3052.95913396,584.1470071920421,1058.0994996854074 +716146073.0589,4971400.717923,51720544.784905516,-40799436.11058429,-3056.4843466270004,552.0257244470308,1083.6516016849012 +716146525.5537,3587716.737411,51962977.82177525,-40303319.38791563,-3059.174476017,519.4378076898114,1109.141815044041 +716146978.0486,2203007.909732,52190563.877816826,-39795687.48816369,-3061.011178274,486.40706942299374,1134.5435129371642 +716147430.5435,817664.2580252,52403108.272418395,-39276586.56975367,-3061.9776986340003,452.95893665098635,1159.8296471785065 +716147883.0384,-567917.0001417,52600428.1869171,-38746075.10562688,-3062.0589924289998,419.12039243367593,1184.9728507133386 +716148888.5825,-3645794.970045,52983571.918917544,-37526684.70908685,-3059.006674008,342.6714580435263,1240.1958058480511 +716150005.8538,-7059189.2622879995,53318179.73324158,-36107379.03930834,-3050.283210308,256.0443590289716,1300.1983977086368 +716151123.1251,-10459664.92601,53555234.470844604,-34622015.13807745,-3035.8757443609998,168.1307847535869,1358.3779706630116 +716151681.7608,-12153071.56019,53636799.156259224,-33855250.0118122,-3026.539666871,123.85738362640814,1386.6607062732105 +716151961.0786,-12997720.276010001,53668296.860632755,-33465983.495756842,-3021.341621088,101.67142222837668,1400.5796402909375 +716152100.7375,-13419487.8849,53681721.02403544,-33269897.690732375,-3018.610757643,90.56991180418208,1407.481013691799 +716152170.567,-13630227.13795,53687851.61648675,-33171494.03734885,-3017.2124656210003,85.01749928114594,1410.9168733070037 +716152205.4817,-13735559.957789999,53690771.50855456,-33122202.32612452,-3016.5051180829996,82.24093816706318,1412.6310588412327 +716152222.939,-13788217.08255,53692195.10005421,-33097534.037584584,-3016.1493956930003,80.85257633572803,1413.4872108824347 +716152231.6677,-13814543.313210001,53692897.80676367,-33085194.289876588,-3015.9710225669996,80.15837603146048,1413.9150511408266 +716152236.0321,-13827705.8443,53693246.88780775,-33079023.015763663,-3015.8817080490003,79.81127114846248,1414.128912256981 +716152238.2142,-13834286.96363,53693420.860242374,-33075937.028715212,-3015.8370188050003,79.63771753864734,1414.2358280525568 +716152239.3053,-13837577.48672,53693507.704445824,-33074393.94770599,-3015.814666188,79.55094044366024,1414.2892822585804 +716152240.3964,-13840867.98542,53693594.453956746,-33072850.80836987,-3015.792308239,79.46416315592859,1414.3427340031492 +716152242.5786,-13847448.909610001,53693767.668950886,-33069764.35475272,-3015.747576353,79.29060800376175,1414.449630106169 +716152246.9429,-13860610.46505,53694112.96273947,-33063590.747767806,-3015.65804862,78.94349540931074,1414.6633927604992 +716152255.6716,-13886932.4028,53694799.0055456,-33051240.735435423,-3015.478737347,78.24926117302766,1415.0907997827737 +716152273.129,-13939571.575410001,53696152.91163325,-33026529.5221072,-3015.119091803,76.86075744596786,1415.9451401150643 +716152308.0437,-14044831.025740001,53698788.00301596,-32977062.37949027,-3014.395710577,74.08361641256369,1417.6519213048593 +716152377.8732,-14255273.680739999,53703767.2822352,-32877949.540766425,-3012.9326027049997,68.52885959087422,1421.0578490027171 +716152517.5321,-14675848.68783,53712562.09541131,-32679012.15179584,-3009.941130499,57.41792351611315,1427.838873296606 +716152796.8499,-15515715.06454,53725496.19093378,-32278310.850448932,-3003.698229397,35.194175249385125,1441.2752907552285 +716153355.4855,-17189976.284479998,53732745.84645259,-31465769.47649259,-2990.182219573,-9.230339494058626,1467.627684953184 +716154472.7568,-20513962.74542,53672926.98749549,-29797542.149575822,-2959.122922057,-97.74508318141727,1518.1166267503659 +716155590.0281,-23800344.63284,53514665.13727322,-28074658.745962057,-2922.9160765929996,-185.36149915592625,1565.4238793030777 +716156595.5723,-26721321.28045,53289121.09886568,-26480374.502185732,-2886.198294589,-263.0173913507149,1605.0921547001933 +716157601.1165,-29603529.477029998,52986218.11978817,-24847644.309756253,-2845.856356221,-339.1696219926524,1641.8740280325867 +716158606.6606,-32443479.6989,52607633.60627487,-23179417.68547198,-2802.2026966109997,-413.4947745800432,1675.6822224712887 +716159612.2048,-35238009.17877,52155352.68918615,-21478712.78521815,-2755.573367037,-485.7049130632124,1706.467320061972 +716160617.7489,-37984301.4847,51631630.69064174,-19748578.994555276,-2706.3197617610003,-555.5509940885723,1734.2162511090864 +716161623.2931,-40679897.84731,51038952.929191254,-17992061.576459356,-2654.800563081,-622.8248041254617,1758.9497958779662 +716162628.8373,-43322700.69371,50379993.42491613,-16212169.310444362,-2601.374229518,-687.359491141929,1780.7193090402134 +716163634.3814,-45910969.89266,49657573.14856002,-14411845.354436813,-2546.3923055180003,-749.0288337456623,1799.6029088710243 +716164639.9256,-48443312.90584,48874620.402803496,-12593942.66562105,-2490.193673388,-807.7454466711972,1815.701337741627 +716165645.4698,-50918669.538200006,48034132.939937994,-10761203.348053327,-2433.099892584,-863.4581377698646,1829.1337243907783 +716166651.0139,-53336292.71194,47139143.1253409,-8916242.202476252,-2375.411627182,-916.148647597824,1840.0334198412845 +716167656.5581,-55695726.08431,46192686.653899565,-7061534.453832053,-2317.406121096,-965.8279949078857,1848.5440528283077 +716168662.1023,-57996779.62403,45197775.02543144,-5199407.26464949,-2259.3356388119996,-1012.5326279304574,1854.8159128817779 +716170673.1906,-62424165.0767,43074373.49051654,-1461435.6773839388,-2143.880393758,-1097.2675433747622,1861.2588879729199 +716172684.2789,-66621281.38352001,40791744.14522003,2282136.1243621856,-2030.5545567640002,-1171.0098282505576,1860.5864258592687 +716174695.3673,-70593604.86386001,38371176.73177862,6018188.082283791,-1920.485253456,-1234.5940230497342,1853.9683307890477 +716176706.4556,-74348532.71488,35832179.3815674,9735860.354885409,-1814.464445816,-1288.944534279229,1842.4773272009961 +716178717.5439,-77894764.10223,33192368.142901678,13426332.898377182,-1713.00453339,-1335.0092401149122,1827.0669696940618 +716180728.6322,-81241794.81594,30467469.519387428,17082576.693973597,-1616.394448793,-1373.7132295673787,1808.5647302783943 +716182739.7206,-84399520.66785999,27671398.487700142,20699102.10711074,-1524.751055833,-1405.9292358065272,1787.675175088079 +716184750.8089,-87377937.18137,24816382.4528993,24271720.211690925,-1438.063359103,-1432.460889433998,1764.989139497191 +716186761.8972,-90186920.33866,21913109.033063862,27797326.037402153,-1356.228847595,-1454.0352069216062,1740.9959113401078 +716188772.9856,-92836072.70566,18970882.213115044,31273707.548374504,-1279.082341229,-1471.3013480316822,1716.0964020523013 +716190784.0739,-95334620.79984,15997776.719248373,34699380.97677243,-1206.418242505,-1484.8333562969744,1690.6160507066224 +716192795.1622,-97691351.39210999,13000784.120780319,38073451.31438645,-1138.007277157,-1495.1352239555063,1664.8167600696804 +716194806.2505,-99914576.98002,9985947.74551823,41395495.354728855,-1073.608788811,-1502.6471171733292,1638.9075213342053 +716196817.3389,-102012122.28379999,6958484.385989064,44665464.80490955,-1012.979553222,-1507.7520067007408,1613.0536392887736 +716198828.4272,-103991325.63069999,3922892.607546497,47883606.61064798,-955.8799180589999,-1510.782218621785,1587.3845916149476 +716200839.5155,-105859050.56269999,883048.3521940708,51050397.700879276,-902.0779299554,-1512.0256227900343,1562.0006360983598 +716202850.6039,-107621704.2077,-2157711.4820966534,54166491.95678486,-851.3519680946,-1511.7313079823036,1536.978307437084 +716204861.6922,-109285259.7421,-5196516.254424401,57232677.18640777,-803.4922915216999,-1510.1146865884957,1512.3749601601098 +716206872.7805,-110855281.1839,-8230898.524497531,60249840.456535086,-758.3018054932,-1507.3620186027822,1488.232499216533 +716208883.8688,-112336949.105,-11258739.483775139,63218940.16987161,-715.596280106,-1503.634381284371,1464.5804317504776 +716210894.9572,-113735086.4059,-14278221.887355927,66140983.73819069,-675.2041919715999,-1499.07112716246,1441.4383551405567 +716214917.1338,-116298422.4365,-20286111.79133025,71848073.80634086,-600.7351627913,-1487.9041200524052,1396.7247741982244 +716218939.3105,-118577649.0525,-26244652.425558478,77379559.04813899,-533.7577228751001,-1474.6453199859222,1354.1182405602808 +716222961.4872,-120600893.8189,-32146672.90719912,82743856.95833963,-473.3007149329,-1459.884843436567,1313.5821739196958 +716226983.6638,-122392673.98799999,-37987070.55686193,87949155.89272825,-418.5363488944,-1444.0680355741533,1275.042626544448 +716231005.8405,-123974429.6013,-43762305.712739795,93003300.70208657,-368.7590038602,-1427.5319060241454,1238.40495837129 +716235028.0171,-125364976.3369,-49470022.65969327,97913732.7223883,-323.3663282787,-1410.5320322227708,1203.5645630915953 +716239050.1938,-126580886.8567,-55108764.33165774,102687464.404005,-281.84292970300004,-1393.2624844290765,1170.413682312314 +716243072.3704,-127636812.2702,-60677756.0232064,107331075.88367033,-243.7465397764,-1375.870650975512,1138.8456455665705 +716247094.5471,-128545751.956,-66176741.12596306,111850724.92507938,-208.6964072468,-1358.468324793158,1108.7574251047538 +716251116.7238,-129319281.1049,-71605855.40004681,116252164.79470825,-176.36361038959998,-1341.1400371044356,1080.051086083328 +716255138.9004,-129967742.3604,-76965530.64189714,120540766.40749699,-146.46299592879998,-1323.9493584780696,1052.6345233460775 +716259161.0771,-130500408.0527,-82256420.40884249,124721542.47108814,-118.7464732584,-1306.943686080951,1026.421737218522 +716263183.2537,-130925617.6144,-87479342.6576673,128799172.05441849,-92.9974333408,-1290.157902600748,1001.3328216225698 +716267205.4304,-131250894.65540001,-92635235.31271257,132778024.81227998,-69.02609565095,-1273.617183965717,977.293774059109 +716271227.6071,-131483046.763,-97725121.74562515,136662184.12359786,-46.66562026203,-1257.3391669407301,954.2362044713689 +716275249.7837,-131628251.0622,-102750084.01164678,140455469.02945194,-25.76884994952,-1241.3356270638787,932.096988614809 +716279271.9604,-131692127.6936,-107711241.95329458,144161454.6202816,-6.205573116387,-1225.6137854154986,910.8179004956992 +716287316.3137,-131595965.447,-117446719.96130046,151324720.94999576,29.37010785276,-1195.0272039900044,870.6294789021781 +716293658.99,-131328743.5555,-124952087.4937435,156751883.28126168,54.49464672874,-1171.714967949332,840.967549442751 +716300001.6662,-130909401.35489999,-132311810.40907079,161996088.29826975,77.38521778084,-1149.0992440689433,812.9132336799257 +716306344.3425,-130351245.2306,-139530249.89249814,167067069.32510307,98.30664325033001,-1127.1613692662868,786.3234036868562 +716312687.0188,-129666031.73079999,-146611635.01390082,171973705.0955562,117.48412879429999,-1105.8786464818972,761.0712882199119 +716319029.695,-128864195.5931,-153560042.71315306,176724116.2757671,135.1102946378,-1085.226066953421,737.0443158915486 +716325372.3713,-127955038.0704,-160379387.27007064,181325749.62951177,151.3507851666,-1065.1774957435919,714.14225456145 +716331715.0476,-126946883.1444,-167073415.82622588,185785450.9887197,166.3487718062,-1045.7064842624538,692.275614657511 +716338057.7238,-125847208.1936,-173645708.2960165,190109529.00114805,180.2285956145,-1026.7868199913821,671.3642778158923 +716344400.4001,-124662753.6418,-180099680.08153665,194303810.69274127,193.0987304715,-1008.3928924473958,651.3363210780979 +716350743.0764,-123399615.708,-186438586.71210322,198373690.2031777,205.05421020420002,-990.4999287429488,632.1270061686574 +716357085.7527,-122063325.06469999,-192665529.64159593,202324171.49844936,216.17862714979998,-973.0841379695805,613.6779104235081 +716363428.4289,-120658914.0324,-198783462.7708454,206159906.0206619,226.54578777080002,-956.1227908954629,595.9361772191317 +716363934.2845,-120544113.0064,-199266785.35529426,206461012.93914288,227.342012377,-954.7889647433897,594.5501930622547 +716373797.2455,-118219430.8526,-208567211.23041436,212218501.8551268,242.9099571122,-930.3132724557388,570.7661862228047 +716387659.451,-114722835.438,-221224446.7059432,219888683.0796793,261.13200121980003,-896.1400424835398,536.303959298887 +716401521.6565,-110990793.03289999,-233420142.853584,227098545.6713279,276.9500092924,-863.6938490668475,504.2964055666667 +716415383.862,-107053908.7721,-245177049.5407742,233879913.5846127,290.7421810075,-832.8064205067623,474.4351789199056 +716429246.0675,-102938087.8181,-256515724.51574242,240260704.3149697,302.8117870948,-803.3293434729089,446.4630711677454 +716443108.273,-98665446.57407999,-267454791.7311542,246265563.2947852,313.4047161185,-775.1316408993572,420.1636879828607 +716456970.4785,-94255013.74955,-278011167.2478348,251916372.06191993,322.72233410169997,-748.0975236482732,395.3535323044793 +716470832.6839,-89723279.14228,-288200255.5974573,257232660.52406323,330.9310383152,-722.124381506875,371.8758700886832 +716484694.8894,-85084625.23432,-298036119.9209061,262231942.822235,338.1694649686,-697.1210246130819,349.59592251935237 +716498557.0949,-80351672.56562,-307531629.5250232,266929994.51968428,344.553986733,-673.0061642878848,328.3970676034851 +716512419.3004,-75535557.70663,-316698587.8502047,271341082.5083686,350.1829555977,-649.70710869974,308.17781006506084 +716526281.5059,-70646159.18712,-325547843.68761814,275478157.19611937,355.1400126016,-627.1586441373481,288.8493427013156 +716540143.7114,-65692282.65033,-334089388.04502624,279353014.22730434,359.49669536489995,-605.3020781354302,270.3335696733593 +716547074.8141,-63193661.695939995,-338247677.09432447,281195515.63282835,361.4694610238,-594.616494916593,261.3585641179831 +716554005.9169,-60681813.73674,-342332438.72208464,282976431.4038217,363.3145094423,-584.08442073837,252.56149240497876 +716560937.0196,-58157601.5762,-346344716.48538077,284696968.8510303,365.0382333575,-573.7000075584832,243.93493339914974 +716567868.1224,-55621845.24695,-350285514.3674941,286358285.30575323,366.6465879822,-563.4576813804483,235.47188139044582 +716574799.2251,-53075324.91772,-354155798.6186149,287961490.89518166,368.1451265948,-553.352125473269,227.16571635918416 +716581730.3278,-50518783.56576,-357956499.48446757,289507651.1197133,369.5390326787,-543.378264784001,219.01017679179577 +716585195.8792,-49236977.626760006,-359831037.4062985,290259660.5797994,370.19827445789997,-538.4391966850368,214.987026692808 +716586928.6549,-48595228.55124,-360761901.2047035,290630452.3525126,370.5187224235,-535.9813697958796,212.98879218438697 +716587795.0427,-48274147.09816,-361225737.70506245,290814551.71138954,370.6766840482,-534.7553515153123,211.99297174676954 +716588228.2367,-48113555.212979995,-361457257.83549047,290906278.0900627,370.75510307030004,-534.1430622541574,211.49588100200106 +716588444.8336,-48033246.55162,-361572918.46169734,290952060.5577758,370.794172605,-533.837097106913,211.24753991051813 +716588553.1321,-47993089.05009,-361630723.92635345,290974931.62396175,370.8136724369,-533.6841593434843,211.12342036178018 +716588607.2813,-47973009.507659994,-361659620.44786274,290986362.116774,370.8234136264,-533.6077016570542,211.06137332768003 +716588661.4306,-47952929.437910005,-361688512.82955915,290997789.2499713,370.83314900109997,-533.5312514309867,210.99933478348788 +716588769.7291,-47912767.71781,-361746285.17475116,291020633.4396923,370.8526023138,-533.3783733510335,210.87528315419755 +716588986.326,-47832437.9636,-361861780.2040082,291066281.52447855,370.8914392522,-533.0727066213135,210.62728166011476 +716589419.5199,-47671753.26956,-362092571.7074333,291157416.61839485,370.968834847,-532.4617303996272,210.1316851473111 +716590285.9078,-47350283.70032,-362553361.2155278,291339043.3235077,371.12251662439996,-531.2412030533027,209.1421133765252 +716592018.6835,-46706948.30449,-363471771.97975576,291699729.3359045,371.4254720252,-528.8058180744379,207.16941790914777 +716595484.2348,-45418727.84403,-365295966.0466487,292410883.54973227,372.01398256040005,-523.9574841114445,203.24952733806919 +716602415.3376,-42836365.20394,-368894202.49502426,293792727.52258766,373.12320529,-514.3486565972356,195.5094685079995 +716616277.5431,-37650078.61267,-375892837.5294577,296397697.12772477,375.0840335588,-495.4677366381763,180.4108630055245 +716630139.7486,-32438858.43389,-382632706.3894624,298796719.635604,376.725063949,-477.0095093156484,165.79005727599434 +716644001.9541,-27206957.57675,-389119462.3759833,300996178.9634765,378.07176112860003,-458.94463285841186,151.61306103217612 +716657864.1595,-21958297.10686,-395358368.1062128,303002009.9935288,379.1466128786,-441.24603767080555,137.8490096179785 +716671726.365,-16696504.69567,-401354325.29041135,304819739.2609564,379.9695211798,-423.88868483752094,124.46979531919433 +716685588.5705,-11424948.10561,-407111901.3802651,306454520.90985745,380.55813161500004,-406.8493545549048,111.44975052237885 +716699450.776,-6146764.557945,-412635353.4913266,307911168.6313271,380.9281120641,-390.1064590868434,98.76537374187714 +716713312.9815,-864886.2325451,-417928649.7542782,309194183.82240176,381.0933909575,-373.63987758295417,86.39509183702214 +716727175.187,4417936.819348,-422995488.7408253,310307781.0570991,381.0663592822,-357.43081052896406,74.3190540218944 +716754899.598,14976209.59089,-432463343.8332892,312042278.7581364,380.4782571876,-325.71586158373805,50.97785777884894 +716782624.0089,25508987.874530002,-441063735.18554205,313143442.79005444,379.2382007491,-294.833038549786,28.611097597832554 +716810348.4199,35999042.39823,-448818117.5110171,313636690.245556,377.4048572827,-264.66791698267883,7.106159003600169 +716814694.5036,37638545.76828,-449958231.9316784,313660397.44696414,377.0668143523,-259.9974551237922,3.8066229147552804 +716835757.3386,45561965.82768,-455197692.5507293,313574125.1620413,375.2429315186,-237.5644463257931,-11.929624851257017 +716858560.6192,54093055.23913,-460341309.425236,313112075.2019502,372.9339627325,-213.62060593321095,-28.521740282017134 +716881363.8998,62567673.04599,-464942545.2877178,312276540.6115837,370.292234272,-189.9862357770869,-44.6935204294099 +716904167.1804,70978371.06771,-469007936.27593315,311076655.85071516,367.3294228674,-166.61613010790583,-60.48385124944414 +716926970.461,79317928.94268,-472543017.9179251,309520709.4862548,364.0539081162,-143.4676456381186,-75.92813966417799 +716949773.7416,87579282.80405,-475552378.3350052,307616217.7632007,360.4710699096,-120.50027141236365,-91.0587781694612 +716972577.0222,95755459.44839999,-478039702.49094665,305369988.8258905,356.58351176250005,-97.67524306006663,-105.9055411348169 +716995380.3028,103839514.98809999,-480007807.96693915,302788178.4378048,352.3912243649,-74.95519682027569,-120.49592333988116 +717018183.5833,111824476.6372,-481458673.2502704,299876338.5603497,347.8916936612,-52.30385077607011,-134.8554320539295 +717029585.2236,115777596.4622,-481990535.02721566,298298237.9928612,345.5252577461,-40.99282519477124,-141.95609915012747 +717035286.0438,117743926.42390001,-482208111.843901,297478898.9600457,344.3125264803,-35.339051845976066,-145.4879119884688 +717038136.4539,118724484.7133,-482304814.00052637,297061687.6526385,343.69873154379997,-32.512361158737214,-147.2493399157427 +717039561.6589,119214106.0001,-482350143.6410342,296851200.2506729,343.3899698903,-31.09903502113994,-148.1289529381242 +717040274.2614,119458751.4035,-482372053.1071259,296745486.5686075,343.2351221294,-30.392373033670882,-148.56848653228042 +717040630.5627,119581032.6981,-482382819.001771,296692512.28895336,343.1575814025,-30.039041845439662,-148.7881853888304 +717040808.7133,119642162.9814,-482388154.7394436,296665995.79652995,343.1187818133,-29.86237614462419,-148.8980178680117 +717040897.7886,119672725.5307,-482390810.80581564,296652730.2129805,343.0993747105,-29.774043260780296,-148.95292987441843 +717040986.8639,119703286.351,-482393459.0040178,296639459.73830366,343.07996273500004,-29.68571035159669,-149.0078390607874 +717041165.0146,119764402.8031,-482398731.79542786,296612904.11643684,343.0411241629,-29.509044447650513,-149.117648978865 +717041521.3158,119886614.94129999,-482409182.95874745,296559734.189593,342.9633885221,-29.15571224376269,-149.33723502978864 +717042233.9183,120130956.0562,-482429707.6067849,296453159.6596526,342.8076831381,-28.44904578764112,-149.7762722783671 +717043659.1234,120619304.8613,-482469246.1792601,296239072.34181654,342.49533502860004,-27.035700966167944,-150.65380965669735 +717046509.5335,121594662.5314,-482542280.32225615,295807148.2291758,341.8668818676,-24.208933971482445,-152.40675422767717 +717052210.3536,123539968.0087,-482664175.0838816,294928330.1330281,340.5948852029,-18.554853012415407,-155.90426791416047 +717063611.9939,127408535.9281,-482811248.3005125,293111032.6427845,337.9899982763,-7.242604545721633,-162.86693964474978 +717086415.2745,135054221.8544,-482718189.4765602,289239441.615246,332.53188037539996,15.41341928574824,-176.67178512795599 +717109218.5551,142571575.08499998,-482107755.5392825,285054736.6197771,326.7320909134,38.14045663682845,-190.33233248330515 +717132021.8357,149952638.89549997,-480977928.4356319,280559992.38759,320.5756637299,60.97354520917395,-203.8673451591532 +717154825.1162,157189083.8495,-479325885.5116403,275757866.13972425,314.0448486134,83.94826170543601,-217.2946992574991 +717177628.3968,164272142.1384,-477147984.09615237,270650616.49400973,307.1189095818,107.10099456696749,-230.63149545810856 +717200431.6774,171192536.6827,-474439739.8211317,265240120.03649554,299.7738686088,130.46922836849728,-243.89415515260686 +717223234.958,177940403.6146,-471195798.10594076,259527885.8508299,291.9821896178,154.09185042738176,-257.098503784797 +717246038.2386,184505207.19660002,-467409898.58348894,253515068.22299176,283.7123910291,178.00948156333024,-270.25983953140906 +717265767.4359,190028620.5397,-463691549.92366314,248070932.0165895,276.144115292,198.9736997178315,-281.62364238528903 +717265767.4359,190028620.0923,-463691549.90884584,248070932.24609476,276.1441164588,198.97369931228957,-281.62364254385443 +717270950.2988,191454524.0625,-462645915.22451675,246603584.8639186,274.0889130699,204.52653888019472,-284.6065906692731 +717294361.4311,197759485.4695,-457561948.8457781,239782955.64798716,264.43820094069997,229.8661754353054,-298.07504633425134 +717317772.5635,203831124.759,-451879465.59254986,232647020.986559,254.14724540779997,255.66656793563632,-311.5454384420525 +717341183.6959,209653784.7138,-445587025.698048,225195563.24443075,243.15762859199998,281.98421229840113,-325.03240936095915 +717364594.8282,215210343.222,-438671813.6301129,217428027.50109616,231.4024019162,308.8802764611452,-338.5501240282792 +717388005.9606,220481997.0594,-431119519.1727152,209343533.4130794,218.804634814,336.4214258582807,-352.112202823091 +717411417.0929,225448007.99740002,-422914197.6643609,200940889.23160732,205.27561559909998,364.6808029761367,-365.731603186337 +717423122.6591,227809314.6447,-418561182.1742059,196619807.51010597,198.1304047746,379.10473624734584,-372.5666225189034 +717434828.2253,230085401.7744,-414038105.18788326,192218609.38682213,190.7126209164,393.7391881745695,-379.42043172175 +717446533.7915,232272989.2853,-409342435.66807646,187737067.02430338,183.0067753815,408.5956778530338,-386.2943644645046 +717458239.3576,234368608.4914,-404471503.8951619,183174937.5201729,174.99611535670002,423.68639078609294,-393.1896585854098 +717469944.9238,236368586.5751,-399422493.3211292,178531964.1254722,166.6624926588,439.0242389714986,-400.1074389156656 +717481650.49,238269029.4084,-394192431.68377465,173807877.68317217,157.9862152297,454.6229275197895,-407.04869665704155 +717487503.2731,239180643.0331,-391508532.9353166,171415329.97801816,153.51296412250002,462.5246045864239,-410.52839676407365 +717490429.6646,239626563.998,-390149189.69512975,170211414.40806642,151.24133365510002,466.50185141210864,-412.27055474005476 +717491892.8604,239847022.9278,-389465146.92620367,169607544.21774444,150.096607603,468.4971831305893,-413.14221509772034 +717492624.4583,239956623.1882,-389122029.8827911,169305130.77289146,149.5219965173,469.49653954529,-413.5781911255639 +717492990.2572,240011265.5367,-388950197.0849891,169153804.43187076,149.2341263891,469.99664208922906,-413.79621566248625 +717493173.1567,240038547.20520002,-388864212.07176256,169078111.35281706,149.09004985579998,470.2467996582747,-413.90523706900103 +717493264.6064,240052178.1555,-388821202.4059283,169040257.33568132,149.0179761814,470.37190504382136,-413.95975005769037 +717493310.3313,240058991.1588,-388799693.2825008,169021328.45764035,148.98193048719997,470.4344643900512,-413.9870071234591 +717493356.0562,240065802.5137,-388778181.2984819,169002398.33327705,148.9458788864,470.49702817326624,-414.01426457025286 +717493447.5059,240079420.2774,-388735148.7476406,168964534.3454428,148.87375795909998,470.62216905465567,-414.0687806072343 +717493630.4054,240106636.0131,-388649049.3096532,168888791.41301918,148.7294451615,470.87250410348156,-414.17781725491017 +717493996.2043,240160988.2571,-388476713.0426816,168737245.71712968,148.440535469,471.37338755895246,-414.3959088523946 +717494727.8022,240269375.3494,-388131490.58027565,168433914.97000295,147.8615770866,472.3760096170562,-414.8321653127455 +717496190.998,240484876.05200002,-387438843.0149613,167826295.8040638,146.6990833596,474.38468810352936,-415.7049717363694 +717499117.3895,240910752.1011,-386044713.7556089,166607224.7771453,144.3556185459,478.4158936590277,-417.45176194764656 +717504970.1726,241741747.57979998,-383220927.7346716,164153735.81501827,139.5933950938,486.5346016440511,-420.9500755662649 +717516675.7388,243318608.0499,-377429677.34351194,159185240.36904663,129.75622472350003,503.0046536495482,-427.9657729723764 +717528381.305,244777769.81910002,-371443751.11250466,154134472.8181271,119.4786819421,519.799747477425,-435.0069960499537 +717540086.8711,246113902.67040002,-365259234.6977104,149001135.00177145,108.7303263343,536.9388183573509,-442.07357813462363 +717551792.4373,247321302.9175,-358871984.1996559,143784932.8924794,97.47772972825,554.4421741234723,-449.16496829618393 +717563498.0035,248393856.24960002,-352277609.3014947,138485581.53241068,85.68409391249,572.331633615913,-456.28015384362266 +717575203.5697,249324995.7599,-345471454.6936406,133102810.97014554,73.30880733408,590.6306814514613,-463.41756611961034 +717586909.1359,250107654.29790002,-338448579.56781864,127636373.43871626,60.30692923569,609.3646406294229,-470.57496551924305 +717598614.702,250734210.55310002,-331203735.04218775,122086051.95222281,46.62858539584,628.5608654477354,-477.74930008795 +717610320.2682,251196427.0531,-323731339.082508,116451670.85454102,32.21825931133,648.2489580813665,-484.93653225221556 +717622025.8344,251485379.4762,-316025448.8259309,110733108.52957034,17.01395557635,668.461010879965,-492.1314245452713 +717633731.4006,251591375.11659998,-308079729.8724171,104930312.96885754,0.9462085629264,689.2318768568026,-499.32727381027445 +717645436.9667,251503858.7629,-299887422.2249083,99043320.78022501,-16.063099386490002,710.5994721516098,-506.5155795953601 +717657142.5329,251211303.37840003,-291441302.50360584,93072280.57415631,-34.10215338538,732.6051133566029,-513.685628667231 +717668848.0991,250701082.5938,-282733641.9934277,87017481.81078258,-53.27091088906,755.293891521673,-520.8239712076605 +717680553.6653,249959321.1985,-273756160.0727493,80879390.56578545,-73.68316822197,778.7150839325755,-527.9137559436657 +717703964.7976,247718341.3231,-254955534.93278462,68356356.78779247,-118.7782638959,827.975481589148,-541.8578986576148 +717727375.93,244344806.6441,-234960044.4505141,55512444.20798042,-170.6860844165,880.88205972824,-555.2761600239587 +717735960.7988,242789900.513,-227310518.11341518,50725121.36087111,-191.75684653300002,901.310551774149,-559.9949729977244 +717739341.7876,242127030.2482,-224249346.6680523,48828700.90244044,-200.3925974561,909.5192426076155,-561.8149444051692 +717749531.8747,239947684.0142,-214852988.02527153,43076389.29202845,-227.6677417214,934.845747195943,-567.1452629146971 +717759721.9618,237480181.93809998,-205193878.1482256,37271123.668552294,-256.9872541703,961.0995777510595,-572.1978037401356 +717769912.0489,234702449.332,-195262244.13594174,31416077.04786223,-288.6015193243,988.3448230256677,-576.9027667714947 +717780102.136,231589645.6182,-185047641.6023617,25515220.05210051,-322.8045023098,1016.6491085093218,-581.1726596676549 +717790292.2232,228113671.57169998,-174538922.55811292,19573526.581657067,-359.94364445909997,1046.0826723264056,-584.897044887817 +717800482.3103,224242562.65820003,-163724216.91000682,13597242.078041881,-400.4325274714,1076.7166338216218,-587.9354267565787 +717810672.3974,219939735.48770002,-152590937.53537196,7594236.771183431,-444.7672239508,1108.6199613018557,-590.1075005651475 +717815767.441,217613504.64,-146900713.18785435,4585730.316248462,-468.5594411112,1125.0673982913072,-590.7982114652299 +717820862.4845,215163043.3891,-141125826.0735,1574476.554758519,-493.54757989449996,1141.8543295462282,-591.1796071070305 +717825957.5281,212582018.6461,-135264532.6249574,-1437847.3414335325,-519.8274130156,1158.9859267739416,-591.2110214985852 +717831052.5717,209863583.2838,-129315067.29617181,-4449341.787669778,-547.5051622097001,1176.4655528659366,-590.8456490592349 +717836147.6152,207000319.4156,-123275653.30992958,-7457850.7948722765,-576.6989104976999,1194.2941390513326,-590.0294444683402 +717841242.6588,203984173.8549,-117144516.98355371,-10460921.794169389,-607.5402337572,1212.4693818625612,-588.6997919396238 +717846337.7023,200806384.7473,-110919906.7733998,-13455757.993864894,-640.1760882924999,1230.9847061389305,-586.7838883959973 +717851432.7459,197457397.727,-104600118.29281004,-16439161.607010476,-674.7709942865,1249.8279220133388,-584.1967704361548 +717856527.7895,193926770.1568,-98183527.14760365,-19407465.961364605,-711.5095609655,1268.9794806744637,-580.8388956455949 +717861622.833,190203061.5429,-91668632.0111774,-22356453.87265042,-750.5994042213,1288.4102018688172,-576.5931637345826 +717866717.8766,186273707.9043,-85054110.8657429,-25281259.156741884,-792.2745032697,1308.0782996112757,-571.3212315991022 +717871812.9201,182124877.9514,-78338894.81397219,-28176247.131760836,-836.7990502717,1327.925476162418,-564.8589326090922 +717876907.9637,177741308.1878,-71522264.64440869,-31034869.060269788,-884.4718174046,1347.871764911206,-557.0105599683035 +717882003.0073,173106114.37269998,-64603977.86681818,-33849483.81702207,-935.6310559670001,1367.8086922268517,-547.5416993644345 +717887098.0508,168200577.2065,-57584436.11694187,-36611138.699809425,-990.6598680576,1387.5901658099942,-536.1702139387231 +717892759.2103,162407537.4344,-49667767.29324016,-39604654.220990494,-1056.870667669,1409.1468524262848,-520.8863392696626 +717895589.7901,159366376.167,-45664143.22619631,-41066736.91376181,-1092.1766525409998,1419.6523547276524,-512.0301331458105 +717898420.3699,156223051.7606,-41631130.14208175,-42502471.405768394,-1129.07201512,1429.9017973104892,-502.2546196441982 +717901250.9496,152972926.2863,-37569546.36000981,-43909124.10541665,-1167.6560373089999,1439.8272743521984,-491.46516136993125 +717904081.5294,149611072.0851,-33480418.82355137,-45283677.75329161,-1208.0341653599999,1449.3489536249792,-479.55572168260466 +717906912.1091,146132254.3144,-29365019.804978415,-46622797.04326637,-1250.3179663649998,1458.3729448679267,-466.40735764138145 +717909742.6889,142530913.93089998,-25224910.15521593,-47922789.75560041,-1294.624890608,1466.7887738435143,-451.8865203516466 +717912573.2686,138801151.70369998,-21061990.38292229,-49179562.75827261,-1341.077754615,1474.4663890513668,-435.8431498312616 +717915403.8484,134936714.1005,-16878560.91688529,-50388572.2965236,-1389.803838943,1481.252622082075,-418.1085568610365 +717918234.4281,130930982.7179,-12677393.309099715,-51544768.08484052,-1440.933457307,1486.9670092298334,-398.4930920548596 +717921065.0079,126776968.3203,-8461814.270216772,-52642530.3399865,-1494.597800833,1491.3968806074297,-376.78362585411185 +717923895.5877,122467312.7075,-4235804.702243177,-53675599.69480821,-1550.925811498,1494.291615400668,-352.74088073502094 +717926726.1674,117994300.92300001,-4116.421824499965,-54636999.226908155,-1610.039755159,1495.355979432973,-326.0967082395312 +717929556.7472,113349888.301,4227591.095779683,-55518949.01599093,-1672.0490641929998,1494.2424780561944,-296.551461988595 +717932387.3269,108525748.3338,8452590.645433802,-56312773.631358266,-1737.041934033,1490.5427221769164,-263.771703992212 +717935217.9067,103513347.75580001,12662901.809633058,-57008804.01913859,-1805.073978087,1483.7779003473515,-227.38863298210464 +717938048.4864,98304059.33335,16849077.112230863,-57596276.53272006,-1876.153173226,1473.3886197846525,-186.99777876828347 +717940879.0662,92889323.34828,20999959.67480267,-58063234.09884037,-1950.220148314,1458.7246613277766,-142.16079199381198 +717943709.646,87260872.45605,25102412.101923786,-58396436.12513976,-2027.122837498,1439.0355922368558,-92.410458729141 +717946540.2257,81411037.91031,29141022.573068663,-58581289.76419805,-2106.584597206,1413.46381317546,-37.26048671217745 +717949370.8055,75333155.33358,33097796.66182335,-58601817.06089547,-2188.165161906,1381.0424303828609,23.777934144856204 +717952201.3852,69022091.76201,36951854.379381,-58440682.01628505,-2271.214637027,1340.7014657662362,91.1703720208559 +717955346.4738,61732839.558690004,41084327.00766233,-58025950.26394273,-2364.096408662,1285.1846020706244,173.99189663768072 +717956919.0182,57978831.37388,43080238.48649889,-57717506.671360284,-2410.2800422009996,1252.711466171707,218.66119495371578 +717958491.5625,54152562.97358,45022424.335689075,-57337082.16025771,-2455.9516642850003,1216.8213363305451,265.5413359394844 +717960064.1068,50255071.180630006,46905354.447291374,-56881195.09455635,-2500.810410411,1177.3165282603816,314.6345927447723 +717961636.6511,46287895.52105,48723197.25317999,-56346380.70532611,-2544.517718664,1134.0123813768987,365.9164456889297 +717963209.1954,42253137.53679,50469845.52368127,-55729237.04897804,-2586.697512462,1086.744197347635,419.3306955040053 +717964781.7397,38153518.674669996,52138953.853186265,-55026478.67957252,-2626.93786353,1035.3751765063025,474.78454725836065 +717966354.284,33992434.19945,53723989.36090647,-54234997.9479901,-2664.794481988,979.8051991727461,532.1439352375085 +717967926.8283,29773999.94519,55218296.67152239,-53351933.21518981,-2699.796356001,919.9801821610831,591.2294313956249 +717969499.3726,25503088.342759997,56615177.808143996,-52374742.782739416,-2731.453789372,855.9016008695378,651.8131459033909 +717971071.9169,21185349.831570003,57907986.838322304,-51301282.62366292,-2759.2689588939998,787.6356257672651,713.6170711401331 +717972644.4612,16827215.7136,59090238.14397384,-50129885.27860966,-2782.748927267,715.3211920906112,776.3133274652545 +717974217.0055,12435878.79862,60155726.03840359,-48859436.59511456,-2801.420808078,639.1762298659446,839.5267239370922 +717975789.5499,8019248.866328999,61098652.20652316,-47489446.40699841,-2814.848503792,559.5012530815832,902.8399398052388 +717976575.822,5804099.829349,61522486.20876869,-46767155.83310515,-2819.473858357,518.4566326058177,934.39394385189 +717977362.0942,3585881.123728,61913756.22571942,-46020108.91247348,-2822.6501567339997,476.6795710144959,965.8014564450217 +717978148.3663,1365746.775658,62271909.73843965,-45248444.37523806,-2824.340944645,434.23030642786125,997.0024313856534 +717978934.6385,-855122.6370399001,62596443.37069793,-44452348.460905805,-2824.5152104979998,391.17355306895683,1027.9361364596182 +717979720.9106,-3075524.438521,62886906.279663704,-43632055.28491551,-2823.147807717,347.5781520001719,1058.5415993102379 +717980507.1828,-5294238.596364,63142903.23374362,-42787846.84755142,-2820.219821401,303.51665780837385,1088.758073408413 +717981293.4549,-7510032.762124999,63364097.35952909,-41920052.66731188,-2815.7188698120003,259.064867839225,1118.5255149987606 +717982079.7271,-9721667.497727,63550212.48590306,-41029049.0396252,-2809.63933365,214.3012983111337,1147.7850646602194 +717982865.9992,-11927901.658,63701035.06120809,-40115257.91718954,-2801.982506657,169.3066160492474,1176.4795242178666 +717983652.2714,-14127497.85898,63816415.60844309,-39179145.4197347,-2792.756663124,124.16303469604031,1204.5538206231263 +717984045.4075,-15224422.421540001,63860786.179330826,-38702875.94736929,-2787.5598519309997,101.56136707918711,1218.3418878602047 +717984241.9755,-15772099.54649,63879638.934881,-38462716.97154046,-2784.8165198869997,90.25762589493519,1225.170867151313 +717984340.2595,-16045733.52438,63888232.0649158,-38342135.18403181,-2783.408774889,84.60559910249486,1228.5687550537423 +717984389.4015,-16182498.33385,63892320.31672665,-38281719.19316177,-2782.6959030810003,81.77961796166369,1230.2635069437563 +717984413.9726,-16250867.564779999,63894312.36499239,-38251479.98364981,-2782.337219988,80.36664436509426,1231.1098297115689 +717984426.2581,-16285048.8707,63895295.36985707,-38236352.58293201,-2782.1573169790004,79.66016292415634,1231.5327271590997 +717984432.4008,-16302138.69426,63895783.617484055,-38228786.93452658,-2782.067225151,79.30692368167729,1231.744109817538 +717984435.4722,-16310683.39844,63896026.92760413,-38225003.62343228,-2782.022144162,79.13030444758124,1231.8497846210034 +717984437.0079,-16314955.69859,63896148.379241586,-38223111.8461762,-2781.9995948990004,79.0419949299606,1231.9026178906975 +717984438.5436,-16319227.96412,63896269.69526144,-38221219.98778662,-2781.977039791,78.95368547865519,1231.955448403506 +717984441.6149,-16327772.39123,63896511.920452,-38217436.027623855,-2781.93191204,78.77706677859948,1232.0611011612614 +717984447.7577,-16344860.829470001,63896994.74344865,-38209867.13388676,-2781.841586403,78.42383020751589,1232.272373593901 +717984460.0432,-16379036.039959999,63897953.8799308,-38194725.453709915,-2781.660654635,77.71736051935278,1232.6947860450227 +717984484.6142,-16447379.780939998,63899846.11504598,-38164426.53013995,-2781.2976694609997,76.30443607160527,1233.5390806502205 +717984533.7562,-16584040.41436,63903526.43572406,-38103766.4910157,-2780.567215329,73.47865579273594,1235.2255435701402 +717984632.0402,-16857253.259490002,63910470.49707295,-37982198.1338595,-2779.088394345,67.82744091302055,1238.5899236245878 +717984828.6083,-17403237.05996,63922692.49798588,-37738072.24602455,-2776.0592862159997,56.526963123757525,1245.2841782718197 +717985221.7443,-18493371.7599,63940474.43645862,-37245895.78264812,-2769.716767425,33.9383615413289,1258.5321320222029 +717986008.0165,-20665791.74868,63949422.8135707,-36246107.44869994,-2755.908345246,-11.153234895131675,1284.4462908393907 +717986794.2886,-22826774.9688,63922983.29221561,-35226259.583752744,-2740.632017538,-56.062459251036444,1309.5497669268798 +717987580.5608,-24975183.059120003,63861330.99938754,-34187005.01736617,-2723.92898057,-100.70891455635632,1333.8040383486502 +717988366.833,-27109912.29661,63764703.441613294,-33129025.22938662,-2705.84607414,-145.0144221753797,1357.1747866585847 +717989153.1051,-29229897.85241,63633398.54160871,-32053026.971802566,-2686.4353093900004,-188.90357213306658,1379.6320724901311 +717989939.3773,-31334117.656549998,63467772.26014799,-30959738.77472832,-2665.753347079,-232.30422579666617,1401.1504540562228 +717991511.9216,-35491405.67973,63035252.743868604,-28724294.16982917,-2620.8223292069997,-317.3704758786836,1441.2915380706709 +717993084.4659,-39574574.156169996,62471040.90867049,-26428819.461682905,-2571.5773913179996,-399.71699241598157,1477.4854154929094 +717994657.0102,-43577276.79207,61779755.407373436,-24079564.005063754,-2518.579503097,-478.92212053869656,1509.6898120769574 +717996229.5545,-47494065.71676,60966615.736326985,-21682791.50977705,-2462.4072225570003,-554.643870554778,1537.9276796773333 +717997802.0988,-51320405.04981,60037315.53213538,-19244682.9748548,-2403.6390939030002,-626.6210892707442,1562.2798822662126 +717999374.6431,-55052658.46266,58997896.84000648,-16771252.364514925,-2342.838309711,-694.6711541653658,1582.8764394610819 +718000947.1874,-58688054.774720006,57854630.31747462,-14268276.710982958,-2280.5401688720003,-758.6848716070001,1599.8870617957227 +718002519.7317,-62224636.244950004,56613905.070978254,-11741241.13442646,-2217.2425539240003,-818.6193433386159,1613.5116288587012 +718004092.276,-65661194.022530004,55282131.195889466,-9195298.912452586,-2153.3993602339997,-874.4895663540638,1623.9711272052607 +718005664.8204,-68997195.83122,53865655.48395796,-6635244.58117412,-2089.416676177,-926.3594344780904,1631.499433849553 +718007237.3647,-72232709.37441,52370691.730921656,-4065499.4791211355,-2025.6512953420001,-974.3327234651154,1636.3361681038687 +718008809.909,-75368324.79428,50803264.85230053,-1490107.6226162352,-1962.411142501,-1018.5444874157731,1638.7207245715276 +718010382.4533,-78405079.19351,49169168.01698328,1087260.047184024,-1899.957165477,-1059.1531616646917,1638.8874912866086 +718011954.9976,-81344384.95768,47473931.52040106,3663294.766408654,-1838.506273209,-1096.3335544599572,1637.062189240884 +718013527.5419,-84187963.29095,45722801.91395481,6235034.116910405,-1778.234947504,-1130.2708108474153,1633.459220517797 +718015100.0862,-86937783.72701,43920729.85014745,8799842.717781145,-1719.283225002,-1161.1553544747221,1628.2798885606885 +718018245.1748,-92164952.64599,40182057.6120174,13899631.112191852,-1605.741096449,-1214.5304977781166,1613.9261242617927 +718021390.2634,-97044718.51302,36291549.38472482,18947277.161111012,-1498.4249756079998,-1257.9517573175078,1595.3229648027366 +718024535.3521,-101597066.0829,32278287.93712733,23931195.864634626,-1397.5443443899999,-1292.8123365633674,1573.5656931156354 +718027680.4407,-105842244.1577,28167182.11458981,28842915.222420245,-1303.072542724,-1320.369450249476,1549.5427825209963 +718030825.5293,-109800151.9269,23979419.569441747,33676467.62560485,-1214.825141928,-1341.731646532072,1523.9631140529318 +718033970.6179,-113489939.86739999,19732933.876694523,38427870.32108789,-1132.5188802549999,-1357.8607491041187,1497.384665497038 +718037115.7065,-116929769.9014,15442851.839776685,43094693.83336629,-1055.81433247,-1369.5819571599975,1470.2415113390416 +718040260.7952,-120136688.6663,11121901.685676064,47675710.79977826,-984.3458133516,-1377.5977859326595,1442.8676614571243 +718043405.8838,-123126578.9761,6780775.371179733,52170613.89988054,-917.7416308106,-1382.5032002631042,1415.5172847779604 +718046550.9724,-125914163.2331,2428443.215939477,56579792.004489765,-855.6373091666,-1384.800393706546,1388.381422914264 +718049696.061,-128513040.2202,-1927575.9958788268,60904153.69120678,-797.6837886143,-1384.9124159717076,1361.6015517480548 +718052841.1496,-130935741.5674,-6280985.708729591,65144989.101470016,-743.552132593,-1383.1953003799094,1335.2804508535655 +718055986.2382,-133193799.4669,-10626517.702445209,69303862.38053113,-692.9358535466,-1379.9486087606965,1309.4908359319315 +718059131.3269,-135297818.4809,-14959769.186778288,73382528.21580197,-645.5516535547,-1375.4244651730785,1284.2821743229997 +718062276.4155,-137257548.421,-19277065.901119705,77382867.50281689,-601.1391443186001,-1369.835209416742,1259.6860388764894 +718065421.5041,-139081955.0207,-23575347.43975876,81306837.91379571,-559.4599393657,-1363.3598410495692,1235.7203044664777 +718068566.5927,-140779287.23290002,-27852071.146333892,85156436.20709915,-520.2963788361999,-1356.1494162904085,1212.3924240867514 +718071711.6813,-142357140.1616,-32105131.504261628,88933669.61677112,-483.450075889,-1348.3315593628972,1189.7019878366668 +718074856.77,-143822513.28149998,-36332792.57107748,92640534.40573439,-448.74039375480004,-1340.0142242066843,1167.6427126868975 +718078001.8586,-145181863.861,-40533631.16763527,96278999.90218458,-416.00293648120004,-1331.2888318497835,1146.2039912637106 +718081146.9472,-146441155.7766,-44706489.14512822,99850996.90588395,-385.08809618419997,-1322.2328861995265,1125.372093106881 +718084292.0358,-147605903.8022,-48850433.12470505,103358409.35230467,-355.8596853889,-1312.9121568317805,1105.1310951058065 +718090582.213,-149671819.237,-57048771.068228476,110186749.84155928,-301.9769914657,-1293.6913963147517,1066.3512892384433 +718096243.3726,-151255279.1832,-64322527.370109916,116129152.620417,-258.11587103830004,-1275.9655165185284,1033.2880136216081 +718101904.5321,-152601523.3093,-71495272.20152119,121889037.06847149,-218.09078141179998,-1258.0327040731236,1001.8520639461026 +718107565.6916,-153730953.2666,-78566253.11126232,127475307.43051468,-181.4491800401,-1240.0341131566183,971.9351136014883 +718113226.8511,-154661599.7466,-85535410.04003781,132896266.65238146,-147.8039941673,-1222.0749018551533,943.4333556290223 +718118888.0106,-155409461.494,-92403197.74245164,138159646.09354866,-116.82283756010001,-1204.2330382169957,916.2488174496789 +718124549.1701,-155988789.1202,-99170451.30098748,143272640.54687068,-88.21913403996,-1186.5658650244427,890.2899530327056 +718130210.3296,-156412322.8849,-105838283.97977039,148241945.10902447,-61.74481672958,-1169.1150249360062,865.4717902720056 +718135871.4891,-156691493.3491,-112408009.35149792,153073792.24583405,-37.18430767579,-1151.910176327583,841.715805137019 +718141532.6487,-156836590.5884,-118881081.79712734,157773987.4621725,-14.34954336386,-1134.9718126206756,818.9496380868738 +718147193.8082,-156856908.0324,-125259050.95058146,162347943.2130492,6.924149088136001,-1118.313411541058,797.1067245456434 +718152854.9677,-156760864.8398,-131543526.88384314,166800710.5726502,26.78148101848,-1101.9430820747514,776.1258873529656 +718158516.1272,-156556110.5747,-137736153.44140196,171137008.5482452,45.350064515330004,-1085.8648307117235,755.9509190203289 +718164177.2867,-156249615.0146,-143838587.89523,175361251.04073185,62.74280976042,-1070.0795391592605,736.5301726451765 +718175499.6057,-155356333.8989,-155779487.81098637,183489845.7720692,94.39069562869,-1039.3801101380968,699.7652426082572 +718186821.9248,-154125874.1864,-167379254.11821032,191216590.21855772,122.4035304792,-1009.8141807034374,665.4949265059663 +718198144.2438,-152596204.0923,-178650466.83827186,198568069.63409263,147.325124955,-981.3350181752423,633.4337334650487 +718208638.0311,-150939634.1771,-188813980.65102327,205067117.35651803,168.04795831229998,-955.862670879819,605.478573926305 +718208638.0311,-150939619.0177,-188813981.5520415,205067110.97130683,168.0480437023,-955.8626560356743,605.4785237593546 +718212396.6114,-150294919.4636,-192389876.91901758,207324690.67357618,174.9735157138,-946.9460511145892,595.8437726854723 +718226134.8894,-147727415.3476,-205179917.21862155,215276602.80381286,198.302972832,-915.2375211963702,562.1771745299621 +718239873.1673,-144858837.34289998,-217543449.1548822,222781501.6086676,218.87762557759999,-884.8387478151101,530.7216982277283 +718253611.4453,-141724179.0517,-229497786.62545642,229867951.97117525,237.0986132064,-855.6516905515084,501.22076367943 +718267349.7233,-138353459.04799998,-241058938.2825948,236561272.02326322,253.29228566829997,-827.5845560859974,473.45693154171045 +718281088.0013,-134772628.0995,-252241698.8008391,242884019.2255912,267.72683023080003,-800.5524502907762,447.24469280411347 +718294826.2793,-131004279.3598,-263059744.32739684,248856388.49786475,280.6246662867,-774.4774142264247,422.4247688507305 +718308564.5572,-127068209.4164,-273525726.16280854,254496540.12280127,292.17180943600005,-749.2881393043976,398.85957962339234 +718322302.8352,-122981867.8108,-283651359.1143399,259820872.27331668,302.5250238171,-724.9195237961031,376.4296161256752 +718336041.1132,-118760718.6815,-293447503.35864615,264844248.2196327,311.81735574699997,-701.3121653482605,355.0305136414043 +718349779.3912,-114418535.95580001,-302924239.17673326,269580187.6165588,320.1624542781,-678.411844021155,334.5706781233075 +718363517.6692,-109967645.52510001,-312090934.68900955,274041028.17970043,327.6579780938,-656.169024239445,314.9693469988523 +718377255.9471,-105419125.5962,-320956306.9612879,278238063.1814903,334.3883071812,-634.5383879976071,296.1549936413285 +718390994.2251,-100782973.63170001,-329528476.971263,282181658.9958419,340.426719697,-613.4784074082352,278.0640078281169 +718397863.3641,-98434899.24923,-333706998.1945603,284061428.39648676,343.2067611202,-603.1503759211305,269.2717902420474 +718404732.5031,-96068246.36173,-337815018.9731154,285881356.08624864,345.837151819,-592.9509579724345,260.63959802037226 +718411601.6421,-93684019.44849999,-341853407.93297654,287642519.8724271,348.32465915619997,-582.8758625640805,252.16124690030375 +718418470.7811,-91283177.9614,-345823004.8177104,289345956.1911337,350.6756313482,-572.9209698336119,243.83087206390294 +718425339.9201,-88866639.09367001,-349724621.63293636,290992662.2283069,352.8960290681,-563.0823221355785,235.64290696556125 +718432209.0591,-86435280.34162,-353559043.73171955,292583597.90085864,354.9914541875,-553.3561156172368,227.59206383420712 +718435643.6286,-85214307.45966001,-355451295.1515686,293358442.0917648,355.993960988,-548.5340291789474,223.61648235024543 +718437360.9133,-84602542.48541,-356391221.7326614,293740757.7794959,356.4841913615,-546.1330444520216,221.64088440388574 +718438219.5557,-84296345.8593,-356859640.26041234,293930645.1030016,356.7265846212,-544.9350426843464,220.65610099645536 +718438648.8769,-84143169.69153999,-357093463.9560537,294025271.8881812,356.8471049388,-544.336661473066,220.1644591521222 +718438863.5375,-84066562.22857,-357210279.4894271,294072506.1554424,356.9071965372,-544.037625415077,219.91882519365956 +718438970.8678,-84028253.66286,-357268663.1870989,294096103.51944965,356.9372002608,-543.8881459768846,219.79605489292925 +718439024.5329,-84009098.1727,-357297849.0198538,294107897.2604278,356.9521916117,-543.8134158999922,219.73468140453613 +718439078.1981,-83989941.87821999,-357327030.84235364,294119687.7079906,356.96717595850004,-543.7386922487311,219.6733156876853 +718439185.5284,-83951626.87789999,-357385382.45830107,294143258.7247024,356.9971236486,-543.5892642165426,219.5506075596075 +718439400.1889,-83874987.24191,-357502037.5824748,294190361.255563,357.05693507949997,-543.2904851885326,219.30528446449952 +718439829.5101,-83721669.51243,-357735155.47763336,294284408.4003384,357.1762226567,-542.6932349106936,218.81501042167358 +718440688.1525,-83414880.89408,-358200622.47089875,294471871.7662333,357.4134607603,-541.4999625284125,217.83594695906262 +718442405.4373,-82800696.35741,-359128486.1770576,294844280.7331171,357.88262123249996,-539.1183070506697,215.8837269770186 +718445840.0068,-81569940.37284,-360971971.4215332,295579074.64059895,358.79993541529996,-534.3743676464746,212.00266526228023 +718452709.1457,-79099212.57933,-364610280.1690115,297008936.29106426,360.5525305211,-524.9625160578713,204.33210327515494 +718466447.4237,-74123449.12242,-371694632.62416035,299712616.78985125,363.7446953007,-506.43164693608725,189.3422934170338 +718480185.7017,-69106550.01124,-378526971.8417658,302213432.90707904,366.5460957587,-488.2707927265749,174.7942323821439 +718493923.9797,-64053681.25535,-385112221.0792952,304517247.5489737,368.9856585789,-470.45691518949695,160.65838489163073 +718507662.2577,-58969632.80544,-391454997.8567784,306629535.6118336,371.089273962,-452.968516765241,146.9077476628983 +718521400.5356,-53858857.619330004,-397559634.0763506,308555416.7725173,372.8801678395,-435.78549156905876,133.5175676194492 +718535138.8136,-48725506.02003,-403430194.21232116,310299684.676637,374.379218624,-418.88899259903377,120.46509739702833 +718548877.0916,-43573456.10646,-409070491.7829278,311866833.0344396,375.6052277609,-402.26131210969356,107.72938186127679 +718562615.3696,-38406340.44636,-414484104.1939661,313261078.80048543,376.5751530655,-385.88577418641677,95.29107114739395 +718590091.9255,-28040356.44269,-424644482.70981157,315546470.6140856,377.8065377239,-353.82901535276693,71.23633061086684 +718617568.4815,-17652555.32314,-433935710.5189297,317184806.6404488,378.1791138269,-322.6025200788626,48.172436158864514 +718645045.0375,-7265305.175408,-442379135.2256231,318201746.0865594,377.7794434745,-292.1013395776639,25.9879763263976 +718665117.5303,310860.2398525,-448022222.5122534,318565081.10216,377.0405983397,-270.222384686959,10.280900237355155 +718684526.1431,7619035.67387,-453063918.4926341,318620217.6451381,375.9922028257,-249.35383453873828,-4.542031884091273 +718705075.3602,15331084.98128,-457963288.13663226,318368715.43987155,374.5444443143,-227.5328609171442,-19.876984503602884 +718725624.5774,23009968.67438,-462416867.84585047,317805627.5556352,372.7670534681,-205.96085704370444,-34.8727396966498 +718746173.7945,30649074.28601,-466429443.1292808,316937629.33986664,370.6752629123,-184.6058766383107,-49.557621490865436 +718766723.0116,38242074.94797,-470005156.65456724,315770836.42207956,368.28166983709997,-163.4372666004366,-63.957822339493724 +718787272.2288,45782877.40574,-473147532.6726842,314310845.94209146,365.59645946449996,-142.42545290653095,-78.09766123262249 +718807821.4459,53265574.55555,-475859497.09139216,312562772.5642941,362.627585007,-121.54174615194715,-91.99980766885157 +718828370.663,60684401.04589,-478143393.7976147,310531280.3588988,359.3809111384,-100.75815820785505,-105.68547878813196 +718848919.8802,68033691.55612,-480000997.2632216,308220610.8167774,355.8603248982,-80.04723144659704,-119.17461206161641 +718869469.0973,75307841.05545999,-481433521.7621126,305634607.54408234,352.0678167565,-59.38187295213942,-132.48601916544143 +718879743.7059,78914993.37405999,-481990607.18446714,304239453.48606527,350.06970955080004,-49.05787562439378,-139.0806801242266 +718884881.0101,80710783.53217,-482229374.7952868,303516516.7941396,349.0451448802,-43.89658020564069,-142.36369666864854 +718887449.6623,81606693.8597,-482338815.44674206,303148729.7064454,348.5264730156,-41.315924936401814,-144.0017421075819 +718888733.9884,82054148.04663,-482391049.95205295,302963259.05508864,348.2655378693,-40.02557248006123,-144.81991341569443 +718889376.1514,82277749.29665999,-482416545.73843783,302870129.7703085,348.13467024119996,-39.3803871790016,-145.22878799440036 +718889697.2329,82389518.38587001,-482429138.2632827,302823466.6776312,348.0691363805,-39.05779190169788,-145.43317273639556 +718889857.7737,82445395.03716,-482435395.6833228,302800110.52361315,348.0363444344,-38.89649356153542,-145.5353519982413 +718889938.044,82473331.38836001,-482438514.6827224,302788426.2952757,348.0199422069,-38.815844210909034,-145.58643835509764 +718890018.3144,82501266.42277999,-482441627.20846444,302776737.9663493,348.0035358095,-38.73519473748087,-145.6375225306998 +718890178.8552,82557132.53983,-482447832.83842194,302753349.00725275,347.97071050439996,-38.57389541504776,-145.73968434266772 +718890499.9367,82668848.95783001,-482460166.41284645,302706521.8892012,347.9050098492,-38.25129522629291,-145.94398183509816 +718891142.0997,82892218.45446,-482484522.817237,302612670.8926055,347.7734083235,-37.606088314587524,-146.35247251472043 +718892426.4258,83338703.49013,-482531992.6265526,302424182.169031,347.5094041275,-36.31564548514197,-147.1690384172568 +718894995.0779,84230652.92743,-482621960.0541519,302044060.2783733,346.9781887958,-33.73462084030315,-148.80052246826494 +718900132.3822,86010430.78669001,-482782004.13938403,301271258.26735693,345.90291004,-28.57183180128282,-152.05701155292985 +718910406.9908,89553193.76279001,-483022506.14509946,299675573.4265708,343.7007742981,-18.241822064385275,-158.54496046188476 +718930956.2079,96569062.62157,-483184866.98836434,296285029.77905846,339.08833013360004,2.4477535582028693,-171.42769678877536 +718951505.4251,103487260.92889999,-482921481.8354758,292630925.9019008,334.1937261404,23.199459522715316,-184.19910966834436 +718972054.6422,110301920.235,-482230790.5813475,288715394.5536811,329.0098033481,44.04096375483874,-196.87418313393113 +718992603.8593,117007005.133,-481110658.55094826,284540265.67023236,323.52745781699997,65.00055108056185,-209.46742040346257 +719013153.0765,123596272.3062,-479558361.8780303,280107075.41739327,317.7355401402,86.10731163522743,-221.99292207241592 +719033702.2936,130063227.2332,-477570568.94880956,275417073.72365254,311.62072458029996,107.39134159378241,-234.46445799428665 +719054251.5107,136401077.7243,-475143317.45603323,270471230.3823082,305.1673416754,128.8839634423404,-246.89553473501724 +719095349.945,148660503.4253,-468951265.5494578,259814524.4525292,291.1691956081,172.62787935298573,-271.68939247600883 +719111697.1024,153371574.32909998,-465984651.5431698,255292627.77647406,285.165304213,190.35833998760342,-281.54445214362005 +719111837.2787,153411542.42459998,-465957956.1620543,255253156.12513927,285.112684065,190.5112881627002,-281.62897620864123 +719141621.4848,161732331.48270002,-459796006.63457,246597460.21627632,273.46966041319996,223.39224342175075,-299.60490723676094 +719171405.691,169691897.5773,-452642405.169971,237405573.72328314,260.8389903686,257.1227767689661,-317.64064340147274 +719201189.8972,177259136.7016,-444469770.97598827,227675120.8339222,247.1035959666,291.84506695066625,-335.77616494551205 +719216082.0002,180884883.14699998,-439991546.0509434,222606862.73280418,239.77833283319998,309.6274450858904,-344.89394680482775 +719230974.1033,184399097.4412,-435246225.79254895,217402529.23985142,232.12130537090002,327.7196062204338,-354.0518548714248 +719245866.2064,187796672.9108,-430229022.8930983,212061484.69387808,224.1098209699,346.14520207461754,-363.2550075123082 +719260758.3095,191072146.93240002,-424934784.82561755,206583017.0703275,215.7187473162,364.9296487078946,-372.50854436905087 +719275650.4126,194219662.58470002,-419357966.1785539,200966337.70296207,206.9201958242,384.100337184121,-381.81761519263705 +719290542.5156,197232924.8294,-413492597.43803436,195210581.262153,197.6831517156,403.686874388097,-391.18736288527646 +719305434.6187,200105150.83560002,-407332250.00214815,189314806.02913636,187.97304068510002,423.7213585823275,-400.62289874546883 +719320326.7218,202829013.3062,-400869996.79908746,183277994.60934734,177.7512183922,444.23869457164756,-410.1292671131895 +719327772.7733,204132853.75730002,-397523343.70154506,180206362.01408407,172.4350796969,454.69019556790215,-414.9105598823674 +719331495.7991,204769797.0917,-395820709.3628082,178657177.04172117,169.7231773252,459.96634197608813,-417.30849822170467 +719333357.312,205084465.515,-394962010.03749007,177879234.41270357,168.3534343203,462.61729942708894,-418.50932285269346 +719334288.0684,205240841.3911,-394530807.80984473,177489424.55191305,167.6650719914,463.94603564698747,-419.1102030460951 +719334753.4467,205318788.7952,-394314742.6684357,177294309.8576725,167.3200126857,464.61122273442516,-419.4107606109354 +719334986.1358,205357702.24449998,-394206593.9795366,177196700.05362967,167.1472628134,464.9440216011992,-419.56106882253755 +719335102.4803,205377143.891,-394152490.59166443,177147882.03540823,167.0608327365,465.1104724378374,-419.6362302932878 +719335160.6526,205386860.9429,-394125431.6351713,177123469.74699262,167.0176039022,465.19371071574506,-419.67381287077586 +719335218.8249,205396575.4799,-394098367.83625454,177099055.27227136,166.9743658665,465.2769575704789,-419.71139667670093 +719335335.1694,205415997.0065,-394044225.7089956,177050219.7636045,166.8878621786,465.44347702096115,-419.78656797570545 +719335567.8585,205454809.8562,-393935883.32371145,176952522.5075769,166.71474425099998,465.7766189568392,-419.93692532809246 +719336033.2368,205532314.6219,-393718965.917563,176757023.02448225,166.36806549739998,466.4433155518615,-420.23769911234604 +719336963.9932,205686839.45430002,-393284199.6654238,176365604.0458145,165.6729308511,467.77836431051304,-420.8394834924918 +719338825.5061,205993942.57459998,-392410934.1861342,175581085.00758153,164.27550832089997,470.4551217186929,-422.0440034357749 +719342548.5319,206600300.0199,-390649413.0695143,174005314.30130082,161.451687733,475.83558037942606,-424.4568793250943 +719349994.5834,207781108.474,-387065935.54480165,170826775.0735862,155.6851593645,486.7067620030178,-429.2982213017118 +719364886.6865,210010836.419,-379653298.8696963,164361153.54542047,143.6512377285,508.9110158939553,-439.04516271854567 +719379778.7896,212056071.8019,-371905157.92976284,157749721.33395588,130.8968836198,531.7735891283494,-448.88114292045293 +719394670.8926,213905570.9174,-363811301.55761373,150991125.3011955,117.3513938096,555.3501459673456,-458.80970043740143 +719409562.9957,215546964.4641,-355360645.30942744,144083965.0017571,102.9340317711,579.7024414081172,-468.8336098160664 +719424455.0988,216966594.7895,-346541134.0782445,137026806.09269872,87.55217198647,604.8992449760888,-478.9545946966383 +719437857.9916,218042175.8468,-338277368.6422335,130545915.91721311,72.79591729539001,628.3617759839119,-488.1467561080641 +719449920.5951,218836081.3353,-330566855.2326989,124607359.60318308,58.69981062933,650.1675835945432,-496.48625683020634 +719461983.1986,219454907.614,-322589105.68172,118567836.40057728,43.754302083919995,672.6788032579851,-504.8868003523426 +719472839.5417,219853299.8746,-315173352.6087834,113045344.86232772,29.50749336254,693.5879566621762,-512.4967160283109 +719482610.2506,220076095.4005,-308302267.9246776,108004275.92684528,15.981174743250001,712.970141740625,-519.3825461304825 +719487495.605,220137068.42249998,-304795025.4993997,105458472.05845371,8.949497800849,722.8730726673273,-522.8374083854605 +719492380.9594,220163230.2211,-301239045.433071,102895772.06981784,1.728586635813,732.9235014944488,-526.2994946286552 +719497266.3138,220153636.3993,-297633595.1001622,100316142.23868518,-5.689796690894,743.1263970929275,-529.7681469514174 +719502151.6682,220107301.1064,-293977917.05147797,97719552.28092803,-13.31438892211,753.4869546455295,-533.2426146338962 +719507037.0226,220023194.5127,-290271227.877991,95105975.8279465,-21.154464336420002,764.0106087375816,-536.7220437310946 +719511922.377,219900240.0813,-286512717.00757194,92475390.95854323,-29.21987715793,774.7030473042387,-540.2054653965688 +719521693.0859,219533230.1137,-278836844.35640275,87163134.14823462,-46.06931530431,796.6183865108775,-547.1797562207321 +719531463.7947,218996606.7221,-270943220.95332533,81782719.72002536,-63.955022436229996,819.2841325342906,-554.1548971617556 +719541234.5035,218279742.6567,-262824244.28964692,76334202.51194072,-82.98209980104001,842.7565579635052,-561.1174286825475 +719551005.2124,217370912.08,-254471734.5094325,70817785.7795591,-103.2707454839,867.0976814196904,-568.050293039146 +719560775.9212,216257129.6727,-245876874.84214103,65233860.73836759,-124.9590923515,892.3759827266722,-574.9318969183024 +719563700.3445,215881797.0629,-243255863.31822017,63549526.31116591,-131.7457888104,900.1352026858068,-576.9777428164866 +719563700.3445,215881807.3106,-243255866.46468297,63549523.266312644,-131.74584065969998,900.1352203011054,-576.977729249896 +719564311.0239,215800904.7026,-242705671.1882449,63197047.70948583,-133.1810415031,901.7671362659237,-577.403994181817 +719572325.7143,214656358.1826,-235391399.56201252,58547011.48582517,-152.6215209191,923.569821703613,-582.9625869409986 +719580340.4047,213351276.5694,-227899418.81494448,53852734.196011,-173.26015659630002,946.1212559314606,-588.440248246995 +719588355.0952,211875581.9704,-220223523.28006482,49114960.72378598,-195.21813305290001,969.4732526382589,-593.8121405847704 +719596369.7856,210218158.02,-212357073.81356132,44334656.31066226,-218.63388894239998,993.6822297910446,-599.0479115035964 +719604384.476,208366699.21670002,-204292959.33482197,39513055.9568893,-243.6663129895,1018.8096041896773,-604.1103448480549 +719612399.1664,206307531.81419998,-196023555.20922434,34651726.08170588,-270.49867569590003,1044.9221726645494,-608.953627238408 +719620413.8569,204025399.6432,-187540678.77291334,29752642.031862885,-299.3434966256,1072.0924434096244,-613.5211017123693 +719628428.5473,201503206.1636,-178835542.47255248,24818286.216200806,-330.4486171983,1100.3988620472378,-617.7423312167148 +719636443.2377,198721702.1712,-169898706.17441934,19851773.369486064,-364.1048324543,1129.9258369719155,-621.5292235999777 +719644457.9281,195659104.0425,-160720030.11143696,14857011.704687312,-400.65556097260003,1160.7634118558901,-624.7708653664133 +719652472.6186,192290624.83740002,-151288633.2484004,9838912.380195186,-440.5091992642,1193.0063373960022,-627.3265578347923 +719660487.309,188587892.2087,-141592862.17029864,4803664.2097532675,-484.15504533940003,1226.752139921865,-629.0163174141157 +719668501.9994,184518220.86,-131620282.03751984,-240901.69731295854,-532.1839997032,1262.0975222338698,-629.6077495126234 +719672509.3446,182334168.5501,-126526095.09820053,-2763665.383696206,-558.0610976941999,1280.3985687958466,-629.4002576099562 +719676516.6898,180043694.3582,-121357706.23858811,-5284822.45289474,-585.3157253797,1299.1320053205604,-628.7976600124783 +719680524.0351,177641049.81530002,-116113365.51506977,-7802685.448007636,-614.0638434199,1318.3061110247381,-627.7467182412151 +719684531.3803,175119995.9646,-110791293.9875054,-10315337.428754568,-644.4345729772,1337.9269591945872,-626.1859078785202 +719688538.7255,172473747.01029998,-105389694.14362459,-12820595.794754088,-676.5720334374,1357.997582915948,-624.0438862978584 +719692546.0707,169694906.085,-99906764.18315032,-15315969.335733734,-710.6374724734001,1378.5168852567292,-621.2376290798029 +719696553.4159,166775391.7416,-94340717.28863904,-17798606.995170593,-746.8117362309999,1399.478213659619,-617.6701535287165 +719700560.7611,163706353.86949998,-88689807.46545245,-20265236.555909242,-785.298132412,1420.8674898778704,-613.2277248946281 +719704568.1063,160478077.1442,-82952364.01051092,-22712090.813653287,-826.3257451403,1442.6607509196033,-607.7764122199021 +719708575.4516,157079870.312,-77126837.30133002,-25134818.45481835,-870.1532590776,1464.8209027787268,-601.1578231825159 +719712582.7968,153499938.9004,-71211859.66684131,-27528375.726320375,-917.0733518866,1487.293420391247,-593.1837977632431 +719716590.142,149725239.2701,-65206326.107728034,-29886894.436720777,-967.4176898205999,1510.0006254541613,-583.6297804105294 +719720597.4872,145741311.22480002,-59109501.695445225,-32203519.999149457,-1021.5625396679999,1532.8340394897355,-572.2265056718841 +719724604.8324,141532087.2681,-52921164.5519539,-34470212.19557783,-1079.934923872,1555.6441168365316,-558.6495389928489 +719729057.4382,136569106.66779998,-45938521.50806063,-36918617.56964814,-1150.342497683,1580.7102421028735,-540.5341189735783 +719731283.7411,133966535.13100001,-42405641.76182711,-38110566.025036775,-1187.960772329,1593.0210840589302,-530.0860829871725 +719733510.044,131278289.6195,-38845595.274474084,-39278100.443998925,-1227.325713769,1605.1042557392038,-518.5845823465611 +719735736.3469,128500358.92539999,-35258968.40425208,-40418756.28489815,-1268.5486185799998,1616.886280044432,-505.92046239979635 +719737962.6498,125628476.3072,-31646525.694290213,-41529811.629639864,-1311.747746284,1628.2801760916223,-491.9713900545753 +719740188.9527,122658104.0492,-28009242.63539756,-42608255.9514753,-1357.048242967,1639.1829796907266,-476.6001252842929 +719742415.2556,119584418.4104,-24348344.409047797,-43650754.81868449,-1404.581826996,1649.4727964677961,-459.6525808812914 +719744641.5585,116402295.6748,-20665351.854591038,-44653610.01070673,-1454.486135538,1659.0053016890636,-440.95566088207283 +719746867.8614,113106300.0766,-16962135.8494834,-45612714.59402358,-1506.903603433,1667.6095932448418,-420.31487653782557 +719749094.1643,109690675.0082,-13240981.820301773,-46523502.45137526,-1561.9796944490001,1675.0832884186036,-397.5117536962494 +719751320.4672,106149338.96550001,-9504666.056636792,-47380891.81508996,-1619.860256187,1681.1867573180114,-372.3010719530818 +719753546.77,102475888.7599,-5756545.956826441,-48179222.57752656,-1680.687690706,1685.6363790897353,-344.40801153987667 +719755773.0729,98663612.82909,-2000666.4964206852,-48912187.19041941,-1744.595547742,1688.0967311744346,-313.5253445852484 +719757999.3758,94705518.89632,1758114.8025198206,-49572755.6982576,-1811.701030383,1688.171653166449,-279.31088942156543 +719760225.6787,90594381.12763,5513981.595229927,-50153095.533159874,-1882.094781417,1685.3942178003335,-241.38557353701975 +719762451.9816,86322813.79165,9259989.175555993,-50644488.251350485,-1955.827165069,1679.2157699021616,-199.3326205622356 +719764678.2845,81883380.23097,12987869.713059139,-51037246.30877289,-2032.890131425,1668.9944336837343,-152.69861248759838 +719766904.5874,77268748.0145,16687812.11725832,-51320635.31602007,-2113.19363313,1653.9838517979083,-100.99749715539315 +719769130.8903,72471903.67108999,20348218.03418275,-51482809.68460346,-2196.5355727359997,1633.3234602517573,-43.71899204926194 +719771357.1932,67486442.36489,23955440.002926484,-51510773.79980206,-2282.5644421889997,1606.0323925353855,19.65669542263697 +719773583.4961,62306949.12025,27493512.617041893,-51390384.926568106,-2370.734375164,1571.010135614854,89.63546257702353 +719775809.799,56929488.08625,30943896.875597537,-51106420.652753845,-2460.253477073,1527.0483743387288,166.6744996711028 +719778036.1019,51352211.66668,34285268.5004176,-50642738.84434551,-2550.028285046,1472.8598251925137,251.13339196543097 +719779149.2534,48488814.14801,35907616.28240883,-50338275.289283946,-2594.5740662509997,1441.519017185059,296.2153288819812 +719780262.4048,45576092.64905,37493395.71789063,-49982564.146190695,-2638.6103222280003,1407.1310174622947,343.20921918146644 +719781375.5562,42614747.37132,39039128.003540136,-49573483.12093404,-2681.893723386,1369.5412854459812,392.1010453728982 +719782488.7077,39605763.845180005,40541167.92035346,-49108936.90564003,-2724.1549631919997,1328.6060852176302,442.8558309242105 +719783601.8591,36550441.64293,41995718.38555566,-48586882.20534611,-2765.09926418,1284.197121673355,495.4145935221356 +719784715.0106,33450422.02523,43398850.47700267,-48005356.12147328,-2804.407784779,1236.2067181635748,549.6913720357653 +719785828.162,30307713.49866,44746529.47542186,-47362507.759299256,-2841.740094704,1184.5534378029083,605.5704825142641 +719786941.3135,27124713.91249,46034647.31537323,-46656632.63776331,-2876.737869033,1129.187995637013,662.904188769461 +719788054.4649,23904227.60929,47259061.82579465,-45886209.415305465,-2909.029903872,1070.0992445808856,721.5109948060446 +719789167.6164,20649476.422790002,48415642.31363635,-45049937.99754725,-2938.238520399,1007.3199487718108,781.1747973190825 +719790280.7678,17364102.67058,49500321.4534024,-44146778.05505048,-2963.9873062879997,940.9320078479909,841.6451121028258 +719791393.9193,14052162.870070001,50509152.47380125,-43175986.58301321,-2985.910063826,871.0707468901276,902.6385823221192 +719792507.0707,10718110.9374,51438370.41721964,-42137152.99736444,-3003.6607048819997,797.9278708276905,963.8419220245838 +719793620.2222,7366770.011708001,52284455.764946595,-41030230.11258544,-3016.9237110520003,721.7526983130199,1024.9163745831024 +719794176.7979,5686214.78183,52675306.73489188,-40451326.14544386,-3021.7847095409998,682.6215125752152,1055.293878342453 +719794733.3736,4003292.5395669998,53044198.32707331,-39855559.3170159,-3025.424663575,642.8513482372434,1085.5036662181224 +719795289.9493,2318690.3575999998,53390787.733932294,-39243035.9336373,-3027.817338156,602.4888389356033,1115.4991050704189 +719795846.5251,633108.8749614,53714758.956951015,-38613888.33683014,-3028.9402620270002,561.5836532394429,1145.2333189554245 +719796403.1008,-1052739.866255,54015824.43509815,-37968274.96023834,-3028.774968719,520.1882697941519,1174.6594724239244 +719796959.6765,-2738134.7097460004,54293726.53829655,-37306380.22617461,-3027.3072055850002,478.357718294714,1203.7310618516376 +719798072.828,-6104646.960283999,54779167.627393894,-35934612.555417165,-3020.4293266170002,393.6222123986747,1260.6279663230048 +719798629.4037,-7784298.436629,54986352.20592149,-35225235.18668982,-3015.013130783,350.8373175316717,1288.3645892908744 +719798907.6916,-8622902.144117001,55080999.62880572,-34864793.49544142,-3011.811670791,329.36754483608274,1302.0362096002398 +719799046.8355,-9041858.486768,55126081.28338914,-34683150.6526658,-3010.087958428,318.61675176962086,1308.8205883681992 +719799116.4075,-9251245.292922,55148060.978353634,-34591975.83695069,-3009.195416351,313.2378090943241,1312.1996434435318 +719799151.1934,-9355915.232297,55158910.472511835,-34546300.34812063,-3008.74148223,310.54750516196196,1313.8858532327145 +719799168.5864,-9408244.258327,55164300.12293032,-34523440.617195144,-3008.512600507,309.2021517966525,1314.7281244436017 +719799177.2829,-9434407.275717,55166986.1729533,-34512005.2593359,-3008.397681121,308.52942560799465,1315.1490510982467 +719799181.6312,-9447488.409291,55168327.00403854,-34506286.207835674,-3008.340101815,308.1930502431949,1315.3594621229606 +719799183.8053,-9454028.882145999,55168996.87109344,-34503426.33901367,-3008.311282261,308.0248595058414,1315.464654550224 +719799184.8924,-9457299.095073,55169331.667490385,-34501996.31883875,-3008.296865009,307.94076337554435,1315.517247492345 +719799185.9794,-9460569.292325001,55169666.37247433,-34500566.241496146,-3008.282442774,307.85666673771414,1315.5698382522762 +719799188.1535,-9467109.639779001,55170335.508172445,-34497705.915303275,-3008.253583355,307.6884719415956,1315.675013225731 +719799192.5018,-9480190.146347001,55171672.6825464,-34491984.57698234,-3008.1958047209996,307.35207628196,1315.885336978573 +719799201.1983,-9506350.404909,55174342.64300994,-34480539.157100365,-3008.080008292,306.6792607983268,1316.305879642741 +719799218.5913,-9558667.894032,55179665.00982534,-34457637.34863384,-3007.847458938,305.333534015668,1317.1465450709823 +719799253.3773,-9663290.682651998,55190239.519334234,-34411789.89103395,-3007.378535434,302.6417039496346,1318.826192124922 +719799322.9492,-9872486.880723,55211107.58209041,-34319919.88733566,-3006.425399008,297.2565919021734,1322.1787174475444 +719799462.0932,-10290676.8002,55251719.43249099,-34135481.736729495,-3004.4580503099996,286.4809931551876,1328.8564260162734 +719799740.381,-11126207.14284,55328442.884602636,-33763830.82521496,-3000.279762934,264.9117651696297,1342.1003665259798 +719800296.9567,-12793554.774500001,55463870.85349864,-33009578.585017987,-2990.955469392,221.72896532267202,1368.1259273478838 +719801410.1082,-16110910.01372,55662623.37371449,-31458522.509051148,-2968.50375545,135.40774467669672,1418.2042543156213 +719802523.2596,-19400523.42383,55765506.38618525,-29853281.32315823,-2941.149324079,49.56268613119914,1465.4407127232957 +719803525.0959,-22333052.89645,55776784.30013886,-28364948.064342044,-2912.5496174590003,-26.889912086272034,1505.3457041106083 +719804526.9322,-25235137.6703,55711999.3973212,-26837929.416600857,-2880.411890258,-102.23025249881857,1542.6518742502285 +719805528.7685,-28103359.255489998,55572423.36273124,-25274876.859411567,-2844.992317215,-176.148602732276,1577.2691441623529 +719806530.6049,-30934568.319649998,55359624.12109883,-23678515.70776478,-2806.57090086,-248.3639829169075,1609.1400906440865 +719807532.4412,-33725905.17791,55075435.20063781,-22051612.81692862,-2765.4447115790003,-318.6275959677871,1638.2389419012197 +719808534.2775,-36474813.50028,54721922.28069335,-20396945.740830857,-2721.921179204,-386.7250581650121,1664.5697442907524 +719809536.1138,-39179047.472619995,54301348.20512939,-18717274.13751055,-2676.31170277,-452.4774597584337,1688.1638574011238 +719810537.9501,-41836672.761659995,53816137.019156136,-17015313.64017968,-2628.9258162859996,-515.7413438023857,1709.0769617549881 +719811539.7864,-44446062.028400004,53268839.19815668,-15293713.35998385,-2580.066029,-576.407746363728,1727.385741613531 +719812541.6227,-47005885.58627,52662097.820325345,-13555036.539141303,-2530.0234816899997,-634.4004524164018,1743.1844251092305 +719813543.459,-49515098.25542,51998616.86710935,-11801744.662072921,-2479.074446959,-689.6736463578937,1756.5813235486817 +719814545.2953,-51972923.0498,51281132.14354266,-10036185.050189642,-2427.477668259,-742.2091350355073,1767.6954939831385 +719815547.1316,-54378832.60925999,50512385.10312232,-8260581.6779607665,-2375.472495819,-792.0133081079912,1776.6536211916355 +719817550.8042,-59033923.56895,48831963.01778642,-4687488.3202822525,-2271.091216403,-883.5572293666197,1788.629957100738 +719819554.4768,-63480366.988460004,46978598.162568346,-1097618.1639273968,-2167.429435167,-964.7290069101534,1793.577065382143 +719821558.1494,-67720832.32424,44972475.00542565,2495997.223979801,-2065.6603277980003,-1036.1514598779563,1792.537521965624 +719823561.822,-71760036.15837,42832398.977661625,6082353.832262175,-1966.660101785,-1098.566271872647,1786.4870987246213 +719825565.4946,-75604186.25873,40575624.81413186,9652313.890153056,-1871.048255858,-1152.770380146338,1776.3099630777867 +719827569.1672,-79260511.18041,38217795.65953851,13198409.243810304,-1779.23156783,-1199.5689707539225,1762.7876174792796 +719829572.8398,-82736877.27746,35772961.224735364,16714632.987136219,-1691.446669735,-1239.7430600557743,1746.5975156789466 +719831576.5124,-86041486.97452,33253648.58938868,20196235.029910557,-1607.798315262,-1274.0288831315372,1728.3178971761645 +719833580.185,-89182648.28188999,30670964.855103243,23639531.315648872,-1528.292077523,-1303.1062530008076,1708.436174281959 +719835583.8576,-92168603.95683001,28034716.268297862,27041731.735799048,-1452.861257076,-1327.5933794629254,1687.3589693925296 +719837587.5302,-95007409.08945,25353533.049585667,30400788.68585608,-1381.38838748,-1348.046099534059,1665.4225402184966 +719839591.2029,-97706846.88090001,22634992.528409354,33715266.31841744,-1313.722014445,-1364.959952539416,1642.9028209883531 +719841594.8755,-100274373.9968,19885736.539080787,36984228.97827235,-1249.689507954,-1378.7739437403634,1620.0246430043182 +719843598.5481,-102717088.23969999,17111580.128248364,40207147.22010251,-1189.106657993,-1389.8751961980993,1596.9699470978526 +719845602.2207,-105041712.7852,14317610.463851893,43383819.26242095,-1131.784714716,-1398.6039435386544,1573.8849350460264 +719847605.8933,-107254592.41139999,11508275.80686799,46514305.645532325,-1077.5354397750002,-1405.258512730028,1550.88619900421 +719849609.5659,-109361698.307,8687464.64900093,49598875.276407756,-1026.1746321809999,-1410.100080838102,1528.0659114126406 +719851613.2385,-111368638.6736,5858575.672663448,52637960.9728019,-977.5245031605,-1413.3570899674726,1505.4961839099542 +719853616.9111,-113280673.23709999,3024579.2418049574,55632123.038656324,-931.4151911425,-1415.2292615701176,1483.2327018890844 +719855620.5837,-115102730.0985,188071.28437730297,58582019.457018316,-887.6856449198,-1415.8911960990008,1461.3177410678254 +719857624.2563,-116839423.8755,-2648679.653397899,61488381.60862194,-846.1840477461,-1415.495568065193,1439.7826613922796 +719861631.6015,-120073725.0641,-8315232.119794343,67173680.86349717,-769.3039667173,-1412.0492293036127,1397.9349781456172 +719865638.9467,-123014928.62,-13962044.162029218,72694677.76110962,-699.7437034071,-1405.771626642918,1357.7917171399602 +719869646.292,-125690530.71069999,-19579186.40948025,78058274.966279,-636.6080921722,-1397.3402213772556,1319.3790432766 +719873653.6372,-128124689.49679999,-25159119.848786823,83271375.92641369,-579.1237583866,-1387.2776261256647,1282.6749083888506 +719877660.9824,-130338682.2895,-30696152.872383144,88340731.19519858,-526.6238380012,-1375.9885215755853,1247.627567475148 +719881668.3276,-132351302.98400001,-36186026.8252211,93272845.86988485,-478.5333602911,-1363.7874196468597,1214.1679082877363 +719885675.6728,-134179203.0641,-41625598.676224664,98073927.45958424,-434.3560304678,-1350.9195747447734,1182.2176109232464 +719889683.018,-135837183.2539,-47012596.48405789,102749860.45179902,-393.6626374646,-1337.576789386423,1151.6944972560564 +719893690.3632,-137338441.7387,-52345430.43722828,107306198.323945,-356.0810780819,-1323.9094112608727,1122.5159903181636 +719897697.7084,-138694785.5893,-57623045.79394601,111748166.63777836,-321.2878592457,-1310.0354821517935,1094.6012977574874 +719901705.0537,-139916810.6974,-62844808.14216584,116080673.09702335,-289.000908954,-1296.047752200777,1067.8727415111448 +719905712.3989,-141014055.3297,-68010413.31355922,120308321.70954898,-258.9735117629,-1282.0190838130009,1042.2565134961787 +719909719.7441,-141995131.1959,-73119816.43672998,124435429.11170441,-230.9892004582,-1268.0066382241264,1017.6830515620279 +719913727.0893,-142867835.89630002,-78173175.81925607,128466041.95487869,-204.85745325300002,-1254.055133781963,994.0871648914724 +719917734.4345,-143639249.3473,-83170808.38302776,132403954.34594591,-180.4100650497,-1240.199395952894,971.4079985933745 +719921741.7797,-144315816.9414,-88113154.2271192,136252725.01884028,-157.4980824118,-1226.4663609170293,949.5888965751479 +719925749.1249,-144903421.32729998,-93000748.26898429,140015693.74064723,-135.98920940699998,-1212.876658394643,928.5772048752602 +719933763.8154,-145832822.56530002,-102614163.3808364,147296582.2360524,-96.72201542184999,-1186.185508245998,888.784051081308 +719941778.5058,-146465429.832,-112016474.03127086,154269527.15186998,-61.80740770005,-1160.2065629460772,851.6783336663484 +719949793.1962,-146833449.8143,-121213562.46988624,160954829.21023834,-30.599765671980002,-1134.9775954634072,816.9585412545537 +719957807.8866,-146964416.1898,-130211494.82856569,167370543.34344485,-2.573563072989,-1110.5087896597424,784.3646709236742 +719965822.5771,-146882041.7767,-139016343.03450012,173532785.6903025,22.70294101775,-1086.7927014630318,753.6718970279259 +719973034.6149,-146642599.25689998,-146779290.6426044,178873187.35419974,43.39450718171,-1066.0800020852857,727.5162590296006 +719980246.6528,-146260240.31759998,-154394947.7047526,184029554.99798673,62.36943844765,-1045.9436574821673,702.6171537544491 +719987458.6907,-145746650.9828,-161867396.78585044,189010544.89945984,79.81551771192,-1026.362780513421,678.8642208439685 +719994670.7286,-145112260.36049998,-169200563.99506038,193824062.7462741,95.8943421113,-1007.3150366795533,656.1593730393681 +719997061.1487,-144876967.8671,-171601049.0925405,195383802.16271564,100.94648462869999,-1001.1153952136096,648.8498715568376 +719997061.1487,-144876952.6256,-171601051.69873083,195383796.139364,101.0007947533,-1001.1970048759765,649.0242878610857 +720001614.1406,-144395828.2319,-176132883.17716548,198307607.26664358,110.2673618388,-989.5406903237724,635.3832038511352 +720020390.0151,-141997508.2774,-194274948.5917673,209734112.6432411,144.0995389977,-943.4643577380697,582.6630199683304 +720029777.9523,-140574946.9482,-203028686.84463745,215088342.45496342,158.7340217492,-921.5439309082534,558.1906977767807 +720039165.8896,-139021170.545,-211579879.5986731,220218062.00723213,172.0791501773,-900.3067566929612,534.8152157046849 +720048553.8268,-137347596.1878,-219934735.58677545,225133074.23834002,184.27776916759998,-879.7094574275093,512.4334608403302 +720057941.764,-135564394.2957,-228099068.27949625,229842271.81385148,195.4532599412,-859.7112057616235,490.954317543518 +720067329.7013,-133680654.849,-236078319.7104559,234353741.72395217,205.7129159585,-840.2736847561548,470.29701339639826 +720076717.6385,-131704525.25780001,-243877583.5990867,238674855.83084053,215.15065887609998,-821.3609874422006,450.38976474354655 +720086105.5757,-129643325.1608,-251501627.3764869,242812349.84130174,223.84923587300003,-802.9394836382793,431.1686675975768 +720095493.5129,-127503642.76099999,-258954912.86274385,246772392.94604677,231.8820030112,-784.9776726767217,412.57679067143334 +720104881.4502,-125291415.7497,-266241615.55232397,250560649.5917216,239.3143749746,-767.4460349406863,394.5634340786799 +720114269.3874,-123012000.5504,-273365642.5846014,254182335.16967335,246.2049986013,-750.3168899360172,377.0835244000478 +720123657.3246,-120670230.8605,-280330649.3404309,257642266.30202705,252.60670034709997,-733.5642668662825,360.09711611434625 +720133045.2619,-118270468.75,-287140054.96023685,260944907.03032112,258.56724028369996,-717.1637905940041,343.56897783477865 +720142433.1991,-115816649.33240001,-293797056.8599285,264094411.3782733,264.1299034392,-701.0925856464419,327.46823958281743 +720151821.1363,-113312320.5604,-300304644.4336327,267094662.80027205,269.3339524463,-685.329198905664,311.76808011876716 +720162252.1777,-110474371.0412,-307363450.8378028,270257657.63093555,274.7387858319,-668.1509554907603,294.7653382167213 +720174216.1527,-107152485.4046,-315241335.5193139,273670235.27229995,280.5031428864,-648.8525790299075,275.803649135 +720187509.4583,-103383755.60960001,-323726784.1869319,277200063.5113424,286.4303459106,-627.8754429557134,255.3740542443705 +720194156.1111,-101470602.9303,-327865703.15279996,278864214.54141986,289.2261129753,-617.5572919064924,245.40086440505635 +720197479.4375,-100507144.5966,-329909534.70221806,279671562.6287997,290.5853704453,-612.4385700646278,240.47308008464938 +720199141.1007,-100023731.7876,-330925082.200205,280069111.5522617,291.25572099469997,-609.8890319567658,238.02371802459874 +720199971.9323,-99781608.9346,-331431268.6163488,280266361.7610678,291.5886216658,-608.6166863742469,236.80264941864306 +720200387.3481,-99660443.94511001,-331683965.5768181,280364606.6765517,291.7545088229,-607.9811154822029,236.19301579535403 +720200595.056,-99599835.62773001,-331810215.0681,280413634.1961596,291.83731228190004,-607.6634800185911,235.88842385550748 +720200698.91,-99569525.02185,-331873315.0755218,280438124.2350682,291.8786790654,-607.50469972111,235.7361840666015 +720200750.8369,-99554368.10813001,-331904858.89578575,280450363.3259233,291.8993537311,-607.4253189236301,235.66007821323305 +720200802.7639,-99539210.12099,-331936398.59416014,280462598.4650285,291.92002258350004,-607.3459443571705,235.58398171855907 +720200906.6179,-99508890.92774,-331999465.626886,280487056.89022833,291.9613428595,-607.1872139079886,235.43181679914852 +720201114.3258,-99448239.67345001,-332125550.24439627,280535926.34171104,292.04391378139997,-606.869827686261,235.1275992071434 +720201529.7416,-99326885.76109,-332377521.76015174,280633475.7570656,292.2087777668,-606.2353534618212,234.51961271902823 +720202360.5732,-99083972.85835999,-332880674.4916063,280827817.5069177,292.53739957019997,-604.9675940060702,233.30543221661495 +720204022.2364,-98597331.00496,-333883823.34685534,281213479.62262535,293.1902600625,-602.4368002385776,230.88422293797635 +720207345.5628,-97620816.71364,-335877530.97850156,281972773.60588837,294.4787719368,-597.3938704604619,226.070270732462 +720213992.2155,-95655126.87348999,-339814870.83229417,283443679.5556426,296.9894023502,-587.3807592658092,216.55517783309557 +720227285.5211,-91675078.17394,-347491438.11296624,286198226.5712533,301.7624054277,-567.6314054705988,197.968747570548 +720239249.4962,-88040427.22811,-354177739.13056326,288469156.5629431,305.7975010602,-550.1525157068867,181.73662773629005 +720251213.4712,-84358879.58736001,-360656497.86074054,290548643.41793036,309.60460329259996,-532.9339226828531,165.9639039059228 +720261981.0487,-81007580.34795,-366312426.3484024,292260995.1824235,312.84666399900004,-517.6460479772752,152.15324141873882 +720272748.6263,-77622281.43273,-371804756.2431427,293826567.12500864,315.92061838579997,-502.54499696861785,138.69929044641398 +720283516.2038,-74204769.87418,-377135447.2088578,295249155.81709045,318.83042415110003,-487.6212862071543,125.59364808262916 +720294283.7813,-70756799.59191,-382306361.9281116,296532461.914922,321.57837161140003,-472.86635036098716,112.82688756840714 +720305051.3588,-67280106.37298,-387319274.9054528,297680078.81704146,324.1656225258,-458.2723453626479,100.38851701438624 +720315818.9364,-63776417.450950004,-392175879.27346694,298695481.4982938,326.5926739806,-443.831974320814,88.26705296031166 +720326586.5139,-60247456.64724,-396877791.9007597,299582016.7183024,328.8597334501,-429.53834167249863,76.45017669008794 +720337354.0914,-56694945.63920999,-401426556.9862968,300342894.7617399,330.9670008158,-415.3848376424704,64.92493800574425 +720348121.669,-53120603.14235,-405823648.7107131,300981184.18147814,332.91486434200004,-401.36505073386667,53.67798173865994 +720358889.2465,-49526142.101500005,-410070472.99573004,301499808.6257308,334.7040204475,-387.4727061086877,42.69576976750932 +720369656.824,-45913266.02884,-414168368.7495886,301901545.87358177,336.3355315196,-373.7016254867993,31.964784129080883 +720391191.9791,-38639011.48845,-421922400.42500234,302364749.5249959,339.13173243349996,-346.49889666440123,11.203533912910416 +720405690.8293,-33710508.24727,-426814954.1574542,302428923.52530146,340.6701676851,-328.4195780598452,-2.2895475026358696 +720412863.3287,-31264642.19323,-429138676.0409695,302388991.49895406,341.33091841059996,-319.540525599785,-8.831142657338845 +720429120.8056,-25704797.051400002,-434170931.4228988,302126812.59143394,342.58779676259996,-299.56215006621653,-23.353618664141393 +720445378.2825,-20127185.06132,-438879945.36894137,301631782.0454644,343.51820342779996,-279.77198222597707,-37.482505094854545 +720461635.7595,-14537035.231579999,-443268618.810515,300910020.279289,344.13182633049996,-260.15054700802665,-51.25153257030091 +720477893.2364,-8939418.995301,-447339539.4069573,299967123.91490376,344.43831472320005,-240.67878283931165,-64.6914370117893 +720494150.7133,-3339253.098737,-451094988.2816716,298808212.9152661,344.4470037154,-221.3380411436267,-77.8301566073809 +720510408.1902,2258693.45339,-454536946.6441386,297437974.1492933,344.16671022509996,-202.11006747819175,-90.69307248737131 +720526665.6671,7849789.8122189995,-457667101.8845108,295860700.96854275,343.6055870586,-182.9769671090828,-103.30326460761196 +720542923.144,13429531.54415,-460486853.0857413,294080328.4587297,342.7710230485,-163.9211560209834,-115.68176490530809 +720559180.6209,18993527.66928,-462997315.5961503,292100464.7962731,341.66957870100003,-144.92530271132057,-127.8477961552413 +720575438.0978,24537486.84312,-465199324.6012841,289924418.8426125,340.3069452922,-125.97226185059347,-139.81899154347843 +720591695.5747,30057203.01255,-467093437.5737754,287555224.3467903,338.6879208439,-107.04500145736574,-151.61159297242284 +720599824.3131,32806675.300000004,-467925131.64746165,286299074.47990674,337.7835134692,-97.58572872083121,-157.44565994240256 +720603888.6823,34178590.72143,-468312144.94910944,285653255.9779583,337.3077706106,-92.85625187714064,-160.347922592355 +720605920.8669,34863815.385510005,-468498443.1379403,285325928.16644156,337.06403451790004,-90.49143690691614,-161.7954563782333 +720606936.9592,35206240.982,-468589790.0582018,285161161.7421276,336.9407026369,-89.30899571190511,-162.51833558835867 +720607445.0054,35377406.66266,-468635012.9639294,285078503.1627027,336.87867101759997,-88.71776486397694,-162.87955472373253 +720607699.0285,35462977.66942,-468657511.7766548,285037105.0638181,336.8475638225,-88.42214664943027,-163.0601093545866 +720607826.04,35505760.20764,-468668733.0227123,285016388.8161318,336.83198738280004,-88.27433681602717,-163.15037295838707 +720607889.5458,35527150.73465,-468674336.6057412,285006026.393243,336.824193453,-88.20043171448248,-163.1955013350014 +720607953.0516,35548540.76658,-468679935.49525994,284995661.10447973,336.8163957167,-88.12652648819221,-163.2406274292944 +720608080.0631,35591319.34415,-468691119.1940998,284974921.93007314,336.80078882519996,-87.97871565673901,-163.33087277445236 +720608334.0862,35676870.547699995,-468713430.27062774,284933409.1975839,336.7695293713,-87.6830924519051,-163.51133611210972 +720608842.1323,35847949.09425,-468757827.1369703,284850246.23016554,336.7068278125,-87.0918396465808,-163.87215355649434 +720609858.2246,36190010.31228,-468845719.70697725,284683370.544044,336.58069435420003,-85.90930662819504,-164.59335295635657 +720611890.4092,36873745.78641,-469017900.0568181,284347422.22391707,336.32550813430004,-83.54411635169367,-166.03402122973534 +720615954.7785,38239641.22433,-469347840.2455045,283666754.0708055,335.80347421470003,-78.81312185740478,-168.90852639199798 +720624083.5169,40964909.20938,-469950024.23947513,282270459.22385234,334.7128743951,-69.34773918653744,-174.63092578279085 +720640340.9938,46387592.811950006,-470923434.57179666,279339012.7160547,332.34626677250003,-50.39585605424723,-185.97482841860167 +720656598.4707,51769797.72562,-471588412.0184247,276224170.2681178,329.7332799632,-31.401307603819284,-197.19433345883283 +720672855.9476,57107521.06916,-471944119.6661933,272927859.4447763,326.8740760372,-12.346408449068733,-208.3009985527215 +720689113.4245,62396754.70885,-471989429.9562223,269451824.92538553,323.7678423816,6.786927494861274,-219.3057797978704 +720705370.9014,67633469.17793,-471722917.37125415,265797637.6004715,320.4127619787,26.017286715491892,-230.21911381891672 +720721628.3783,72813597.04662,-471142849.4314858,261966702.4068419,316.80597463799995,45.36386286815946,-241.05099056122575 +720754143.3321,82987528.56259,-469033516.22253144,253779417.8552033,308.8203166395,84.48616321668023,-262.5084759345309 +720786658.2859,92884567.52267,-465640972.99875313,244898123.84407884,299.764936484,124.32404809164481,-283.751483477689 +720809069.7053,99526456.3433,-462542102.0919486,238375659.29841614,292.86651764709995,152.2968580545587,-298.30507666821114 +720820648.3171,102895680.91569999,-460694080.46958494,234878274.48886073,289.0819199736,166.9388009625168,-305.80432738593595 +720849838.2518,111186939.7727,-455275242.1091085,225676365.46459576,278.83591605680004,204.50753558685517,-324.6746411360721 +720879028.1865,119163557.7024,-448744441.39130145,215923938.58384514,267.5071064395,243.15787994382902,-343.5318507254213 +720893623.1539,123023639.2825,-445051533.6355778,210841240.48985255,261.4024424521,262.9498751460317,-352.9701267482725 +720908218.1212,126792344.43969999,-441067261.49925894,205620694.75088882,254.9825050529,283.0893599848484,-362.4225610535607 +720922813.0886,130464936.6637,-436786338.3562029,200262052.76483953,248.22839121340002,303.60619718386636,-371.89489515244713 +720937408.0559,134036386.34970002,-432203024.06530714,194764982.44580293,241.11882140970002,324.53269531488286,-381.39283085353327 +720952003.0233,137501334.164,-427311087.29470456,189129068.84499642,233.62982336230002,345.9039204967428,-390.92201686690305 +720966597.9906,140854049.0021,-422103762.62773603,183353815.08514628,225.7343594012,367.7580559357867,-400.48802755101417 +720981192.958,144088380.14880002,-416573702.12832963,177438643.65905988,217.401886047,390.1368186591942,-410.0963312930919 +720995787.9253,147197702.4386,-410712920.35397756,171382898.28120562,208.5978306796,413.0859428726227,-419.7522452046916 +721003085.409,148703269.7992,-407655823.97620124,168302084.35917664,204.0069025491,424.78991808753625,-424.59966117903207 +721006734.1509,149443370.4007,-406095101.5338004,166748399.7591891,201.6619110485,430.7021640143,-427.02850488712363 +721008558.5218,149810196.71710002,-405306631.98880553,165968232.52836925,200.4767277898,433.6737319791175,-428.2442435217894 +721009470.7072,149992797.0953,-404910361.8767417,165577316.9764691,199.88092489340002,435.16342590281073,-428.8524460677053 +721009926.8,150083893.23290002,-404711716.94290215,165381651.1274716,199.5822156284,435.90925650979653,-429.156631147309 +721010154.8463,150129390.18129998,-404612266.8755778,165283766.1735769,199.4326584119,436.28241849917504,-429.30874470088804 +721010268.8695,150152125.86189997,-404562509.92535704,165234810.68786484,199.3578290786,436.46906126243937,-429.384806738876 +721010325.8811,150163490.5021,-404537623.46917236,165210329.69266057,199.32040172080002,436.56239809801343,-429.42283907392516 +721010382.8927,150174853.00840002,-404512731.6913682,165185846.5291287,199.2829658984,436.65574524109354,-429.4608722868244 +721010496.9159,150197571.6167,-404462932.16856027,165136873.69695187,199.20806884869998,436.84247046441953,-429.53694134783734 +721010724.9622,150242983.2036,-404363269.2381117,165038902.0106635,199.05817305000002,437.2160447542369,-429.68909001648876 +721011181.055,150333703.7505,-404163687.70624185,164842854.53923425,198.7579740189,437.9636894876586,-429.9934296022278 +721012093.2404,150514733.4676,-403763500.9003503,164450343.110795,198.1559411094,439.4609698362283,-430.60227825931304 +721013917.6114,150875140.40870002,-402959023.8128123,163663653.58787113,196.945294687,442.4635444983774,-431.82065743153976 +721017566.3532,151589287.8619,-401333586.97622395,162083602.03037956,194.497344527,448.5011581431241,-434.2601741953183 +721024863.8369,152990456.04140002,-398016221.2597579,158896761.27477258,189.492050239,460.70959156339467,-439.1504833229762 +721039458.8042,155680439.6528,-391110841.0754292,152415735.6535888,179.0203105279,485.6874489769329,-448.9780316918556 +721054053.7716,158212817.1416,-383835117.4125141,145790802.1032154,167.8843155402,511.4711262983714,-458.871272544649 +721068648.7389,160577416.1248,-376176741.32893676,139020978.53514445,156.0170225817,538.1371748291571,-468.83324651933924 +721083243.7063,162763012.0022,-368122219.8547676,132105245.84242788,143.3409847508,565.7715327760548,-478.8659324498583 +721097838.6736,164757161.6525,-359656727.6627856,125042566.03360523,129.76629407779998,594.4711301989538,-488.9698670616716 +721110974.1443,166376786.1453,-351672940.66046745,118559660.66854596,116.694349972,621.3020543060229,-498.1232033374639 +721124109.6149,167818887.1554,-343329976.7912332,111956164.64285246,102.7206954916,649.1752448644748,-507.33028924660243 +721135931.5384,168954688.15150002,-335502382.20429146,105909353.63482688,89.28830999593,675.2366010784611,-515.6584321831915 +721147753.462,169926457.4883,-327360803.2458566,99763882.51333958,74.95465756323,702.3091002154674,-524.0201648255651 +721158393.1932,170651541.17380002,-319754616.2618586,94148312.31335858,61.20065653485,727.6169184235048,-531.5675704566494 +721167968.9513,171175266.0086,-312674760.0011206,89025581.478286,48.05824047975,751.2235910768615,-538.370832692756 +721177544.7093,171569388.11589998,-305364829.9074364,83837688.52526136,34.11918834099,775.681362116994,-545.1758683948735 +721186162.8916,171806687.7574,-298582185.96166956,79112894.10813004,20.82660544753,798.4787493972177,-551.2934677495281 +721193919.2557,171919685.9004,-292307102.758402,74815550.37262444,8.200995634328,819.6808825146605,-556.7856806377622 +721200899.9833,171935573.0345,-286516798.2885778,70911579.69125183,-3.745203808077,839.3560107165347,-561.710458779386 +721207182.6382,171876928.64200002,-281186443.7529568,67368677.40127881,-15.00715790432,857.5750176387855,-566.1217151243325 +721212837.0276,171762366.29450002,-276289984.01757836,64156432.62362621,-25.587023407150003,874.4107928274025,-570.069386168761 +721218491.417,171586721.7238,-271297098.5400443,60921939.3348934,-36.61741828862,891.6854076603962,-573.990219280789 +721220226.0264,171520189.6932,-269745701.815283,59925254.444113776,-40.096916765989995,897.0749832493229,-575.1861819197079 +721220226.0264,171520194.1564,-269745703.2751132,59925252.26893555,-40.09632631742,897.076416832269,-575.186710384995 +721227673.7963,171164480.7491,-262976912.93378392,55622375.91427566,-55.57303392698,920.7347853739751,-580.2833547078287 +721237105.0079,170542800.5057,-254147160.3230323,50119592.19163541,-76.52759591156,951.9647458193986,-586.6226039973174 +721246536.2196,169715646.2424,-245015680.77823466,44557787.23938166,-99.18152892011,984.7445105724726,-592.791189591674 +721257015.3437,168534738.0326,-234496985.6862863,38311070.807423756,-126.6285180381,1023.1797517739377,-599.3754340719975 +721267494.4677,167052074.9554,-223563367.55562252,31997262.446951345,-156.8437736305,1063.9805740767831,-605.5765616881201 +721272734.0298,166187975.5203,-217932867.77613613,28816606.484620623,-173.13300385140002,1085.3589584143235,-608.4925616011916 +721277973.5918,165236260.4682,-212188522.51453486,25621055.522566296,-190.29983058919998,1107.4439289931636,-611.2583636500995 +721283213.1538,164192132.48619998,-206326512.42975947,22411459.272902608,-208.4217298827,1130.280821045387,-613.8493850907068 +721288452.7159,163050363.8805,-200342770.51722205,19188806.809553362,-227.5857386946,1153.9189025917703,-616.2368930370502 +721293692.2779,161805242.6035,-194232960.46009842,15954250.369578421,-247.8899802208,1178.4117700720499,-618.3871860170602 +721298931.8399,160450509.5331,-187992452.86433968,12709133.951118663,-269.4454895723,1203.817777479855,-620.2605843720237 +721304171.402,158979285.23909998,-181616299.1097956,9455027.783211,-292.37841012959996,1230.200496206594,-621.8101775877838 +721309410.964,157383984.1042,-175099202.75788546,6193770.146274567,-316.83265050159997,1257.6291984451384,-622.9802597426716 +721314650.526,155656213.017,-168435488.42465267,2927518.4609682634,-342.9731168667,1286.1793510016776,-623.704362550008 +721319890.0881,153786651.3809,-161619068.0236078,-341188.1023574546,-370.9896694532,1315.933094069941,-623.902762989961 +721325129.6501,151764908.0222,-154643404.6593179,-3609351.160875134,-401.1019954936,1346.9796651638696,-623.4793018286504 +721330369.2121,149579349.6803,-147501474.58270386,-6873416.742323816,-433.56565008089996,1379.4156998052028,-622.3172879593803 +721335608.7742,147216894.0467,-140185728.1286583,-10129154.369142666,-468.6795968325,1413.3453001902628,-620.2741789648884 +721340848.3362,144662758.47219998,-132688051.2406837,-13371504.200446397,-506.79568383270004,1448.8796930308588,-617.1746073516371 +721346087.8982,141900152.6708,-124999730.46872292,-16594381.979406238,-548.3306405507,1486.1361933099404,-612.8011445150089 +721351327.4603,138909900.4321,-117111426.22679254,-19790427.890901245,-593.7813683457999,1525.236009776296,-606.8819394456494 +721356567.0223,135669970.1378,-109013161.94028507,-22950679.803882293,-643.7445695037,1566.3001423468359,-599.0739826517498 +721359186.8033,133948568.72459999,-104882006.58943039,-24514041.16266015,-670.638200395,1587.6048942443983,-594.3295988613004 +721361806.5843,132154888.4734,-100694342.55755274,-26064143.581696022,-698.9421018557,1609.442140533106,-588.9401777744977 +721364426.3653,130285086.4679,-96448759.97026165,-27599201.680288583,-728.771456045,1631.8228842187889,-582.8311752585313 +721367046.1464,128335002.0495,-92143823.1459313,-29117221.373344954,-760.2539060421,1654.755679770918,-575.9175279353501 +721369665.9274,126300122.08669999,-87778078.20035492,-30615970.025989585,-793.5311736492,1678.2457005153456,-568.1018726798521 +721372285.7084,124175541.7508,-83350063.4003724,-32092941.55591647,-828.7609070118001,1702.2935294538536,-559.2724159611018 +721374905.4894,121955920.07409999,-78858323.17896661,-33545315.352012224,-866.1187831925,1726.8935856457335,-549.3003758371249 +721377525.2704,119635429.6577,-74301426.82574758,-34969907.87527576,-905.8008976124,1752.0320788750903,-538.0369015164778 +721380145.0514,117207699.75,-69677993.34844121,-36363115.3783236,-948.0264628413,1777.6843404293177,-525.3093517844957 +721382764.8325,114665751.71339999,-64986724.32641888,-37720845.81529397,-993.0408346256,1803.8113363298373,-510.9167888929409 +721385384.6135,112001926.3069,-60226447.27014804,-39038437.83921697,-1041.118866969,1830.355096346841,-494.6245066585441 +721388004.3945,109207801.5836,-55396172.732865274,-40310563.84070275,-1092.568563822,1857.232707350768,-476.1573787014723 +721390624.1755,106274101.10630001,-50495169.53551957,-41531113.87431611,-1147.73494672,1884.3283948370743,-455.1917628796571 +721393243.9565,103190591.7659,-45523063.98633234,-42693055.99541206,-1207.003964971,1911.4830558756978,-431.3456556312748 +721395863.7375,99945971.70118,-40479970.600994825,-43788268.295109436,-1270.806123069,1938.4803831317233,-404.16674710437763 +721398483.5186,96527749.71953,-35366665.11774868,-44807336.34788659,-1339.619274491,1965.0284376522734,-373.1179981982033 +721401103.2996,92922119.32935,-30184813.030735645,-45739309.35909701,-1413.969611655,1990.7351420907426,-337.5603985279734 +721403723.0806,89113834.24849,-24937272.731542863,-46571407.016419955,-1494.429307821,2015.0757028075857,-296.73266017160597 +721406342.8616,85086097.20935,-19628497.04709933,-47288669.40277245,-1581.608254129,2037.3494194113302,-249.7279515244653 +721407652.7521,82984240.59897001,-16953101.06301462,-47598865.78587287,-1627.914169287,2047.4304711408302,-223.57980068852476 +721408962.6426,80820482.05051,-14265065.310561817,-47873542.50846335,-1676.1358658870001,2056.622758827227,-195.4684285085533 +721410272.5331,78592261.89181,-11565659.64298359,-48110020.930545725,-1726.3494563670001,2064.7610550648665,-165.22817641196843 +721411582.4236,76296923.37693,-8856386.313043023,-48305396.50883857,-1778.626662069,2071.655208385895,-132.67969114024243 +721412892.3142,73931720.10960001,-6139014.8450923655,-48456520.54673322,-1833.032134741,2077.086663830832,-97.62948269228946 +721414202.2047,71493827.45944999,-3415621.733369397,-48559981.52851424,-1889.6200300799999,2080.8046333112557,-59.86977816059323 +721415512.0952,68980359.04949,-688635.3192283921,-48612086.56720588,-1948.429672663,2082.5219488299003,-19.178808103912502 +721416821.9857,66388389.602730006,2039113.664461419,-48608843.553227276,-2009.480120882,2081.910672230278,24.678288649405204 +721418131.8762,63714985.727400005,4764335.774921734,-48545945.05540834,-2072.763435092,2078.5975969064166,71.94771033914662 +721419441.7667,60957246.56475,7483220.646143386,-48418755.26189114,-2138.236432285,2072.1598530390015,122.88409078574159 +721420751.6572,58112356.203099996,10191369.274264108,-48222301.58141543,-2205.810730818,2062.1209569644407,177.74608141804686 +721422061.5477,55177650.47008,12883721.679986773,-47951273.35592028,-2275.340930779,2047.9477747633946,236.78998970164525 +721423371.4382,52150700.33601,15554481.530378517,-47600030.34154869,-2346.6108666490004,2029.0490835917622,300.26096763004136 +721424681.3287,49029414.76089,18197040.38473849,-47162624.77168982,-2419.3180429110002,2004.7766204720158,368.3812285966028 +721425991.2192,45812164.793299995,20803905.574031048,-46632840.994628504,-2493.056618343,1974.4297850606658,441.33476570531343 +721427301.1097,42497930.25369,23366637.589768253,-46004257.59906809,-2567.299694662,1937.2654043326006,519.2481590912714 +721428611.0003,39086469.88992,25875804.049057286,-45270337.42848745,-2641.382242202,1892.5141691567824,602.1673341493481 +721429920.8908,35578512.159600005,28320960.73568643,-44424550.54484978,-2714.4866110589996,1839.405404095737,690.0305360068204 +721431230.7813,31975961.91029,30690671.288717255,-43460534.58571581,-2785.633395158,1777.20161591281,782.6385141035369 +721432540.6718,28282113.65322,32972579.082015112,-42372295.03313662,-2853.681143658,1705.2436249887091,879.6238608058405 +721433850.5623,24501857.212139998,35153545.01920194,-41154444.53856861,-2917.338921203,1623.0058638807338,980.4226320647966 +721435160.4528,20641856.31959,37219863.284385875,-39802475.6040986,-2975.195678023,1530.1595576772022,1084.2526110044585 +721436470.3433,16710675.9571,39157562.56902283,-38313054.472156994,-3025.7694355020003,1426.6390288655575,1190.103563539013 +721437125.2886,14721604.093190001,40073834.90506467,-37516151.630731255,-3047.8594682939997,1370.942847369146,1243.410347364001 +721437780.2338,12718831.75592,40952792.24386356,-36684316.87746673,-3067.5771225,1312.703705787121,1296.7450882254045 +721438435.1791,10703969.30974,41792797.57563829,-35817591.39375192,-3084.751289447,1252.012740799119,1349.9245262365905 +721439090.1243,8678735.543916,42592281.76664401,-34916139.31909838,-3099.222473073,1188.9861480719026,1402.7567544419828 +721439745.0696,6644949.003009999,43349760.040828235,-33980252.70411799,-3110.845991349,1123.7651830468258,1455.0434963634627 +721440400.0148,4604517.353382,44063848.12595244,-33010354.83986101,-3119.4950841239997,1056.515564313871,1506.5827200937808 +721441054.9601,2559424.5937340003,44733278.01851871,-32007001.79551832,-3125.063796087,987.4262617804462,1557.171507517392 +721441709.9053,511716.5986953,45356912.60886476,-30970882.0009121,-3127.46953239,916.707650099373,1606.6091189319034 +721442364.8506,-1536514.905668,45933758.93200217,-29902813.785788327,-3126.655168919,844.5890583989022,1654.7001481329414 +721443019.7958,-3583149.575021,46462979.62557632,-28803740.84915221,-3122.590621995,771.3157691874892,1701.2576645395088 +721443347.2685,-4605202.095848,46709513.5775415,-28242905.225091234,-3119.337770525,734.3262802252522,1723.9060044783744 +721443511.0048,-5115795.655274,46828229.90673753,-27959724.23082115,-3117.4069569060002,715.757731796641,1735.0633859158336 +721443592.8729,-5370969.73623,46886447.02182991,-27817450.986441474,-3116.365638509,706.4568324296393,1740.5992792894422 +721443633.807,-5498524.290437,46915269.92862037,-27746144.70441938,-3115.826030239,701.8024559317505,1743.3563922966628 +721443654.2741,-5562293.219812,46929609.92298356,-27710449.278107714,-3115.551492791,699.4743147311394,1744.7322237920212 +721443664.5076,-5594175.569316001,46936762.04975585,-27692591.00991349,-3115.4130412560003,698.3100094905653,1745.4194562264383 +721443669.6243,-5610116.211742,46940333.64483645,-27683659.23909663,-3115.343519851,697.7277986603583,1745.7629013589885 +721443672.1827,-5618086.399432,46942118.325217895,-27679192.69476448,-3115.308685248,697.4366787490034,1745.9345811219546 +721443673.4619,-5622071.459841001,46943010.38610073,-27676959.257896785,-3115.291249472,697.2911151765885,1746.0204102992982 +721443674.1015,-5624063.9816809995,46943456.346721575,-27675842.498294808,-3115.2825269659998,697.2183324867287,1746.063322210478 +721443674.7411,-5626056.497939999,46943902.26078858,-27674725.711246274,-3115.27380138,697.1455491952856,1746.1062323377475 +721443676.0203,-5630041.51371,46944793.9492595,-27672492.054813243,-3115.256340973,696.9999808073636,1746.192047237409 +721443678.5787,-5638011.4782070005,46946576.767580524,-27668024.412656207,-3115.221383214,696.7088368192593,1746.3636556138053 +721443683.6954,-5653951.138578,46950140.16956763,-27659087.811398093,-3115.1513199240003,696.1265200514758,1746.7067866456152 +721443693.9289,-5685829.38131,46957258.034352586,-27641209.343198888,-3115.010602325,694.961771800816,1747.3927055719064 +721443714.396,-5749581.526508,46971458.00159269,-27605431.360415854,-3114.726803596,692.631820039863,1748.7631688278977 +721443755.3301,-5877068.230157,46999714.84377995,-27533791.34088241,-3114.149756497,687.9701243192312,1751.4985806750237 +721443837.1982,-6131969.486416,47055655.82324753,-27390176.143113982,-3112.957900928,678.6397950182763,1756.9472163459995 +721444000.9345,-6641468.986315,47165244.41927496,-27101613.649119288,-3110.423464227,659.9532354986893,1767.7547144489477 +721444328.4072,-7659141.096375001,47375230.089523345,-26519229.78929974,-3104.754602307,622.4913555252156,1789.0026747260376 +721444983.3524,-9688267.323423,47758327.30381838,-25334001.512953274,-3091.045811556,547.3315790976178,1829.9706837742797 +721445638.2977,-11707397.61548,48092155.22576407,-24122635.879276536,-3074.2457125280002,472.08326319148586,1868.7987566407112 +721446293.2429,-13714540.72126,48376743.88161168,-22886570.06755002,-3054.460263733,397.0142500391085,1905.3815422364282 +721446948.1882,-15707782.40552,48612296.45677594,-21627303.307856068,-3031.8183008720002,322.38484287379515,1939.6350553783163 +721447603.1334,-17685299.575829998,48799183.16594529,-20346382.692543525,-3006.4688349119997,248.44421798191144,1971.4971753262346 +721448258.0787,-19645372.520329997,48937932.901753664,-19045388.83283394,-2978.5780064680002,175.4272559311819,2000.9276168983295 +721448913.0239,-21586395.04824,49029222.99340624,-17725921.7323116,-2948.325815216,103.55186884384193,2027.9074068046093 +721449567.9692,-23506882.52197,49073867.2864691,-16389587.027829597,-2915.902755373,33.01688356678142,2052.4379179973685 +721450222.9144,-25405477.56777,49072803.183610074,-15037983.181155842,-2881.506453893,-35.99951402319573,2074.5395273429085 +721450877.8597,-27280953.67813,49027077.73976277,-13672689.532622878,-2845.338434112,-103.34075918174324,2094.2499741651923 +721452187.7502,-30958304.88928,48806293.246607035,-10907191.174855726,-2768.4948944899998,-232.4817748127076,2126.7238398690456 +721453497.6407,-34531754.64875,48421538.17757003,-8104966.991809934,-2686.954241945,-353.59082737011386,2150.4350367080115 +721454807.5312,-37996135.17008,47883686.62805394,-5277032.6000332665,-2602.1988760669997,-466.1805677185172,2166.109467208065 +721456117.4217,-41348126.95525,47204057.134696595,-2433388.4209976364,-2515.562132059,-570.0520863582852,2174.561608134924 +721457427.3122,-44586043.20658,46394066.77686139,417060.332711298,-2428.2005489529997,-665.2451350424609,2176.6411884475747 +721458737.2028,-47709590.26214,45464953.03515625,3266520.889413314,-2341.0843625959997,-751.9855040333523,2173.1909156515007 +721460047.0933,-50719625.084910005,44427563.3821841,6108282.349409867,-2255.001735159,-830.6349449177427,2165.015693884515 +721461356.9838,-53617924.76724,43292206.88644746,8936651.819601394,-2170.572196468,-901.6469384055123,2152.862340577214 +721462666.8743,-56406977.5032,42068559.04071952,11746869.908145072,-2088.265372141,-965.5298591407712,2137.4080561670125 +721463976.7648,-59089799.89401,40765609.746707946,14535015.834453495,-2008.421948185,-1022.817811266989,2119.2556611282275 +721465286.6553,-61669781.76,39391644.90815802,17297909.432052307,-1931.27470331,-1074.0486070230322,2098.9337011328344 +721466596.5458,-64150558.11246,37954252.45375459,20033015.991494186,-1856.968268467,-1119.7479260535933,2076.8998171995427 +721467906.4363,-66535905.53463,36460345.78318648,22738356.713599227,-1785.576825644,-1160.418558191793,2053.546079777156 +721469216.3268,-68829660.08415,34916198.54224527,25412426.830941148,-1717.119436375,-1196.5336466075014,2029.205335687508 +721470526.2173,-71035653.89479999,33327486.215300947,28054122.43360054,-1651.572976746,-1228.5329536850495,2004.1578917394704 +721471836.1078,-73157667.09997,31699331.02298872,30662675.966223765,-1588.88281953,-1256.821345571407,1978.6380924815917 +721473145.9983,-75199392.49646,30036347.761261873,33237600.154540453,-1528.9715005090002,-1281.7688310202484,1952.840512523923 +721474455.8889,-77164410.31622,28342688.83470414,35778639.667402714,-1471.745641644,-1303.7116522501901,1926.9256184424312 +721475765.7794,-79056171.093,26622087.381025836,38285729.82642774,-1417.101400394,-1322.954040655629,1901.0248306910491 +721477075.6699,-80877984.85766001,24877897.849282537,40758961.53652571,-1364.928704187,-1339.7703563638995,1875.2449801336895 +721478385.5604,-82633015.194,23113133.600042723,43198551.68432892,-1315.114490434,-1354.4074123072407,1849.6721815425165 +721479695.4509,-84324276.99521,21330501.447677165,45604818.23288925,-1267.5451497850001,-1367.0868425645967,1824.3751700757875 +721481005.3414,-85954637.00216,19532433.10852385,47978159.383591115,-1222.10833404,-1378.0074232188524,1799.4081536642739 +721482315.2319,-87526816.34952,17721113.67835612,50319036.17105334,-1178.694264019,-1387.3472863481988,1774.8132375145206 +721484935.0129,-90506814.63889001,14066380.224211667,54905470.631287575,-1097.51329344,-1401.9064468469319,1726.8596010945812 +721487554.7939,-93283303.27228,10379761.198487293,59368575.424485944,-1023.2032582429999,-1411.851259296142,1680.6793255277942 +721490174.575,-95873316.46393,6672160.572263703,63713108.435849436,-955.0392552055999,-1418.0542718567242,1636.3455104131504 +721492794.356,-98292088.60319,2952428.663737558,67943932.9671623,-892.3719019419,-1421.2172291420552,1593.8697274191527 +721495414.137,-100553248.42639999,-772237.8543936275,72065885.95735568,-834.62399472,-1421.906020865969,1553.22322533935 +721498033.918,-102669001.0338,-4495977.867693439,76083692.83395815,-781.2848477217999,-1420.5784304534163,1514.3516270856667 +721500653.699,-104650293.6682,-8214012.397527833,80001914.44656199,-731.9037253534,-1417.6060631847902,1477.1850538593405 +721503273.48,-106506963.9281,-11922442.453692403,83824916.10271472,-686.0831811743,-1413.2916402198887,1441.6450558598187 +721505893.2611,-108247871.0757,-15618087.087394528,87556851.703652,-643.4727242222999,-1407.8826413836184,1407.6493121288959 +721508513.0421,-109881011.2307,-19298353.38498724,91201657.96823145,-603.7630161751,-1401.5820849999516,1375.1147761990715 +721511132.8231,-111413618.3013,-22961131.576446623,94763055.45687959,-566.6806746353999,-1394.557066442577,1343.959740595035 +721513752.6041,-112852252.0143,-26604710.161070354,98244553.92479137,-531.9836850988,-1386.945543476903,1314.105151355864 +721516372.3851,-114202874.70820001,-30227706.929895934,101649460.40716782,-499.4573867528,-1378.8617469013877,1285.475403189374 +721518992.1661,-115470918.3346,-33829012.676769406,104980888.9004602,-468.91098238399996,-1370.4005117566421,1257.9987791269984 +721521611.9472,-116661342.9042,-37407745.116741784,108241770.8451461,-440.17451256149997,-1361.6407577363852,1231.6076463879413 +721524231.7282,-117778687.57090001,-40963210.99509337,111434865.8970665,-413.096239263,-1352.64829756714,1206.2384900674974 +721526851.5092,-118827115.3363,-44494874.84077009,114562772.64497459,-387.540383847,-1343.4781116136937,1181.8318387469858 +721529471.2902,-119810452.2224,-48002333.08539532,117627939.01175433,-363.3851723189,-1334.1761977467822,1158.3321221233382 +721534710.8522,-121595675.0508,-54943552.708622634,123579148.46718878,-318.849690131,-1315.3250534501706,1113.849591630173 +721539950.4143,-123159434.0367,-61785547.53788531,129305430.81663512,-278.7368605798,-1296.3341776653037,1072.4169045179078 +721545189.9763,-124523235.1064,-68528051.81694539,134821895.2110907,-242.4305505325,-1277.3716841928915,1033.709332364891 +721550429.5383,-125705649.20879999,-75171541.12041563,140142063.85020214,-209.4224027294,-1258.5552509706313,997.4447764862861 +721555669.1004,-126722816.49949999,-81717007.7683306,145278079.0678036,-179.2897001382,-1239.9665153057222,963.3777348015799 +721560908.6624,-127588848.59120001,-88165800.2783835,150240881.11647138,-151.6783538644,-1221.6611812683047,931.2940202354732 +721566148.2244,-128316152.14400001,-94519507.25883086,155040359.98238227,-126.28971058730001,-1203.6761862570959,901.0062118681386 +721571387.7865,-128915691.1673,-100779873.23271011,159685485.1503895,-102.87024181640001,-1186.034835708435,872.3497851196194 +721576627.3485,-129397201.40259999,-106948737.49549448,164184416.82293338,-81.20341881945,-1168.7505127412749,845.1798352085152 +721581866.9105,-129769366.5868,-113027989.52803752,168544601.19454753,-61.10325981317,-1151.8293793855803,819.3683098113308 +721587106.4726,-130039964.53040001,-119019536.62123485,172772852.496042,-42.409167587899994,-1135.2723563656339,794.801672939363 +721592346.0346,-130215988.7932,-124925280.47473216,176875423.73548675,-24.98176939072,-1119.0765830848377,771.378931069004 +721597585.5966,-130303750.7817,-130747100.29908872,180858067.90304387,-8.699542242309999,-1103.2364979654863,749.0099618238562 +721602825.1587,-130308965.8154,-136486840.87789994,184726091.12013906,6.5439425259120005,-1087.74464201764,727.614096354413 +721608064.7207,-130236826.0738,-142146304.29962385,188484398.93305695,20.84228312514,-1072.5922572401755,707.1189129425084 +721613304.2827,-130092062.78310001,-147727244.35188153,192137536.75026157,34.27811779889,-1057.769733016276,687.4592078170874 +721618543.8448,-129878999.43710001,-153231362.9954579,195689725.306275,46.92467908753,-1043.26693874382,668.5761141313249 +721623783.4068,-129601597.5816,-158660308.28879693,199144891.81448436,58.84709214924,-1029.0734714269481,650.4163456220147 +721629022.9688,-129263496.357,-164015673.4941519,202506697.47871172,70.10346462672,-1015.1788390337568,632.9315452219877 +721634262.5309,-128868046.7878,-169298996.96150595,205778561.79281157,80.74580594017,-1001.5725954565795,616.0777223616763 +721643341.1792,-128056059.1522,-178287254.9409085,211244137.48200664,97.86719953274999,-978.6494315483055,588.2524692564484 +721655219.2786,-126770939.7646,-189739933.67872506,218027145.10067856,118.08294878519999,-949.8832000217085,554.2486623645975 +721672995.6888,-124432314.7482,-206258461.9182159,227458546.47103435,144.3115533834,-909.0251607379452,507.66914562651544 +721690772.099,-121663202.2348,-222072723.76351434,236102239.45549566,166.6592280087,-870.595636469184,465.4886524410865 +721708548.5092,-118525664.2731,-237223268.05706027,244029739.7533785,185.8695236923,-834.3066230872695,426.9853646763125 +721726324.9194,-115070248.96149999,-251745880.15636244,251301182.47008586,202.50488308319999,-799.9093845781788,391.5926345069864 +721744101.3296,-111338716.1178,-265672235.63990682,257967699.55726504,216.9986490112,-767.189424852877,358.8586166458857 +721752989.5347,-109380547.1663,-272420732.50316405,261088074.0688122,223.5514178934,-751.3995131419158,343.3716745632304 +721761877.7398,-107366000.8566,-279030463.9687565,264073194.80417818,229.6901056236,-735.9614722225475,328.4179781310921 +721770765.9449,-105298614.27849999,-285504470.61668444,266927641.24648523,235.4463862529,-720.855969010937,313.96206405160643 +721779654.15,-103181657.8287,-291845627.03467464,269655692.1437127,240.8486707037,-706.0649671179144,299.97165975052616 +721788542.3551,-101018162.34189999,-298056652.863678,272261352.21461844,245.9225150229,-691.5716203135951,286.4173214551958 +721797430.5602,-98810942.89231001,-304140122.93855315,274748375.87831885,250.69096840970002,-677.3601751189213,273.2721211463759 +721806318.7653,-96562619.68703,-310098476.59261215,277120288.35317016,255.1748713543,-663.4158817848602,260.51137459199026 +721815206.9704,-94275636.58802,-315934026.22624224,279380404.5733155,259.3931118197,-649.7249130085961,248.1124044909496 +721824095.1755,-91952277.40416001,-321648965.1583161,281531846.03836936,263.3628467153,-636.2742899462146,236.0543332815767 +721832983.3806,-89594680.42402,-327245374.8683754,283577556.0015431,267.099693454,-623.051814887735,224.3179016693383 +721841871.5857,-87204851.34124,-332725231.6617062,285520313.12752193,270.6178963675,-610.0460099020748,212.88530896447134 +721850759.7908,-84784674.79884,-338090412.8152837,287362743.81744385,273.9304717748,-597.2460607866707,201.7400721524258 +721855203.8934,-83563764.64829001,-340730561.00131977,288247118.62962747,275.5134125432,-590.9200715407075,196.2703905827716 +721857425.9446,-82950697.89819,-342040119.28670037,288680227.67947876,276.2871662122,-587.7750332451263,193.5604822820356 +721858536.9703,-82643523.01013999,-342692281.04881376,288894528.6754916,276.66968827830004,-586.2069374560866,192.21166442473856 +721859092.4831,-82489776.59441999,-343017709.0137396,289001117.77348006,276.8598697351,-585.4239872944576,191.53877767044895 +721859370.2395,-82412863.81827,-343180259.9448367,289054272.21875536,276.9546916975,-585.0327856401474,191.20271336203038 +721859509.1177,-82374397.55987,-343261494.6696791,289080814.4462054,277.0020356275,-584.837253044249,191.03477579145266 +721859578.5568,-82355161.96568,-343302101.8494938,289094076.8147274,277.02569084739997,-584.739503789003,190.9508306294188 +721859647.9959,-82335924.72928,-343342702.24214053,289107333.3547037,277.04933491040003,-584.6417658892676,190.86690120735378 +721859786.8741,-82297445.3332,-343423882.6691525,289133828.95390433,277.0965895854,-584.4463241370784,190.69908955638567 +721860064.6305,-82220466.86858,-343586162.11109716,289186750.25793254,277.1909652721,-584.0555767020676,190.36365484678942 +721860620.1433,-82066431.42255,-343910395.5229449,289292313.5327758,277.3791831051,-583.2746251111757,189.69353833878523 +721861731.169,-81758047.84290001,-344557561.8638978,289502324.69751835,277.75349346810003,-581.7148870905644,188.35630535268422 +721863953.2203,-81140040.89687,-345846703.7918297,289917900.96922666,278.4936831497,-578.604008452828,185.69374734977967 +721868397.3228,-79899154.41692,-348404312.9881658,290731391.61400986,279.9408886916,-572.4161414252691,180.41553821509802 +721877285.5279,-77398565.67758,-353437523.2931037,292288680.3504975,282.7068383664,-560.172074356245,170.04113501819387 +721886173.733,-74874126.50831,-358362660.47055924,293754801.31628364,285.3091248247,-548.0964165209251,159.89922602965288 +721895061.9381,-72327253.24768,-363181184.6766632,295131769.1882973,287.75625784289997,-536.1809818363561,149.97829052895514 +721903950.1432,-69759289.59127,-367894485.181761,296421499.62448716,290.0560845718,-524.4180006409644,140.26755696956957 +721912838.3483,-67171512.20691,-372503883.9362135,297625815.63720644,292.21584978460004,-512.8000896525458,130.75693994535465 +721921726.5534,-64565135.84509,-377010638.88109124,298746453.4342912,294.2422494667,-501.3202244570007,121.4369835530657 +721939502.9636,-59301163.192499995,-385720947.29982626,300743236.9650724,297.9192735999,-478.74817820142965,103.33407518275502 +721957279.3738,-53976018.73325,-394034305.3624308,302424197.17745346,301.13144187340004,-456.65192936915093,85.89395313308076 +721975055.784,-48597618.983449996,-401958759.6125766,303800594.07175547,303.9168400654,-434.985857911819,69.05901036721949 +721992832.1942,-43173251.40152,-409501579.7227587,304882720.28738487,306.3082985601,-413.7080906690427,52.77785779861023 +722010608.6044,-37709660.757539995,-416669320.6245896,305680003.5979398,308.3341593549,-392.78001398871027,37.004448857946 +722028385.0146,-32213123.13601,-423467876.6794959,306201095.234588,310.01890426849997,-372.16585571662483,21.697350080080383 +722046161.4248,-26689509.88171,-429902528.8983578,306453946.28887564,311.3836687912,-351.8323228030139,6.819128329016095 +722063937.835,-21144343.11148,-435977986.06957155,306445874.029987,312.4466680913,-331.74828391933613,-7.664167585786714 +722070299.6065,-19155622.83502,-438065790.16256195,306380890.7910847,312.7568302501,-324.61564820822383,-12.757438986285365 +722070299.6065,-19155622.97826,-438065790.1387844,306380890.88715416,312.7568297908,-324.61564863224226,-12.757438478294873 +722084690.9104,-14650327.42005,-442621873.8327886,306115306.6133672,313.3266460456,-308.57785367797385,-24.11417221606864 +722104209.326,-8529382.239142,-448434103.6612913,305497055.9242625,313.81717068800003,-287.0207370444785,-39.172653460699195 +722123727.7416,-2401928.504359,-453827506.6109022,304588509.54201317,313.9957454103,-265.6562200395897,-53.86535204626797 +722143246.1572,3726064.834013,-458805521.5835624,303396502.4591582,313.87423826319997,-244.45173979634848,-68.22301870540717 +722162764.5729,9848837.274285,-463370966.4625368,301927294.79325724,313.462172226,-223.37618743416007,-82.27385832784704 +722182282.9885,15960792.88671,-467526064.1638374,300186618.4858598,312.7669277706,-202.3996633005127,-96.04384570978885 +722201801.4041,22056460.28447,-471272463.96741146,298179717.95984685,311.79390567229996,-181.49325587221466,-109.55699772727652 +722221319.8197,28130455.23243,-474611258.80219364,295911386.02132267,310.5466528786,-160.62883510660458,-122.83561064435823 +722240838.2353,34177445.435,-477542998.58813304,293385995.3693099,309.0269588501,-139.77885880129293,-135.90046762895915 +722260356.651,40192116.94792,-480067699.8846963,290607526.30298364,307.2349222295,-118.91618741969822,-148.7710216487446 +722270115.8588,43185669.57891,-481177272.00703466,289124529.9671521,306.2363546883,-108.47167525634958,-155.13919087433223 +722274995.4627,44678707.66145,-481693819.3593788,288359778.0082196,305.7112985582,-103.24465623041439,-158.30746559408237 +722277435.2646,45424255.41694,-481942526.16824573,287971610.8172222,305.44230529920003,-100.62977238297978,-159.88776819351682 +722278655.1656,45796781.86919,-482064486.8528133,287776082.1317856,305.306189281,-99.32196391193297,-160.6769753294542 +722279265.1161,45982982.66252,-482124868.8830086,287677956.8514503,305.23772601810003,-98.66796516777958,-161.07134466084776 +722279570.0913,46076067.378879994,-482154910.3031618,287628804.01848555,305.2033930211,-98.34094180952465,-161.2684709923675 +722279722.579,46122605.807959996,-482169893.6123625,287604205.0589907,305.1862011746,-98.17742408890135,-161.36701960249232 +722279798.8228,46145874.03916,-482177375.9164794,287591899.94410026,305.1775989135,-98.0956637130475,-161.41629027200398 +722279875.0666,46169141.614319995,-482184851.986857,287579591.0727241,305.1689924269,-98.01390232441628,-161.46555851929858 +722280027.5542,46215674.795159996,-482199785.4259492,287554962.0612914,305.15176677610003,-97.85037650152174,-161.56408775149143 +722280332.5295,46308733.27031,-482229577.49565595,287505658.968668,305.11726475759997,-97.52331263179133,-161.76111719307605 +722280942.4799,46494818.602239996,-482288862.38331765,287406872.545538,305.0480577991,-96.86913563710169,-162.15506020825094 +722282162.3809,46866862.2149,-482406235.0107418,287208579.07697934,304.90883175970004,-95.56058175277033,-162.9424845555063 +722284602.1829,47610436.60909,-482636190.5162578,286809112.2668701,304.6271276207,-92.94265140288388,-164.5155007809902 +722289481.7868,49095496.99419,-483076932.84172773,285998679.819768,304.05068122119997,-87.70331622537668,-167.65431677250015 +722299240.9946,52056966.36837,-483881658.53792477,284331980.8457604,302.8453757631,-77.20927201295022,-173.90397948198319 +722318759.4102,57942896.18991,-485183291.99816114,280816471.7287321,300.2226919541,-56.14782208413959,-186.29843764007632 +722338277.8258,63774833.295930006,-486072706.7831418,277060305.575676,297.3116608385,-34.96572718608426,-198.56600844434095 +722357796.2415,69547072.20531,-486547277.0661493,273065812.0511526,294.1040545555,-13.635109360835798,-210.72165219283292 +722377314.6571,75253729.14459,-486603825.95102185,268835034.3197868,290.5898135079,7.872657255934882,-222.77978336767967 +722396833.0727,80888705.08522001,-486238608.6083292,264369738.67669258,286.7569167303,29.587184321711945,-234.7543754060013 +722416351.4883,86445645.8705,-485447290.440685,259671422.12192017,282.5912103824,51.53933781568034,-246.6590656744816 +722435869.9039,91917898.43348001,-484224919.6812577,254741317.8928912,278.07618500980004,73.76154157306368,-258.5072622478011 +722455388.3196,97298462.33757,-482565893.75132877,249580398.83822984,273.192687193,96.28813164747757,-270.3122574501814 +722488234.9164,106125437.6632,-478770489.65868837,240376145.71034217,264.07963576870003,134.98708335537793,-290.1177103531217 +722488234.9164,106125439.2443,-478770491.2787722,240376146.03315213,264.0796329271,134.9870877032027,-290.11771164167124 +722502996.5918,109990874.6125,-476647089.7855806,236027902.59178472,259.5901816488,152.74442720578753,-299.0080745488526 +722519199.9842,114155172.75129999,-474012255.6854354,231103884.1334359,254.3585088857,172.5288235247155,-308.76924835735923 +722535403.3766,118231989.7988,-471054184.607121,226021626.34341386,248.78858514310002,192.64672492004644,-318.54111729222774 +722551606.769,122215655.6916,-467767229.611839,220780886.1092681,242.8565124193,213.12859610565707,-328.3323756554836 +722567810.1614,126100085.1898,-464145225.91873616,215381275.3104577,236.5348331869,234.00798117218943,-338.15225212158055 +722584013.5538,129878714.3611,-460181436.037388,209822250.81502485,229.791776732,255.3221490522319,-348.0106845799372 +722600216.9462,133544423.0369,-455868482.9302642,204103101.2137754,222.5902687532,277.1129295140419,-357.9185499021826 +722616420.3386,137089438.6968,-451198267.5272304,198222929.22288758,214.8866082571,299.4278268758035,-367.88797386043 +722624522.0348,138814050.2039,-448726433.15642595,195222122.97954896,210.8305724645,310.798579184877,-372.90000309354775 +722632623.731,140505215.3291,-446161865.1894645,192180628.18572083,206.6286678237,322.32154182619155,-377.9327587042861 +722640725.4272,142161719.4678,-443503297.27961266,189098268.59493336,202.2726521847,334.00502766150987,-382.9883266728708 +722648827.1234,143782277.7542,-440749392.7522203,185974850.30851203,197.75338953669998,345.8581175889561,-388.0689870092534 +722656928.8196,145365527.1157,-437898737.722865,182810160.02828136,193.06070668950002,357.89078883897326,-393.177249263922 +722665030.5158,146910017.3118,-434949833.3499181,179603963.05875117,188.18321761410002,370.11407585624795,-398.31589627730847 +722673132.212,148414200.2228,-431901086.4341809,176356000.87145048,183.1081089313,382.54027137276364,-403.488037936168 +722681233.9082,149876417.2606,-428750798.2417034,173065988.19737053,177.82087455189998,395.18318239045936,-408.697177969532 +722689335.6044,151294884.3856,-425497150.9863489,169733609.51539668,172.3049849619,408.0584597790273,-413.9472974449749 +722693386.4525,151987115.5568,-423830963.09168327,168051425.0156347,169.4554755643,414.58873407662236,-416.589124391375 +722695411.8766,152328870.3186,-422987916.6984604,167206313.67389005,168.0067077775,417.87809045850275,-417.9144995630714 +722696424.5886,152498643.1693,-422563890.9522515,166782750.56126446,167.2761704893,419.5289655059258,-418.57833869672845 +722696930.9446,152583251.6356,-422351250.6028298,166570716.80215833,166.9093440635,420.355970650469,-418.9105508281223 +722697184.1226,152625486.1484,-422244773.32701194,166464636.82858652,166.7255389327,420.76986747124965,-419.0767306301261 +722697310.7116,152646585.9457,-422191495.3847256,166411581.0628575,166.633538076,420.9769147393593,-419.15983904021545 +722697374.0061,152657131.4761,-422164846.58395416,166385049.2345779,166.5875130352,421.0804631250567,-419.20139788185406 +722697437.3006,152667674.0929,-422138191.22858316,166358514.77574298,166.5414715714,421.18402802594,-419.2429598183394 +722697563.8896,152688750.581,-422084860.84978306,166305437.96567217,166.44933933110002,421.3912074159866,-419.3260929864168 +722697817.0676,152730868.5476,-421978121.39112514,166199252.77026287,166.2648772801,421.80576484813076,-419.4923965787618 +722698323.4236,152814964.20839998,-421764327.4354138,165986756.0347344,165.8951603633,422.6356767249879,-419.8251533979593 +722699336.1357,152982592.5598,-421335477.47963953,165561256.8292145,165.1525348159,424.2987079389531,-420.491270499592 +722701361.5597,153315582.1778,-420472714.11882687,164708232.59984872,163.6543502353,427.6377584744103,-421.8259586881478 +722705412.4078,153972368.8616,-418726808.96261954,162994057.19664496,160.6048639959,434.369128217932,-424.5054842772192 +722713514.104,155248134.1214,-415152445.6641013,159532998.61078665,154.28148591160002,448.05635851560817,-429.9080112933141 +722721615.8002,156471375.9624,-411465901.73492426,156027915.94370085,147.6333892303,462.0675465142012,-435.374668087263 +722729717.4964,157639323.5064,-407664415.5178297,152478255.74150145,140.62492280610002,476.437708077857,-440.91408163829414 +722737819.1926,158748889.2825,-403744910.41136044,148883387.87639993,133.2133023599,491.20997820789273,-446.5366197357188 +722745110.7192,159694723.6022,-400113592.4483641,145608759.12203634,126.15547685969999,504.89333275100074,-451.67831500063966 +722752402.2458,160587615.6844,-396381007.08285016,142296324.03106382,118.683323453,518.9961122188292,-456.9085810795688 +722758964.6197,161343302.6383,-392932394.8987323,139282237.35373417,111.5583828683,532.0996442622845,-461.7025441799469 +722764870.7563,161982346.5614,-389753975.7038331,136542421.0163797,104.780229621,544.2764007050184,-466.0972836574945 +722770776.8928,162580227.3026,-386502427.5786477,133776399.21718405,97.6115261516,556.8737939450067,-470.57831625542576 +722776092.4157,163081105.2046,-383511298.69168544,131264126.44819072,90.78402300345,568.6294873251467,-474.6946149160783 +722776283.3955,163098419.0192,-383402660.834205,131173455.08615912,90.53154029184,569.0600510742165,-474.8441031802806 +722776283.3955,163098418.1678,-383402659.1324307,131173454.56110379,90.53153545021,569.0600289111242,-474.8441004716318 +722780067.3063,163431376.0065,-381233082.22422355,129371051.85418922,85.4191444617,577.7195352642361,-477.83033401587676 +722784735.4109,163814820.5381,-378510597.4595344,127131762.6635524,78.80427631976,588.7731450244244,-481.58253700668104 +722789403.5154,164166524.3522,-375735434.78898966,124874767.99290338,71.81339931891,600.3018085767335,-485.4174086774465 +722794071.6199,164484633.5926,-372905178.8398797,122599662.84800467,64.40345057363001,612.393906603397,-489.34315486953506 +722796405.6722,164630453.4938,-371468511.29758555,121455181.79627211,60.52657742098,618.6856094233901,-491.3426474715098 +722798739.7244,164767082.3257,-370016945.0991166,120306004.03837469,56.52675015306,625.1633113961806,-493.3678084733044 +722801073.7767,164894225.5921,-368550023.6692174,119152068.69965196,52.39751625329,631.8466877024238,-495.4194373779401 +722803407.829,165011573.7019,-367067241.2378274,117993313.25182402,48.13242024001,638.7582896165085,-497.498137700485 +722805741.8812,165118802.1733,-365568035.5937807,116829674.07890749,43.725195937929996,645.9240130978375,-499.60421910678906 +722808075.9335,165215572.3805,-364051779.6639231,115661087.3097371,39.170045686289996,653.373636699882,-501.73756497033645 +722810409.9858,165301533.08580002,-362517771.75401336,114487490.01093581,34.46203873095,661.141430667197,-503.8974541383691 +722812744.038,165376323.0804,-360965224.28810436,113308821.86258057,29.59767171874,669.2668324955175,-506.0823224746566 +722815078.0903,165439575.37579998,-359393250.9076606,112125027.47844256,24.57564760517,677.7951724454022,-508.2894459464118 +722817412.1425,165490923.53800002,-357800851.8521558,110936059.57919939,19.397945210339998,686.7784125695183,-510.5145229039761 +722820005.5339,165533582.3356,-356006184.9249557,109608874.5768097,13.4707226426,697.36567596985,-512.9999834598077 +722822598.9253,165560650.4438,-354183138.89528805,108275238.88273466,7.378780865063,708.680577044967,-515.4866431684364 +722823895.6211,165568213.2053,-353260353.22420764,107606006.17909768,4.280823599255,714.6431673554549,-516.7248270668243 +722825192.3168,165571740.53730002,-352329693.4655793,106935172.30559179,1.155712889849,720.8278432385621,-517.9557118372478 +722826489.0125,165571201.8616,-351390862.1175029,106262748.97646329,-1.9891442688799998,727.2493873594938,-519.175731083305 +722827785.7082,165566577.27989998,-350443542.1790416,105588752.9224947,-5.144642846453,733.9230678144888,-520.3807017787201 +722829082.4039,165557859.9357,-349487396.6329512,104913206.73814915,-8.299728637827,740.8644517976169,-521.5657506265909 +722830379.0996,165545058.713,-348522068.2189981,104236139.8242191,-11.441134359569999,748.0891483980387,-522.7252408489614 +722831675.7953,165528201.2774,-347547179.5861434,103557589.42298764,-14.55311253389,755.6124657949625,-523.8527036931189 +722832972.491,165507337.457,-346562333.9574196,102877601.73487821,-17.617179228319998,763.4489683948698,-524.9407804713243 +722834269.1867,165482542.9583,-345567116.4547921,102196233.10544273,-20.6118889394,771.6119211579378,-525.981182973709 +722835565.8824,165453923.30560002,-344561096.2009549,101513551.23668358,-23.51266725379,780.112608958276,-526.9646822334706 +722836862.5781,165421617.96400002,-343543829.39929444,100829636.39423814,-26.2917359956,788.9595292392871,-527.8811376907399 +722838159.2738,165385804.47140002,-342514863.53822666,100144582.54219407,-28.91817206912,798.1574634728818,-528.7195805399947 +722839455.9695,165346702.3843,-341473742.8658735,99458498.32655057,-31.358146847359997,807.7064488800747,-529.4683658994866 +722840752.6652,165304576.7685,-340420015.2419962,98771507.80954772,-33.575394685119996,817.6006912242273,-530.1154077195974 +722841401.013,165282476.1044,-339888285.5244151,98427715.77348027,-34.58867300895,822.673610802744,-530.3969560919534 +722842049.3609,165259740.9128,-339353240.4090263,98083750.83975866,-35.53195480627,827.8274829597365,-530.648507256507 +722842697.7087,165236418.1412,-338814828.2994298,97739632.93534803,-36.4004017939,833.0594765944415,-530.8685887954866 +722843346.0566,165212557.8707,-338272999.60932547,97395382.92861547,-37.18921798681,838.3662158059424,-531.0557798471298 +722843994.4044,165188213.2612,-337727707.1237959,97051022.58642314,-37.89369909493,843.7437619346921,-531.2087292979891 +722844642.7523,165163440.4781,-337178906.3666087,96706574.5236188,-38.50928634772,849.1876024943443,-531.3261750275634 +722845291.1001,165138298.58,-336626555.9745114,96362062.13916539,-39.03162372628,854.6926472910226,-531.406963834669 +722846011.4866,165110005.47890002,-336008624.22326285,95979224.50259739,-39.49766332136,860.8742390456878,-531.452495931532 +722846731.8731,165081421.493,-335386217.1909869,95596371.1839274,-39.8383929328,867.1158086548648,-531.4503251262256 +722847452.2596,165052638.5687,-334759295.003462,95213536.89780018,-40.04927006121,873.4079665573561,-531.399525360218 +722848252.6891,165020539.8188,-334057379.55567163,94788230.71241258,-40.12663547613,880.4462264470785,-531.2852864417108 +722849142.0551,164984886.95250002,-333270847.4353879,94315806.38225305,-40.01408457807,888.3069342043469,-531.0865571266232 +722850031.4212,164949428.47169998,-332477313.0271545,93843592.35235018,-39.689091778089995,896.1892458554715,-530.812472311812 +722850920.7872,164914354.0983,-331676767.1113237,93371655.23427108,-39.15028339256,904.0705664358335,-530.4640885047442 +722851365.4702,164897020.3407,-331273867.51577073,93135810.99189255,-38.800930650400005,908.0036275184782,-530.2626031824784 +722851810.1533,164879853.70450002,-330869220.83780855,92900060.31348673,-38.39871508257,911.9277340742557,-530.0433351059004 +722852254.8363,164862877.586,-330462831.7073481,92664411.02472582,-37.944161253770005,915.8399731289733,-529.806661486091 +722852477.1778,164854468.211,-330258985.5228805,92546626.79869427,-37.6974645568,917.7907370509878,-529.6819299488989 +722852699.5193,164846115.11380002,-330054706.0461741,92428870.77213052,-37.43795135507,919.7374514436843,-529.5530123193744 +722852921.8608,164837821.1318,-329849994.21726954,92311143.86897835,-37.16573126476,921.6797600683327,-529.419970338595 +722853144.2023,164829589.07720003,-329644851.0550213,92193446.99907914,-36.88092346557,923.6173096888873,-529.2828688249176 +722853255.3731,164825497.1437,-329542118.0644233,92134610.10682729,-36.73383898145,924.584190407292,-529.2128168168018 +722853366.5439,164821421.7341,-329439277.6578023,92075781.05729996,-36.58365653196,925.5497504970233,-529.1417755911145 +722853477.7146,164817363.19189999,-329336329.9844577,92016959.96015626,-36.430393653370004,926.5139468442869,-529.069754084567 +722853533.3,164815340.3529,-329284815.9704893,91987552.42763598,-36.352612690920004,926.9955202172293,-529.0333785687087 +722853561.0927,164814330.56,-329259048.92788804,91972849.4213259,-36.31343583503,927.2361733678702,-529.0151001233228 +722853574.989,164813826.0726,-329246162.89863014,91965498.10883334,-36.29377594106,927.356466268078,-529.0059382922486 +722853581.9372,164813573.93129998,-329239719.2572184,91961822.50037354,-36.283928143640004,927.4166042631028,-529.001351732611 +722853585.4113,164813447.8864,-329236497.2798712,91959984.70812203,-36.278999784410004,927.4466711421766,-528.9990570427947 +722853588.8854,164813321.8586,-329233275.19803786,91958146.92382342,-36.274068452230004,927.4767366073633,-528.9967614133059 +722853592.3595,164813195.8479,-329230053.0117145,91956309.14748693,-36.26913414766,927.5068006573874,-528.9944648445725 +722853595.8335,164813069.8544,-329226830.72099286,91954471.3791523,-36.26419687129,927.5368632910925,-528.9921673367469 +722853602.7817,164812817.91889998,-329220385.8261751,91950795.86640006,-36.25431340533,927.5969843036073,-528.9875695049512 +722853616.6781,164812314.254,-329207494.7835725,91943444.93684788,-36.2345108373,927.7172092728565,-528.9783625848469 +722853644.4708,164811307.7514,-329181707.6869376,91928743.4620484,-36.19476328729,927.9575907033318,-528.9599037849302 +722853700.0561,164809298.07349998,-329130113.4576489,91899342.05570516,-36.11469958256,928.4380772129273,-528.9228068612905 +722853811.2269,164805292.1739,-329026844.9263947,91840545.46227941,-35.95230628159,929.3979263964525,-528.8478998926882 +722853922.3976,164801304.4951,-328923469.7726735,91781757.2488749,-35.786908322959995,930.3562421877593,-528.7720501349271 +722854033.5684,164797335.3698,-328819988.1694037,91722977.51969597,-35.61852602721,931.3129829386122,-528.6952673829217 +722854255.9099,164789454.0992,-328612706.3297547,91605443.92531863,-35.27289239066,933.2215743750062,-528.5389428779835 +722854478.2514,164781650.9792,-328405000.8801002,91487945.49132493,-34.91557873419001,935.1233744093303,-528.37900796746 +722854700.5929,164773928.5867,-328196873.3660963,91370483.01109067,-34.54676669674,937.0180625945401,-528.2155466830345 +722854922.9345,164766289.4571,-327988325.40403044,91253057.2591317,-34.16664598896,938.9053247294862,-528.0486454032011 +722855367.6175,164751270.912,-327569974.9450331,91018318.94013548,-33.37327619068,942.6563473580175,-527.7048794151997 +722855812.3005,164736614.7379,-327149963.7889596,90783736.33278866,-32.53713817029,946.3740666719149,-527.3484435183731 +722856256.9835,164722339.5614,-326728307.2511037,90549314.90247847,-31.66001183255,950.0562279498579,-526.9801011190672 +722856701.6666,164708463.1946,-326305021.620917,90315059.76926345,-30.74377800256,953.7007063653591,-526.6006414148665 +722857146.3496,164695002.59300002,-325880124.10228133,90080975.69731286,-29.790407686160002,957.305514784208,-526.21087517131 +722858035.7156,164669392.0027,-325025566.4077175,89613337.964648,-27.780524990729997,964.3888998228247,-525.4037481566231 +722858925.0817,164645624.9932,-324164787.64391476,89146432.41908987,-25.64750239571,971.2934583154084,-524.565473867277 +722859814.4477,164623803.1859,-323297951.6787004,88680283.72755112,-23.40918171032,978.0087583745849,-523.7028772193978 +722860703.8138,164604012.1591,-322425230.5361486,88214910.50380307,-21.08373773863,984.5268911959263,-522.822724977788 +722861593.1798,164586321.3099,-321546802.1658258,87750325.41322108,-18.68932724058,990.8424279434679,-521.9316080515586 +722862482.5459,164570784.0147,-320662848.28052986,87286535.37622029,-16.24376931814,996.9523124075101,-521.0358389622859 +722863371.9119,164557438.0544,-319773552.3176475,86823541.85360473,-13.76426629743,1002.8557007434922,-520.1413668363302 +722864261.278,164546306.27830002,-318879097.5432137,86361341.20475224,-11.26717149187,1008.5537617176108,-519.2537111989933 +722865150.644,164537397.4366,-317979665.3773037,85899925.08836621,-8.767805280402,1014.0494487225172,-518.3779142918639 +722866040.0101,164530707.16640002,-317075433.91181976,85439280.9029032,-6.280320464122,1019.3472572624273,-517.5185113204943 +722866929.3761,164526219.07029998,-316166576.6447312,84979392.24411607,-3.817613966597,1024.452977974702,-516.6795169272445 +722867818.7422,164523905.858,-315253261.4387652,84520239.36906466,-1.391280426087,1029.3734544374379,-515.8644257393103 +722869597.4743,164525647.4433,-313413895.68055147,83604048.03623244,3.3124286568290002,1038.6899496255223,-514.3174146733422 +722871376.2064,164535539.68580002,-311558539.96494913,82690499.14319521,7.763748494954,1047.364259219329,-512.8957186549341 +722873154.9385,164553088.1165,-309688273.0857315,81779358.65547326,11.914416711740001,1055.4680491519987,-511.61082394752486 +722874933.6706,164577727.28399998,-307804045.98692816,80870377.2518642,15.73241613378,1063.072801813899,-510.46863415778813 +722876712.4027,164608847.10459998,-305906684.9228943,79963299.18696254,19.19909362931,1070.2468438745127,-509.47066271472147 +722878491.1348,164645814.08839998,-303996898.8471029,79057869.10471006,22.30632911136,1077.0535190835935,-508.6151300913148 +722880269.8669,164687987.7475,-302075289.22742295,78153837.03101578,25.05397790931,1083.5502439100574,-507.8979069306586 +722882048.599,164734732.7824,-300142360.9430435,77250961.84248686,27.44769012602,1089.7881953878564,-507.3132845289389 +722883827.3311,164785427.7484,-298198533.33421403,76349013.5151492,29.497130229659998,1095.8124197529478,-506.85457907124203 +722885606.0632,164839470.8943,-296244150.8094748,75447774.4319505,31.21457293113,1101.6621982090887,-506.51458900838855 +722887384.7953,164896283.8046,-294279492.6678066,74547039.98961833,32.61382810646,1107.37155101516,-506.2859298866202 +722889163.5274,164955313.384,-292304781.95423317,73646618.70195083,33.70943969314,1112.9697988889695,-506.1612710735096 +722890942.2595,165016032.6152,-290320193.32193804,72746331.95015359,34.51610487183,1118.4821287287787,-506.1334964424135 +722892720.9916,165077940.4454,-288325859.89917254,71846013.50185424,35.04826533382,1123.9301326560133,-506.19580768525304 +722894499.7237,165140561.0687,-286321879.2325502,70945508.88680825,35.31983013872,1129.332303111915,-506.34178534780943 +722896278.4558,165203442.8082,-284308318.4003178,70044674.69172671,35.343997167830004,1134.7044764172144,-506.5654194418221 +722898057.1879,165266156.7466,-282285218.3799145,69143377.82135272,35.13314708393,1140.0602233279078,-506.8611187011641 +722899835.92,165328295.2189,-280252597.7709738,68241494.75643492,34.69878955371,1145.41118867967,-507.2237052926459 +722901614.6521,165389470.2435,-278210455.9520146,67338910.8305,34.05154641284,1150.7673840679374,-507.6483999807746 +722903393.3842,165449311.9474,-276158775.75774795,66435519.53861139,33.20116022407,1156.1374384106687,-508.1308013790283 +722905172.1163,165507467.02310002,-274097525.7432049,65531221.88630561,32.156519714279995,1161.528811461497,-508.6668618756693 +722908729.5805,165617378.0292,-269946130.2629435,63719545.4819165,29.51598411274,1172.4005671692257,-509.88538471078135 +722912287.0447,165716653.38259998,-265755798.0156473,61903217.965981156,26.185473348960002,1183.425176618455,-511.27768935719166 +722915844.5089,165802920.8499,-261525924.3449098,60081661.74220207,22.209566418829997,1194.6355224383692,-512.8215492989721 +722919401.9731,165873949.39880002,-257255800.50796735,58254372.14035301,17.62329338096,1206.0576299665477,-514.4980819259804 +722922959.4373,165927617.5365,-252944634.320779,56420906.6377167,12.45340230958,1217.7126623688364,-516.2911369478859 +722926516.9015,165961885.8315,-248591564.77237657,54580876.084490836,6.719447355566,1229.6183546223647,-518.186779489747 +722930074.3657,165974772.99130002,-244195672.27259457,52733937.61671133,0.4346940455406,1241.7900493773673,-520.1728576020338 +722933631.8299,165964334.83949998,-239755985.75842926,50879788.97227202,-6.393144864111,1254.2414495725795,-522.2386409997628 +722937189.2941,165928645.6518,-235271487.49530315,49018163.990919195,-13.76132421639,1266.985168729474,-524.3745182900925 +722940746.7583,165865781.32189998,-230741116.19705728,47148829.09825884,-21.671612231810002,1280.0331358242315,-526.5717410479392 +722944304.2225,165773803.94790003,-226163768.90144387,45271580.63744983,-30.12994932779,1293.396894839572,-528.8222047247907 +722947861.6867,165650747.4465,-221538301.92450288,43386242.92365134,-39.14620464866999,1307.087827298217,-531.1182578856136 +722951419.1509,165494603.88430002,-216863531.12942585,41492666.940122165,-48.73401783253,1321.1173177448768,-533.4525325811771 +722954976.6151,165303310.23110002,-212138231.68712774,39590729.60760663,-58.91071625175999,1335.496876180092,-535.817789755224 +722958534.0793,165074735.2873,-207361137.46250817,37680333.58621714,-69.69730043039999,1350.2382272366074,-538.2067744079982 +722962091.5435,164806666.5482,-202530940.1324385,35761407.581191525,-81.11849256054,1365.3533726579867,-540.6120758644525 +722969206.4719,164142710.1575,-192705785.43978855,31897815.9690421,-105.9829074336,1396.7546593579364,-545.4403715871049 +722976321.4003,163291591.209,-182651414.75854617,27999948.363568194,-133.78176436889999,1429.8033177417833,-550.2348886467977 +722983436.3287,162231230.82729998,-172355727.28373095,24068320.37708062,-164.86554280800001,1464.6068560336403,-554.9157714507958 +722985830.2148,161823165.23340002,-168835153.4286483,22738073.64622259,-176.136060802,1476.7307468469103,-556.4486308353411 +722985830.2148,161823157.07799998,-168835156.34351417,22738075.328466296,-176.1360283418,1476.7307410772805,-556.4486606413891 +722990188.9476,161008773.65710002,-162349421.20030048,20306705.24932079,-197.7996539394,1499.3618468793866,-559.16436349786 +722995092.6107,159975273.79119998,-154932850.48737085,17557550.976441547,-224.0726044735,1525.7075098632156,-562.0714927912139 +722999996.2737,158807604.513,-147384723.48931363,14794620.651460849,-252.5588926351,1553.0237500418057,-564.7740570209908 +723004899.9368,157494338.5225,-139700201.72257036,12019058.275150873,-283.4984162504,1581.3421723512301,-567.2127312294899 +723009803.5998,156022781.471,-131874303.41130602,9232328.395473719,-317.16901900659997,1610.6891719853293,-569.3156316331522 +723014707.2629,154378770.30929998,-123901936.26018545,6436285.293156646,-353.89313782389996,1641.0828171823944,-570.9950641107234 +723019610.926,152546435.3401,-115777948.48030601,3633260.3524244204,-394.0458314479,1672.5284570077772,-572.1433681431402 +723024514.589,150507919.3829,-107497205.35591342,826172.431454435,-438.0644404029,1705.0125321400494,-572.6275685021988 +723029418.2521,148243044.7015,-99054702.29781066,-1981331.6570149735,-486.46016610839996,1738.4938549840376,-572.282450261541 +723034321.9151,145728918.176,-90445728.6310441,-4784698.037462767,-539.8318138727,1772.8912907134586,-570.9015485785251 +723039770.4296,142611272.6677,-80679901.06815083,-7887728.721307855,-605.8280750286999,1812.0140545758381,-567.8345904761163 +723042494.6869,140912315.967,-75716529.72188339,-9431685.905065168,-641.8049463274999,1831.843735452961,-565.5630998955185 +723045218.9441,139112393.52650002,-70698973.74501806,-10968679.855823666,-679.9798806091,1851.7832441315984,-562.7102531696758 +723047943.2014,137205278.9707,-65627023.90610291,-12497021.446492746,-720.5303996192,1871.7639729027687,-559.1969129711879 +723050667.4586,135184240.75349998,-60500680.27678189,-14014790.63621112,-763.6500079878,1891.7003013363608,-554.9324143388011 +723053391.7159,133041997.2814,-55320203.50198357,-15519802.669687808,-809.5491744466,1911.4858882130047,-549.8127666434152 +723056115.9732,130770669.5714,-50086177.12430591,-17009569.048116446,-858.4561101232,1930.9891665586301,-543.718588015117 +723058840.2304,128361732.2148,-44799583.59962402,-18481252.41568602,-910.6171914831999,1950.047879557635,-536.5127496083619 +723061564.4877,125805963.9714,-39461896.50997145,-19931614.716355205,-966.2968223597001,1968.4624784983823,-528.0377155253367 +723064288.7449,123093399.72479999,-34075192.754436016,-21356957.572226282,-1025.776427163,1985.9881779032037,-518.1125829330837 +723067013.0022,120213286.8932,-28642288.309416458,-22753054.30212407,-1089.352167649,2002.3254655688477,-506.52985655540454 +723069737.2594,117154050.5126,-23166902.1484887,-24115072.91364023,-1157.330805629,2017.108868317431,-493.05204172098746 +723072461.5167,113903272.74,-17653853.403122514,-25437489.638824075,-1230.022945534,2029.8938472575403,-477.4082240342392 +723075185.7739,110447695.6852,-12109296.7370023,-26713993.535544384,-1307.732640709,2040.1418011233147,-459.29091826760543 +723077910.0312,106773258.7276,-6541000.988374986,-27937383.28697413,-1390.74205472,2047.2034055141564,-438.35365485722355 +723080634.2884,102865186.3807,-958674.7510994449,-29099459.304112367,-1479.289564844,2050.300907044573,-414.210019530214 +723083358.5457,98708146.7058,4625659.582465153,-30190916.24455346,-1573.5394156389998,2048.510650228619,-386.43521098190143 +723086082.8029,94286506.26008,10197247.106658552,-31201244.946855087,-1673.5408983930001,2040.7480873095046,-354.571616941057 +723088807.0602,89584712.772,15738147.984750217,-32118657.209755,-1779.175276575,2025.758929758295,-318.1404147103421 +723091531.3174,84587840.00579,21226775.61132625,-32930053.224575095,-1890.0895266040002,2002.1219309090336,-276.6617072128184 +723094255.5747,79282330.38258,26637466.18843759,-33621058.55269687,-2005.6180155929999,1968.270902466547,-229.68598100076497 +723095617.7033,76510207.52615,29304364.917719632,-33916606.15446932,-2064.7980290749997,1946.9978065864243,-204.01541740245682 +723096979.832,73656962.52865,31940145.55450785,-34176165.354757056,-2124.696813993,1922.545530206336,-176.8394495540299 +723098341.9606,70721754.77549,34540335.701193325,-34397667.25939855,-2185.1055125149996,1894.7065636781388,-148.1331199863613 +723099704.0892,67704051.33001,37100185.13057713,-34579017.59998933,-2245.780969409,1863.2813289364808,-117.88454803371656 +723101066.2178,64603674.49731,39614680.241325244,-34718116.281708196,-2306.444634176,1828.083673264993,-86.09749052387372 +723102428.3465,61420850.25444,42078566.51650558,-34812880.451192275,-2366.7824035099998,1788.947121026401,-52.793942701770675 +723103790.4751,58156256.12446,44486379.95444528,-34861271.07296347,-2426.4456513249997,1745.7317721241102,-18.016663026401034 +723105152.6037,54811066.734469995,46832488.2577822,-34861322.83093784,-2485.053689446,1698.3316510275044,18.16852806672955 +723106514.7323,51386994.94677,49111142.11138808,-34811176.88502216,-2542.1978589670002,1646.6822341407287,55.67084406280378 +723107876.861,47886325.93865,51316536.838711075,-34709115.84863328,-2597.447387721,1590.7677897860965,94.37321127619998 +723109238.9896,44311942.47462,53442883.73090355,-34553600.19494282,-2650.3570566149997,1530.6280826222883,134.13172624415938 +723110601.1182,40667338.36121,55484488.554044716,-34343304.2093183,-2700.4766290159996,1466.3639524307123,174.776078805773 +723111963.2469,36956618.08791,57435838.671384856,-34077151.50257263,-2747.3616916610003,1398.1412489473037,216.11105196488973 +723113325.3755,33184480.82906,59291692.797742724,-33754347.11612005,-2790.585609696,1326.1926507227402,257.9192062177157 +723114687.5041,29356187.7175,61047171.913731,-33374405.304745793,-2829.751984655,1250.8169716399389,299.96473513091354 +723116049.6327,25477512.154510003,62697847.33512134,-32937171.292389892,-2864.506947484,1172.3757097262396,341.99840096827916 +723116730.697,23521209.32538,63482643.05655298,-32697115.553378362,-2880.1340264620003,1132.1341071964182,362.9306454681183 +723117071.2292,22539169.03533,63864710.1308495,-32571749.219771262,-2887.49542373,1111.7824930719612,373.36146446841775 +723117241.4953,22047221.83455,64053138.5430167,-32507735.21950509,-2891.0614800949998,1101.55218218195,378.5662795982344 +723117326.6283,21801022.17821,64146698.79291003,-32475396.05434699,-2892.8156606700004,1096.4238089569008,381.16581808342494 +723117369.1948,21677866.55324,64193315.10261615,-32459143.502826083,-2893.685516556,1093.856369409219,382.46484254797724 +723117390.4781,21616274.881419998,64216582.26339899,-32450996.4941447,-2894.118633141,1092.5718428698015,383.1141651510324 +723117401.1197,21585475.591930002,64228205.59027056,-32446917.807754073,-2894.3347382529996,1091.9293787191857,383.43877861623594 +723117406.4405,21570075.085190002,64234014.689703405,-32444877.169194713,-2894.442677471,1091.6080965249864,383.6010733360796 +723117409.1009,21562374.6165,64236918.5983436,-32443856.526094154,-2894.496618741,1091.4474429108611,383.6822176861487 +723117410.4312,21558524.32835,64238370.39237969,-32443346.123588577,-2894.5235822900004,1091.3671129762058,383.72278910778067 +723117411.7614,21554674.00433,64239822.07956538,-32442835.667116683,-2894.550541115,1091.2867809570525,383.76336002693637 +723117414.4218,21546973.24873,64242725.13335318,-32441814.592272986,-2894.604444593,1091.1261106668753,383.8445003567873 +723117419.7426,21531571.30744,64248529.958524406,-32439771.794997007,-2894.7121948520003,1090.804745092272,384.006774975712 +723117430.3842,21500765.705900002,64260134.478644215,-32435683.610254515,-2894.927468546,1090.161914067949,384.3312999965805 +723117451.6675,21439147.6383,64283322.99303807,-32427496.8812051,-2895.357108292,1088.8758533316895,384.9802527422156 +723117494.234,21315884.135110002,64329617.878936686,-32411081.994566455,-2896.212754551,1086.302143618986,386.2777656204257 +723117579.367,21069248.37919,64421878.76526797,-32378086.58595299,-2897.909492954,1081.1484234309398,388.8711935142187 +723117749.6331,20575547.661429998,64605082.51811637,-32311433.875396214,-2901.2445874980003,1070.8161993589063,394.0514388843721 +723118090.1653,19586475.945499998,64966198.65940574,-32175486.344180226,-2907.679979301,1050.0559987200586,404.3837416750513 +723118771.2296,17602026.78104,65667119.92743819,-31893070.985825673,-2919.602371643,1008.1800533006865,424.92172922622916 +723120133.3582,13610949.20418,66982696.608739555,-31286614.19134199,-2939.595405542,923.2311901703507,465.3824876146193 +723121495.4868,9596175.888369,68181714.12582272,-30625712.3991307,-2954.385915505,837.1261492876524,504.82400757144705 +723122857.6155,5564810.661855999,69262961.73336688,-29911907.75752803,-2963.961202341,750.4000807630455,543.0238832690808 +723124219.7441,1523922.999671,70225956.436707,-29147030.063173667,-2968.384013263,663.5841581775862,579.7829665789098 +723125581.8727,-2519551.973411,71070928.56172645,-28333162.190740295,-2967.78794653,577.1924356326173,614.9294222627236 +723126807.7885,-6155340.705037,71731234.72196147,-27560689.018546052,-2963.122272463,500.2043323643311,645.0646293720065 +723127911.1127,-9420819.647405,72245305.3829051,-26834605.14958615,-2955.733270963,431.8162526470953,670.9031593250469 +723128904.1044,-12351505.92196,72643913.46058862,-26157307.714286197,-2946.630398346,371.1848555006524,693.0792442329929 +723129797.797,-14980515.10963,72951577.49434589,-25529325.498768233,-2936.556270982,317.4841994661789,712.1434847998748 +723130199.9587,-16160473.54471,73074451.21183498,-25241254.047114473,-2931.467735199,293.61384662228056,720.4426140064043 +723130602.1204,-17338318.49892,73187764.026595,-24949880.11346618,-2926.0471775160004,269.9379256180526,728.5670462714907 +723131004.282,-18513918.276019998,73291595.65906474,-24655274.0538524,-2920.303720979,246.46396674530772,736.5163190756645 +723131808.6054,-20857874.02205,73471148.8138784,-24056647.624074496,-2907.885166738,200.14996522653178,751.8885526380634 +723132612.9287,-23191361.78094,73613804.30693199,-23445939.06352361,-2894.286999246,154.72373351409703,766.5595852727632 +723133417.252,-25513463.19567,73720294.84304047,-22823711.262749173,-2879.584978359,110.23055732797948,780.5326268152075 +723134221.5754,-27823320.96504,73791386.9412826,-22190523.429026823,-2863.855060598,66.70925937524157,793.8135855413249 +723135025.8987,-30120138.76427,73827875.81435765,-21546929.01584363,-2847.172818262,24.192403739075758,806.4108180634095 +723135830.222,-32403180.7219,73830580.43412533,-20893473.855685826,-2829.61291764,-17.293448024589225,818.3348750313745 +723136634.5454,-34671770.50555,73800338.82412468,-20230694.497764282,-2811.2486581440003,-57.72743881727371,829.5982471458825 +723137438.8687,-36925290.04451,73738003.59149885,-19559116.74775806,-2792.151572618,-97.0940860749867,840.2151156860137 +723139047.5153,-41384927.85991,73520510.85926196,-18191608.19978342,-2752.034242848,-172.588152657212,859.5730778832212 +723140656.162,-45778249.84144001,73185063.40246493,-16794896.544319868,-2709.786382374,-243.7455038981414,876.5471019246759 +723142264.8087,-50102221.989700004,72738619.09940095,-15372696.425460842,-2665.889189371,-310.5983623416092,891.2883342834516 +723143873.4553,-54354546.26818,72188041.77089472,-13928473.013770787,-2620.776116483,-373.2295392756596,903.9549123910534 +723145482.102,-58533582.66841,71540028.78832644,-12465434.758119775,-2574.8318245080004,-431.7614158731647,914.7071601713088 +723147090.7487,-62638271.17747,70801055.56156565,-10986533.06586957,-2528.393014747,-486.3460236805535,923.7037716230112 +723148699.3953,-66668056.24005,69977334.9704496,-9494467.376829315,-2481.750618449,-537.1563996456935,931.0989045320823 +723150308.042,-70622815.52473,69074789.6385943,-7991694.252921421,-2435.1528921719996,-584.3792632258948,937.0400743810866 +723151916.6887,-74502794.1543,68099034.96288915,-6480439.298160307,-2388.8090493040004,-628.2089734559256,941.6667252283974 +723153525.3353,-78308544.97125,67055370.838756934,-4962710.903129455,-2342.893139528,-668.8426683604847,945.1093550138633 +723155133.982,-82040875.15394999,65948780.43534011,-3440315.0504328012,-2297.547960245,-706.4764536086245,947.4890789550484 +723156742.6287,-85700799.0099,64783934.297801785,-1914870.527006369,-2252.888849784,-741.3024997745533,948.9175304849362 +723159959.922,-92808278.56699,62296645.57024757,1139534.8310980722,-2165.974058158,-803.268187833575,949.3208246025141 +723163177.2153,-99641807.1135,59624991.46743088,4190734.4809089936,-2082.650912024,-856.1319909190793,947.0324011988077 +723166394.5087,-106213413.7265,56796207.35072822,7231041.499887526,-2003.180125382,-901.142034714723,942.6372774108559 +723169611.802,-112535675.6106,53833755.06377511,10254468.837187413,-1927.652065942,-939.3962162970089,936.6102135727303 +723172829.0953,-118621260.9984,50757798.95350779,13256403.65108923,-1856.040588058,-971.8481292905128,929.3335703013778 +723176046.3887,-124482621.2234,47585651.69328289,16233336.762147088,-1788.24271125,-999.3191345956703,921.1136196168933 +723179263.682,-130131792.4613,44332176.82834288,19182641.241972044,-1724.1072444800002,-1022.5129460010929,912.1947147262454 +723182480.9753,-135580274.872,41010142.88517724,22102392.995514795,-1663.455039222,-1042.0305915283707,902.7712132489726 +723185698.2687,-140838966.8551,37630530.792988844,24991226.231746778,-1606.093066353,-1058.3845982757991,892.9973121974939 +723188915.562,-145918136.8145,34202797.43473643,27848217.623176336,-1551.824002758,-1072.0118436407136,882.9950503256455 +723192132.8553,-150827420.2402,30735100.44965956,30672793.565531775,-1500.452596382,-1083.2848811127606,872.8607632085258 +723195350.1486,-155575833.5222,27234488.99616187,33464656.150093935,-1451.789755882,-1092.5217390980586,862.6702616923214 +723198567.442,-160171798.11130002,23707065.337123476,36223724.031214476,-1405.6550397530002,-1099.9943009891676,852.4829714592702 +723201784.7353,-164623170.7922,20158121.53799824,38950085.22048352,-1361.878042429,-1105.935414482234,842.3452368436588 +723205002.0286,-168937277.1898,16592255.155856635,41643959.39661172,-1320.299024835,-1110.54489370947,832.2929554017917 +723208219.322,-173120946.35390002,13013467.136371374,44305667.79854843,-1280.7690402859998,-1113.9945713795682,822.3536794223266 +723211436.6153,-177180545.2733,9425244.808016533,46935609.19056287,-1243.149730481,-1116.4325448757056,812.5482933330686 +723214653.9086,-181122012.2846,5830632.349275943,49534240.63194963,-1207.3129137189999,-1117.9867429072322,802.8923537663466 +723217871.202,-184950888.9971,2232290.7105791643,52102062.13246389,-1173.140050726,-1118.767922770368,793.3971617564741 +723224305.7886,-192291232.76000002,-4966553.440607067,57147419.01863386,-1109.356627162,-1118.383126167,774.9179307732995 +723230740.3753,-199239067.8746,-12155900.83665751,62076131.22344467,-1051.02083533,-1115.9071397141986,757.1445606134683 +723237174.962,-205827256.7789,-19323906.955533847,66892771.50137952,-997.4693949617,-1111.8195022763634,740.0829831877259 +723243609.5486,-212084716.77830002,-26461438.376194537,71601890.20275459,-948.1365615013,-1106.4887702759497,723.7217207874144 +723250044.1353,-218036996.2033,-33561453.02404313,76207927.08163822,-902.5385856423001,-1100.200317901475,708.0387957553153 +723256478.7219,-223706758.686,-40618533.35693091,80715159.2853528,-860.2604978113,-1093.1766174789293,693.0062325836227 +723262913.3086,-229114188.4909,-47628532.25227981,85127672.7855744,-820.9450330561,-1085.5921681817067,678.5929859268823 +723269347.8953,-234277331.726,-54588301.56738352,89449349.224858,-784.2834210108,-1077.5845866184243,664.7668342896922 +723275782.4819,-239212382.7636,-61495482.944573656,93683862.50346139,-750.007750406,-1069.2629186908966,651.4955891046484 +723282217.0686,-243933926.2853,-68348345.02246666,97834681.61507276,-717.8846443603,-1060.7139209262589,638.7478494157034 +723288651.6553,-248455142.0999,-75145656.1495601,101905077.32424267,-687.7100184061001,-1052.0068470507242,626.4934558329439 +723295086.2419,-252787979.15510002,-81886584.07026684,105898131.03820992,-659.3047244759999,-1043.1971219587788,614.7037436325438 +723301520.8286,-256943303.9991,-88570616.4832848,109816744.88640326,-632.5109242887,-1034.3291836113722,603.3516648476973 +723307955.4152,-260931027.8488,-95197497.74627846,113663652.26779923,-607.1890584159,-1025.4386951503238,592.4118237261644 +723314390.0019,-264760215.78239998,-101767178.21469875,117441428.43889695,-583.2153062498,-1016.554278967993,581.8604575158258 +723320824.5886,-268439180.9834,-108279773.52925153,121152500.8835927,-560.4794489290999,-1007.6988834539012,571.6753825923861 +723333693.7619,-275376414.8273,-121134806.41110632,128383564.59039341,-518.3380017469001,-990.1448605450656,552.3228115608994 +723346562.9352,-281797040.6673,-133765723.18908569,135373671.55111277,-480.0929566853,-972.8827907213241,534.2051776987507 +723359432.1085,-287747577.5484,-146176738.63511693,142137863.9225571,-445.19956567730003,-955.9783354728346,517.193391479024 +723372301.2819,-293268193.264,-158372726.56828746,148689635.48169726,-413.2114309209,-939.470015062306,501.17545322939606 +723385170.4552,-298393826.434,-170358931.04993626,155041135.12828285,-383.75922807660004,-923.3780574873849,486.05397177410697 +723398039.6285,-303155070.5405,-182140771.82195693,161203340.65434107,-356.5346956423,-907.7103362408023,471.74400194010957 +723410908.8018,-307578877.90959996,-193723712.81543908,167186206.67910898,-331.27845152829997,-892.4664040074031,458.17120105027817 +723423777.9752,-311689125.8542,-205113174.02066347,172998790.8396185,-307.770606998,-877.6402578010988,445.2702692723993 +723436647.1485,-315507075.7888,-216314472.99296135,178649361.41682518,-285.8234674829,-863.2222497407364,432.9836387497813 +723449516.3218,-319051749.5784,-227332787.09437785,184145489.66107795,-265.2757957302,-849.2004136489684,421.26037131742567 +723462385.4951,-322340239.2626,-238173129.83810136,189494128.8113581,-245.9882619188,-835.5613885687625,410.055231874236 +723475254.6685,-325387964.8867,-248840337.4038786,194701682.44943732,-227.839804088,-822.2910626509087,399.3279087680625 +723488123.8418,-328208890.0364,-259339062.03680387,199774063.49821308,-210.7246951335,-809.3750210094988,389.04235644824377 +723500993.0151,-330815703.35770005,-269673770.2092817,204716745.38748467,-194.550159123,-796.7988535322171,379.16623759904815 +723513862.1884,-333219972.1483,-279848744.1598074,209534806.6718925,-179.2344210661,-784.5483654749935,369.670450809337 +723526731.3618,-335432273.3851,-289868085.63743556,214232970.0673307,-164.705101351,-772.6097177344595,360.52872790715503 +723539600.5351,-337462305.7725,-299735721.0795765,218815636.5642747,-150.8978858065,-760.9695172814722,351.7172895118952 +723552469.7084,-339318986.1949,-309455407.7433902,223286915.5455102,-137.7554163963,-749.6148718020585,343.2145496323026 +723565338.8817,-341010533.0675,-319030740.35386515,227650651.32671764,-125.2263619172,-738.533419553979,335.0008617025955 +723578208.0551,-342544538.73109996,-328465158.05006343,231910446.6837464,-113.2646351451,-727.7133410869483,327.0582990307828 +723591077.2284,-343928032.5643,-337761951.35287356,236069683.72085357,-101.8287300984,-717.143358618808,319.37046466558877 +723594929.4857,-344313881.59499997,-340518561.53398204,237295632.58521438,-98.50208087248,-714.0263623264834,317.1164528200413 +723613062.9155,-345961758.6833,-353335149.3198834,242951675.9816099,-83.40263294099,-699.6337363337185,306.78349325836587 +723639026.5142,-347862125.42609996,-371240649.46623456,250732635.46543095,-63.2579034507,-679.7877886660729,292.72985323118365 +723664990.113,-349259842.853,-388641802.0530187,258159135.84599343,-44.64870909639,-660.7714687792487,279.46457423183654 +723690953.7118,-350192252.4936,-405559250.1197217,265250563.81727552,-27.38602347295,-642.5168248992403,266.90637341054435 +723716917.3105,-350692193.7112,-422011958.7279026,272024346.3627671,-11.31096826614,-624.9624224798025,254.9852042997398 +723742880.9093,-350788707.505,-438017374.6590633,278496215.96714276,3.711017151084,-608.0526360081227,243.64029928041137 +723768844.5081,-350507606.9809,-453591568.80348945,284680430.64899665,17.794686245509997,-591.7369954605156,232.81861233691413 +723794808.1068,-349871943.8862,-468749362.19231176,290589957.62493414,31.0385114481,-575.9696045220716,222.47357263401318 +723820771.7056,-348902393.777,-483504437.9263793,296236627.88245755,43.52747434578,-560.7086224905969,212.56407632634995 +723846735.3044,-347617576.37899995,-497869440.4476,301631267.14431775,55.33528999912,-545.9158089891183,203.05366498636144 +723872698.9031,-346034323.8859,-511856063.68258244,306783807.3810988,66.52620009238,-531.556125232541,193.90985177392113 +723898662.5019,-344167907.6113,-525475129.5766368,311703382.5539229,77.15642784919,-517.597383339217,185.10356367417222 +723924626.1007,-342032229.79190004,-538736657.954298,316398410.8922642,87.27536907034,-504.0099405252411,176.60867778639494 +723950589.6994,-339639988.446,-551649929.1975085,320876666.5722365,96.92657299119,-490.76642939194727,168.40163280337822 +723976553.2982,-337002817.5967,-564223540.0303981,325145341.6005819,106.1485566408,-477.8415215913312,160.46110140635517 +724002516.897,-334131409.0809,-576465453.7444023,329211100.20237345,114.9754841671,-465.2117191393445,152.76771292361462 +724028480.4957,-331035617.9372,-588383045.2797545,333080126.4696034,123.4377366216,-452.85516937732467,145.30381661415524 +724054444.0945,-327724554.2115,-599983141.7610264,336758166.3120392,131.5623928482,-440.7515016438701,138.05327935671448 +724067425.8939,-325990958.2831,-605666122.1123694,338527251.3235824,135.5057829655,-434.7885015614682,134.50335024514428 +724073916.7936,-325105087.1539,-608478675.6557982,339394590.72829366,137.4489841454,-431.8282074218291,132.74644995300488 +724077162.2434,-324657436.801,-609877758.0524234,339823993.57707286,138.41360842059999,-430.3532402806456,131.8724232594838 +724078784.9684,-324432439.50450003,-610575505.5382026,340037632.4584373,138.8941944023,-429.6170367248927,131.43650442070376 +724079596.3308,-324319648.6415,-610923931.4574053,340144186.78033864,139.13405806560002,-429.2492530938325,131.2188172225235 +724080002.012,-324263180.2579,-611098032.5362442,340197397.7259322,139.2538828401,-429.06544058367206,131.11004150381632 +724080204.8527,-324234927.84070003,-611185055.1148863,340223986.652937,139.31376849720002,-428.97355412610256,131.05567059275663 +724080306.273,-324220797.07720006,-611228559.4151064,340237276.980926,139.3437046476,-428.9276158433145,131.02848937166547 +724080407.6933,-324206663.27790004,-611272059.056486,340250564.5523741,139.37363634739998,-428.88168085620845,131.0013109723932 +724080610.5339,-324178386.5734,-611359044.363805,340277131.42667264,139.4334864002,-428.78982076513546,130.94696263624945 +724081016.2151,-324121796.7534,-611532959.086396,340330232.10889363,139.5531331529,-428.60614008744597,130.83829979214948 +724081827.5776,-324008471.57019997,-611880565.0373498,340436301.27154016,139.792213519,-428.23893651973793,130.6211092428937 +724083450.3025,-323781239.83640003,-612574883.5595824,340647911.3008506,140.2695238648,-427.5051586978001,130.1872673134768 +724086695.7523,-323324457.32,-613959951.8338331,341069022.2457273,141.22076026780002,-426.0401056616446,129.3217290890928 +724093186.652,-322401667.03319997,-616715850.9349117,341902839.9747569,143.1098322154,-423.1198937104025,127.59914767532646 +724106168.4514,-320519586.459,-622170994.8239727,343537112.9435156,146.8354355445,-417.31812918195277,124.18727794201382 +724132132.0502,-316612533.3022,-632856941.4967853,346674176.8423957,154.0845622285,-405.862107028182,117.49141349129309 +724158095.649,-312520614.5819,-643247865.6640555,349639505.3103759,161.0785435606,-394.589722567315,110.95648019753614 +724184059.2477,-308250248.4933,-653348340.267097,352437135.40999,167.8329889968,-383.48609979991375,104.57172830303585 +724210022.8465,-303807469.1059,-663162562.644719,355070835.15052915,174.3619087422,-372.5371668736795,98.32716750611877 +724235986.4453,-299197965.7414,-672694374.3604736,357544122.1611625,180.6778739572,-361.7295781596945,92.21348912849723 +724261950.044,-294427118.48950005,-681947279.1477327,359860280.4830341,186.79215458090002,-351.0506447571768,86.2219977357127 +724313877.2416,-284421557.0878,-699628789.4568132,364033268.5765232,198.4549305904,-330.03089749098797,74.57350288096549 +724365804.4391,-273828796.7098,-716228945.1046884,367611938.67703444,209.41847780129999,-309.38729517277886,63.322243715703046 +724417731.6366,-262683698.81089997,-731765081.0734688,370615519.9152243,219.7362635799,-289.0362819098272,52.41536175311594 +724469658.8342,-251018688.8222,-746250350.2771912,373060642.3664144,229.44892498229999,-268.900166213842,41.805448287751275 +724521586.0317,-238864382.60020003,-759694003.899766,374961596.55467355,238.5857342108,-248.90624360945816,31.449678767561664 +724533696.0013,-235962672.1243,-762680093.2163854,375328012.04665333,240.6359646793,-244.25650401272839,29.066913921195805 +724543167.9676,-233675863.9039,-764976467.1020449,375594536.8610753,242.2186109237,-240.62190163773417,27.2110508499333 +724570945.1305,-226884360.0293,-771512310.9773278,376275190.4475056,246.7543383421,-229.97067960781084,21.80617797998795 +724598722.2934,-219969041.0898,-777752366.9552265,376806444.9351653,251.13364816029997,-219.32312112302625,16.453215583316506 +724626499.4562,-212934241.9745,-783696606.8173263,377189671.67274886,255.35715176950004,-208.66993059603587,11.147127433465883 +724654276.6191,-205784289.0485,-789344749.619938,377426105.9204596,259.4248610736,-198.00221491938115,5.883152264428375 +724682053.782,-198523515.9013,-794696273.5095989,377516854.5967102,263.3362575795,-187.31152893432997,0.6568120880718027 +724709830.9448,-191156276.9821,-799750429.001722,377462904.3641813,267.090372129,-176.5899389968281,-4.536070657318788 +724737608.1077,-183686958.878,-804506254.2437551,377265130.3022764,270.6858762446,-165.83010668146918,-9.69934561046788 +724765385.2705,-176119988.9129,-808962592.9157281,376924305.50155395,274.1211824752,-155.02539460113502,-14.836495272806538 +724793162.4334,-168459840.83569998,-813118115.7349621,376441112.10859805,277.3945492227,-144.16999576984304,-19.950583002332763 +724820939.5963,-160711037.67520002,-816971345.5881724,375816153.8411327,280.50418068069996,-133.25908445972388,-25.044188292607537 +724848716.7591,-152878152.41459998,-820520686.3814653,375049970.110322,283.4483084652,-122.28898379576715,-30.11933125133752 +724876493.922,-144965806.0139,-823764457.8789668,374143052.92762834,286.22524088570003,-111.25733032447654,-35.17739587643668 +724904271.0849,-136978665.2074,-826700934.099644,373095865.49180883,288.83336536359997,-100.16321638391551,-40.21906150890376 +724932048.2477,-128921440.9054,-829328385.2115488,371908862.48108137,291.2710972632,-89.00727494243318,-45.24426102209098 +724959825.4106,-120798888.7775,-831645120.4855952,370582510.8737113,293.5367827388,-77.79166963170532,-50.25218547063933 +724973713.992,-116714613.97819999,-832686462.174509,369867233.5553361,294.6045428469,-72.16255690315107,-52.74922937950517 +724980658.2828,-114666991.21380001,-833177791.6401931,369496598.1513749,295.1220435199,-69.34290580269061,-53.99592235709068 +724984130.4281,-113641841.7114,-833416110.8108206,369308035.0114048,295.3766844292,-67.9318390341954,-54.618797578486216 +724985866.5008,-113128936.59480001,-833533432.7556994,369212942.5622655,295.5029756385,-67.22599958378719,-54.9301155349834 +724986734.5371,-112872401.9665,-833591634.1634314,369165193.67865753,295.5658636915,-66.87300388207552,-55.08574436526726 +724987168.5553,-112744114.20009999,-833620619.9568839,369141268.5797278,295.5972432998,-66.69648710519284,-55.163551213845714 +724987385.5644,-112679965.212,-833635084.1236044,369129293.3669347,295.6129169956,-66.60822399379535,-55.20245274278275 +724987494.0689,-112647889.4426,-833642309.0241579,369123302.59481305,295.620749816,-66.56409125861136,-55.221903032864134 +724987602.5735,-112615812.82360001,-833649529.1361368,369117309.7122933,295.6285799511,-66.5199577373883,-55.24135300656416 +724987819.5826,-112551657.0374,-833663954.9937056,369105317.61608326,295.6442321651,-66.43168833769656,-55.28025200444213 +724988253.6007,-112423335.281,-833692749.2414027,369081308.10006374,295.6755043644,-66.25514011937977,-55.35804619778554 +724989121.6371,-112166651.09660001,-833750107.8477185,369033187.7812239,295.7379198177,-65.90200607588456,-55.513619344776444 +724990857.7097,-111653120.5644,-833863905.352346,368936542.05836034,295.8622346963,-65.19558811482283,-55.824704439493004 +724994329.8551,-110625415.0297,-834087820.3212222,368741630.770269,296.1087983554,-63.78215715810555,-56.4466278915121 +725001274.1458,-108567459.59539999,-834520920.541525,368345332.85981774,296.5936451305,-60.95295131375912,-57.68947209141685 +725015162.7273,-104441640.26529999,-835328127.611524,367526868.8309744,297.5300832262,-55.2854606047038,-60.171020520110375 +725042939.8901,-96152534.1374,-836706003.81835,365786746.69682556,299.2688133752,-43.91661044456694,-65.11649426509732 +725070717.053,-87817640.17209001,-837767510.8054773,363909602.27131397,300.8264260797,-32.50730619806231,-70.03644428465141 +725098494.2158,-79442027.55949,-838511600.8411528,361896176.7310381,302.20017572859996,-21.06294622919738,-74.92859343282683 +725123493.6624,-71873411.28915,-838909139.0390726,359968233.4837767,303.2772287803,-10.7369896414231,-79.30616200212943 +725145993.1643,-65040154.0901,-839045989.375239,358139765.1231314,304.116184852,-1.424973091305322,-83.22450695965871 +725168492.6663,-58189418.79012,-838973140.6893444,356223370.04007274,304.8307625806,7.903129295446533,-87.12198197817877 +725190992.1682,-51324009.565519996,-838690243.1362315,354219521.0806769,305.4205206116,17.24633462284669,-90.998338252006 +725213491.6701,-44446735.975839995,-838196962.8346347,352128693.81431067,305.88542499249996,26.60420692177867,-94.8535806913836 +725235991.172,-37560403.63592,-837492969.582087,349951360.9658316,306.2258589506,35.976853483148076,-98.68795442432543 +725258490.674,-30667804.98289,-836577924.7671971,347687987.2120902,306.4426057924,45.36491185642076,-102.50192645848921 +725280990.1759,-23771710.72403,-835451469.6416665,345339024.4202464,306.53681002810004,54.76953281917449,-106.29616570555447 +725303489.6778,-16874862.14333,-834113213.9148757,342904907.29874074,306.5099222165,64.19236336477442,-110.07152379260589 +725325989.1797,-9979965.099068,-832562724.834411,340386049.5182649,306.36363309949996,73.63553049573619,-113.82901734761676 +725370988.1836,3793354.193747,-828823039.6044202,335095640.5358681,305.7203837552,92.59370310234847,-121.2952128304195 +725413510.9423,16773034.169480002,-824502923.2208759,329788762.5835406,304.694623261,110.61682923592238,-128.29910904051675 +725419785.5867,18701063.6985,-823809274.203429,328984232.58457243,307.17787332160003,111.88382275517709,-128.7345495690181 +725477054.3359,36236532.098969996,-816701143.3769507,321343321.49002624,305.0974806872,136.4010907162716,-138.10015945300051 +725534323.085,53632964.49164,-808179969.338954,313167353.40363055,302.3253752925,161.24702269946494,-147.42567127031833 +725591591.8341,70851149.76025,-798224128.9925785,304457684.8454117,298.873254678,186.52213912113388,-156.74442413553106 +725648860.5832,87852110.19431,-786805780.8786535,295213678.63921404,294.73704018,212.34304340514123,-166.09262927000694 +725706129.3324,104596111.36330001,-773889945.2104712,285432550.8279982,289.8939326633,238.8424995155849,-175.5090025359903 +725734763.7069,112858848.6429,-766857354.9244747,280339075.37696475,287.1943887297,252.39278575545393,-180.25548708459763 +725763398.0815,121041512.79370001,-759433557.712101,275109233.351418,284.29970619389997,266.17029820233614,-185.03458207819372 +725792032.4561,129138385.9264,-751611739.6303644,269742012.68372303,281.2005130614,280.19672441578695,-189.8517804406152 +725820666.8306,137143456.9643,-743384446.6228684,264236241.83034968,277.8856755767,294.4951091106923,-194.71272960445611 +725849301.2052,145050369.00579998,-734743543.8741702,258590585.22609544,274.342146462,309.089977802072,-199.62324001387645 +725877935.5798,152852362.0555,-725680171.3806094,252803538.47310603,270.5547853217,324.0074827712977,-204.58929531728484 +725906569.9543,160542210.1439,-716184695.0048165,246873423.2202419,266.50614553469995,339.27557527763867,-209.6170639474679 +725920887.1416,164342677.3331,-711271682.2663938,243854141.51711908,264.377701999,347.0503667803486,-212.15607196918884 +725928045.7352,166231354.3112,-708773258.4545654,242330837.41772956,263.2862708559,350.97465251266283,-213.4322113469754 +725931625.0321,167172746.32549998,-707513489.4446613,241565755.55434287,262.7335962468,352.94623814602016,-214.0719848660147 +725933414.6805,167642698.4158,-706880955.7604408,241182355.3814356,262.4554989825,353.9344196649689,-214.39230325004917 +725934309.5047,167877487.56109998,-706564025.3736687,240990440.2587517,262.3160077961,354.42911113192343,-214.5525710593796 +725934756.9168,167994835.2931,-706405394.137159,240894428.90995917,262.2461512413,354.6766074857036,-214.63273220745432 +725934980.6228,168053497.43449998,-706326036.9884135,240846409.78513858,262.21119518300003,354.8003933731755,-214.67281960346662 +725935092.4759,168082825.57230002,-706286348.0291635,240822396.85972917,262.1937102034,354.8622957513645,-214.69286500829676 +725935204.3289,168112151.7541,-706246652.1455292,240798381.69208342,262.1762205884,354.92420442195663,-214.71291155158104 +725935428.0349,168170798.24740002,-706167239.6022446,240750344.62964866,262.1412274463,355.048040648526,-214.75300805526925 +725935875.447,168288067.73909998,-706008331.3929403,240654243.59276375,262.0711854724,355.2957886978971,-214.83321474173576 +725936770.2712,168522512.62640002,-705690182.3248508,240461933.84216353,261.9308784394,355.7915876272129,-214.9936829201016 +725938559.9197,168991025.0838,-705052552.3248423,240076883.40472788,261.6493694111,356.7844003847392,-215.31483921389665 +725942139.2165,169926533.22770002,-703771954.6862676,239305056.9406894,261.0827503696,358.7749142317693,-215.9580372819583 +725949297.8101,171791421.85059997,-701189326.6127924,237754486.74712473,259.9349366295,362.77572719105825,-217.2480213810492 +725963614.9974,175496194.3649,-695937668.7772409,234625555.55860206,257.5795896478,370.85838302359673,-219.84271266407123 +725992249.372,182801609.4705,-685083174.5970452,228255515.76105598,252.6179579206,387.363484449887,-225.09400509740615 +726020883.7465,189959876.5978,-673749222.450045,221733859.47235024,247.2965885131,404.35316061514993,-230.43372838599097 +726049518.1211,196960220.55719998,-661921363.1856031,215057950.95095167,241.5816070238,421.868041436542,-235.8691585803741 +726078152.4957,203790829.3405,-649583933.9639616,208224942.51713774,235.434358685,439.9523425765396,-241.40782329477605 +726106786.8702,210438706.8766,-636719948.7574304,201231767.31386405,228.8106618384,458.65435499315277,-247.05750352883416 +726135421.2448,216889502.2823,-623310973.6911235,194075132.10601547,221.65990371450002,478.0270178108327,-252.82622824371052 +726164055.6193,223127310.0149,-609336984.3179405,186751510.40349147,213.9239382387,498.12859283992975,-258.722258146482 +726192689.9939,229134436.7261,-594776202.7961118,179257136.18369687,205.53573071809998,519.0234617329062,-264.7540529923556 +726221324.3685,234891122.28030002,-579604908.799757,171587998.99080163,196.41768770660002,540.7830713769529,-270.93021664991295 +726249958.743,240375209.5375,-563797221.8780062,163739840.91712648,186.4795737547,563.4870631301087,-277.25940816333156 +726278593.1176,245561745.8602,-547324847.8969728,155708156.9171129,175.6158972871,587.2246249207649,-283.7502044171299 +726307227.4922,250422501.136,-530156783.17801946,147488199.8712671,163.7025981927,612.0961199194578,-290.41089215469316 +726335861.8667,254925377.6264,-512258967.1075605,139074993.12087166,150.59280905469998,638.2150576283688,-297.249156098078 +726364496.2413,259033682.0763,-493593872.6725385,130463353.87901983,136.1113728255,665.7104870484563,-304.27161365971284 +726393130.6159,262705217.52150002,-474120020.9558184,121647933.08440106,120.04767048160001,694.729916592771,-311.4831212966245 +726421764.9904,265891138.2986,-453791403.22915065,112623279.70782158,102.1461137836,725.442884851305,-318.8857351191073 +726424620.7849,266180142.1335,-451715175.16097295,111711538.93228424,100.2485045537,728.6061231973094,-319.6344608949316 +726434354.4969,267119774.20619997,-444604470.1593807,108603084.08544733,93.19682906715,736.0036558804487,-320.63501475469997 +726447113.9006,268251372.27679998,-435120354.3209687,104490345.42869939,84.09918622720001,750.6713225611389,-324.03107740717275 +726459873.3043,269263798.8157,-425446479.5968532,100334044.20180753,74.51088082823,765.7513572190969,-327.46315302811166 +726472632.708,270150549.5892,-415577445.73739433,96133728.24740942,64.39306075942,781.2657517542618,-330.9300219252389 +726485392.1118,270904598.34730005,-405507561.86041296,91888963.75787085,53.70266006878,797.2380936546671,-334.4300116556334 +726498151.5155,271518339.35040003,-395230825.2184489,87599341.67304637,42.39180764236,813.6937046390889,-337.96089914567824 +726510910.9192,271983521.7617,-384740898.0930582,83264485.43704726,30.40713316562,830.6597897354801,-341.5197903945861 +726523670.3229,272291174.4319,-374031082.8100877,78884060.4643662,17.688948574850002,848.1655973402911,-345.102971934237 +726536429.7266,272431519.26089996,-363094294.57089424,74457785.73029314,4.1702799308589995,866.2425878653007,-348.70572734898934 +726549189.1303,272393871.0918,-351923032.1170314,69985447.99098529,-10.224284703799999,884.9246089708572,-352.32210866300795 +726561948.534,272166521.53849995,-340509346.1305741,65466919.22861315,-25.57997247992,904.2480740690726,-355.9446504079186 +726574707.9377,271736603.5375,-328844805.39070076,60902178.21549128,-41.99348074854,924.2521365434752,-359.56401015730194 +726587467.3414,271089932.6323,-316920460.77681386,56291337.27531727,-59.574976069520005,944.9788494214328,-363.16851422925487 +726600226.7451,270210820.09679997,-304726807.28061455,51634675.52483936,-78.45052396532,966.4732932095515,-366.7435788067826 +726612986.1489,269081851.8267,-292253745.0825353,46932680.58542651,-98.76505959942,988.7836490045956,-370.27096887718074 +726625745.5526,267683625.0071,-279490539.84807074,42186100.996621415,-120.6860424514,1011.961174423988,-373.72784144952675 +726638504.9563,265994432.9002,-266425784.3755794,37396012.58297798,-144.4079832268,1036.0600258475577,-377.08550111584924 +726651264.36,263989885.0742,-253047364.13952097,32563903.083936505,-170.15809175060002,1061.1368365070932,-380.3077675836248 +726664023.7637,261642446.54090002,-239342430.11836806,27691780.74587579,-198.20337187410001,1087.2499113792535,-383.3488152371689 +726676783.1674,258920875.12030002,-225297385.8761698,22782314.99050559,-228.8596073651,1114.4578290243553,-386.15028608829704 +726689542.5711,255789528.8645,-210897897.59478444,17839019.896426618,-262.50282595360005,1142.8171178838625,-388.6373911491928 +726702301.9748,252207507.0019,-196128941.70317698,12866495.837605417,-299.58404872020003,1172.3784916541042,-390.71358517187076 +726715061.3785,248127577.0561,-180974915.6243091,7870751.737430796,-340.6484187549,1203.1808384429664,-392.2532100890545 +726721441.0804,245884078.91030002,-173248515.0419924,5366538.760496117,-362.87637699969997,1219.0540414639747,-392.77212626311865 +726727820.7823,243494820.9514,-165419844.1785069,2859638.324137777,-386.36019376210004,1235.2416398280216,-393.0911953052364 +726734200.4841,240951455.79999998,-157486907.20004082,351416.2249752581,-411.2069014486,1251.7399821291988,-393.1812345358365 +726740580.186,238244915.4147,-149447742.90088788,-2156561.2383384034,-437.5356445972,1268.541710028367,-393.0084431944707 +726746959.8878,235365328.6715,-141300451.56993383,-4662495.184971735,-465.47934186130004,1285.6347050542863,-392.53355157784614 +726753339.5897,232301927.5002,-133043229.4731301,-7164316.068817057,-495.1866016352,1303.0007471619385,-391.71078952956566 +726759719.2915,229042939.94,-124674413.0094956,-9659638.346668802,-526.8239295226,1320.613801841134,-390.4866311944555 +726766098.9934,225575468.006,-116192535.28373367,-12145706.2581622,-560.5782675405,1338.4378255346405,-388.79826170554213 +726772478.6952,221885348.2143,-107596398.5825076,-14619328.76873064,-596.6599068568,1356.4239443563338,-386.5716971211949 +726778858.3971,217956992.3521,-98885167.34451963,-17076801.2192078,-635.3058129551,1374.506813729312,-383.7194708208649 +726785238.0989,213773205.4489,-90058487.62058993,-19513810.50262971,-676.7833902533,1392.5999045243243,-380.13777796063357 +726791617.8008,209314978.3811,-81116640.91253158,-21925319.95681488,-721.3946938314,1410.5893752086058,-375.7029403267484 +726797997.5027,204561252.3142,-72060742.76981811,-24305429.111047596,-769.4810518521999,1428.3260770260592,-370.26702049605893 +726804377.2045,199488652.5332,-62892999.9405545,-26647202.151830364,-821.4279849308999,1445.6150879692227,-363.652373912087 +726810756.9064,194071190.5648,-53617044.159021124,-28942457.615378283,-877.6701738928,1462.2019717550388,-355.6448828439503 +726817136.6082,188279935.71359998,-44238366.97396475,-31181509.86868012,-938.6960036963001,1477.7546999288727,-345.9855713032688 +726823516.3101,182082660.9492,-34764887.09326875,-33352851.111461535,-1005.05082154,1491.8398483220171,-334.36027080669896 +726829896.0119,175443475.95729998,-25207692.726704426,-35442760.286326505,-1077.3374384479998,1503.8912905580842,-320.38700996946943 +726833085.8629,171945861.4731,-20402267.65230827,-36452168.934915714,-1115.908260992,1508.931320558803,-312.37832122667936 +726836275.7138,168322472.09510002,-15582013.13044491,-37434823.705252975,-1156.211380008,1513.1691961202491,-303.60090096170774 +726839465.5647,164567642.2407,-10749688.063481504,-38388156.419679575,-1198.334684038,1516.4765710987638,-293.98079754304285 +726842655.4156,160675424.4595,-5908489.315823222,-39309351.22863809,-1242.3667994230002,1518.706797489214,-283.43657218101424 +726845845.2666,156639589.2839,-1062114.0274417475,-40195319.73147434,-1288.395644596,1519.692419302812,-271.8786748494621 +726849035.1175,152453630.4411,3785169.677230099,-41042674.14100516,-1336.5064841839999,1519.242398871752,-259.2088432706122 +726852224.9684,148110777.2325,8628442.660359927,-41847698.59173868,-1386.779351076,1517.1390882976234,-245.3195642264347 +726855414.8194,143604016.3777,13462044.827679353,-42606318.950472414,-1439.2856833380001,1513.1349810386844,-230.09365086020887 +726858604.6703,138926126.0415,18279474.400845744,-43314071.487875685,-1494.0839859470002,1506.9493153341668,-213.40401383520845 +726861794.5212,134069725.50189999,23073276.444715444,-43966071.32284839,-1551.214312518,1498.2646525819812,-195.1137285544416 +726864984.3721,129027344.8149,27834920.569506936,-44556981.73827522,-1610.691327464,1486.7236203580255,-175.07653619908643 +726868174.2231,123791518.8538,32554668.916830227,-45080985.94511755,-1672.4957069099999,1471.9261198674776,-153.13796077585204 +726871364.074,118354912.0722,37221436.536356255,-45531763.78182596,-1736.563647513,1453.427405854891,-129.13726472047352 +726874553.9249,112710479.6557,41822647.73350392,-45902476.24539998,-1802.774301958,1430.737631636976,-102.91052632704992 +726877743.7758,106851672.7049,46344094.268637255,-46185762.18097347,-1870.9350807459998,1403.3236232338131,-74.29515923046432 +726880933.6268,100772693.22,50769804.09418911,-46373752.089097396,-1940.764951033,1370.6138840566093,-43.136239266875236 +726884123.4777,94468804.44817,55081933.23007818,-46458105.516571805,-2011.8761858149999,1332.0080338878784,-9.29500101242445 +726887313.3286,87936701.73900999,59260695.73360016,-46430079.32733202,-2083.755538424,1286.8920544327964,27.34020181429281 +726890503.1796,81174941.80343,63284354.03302333,-46280635.1858083,-2155.746399524,1234.660749070141,66.8403148187453 +726893693.0305,74184424.40321,67129293.9069062,-46000594.38294227,-2227.0343446099996,1174.7486219865007,109.21952438899854 +726896882.8814,66968910.543239996,70770212.43564391,-45580847.16665043,-2296.639332304,1106.6697995441327,154.41731946084627 +726900072.7323,59535549.58397,74180447.27571607,-45012620.7243392,-2363.418578115,1030.0665125683026,202.27990934233804 +726903262.5833,51895374.327810004,77332471.60248451,-44287804.90291642,-2426.084491213,944.7639639035915,252.54300289919007 +726906452.4342,44063709.35079,80198568.69929059,-43399327.04373803,-2483.241626686,850.82715784364,304.8187375999834 +726908047.3597,40082098.12727,81515887.12877406,-42891887.94646242,-2509.302740088,800.7198171521659,331.55476364218134 +726909642.2851,36060427.91602,82751682.0766035,-42341557.52015314,-2533.444969359,748.6128506208122,358.59008617861537 +726911237.2106,32001899.90828,83902838.3408425,-41747924.42857971,-2555.492905272,694.6027324544305,385.8407480600023 +726912832.1361,27909989.3099,84966411.95768136,-41110716.673758015,-2575.278825757,638.8077384590138,413.2160946121783 +726914427.0615,23788430.52781,85939664.94914527,-40429811.60617462,-2592.645884826,581.3677207609823,440.61969052104405 +726916021.987,19641197.46394,86820098.9639561,-39705244.22487166,-2607.451309432,522.443327664291,467.9504599668867 +726917616.9124,15472478.40705,87605487.67762949,-38937213.58178321,-2619.569471618,462.21465940813835,495.1040192848684 +726919211.8379,11286646.43711,88293906.28897198,-38126086.86475498,-2628.89473215,400.8793463123603,521.9741806173944 +726920806.7634,7088225.4913099995,88883757.58900017,-37272400.9889741,-2635.343926913,338.65008663676576,548.4545782920297 +726922401.6888,2881852.824087,89373793.6988,-36376861.52662922,-2638.858386885,275.75170146168733,574.4403667597919 +726923199.1516,777154.8467001,89581090.83886269,-35913662.43151565,-2639.503826965,244.12434211336634,587.2158557419224 +726923597.8829,-275313.0337595,89675272.46872781,-35678258.10530481,-2639.547629154,228.27909587705773,593.5438244600151 +726923797.2486,-801544.2511388999,89719993.17619677,-35559611.82055038,-2639.499765891,220.35021686357987,596.6922037037355 +726923896.9315,-1064655.122463,89741760.6580306,-35500053.56263525,-2639.458394229,216.38441842249736,598.2624105783159 +726923946.7729,-1196208.866749,89752496.14262739,-35470215.77104685,-2639.433348862,214.4012051247277,599.0465082226032 +726923971.6936,-1261985.252675,89757826.81635804,-35455282.224247575,-2639.419736374,213.4095231649475,599.4383043381877 +726923984.1539,-1294873.316162,89760482.88553657,-35447811.789934605,-2639.412657691,212.91366375847542,599.6341390623937 +726923990.3841,-1311317.314547,89761808.60313731,-35444075.6577794,-2639.409050241,212.66572949873333,599.7320405714868 +726923993.4992,-1319539.305276,89762470.88267872,-35442207.36297942,-2639.407229489,212.5417612359766,599.7809873602658 +726923995.0568,-1323650.298509,89762801.87764233,-35441273.158406235,-2639.406314856,212.47977682223274,599.8054597629377 +726923996.6143,-1327761.2903159999,89763132.7760521,-35440338.91571221,-2639.405397386,212.4177922204919,599.8299315043212 +726923999.7294,-1335983.269631,89763794.28325398,-35438470.31598605,-2639.403553931,212.29382245387876,599.8788730030685 +726924005.9596,-1352427.2109440002,89765116.13910276,-35434732.65917428,-2639.3998329690003,212.0458806745549,599.9767480612608 +726924018.4199,-1385315.023316,89767755.21661316,-35427255.51638975,-2639.392254834,211.54998818206158,600.1724664017922 +726924043.3406,-1451090.3591250002,89773014.83425917,-35412293.915972896,-2639.376553733,210.5581678626575,600.5637758224913 +726924093.1821,-1582639.8116370002,89783459.9160728,-35382341.47060728,-2639.3429723140002,208.57438909635007,601.3458843715373 +726924192.8649,-1845733.333405,89804053.43454798,-35322319.7207833,-2639.26709359,204.60630473772773,602.9080503131636 +726924392.2306,-2371894.790034,89844053.66033812,-35201809.74456053,-2639.0804817350004,196.66823423932004,606.024098005918 +726924790.9619,-3424082.940889,89919305.33013682,-34958931.68245038,-2638.567935165,180.7861308039764,612.2224255217883 +726925588.4247,-5527661.242567999,90050806.16408189,-34465807.35822738,-2636.986653843,149.01123016385685,624.4790503110905 +726927183.3501,-9729563.522266,90237817.33034839,-33450628.72744292,-2631.61363566,85.52357349977171,648.3940585790831 +726928778.2756,-13920571.56473,90323762.86816444,-32397987.26606635,-2623.3355461540004,22.316463445253362,671.4435450610808 +726930373.2011,-18096106.66134,90309275.9078474,-31309323.264820542,-2612.224997837,-40.37857165639278,693.5540381147647 +726931968.1265,-22251724.8799,90195351.63390024,-30186186.401050262,-2598.378071318,-102.33960621054308,714.6619805081748 +726933563.052,-26383152.747870002,89983329.44631764,-29030219.3732012,-2581.912029002,-163.35742091810755,734.7143736409572 +726935157.9775,-30486318.94848,89674870.50775342,-27843140.730039287,-2562.962619942,-223.2381609049043,753.6691381632872 +726936752.9029,-34557381.404139996,89271931.51813361,-26626727.39229965,-2541.681090832,-281.80548568372546,771.4951958116955 +726938347.8284,-38592749.6579,88776735.22141919,-25382797.09117133,-2518.231033828,-338.90216683430754,788.1722887581702 +726939942.7538,-42589101.82828999,88191739.2192364,-24113191.539257355,-2492.785172082,-394.39114063531963,803.6905655341277 +726941537.6793,-46543396.65551,87519603.25263208,-22819760.263947707,-2465.522210579,-448.1560165637122,818.04996697489 +726944727.5302,-54315090.78255001,85925363.27985463,-20168768.907619152,-2406.271960945,-550.1508879236833,843.3361076563963 +726947917.3812,-61889274.27071,84018094.57904676,-17444239.20198912,-2341.921832358,-644.358887292244,864.1940637389421 +726951107.2321,-69251896.07180001,81823085.62544115,-14659900.784877248,-2273.845369793,-730.543257679305,880.8856051704515 +726954297.083,-76393105.35028,79365974.17771614,-11828533.465588648,-2203.295607057,-808.7135404840383,893.7394259982368 +726957486.934,-83306811.63467,76672042.82953179,-8961800.497127187,-2131.373556705,-879.0741841454685,903.1224851936222 +726960676.7849,-89990174.22042,73765679.69481434,-6070166.02721158,-2059.01480078,-941.973329054481,909.4161122215091 +726963866.6358,-96443072.17879,70669995.84625793,-3162880.0683778524,-1986.9899984249998,-997.8563091760591,912.9976022109371 +726967056.4867,-102667592.2617,67406580.05159146,-248013.56027605012,-1915.914944545,-1047.226313184316,914.2271422247977 +726970246.3377,-108667558.9311,63995366.4194109,2667472.481290154,-1846.266322188,-1090.6130193662782,913.4393928084451 +726973436.1886,-114448119.7097,60454589.5138306,5577637.292991225,-1778.400111623,-1128.5489165743325,910.9388224648629 +726976626.0395,-120015389.9684,56800804.41400489,8477460.215986524,-1712.570470188,-1161.5524025701452,906.9978659073669 +726979815.8904,-125376157.6671,53048950.651990876,11362738.603476562,-1648.9477120810002,-1190.1164850690643,901.8570822880879 +726983005.7414,-130537642.35730001,49212445.24637265,14229988.200186621,-1587.63455901,-1214.7018883210512,895.7266211463426 +726986195.5923,-135507302.4366,45303292.15994849,17076349.48658374,-1528.680311182,-1235.7334755829936,888.7884707890115 +726989385.4432,-140292684.6778,41332199.164138995,19899502.031839773,-1472.092873633,-1253.5990555063756,881.1991007249133 +726992575.2942,-144901308.4904,37308695.618974,22697587.48729687,-1417.84873982,-1268.649841826525,873.0922333276469 +726995765.1451,-149340579.3459,33241247.00484579,25469141.43554306,-1365.9011331069999,-1281.2019847993138,864.5815649218289 +726998954.996,-153617725.2251,29137363.427500356,28213033.60969834,-1316.18654672,-1291.5387591981585,855.7633331694137 +727002144.8469,-157739751.894,25003700.437892497,30928416.056679334,-1268.629924007,-1299.9130959708596,846.7186687256656 +727005334.6979,-161713412.811,20846151.67348263,33614678.35113181,-1223.1487143499999,-1306.5502467742695,837.5157081693686 +727008524.5488,-165545190.4227,16669932.835927758,36271409.21351483,-1179.6560043690001,-1311.65043881185,828.211463132307 +727011714.3997,-169241286.23999998,12479657.445115816,38898363.678814925,-1138.062907016,-1315.3914268130313,818.8534558349012 +727014904.2506,-172807617.54450002,8279404.640948407,41495435.1505747,-1098.280355319,-1317.9308888066203,809.4811378141216 +727018094.1016,-176249819.0228,4072779.6514743064,44062631.65124543,-1060.220426411,-1319.408635796019,800.1271124940096 +727024473.8034,-182782992.5097,-4347219.249472465,49107887.27001946,-988.9279094666999,-1319.660776156295,781.5762504843791 +727030853.5053,-188880490.327,-12759081.745178748,54035796.04506196,-923.5344813037,-1316.9806459221159,763.3609068790211 +727037233.2071,-194578014.86699998,-21146276.404700305,58848853.35990721,-863.444077457,-1312.0243989585351,745.5844222933204 +727043612.909,-199907651.8901,-29496000.85877916,63550078.15536514,-808.1191180021,-1305.310626773343,728.3098856020583 +727049992.6109,-204898241.8935,-37798405.39472585,68142795.70310327,-757.079355577,-1297.2509020437094,711.5719070309664 +727056372.3127,-209575735.172,-46045989.41478434,72630484.33785395,-709.8982253459,-1288.1735210062357,695.3850131651261 +727062752.0146,-213963519.28800002,-54233131.20738749,77016667.32456177,-666.1980480538,-1278.341932773796,679.7496047407185 +727069131.7164,-218082714.5496,-62355722.00161683,81304837.00058058,-625.6448801263,-1267.9690629933516,664.6561619384231 +727075511.4183,-221952436.79860002,-70410880.619151,85498401.40760195,-587.9434228747,-1257.2284774165332,650.088179478735 +727081891.1201,-225590028.23200002,-78396731.4115875,89600646.5375252,-552.8321997791,-1246.2631191953078,636.0241787538878 +727088270.822,-229011258.8596,-86312231.65240338,93614709.20110635,-520.0790764497,-1235.192172032877,622.4390405836539 +727094650.5238,-232230500.2111,-94157037.86078018,97543556.63917103,-489.47712000810003,-1224.1164622273993,609.3048330204816 +727101030.2257,-235260873.74199998,-101931402.7927269,101389970.20919707,-460.8407509407,-1213.1226929945344,596.5912601705678 +727107409.9275,-238114375.3958,-109636096.17757384,105156530.94536705,-434.0021149435,-1202.2867060824915,584.2658291764286 +727113789.6294,-240801977.4881,-117272343.54171227,108845605.53885835,-408.8075917143,-1191.67587397788,572.2938188907519 +727120169.3313,-243333708.5867,-124841777.5301046,112459331.6991638,-385.11436854339996,-1181.3506412624304,560.6381394586734 +727126549.0331,-245718711.5648,-132346396.24351716,115999602.56876588,-362.78703592380003,-1171.365148509474,549.2591936617881 +727132928.735,-247965280.09750003,-139788522.2246087,119468050.64279875,-341.69423765380003,-1161.7668010612351,538.1148962876822 +727139308.4368,-250080874.34350002,-147170754.9086712,122866032.90199782,-321.70553076609997,-1152.5946029857143,527.1610675738661 +727145688.1387,-252072118.0699,-154495908.033119,126194620.33869946,-302.68880767900004,-1143.876113066262,516.3524821369788 +727152067.8405,-253944782.7512,-161766923.31476736,129454597.15295544,-284.5088793403,-1135.623059784934,505.6448854300615 +727158447.5424,-255703768.37539998,-168986752.8141019,132646476.5362814,-267.02804931640003,-1127.826047418043,494.998221187029 +727164827.2442,-257353096.771,-176158207.30423772,135770541.0383679,-250.10955594579997,-1120.4494116896606,484.38105944731234 +727171206.9461,-258895937.4066,-183283776.7223231,138826913.80979455,-233.6243837195,-1113.4279940016977,473.77572131216533 +727177586.648,-260334686.7129,-190365442.09841943,141815661.9025331,-217.46096098930002,-1106.6679937664726,463.18295144605094 +727183966.3498,-261671113.5451,-197404510.6182611,144736923.59627095,-201.5358006637,-1100.053593820126,452.62448572911865 +727190346.0517,-262906567.11349997,-204401512.13571998,147591041.02126604,-185.8018787698,-1093.4593835012054,442.1419756841053 +727193535.9026,-263486796.1055,-207884185.99395746,148993111.7477901,-178.0027551988,-1090.131931606485,436.94644619803836 +727196725.7535,-264042222.4249,-211356188.05059063,150378672.48632377,-170.2514727794,-1086.7662089339003,431.7917311109273 +727199915.6045,-264573005.30040002,-214817377.46899062,151747866.1102444,-162.55248452179998,-1083.3507846852006,426.68577089876226 +727203105.4554,-265079320.7651,-218267580.14026707,153100860.57746345,-154.91179533800002,-1079.8762551101415,421.63630447010297 +727206295.3063,-265561365.91599998,-221706595.4136042,154437847.84937564,-147.336535937,-1076.3353958139517,416.6506038250271 +727209485.1572,-266019361.81039998,-225134203.13019842,155759042.0404362,-139.8345246379,-1072.7231944568102,411.7352543528998 +727212675.0082,-266453554.9775,-228550170.58307508,157064676.94983244,-132.4138481345,-1069.0367753715486,406.89599070127474 +727215864.8591,-266864217.6645,-231954259.0927051,158355003.16502458,-125.0824863865,-1065.2752357048469,402.13759182240204 +727219054.71,-267251646.9764,-235346229.9484153,159630284.92262065,-117.8479989798,-1061.4394171771346,397.46383310123764 +727222244.5609,-267616163.12939999,-238725849.55507678,160890796.89921072,-110.7172819975,-1057.5316385991057,392.8774890452784 +727225434.4119,-267958107.04189998,-242092893.6933686,162136821.0790639,-103.6963969166,-1053.5554123730285,388.3803772113352 +727228624.2628,-268277837.49040002,-245447150.87769988,163368643.81382963,-96.79046706909,-1049.5151644222017,383.97343282387897 +727231814.1137,-268575728.03180003,-248788424.84592998,164586553.1556395,-90.00363313797,-1045.4159722131485,379.6568036612718 +727235003.9647,-268852163.8637,-252116536.2558087,165790836.5117785,-83.33905696805,-1041.2633306637629,375.429955827855 +727241383.6665,-269342252.1713,-258732644.06112152,168159660.01287478,-70.38470173193,-1032.820596438903,367.2407107928754 +727247763.3684,-269751305.18,-265294402.2940125,170477333.12267667,-57.935246001239996,-1024.232504263629,359.39182901922817 +727254143.0702,-270082538.70460004,-271801022.4507816,172745970.2700941,-45.98742369747,-1015.5419161447659,351.86490520529327 +727260522.7721,-270339120.08159995,-278251975.1568619,174967560.37574482,-34.52978576794,-1006.7869951255834,344.63932861280273 +727266902.4739,-270524124.7058,-284646957.2364129,177143958.39619374,-23.54534946223,-998.0004302687179,337.6939340860073 +727273282.1758,-270640507.8302,-290985856.466968,179276885.4612247,-13.01375340115,-989.2094418636734,331.00807131142176 +727279661.8776,-270691088.4831,-297268717.91891736,181367934.3530212,-2.9128883107959997,-980.4362130386269,324.5622322090924 +727286041.5795,-270678542.28440005,-303495713.73425007,183418577.95968607,6.77993796151,-971.6985111321515,318.33836808516395 +727292421.2814,-270605400.3961,-309667117.09967834,185430179.0119831,16.08721031795,-963.0103549816897,312.320003051649 +727298800.9832,-270474052.621,-315783280.37825173,187404000.1501029,25.03069952532,-954.3826498537657,306.49222237738707 +727305180.6851,-270286752.9891,-321844617.1062264,189341213.62922505,33.631160022669995,-945.8237533229915,300.8415897213131 +727311560.3869,-270045626.8222,-327851587.3216623,191242910.3918689,41.90817016185,-937.3399600963485,295.35602885706015 +727317940.0888,-269752678.4789,-333804685.73810726,193110108.32900155,49.88006835678,-928.9359070193497,290.0246919934467 +727324319.7906,-269409799.291,-339704432.26840687,194943759.68620622,57.563951575299996,-920.6149058598717,284.83782780043475 +727330699.4925,-269018775.3871,-345551364.45714766,196744757.6658337,64.97571258442001,-912.3792136399518,279.7866564813221 +727337079.1943,-268581295.1899,-351346031.4743364,198513942.24808994,72.13009984778999,-904.2302507439703,274.86325534191144 +727343458.8962,-268098956.4931,-357088989.35987467,200252105.3273996,79.04078925506,-896.1687760274292,270.0604562448051 +727349838.598,-267573273.06069997,-362780797.2638655,201959995.2309685,85.72046064841001,-888.1950269762957,265.37175495044437 +727356218.2999,-267005680.7353,-368422014.4943167,203638320.69367284,92.18087464879001,-880.3088317307775,260.7912316986408 +727368977.7036,-265750156.4632,-379554901.5627165,206908935.89075387,104.4868191594,-864.7968873993667,251.93355665967454 +727381737.1073,-264342514.42720002,-390492052.1398163,210068952.2207288,116.0370438274,-849.6263598716824,243.44935247073914 +727394496.511,-262791953.20539996,-401237767.0623065,213122923.42840847,126.89955312560001,-834.7882627287396,235.3063166402672 +727407255.9147,-261106860.9564,-411796223.1462178,216075021.4751262,137.1336295053,-820.2722842692696,227.47674000698007 +727420015.3185,-259294917.48,-422171460.9862222,218929089.19928947,146.79123412959999,-806.0674768520523,219.9366117270239 +727432774.7222,-257363180.0452,-432367379.8945052,221688682.92965034,155.9181566057,-792.1626971685562,212.66493595688664 +727445534.1259,-255318155.97570002,-442387737.2755374,224357107.48966655,164.55495667530002,-778.5468851859271,205.64320473128976 +727446035.9933,-255235488.30920002,-442778331.65358716,224460245.02395818,164.88516615650002,-778.0170878349508,205.37189233245834 +727456763.5394,-253407183.1104,-451078141.7254839,226633472.51991504,173.85396132149998,-768.095278044593,199.7389495242624 +727493527.5211,-246611602.51319999,-478628718.460135,233632387.87206173,195.2999743515,-731.0376113501293,181.28896139911558 +727530291.5028,-239082754.78340003,-504854387.4987286,239982185.3533748,213.8371356339,-695.9833092786167,164.38405733843905 +727567055.4845,-230918212.9562,-529825061.6688917,245735395.12431395,229.9535515437,-662.7339491420763,148.8013371164368 +727603819.4662,-222199725.2017,-553603887.9360781,250937295.99476948,244.0283120435,-631.1192744581407,134.3664436767526 +727640583.4478,-212996607.4338,-576248210.5648272,255627430.75054896,256.3630032287,-600.9931742882468,120.93980232339725 +727677347.4295,-203368177.8772,-597810381.2385134,259840704.3853316,267.2026187787,-572.2294932075644,108.40749450763856 +727714111.4112,-193365565.8236,-618338422.2256026,263608206.73785403,276.7497742218,-544.7182519935712,96.67494575634858 +727750875.3929,-183033070.5323,-637876558.7289366,266957833.35801595,285.174583734,-518.3624496927074,85.66241272574096 +727787639.3746,-172409229.313,-656465649.8280431,269914771.3310753,292.6215995782,-493.07546092399645,75.30170071772685 +727824403.3562,-161527653.7213,-674143527.14419,272501873.296887,299.2148022242,-468.778978993113,65.53372961242005 +727861167.3379,-150417718.3987,-690945271.4931769,274739958.946013,305.06122228799995,-445.4014391123139,56.306725179051625 +727897931.3196,-139105132.1399,-706903437.9743948,276648057.4355556,310.253644308,-422.87684023393933,47.574862094157695 +727934695.3013,-127612421.9247,-722048243.8628364,278243606.4172234,314.8726815471,-401.143886449199,39.297241089723755 +727953077.2921,-121804793.5803,-729324480.3135638,278929230.38811696,316.9894552527,-390.5562525519333,35.31714205119296 +727962268.2876,-118886664.13049999,-732890026.3092585,279244839.48197526,318.0031927831,-385.3291341574808,33.364875577828016 +727966863.7853,-117424138.5202,-734654833.502658,279395943.63307,318.4993128649,-382.73188447521846,32.397962211200365 +727969161.5341,-116692024.7943,-735532767.4152275,279469832.9096098,318.7447357513,-381.43729205748065,31.916782906189 +727970310.4085,-116325756.9621,-735970619.6467189,279506363.3706704,318.866794055,-380.79099837759384,31.676759189154055 +727970884.8458,-116142570.5221,-736189267.4169127,279524525.2463568,318.9276606843,-380.46810147544545,31.556888390862156 +727971172.0644,-116050964.1984,-736298521.7574452,279533580.36909527,318.9580534632,-380.30671542207733,31.496988203972705 +727971315.6737,-116005157.7638,-736353131.5465424,279538101.4794871,318.9732397308,-380.22603798444635,31.4670469070372 +727971459.283,-115959349.1489,-736407729.7503505,279542618.29045314,318.98841925470003,-380.1453709351379,31.437111471888443 +727971746.5016,-115867725.3819,-736516891.4086745,279551639.01779795,319.0187580851,-379.98406798821986,31.37725817934522 +727972320.9388,-115684451.72569999,-736735075.7673749,279569628.916299,319.0793549715,-379.66158661803024,31.25762185320329 +727973469.8132,-115317800.14019999,-737170888.9869863,279605402.67698884,319.2002264007,-379.0171212813374,31.018629815834572 +727975767.5621,-114584081.601,-738040296.0976756,279676127.5549355,319.440685889,-377.73017470542646,30.54176484764244 +727980363.0598,-113114996.7315,-739770254.209802,279814298.69396955,319.9165190265,-375.16417396754116,29.592484657283677 +727989554.0552,-110170343.6793,-743194914.1068333,280077621.2414043,320.8482168065,-370.06339298711777,27.71151222838708 +728007936.046,-104255941.78940001,-749904529.729193,280552930.9966467,322.63463949799996,-359.98396096024607,24.018268300852142 +728044700.0277,-92333071.58474,-762775141.1297104,281303936.6418971,325.9213137966,-340.29224363325227,16.893947249995477 +728081464.0094,-80295824.93925999,-774932679.3632128,281799114.3927994,328.8639378616,-321.18440612794654,10.09659689957293 +728118227.9911,-68156103.63226,-786397788.0252773,282050018.0604229,331.50217420990003,-302.61618931796585,3.6011936764613637 +728154991.9728,-55924453.49898,-797189534.1731142,282067321.7142627,333.8702496326,-284.5460590673118,-2.615139545250912 +728191755.9544,-43610251.49989,-807325505.4957135,281860894.37472504,335.9976309897,-266.93504491189566,-8.573355425301614 +728228519.9361,-31221869.510050002,-816821901.6375283,281439867.09200966,337.9096205096,-249.74658027747293,-14.29267689417081 +728265283.9178,-18766817.88359,-825693619.6369731,280812693.3865947,339.6278773652,-232.94634215442176,-19.790770239715727 +728302047.8995,-6251870.067664,-833954333.4511023,279987203.3240147,341.17087143320003,-216.50208977157536,-25.083900713549426 +728375575.8628,18933654.94217,-848691764.6084068,277769766.801208,343.7912863602,-184.56202690750325,-35.11415447338796 +728441751.0299,41748961.94043,-859980439.6313822,275163257.1246104,345.6829274473,-156.74700847382206,-43.57957865796632 +728495450.2808,60346437.57518,-867804209.645189,272646527.6109171,346.9289918307,-134.71916101093169,-50.106803427119345 +728495450.2808,60346435.687869996,-867804209.7932012,272646528.77812606,346.9289918784,-134.71916374685492,-50.1068020981393 +728510812.1388,65678329.53632,-869825904.3089615,271862819.04058284,347.2408200207,-128.49591617003384,-51.92275153475627 +728569348.5954,86035585.76392,-876659652.6627588,268625084.8480593,348.2548606083,-105.06099895486429,-58.6511464971511 +728598616.8237,96234492.0846,-879565062.027766,266860620.54730183,348.6608482593,-93.49067404427379,-61.90971662063029 +728627885.052,106444309.82169999,-882133091.0581666,265001740.4968732,349.00054551339997,-82.00498707540257,-65.10359204297293 +728657153.2803,116663102.4956,-884366074.6946303,263050278.74526316,349.274125239,-70.59427055172284,-68.23680147244961 +728686421.5086,126888931.59809999,-886266069.5519073,261007954.33378842,349.481278103,-59.24917013800661,-71.31317681044803 +728715689.7369,137119842.6595,-887834862.8399358,258876376.90557626,349.6212245267,-47.96062871425314,-74.33636305629166 +728744957.9652,147353851.6349,-889073980.8643911,256657052.04719186,349.6927242948,-36.719873293241136,-77.30982659616242 +728809998.4726,170096884.2225,-890653298.3930886,251418005.07386625,349.5973397389,-11.869086193077749,-83.75584940709314 +728875038.9799,192821738.8439,-890620213.0112586,245766258.49629003,349.1284597759,12.875875575054387,-90.0055890537142 +728947306.2103,218019228.1387,-888697258.4398642,239016787.16655248,348.12408372330003,40.34610894522195,-96.75516947828241 +728983439.8255,230585786.1311,-886990936.9382981,235460774.1238847,347.4118306724,54.10316487576321,-100.06379690543551 +729001506.6331,236858738.99760002,-885951243.4337378,233638116.1309266,346.9991163038,60.99257397512311,-101.70330561711947 +729010540.0369,239992331.1444,-885384700.7863455,232715700.61297584,346.7780540525,64.44064289543374,-102.51955768410699 +729015056.7388,241558367.10209998,-885089746.2973856,232251730.3520154,346.6637738425,66.16559704877446,-102.92683189044234 +729017315.0898,242341190.0942,-884939347.0304121,232019055.71240366,346.6056871739,67.02831375429552,-103.13025893454301 +729018444.2652,242732552.2187,-884863416.7320895,231902546.1532935,346.5764060252,67.45973322005118,-103.2319202996667 +729019008.853,242928220.8598,-884825268.8965194,231844248.33102685,346.56170584989997,67.67545838135958,-103.28273798742782 +729019291.1469,243026052.06509998,-884806149.3046823,231815088.66140974,346.55434084350003,67.78332483789914,-103.30814358816235 +729019432.2938,243074966.8879,-884796578.0897883,231800506.13722932,346.55065460829996,67.83725903732397,-103.32084557839426 +729019573.4407,243123881.19009998,-884786999.2623533,231785921.82021803,346.5469658843,67.89119388509614,-103.33354702878175 +729019855.7346,243221708.2317,-884767818.7688475,231756747.8080267,346.5395809669,67.99906552913669,-103.35894831110707 +729020420.3223,243417356.0537,-884729366.4255484,231698378.27348298,346.52478123640003,68.21481662774258,-103.40974440679763 +729021549.4978,243808626.574,-884652096.292961,231581553.17989284,346.4950620445,68.64635021697993,-103.5113107664474 +729023807.8488,244591066.4886,-884496094.0773077,231347559.03090167,346.4351435461,69.50954415832479,-103.71434051033438 +729028324.5507,246155536.7383,-884178240.4935496,230878195.9668706,346.31337652080003,71.23644862314477,-104.11999089127735 +729037357.9545,249282797.991,-883519125.5806756,229933979.3256777,346.0620450298,74.69239963850872,-104.92967730037816 +729055424.762,255530270.7807,-882107170.640565,228023650.9404486,345.5275615415,81.6134683727847,-106.54276479405974 +729091558.3772,267994268.04180002,-878907527.4754051,224115926.82643783,344.32607246559996,95.49693622809617,-109.74510280905072 +729163825.6076,292774984.96779996,-870997425.2705147,215955985.99545258,341.347978036,123.46452159677159,-116.06370191403335 +729236092.838,317310078.2759,-861054710.2395713,207343135.92799664,337.5085371442,151.76135049527815,-122.28189936426133 +729308360.0684,341532803.6451,-849053164.5587921,198284159.4384153,332.6806205885,180.45284277129198,-128.41177751035872 +729380627.2988,365366641.5298,-834962207.408092,188785187.5227572,326.7206741678,209.59424679100556,-134.4592234154852 +729452894.5292,388724067.7953,-818747650.8260541,178852165.38239703,319.46749697459995,239.2300178919422,-140.4233838326375 +729517935.0365,409256166.8549,-802308352.6603786,169546503.15256992,311.6853460199,266.3521224365921,-145.71312860172387 +729582975.5439,429239398.9101,-784090710.6235461,159899517.57503593,302.5645003698,293.91590352156,-150.91657242593973 +729616144.082,439189598.63879997,-774106298.6526178,154850394.18922433,297.34708031130003,308.14461109944654,-153.5312135745924 +729626433.9359,442240532.6017,-770912720.4641358,153266441.20547304,295.6458741934,312.58238536692403,-154.33634912811462 +729659562.5957,451940753.8458,-760319686.467211,148110804.9842191,289.8916178106,326.9455289242759,-156.9074289611413 +729692691.2556,461443103.9023,-749248924.6819474,142870564.01878417,283.6963138784,341.4228701698467,-159.44331280338105 +729725819.9154,470732576.6223,-737696682.3566922,137546955.0569534,277.03603535499997,356.01245620090793,-161.9396426579172 +729758948.5752,479793365.4525,-725659282.4665639,132141367.75695851,269.8864209577,370.7116772582861,-164.39154572204131 +729792077.235,488608852.9412,-713133144.8031485,126655361.46897349,262.22293290510004,385.5173054373906,-166.7936604521528 +729825205.8948,497161610.4302,-700114805.9400527,121090680.5250518,254.02119306049997,400.42552544989763,-169.1401861301928 +729858334.5547,505433409.6459,-686600938.4940925,115449267.85339412,245.25739752639998,415.43192738084923,-171.42495733914 +729891463.2145,513405249.92590004,-672588372.0269839,109733275.22770676,235.90879273279998,430.5314166349687,-173.64154137883875 +729928272.8365,521887025.86459994,-656430333.3390508,103297589.40540287,224.80981605739998,447.4104634444799,-176.01641668314738 +729969172.4165,530814181.19719994,-637745966.0369421,96046623.23333111,211.5682686718,466.2785675321332,-178.5357768434663 +729989622.2066,535069666.5336,-628113841.9990269,92383184.33293673,204.5789225085,475.7521611483848,-179.74456172448402 +730010071.9966,539179665.2348,-618287747.4797021,88695391.76497701,197.3390205207,485.24847304925555,-180.91731345963842 +730030521.7866,543139018.3244,-608267250.5016319,84983998.71996722,189.84513996040002,494.7642404220792,-182.0524308112032 +730050971.5766,546942497.4090999,-598051990.464327,81249791.50520355,182.0938923399,504.2957466115002,-183.14827332662662 +730071421.3666,550584803.927,-587641687.3019214,77493590.55673164,174.0817806549,513.8388295388302,-184.20313961802634 +730091871.1566,554060565.3113999,-577036150.2751288,73716251.92727408,165.80504080460003,523.3889246456467,-185.2152448168652 +730112320.9466,557364328.0254,-566235285.5249878,69918669.1875233,157.25947870279998,532.9411418139366,-186.1826989645502 +730132770.7366,560490546.9949,-555239101.6653184,66101775.80038631,148.4403177049,542.4903687339494,-187.10348923955883 +730153220.5267,563433572.3571,-544047713.1171598,62266547.761160195,139.3420670521,552.0313905709556,-187.97546723380944 +730173670.3167,566187633.7509,-532661340.9460535,58414006.45183948,129.9584189798,561.5590113854679,-188.79634195754284 +730194120.1067,568746822.8229,-521080311.32326937,54545221.58461577,120.2821766816,571.0681617607162,-189.56367763677451 +730204345.0017,569951451.5674,-515216929.81280756,52605086.044413865,115.3318291115,575.8142819250811,-189.9264677009328 +730209457.4492,570534687.6144,-512267048.8162615,51633645.437610686,112.8281247975,578.1849700664006,-190.10249780494107 +730212013.6729,570821493.3686,-510787564.36816275,51147589.96839923,111.5690776857,579.3696897390383,-190.1891529839772 +730213291.7848,570963687.8049,-510046686.62692416,50904479.45893788,110.93774740730001,579.9618896042166,-190.23213824664873 +730213930.8408,571034482.2387,-509675963.9369167,50782903.63825527,110.6216295774,580.2579490635443,-190.25354499966687 +730214250.3687,571069803.6751,-509490531.6445615,50722110.602509886,110.4634573628,580.4059686149774,-190.26422686938054 +730214410.1327,571087445.4376,-509397797.76254886,50691712.80524689,110.3843429146,580.4799758387297,-190.26956242290757 +730214490.0147,571096261.5787001,-509351426.387732,50676513.5870229,110.3447786034,580.5169788115212,-190.2722288537187 +730214569.8967,571105074.5590999,-509305052.0569753,50661314.15589008,110.3052095666,580.5539813580459,-190.27489438704265 +730214729.6607,571122691.0363001,-509212294.52808845,50630914.6548737,110.2260573139,580.6279851712821,-190.28022276054978 +730215049.1886,571157886.0460999,-509026744.0015979,50570113.100572556,110.0676960767,580.775987670326,-190.29086873022516 +730215688.2446,571228124.2028,-508655501.0813527,50448499.798291504,109.7507465466,581.0719720991399,-190.312117522876 +730216966.3565,571367992.3865,-507912447.83301544,50205232.54833463,109.1159382367,581.6638582039365,-190.35444222216444 +730219522.5802,571645290.8052,-506424072.2023907,49718536.500083,107.8426763496,582.8472956114807,-190.43839767617393 +730224635.0277,572190092.2412001,-503438248.45235753,48744506.522322804,105.2815045805,585.2128011156448,-190.60351348828746 +730234859.9227,573240162.06,-497430344.52978206,46793962.29379672,100.1000212081,589.9380975143451,-190.92240834582603 +730255309.7127,575179314.6289,-485269797.1072515,42883486.92848623,89.49591255713001,599.3639861149871,-191.51357016931254 +730275759.5027,576898252.5147,-472916856.8268287,38961578.670069486,78.56099233392,608.7535535211604,-192.04003629752452 +730296209.2928,578390089.5828,-460372306.5561357,35029592.64707008,67.28325035232,618.1029029133804,-192.49863858613665 +730316659.0828,579647683.8712,-447637007.57678515,31088950.50289437,55.64967332823,627.4082477244531,-192.88603703805586 +730337108.8728,580663616.8138,-434711898.33746785,27141144.120711267,43.646217035439996,636.6658097805973,-193.19869812228083 +730357558.6628,581430171.7659,-421597995.4329857,23187739.8575072,31.25776649339,645.8717030114066,-193.43286682450713 +730398458.2428,582182655.2116001,-394808289.61146146,15270805.409053907,5.259754141304,664.1116236004203,-193.64939249009228 +730439357.8228,581836558.1002,-367277787.52219945,7352371.765287057,-22.48888869939,682.0897100551924,-193.49972938572688 +730474042.8825,580626640.4829,-343358541.4008476,647650.0852561891,-47.515847021089996,697.0948848422253,-193.05472491661487 +730508727.9421,578523125.0669,-318923255.81459874,-6036117.202941835,-74.0355133885,711.8381691003807,-192.2860415517054 +730543413.0017,575472047.5265,-293981836.16639775,-12687108.112389281,-102.17660419250001,726.2701456557172,-191.15842430223273 +730578098.0613,571414714.0556,-268546131.9700339,-19292173.771827325,-132.0833862771,740.3275896671663,-189.63042030819713 +730612783.1209,566287132.6679,-242630475.81122684,-25836601.709103405,-163.91738930370002,753.9298933717563,-187.65309023886851 +730647468.1805,560019382.9216,-216252359.2313751,-32303830.42434582,-197.8592439601,766.9747048198934,-185.16847543673993 +730682153.2401,552534920.1173,-189433277.38087344,-38675105.60604991,-234.110610674,779.3325120816729,-182.1077565461039 +730716838.2997,543749812.2236,-162199785.56446066,-44929065.78855082,-272.89612195219996,790.8398302077965,-178.38902419151762 +730751523.3593,533571910.7427,-134584819.10145968,-51041243.42609438,-314.46518731649996,801.2905423253688,-173.91456434223412 +730786208.4189,521899965.7593,-106629358.7625148,-56983460.553972006,-359.093400068,810.4248342209376,-168.567547975016 +730813500.3621,511593301.2898,-84426203.32980427,-61518489.45015916,-396.5561886166,816.4755185215697,-163.6563641994211 +730835762.5626,502409402.6111,-66202999.82471731,-65112384.59508702,-428.7655928597,820.5233976003805,-159.1311323130483 +730860624.7203,491283149.2433,-45757983.6289074,-68999661.56346513,-466.6089303622,823.9362417079832,-153.46098265450775 +730885486.878,479190173.90569997,-25244662.292234413,-72737111.80858542,-506.55428904819996,825.9808426608074,-147.06462633176935 +730910349.0357,466076552.6567,-4699997.762729146,-76305594.7903167,-548.7357489628,826.4134220448407,-139.8527733962041 +730935211.1934,451885019.4815,15832440.129764825,-79683597.32739338,-593.2875243556,824.9448775934429,-131.72360038627153 +730960073.3511,436555014.42249995,36301243.0013471,-82846902.24478394,-640.3393497074001,821.2322769795508,-122.56117758827827 +730984935.5088,420022876.80189997,56645707.11250794,-85768219.03370383,-690.0096262277,814.868950789245,-112.23386724948588 +731009797.6665,402222242.3685,76794109.52045482,-88416772.92346667,-742.3955303398,805.3732161363829,-100.59288110783473 +731034659.8243,383084734.6437,96661690.67890203,-90757865.09989096,-797.5588315262,792.175880984012,-87.47118543285524 +731059521.982,362541080.615,116148316.1107641,-92752413.17500742,-855.5061100787999,774.6070564429747,-72.68318240099464 +731071953.0608,351720457.28620005,125712624.57882923,-93606208.95875712,-885.5041458196,763.9432913941235,-64.60146472920744 +731084384.1397,340522804.34720004,135135810.81374684,-94356498.28241093,-916.1613372613,751.8834277375086,-56.02579080854349 +731096815.2185,328940094.9016,144399798.8644175,-94996970.03786395,-947.4491973921,738.3101327278108,-46.92859368336761 +731109246.2974,316964719.2633,153485003.9996585,-95520967.13853034,-979.3288029467,723.0979913919343,-37.28182383918326 +731121677.3762,304589625.93630004,162370232.54219788,-95921482.48056597,-1011.7489485110001,706.1135906986833,-27.057282276468726 +731134108.4551,291808486.88460004,171032584.10828978,-96191159.6764697,-1044.644073683,687.2158380679599,-16.227056857350618 +731146539.534,278615890.07879996,179447359.71050182,-96322299.9883951,-1077.9319628320002,666.2565856689638,-4.764081084374567 +731158970.6128,265007561.99189997,187587979.93333593,-96306877.02565274,-1111.511232493,643.0816468422282,7.357162601857681 +731171401.6917,250980622.39490002,195425918.6075886,-96136561.20584571,-1145.258637834,617.5323052837039,20.159772701517653 +731183832.7705,236533873.5449,202930658.9814087,-95802756.23870897,-1179.0262554199999,589.4474286879322,33.66337045603646 +731196263.8494,221668124.7788,210069680.5414182,-95296649.98333743,-1212.638634681,558.6663083091971,47.882835240039725 +731208694.9282,206386551.839,216808486.31777596,-94609282.35494462,-1245.8900513649999,525.0323508993349,62.826820997484106 +731221126.0071,190695088.97079998,223110681.8490963,-93731633.10767049,-1278.542049815,488.3977399821026,78.49605222429895 +731233557.0859,174602848.4731,228938118.82891756,-92654732.08449605,-1310.321515254,448.6291634469809,94.8814135318068 +731245988.1648,158122559.378,234251116.7806681,-91369794.2874749,-1340.9195854319998,405.6146577198329,111.9618708614914 +731258419.2436,141271012.5235,239008776.64043632,-89868381.54021502,-1369.991770711,359.2715497728292,129.70229045455488 +731270850.3225,124069494.50050001,243169399.4264058,-88142591.40048374,-1397.1596979780002,309.5553757007457,148.0512589623433 +731283281.4014,106544187.60069999,246691020.57112882,-86185272.38702466,-1422.014916928,256.4695136243281,166.93905165419696 +731295712.4802,88726507.41358,249532066.26136193,-83990262.60285175,-1444.1251883740001,200.07509682545486,186.27593820963745 +731309524.7901,68631236.51524,251841498.15697265,-81266660.12095931,-1464.9290160540002,133.6929883384397,208.1525128983963 +731323337.0999,48279381.31087,253208516.22070938,-78239046.58144712,-1481.176534787,63.67308984383204,230.26305128386926 +731337149.4097,27738017.85639,253585571.32861915,-74905636.03724031,-1492.2738745769998,-9.57255884325734,252.39327170043413 +731344055.5647,17419409.45966,253389755.72707036,-73124551.49144557,-1495.718927769,-47.240757926609874,263.39116865521237 +731350961.7196,7082103.611831,252931701.07783836,-71267796.93146409,-1497.678987875,-85.50219959779793,274.3015754425361 +731357867.8745,-3263452.652984,252207607.64186785,-69336091.35349053,-1498.099757168,-124.26957120786993,285.09110610187236 +731364774.0294,-13606462.0948,251214303.37628672,-67330387.0357255,-1496.93427052,-163.44849546661766,295.7256394075017 +731371680.1843,-23935831.32868,249949290.5890096,-65251873.45494746,-1494.14385254,-202.93820427738967,306.17066486258256 +731378586.3392,-34240230.7946,248410787.0973786,-63101978.69904302,-1489.698990485,-242.63237422993666,316.39165915098465 +731385492.4942,-44508161.06757,246597761.4733613,-60882368.187775776,-1483.580091454,-282.4201071309311,326.35448320698794 +731392398.6491,-54728023.47807,244509960.79661888,-58594940.60628894,-1475.778098967,-322.1870460312218,336.02579315829075 +731399304.804,-64888194.555740006,242147930.361789,-56241820.980116,-1466.2949435649998,-361.81660165597015,345.3734539387267 +731406210.9589,-74977102.94964,239513024.60019532,-53825350.91316153,-1455.1438081029999,-401.1912629308353,354.3669449776703 +731409664.0364,-79991251.04899,238093888.58551654,-52594147.413987786,-1448.949964782,-420.74636898686975,358.72187637907973 +731411390.5751,-82490128.42262,237359043.05282798,-51972948.76182147,-1445.700160824,-430.4845044199893,360.8623976987285 +731412253.8445,-83737441.14359999,236985321.3781094,-51660968.95617158,-1444.0372848089999,-435.34292940674914,361.92324372256877 +731412685.4792,-84360556.4646,236796888.53328094,-51504636.312845655,-1443.196386315,-437.7693832106145,362.45129127123414 +731412901.2965,-84671977.67499,236702279.45842984,-51426384.60557106,-1442.773576212,-438.9819082260572,362.7147184871296 +731413009.2052,-84827654.0191,236654876.80231127,-51387237.44314298,-1442.561581488,-439.58799373785826,362.84628262095214 +731413063.1595,-84905483.60733,236631150.95013133,-51367658.539427534,-1442.455436777,-439.89099205437924,362.91202727769485 +731413090.1367,-84944396.25328001,236619281.8936801,-51357867.757507,-1442.402327592,-440.0424800771166,362.9448902479223 +731413117.1138,-84983307.46616,236607408.75061405,-51348076.089124665,-1442.349193859,-440.1939606684016,362.9777469776168 +731413171.0682,-85061125.58986,236583650.20552334,-51328490.09369666,-1442.242852753,-440.49689953301277,363.04344171051457 +731413278.9769,-85216744.61132,236536084.08466765,-51289307.47262622,-1442.029876056,-441.10268778557963,363.1747562251401 +731413494.7942,-85527913.60226,236440755.76593202,-51210899.74757752,-1441.6027452810001,-442.31390486275205,363.43708511861655 +731413926.4289,-86149974.19109,236249315.18380523,-51053914.66839885,-1440.743778664,-444.7348891479898,363.9605397173708 +731414789.6982,-87392976.33075999,235863301.19255668,-50739268.42402598,-1439.007061384,-449.5709611463407,365.0026151398147 +731416516.237,-89874428.96334,235078766.12227872,-50107291.16448713,-1435.458789084,-459.2187448606458,367.0672649068182 +731419969.3144,-94818527.72159,233459871.44257027,-48832756.276665054,-1428.0654178329999,-478.41072666411526,371.1172680663442 +731426875.4693,-104626769.7492,230024571.66913006,-46242666.93304731,-1412.113707609,-516.3320553463565,378.890345832501 +731433781.6243,-114319614.5643,226329758.79159078,-43600447.85858686,-1394.657028265,-553.5473807461366,386.2106960850202 +731440687.7792,-123886892.2587,222380663.99510473,-40909287.63058387,-1375.761668113,-589.954819688271,393.06091164286124 +731447593.9341,-133318921.2104,218183199.14114657,-38172483.68602974,-1355.502591798,-625.4593101315191,399.42689692224985 +731454500.089,-142606564.5483,213743906.2457351,-35393419.09664409,-1333.962414089,-659.9735743334184,405.2979592002069 +731461406.2439,-151741279.1451,209069900.85089475,-32575538.930659793,-1311.230267594,-693.4189186656974,410.6668364176167 +731468312.3989,-160715156.44349998,204168810.58566996,-29722326.679906167,-1287.4005967090002,-725.7258570695017,415.5296632981141 +731475218.5538,-169520955.0417,199048709.63240945,-26837280.9652351,-1262.571914766,-756.83454923604,419.88587952208627 +731489030.8636,-186602819.437,188185599.96162972,-20985626.896110542,-1210.324426191,-815.2674249916666,427.0918532002778 +731502843.1735,-202942972.1496,176551513.28835285,-15048051.982858397,-1155.3105649640002,-868.4371290451919,432.3398201505479 +731515274.2523,-216987799.72770002,165482574.87840202,-9652647.501333326,-1104.1052107530002,-911.6819114872814,435.46646870289527 +731527705.3312,-230389203.8718,153903223.16386843,-4227298.450257018,-1051.883255495,-950.5640195700728,437.1739840686367 +731540136.41,-243137858.4673,141867231.99386945,1210994.9708902314,-999.1698213075,-985.1697811847457,437.5674877778716 +731552567.4889,-255230663.0239,129426862.21625489,6646601.976306722,-946.4401469101,-1015.6541477371632,436.76132818753524 +731564998.5677,-266670082.91669998,116632088.86473384,12065345.136101484,-894.1137963955,-1042.2278147815596,434.87423020420937 +731577429.6466,-277463438.5911,103529985.3004039,17454528.019328482,-842.5521288116,-1065.1449904855244,432.025102246369 +731589860.7254,-287622179.7559,90164251.54222022,22802915.16959525,-792.0582775895,-1084.6925224381744,428.32956548535583 +731602291.8043,-297161170.4098,76574866.95537964,28100673.283509374,-742.8787872590999,-1101.1808118618742,423.8971802912645 +731614722.8832,-306097999.8691,62797844.100719765,33339281.777376838,-695.2060110694999,-1114.9366750602808,418.8292830765226 +731627153.962,-314452324.01540005,48865058.55047122,38511420.00086924,-649.1803660481,-1126.2980374688577,413.2173125631751 +731639585.0409,-322245228.35719997,34804137.12672033,43610835.36723699,-604.8915229065,-1135.6100224257782,407.14148335765697 +731652016.1197,-329498594.8464,20638389.03831837,48632196.827921465,-562.3776339866,-1143.2215640067643,400.66968839421196 +731664447.1986,-336234443.0421,6386783.779543592,53570935.94085481,-521.6218222938,-1149.4810216479389,393.85657618899245 +731676878.2774,-342474208.18020004,-7935998.363175362,58423077.624135226,-482.5456381327,-1154.728332822453,386.7428997523921 +731689309.3563,-348237923.404,-22319378.459366713,63185066.48661654,-445.00045575309997,-1159.280133226535,379.35551234094805 +731701740.4351,-353543298.8244,-36756440.73690009,67853600.97788462,-408.76048786030003,-1163.403656181919,371.7088170030586 +731714171.514,-358404763.5554,-51243085.08171269,72425500.81643234,-373.5254725851,-1167.2768261120393,363.80892886953217 +731726602.5929,-362832663.7047,-65776612.296562724,76897650.025931,-338.9456061324,-1170.9387141727852,355.6618193160481 +731739033.6717,-366832973.518,-80353717.1560607,81267066.96136358,-304.6803963557,-1174.2479178116732,347.2853736192859 +731750221.6427,-370069576.5265,-93505314.17399488,85109529.32855028,-273.9074624535,-1176.6598118672696,339.58490593003575 +731755815.6282,-371558774.8453,-100090165.01283272,86998287.55016851,-258.5213628674,-1177.5614955448248,335.6933548159391 +731761409.6136,-372961919.3893,-106679353.6089161,88865225.48549768,-243.142925121,-1178.2036905072844,331.78502501027106 +731767003.5991,-374279096.847,-113271314.58384019,90710274.6343253,-227.7893996432,-1178.5463031728718,327.8691114889896 +731772597.5846,-375510514.069,-119864271.00128199,92533419.45285511,-212.4861778504,-1178.5542812715012,323.9552658143086 +731778191.5701,-376656538.74579996,-126456269.11176044,94334698.67595968,-197.26497456459998,-1178.1996931877177,320.0531689337816 +731783785.5556,-377717728.4271,-133045222.10757259,96114204.2888612,-182.1615769141,-1177.4630926965851,316.172111143081 +731789379.5411,-378694846.7234,-139628959.73157388,97872078.28314075,-167.2134509351,-1176.3340785533992,312.3206265531378 +731794973.5266,-379588866.1329,-146205278.4806562,99608507.59967129,-152.4574871838,-1174.8110858473847,308.5062166045599 +731800567.512,-380400959.4105,-152771988.98757422,101323717.8344619,-137.9281043332,-1172.900550229627,304.73517905909415 +731806161.4975,-381132481.5074,-159326957.38568854,103017966.26533909,-123.65583965399999,-1170.615644543244,301.0125415495811 +731811755.483,-381784945.1745,-165868138.9007047,104691534.78323394,-109.6664640302,-1167.9747985780125,297.34208530686965 +731817349.4685,-382359992.96220005,-172393603.02663314,106344723.1452104,-95.9805837784,-1165.0001873852157,293.7264370668697 +731822943.454,-382859368.17660004,-178901550.46547213,107977842.88386251,-82.61364460875,-1161.7163267182914,290.16720489675004 +731828537.4395,-383284886.7443,-185390322.73111492,109591212.042795,-69.57623200578,-1158.1488618594267,286.665135921744 +731834131.425,-383638411.32180005,-191858405.62271866,111185150.81567141,-56.87456300404,-1154.3235894131242,283.2202780644641 +731839725.4104,-383921828.4992,-198304427.8848297,112759978.06799467,-44.51107870176,-1150.2657155164948,279.83213336281244 +731845319.3959,-384137029.4091,-204727156.34306392,114316008.67841364,-32.48506677719,-1145.9993308339695,276.4997950939759 +731850913.3814,-384285893.796,-211125488.6359381,115853551.5866266,-20.793264656450003,-1141.5470700607575,273.22206505984286 +731856507.3669,-384370277.3249,-217498444.46775797,117372908.44612089,-9.430412312169,-1136.9299195223548,269.99755019627185 +731862101.3524,-384392001.7975,-223845156.12405586,118874372.75478885,1.610261536134,-1132.1671375874153,266.8247395772493 +731867695.3379,-384352847.894,-230164858.77834356,120358229.37209053,12.33662539692,-1127.2762567305729,263.7020639525774 +731873289.3233,-384254550.0237,-236456880.97793886,121824754.32281017,22.75730182736,-1122.2731414289003,260.62794037290473 +731878883.3088,-384098792.915,-242720635.56229553,123274214.81647475,32.881389437909995,-1117.1720816414147,257.6008045629285 +731884477.2943,-383887209.5935,-248955611.1673217,124706869.41878651,42.71824245522,-1111.9859065319295,254.61913347077746 +731890071.2798,-383621380.451,-255161364.3946405,126122968.3269562,52.277299456570006,-1106.7261073808343,251.68146017606082 +731895665.2653,-383302833.15720004,-261337512.67652464,127522753.71174204,61.56795308803,-1101.402961977636,248.7863829567128 +731906853.2363,-382513434.88850003,-273599730.25591445,130274314.75444609,79.38083738383,-1090.6023940966008,243.11876102557292 +731918041.2072,-381530212.7964,-285740191.04940563,132963344.11895436,96.22806874729,-1079.6465634495207,237.60646559952633 +731929229.1782,-380363593.47720003,-297757447.2016846,135591529.8825763,112.1762328395,-1068.5853253235061,232.24078494811002 +731940417.1492,-379023286.8533,-309650551.24619997,138160468.28977403,127.28682344459999,-1057.4586688538889,227.01399297698188 +731951605.1201,-377518343.5811,-321418957.93266,140671674.06298798,141.6162261161,-1046.2988142665338,221.91922167552138 +731962793.0911,-375857211.00479996,-333062446.8705371,143126589.2938328,155.2159609828,-1035.131851728899,216.95033445810662 +731973981.0621,-374047785.5687,-344581061.3174263,145526590.96312946,168.1330475762,-1023.9790116271404,212.1018113664129 +731985169.033,-372097460.97319996,-355975059.5725713,147872997.2772584,180.41041130050002,-1012.8576471819672,207.36865019882347 +731996357.004,-370013171.6769,-367244876.03059137,150167072.9815741,192.08728874690001,-1001.7819958584773,202.74628367968165 +732007544.975,-367801431.9973,-378391089.77566516,152410033.83242595,203.19960904570002,-990.7637717944864,198.23051125081244 +732018732.9459,-365468371.1509,-389414399.0473422,154603050.37714294,213.7803417063,-979.8126294615265,193.81744348628703 +732029920.9169,-363019764.5722,-400315600.31530404,156747251.17264825,223.8598081785,-968.9365292607346,189.50345712840604 +732041108.8879,-360461061.96919996,-411095571.0215659,158843725.5573738,233.4659577856,-958.1420283403207,185.28515884989918 +732052296.8589,-357797412.47859997,-421755255.2306606,160893526.05260727,242.62461053570001,-947.4345137916727,181.15935594238357 +732063484.8298,-355033687.27140003,-432295651.62643456,162897670.46653748,251.35967050820003,-936.8183911054692,177.12303254550014 +732074672.8008,-352174499.9077,-442717803.4177201,164857143.76563862,259.6933133481,-926.297237866846,173.17333040879984 +732097048.7427,-346187013.58650005,-463211718.7611559,168645862.53618374,275.2373760803,-905.5507487754072,165.52305349254794 +732119424.6847,-339867367.3032,-483245943.8536215,172266965.02175948,289.4054220768,-885.2114115104856,158.18827923741918 +732141800.6266,-333244867.67509997,-502829704.59651804,175727301.03228492,302.32713619860004,-865.2885397000313,151.15052063737258 +732164176.5686,-326346102.1373,-521972374.32212055,179033324.08604795,314.11634195659997,-845.7862687144172,144.39281796567 +732186552.5105,-319195264.8327,-540683373.7035948,182191123.79065892,324.8734684272,-826.7049220231759,137.89956820038842 +732208928.4524,-311814433.9152,-558972098.4568917,185206454.47399247,334.6875411461,-808.0420337927391,131.65638862693822 +732228484.9862,-305191139.4938,-574617907.5942173,187729454.22676083,342.555122806,-792.0699011554319,126.39421176953462 +732234275.3077,-303201224.5324,-579190701.1336288,188456898.08216977,344.7651083839,-787.4008819576703,124.86963928940423 +732277931.5319,-287811565.381,-612810703.423312,193664589.0874688,359.81447344130004,-753.0686035999968,113.84213164555885 +732326438.4476,-270012894.5064,-648449703.2910957,198907712.54005933,373.5669347726,-716.6718303914454,102.48828129829658 +732374945.3634,-251613142.6417,-682366272.1495347,203621195.0433002,384.6724267491,-682.0363868403103,91.98992094701609 +732428841.9365,-230607140.8186,-718132450.476702,208285130.59034163,394.40034043279996,-645.5137057008452,81.23117609707566 +732482738.5095,-209140845.50289997,-751983297.3464673,212392860.923571,401.82281319370003,-610.9430187238341,71.33576070620012 +732536635.0826,-187327871.7256,-784020960.4096805,215988688.27786744,407.3234994346,-578.2114179051238,62.22289292471501 +732596520.1638,-162799136.6802,-817608531.2299409,219432474.92187423,411.57435855520004,-543.8661802017166,52.929249017351566 +732656405.2449,-138065345.0027,-849199537.596016,222343825.80374765,414.22972214159995,-511.50683337568955,44.42716257501036 +732716290.3261,-113212215.1575,-878908460.6032466,224767732.37942457,415.6088279447,-480.98484687906875,36.63718012712326 +732776175.4073,-88307883.94008,-906840869.2104051,226744604.8261185,415.98070372219996,-452.15113677009487,29.485528867611578 +732836060.4885,-63405740.21162,-933093401.5755005,228310579.89805198,415.5696741512,-424.8567800918876,22.903182467275883 +732866003.0291,-50968770.89574,-945617484.6017493,228949673.09802565,415.1295441094,-411.74082637056716,19.80516939396415 +732895945.5696,-38546966.743930005,-957753828.8050137,229497796.86337376,414.559798313,-398.95495239190893,16.825670653220982 +732925888.1102,-26143942.79569,-969512052.9671466,229958389.54589507,413.8778642889,-386.4815504013156,13.957373059002009 +732955830.6508,-13762821.98027,-980901255.1766815,230334675.23709774,413.0992097817,-374.3034607146459,11.193279780805113 +732985773.1914,-1406291.553607,-991930027.2743868,230629673.35729513,412.2374927658,-362.40403825662264,8.526717626264315 +733015715.732,10923344.97982,-1002606471.1178886,230846208.42029563,411.30471295760003,-350.7672071150572,5.951341335255549 +733030687.0023,17077451.36845,-1007814972.1230007,230925884.0917381,410.8150079629,-345.0424057783555,4.695954913943851 +733038172.6374,20151728.49066,-1010387195.4733051,230958712.80733362,410.5648569633,-342.2025823524138,4.076018178239536 +733041915.455,21688161.68012,-1011665349.3059376,230973391.6866355,410.43851886470003,-340.7882137290934,3.767950101229971 +733043786.8638,22456200.56664,-1012302442.7899704,230980299.32215732,410.3750416639,-340.08240266758185,3.6143863466242436 +733044722.5682,22840175.41543,-1012620494.4227967,230983645.44541407,410.3432269473,-339.7298388924584,3.5377214456013633 +733045190.4204,23032151.67048,-1012779396.5555862,230985291.61561054,410.3273006742,-339.55364224959715,3.499418165203295 +733045424.3465,23128137.00309,-1012858816.7120484,230986107.9814505,410.3193328232,-339.46556521513656,3.480273808250587 +733045541.3095,23176128.97036,-1012898519.0641978,230986514.4850953,410.3153477209,-339.42153201666,3.47070344937174 +733045658.2726,23224120.47147,-1012938216.2666095,230986919.86946815,410.3113618347,-339.377502362896,3.4611343032161415 +733045892.1987,23320102.07484,-1013017595.2230182,230987727.28107104,410.3033877125,-339.2894536856639,3.441999647627341 +733046360.0509,23512059.683679998,-1013176291.3529462,230989328.6785217,410.28743008379996,-339.1133988291166,3.4037448739050262 +733047295.7553,23895952.48932,-1013493436.576932,230992477.8036062,410.2554774015,-338.7614589139136,3.327293402839061 +733049167.1641,24663648.28963,-1014126739.6179291,230998561.62658373,410.1914232376,-338.05825673001726,3.1746221771001046 +733052909.9816,26198679.356519997,-1015389401.9747183,231009873.5809599,410.0627268488,-336.65455061879834,2.870201896995951 +733060395.6168,29267289.232470002,-1017898998.6600057,231029090.7332273,409.8030379672,-333.85783331484095,2.2650127194881833 +733075366.8871,35398622.060449995,-1022855649.393402,231054023.9989407,409.2749099231,-328.3064019506195,1.0689455330399795 +733105309.4277,47637163.5026,-1032521650.219145,231050861.82640022,408.1868966097,-317.3654760042894,-1.2682349347153519 +733135251.9683,59842560.90589,-1041863149.7466738,230978765.0659862,407.0621204861,-306.62926865463953,-3.5363314983486163 +733165194.5088,72013803.51203,-1050886083.5060524,230839730.18525493,405.9064422499,-296.08491155617236,-5.740110258021943 +733195137.0494,84150042.98337,-1059596011.266196,230635615.22208342,404.72486815070005,-285.72017070887796,-7.884053901446862 +733225079.59,96250569.36252,-1067998135.6788566,230368148.0367146,403.52165125880003,-275.523422614877,-9.97237758233284 +733255022.1306,108314789.90010001,-1076097320.144433,230038934.0734921,402.30038135399997,-265.48362503154385,-12.009045901923471 +733314907.2118,132332418.6862,-1091404726.9151418,229201118.39351952,399.8151858854,-245.83341540913815,-15.942127312428056 +733374792.293,156199874.77620003,-1105550969.7311125,228132825.3733932,397.28745112359996,-226.69150179041912,-19.710668729994154 +733434677.3741,179914984.8991,-1118564328.6057327,226843162.8433201,394.7286729452,-207.9868340134188,-23.339130913248226 +733494562.4553,203476093.3262,-1130469009.143266,225339848.67688864,392.1447783668,-189.65420387588307,-26.849549096477645 +733554447.5365,226881749.1367,-1141285461.2084804,223629343.51210335,389.53674812310004,-171.6332346696941,-30.26193576052021 +733614332.6177,250130418.9195,-1151030642.9852712,221716962.24090496,386.90085963620004,-153.86757748696814,-33.59458459458002 +733674217.6989,273220205.10209996,-1159718244.4184966,219606970.54846278,384.2286495407,-136.30436436383147,-36.86426510218901 +733734102.78,296148556.6761,-1167358886.6814907,217302673.2694734,381.506697406,-118.89395105836549,-40.086302537691616 +733793987.8612,318911962.2499,-1173960314.5035923,214806501.1978231,378.71633517019995,-101.58996632593545,-43.274543893692105 +733853872.9424,341505629.27169997,-1179527602.0019484,212120103.4824872,375.8333912428,-84.34966704866677,-46.44121638013983 +733861323.689,344304504.1938,-1180148088.1850994,211772617.51323286,375.46681209639996,-82.20717058474153,-46.83423276613361 +733883087.4275,352464322.47040004,-1181869136.3845866,210740844.71906102,374.3846188785,-75.95046552550505,-47.98142673903518 +733938413.0797,373099515.1685,-1185631219.7863185,208005642.55360103,371.5471576832,-60.04634174332915,-50.89457428964407 +733993738.7319,393573770.3205,-1188513019.8816285,205109296.32545102,368.5615504179,-44.12491212345356,-53.80750754877529 +734055211.6788,416123061.4674,-1190680705.6949892,201702009.15302753,365.0301525203,-26.39056843756207,-57.04833302723718 +734116684.6257,438447136.8706,-1191756308.4149425,198095304.44397,361.2257701202,-8.591960728855106,-60.29555269496662 +734178157.5726,460527633.8107,-1191735528.161327,194288812.57913876,357.0966884003,9.280694106729786,-63.54781816969593 +734239630.5195,482342984.4548,-1190613760.967466,190282355.38893694,352.5907131089,27.227430715620624,-66.80024573272391 +734301103.4664,503868456.4972,-1188386706.7874753,186076162.17059326,347.6574859036,45.23832034499402,-70.04448939926493 +734369406.7407,527411873.55230004,-1184611805.8013594,181169406.75609183,341.6192119046,65.30136564690295,-73.62545669937799 +734403558.3778,539023603.4779,-1182210219.9030807,178624627.5668975,338.36386039689995,75.34126261609347,-75.40071849527972 +734437710.015,550521354.4344,-1179465779.5418866,176019448.18437916,334.94351132009996,85.3786117305875,-77.16214895770585 +734471861.6522,561899412.8698,-1176378690.417471,173354391.5654077,331.3537278514,95.40634422395794,-78.90675904082082 +734506013.2893,573151931.5709,-1172949411.9202216,170630085.24400097,327.5911419307,105.41666982276212,-80.63141924629899 +734540164.9265,584272967.5774001,-1169178681.1152427,167847265.54011518,323.6535185373,115.40113051283477,-82.33289391618317 +734574316.5637,595256521.5626,-1165067534.407986,165006780.60215974,319.5397957018,125.35066581107762,-84.00787509574188 +734608468.2008,606096578.2132,-1160617326.7741737,162109592.3099805,315.2500986234,135.2556972813152,-85.65301595483213 +734642619.838,616787146.6464,-1155829747.6397717,159156777.03277445,310.78572878439996,145.10623996762484,-87.26496430487384 +734659695.6566,622074517.0982001,-1153310066.0935583,157659876.87131268,308.48876249939997,150.00788147120676,-88.05745081859261 +734668233.5658,624703402.4971999,-1152018874.4310055,156906372.2476251,307.32425216679997,152.4522296786391,-88.4501420897016 +734672502.5205,626014105.4226,-1151365457.2719717,156528365.23242837,306.7380147092,153.67271488262296,-88.6455774639081 +734674636.9978,626668516.9898,-1151036795.4809546,156339049.18790185,306.44390368480003,154.28252642253057,-88.74306482110038 +734675704.2365,626995487.1822,-1150871976.552711,156244313.17539763,306.2966005216,154.58732332340094,-88.79175057292335 +734676237.8558,627158913.3036001,-1150789445.1136875,156196925.68940765,306.2228870809,154.73969441865472,-88.81607892416582 +734676504.6655,627240611.6109,-1150748148.9044592,156173227.07854342,306.1860149026,154.81587311022741,-88.82823946323916 +734676638.0703,627281457.075,-1150727493.1783042,156161376.55661076,306.16757494980004,154.85396073979504,-88.83431882297432 +734676771.4751,627322300.0790999,-1150706832.3714268,156149525.22381008,306.14913242160003,154.89204722445376,-88.84039757592423 +734677038.2848,627403978.7052001,-1150665495.5145102,156125820.12539095,306.1122396397,154.96821675665507,-88.85255326069391 +734677571.9041,627567306.4205,-1150582760.8354468,156078400.20027995,306.0384231813,155.12054205487678,-88.87685734032019 +734678639.1428,627893843.6265,-1150417047.6517067,155983521.45608962,305.8906667408,155.42513744905187,-88.92543629716896 +734680773.6201,628546444.5252999,-1150084646.2520573,155793608.5351811,305.5946602069,156.03410632644497,-89.0224770587396 +734685042.5748,629849747.358,-1149415945.5550385,155413162.13761288,305.0006761131,157.25114763285302,-89.21608723994419 +734693580.4841,632448717.9860001,-1148062970.6337523,154649796.57181138,303.8048533408,159.68157415304108,-89.60140046281589 +734710656.3026,637615807.6317999,-1145294875.7468514,153113251.39239395,301.382038769,164.52724319116552,-90.36422580703221 +734744807.9398,647824122.888,-1139511369.3185298,150001542.89421666,296.4139345009,174.15343148700228,-91.85732178807402 +734778959.577,657860044.6645,-1133400708.0346735,146839617.88836175,291.28728251250004,183.68460353263998,-93.30454077462065 +734813111.2141,667718267.1048,-1126966296.4596856,143629091.20023113,286.0086079809,193.11153331221675,-94.70310912784609 +734847262.8513,677393722.6076001,-1120211840.4345684,140371667.90823185,280.5853286729,202.42584110876217,-96.05052453202968 +734881414.4884,686881611.2934,-1113141314.4141223,137069133.06789267,275.0256938,211.62021111055077,-97.34461538829044 +734915566.1256,696177428.1001,-1105758921.8415403,133723339.44002795,269.33870486060005,220.68857857420673,-98.5835976755308 +734949717.7628,705276986.6875,-1098069049.8281102,130336193.38107282,263.53401013869995,229.62628017237677,-99.76612537860812 +734983869.3999,714176439.4735,-1090076218.982248,126909639.1330095,257.6217671759,238.4301639459374,-100.89133060905903 +735018021.0371,722872292.0506,-1081785030.797648,123445642.01587558,251.6124735295,247.0986584928594,-101.95885102720607 +735052172.6742,731361411.584,-1073200112.9783672,119946170.8706482,245.51676871659998,255.63180029067573,-102.96884199298562 +735086324.3114,739641027.9097999,-1064326064.6821121,116413180.43690598,239.3452152597,264.03121985403783,-103.9219725932996 +735154627.5857,755562436.7008,-1045728511.2179317,109254287.5855524,226.81505538649998,280.44302246660715,-105.66276162142667 +735222930.8601,770621169.7211,-1026026627.0283613,101983691.45833486,214.09638829550002,296.3760123956919,-107.19571346579153 +735284403.8069,783427488.2378,-1007376219.1930119,95355867.45410866,202.5381064549,310.35593811426526,-108.414139590445 +735345876.7538,795520897.2749,-987875505.1252215,88657388.46244925,190.90606709489998,324.0497250369926,-109.49738882638871 +735407349.7007,806897444.4331001,-967540321.7923508,81896016.73921406,179.2168848576,337.5148484845619,-110.46330803946323 +735468822.6476,817553776.1386,-946382924.2173591,75078422.71587312,167.4735376072,350.80984466653086,-111.32939313945164 +735530295.5945,827486329.066,-924412010.9965615,68210236.95259684,155.66645995450003,363.99148368339814,-112.11184962602857 +735551673.1898,830770037.8642,-916581918.4543004,65810813.096086204,151.5420812932,368.55877579840944,-112.3670414860212 +735570487.8057,833587023.791,-909609848.4718361,63694609.88682479,147.90292418029998,372.57415730837295,-112.5851458784725 +735642056.85,843674498.9645001,-882398937.7246556,55608640.75942904,133.964596878,387.83559262353435,-113.36525890084218 +735713625.8943,852757831.9807,-854095054.8236599,47469312.70674622,119.8319136772,403.1280904032579,-114.07862310626493 +735785194.9385,860820794.5935999,-824693775.6731987,39280944.631144255,105.4383955497,418.5115879012377,-114.73737454010123 +735856763.9828,867842056.1931001,-794186711.7258637,31047126.17099315,90.70816087653,434.0371161871501,-115.34982329038557 +735928333.0271,873794544.9231,-762562106.1994464,22770977.14021218,75.55667608079,449.74796466373186,-115.92084982481913 +735964117.5492,876359816.2626001,-746326258.4392157,18617933.055091053,67.79410006427,457.6845609761879,-116.19149414023002 +735999902.0714,878644820.0191,-729805348.9036865,14455381.409152478,59.89033278122,465.68072643591813,-116.45220142495519 +736035686.5935,880644267.0039,-712997179.9662384,10283681.804257005,51.83201799978,473.74008059096536,-116.70271335079643 +736071471.1156,882352376.1098,-695899431.5484431,6103206.725832254,43.60500549554,481.86585232448635,-116.9425688499191 +736107255.6378,883762844.4043,-678509675.3750172,1914348.9903131425,35.19426518275,490.0608492518675,-117.17108810470319 +736143040.1599,884868813.9915999,-660825390.9403813,-2282470.018452555,26.58379438802,498.32740869034023,-117.38734992908324 +736178824.682,885662835.483,-642843983.5132935,-6486791.202233881,17.75652109251,506.66732831557215,-117.59016207410717 +736214609.2042,886136827.9734,-624562805.0109863,-10698107.40735057,8.694206080938,515.0817750140088,-117.7780241295612 +736254369.7843,886277469.9408,-603895545.0773951,-15384859.633501858,-1.6744640192409999,524.5190528086774,-117.96695827076744 +736294130.3645,885999127.3404,-582851223.7492992,-20078660.57905093,-12.38613442119,534.0481266076948,-118.13200422690943 +736338308.7869,885181087.8976,-559022025.9950562,-25301011.18935603,-24.727946236100003,544.7407440272755,-118.28265773565357 +736382487.2092,883806773.5504,-534718111.8487515,-30529143.34113109,-37.5771639258,555.5377144470328,-118.39253973515235 +736404576.4204,882903758.118,-522386739.4204137,-33144775.648186684,-44.20732773068,560.9724834157389,-118.42975969378244 +736415621.026,882396933.3166001,-516175971.8656982,-34452864.38345677,-47.576609124680004,563.6982898526285,-118.44345257596022 +736421143.3288,882129515.2199999,-513059291.09488976,-35106960.72444433,-49.275162712669996,565.0632033308358,-118.4490032422368 +736423904.4802,881992282.2221999,-511498123.2553354,-35434019.77936861,-50.12796383213,565.746149793871,-118.45144594796159 +736425285.0559,881922781.8903,-510716832.07980615,-35597551.75867379,-50.555251281189996,566.0877437908836,-118.4525830346111 +736425975.3438,881887810.4085001,-510326009.62954056,-35679318.32727295,-50.76911745687,566.2585707687506,-118.45313037124414 +736426320.4877,881870269.2939,-510130554.18287176,-35720201.75197801,-50.87610624877,566.3439917258215,-118.4533987202884 +736426493.0597,881861484.8874999,-510032815.4033077,-35740643.49892667,-50.92961458216,566.3867040679262,-118.4535315627407 +736426579.3457,881857089.2214,-509983943.2493465,-35750864.38102093,-50.95637223464,566.4080607044759,-118.45359765079182 +736426665.6316,881852691.2463,-509935069.2526779,-35761085.26879156,-50.98313221151,566.4294176512187,-118.45366351637549 +736426838.2036,881843888.3687,-509837315.7308235,-35781527.061205745,-51.036659140119994,566.4721324747692,-118.45379458057167 +736427183.3475,881826254.8976,-509641786.5723641,-35822410.71371284,-51.14374090814,566.5575658386382,-118.45405403782127 +736427873.6354,881790877.0474,-509250639.79090565,-35904178.28421286,-51.35801617887,566.728447406131,-118.45456225056483 +736429254.2111,881719677.3548001,-508467992.3214043,-36067714.452891946,-51.787014392,567.070269683093,-118.4555357263155 +736432015.3625,881575499.1104,-506901281.37725437,-36394790.62355968,-52.64680737872,567.7541490487243,-118.45730973497784 +736437537.6653,881280003.9439,-503762192.4707174,-37048956.051026106,-54.373626764719994,569.122832725722,-118.46015672282904 +736448582.2709,880660271.0036,-497461323.20819163,-38357320.88970268,-57.8565794028,571.8637813676619,-118.46297092900123 +736470671.4821,879304299.7271999,-484768642.14732397,-40974033.1733596,-64.94282713087999,577.3589885782832,-118.45644896787518 +736514849.9045,876113534.7885001,-459018279.40104103,-46206051.0894286,-79.62209770115,588.3933848729026,-118.38931719989377 +736559028.3268,872258452.6759,-432779502.47618437,-51433305.907737285,-95.02736597601,599.4653693029106,-118.23832417812231 +736603206.7492,867705597.5696,-406051309.9887539,-56651743.866301835,-111.2217101639,610.5439625839982,-117.98725681320036 +736647385.1716,862418663.8580999,-378834225.3202636,-61856538.01439436,-128.2710073802,621.5909961689745,-117.61729207297388 +736691563.594,856358380.9525,-351130629.9433239,-67041968.69099744,-146.2435406633,632.5604021031884,-117.10680839463407 +736735742.0164,849482416.0378001,-322945127.71698785,-72201296.06549515,-165.2095862379,643.397522993882,-116.43121558766063 +736779920.4388,841745294.9161,-294284939.5503127,-77326625.46987246,-185.2410148848,654.038423140403,-115.56279796976696 +736824098.8612,833098339.5129,-265160329.15208372,-82408765.96058892,-206.4109368449,664.409164359322,-114.47055973171706 +736868277.2836,823489620.0772,-235585062.50592285,-87437081.5973614,-228.7934122815,674.4249887277699,-113.12005545908866 +736912455.706,812863918.2481999,-205576906.84059662,-92399334.85631521,-252.4632236162,683.9893446845167,-111.47318852136661 +736956634.1283,801162699.5123,-175158176.76085016,-97281520.05442321,-277.495695256,692.9926706413962,-109.48795426565795 +737000812.5507,788324092.8184,-144356342.4165674,-102067683.47548498,-303.96651648349996,701.3108552828717,-107.11810884360449 +737089169.3955,758970495.2385,-81743219.58931789,-111277191.6134864,-361.5261802821,715.3104193513095,-101.01576364500576 +737177526.2403,724241425.6555,-18089009.98709095,-119853246.70700242,-425.7410695655,724.6172800193365,-92.69261068137709 +737257047.4006,687883300.9228,39688475.032195464,-126848592.99549016,-489.6915716434,727.5168236221123,-82.82645614748066 +737304714.3584,663566212.3946,74342990.30070399,-130629040.96951008,-530.9761781515,726.0622272882122,-75.61643024824309 +737304714.3584,663566199.455,74342993.3634826,-130629038.64684527,-530.9761360217,726.0622335138917,-75.6164376078857 +737329542.8071,650106026.069,92348318.49827231,-132455080.93474132,-553.3817353931,724.1789252474773,-71.42388692833975 +737365992.3696,629319489.9552,118671133.53060746,-134937677.5644914,-587.408213882,719.8343558627566,-64.67506874687987 +737402441.9322,607267994.0275,144798136.64787054,-137160533.15985292,-622.7911581023,713.3919738874737,-57.16041381399981 +737438891.4948,583902098.9588,170648020.62535527,-139094464.02482522,-659.5282488603,704.5811354383018,-48.8096052708531 +737475341.0574,559172702.0881001,196129062.6448102,-140707658.1911015,-697.6028721513001,693.1006192845157,-39.548981770707826 +737511790.6199,533031610.3247,221137974.28436244,-141965585.78414965,-736.9812391191,678.616799754149,-29.30354959171291 +737548240.1825,505432222.1,245558697.40921164,-142831010.30172378,-777.60921395,660.7625140241327,-18.000540991096244 +737588739.6965,473002231.3178,271844292.6129065,-143283811.17032933,-824.1210260055,636.4827416225999,-4.123028657207556 +737608989.4535,456074010.3261,284592728.9764872,-143292188.71377653,-847.8744207592,622.4119222029739,3.356524652739637 +737629239.2104,438661693.03889996,297042280.34162635,-143145396.09409288,-871.9293729010999,606.9494986813751,11.202989619930662 +737649488.9674,420759441.9299,309163945.64064145,-142835993.88053638,-896.2586389529,590.0139393359028,19.416587429560906 +737669738.7244,402362014.56560004,320927049.02550685,-142356585.50629947,-920.8305793135,571.5213924558539,27.992692655481505 +737689988.4814,383464859.6101,332299195.54174256,-141699926.6343973,-945.6084609171,551.3859953762162,36.92068182794793 +737710238.2384,364064227.99009997,343246234.19833726,-140859059.4564229,-970.549594179,529.5202197070892,46.182670863965996 +737730487.9954,344157304.1982,353732227.6709245,-139827473.1274072,-995.6043155367,505.83521969463266,55.75215446741731 +737750737.7524,323742358.62,363719429.0016577,-138599292.97749895,-1020.714791516,480.24118950165325,65.59257086102639 +737770987.5093,302818927.0219,373168266.04431856,-137169499.00937262,-1045.8136687190001,452.64767091255834,75.65580854905363 +737791237.2663,281388017.9037,382037330.08324295,-135534175.5014056,-1070.822568209,422.96382707372464,85.88064756143132 +737811487.0233,259452352.2342,390283371.1833835,-133690792.95024037,-1095.650430903,391.09861322157406,96.19112152536235 +737831736.7803,237016638.8415,397861294.3381637,-131638524.2039908,-1120.191700481,356.9608581365771,106.49472902286337 +737851986.5373,214087887.6772,404724156.465931,-129378599.5596931,-1144.3242441920002,320.4592269554025,116.68041860519301 +737872236.2943,190675770.176,410823162.5997434,-126914705.54904625,-1167.9068774309999,281.5020673245832,126.61621037523282 +737892486.0513,166793035.9087,416107656.8988248,-124253436.78727219,-1190.7761711800001,239.99723086587124,136.14633177337856 +737912735.8082,142456004.5483,420525111.3708693,-121404811.91971698,-1212.742074856,195.85198303027778,145.08775566842806 +737922860.6867,130123348.0106,422391769.27747035,-119914451.97930336,-1223.318098556,172.76013050902196,149.2720634115026 +737932985.5652,117685164.5607,424021116.62621254,-118382865.74186303,-1233.581657377,148.9733396401461,153.2261167717309 +737943110.4437,105144789.8228,425406059.175101,-116812546.63629422,-1243.4982558479999,124.48016999801902,156.91747957751835 +737953235.3222,92505925.52166,426539388.0405517,-115206329.1771089,-1253.0299924590001,99.26944153816177,160.31119047628468 +737963360.2007,79772676.55078,427413783.20105773,-113567415.15992773,-1262.1350314069998,73.33041956726939,163.3696436234275 +737973485.0792,66949593.907510005,428021819.2945355,-111899400.89873405,-1270.766979609,46.65308015793407,166.05250344049614 +737983609.9577,54041724.433199994,428355974.5954653,-110206305.07780856,-1278.874161055,19.22848253111915,168.31667492217045 +737993734.8362,41054668.32137,428408644.40594584,-108492596.48534395,-1286.398784526,-8.95071957683654,170.11635802495354 +738003859.7147,27994645.778279997,428172160.54076403,-106763220.65245938,-1293.2760096480001,-37.889590096838454,171.40322328130333 +738013984.5932,14868573.47248,427638818.82171476,-105023623.8807687,-1299.432926232,-67.59000173276996,172.12675642708123 +738024109.4717,1684151.6515630002,426800917.10478467,-103279772.68494284,-1304.787481072,-98.04945768961588,172.2348310421837 +738034234.3502,-11550037.83787,425650806.81587434,-101538165.98902234,-1309.247410482,-129.259594056906,171.67457999257584 +738044359.2287,-24824423.135190003,424180961.4565434,-99805836.64593028,-1312.70927063,-161.20431818157618,170.39364637478744 +738054484.1071,-38128325.16281,422384065.95390904,-98090338.00171782,-1315.0577005129999,-193.85755311107465,168.34189984827748 +738059546.5464,-44787674.825119995,421360773.7689323,-97241395.1963636,-1315.774979681,-210.43833820858546,167.01245967050932 +738064608.9856,-51449834.93208,420253130.81969386,-96399710.39480299,-1316.165104208,-227.1805869085648,165.4737006870372 +738069671.4249,-58113104.494389996,419060337.7272727,-95566354.99321441,-1316.210268251,-244.0769937420988,163.72109110964377 +738074733.8641,-64775690.681719996,417781635.0289531,-94742421.66715965,-1315.891993582,-261.1190746471199,161.75077392394664 +738079796.3034,-71435705.54337,416416309.41571885,-93929020.65338041,-1315.1911975649998,-278.29706382976815,159.5596908046 +738084858.7426,-78091163.17929,414963700.4769394,-93127275.37185682,-1314.088283521,-295.599812260087,157.14571451750803 +738089921.1819,-84739977.41933,413423207.9500066,-92338317.36186896,-1312.5632562409999,-313.0146910027321,154.5077882090798 +738094983.6211,-91379960.1554,411794299.4408155,-91563280.49986751,-1310.5958648510002,-330.5275027327636,151.64606956081676 +738100046.0604,-98008820.46986,410076518.56373346,-90803294.48009183,-1308.1657748119999,-348.12240535728904,148.56207712535505 +738105670.9929,-105358261.21440001,408063190.89698446,-89977877.29214153,-1304.898425732,-367.7471760854307,144.8784609212114 +738111295.9254,-112687582.6639,405939312.9405679,-89173926.63524786,-1301.0076932709999,-387.42499343217133,140.93074933247775 +738116920.8578,-119993204.0269,403704667.38253194,-88392903.27948752,-1296.4673616119999,-407.126588357746,136.72821185372484 +738122545.7903,-127271400.98439999,401359208.9872161,-87636207.73109387,-1291.252699118,-426.82005962678664,132.28303319042922 +738128795.7153,-135321425.51500002,398623357.0689512,-86825574.05154023,-1284.640216363,-448.65021898404837,127.07801680319405 +738135045.6403,-143327361.25710002,395751363.45824677,-86048283.25580215,-1277.139925094,-470.3772208878294,121.61782563194888 +738141990.0014,-152164294.7458,392401584.92603374,-85225553.47956762,-1267.737995274,-494.33200118518255,115.28870576863493 +738148934.3625,-160931970.148,388886350.26862705,-84447600.86379285,-1257.1905225169999,-518.0160497231099,108.73050783715523 +738155878.7237,-169622386.1753,385207814.45852464,-83715828.59279342,-1245.4861043859999,-541.3499288800368,101.99832952430755 +738162823.0848,-178227503.1126,381368687.70211977,-83031236.26077753,-1232.625262383,-564.2534650137744,95.15313223629006 +738169767.4459,-186739329.3145,377372234.2426252,-82394382.99795431,-1218.621421349,-586.6475794288293,88.26058451010678 +738173239.6264,-190957796.6494,375316178.3207109,-82093905.75518851,-1211.198743143,-597.6296699623128,84.81801062082576 +738174975.7167,-193057245.6033,374273917.211493,-81948144.66441244,-1207.384101313,-603.0629482818288,83.10148590893533 +738175843.7618,-194104471.8214,373749258.01949906,-81876380.69097073,-1205.4512336809998,-605.7646600206584,82.2448975489861 +738176277.7844,-194627453.9107,373486050.06534195,-81840777.40205301,-1204.4784507279999,-607.111724571312,81.81708238925026 +738176494.7957,-194888786.3976,373354226.98013866,-81823045.36982568,-1203.990476823,-607.7843016655979,81.60330213098447 +738176603.3013,-195019412.9016,373288260.72103715,-81814196.74860339,-1203.746094882,-608.1203505039217,81.49644477796696 +738176657.5542,-195084716.20679998,373255263.9196556,-81809776.7857603,-1203.623805251,-608.2883148730407,81.44302442671525 +738176711.807,-195150012.8757,373222258.00676346,-81805359.72094668,-1203.50144987,-608.4562391714452,81.38960966201182 +738176820.3126,-195280586.2889,373156218.8560389,-81796534.28414953,-1203.256541929,-608.7919674443152,81.28279700127575 +738177037.3239,-195541653.3224,373024031.31305915,-81778918.17376958,-1202.765938036,-609.4629417152989,81.06924020406632 +738177471.3465,-196063467.4205,372759219.74993044,-81743824.93496655,-1201.781583288,-610.8029539246522,80.64240826989618 +738178339.3916,-197105809.3788,372227854.6548472,-81674193.79687616,-1199.800327232,-613.4751754934044,79.7899315277686 +738180075.4819,-199185297.7437,371158188.49272054,-81537147.75068823,-1195.78796949,-618.7879527965773,78.09020997705585 +738182822.9692,-202461840.11290002,369446622.5013234,-81326273.42743188,-1189.304031364,-627.1073935118895,75.41684803130508 +738184230.6942,-204133675.5014,368560854.3019225,-81221065.77494995,-1185.919145736,-631.3269471451035,74.05617521492653 +738186077.5523,-206319751.6471,367389804.9207665,-81085935.13123852,-1181.414967273,-636.8174336503528,72.28161902668148 +738187000.9814,-207409653.8077,366800489.70682776,-81019595.86437148,-1179.136226622,-639.543069432996,71.39920867937792 +738187462.6959,-207953813.76029998,366504889.7761748,-80986731.40237062,-1177.990259059,-640.9009267878805,70.95929109417128 +738187924.4105,-208497443.5928,366208663.67093337,-80954069.85314748,-1176.8399189259999,-642.2554552449251,70.52025866518386 +738188386.125,-209040541.2904,365911812.9314594,-80921610.8038154,-1175.685225688,-643.6066386263997,70.08213138821085 +738188616.9823,-209311889.96150002,365763153.8072011,-80905457.08508469,-1175.106252797,-644.2809709086854,69.86341341271455 +738188732.4109,-209447514.1432,365688765.89145046,-80897399.15377682,-1174.816360866,-644.6178213287337,69.7541419285929 +738188790.1252,-209515313.682,365651557.35576534,-80893374.91716151,-1174.671313665,-644.7861675005108,69.69952819819079 +738188818.9824,-209549210.31170002,365632949.4448222,-80891363.98079221,-1174.5987647739998,-644.8703208122517,69.67222685483992 +738188847.8395,-209583104.8477,365614339.10553193,-80889353.83216071,-1174.5261990289998,-644.9544609367855,69.6449291977722 +738188876.6967,-209616997.28939998,365595726.3384487,-80887344.4712457,-1174.453616434,-645.0385878704011,69.61763523202737 +738188905.5539,-209650887.6363,365577111.1438634,-80885335.89787897,-1174.381016994,-645.12270160914,69.59034496221079 +738188963.2682,-209718662.0436,365539873.4739723,-80881321.11344212,-1174.235767595,-645.290889489117,69.53577552647215 +738189078.6968,-209854185.6998,365465369.02123827,-80873300.99071363,-1173.9450668739998,-645.627106742834,69.4266812205089 +738189309.5541,-210125132.2688,365316243.74944437,-80857298.50588459,-1173.362858835,-646.2989063706834,69.20867195364772 +738189771.2686,-210666621.56599998,365017528.42539066,-80825444.38460854,-1172.195225206,-647.6399593100855,68.77337944666928 +738190232.9832,-211207570.762,364718194.7036254,-80793791.01816246,-1171.023318455,-648.9776043216757,68.33907140343658 +738190694.6977,-211747977.88910002,364418244.16131914,-80762337.9469603,-1169.847159098,-650.3118261649256,67.90576747216997 +738191618.1268,-212827158.1137,363816498.96028316,-80700030.80643427,-1167.4821656459999,-652.9699403469879,67.04225015491821 +738193464.9849,-214978928.19840002,362605676.86963314,-80577798.86739084,-1162.7020724949998,-658.2444416368189,65.32812063006361 +738195311.8431,-217121809.28379998,361385165.4615322,-80458716.03483286,-1157.8563283189999,-663.4625567175033,63.63221946097613 +738197158.7012,-219255681.43850002,360155069.6680908,-80342747.52793483,-1152.946363454,-668.6234307055993,61.95575174535571 +738199005.5594,-221380427.41390002,358915495.9520837,-80229856.3635717,-1147.97365323,-673.7262615276913,60.29989685167425 +738202699.2757,-225602085.7439,356408347.6505845,-80013147.42283955,-1137.846106124,-683.7548553178476,57.054602038098494 +738206392.992,-229785902.85000002,353864599.1202858,-79808251.25591588,-1127.486279118,-693.5430128905108,53.905177898498124 +738210086.7083,-233931044.8409,351285146.9232027,-79614798.23031689,-1116.907293719,-703.0863026585382,50.85993234609353 +738213780.4246,-238036727.1093,348670902.3242652,-79432389.09609136,-1106.122698466,-712.3811959787399,47.9265867770695 +738217474.1409,-242102215.7198,346022787.956503,-79260597.23303594,-1095.1463645679999,-721.4250658637519,45.11223288966025 +738221167.8572,-246126828.3732,343341734.5104984,-79098971.05511747,-1083.992380978,-730.216175700761,42.423297984580614 +738224861.5735,-250109935.1331,340628677.4771297,-78947036.47046962,-1072.674951042,-738.7536579363363,39.86551963945854 +738232249.0061,-257949373.5284,335110299.8011104,-78670248.94912916,-1049.606536662,-755.0684306268339,35.16283997056681 +738239636.4387,-265616536.731,329475118.170003,-78426091.64881006,-1026.053325442,-770.378515674155,31.035867380238898 +738247023.8713,-273108246.07240003,323730485.65914875,-78210229.32928723,-1002.123464561,-784.7043329835303,27.505024326861587 +738254411.3039,-280422099.5935,317883568.2041061,-78018215.79080275,-977.9187441703,-798.0758097545995,24.58006034487005 +738261798.7365,-287556418.2514,311941281.441181,-77845569.44404551,-953.532842752,-810.5304537568305,22.260989119981616 +738269186.1691,-294510181.23039997,305910241.9076117,-77687840.96975994,-929.0501324324,-822.1114124453526,20.539275521367927 +738276573.6017,-301282954.4238,299796732.29389024,-77540671.61253944,-904.545014656,-832.8656259306741,19.399165366973364 +738280086.97,-304440497.0352,296862017.935419,-77473156.59604508,-892.9018146737,-837.7042640992759,19.054951999550212 +738288227.5575,-311599635.6571,289999010.38450956,-77319806.6234594,-865.9939849779,-848.2691950815522,18.72906785727332 +738297088.9351,-319144361.1868,282434778.7028128,-77152785.54997839,-836.8750979775999,-858.8062990891588,19.086933430464228 +738306934.9102,-327226072.9018,273925779.3609423,-76959588.99055047,-804.8087215429,-869.4349766426469,20.292491472908466 +738316780.8854,-334993825.0962,265317294.984655,-76750638.49132317,-773.1101945992999,-879.0318684202969,22.274027406386722 +738327720.8577,-343261148.451,255647351.67457426,-76491194.33009413,-738.3759715998,-888.6055923129586,25.291172031945734 +738338660.8301,-351151448.64229995,245878404.69844627,-76194505.61780804,-704.1885933284,-897.1503624335147,29.066000537144987 +738349600.8025,-358670808.1884,236021111.9164537,-75852829.13130206,-670.5632391953001,-904.7731335320216,33.4998194624784 +738360540.7749,-365825382.6673,226085043.62935433,-75459462.20440112,-637.4988748983001,-911.565896694037,38.50130481829939 +738366010.761,-369267780.7178,221090201.26853943,-75241563.69269252,-621.1734331726,-914.6759254874875,41.188641119022975 +738368745.7541,-370955584.9708,218586524.96851426,-75127023.8557929,-613.0614169910999,-916.1632171350867,42.57468067216013 +738370113.2507,-371791178.6706,217333176.5000171,-75068323.13189007,-609.0179392865001,-916.8903761930197,43.27778625093066 +738370796.9989,-372206903.40110004,216706131.22710392,-75038611.08513811,-606.9993135827,-917.2498871816516,43.631798824558246 +738371138.8731,-372414248.3563,216392516.64054894,-75023664.1523065,-605.9907765181,-917.4286320431826,43.80941245477976 +738371309.8102,-372517791.55869997,216235686.46048716,-75016167.89815699,-605.4867016159,-917.5177526196519,43.89837016215722 +738371395.2787,-372569530.8508,216157265.6612421,-75012414.06660247,-605.2347125325,-917.5622500442043,43.94288662136023 +738371438.013,-372595392.4206,216118053.83576092,-75010535.72379218,-605.1087300795,-917.5844830544775,43.965154237052275 +738371480.7472,-372621248.6069,216078841.060466,-75008656.4293015,-604.9827556825,-917.6067056005561,43.98742810495884 +738371566.2158,-372672944.8302,216000412.6620999,-75004894.98395182,-604.7308310474,-917.6511193112915,44.03199458198088 +738371737.1528,-372776272.6887,215843544.48642522,-74997360.66084494,-604.2270783867,-917.7398213183324,44.1212023787412 +738372079.027,-372982670.1308,215529762.71906582,-74982246.22535211,-603.2199591811001,-917.9167244660327,44.29991640837284 +738372762.7752,-373394432.5304,214902018.31784475,-74951833.72282018,-601.2072626393,-918.2685335982217,44.65853076207196 +738374130.2718,-374213832.3028,213645812.3961086,-74890270.43589218,-597.1880160424,-918.9642130767063,45.38044546503261 +738376865.2649,-375836170.7878,211130582.3686011,-74764161.27921198,-589.1739372101999,-920.324207215454,46.84255205066137 +738382335.2511,-379015312.3969,206089244.04816487,-74499786.42900462,-573.2420104608001,-922.9217241276966,49.83624573222443 +738393275.2234,-385113864.1632,195966094.5150432,-73920744.15407239,-541.7509762393,-927.6487420430254,56.07418528199901 +738404215.1958,-390870517.92399997,185794482.46867588,-73271842.90255332,-510.73263709329996,-931.7881907486036,62.5984941747858 +738415155.1682,-396290279.5912,175580628.28715587,-72550234.59391053,-480.1566385424,-935.3767655485901,69.35827220820659 +738426095.1406,-401377820.86259997,165330389.866678,-71753591.17458525,-449.99241993830003,-938.444243316244,76.30923707544747 +738437035.1129,-406137481.8426,155049332.0308005,-70880036.04660685,-420.2100347318,-941.01460483143,83.41301672916649 +738446881.0881,-410144166.7336,145774438.46181217,-70026841.53128457,-393.7085349877,-942.9188127603593,89.90958112392292 +738456727.0632,-413891243.9008,136482655.0345079,-69109292.28119147,-367.47303605999997,-944.4470895607105,96.4820474306755 +738466573.0383,-417381238.7087,127177637.3949103,-68126733.15884939,-341.48469570099996,-945.608391935398,103.11210374411962 +738468967.1199,-418191256.2689,124913496.88290739,-67877936.86165906,-335.20087644539996,-945.8361399408299,104.73107733445562 +738472226.9047,-419270020.301,121829815.10186492,-67532938.0693505,-326.6661919339,-946.112201999051,106.93903136199074 +738485652.5085,-423420979.471,109122071.72728088,-66036001.40297296,-291.76315547589996,-946.8393335836644,116.06584717829836 +738499078.1123,-427105865.69280005,96408950.66067015,-64416294.39233339,-257.22946225709995,-946.9148818483128,125.22320407859397 +738512503.7161,-430329393.6662,83699144.96403155,-62673589.0342004,-223.02939888769998,-946.3464369862775,134.38482494241427 +738525929.3198,-433095823.4011,71001267.50301939,-60807978.16463418,-189.13089754260002,-945.1384704041136,143.52905280144597 +738539354.9236,-435409007.22249997,58323888.557862975,-58819818.71408665,-155.5052432,-943.292941222673,152.63808924380578 +738552780.5274,-437272432.6971,45675566.309729025,-56709684.28370722,-122.1267620096,-940.8097575006743,161.69736300041842 +738559493.3293,-438036485.7957,39364978.83554092,-55609105.02895218,-105.5229428885,-939.3285430216877,166.20453790878807 +738562849.7302,-438376761.0082,36213548.08261032,-55047483.18822427,-97.24121192332,-938.5278850631674,168.45193548914503 +738564527.9307,-438536480.3165,34638857.27389558,-54763845.37382206,-93.10525156365,-938.1125208190663,169.5740220299886 +738565367.0309,-438613737.785,33851775.37225415,-54621320.53924215,-91.03848067728,-937.901076793428,170.13465454771 +738565786.581,-438651716.26780003,33458301.218120955,-54549881.74081612,-90.00539546108,-937.7944139030632,170.4148671827632 +738565996.3561,-438670542.983,33261580.9553656,-54514118.259016804,-89.48892764942,-937.7408471872716,170.55494747893914 +738566101.2436,-438679915.7137,33163225.041968863,-54496225.49906804,-89.23071241027,-937.7140050052665,170.62498110729547 +738566153.6874,-438684591.9228,33114048.14147457,-54487276.364519134,-89.10160945431001,-937.700569208264,170.65999628886874 +738566206.1312,-438689261.3614,33064871.945855647,-54478325.39367524,-88.97250960522,-937.68712360637,170.69501038183373 +738566311.0187,-438698579.9275,32966521.671500143,-54460417.94332865,-88.71431922106001,-937.6602029854228,170.76503530238767 +738566520.7938,-438717135.8202,32769829.603983708,-54424581.009565204,-88.19797568446,-937.6062440746732,170.90507205911697 +738566940.3439,-438753922.6836,32376479.508944876,-54352819.02253324,-87.16543728007,-937.4978555259162,171.18509312233874 +738567779.4441,-438826197.01280004,31589916.40059585,-54208942.67345144,-85.10095308918001,-937.279195094356,171.74492454670536 +738569457.6446,-438965550.3936,30017345.886304095,-53919781.30594648,-80.9743388288,-936.8343374372354,172.8637374664303 +738572814.0455,-439223494.3186,26874486.733875986,-53335830.60791491,-72.73039763763,-935.9144463228025,175.0979081858804 +738579526.8474,-439656473.89750004,20598369.14789504,-52145472.497053504,-56.27865767734,-933.9537165146426,179.55200892126473 +738592952.4512,-440191895.4488,8088335.919974439,-49675390.14138671,-23.512091275739998,-929.5462765015747,188.40023650340237 +738606378.055,-440288558.00229996,-4358149.749153862,-47087078.38056284,9.085473659594,-924.4860677876906,197.16366388285667 +738619803.6587,-439948629.19990003,-16732280.501811791,-44381707.84119205,41.528871684150005,-918.7664361348192,205.8377292194627 +738633229.2625,-439174087.3815,-29025152.99658417,-41560501.71370907,73.83150459734999,-912.3797451924953,214.4191366771499 +738646654.8663,-437966739.43050003,-41227754.93977599,-38624719.68249856,106.0055448902,-905.3174035920422,222.90572734957098 +738660080.4701,-436328235.9859,-53330952.3272275,-35575643.31085981,138.0621256918,-897.5698697605266,231.29638953354504 +738673506.0738,-434260084.208,-65325476.58498217,-32414562.3401255,170.0115196306,-889.1266376147421,239.59100448174593 +738686931.6776,-431763658.10429996,-77201911.4987759,-29142761.677031036,201.8633130486,-879.9762051664233,247.7904253651369 +738698870.3395,-429184983.456,-87656041.88030112,-26141347.365606356,230.1127517756,-871.2350475898393,255.00322775551433 +738703908.0823,-427995753.2856,-92035416.65124215,-24849089.51901508,242.01362357969998,-867.3735151936654,258.02510435657825 +738724349.5107,-422555909.9774,-109597611.10763747,-19450322.674525723,290.1960613579,-850.6315058939674,270.1596740847735 +738734570.2249,-419467049.8939,-118245910.76521371,-16658424.591857933,314.22939926600003,-841.6026889347637,276.1540914449754 +738744790.939,-416132726.0803,-126799644.58963293,-13805492.329683825,338.2293201348,-832.125474430124,282.103400210127 +738755011.6532,-412553259.5247,-135254189.20607266,-10891970.855002299,362.1998791585,-822.1918659182902,288.0108377112324 +738765232.3674,-408728928.6371,-143604836.8470116,-7918269.111795589,386.1453672421,-811.7933390168622,293.8802282792136 +738775453.0816,-404659966.3755,-151846789.73765814,-4884753.610157877,410.07040459,-800.920797662251,299.7160664506856 +738785673.7958,-400346556.3289,-159975154.00120658,-1791741.0739257932,433.98005148180005,-789.5645234645851,305.5236184231651 +738795894.51,-395788827.5643,-167984933.00442642,1360510.0559714586,457.8799406971,-777.714116720282,311.3090453198611 +738801004.867,-393418367.48870003,-171943761.7048743,2958787.6669859067,469.8281817082,-771.6001606134099,314.19566813465 +738806115.2241,-390986847.9834,-175871020.04941326,4571809.507548384,481.77643777730003,-765.3584270188383,317.0795529325227 +738811225.5812,-388494266.59279996,-179766051.17791137,6199564.3436881155,493.7256512332,-758.9873913576453,319.961793578188 +738816335.9383,-385940615.8634,-183628190.29226297,7842046.758870982,505.676837125,-752.4854710274464,322.84357418783225 +738821446.2954,-383325882.95,-187456764.35091797,9499257.635316677,517.6310920363,-745.8510219260263,325.7261771997101 +738826556.6525,-380650049.1744,-191251091.74542946,11171204.679051831,529.589603933,-739.0823346351063,328.61099232514846 +738829111.831,-379289211.911,-193135197.5140792,12012708.677561298,535.5708551609,-735.6470985925498,330.0546954685662 +738830389.4203,-378603061.6123,-194073947.87187868,12434844.362072848,538.5620535473,-733.9166579614974,330.77695716109747 +738831028.215,-378258553.3276,-194542492.6339856,12646258.28452444,540.0578055533,-733.0482193126762,331.13820173394845 +738831347.6123,-378085940.8724,-194776556.8106179,12752051.787458546,540.8057209868,-732.6131938046241,331.31885387885904 +738831507.3109,-377999545.063,-194893536.772735,12804970.177172735,541.1796887161,-732.3954793037398,331.40918759603164 +738831587.1603,-377956324.7623,-194952013.71281683,12831434.781934977,541.3666751034,-732.2865715913008,331.4543563883801 +738831627.0849,-377934709.0129,-194981248.9215046,12844668.436836123,541.4601689297,-732.2321051168209,331.4769412702788 +738831667.0096,-377913089.5308,-195010481.9555317,12857902.993476354,541.5536631791,-732.1776302287386,331.49952647744516 +738831746.8589,-377869839.3684,-195068941.49780953,12884374.811839059,541.7406529503,-732.068655207358,331.54469787196916 +738831906.5576,-377783294.2502,-195185834.4710029,12937329.26958634,542.1146375994999,-731.8506041614454,331.6350446000006 +738832225.9549,-377610024.8366,-195419515.8961888,13043281.471933216,542.8626274819,-731.4140978543737,331.8157539943029 +738832864.7495,-377262769.26919997,-195886460.0589081,13255359.048171662,544.3586908463,-730.5394667567556,332.1772380029679 +738834142.3388,-376565390.9208,-196818668.8041162,13680207.08609388,547.3511621875,-728.7837175779945,332.90047874787325 +738836697.5174,-375159163.2368,-198676329.1995061,14532676.420598134,553.3375667614,-725.2461658608553,334.3481478011089 +738841807.8744,-372300805.2414,-202364309.39669237,16248723.724844411,565.3169197098999,-718.0659884304317,337.2490402385514 +738846918.2315,-369381203.31960005,-206015234.90794605,17979617.838846594,577.3064097863,-710.7440233932659,340.1589611814146 +738852028.5886,-366400301.0443,-209628375.8045239,19725410.183738478,589.3078746847999,-703.2781636988561,343.08000750191553 +738857138.9457,-363358032.14169997,-213202991.14200816,21486163.365315236,601.3233340186,-695.6662041592648,346.0144626250567 +738862249.3028,-360254319.504,-216738328.4395249,23261952.175834157,613.3550121155,-687.9058336462219,348.96481580112476 +738867359.6599,-357089074.0787,-220233623.1165098,25052864.700016856,625.4053639682,-679.9946263720262,351.9337837784515 +738877580.3741,-350573561.2542,-227100962.07243168,28680487.165427834,649.5732443018,-663.7093652254756,357.9397183722739 +738887801.0883,-343810490.5155,-233798624.79778075,32370051.24298311,673.8524676948,-646.7883178374029,364.0595620748629 +738898021.8024,-336798568.2848,-240319989.2730959,36122883.87317943,698.2746325492,-629.2067767769894,370.32619140184033 +738908242.5166,-329536139.3303,-246658165.3664524,39940682.340185635,722.8792605562,-610.9368809091472,376.77946571353664 +738918463.2308,-322021093.8275,-252805959.10712808,43825594.62759408,747.7162652390999,-591.946899653726,383.4680718688827 +738928683.945,-314250744.6959,-258755828.53489187,47780321.59851876,772.8493597736999,-572.2002871593941,390.4519851364787 +738938904.6592,-306221663.4986,-264499828.32343096,51808248.52488427,798.3608495463001,-551.6544131519661,397.8058038277579 +738949125.3734,-297929456.9773,-270029539.124,55913617.01015676,824.3585123487,-530.2588318896233,405.6233468594603 +738954809.8287,-293201670.7367,-273008976.7610209,58232360.36690491,839.0893196654,-517.9760338240226,410.2158022657201 +738954809.8287,-293201687.6062,-273008979.28081286,58232323.57561689,839.0790409517,-517.9696802232536,410.214677029002 +738956163.0987,-292063765.0645,-273707931.52676606,58788251.068262056,842.6256123388999,-515.0076467022254,411.33799463822345 +738961101.9101,-287870118.4025,-276224444.0148365,60830073.3900478,855.6468806362,-504.0304669001081,415.5377559962892 +738966040.7215,-283611677.9362,-278686170.8358444,62893070.41522866,868.8687040750001,-492.82027056057257,419.9162615981494 +738970979.5329,-279287383.213,-281091936.46082556,64978178.42940788,882.3201914349,-481.366863922063,424.49567851937184 +738975918.3444,-274896017.6039,-283440512.0511827,67086451.06589772,896.0356528192,-469.6588202649772,429.30145337778936 +738980857.1558,-270436179.7885,-285730608.84931934,69219076.99763745,910.0557930598,-457.68325986020034,434.3629436501062 +738985795.9672,-265906248.55409998,-287960870.3483269,71377401.13572848,924.4292516830001,-445.42558024058246,439.71420303358434 +738990734.7786,-261304338.83279997,-290129863.0110596,73562950.13327917,939.2146124172,-432.8691237183925,445.394966251358 +738995673.5901,-256628246.3839,-292236065.1105468,75777463.44001445,954.4830619421,-419.994764629441,451.4518961864553 +739000612.4015,-251875377.15240002,-294277853.3454241,78022931.2453925,970.3219564112,-406.7803940427991,457.9401780551933 +739005551.2129,-247042656.0192,-296253486.5448225,80301641.47994173,986.8396849366001,-393.20027269388913,464.92557909437477 +739008020.6186,-244595229.7996,-297215913.866978,81454273.01273012,995.3943442246,-386.26382278331175,468.6287905518225 +739010490.0244,-242126407.227,-298161085.8247544,82616238.37191135,1004.1724214329998,-379.22421540686275,472.4871382504225 +739012959.4301,-239635608.8807,-299088742.0379173,83787935.87068477,1013.1968433709999,-372.0768138020296,476.51315771324465 +739015428.8358,-237122194.9415,-299998610.165084,84969796.39352742,1022.493686144,-364.8165602736109,480.7207200630809 +739017898.2415,-234585456.7383,-300890404.8078366,86162286.91100504,1032.092739648,-357.4379284811004,485.12521483852015 +739020367.6472,-232024606.7577,-301763826.2876993,87365914.48817222,1042.0281993580002,-349.9348703507766,489.7437629604966 +739022837.0529,-229438766.75030002,-302618559.2858428,88581230.85996735,1052.339520309,-342.3007574993335,494.5954653188571 +739025306.4586,-226826953.4653,-303454271.33554393,89808837.66523682,1063.0724796460001,-334.5283172822154,499.70169368496414 +739027775.8644,-224188061.46629998,-304270611.14436406,91049392.46918689,1074.280510715,-326.6095646033936,505.0864310515236 +739030245.2701,-221520842.22190002,-305067206.74941087,92303615.68768087,1086.026393276,-318.5357313024619,510.7766702995195 +739032714.6758,-218823878.4621,-305843663.49844575,93572298.57889086,1098.384416571,-310.297197347399,516.8028799519113 +739035184.0815,-216095552.4499,-306599561.86524755,94856312.48879951,1111.443178444,-301.88343129712166,523.1995460237438 +739037653.4872,-213334006.341,-307334455.1599151,96156619.49742164,1125.309251474,-293.282953356457,530.005796977653 +739040122.8929,-210537092.059,-308047867.16421205,97474284.78697865,1140.112046468,-284.4833449709948,537.2661117685632 +739042592.2986,-207702307.2476,-308739289.933045,98810490.75490752,1156.0103609179998,-275.47134589443255,545.0310992310324 +739045061.7044,-204826712.237,-309408181.9734447,100166553.1821107,1173.20133435,-266.23311192448676,553.3583053810927 +739046296.4072,-203372546.4953,-309734000.3377634,100852482.63859448,1182.35662907,-261.5247967764138,557.7528046592882 +739047531.1101,-201906820.82279998,-310053967.3982892,101543939.30999614,1191.932914129,-256.75476389025675,562.3129435711874 +739048765.8129,-200428990.1465,-310368005.9707934,102241133.47706525,1201.972015643,-251.92144750647094,567.0481436531596 +739050000.5158,-198938454.2738,-310676037.03979784,102944287.3618953,1212.521551999,-247.02346082519813,571.968322392249 +739051235.2186,-197434550.11879998,-310977980.0366537,103653635.71584733,1223.635980871,-242.0596919023189,577.083851413413 +739052469.9215,-195916542.4765,-311273753.2529059,104369426.34306335,1235.377881393,-237.0294349659523,582.4054764440615 +739053704.6243,-194383613.0824,-311563274.45133495,105091920.47298287,1247.819537564,-231.93257050291845,587.9441813457922 +739054939.3272,-192834847.4258,-311846461.73067427,105821392.94270675,1261.044904193,-226.76981358402756,593.7109679374018 +739056174.0301,-191269218.9027,-312123234.75882995,106558132.01360375,1275.152071682,-221.54305756818914,599.7165128375026 +739057408.7329,-189685569.51430002,-312393516.5098027,107302438.66293031,1290.2563789429998,-216.2558531373127,605.9706406457044 +739058643.4358,-188082586.194,-312657235.69164056,108054625.09461862,1306.4943789150002,-210.91408167006168,612.4815219138486 +739059878.1386,-186458771.6486,-312914330.1955508,108815011.95920366,1324.028945036,-205.52690929459575,619.2544595999323 +739061112.8415,-184812407.89949998,-313164751.9260542,109583923.79774259,1343.0559006380001,-200.1081549352182,626.2900448196883 +739062484.7336,-182954244.0456,-313435140.1116935,110448658.67949814,1366.2378551909999,-194.07545566910795,634.4066097899164 +739063170.6796,-182012824.24740002,-313567232.82380605,110885253.25344153,1378.7525867049999,-191.066479290404,638.5756774288545 +739063856.6256,-181062585.82050002,-313697265.87865853,111324730.84972514,1391.960752303,-188.07146901608482,642.8114356704409 +739064542.5716,-180103030.3958,-313825251.7712149,111767134.56601462,1405.929961741,-185.09923414341128,647.1057263280996 +739065228.5177,-179133610.2158,-313951209.7299121,112212500.92133565,1420.736828311,-182.16067783121565,651.4473956590614 +739065914.4637,-178153721.4601,-314075167.3264346,112660857.51656032,1436.468475701,-179.2693225747345,655.8214293131097 +739066600.4097,-177162696.43559998,-314197162.49526954,113112220.01346636,1453.224342068,-176.44198518031286,660.2078213263961 +739067286.3558,-176159794.4094,-314317246.079123,113566588.22521979,1471.11834548,-173.69964971386912,664.5800860531583 +739067972.3018,-175144190.8111,-314435485.058723,114023941.03057924,1490.281489221,-171.0686045300106,668.9032874340184 +739068658.2478,-174114964.466,-314551966.6829808,114484229.71300039,1510.864998945,-168.58193449473893,673.131410005952 +739069344.1939,-173071082.47980002,-314666803.7703683,114947369.21932486,1533.0441016309999,-166.28149469720123,677.2038257064121 +739070030.1399,-172011382.2507,-314780141.5912987,115413226.56460549,1557.0225633109999,-164.22054307819056,681.0405049914655 +739070716.0859,-170934550.09519997,-314892166.8348477,115881605.41521895,1583.038111049,-162.4672800104114,684.5354757310791 +739071402.032,-169839095.8271,-315003119.4252452,116352225.35533,1611.368839595,-161.10965057932916,687.547804690398 +739072087.978,-168723322.53100002,-315113308.2044458,116824693.84183982,1642.340623654,-160.2619098767414,689.8890648706058 +739072430.951,-168157220.8168,-315168236.5430588,117061458.8227383,1658.933839294,-160.07430883928507,690.7319839430997 +739072773.924,-167585291.0504,-315223131.9034734,117298467.9598689,1676.335397806,-160.07367821849434,691.3057552256157 +739073116.897,-167007246.1859,-315278062.8123737,117535621.2715443,1694.603213951,-160.28630330601814,691.5644591639681 +739073459.8701,-166422778.5442,-315333107.486305,117772801.73957133,1713.7997427530001,-160.74250741881139,691.4544646498316 +739073802.8431,-165831558.21809998,-315388355.3308517,118009872.43294601,1733.9921569609999,-161.47734423447196,690.9130159486309 +739074145.8161,-165233231.4404,-315443908.7015578,118246673.0929606,1755.252435049,-162.5314166253632,689.866542920986 +739074488.7891,-164627418.93809998,-315499884.96528506,118483016.09375098,1777.65730649,-163.95184360530578,688.2286416765753 +739074831.7621,-164013714.3402,-315556418.92902124,118718681.63226092,1801.287981124,-165.7934003040541,685.8976625109284 +739075174.7351,-163391682.737,-315613665.68575585,118953412.02766031,1826.229560961,-168.11985592538605,682.753838127229 +739075517.7082,-162760859.5,-315671803.9629929,119186904.93436392,1852.569987115,-171.0055355460735,678.6558757152008 +739075860.6812,-162120749.59190002,-315731040.0436184,119418805.29175575,1880.398327475,-174.53712580880554,673.4369420541205 +739076203.6542,-161470827.5947,-315791612.34949964,119648695.7873445,1909.802126585,-178.815735915975,666.89997545132 +739076546.6272,-160810538.8638,-315853796.78705084,119876085.5614788,1940.863449036,-183.9591996656207,658.8122984167251 +739076889.6002,-160139302.34550002,-315917912.8906125,120100397.00633797,1973.653126283,-190.1045732977403,648.8995510763469 +739077232.5732,-159456515.7477,-315984330.873509,120320950.31278378,2008.222543593,-197.4107053855502,636.8391016136701 +739077575.5462,-158761564.07369998,-316053479.5124859,120536945.78259385,2044.59216549,-206.06065870774214,622.2532712136057 +739077918.5193,-158053832.79680002,-316125854.80423373,120747443.82571322,2082.735782794,-216.2635858340819,604.703045619597 +739078299.6004,-157251754.4796,-316210755.0836001,120973537.25472072,2127.080810152,-229.7093819726175,581.1095796207196 +739078490.141,-156844287.0841,-316255243.47709894,121082983.0650863,2149.953139302,-237.3718457181254,567.4631949883486 +739078680.6815,-156432422.32909998,-316301256.8244588,121189699.46223912,2173.227747296,-245.72412937392875,552.4420119776865 +739078871.2221,-156016089.6254,-316348931.25634605,121293413.81317896,2196.838335062,-254.81565963182476,535.9331785268439 +739079061.7627,-155595232.6236,-316398412.39637214,121393831.58341658,2220.70132709,-264.6965037689194,517.819892478974 +739079252.3032,-155169812.7416,-316449855.39209825,121490635.7352839,2244.7133882040002,-275.41638004859806,497.9830835149459 +739079442.8438,-154739813.17020002,-316503424.7317363,121583486.50513345,2268.7489086250002,-287.023364359285,476.3037220420008 +739079633.3843,-154305243.34759998,-316559293.7793903,121672021.68918146,2292.6575919790002,-299.5622503792422,452.66586429709 +739079823.9249,-153866143.8736,-316617643.96495533,121755857.5863445,2316.262337566,-313.072530747685,426.96053029011136 +739080014.4655,-153422591.7773,-316678663.54933,121834590.76573387,2339.357664441,-327.58598414594655,399.09048348290474 +739080205.006,-152974706.01,-316742545.89528906,121907800.8330385,2361.708989092,-343.12388342118277,368.9759280322298 +739080395.5466,-152522652.96539998,-316809487.1727554,121975054.36467578,2383.053120685,-359.6938825387487,336.5610584989271 +739080586.0872,-152066651.7589,-316879683.4500528,122035910.1590983,2403.100370526,-377.2866967390522,301.8212843585427 +739080776.6277,-151606978.9191,-316953327.1461316,122089925.90416001,2421.538665467,-395.8727588161085,264.7708078383781 +739080967.1683,-151143972.0784,-317030602.86319077,122136666.28487693,2438.039990367,-415.39910812081297,225.47007076682613 +739081201.4161,-150570786.2857,-317130834.1813714,122183542.42171353,2455.1780986149997,-440.5743508670805,174.24265950144743 +739081318.5399,-150282800.88590002,-317183195.545321,122202392.149371,2462.267490416,-453.58831303662487,147.51739165968036 +739081435.6638,-149994047.959,-317237095.74756837,122218071.81796986,2468.272554236,-466.8458830785177,120.12073138031313 +739081552.7877,-149704658.5555,-317292561.2883105,122230506.4036614,2473.124980658,-480.31174057855395,92.11578899348399 +739081669.9116,-149414771.4048,-317349614.31595457,122239628.77112907,2476.762166565,-493.9469272409502,63.57410608545206 +739081787.0355,-149124532.16619998,-317408272.217503,122245380.63744919,2479.1285589,-507.7091741003431,34.575178612451566 +739081904.1594,-148834092.535,-317468547.2571581,122247713.45967792,2480.176940905,-521.5533344765096,5.205751365327984 +739082021.2833,-148543609.1884,-317530446.26778615,122246589.23722339,2479.869605122,-535.4319130073626,-24.44110455982772 +739082138.4071,-148253242.61290002,-317593970.4113228,122241981.18663327,2478.179369231,-549.2956839916912,-54.26712386308836 +739082255.531,-147963155.8213,-317659115.01616776,122233874.27476028,2475.090385901,-563.0943812862572,-84.17015918974684 +739082372.6549,-147673512.98950002,-317725869.4986266,122222265.58924635,2470.598707823,-576.7774397590675,-114.04563762143772 +739082431.2169,-147528909.3343,-317759845.5206688,122215150.5366568,2467.828956133,-583.5599102442898,-128.94008241678617 +739082489.7788,-147384478.0431,-317794217.3728138,122207164.53137654,2464.712578306,-590.2947645338985,-143.78811655835568 +739082548.3407,-147240239.33290002,-317828982.0887968,122198310.67425004,2461.2525091820003,-596.9759407790694,-158.5766870616356 +739082606.9027,-147096213.2266,-317864136.3503126,122188592.82629597,2457.452428995,-603.5975016900474,-173.2928870300426 +739082665.4646,-146952419.5103,-317899676.49601394,122178015.59901677,2453.316747193,-610.1536568369074,-187.92400448699658 +739082694.7456,-146880615.9064,-317917590.0394627,122172406.36124724,2451.1246280600003,-613.4054431606847,-195.2037497844989 +739082709.3861,-146844738.4754,-317926582.45034486,122169521.90128592,2449.997800171,-615.0244616181651,-198.83399550544505 +739082716.7063,-146826805.9838,-317931087.5358985,122168059.75268006,2449.4267339750004,-615.8322150529356,-200.64662839370334 +739082720.3664,-146817841.3103,-317933342.29493695,122167323.70407708,2449.139292925,-616.2356482215508,-201.5523120022869 +739082722.1965,-146813359.3686,-317934470.2280533,122166954.43687221,2448.99509606,-616.4372533462931,-202.00499430912697 +739082723.1115,-146811118.49679998,-317935034.3329929,122166769.4926479,2448.922878623,-616.5380279723287,-202.23129542732966 +739082723.569,-146809998.0857,-317935316.41995883,122166676.94285773,2448.886740165,-616.5884082918974,-202.34443595627772 +739082724.0266,-146808877.6911,-317935598.5301097,122166584.34135255,2448.8505818830004,-616.6387839459252,-202.45756979165145 +739082724.9416,-146806636.9516,-317936162.8193917,122166398.98301366,2448.778205861,-616.7395212490662,-202.6838173612922 +739082726.7717,-146802155.6715,-317937291.674404,122166027.64531538,2448.633216067,-616.940939758706,-203.13623192537764 +739082730.4318,-146793193.9087,-317939550.4900903,122165282.48664114,2448.342286136,-617.3435518230556,-204.04073746977633 +739082737.752,-146775273.58929998,-317944072.5393461,122163782.24138664,2447.756630209,-618.1478715927034,-205.8484439762467 +739082752.3925,-146739445.9042,-317953134.2792496,122160742.08463925,2446.5701770220003,-619.752857535288,-209.45855694878009 +739082781.6735,-146667843.3804,-317971328.07113177,122154503.47466141,2444.137057012,-622.9479285271229,-216.6569335089452 +739082840.2354,-146524857.885,-318007994.8209632,122141396.16112493,2439.032905566,-629.2762200991301,-230.96116973537838 +739082898.7974,-146382180.4485,-318045029.6553795,122127454.99973692,2433.617495383,-635.5178964859092,-245.132519800985 +739082957.3593,-146239829.0772,-318082427.3614312,122112688.09898138,2427.898485892,-641.6681913462487,-259.1599091057617 +739083015.9212,-146097821.3129,-318120182.4543013,122097104.20293753,2421.884086559,-647.7225922239643,-273.03270773125155 +739083074.4832,-145956174.20119998,-318158289.19237745,122080712.66430986,2415.583016101,-653.6768527881322,-286.74076207879955 +739083191.6071,-145674027.4705,-318235533.4526648,122045546.93983541,2402.1580241799998,-665.2693588614395,-313.6245703750362 +739083308.731,-145393514.3114,-318314109.6978313,122007276.79365143,2387.701777841,-676.4174096668158,-339.74060859488367 +739083425.8548,-145114750.6607,-318393964.444467,121965995.85291259,2372.297813671,-687.0974338387607,-365.027187502828 +739083542.9787,-144837842.4357,-318475041.72902364,121921804.42236727,2356.033440278,-697.2906537067618,-389.4320164294289 +739083660.1026,-144562885.1787,-318557283.66746426,121874808.37355277,2338.9982655689996,-706.9830404397388,-412.9123331917485 +739083777.2265,-144289963.8712,-318640631.0042438,121825118.03169763,2321.2827921549997,-716.1651704692629,-435.43481835780324 +739083894.3504,-144019152.9052,-318725023.6382001,121772847.08621578,2302.977116937,-724.8319972360896,-456.97531760270374 +739084011.4743,-143750516.2032,-318810401.121386,121718111.53470166,2284.16976514,-732.9825548967002,-477.5184021650967 +739084155.3607,-143423551.1414,-318916546.42780185,121647668.23005792,2260.504568925,-742.293161536114,-501.38014363307525 +739084155.3607,-143423555.43559998,-318916546.07665944,121647669.06860697,2260.505315982,-742.2925893687642,-501.3792652978358 +739084271.2878,-143162624.5357,-319003005.27801496,121588485.65180704,2241.085800938,-749.2383532540227,-519.5024544863614 +739084471.9227,-142716398.8293,-319154443.84769607,121481290.90640119,2206.965386313,-760.1177905413136,-548.5720650904556 +739084672.5576,-142277059.16,-319307924.5371529,121368550.17067276,2172.498963027,-769.6070674325629,-574.8036683398041 +739084873.1924,-141844642.9966,-319463176.18973345,121250821.55684882,2137.9973566529998,-777.785601700789,-598.3153182161648 +739085073.8273,-141419130.086,-319619944.66523874,121128636.536601,2103.725169618,-784.742777075855,-619.252801726215 +739085274.4622,-141000451.6409,-319777994.3703816,121002495.36484322,2069.901919158,-790.5734051430313,-637.780027711788 +739085475.097,-140588499.1305,-319937108.96084636,120872864.2892439,2036.7048813899999,-795.3740196261451,-654.0708883789545 +739085675.7319,-140183132.3687,-320097091.3890358,120740174.22337344,2004.2730109379997,-799.2399950660238,-668.3026724871573 +739085876.3668,-139784186.7662,-320257763.4407132,120604820.61201054,1972.711402314,-802.2634207353055,-680.6509672681376 +739086077.0016,-139391479.6579,-320418964.92053807,120467164.16633806,1942.0959084810002,-804.5316288905159,-691.2858974729488 +739086277.6365,-139004815.7154,-320580552.59612626,120327532.24030353,1912.477630402,-806.1262623010834,-700.369505620519 +739086478.2714,-138623991.48560002,-320742398.99839807,120186220.63648671,1883.887099389,-807.1227686687105,-708.0540666868477 +739086678.9062,-138248799.1223,-320904391.15661114,120043495.67347604,1856.3380494540002,-807.5902193764474,-714.4811394964509 +739087124.7615,-137434149.2045,-321264411.29246867,119722434.9650794,1798.8318364230001,-807.0416721387398,-724.9017141672005 +739087570.6168,-136644022.0998,-321623782.5026398,119397737.6877778,1746.2930668850001,-804.7651009786423,-730.9786415810897 +739088066.0115,-135792254.0374,-322021520.9768736,119034759.33739626,1693.36807002,-800.76006680617,-733.8393071807251 +739088561.4062,-134965384.7587,-322416986.66497904,118671163.48053241,1645.683079411,-795.6570515891624,-733.6256927545543 +739089111.8448,-134072857.23930001,-322853182.0027122,118268028.66167645,1598.191363628,-789.12178913865,-730.760315069767 +739089662.2834,-133205037.2633,-323285607.42259884,117867046.40110189,1555.795849705,-782.0072726728632,-725.9215766317867 +739090273.8818,-132266590.9105,-323761361.0610051,117425133.51601557,1513.882942937,-773.7159876539147,-718.9588494331988 +739090885.4803,-131352299.5239,-324231976.8876642,116987841.01486753,1476.686164718,-765.2370091534414,-710.8949780849485 +739091565.0341,-130361509.719,-324748781.23648703,116508026.36331764,1440.0799115989998,-755.7792299822218,-701.1472513867292 +739092244.5879,-129394118.0882,-325259183.10886925,116035007.18153769,1407.706569505,-746.4114014753458,-690.949282907365 +739092924.1417,-128447470.9928,-325763274.06964236,115568992.46239428,1378.930401352,-737.216091144905,-680.5688280312197 +739093679.2015,-127417233.097,-326316138.8740101,115059481.24012966,1350.5398656739999,-727.2595164038232,-669.0378309427048 +739094056.7314,-126909834.7472,-326589780.3989806,114807979.55544642,1337.578156448,-722.3951438708538,-663.3238538015471 +739094434.2613,-126407189.0079,-326861600.3832768,114558625.2237238,1325.352485647,-717.6100003884176,-657.6640880014128 +739094811.7912,-125909028.9361,-327131628.9792764,114311395.62737298,1313.805885856,-712.9052143024419,-652.0694758186967 +739095189.3211,-125415108.0537,-327399896.60959077,114066264.49929293,1302.886807818,-708.2811215389311,-646.5484922695629 +739095566.851,-124925198.4142,-327666433.7024637,113823202.76544656,1292.548534843,-703.7374415484838,-641.1075996463843 +739095944.3809,-124439088.87920001,-327931270.4866067,113582179.23249443,1282.748664094,-699.2734175993832,-635.7516177717864 +739096133.1459,-124197397.3826,-328063060.6147791,113462421.60486361,1278.038444198,-697.070938014971,-633.1066010485806 +739096227.5284,-124076882.1825,-328128800.2330437,113402729.4957584,1275.728765306,-695.9770106760261,-631.7924904499754 +739096274.7196,-124016705.97919999,-328161631.3816415,113372929.88562587,1274.5850446660002,-695.4318654754786,-631.1375505436615 +739096298.3152,-123986638.0743,-328178037.31579506,113358041.66250041,1274.01593482,-695.1597462411371,-630.8106112407748 +739096310.113,-123971609.15220001,-328186237.8758681,113350600.44272809,1273.732063902,-695.0237998064024,-630.647274465588 +739096316.0119,-123964095.9464,-328190337.5546103,113346880.55539621,1273.590298991,-694.9558548659172,-630.5656393273039 +739096321.9108,-123956583.5766,-328194436.83255845,113343161.14952454,1273.44864761,-694.8879287681244,-630.4840263622079 +739096333.7086,-123941561.3419,-328202634.1867941,113335723.78175521,1273.165684938,-694.7521330747818,-630.3208669719382 +739096357.3043,-123911526.874,-328219024.0911383,113320854.81832062,1272.601116352,-694.4807675461698,-629.9948145850158 +739096404.4955,-123851497.79609999,-328251784.70840096,113291139.95067596,1271.4773778370002,-693.9389386123048,-629.34377694195 +739096498.878,-123731597.89,-328317229.3758073,113231802.21699217,1269.25127086,-692.8588786243689,-628.0459819412811 +739096687.6429,-123492421.7827,-328447814.0209768,113113492.86423048,1264.882778479,-690.7130629094218,-625.4675965815632 +739097065.1728,-123016492.4501,-328707777.05582505,112878323.39373434,1256.467195119,-686.4779184213687,-620.3801575113948 +739097442.7027,-122543663.03729999,-328966155.1941834,112645057.03704214,1248.455993189,-682.3166241674946,-615.3857504790886 +739097820.2326,-122073786.0161,-329222975.9708998,112413658.61693527,1240.82235014,-678.2273353941936,-610.4845779398072 +739098575.2924,-121142346.7158,-329732052.0144179,111956325.11450295,1226.59146395,-670.2570928254411,-600.9604533997713 +739099330.3522,-120221174.2741,-330235210.98662645,111506044.49573375,1213.601067986,-662.5515831103759,-591.801426564929 +739100085.412,-119309389.0041,-330732646.8706743,111062544.80730939,1201.704269319,-655.0952142471997,-582.9971592841064 +739100840.4718,-118406213.62910001,-331224542.0162034,110625562.89550373,1190.775972481,-647.8728155273313,-574.5348987647154 +739101595.5316,-117510958.325,-331711067.55664825,110194845.7957074,1180.709067806,-640.8698736081426,-566.4005447628078 +739102350.5914,-116623008.34,-332192383.9597338,109770151.45751563,1171.411373076,-634.0726587683375,-558.5793744240887 +739103105.6512,-115741813.6441,-332668641.63640237,109351249.0381571,1162.803167183,-627.4682799208466,-551.0565294077735 +739103860.711,-114866880.4447,-333139981.59960586,108937918.81268233,1154.815180448,-621.044697002772,-543.8173453131303 +739104615.7708,-113997763.778,-333606536.0797124,108529952.01125854,1147.386965708,-614.7907016095406,-536.8475574598787 +739105370.8306,-113134061.4023,-334068429.14386255,108127150.45077103,1140.4655538220002,-608.6958835822442,-530.1334344678346 +739106880.9502,-111421473.7863,-334978689.9935764,107336300.52002944,1127.962187654,-596.9458664082575,-517.4203515317173 +739108391.0698,-109726574.4887,-335871614.9368505,106563977.60812262,1116.9932043699998,-585.725595270781,-505.5809954243467 +739109901.1894,-108047239.55680001,-336747958.05522406,105808928.99541396,1107.312208366,-574.975777402808,-494.52870551353783 +739111411.309,-106381678.2028,-337608390.3296689,105070025.29255424,1098.722072018,-564.6454229860001,-484.1866826699627 +739112921.4286,-104728367.6868,-338453511.1922976,104346246.19867337,1091.063277441,-554.6905609212779,-474.48707632265945 +739114431.5482,-103086003.2775,-339283858.26768255,103636667.75531368,1084.2053992400001,-545.0731409235748,-465.3699846833768 +739115941.6678,-101453459.3161,-340099915.6001093,102940451.0738182,1078.0407888650002,-535.760110335542,-456.7824860629268 +739117451.7874,-99829758.57154,-340902120.5995741,102256832.48060918,1072.479828404,-526.7226434703355,-448.67775057132303 +739118961.907,-98214047.8616,-341690869.92642367,101585114.92487788,1067.447318844,-517.9355004828143,-441.0142501014431 +739120472.0266,-96605578.47797,-342466524.4929563,100924660.50261602,1062.879699905,-509.37649415966223,-433.75506737574835 +739121982.1462,-95003690.27798,-343229413.7249298,100274883.96664312,1058.722888222,-501.0260456951293,-426.8672968698934 +739123492.2658,-93407798.74228,-343979839.2153724,99635247.05704232,1054.930577544,-492.86681403758865,-420.32152915287986 +739125002.3854,-91817384.27971,-344718077.86142653,99005253.56717378,1051.462892107,-484.8833853194002,-414.09140700017315 +739126512.505,-90231983.34706,-345444384.57104784,98384445.03401294,1048.285309897,-477.06201191054674,-408.15324410132973 +739128022.6246,-88651181.05111,-346158994.6094862,97772396.95512791,1045.3677948299999,-469.3903922913614,-402.48569722588843 +739131042.8638,-85501919.63668,-347553979.49079925,96573034.4413626,1040.211152155,-454.4533489532495,-391.88714062430176 +739134063.103,-82367040.03562,-348904593.0666858,95404332.5495034,1035.818628482,-439.99634683538693,-382.1620588185567 +739137083.3422,-79244448.52814,-350212188.24961835,94263825.45449926,1032.053843572,-425.9572171759064,-373.1997719459896 +739140103.5814,-76132418.72786,-351477947.0647389,93149353.02947009,1028.808592438,-412.2845295234852,-364.90781390506345 +739143123.8206,-73029517.43974,-352702909.5042802,92059011.65330657,1025.995941076,-398.935346465795,-357.2082891980248 +739146144.0597,-69934548.38751,-353887996.5202465,90991114.54371357,1023.5452560780001,-385.8735222070061,-350.035071615567 +739149164.2989,-66846508.692339994,-355034028.4611263,89944159.68699686,1021.3985670679999,-373.06839683267583,-343.3316266037423 +739152184.5381,-63764554.94413,-356141740.0554182,88916803.52774476,1019.507860653,-360.49378284559566,-337.0493026560428 +739155204.7773,-60687976.343540005,-357211792.6710357,87907839.28262073,1017.8330408889999,-348.1271703278136,-331.14597803228634 +739158225.0165,-57616173.23863,-358244784.4327335,86916178.91946302,1016.340370734,-335.94909711807907,-325.5849792746401 +739161245.2557,-54548639.82714,-359241258.6413094,85940838.05723725,1015.001268336,-323.942645433262,-320.33420997470387 +739164265.4949,-51484950.05245,-360201710.8225844,84980923.25079146,1013.7913664619999,-312.09303593522736,-315.36544330218493 +739167285.7341,-48424746.04527,-361126594.6713121,84035621.2049728,1012.6897709169999,-300.38729788745536,-310.6537433469996 +739168066.3136,-47634366.676309995,-361359898.0827658,83793592.3023667,1012.420414042,-297.3839207436803,-309.4750455154566 +739170763.7664,-44904619.329169996,-362148147.47395825,82964168.22370629,1011.5320986680001,-287.07073840283283,-305.517802017224 +739175937.6597,-39675147.99571,-363582787.9090314,81402138.73870713,1009.981777274,-267.5536691374696,-298.39081201437557 +739181111.5529,-34453286.10657,-364917274.3131929,79875552.68088183,1008.5811315540001,-248.34914014275847,-291.8041817454526 +739186285.4462,-29238396.32777,-366153129.6620954,78381800.96141204,1007.2790540259999,-229.4218932922571,-285.68782084376505 +739191459.3395,-24030079.0074,-367291710.43427205,76918607.27987932,1006.034334494,-210.74259581561728,-279.9827600247653 +739196633.2327,-18828127.07914,-368334234.0243627,75483976.48725766,1004.8134334629999,-192.2866497218463,-274.6389822878645 +739201807.126,-13632490.78162,-369281800.81161,74076152.71758325,1003.5888303,-174.03327921294886,-269.61374963241525 +739206981.0193,-8443249.991256,-370135411.972083,72693585.34446673,1002.337778062,-155.9648217722145,-264.8702953006959 +739212154.9126,-3260591.928964,-370895984.17874855,71334900.69727035,1001.0413557869999,-138.06617264912592,-260.3767929858183 +739217328.8058,1915206.5177439998,-371564361.5715581,69998878.85435323,999.6837346712,-120.32434355194289,-256.1055334090528 +739222502.6991,7083793.304713,-372141325.7896187,68684434.06309848,998.251606993,-102.72811010068338,-252.03226292607638 +739227676.5924,12244753.062059999,-372627604.33393735,67390598.2999543,996.7337357449,-85.2677271801718,-248.13564670257517 +739232850.4856,17397616.84646,-373023877.6015613,66116507.342021674,995.1205965157,-67.93469740434976,-244.39682980133182 +739235437.4323,19970853.575329997,-373188463.4840142,65486621.521432266,994.2757214665,-59.31357829349388,-242.5812917560533 +739236730.9056,21256643.75747,-373262402.5340178,65173428.91090368,993.8433036747,-55.013990138338606,-241.68613401025186 +739237377.6422,21899328.00967,-373297287.69912773,65017265.482658595,993.6245528825,-52.866894494577515,-241.2416065298231 +739237701.0106,22220616.94491,-373314209.6989486,64939291.415960535,993.5145363727,-51.794015892776464,-241.0200932910796 +739237862.6947,22381248.05424,-373322540.61629903,64900331.22394796,993.4593671473,-51.257743233219664,-240.90952277382536 +739237943.5368,22461560.26174,-373326673.56212044,64880857.829493284,993.4317422063,-50.98964848140261,-240.85428385146417 +739237983.9579,22501715.52779,-373328731.9078035,64871122.80663706,993.417919643,-50.855611490064625,-240.8266759517566 +739238024.3789,22541870.234980002,-373330784.8356571,64861388.899535924,993.4040903471,-50.72158141767948,-240.79907575013738 +739238105.221,22622177.9716,-373334874.4392869,64841924.43135731,993.3764115457,-50.45354201730161,-240.74389841223552 +739238266.9051,22782786.72657,-373342988.6455595,64803008.87074971,993.320973019,-49.917546115448616,-240.63363581814752 +739238590.2735,23103977.30223,-373358957.11657524,64725231.18323313,993.2097715952,-48.84588525642554,-240.4134774595019 +739239237.0101,23746250.22569,-373389854.7906406,64569888.99209121,992.9860659164001,-46.70388215200262,-239.9746161676333 +739240530.4834,25030359.20975,-373447497.0285144,64260052.99485743,992.5334012106,-42.4251096702483,-239.1026213528834 +739243117.4301,27596797.71766,-373546200.3609061,63643740.64670408,991.6067343074,-33.88818311112772,-237.38081033819032 +739248291.3233,32722294.818639997,-373677526.94178283,62424297.08165382,989.66563808,-16.894412004513498,-234.02033042925189 +739253465.2166,37837437.49584,-373721197.0091274,61221974.135869786,987.6033898096,-0.0032220169454859615,-230.76083385044268 +739258639.1099,42941587.40681,-373677729.33170426,60036277.816240326,985.4156496378,16.78992710350768,-227.59149426787124 +739263813.0032,48034085.39667,-373547620.50150824,58866767.40841545,983.0986954407999,33.48908002626308,-224.50251848583514 +739268986.8964,53114254.457,-373331347.3226815,57713050.47571623,980.6493343557,50.09785151453032,-221.48501778953369 +739274160.7897,58181402.26529,-373029368.8851595,56574778.47332828,978.0648286839,66.6194824762971,-218.53089768721236 +739284508.5762,68273801.13441,-372170054.65601313,54343371.814955145,972.4813444186,99.41269896337991,-212.7838357985421 +739294856.3628,78305513.28568001,-370973059.39799374,52170501.25691192,966.3333042092,131.88884951089602,-207.2091586621097 +739305204.1493,88270637.9411,-369441575.4445348,50054618.53714855,959.6099341836,164.06454892112473,-201.7624924054748 +739307770.7483,90731324.02478,-369010299.7568399,49538490.321882814,957.8523261014001,172.00036694687228,-200.42680073215672 +739314878.0442,97521263.81796001,-367709992.3095441,48127074.63889353,952.7973154929,193.88545955109083,-196.7524122782051 +739322731.6059,104981137.68640001,-366092829.678088,46597704.50648138,946.8889628641,217.9176161274065,-192.72378613684214 +739330585.1676,112393275.17819999,-364287536.26256865,45099885.022399694,940.6404918795,241.79587214805773,-188.7155741368755 +739338438.7293,119755001.02,-362295303.7742402,43633504.034253106,934.0509343015,265.52448877624255,-184.71567149514368 +739346292.291,127063634.2206,-360117291.6732984,42198540.855358064,927.1197903106,289.10743348220615,-180.7128619133559 +739354145.8527,134316491.4892,-357754629.11869836,40795059.92792541,919.8469650731,312.5484695800763,-176.69665784170283 +739358072.6336,137921165.7326,-356504398.8239615,40105167.433834106,916.0824908525001,324.2169126390725,-174.6804198843303 +739361999.4144,141510890.2164,-355208416.2411548,39423205.66542232,912.2327201009,335.851239268095,-172.65716001548722 +739365926.1953,145085330.1557,-353866814.45624226,38749204.49326199,908.2977352724,347.4518987911393,-170.62571220602558 +739369852.9762,148644151.1255,-352479724.7874452,38083198.3226563,904.2776371843,359.0193427513239,-168.58493220119453 +739373779.757,152187019.1317,-351047276.7713923,37425226.01471762,900.1725444593,370.55402733694194,-166.5336941984076 +739375743.1474,153952366.53530002,-350314083.37049466,37099265.905557156,898.0881669414999,376.3092292971401,-165.5038058887769 +739376724.8427,154833500.366,-349943251.2510623,36937044.861336485,897.0380283607,379.1838207977608,-164.9877340806602 +739377215.6903,155273680.0377,-349756777.19692653,36856124.418108,896.5109726654,380.6203674112448,-164.7294087591486 +739377461.1141,155493672.7784,-349663275.77833235,36815711.7577762,896.2469483512,381.33845384009936,-164.60017280803964 +739377583.826,155603644.83929998,-349616458.9845918,36795517.323293984,896.1148120944999,381.69745038605646,-164.53553639304985 +739377645.1819,155658624.788,-349593034.06828076,36785423.08052081,896.0487129434999,381.87693699831306,-164.5032135611022 +739377675.8599,155686113.24139997,-349581317.48045975,36780376.70293097,896.0156556124999,381.966677389778,-164.48705098744546 +739377706.5379,155713600.68060002,-349569598.1395375,36775330.82110056,895.9825931114001,382.05641583858807,-164.47088764112036 +739377767.8938,155768572.51560003,-349546151.1990437,36765240.54521994,895.9164525988999,382.23588690988527,-164.43855862793572 +739377890.6057,155878504.0081,-349499224.2843526,36745065.94453046,895.7841095352001,382.59480575095307,-164.37389130672287 +739378136.0295,156098318.2476,-349405238.3335631,36704740.55346964,895.5191752702,383.31255027840547,-164.24451936832884 +739378626.8771,156537751.46,-349216738.0533644,36624185.05465667,894.9883143296,384.7476671248114,-163.9856253745568 +739379608.5723,157415834.5461,-348837624.8301835,36463455.53740689,893.9226239362,387.6164152719147,-163.46722945951737 +739381571.9628,159168849.1884,-348070954.51820016,36143525.25216524,891.7753783598,393.34799586094374,-162.42794634622845 +739385498.7436,162662127.1005,-346503892.3385191,35509803.16397925,887.4175055915,404.78770894664353,-160.33893980175554 +739393352.3053,169596517.8195,-343235306.54435366,34267114.77273129,878.4489097339,427.5751141039011,-156.11537894071478 +739401205.8671,176459153.7396,-339788229.1763104,33057857.470269397,869.1446261284001,450.2433783443448,-151.8238865235332 +739409059.4288,183247406.1185,-336163578.1208184,31882598.80814293,859.5066395808,472.79710492354576,-147.4557775394728 +739416912.9905,189958662.9754,-332362233.2864434,30741975.008868262,849.5372372464,495.2413805916628,-143.00223340447366 +739424766.5522,196590331.5652,-328385032.34484303,29636692.387981415,839.2390357647,517.5818959865334,-138.45420663937603 +739432620.1139,203139841.1031,-324232765.4573451,28567529.539480776,828.6150179893999,539.8250844006718,-133.80232106022578 +739440473.6756,209604645.8268,-319906168.8087784,27535340.33506465,817.668580484,561.9782837935825,-129.03676520532693 +739448327.2373,215982228.4514,-315405916.8139576,26541057.779627353,806.4035935795,584.0499283264694,-124.14717642888294 +739449313.3823,216776751.26839998,-314828594.89258933,26418937.81004934,804.9667913462,586.8160986299579,-123.52389794639032 +739449313.3823,216776751.1597,-314828595.24920154,26418937.618280247,804.9667880579,586.8161011743,-123.52389075494143 +739456976.0082,222901682.9132,-310249792.256469,25491176.772638693,793.6347113288,608.2737890033421,-118.60574939329138 +739467812.9974,231413267.5606,-303493920.72085804,24244586.421874076,777.1079937374999,638.5273376544799,-111.40655401670892 +739473231.4921,235601116.04389998,-299993158.2037398,23650961.72494842,768.6292443304001,653.6230924131763,-107.69042383634348 +739478649.9867,239742640.4756,-296410639.0285369,23077697.993027285,760.0099030595,668.7051814841539,-103.89037919040737 +739484068.4813,243837085.893,-292746421.0280664,22525263.518453896,751.2525245713,683.7796735256517,-100.0013546462136 +739489486.976,247883711.8664,-289000527.30638134,21994154.94393103,742.3599459448001,698.8533991722438,-96.01792111408992 +739494905.4706,251881794.2107,-285172941.57867616,21484899.43837668,733.3353253230999,713.9340640718239,-91.93424123963345 +739500323.9652,255830626.8234,-281263603.14505637,20998057.016626015,724.1821878773001,729.030383118583,-87.7440192127442 +739505742.4599,259729523.8174,-277272400.99583083,20534223.17791982,714.9044796282999,744.1522383288793,-83.44044415085449 +739508451.7072,261660038.23000002,-275246050.955491,20311130.98158905,710.2202751599001,751.7261947866838,-81.24386440860135 +739511160.9545,263577821.95329997,-273199167.0427455,20094031.843615547,705.5066311769001,759.3108662610853,-79.01612609500256 +739513870.2018,265482796.09189996,-271131718.00594497,19883011.56354639,700.7641895278999,766.9079053845779,-76.75620307725816 +739516579.4491,267374883.5449,-269043667.958206,19678158.783699274,695.9936325311,774.5190796009192,-74.4630234245895 +739517934.0728,268316071.18690002,-267991904.9995589,19578073.71373847,693.5980358631,778.3305534418836,-73.30361416638146 +739518611.3846,268785446.9361,-267464086.64298755,19528621.613611013,692.3976991016,780.2378695242903,-72.72064185032093 +739519288.6964,269254009.1147,-266934976.0695248,19479565.11254053,691.1956862227,782.1462807726251,-72.13546658925941 +739519966.0083,269721756.5912,-266404572.5275436,19430905.708309665,689.9920095944,784.0558196735961,-71.54806975618163 +739520304.6642,269955324.4649,-266138885.65253136,19406725.388968185,689.3895512939,785.011022303057,-71.25353237031268 +739520473.9921,270072031.8745,-266005920.8958145,19394672.65811257,689.0881678403,785.4887337368832,-71.10605289840532 +739520558.6561,270130366.4398,-265939408.18217015,19388655.660304382,688.9374376249,785.7276172135231,-71.03226033748467 +739520600.9881,270159528.9368,-265906144.24083245,19385649.504528835,688.8620629057,785.8470659201737,-70.99535083546527 +739520643.3201,270188688.2428,-265872875.24299747,19382644.911444575,688.7866817833001,785.9665192838268,-70.95843251219296 +739520685.6521,270217844.35770005,-265839601.18831867,19379641.881348178,688.7112942607,786.0859773126032,-70.92150536301406 +739520727.9841,270246997.28110003,-265806322.07662505,19376640.414634153,688.6359003412,786.2054400149273,-70.88456938307945 +739520812.6481,270305293.5525,-265739748.6813814,19370642.172974154,688.4850933243,786.4443794738538,-70.81067091043036 +739520981.976,270421847.786,-265606541.1982436,19358664.466766268,688.1834026653,786.9223148389833,-70.6627677909095 +739521320.6319,270654802.9559,-265339883.416667,19334784.24678947,687.5797155562,787.8784132297965,-70.36653580137138 +739521997.9438,271120099.62460005,-264805596.22962335,19287325.250458345,686.3711238927001,789.7915357522943,-69.77236034050318 +739522675.2556,271584577.1526,-264270012.83736596,19240269.472797662,685.1609199783,791.705921682965,-69.17588663169457 +739523352.5674,272048234.4529,-263733132.37100595,19193618.47766763,683.949117215,793.6216064740358,-68.57709494735698 +739524707.1911,272973084.0689,-262655476.61804414,19101537.159018815,681.520769851,797.4570176164033,-67.37247758632898 +739527416.4384,274812893.7495,-260484559.31721637,18922302.20351146,676.6455037398,805.1450585103576,-64.93453295099488 +739530125.6857,276639462.4262,-258292779.8730334,18749725.306699812,671.7462652224,812.8581637287762,-62.45717902894893 +739532834.933,278452726.5015,-256080066.76413363,18583915.141694024,666.8240590792,820.599026989492,-59.93900250224945 +739535544.1803,280252625.1945,-253846340.89754418,18424984.30399087,661.8799610072,828.3705477936553,-57.37851993833419 +739540962.675,283812098.6253,-249315493.0797695,18128231.810119838,651.9307851786999,844.0183053701942,-52.124325291308764 +739546381.1696,287317460.80509996,-244699428.94219643,17860454.728057206,641.909022136,859.8295306260529,-46.681148083217465 +739551799.6642,290768349.86770004,-239997176.1128475,17622716.698540553,631.8265792704,875.8370797846612,-41.03410136154662 +739556676.3094,293827332.4278,-235690498.29351088,17435383.331749722,622.7119121508,890.4435185443567,-35.763836977384074 +739561552.9546,296841796.9435,-231312060.28707877,17274213.169189826,613.5710347556001,905.2731703648957,-30.301776022252 +739566429.5997,299811647.9436,-226860682.06609437,17140176.680619612,604.4175612301999,920.3645957097048,-24.633267093172208 +739570818.5804,302446348.04910004,-222790938.539608,17043605.577776685,596.1817375617001,934.2079896766908,-19.34178849231688 +739575207.561,305044931.3055,-218659821.35183448,16970677.671472326,587.9620159878,948.338732804898,-13.85713691828579 +739579596.5417,307607501.8624,-214465972.69468516,16922271.203475744,579.7740589980999,962.8020817209496,-8.165254707322276 +739583546.6243,309883170.3718,-210636578.0365983,16900448.884320565,572.4471334459,976.1472724631096,-2.852765005009701 +739587496.7069,312130002.2048,-206753778.11441678,16899986.978883654,565.1763208998,989.850363964717,2.6519899097116877 +739591446.7895,314348253.9452,-202816056.85491738,16921670.12478003,557.9797903853,1003.9646189840419,8.361893994671163 +739591772.6434,314529977.7801,-202488718.0883374,16924473.144533962,557.3900792357,1005.149171383599,8.842499691391026 +739591772.6434,314529976.4434,-202488722.65452626,16924472.00454639,557.3901148482,1005.1493219637088,8.8426012265233 +739593620.0951,315556647.7884,-200625512.95720446,16943344.113352396,554.0596061667001,1011.9279603910531,11.595961370141197 +739596518.5579,317155051.92380005,-197676803.40996057,16983330.32170725,548.8832936849,1022.7918284353536,16.016175043996952 +739599417.0208,318738550.3054,-194696167.65754855,17036312.178828344,543.7762198902,1033.9633190905718,20.56420718414637 +739602315.4836,320307360.8529,-191682663.03835174,17102668.690095946,538.7505445185,1045.4784479113405,25.245950895431747 +739605213.9465,321861739.2015,-188635235.0822822,17182795.980330586,533.8201822276,1057.3784998862598,30.06731722616962 +739608112.4093,323401984.2546,-185552700.84149015,17277107.186180294,529.0011366828,1069.7110270542107,35.034093575734914 +739611010.8722,324928444.81930006,-182433728.99806383,17386031.785489924,524.3119146468,1082.5310823684968,40.15173539076147 +739613909.335,326441527.57799995,-179276815.99087554,17510014.24224145,519.7740431073,1095.9027567249914,45.425061206335556 +739616807.7979,327941706.7594,-176080257.10025275,17649511.54181075,515.4127207280001,1109.901109860233,50.8578077351068 +739619706.2607,329429535.9157,-172842111.29985285,17804989.183565058,511.25764593480005,1124.6146174409519,56.451982521796424 +739622604.7236,330905662.4586,-169560157.9684883,17976914.891367286,507.3440796095,1140.1483004653082,62.20691580519025 +739625503.1864,332370845.6794,-166231843.36604178,18165748.934876263,503.7142231847001,1156.627768218875,68.11786902066234 +739628401.6493,333825979.3581,-162854213.67053443,18371929.59910875,500.4190259839,1174.2044974233124,74.17397064861365 +739631300.1121,335272120.4545,-159423830.29993305,18595851.165469132,497.5205819499,1193.06279865785,80.3551283971546 +739634198.575,336710525.8053,-155936662.02939194,18837830.938610308,495.0953514867,1213.429128561244,86.62734706690213 +739635647.8064,337427286.44479996,-154170328.21593407,18965658.93045675,494.0890611178,1224.263106446132,89.78148063783641 +739637097.0378,338142699.8155,-152387945.43572795,19098059.221368395,493.2385456244,1235.5846782084977,92.93552626114257 +739638546.2692,338857002.90610003,-150588774.0050256,19235023.298605517,492.55962662769997,1247.4403673705888,96.07745820769202 +739639995.5007,339570457.0847,-148772002.6308416,19376523.086868405,492.0701782785,1259.882616706646,99.19218693282181 +739641444.7321,340283351.3093,-146936739.17301467,19522505.955436304,491.7904637356,1272.9707315231728,102.26078143216381 +739642893.9635,340996005.874,-145081999.90421867,19672888.480416305,491.7435368417,1286.7719985338595,105.25947115641168 +739644343.1949,341708776.7917,-143206697.0039353,19827548.549076296,491.9557233153,1301.3630166123767,108.15835683950814 +739645792.4263,342422060.9394,-141309623.96258026,19986315.24663288,492.4571987147,1316.831282251293,110.91973683619841 +739647241.6578,343136302.1276,-139389438.44839102,20148956.095045157,493.28268339,1333.2770769225017,113.4959108143529 +739648690.8892,343851998.273,-137444642.2035952,20315160.541994765,494.4722793182,1350.8157137851774,115.82628409110055 +739650140.1206,344569709.9045,-135473557.38418514,20484518.61490931,496.07247660760004,1369.5802015778818,117.83351515127015 +739651589.352,345290070.26890004,-133474298.70385091,20656493.098652337,498.1373602395,1389.7243815456618,119.41834863009916 +739653038.5835,346013797.3486,-131444740.66424704,20830382.9655405,500.7300464175,1411.4265740379437,120.45262623552401 +739654487.8149,346741708.1476,-129382479.11103699,21005274.966580383,503.9243691388,1434.893722358571,120.76975373189487 +739655212.4306,347107518.93050003,-128338246.16126011,21092737.841837153,505.7736193797,1447.3627608909208,120.59368370732852 +739655937.0463,347474735.59070003,-127284786.53021835,21179978.902348254,507.80681320080004,1460.3659141629548,120.15158571323786 +739656661.662,347843496.1162,-126221700.31419674,21266791.849838175,510.0370855359,1473.939120720136,119.40515997526813 +739657386.2777,348213948.3881,-125148560.6430689,21352940.52912569,512.4786294109001,1488.120929813732,118.31024184851071 +739658110.8935,348586250.97529995,-124064911.73724884,21438154.37294512,515.1467565719,1502.9525813394712,116.81579680327604 +739658835.5092,348960573.9619,-122970266.95114711,21522122.989734557,518.0579475559,1518.4780345063364,114.86273207492479 +739659560.1249,349337099.80740005,-121864106.81375682,21604489.83167172,521.2298825037,1534.743914776679,112.38248716053215 +739660284.7406,349716024.2196,-120745877.14638162,21684844.751124747,524.6814414305,1551.7993405984932,109.29536385816675 +739660647.0484,349906450.8811,-120182053.14463234,21724122.785287514,526.5182978649,1560.6390835135298,107.49579266382273 +739660828.2024,350001917.2501,-119898930.40512502,21743508.99458405,527.4656246422,1565.1398221325126,106.52648228043131 +739660918.7793,350049715.2329,-119757062.04819772,21753135.162442423,527.946657086,1567.4107702538774,106.02370441828953 +739660964.0678,350073630.6193,-119686050.577364,21757931.02951591,528.1890338104,1568.5514344847343,105.76768873336368 +739660986.7121,350085592.43590003,-119650525.45015915,21760324.597472064,528.3106895893001,1569.1230698365634,105.63851197228121 +739660998.0342,350091574.3781,-119632758.03005111,21761520.282330535,528.3716346200999,1569.4092140351465,105.57362981900917 +739661003.6952,350094565.6081,-119623873.10474832,21762117.849017754,528.4021364558,1569.552367851636,105.5411151018875 +739661009.3563,350097557.0108,-119614987.36892574,21762715.23152005,528.4326578528,1569.695576181445,105.5085512197569 +739661020.6784,350103540.3348,-119597213.46440026,21763909.44274317,528.4937593730999,1569.9821564880604,105.44327574479064 +739661043.3227,350115509.06060004,-119561655.91486067,21766295.642339025,528.6161976001,1570.5559723874012,105.31213236202325 +739661088.6111,350139454.8474,-119490501.78549728,21771059.087761596,528.8620171061,1571.7062310279762,105.0474633315581 +739661179.1881,350187379.9623,-119348036.84833401,21780549.65650135,529.3574468138,1574.01730137736,104.50849498201319 +739661360.342,350283365.96889997,-119062475.77695817,21799381.381830864,530.3636174988001,1578.6820200819243,103.39121242777355 +739661722.6499,350475894.188,-118488792.47273165,21836413.052312866,532.4384018091,1588.184700081883,100.99241954012768 +739662447.2656,350863283.51049995,-117330882.30110447,21907656.66951108,536.8474426864,1607.9063946733431,95.47896551073143 +739663171.8813,351253998.44659996,-116158322.70811486,21974523.595966097,541.6211024060999,1628.626904697573,88.88582952762113 +739663896.497,351648311.29639995,-114970371.66304009,22036170.640464272,546.7816242298001,1650.3959198246432,81.04058980053856 +739664621.1127,352046510.1915,-113766253.07726946,22091619.36940718,552.3502950841,1673.2571744145368,71.74167476577725 +739665345.7285,352448897.9765,-112545162.58737467,22139733.33733859,558.3461913845,1697.2441441889505,60.75374534279695 +739666070.3442,352855789.9939,-111306277.04189989,22179191.848847724,564.7843782499,1722.3740446982267,47.802766500237794 +739666794.9599,353267510.2694,-110048769.24087639,22208460.103590596,571.6733760362999,1748.6395953952929,32.57106465739275 +739667519.5756,353684385.6788,-108771829.17505647,22225755.988915663,579.0116467618,1775.997854634179,14.692941203446026 +739668244.1913,354106736.8998,-107474695.35512684,22229014.069932368,586.7828548042,1804.355472632839,-6.248239935843799 +739668968.807,354534865.5998,-106156697.73669463,22215848.395893533,594.9495904449999,1833.5495766099775,-30.719922284343284 +739669693.4227,354969036.3179,-104817316.5984391,22183517.387420963,603.4453397571,1863.3238637159207,-59.23492329864666 +739670418.0384,355409451.9355,-103456260.27698006,22128895.273425646,612.1646449244,1893.3000799343595,-92.33734998348064 +739671059.5058,355804632.4591,-102233313.8312709,22059120.66540677,619.9463838403,1919.5823307069636,-125.91034644836998 +739671059.5058,355804632.0737,-102233315.00530891,22059121.075290363,619.9463788608999,1919.5823503381293,-125.91008345146554 +739671163.413,355869114.6441,-102033636.90832482,22045735.168822583,621.2025332141001,1923.7841487253831,-131.7521998208149 +739671748.6758,356234736.4587,-100900887.07496737,21958534.61848414,628.1969721843001,1946.9732149549284,-166.87073728359996 +739672333.9386,356604386.5513,-99754883.20945685,21849645.365432274,634.9406024525999,1968.9892643378248,-205.89924679012904 +739672919.2013,356977866.38740003,-98596474.32491769,21716733.38689746,641.2511294652,1989.2620187445666,-248.97788518386233 +739673504.4641,357354861.347,-97426868.53691086,21557414.26225755,646.9146112186,2007.136688687346,-296.1321400787704 +739674089.7269,357734923.4296,-96247677.56275454,21369332.03798717,651.6904292438,2021.8933220220197,-347.2325089213089 +739674382.3583,357925924.853,-95655109.19014253,21263801.015745703,653.6653739873,2027.8678745790846,-374.1700662985525 +739674674.9897,358117458.3541,-95060945.39628987,21150261.391513564,655.3215210967,2032.781969272763,-401.95627776174 +739674967.6211,358309425.9296,-94465509.76162891,21028475.466493502,656.6268145314999,2036.5457252594938,-430.5159535099961 +739675260.2525,358501720.36679995,-93869151.42452474,20898229.686655454,657.5504895477001,2039.0747190669647,-459.75928762543873 +739675552.8839,358694225.7313,-93272243.15162984,20759338.885784145,658.0638413106999,2040.2922927051513,-489.58218804722617 +739675845.5153,358886818.08930004,-92675178.71545576,20611650.34652653,658.1410189036,2040.131886967644,-519.8671078333066 +739676138.1467,359079366.4598,-92078369.59846249,20455047.5648612,657.7598091927999,2038.5392886280094,-550.4844065238024 +739676430.7781,359271733.9741,-91482241.12155989,20289453.506857857,656.9023736729,2035.4746782601464,-581.2942499285116 +739676723.4095,359463779.2675,-90887227.92421265,20114833.27411448,655.555893257,2030.9143482013737,-612.1489834738555 +739677016.0409,359655358.0234,-90293769.06359884,19931195.985637046,653.7130856164999,2024.8519877111214,-642.8959317414669 +739677308.6723,359846324.65010005,-89702302.79674399,19738595.79750842,651.3725588096,2017.2994375437015,-673.3805019407998 +739677601.3037,360036534.0342,-89113261.23050222,19537131.985445134,648.5389760355,2008.286851180325,-703.4494577551034 +739677747.6194,360131309.9796,-88819781.75098725,19433119.383590233,646.9403963438,2003.2473741588608,-718.2813768594962 +739677820.7772,360178608.05639994,-88673324.88751197,19380302.087921806,646.096424994,2000.5974967589268,-725.63877698594 +739677857.3562,360202233.671,-88600169.93693812,19353691.97326149,645.6633829822,1999.2404710380758,-729.3018745387428 +739677875.6456,360214040.50479996,-88563611.17326383,19340336.717731826,645.4441132364001,1998.5539954996975,-731.1294042472953 +739677884.7904,360219942.41359997,-88545336.51174843,19333646.56195975,645.3337931711,1998.2087746606337,-732.0421496673378 +739677889.3627,360222892.9892,-88536200.36636318,19330298.354805052,645.2784620931999,1998.0356694343468,-732.4982656929361 +739677891.6489,360224368.182,-88531632.59066498,19328623.469252877,645.2507538248,1997.9489932396525,-732.7262593065605 +739677892.792,360225105.7547,-88529348.7771454,19327785.831019524,645.2368890124,1997.9056242633242,-732.8402399835934 +739677893.9351,360225843.31149995,-88527065.01321942,19326948.062513463,645.2230170826,1997.8622347060223,-732.9542098975518 +739677896.2213,360227318.3775,-88522497.63421129,19325272.134688713,645.1952518752,1997.775393864977,-733.182117408294 +739677900.7936,360230268.31890005,-88513363.47228022,19321918.716161977,645.1396361022,1997.6014654013923,-733.6378029171867 +739677909.9384,360236167.4377,-88495097.53796543,19315205.63042363,645.0280633829,1997.2526223303303,-734.5486540719849 +739677928.2278,360247962.6038,-88458575.26957873,19301754.486396976,644.8035553359,1996.5509994781835,-736.3682624484253 +739677964.8068,360271540.53489995,-88385569.4689096,19274752.48849929,644.3491057671,1995.1320706067258,-739.9989881650578 +739678037.9646,360318645.868,-88239715.47588626,19220351.12608024,643.418612518,1992.2320012373953,-747.2255618514002 +739678184.2803,360412647.107,-87948658.93819506,19109971.2149918,641.4724343024,1986.187371244512,-761.5320400315178 +739678330.596,360506355.4209,-87658510.1625511,18997513.12388563,639.4151018216,1979.8255450754793,-775.629768102523 +739678476.9117,360599754.775,-87369314.74541865,18883008.511686176,637.249795187,1973.1577857315665,-789.5036404641179 +739678623.2274,360692829.6206,-87081116.57961974,18766491.183541037,634.9799697993001,1966.1961031099913,-803.1394359735243 +739678769.5431,360785564.93340003,-86793957.75091174,18647996.95722611,632.6093323991,1958.953175232021,-816.5238734911416 +739678915.8588,360877946.248,-86507878.44619378,18527563.522112694,630.1418156813,1951.4422660596197,-829.6446582075301 +739679208.4902,361061592.0003,-85939109.1970845,18281038.253594164,624.9328452732999,1935.6719809918068,-855.0512335793469 +739679501.1216,361243663.42370003,-85375089.63865878,18027248.626948297,619.3880177489,1918.9998439868714,-879.2816956124087 +739679793.753,361424067.5901,-84816066.4026577,17766548.05232329,613.5441671004,1901.5443776272677,-902.2757453498813 +739680086.3844,361602722.519,-84262251.18354206,17499305.082502224,607.439139683,1883.4254158786484,-923.9901238669213 +739680379.0158,361779557.3535,-83713820.71302697,17225898.5062852,601.1109835212,1864.7616982945176,-944.3979894227106 +739680671.6472,361954512.30990005,-83170917.39837357,16946712.686569437,594.5972175974,1845.6687507262595,-963.4878840824434 +739680964.2786,362127538.4282,-82633650.53247009,16662133.249436745,587.9342008685,1826.2571027289632,-981.2623856024774 +739681256.91,362298597.1538,-82102097.9719863,16372543.199479776,581.1566123952,1806.6308661499475,-997.736542657965 +739681549.5414,362467659.7825,-81576308.18236399,16078319.523067437,574.2970455362,1786.886674164116,-1012.9361868423741 +739681842.1728,362634706.80649996,-81056302.53498337,15779830.278186677,567.385714428,1767.1129667543528,-1026.8962039408345 +739682134.8042,362799727.18689996,-80542077.77260962,15477432.197713967,560.4502634881001,1747.3895870704732,-1039.6588347519223 +739682427.4356,362962717.5858,-80033608.54949078,15171468.775102431,553.5156692912,1727.7876505973118,-1051.2720595314072 +739683012.6984,363282628.8821,-79033740.11273465,14550145.35358738,539.7355659936,1689.1896883747634,-1071.2621053172204 +739683597.9612,363594538.39559996,-78056147.65812214,13918297.802210342,526.192627015,1651.7212922490478,-1087.312097802334 +739684183.2239,363898618.5348,-77100081.66722576,13278097.862179317,512.9956890814001,1615.6663773291048,-1099.880457977568 +739684768.4867,364195095.4248,-76164656.60335532,12631451.579034314,500.22044031089996,1581.2091167636681,-1109.413347544024 +739685353.7495,364484231.2097,-75248903.56825247,11980011.556410909,487.91525347469997,1548.4533842714047,-1116.3286670506873 +739685939.0123,364766309.7446,-74351811.88065499,11325196.410568591,476.1068550147,1517.4409596364367,-1121.007130317378 +739686524.2751,365041625.449,-73472360.64116096,10668213.835935663,464.8054043738,1488.1673990306256,-1123.7885054249218 +739687109.5379,365310474.9116,-72609541.8002323,10010084.784727156,454.0088019956,1460.5951898505125,-1124.9713611880204 +739687694.8007,365573150.77970004,-71762376.3191544,9351667.08501995,443.7061978489,1434.6642409567992,-1124.8150052431072 +739688280.0635,365829937.4819,-70929924.9057861,8693677.537104875,433.8807605129,1410.2999917854718,-1123.5426489686297 +739688865.3263,366081108.3794,-70111294.60614248,8036711.965960037,424.5118060408,1387.4195119584808,-1121.3451338713285 +739689450.5891,366326923.9994,-69305642.33547203,7381263.026459467,415.5763971418,1365.9359732222133,-1118.3847874836488 +739690035.8519,366567631.0815,-68512176.15902191,6727735.805400737,407.0505178917,1345.7618421179807,-1114.7991422188215 +739690621.1147,366803462.2066,-67730155.01810671,6076461.309615772,398.9099168681,1326.8110912720203,-1110.704374834161 +739691206.3775,367034635.8421,-66958887.388218656,5427708.035318077,391.13069596360003,1309.0006719622008,-1106.198397263724 +739691791.6403,367261356.67270005,-66197729.24168237,4781691.848095529,383.6897078034,1292.251441688346,-1101.3635798177297 +739692376.9031,367483816.1206,-65446081.589978844,4138584.3656856455,376.5648107052,1276.4886948756146,-1096.2691165570272 +739692962.1659,367702192.9825,-64703387.8022594,3498520.0636410713,369.73502009609996,1261.6424124193231,-1090.9730603828898 +739694132.6914,368127355.2533,-63242830.49605732,2227908.223515149,356.88301078020004,1234.4427733754526,-1079.9628358431626 +739695303.217,368538048.55120003,-61812347.11996251,970394.8542700559,344.9906540962,1210.1850881010503,-1068.6342471159164 +739696473.7426,368935321.91459996,-60408734.03453758,-273777.77749144286,333.93410711459995,1188.4698948215275,-1057.1972786304252 +739697644.2682,369320089.7763,-59029219.432334095,-1504573.0053710118,323.60695619169996,1168.9576005580611,-1045.7970863881285 +739698814.7938,369693151.2262,-57671397.96534004,-2722095.6878127716,313.9180899944,1151.3600420531232,-1034.5327977614527 +739699985.3194,370055206.58320004,-56333175.466290504,-3926546.4454343095,304.78957932099996,1135.4326397281461,-1023.4708130457411 +739701155.845,370406871.7168,-55012721.92429351,-5118189.184049234,296.1547197174,1120.967449642342,-1012.6542468430089 +739702326.3706,370748690.13,-53708432.26010352,-6297328.109991431,287.9563183365,1107.787243043466,-1002.1096494246477 +739703496.8961,371081143.22249997,-52418893.31990774,-7464291.1410068795,280.1452104877,1095.7404865422823,-991.8517993715898 +739704667.4217,371404658.9059,-51142856.41532982,-8619418.39591888,272.67901280079997,1084.697183833101,-981.8871483428806 +739705837.9473,371719618.95769995,-49879214.04437796,-9763053.887706412,265.5210684075,1074.5454039541785,-972.2162904877059 +739707008.4729,372026365.1247,-48626980.688612774,-10895539.793525886,258.63956815259996,1065.1884171976012,-962.8357493250826 +739708178.9985,372325204.4292,-47385276.22710648,-12017212.503633324,252.0068152028,1056.5423198492083,-953.7392653723839 +739709349.5241,372616413.55160004,-46153312.29413967,-13128399.90657168,245.5986110591,1048.5340657882887,-944.918730406309 +739710520.0497,372900242.6496,-44930380.45353551,-14229419.663333809,239.39374231,1041.0998322092485,-936.3648606749268 +739712861.1008,373446647.6853,-42509120.728564374,-16402169.749513468,227.5215739647,1027.736315124256,-920.0168960942751 +739714968.0469,373915244.4785,-40355081.84661785,-18325819.642120868,217.3664481632,1017.1770190567568,-906.1132298138346 +739717074.993,374362905.6371,-38222028.397875234,-20220928.335220724,207.63777191900002,1007.7839501698005,-892.9146948204432 +739719181.939,374790465.529,-36107693.12483547,-22088921.187843196,198.276628716,999.3827704172402,-880.3645801571065 +739721288.8851,375198645.8915,-34010141.39386511,-23931107.891938485,189.23461198389998,991.8308085018682,-868.4099886490383 +739723395.8311,375588075.57629997,-31927711.85728186,-25748691.15419656,180.4716240032,985.0103130452846,-857.0021982148008 +739725502.7772,375959306.1792,-29858969.65594934,-27542775.38626915,171.9541967911,978.8233325544934,-846.0966759733101 +739727609.7232,376312824.6092,-27802668.963394783,-29314375.488116097,163.6541977781,973.1877878793623,-835.6529026543001 +739729716.6693,376649063.2137,-25757722.913195003,-31064424.962453045,155.5478233579,968.0344316730791,-825.6341040297932 +739731823.6154,376968408.0393,-23723179.15296726,-32793783.515945163,147.6148088063,963.3044713645929,-816.0069434629045 +739733930.5614,377271205.6028,-21698199.8723298,-34503243.960030615,139.8378034005,958.9476962308186,-806.7412085715835 +739736037.5075,377557768.4875,-19682045.344190612,-36193538.472511016,132.20187178510002,954.9209882533091,-797.8095077003984 +739738144.4535,377828379.9927,-17674060.29088992,-37865344.24141078,124.694093428,951.1871298501932,-789.1869866360568 +739740251.3996,378083298.0285,-15673662.491517985,-39519288.53008203,117.3032383852,947.7138418406623,-780.8510681363158 +739742358.3456,378322758.3879,-13680333.234935958,-41155953.220291734,110.0195031949,944.4730021067876,-772.7812164126705 +739744465.2917,378546977.5181,-11693609.252324764,-42775878.89124363,102.8342943099,941.4400067123028,-764.9587253140625 +739748679.1838,378950474.9346,-7738361.218379118,-45967490.48913364,88.7300896665,935.9136618495111,-749.9890337820115 +739752893.0759,379295216.29940003,-3805085.012367118,-49097751.53394455,74.9400032334,930.9905012392583,-735.8222460564614 +739757106.968,379582437.79150003,108512.45556506142,-52169827.347188994,61.42404249516,926.556907540179,-722.3577533521257 +739761320.8602,379813224.7218,4004296.352650173,-55186493.18612093,48.15022560173,922.5223256273175,-709.5104849536194 +739765534.7523,379988541.0953,7883788.93622461,-58150193.43722661,35.09269529932,918.8137900021687,-697.208063895448 +739769748.6444,380109252.36719996,11748234.838412896,-61063090.20549747,22.23033725013,915.3719305078422,-685.3885476283277 +739773962.5365,380176143.1588,15598651.81835895,-63927103.314047314,9.545753329958,912.1480135154674,-673.9986276148268 +739778176.4286,380189931.2152,19435870.681753,-66743943.56778464,-2.975512198527,909.1017185055925,-662.9921831180009 +739779049.0771,380186211.1831,20228929.52971472,-67321526.3872295,-5.549259420576,908.4898706998283,-660.7570195041797 +739779049.0771,380186224.23649997,20228964.73946974,-67321531.1579924,-5.549122837767,908.4901850875899,-660.7572554572392 +739779641.2517,380182421.9952,20766827.429818872,-67712367.79352388,-7.292013235442,908.0783588797142,-659.2486970744665 +739786498.4654,380063713.9879,26977786.801275957,-72174171.33674683,-27.26923355344,903.4820322586585,-642.2309780883515 +739793355.679,379809242.7055,33158127.805763066,-76521883.70850334,-46.89500356340999,899.1322940691895,-625.9516590595986 +739800212.8927,379421308.52820003,39309242.80964601,-80760167.8773399,-66.20001510942001,894.9457075756081,-610.2977481709976 +739807070.1064,378902025.11490005,45432019.9967127,-84892984.0124889,-85.2083642013,890.8577260474871,-595.1764393543721 +739813927.3201,378253358.539,51526955.58289008,-88923712.4930093,-103.9392414099,886.8178866276805,-580.510804743396 +739820784.5338,377477156.5229,57594237.87116575,-92855251.03869918,-122.4081372885,882.7863840761833,-566.2365426532616 +739827641.7475,376575170.7133,63633811.53168905,-96690092.52208942,-140.6277155724,878.7315872157208,-552.299492758768 +739834498.9612,375549073.6761,69645426.84652999,-100430387.44475678,-158.60845650710002,874.6282063386219,-538.6537126181851 +739841356.1748,374400472.25450003,75628678.58878922,-104077995.24311793,-176.35913570190002,870.4559265051377,-525.2599758263294 +739848213.3885,373130917.8632,81583036.14413434,-107634525.82597762,-193.8871867594,866.1983687443482,-512.0845834302472 +739855070.6022,371741914.7355,87507867.75589275,-111101374.21228477,-211.19897744210002,861.8422963148662,-499.0984177989702 +739861927.8159,370234926.4691,93402459.86917643,-114479749.23811507,-228.3000227484,857.3769993134475,-486.2761814349363 +739868785.0296,368611381.2813,99266032.74135305,-117770697.56301978,-245.1951507032,852.7938133469203,-473.59577985888035 +739872213.6364,367756337.5482,102185928.36383554,-119383674.48222855,-253.5668491887,850.4557685548332,-467.3026124694639 +739873927.9398,367318073.4144,103642856.473298,-120182084.08601624,-257.7339506721,849.2747953692174,-464.16680083884023 +739874785.0916,367096265.1342,104370559.59660855,-120579274.47044678,-259.81284041820004,848.6812830028637,-462.6014717773602 +739875213.6674,366984693.1048,104734220.16725388,-120777366.69648623,-260.8511232056,848.3837658581399,-461.8194373150345 +739875427.9553,366928740.2629,104916002.6094885,-120876287.14634717,-261.3699744685,848.2348164950388,-461.42857586085 +739875535.0993,366900722.1533,105006881.85795623,-120925715.9652228,-261.6293276158,848.1602940478786,-461.23318386201356 +739875588.6713,366886702.6785,105052318.4876039,-120950422.52429393,-261.7589860744,848.1230208744099,-461.13549751998767 +739875642.2433,366872676.258,105097753.12030445,-120975123.85031629,-261.8886324586,848.0857397312453,-461.0378176045268 +739875749.3872,366844602.58250004,105188616.39264862,-121024510.80455393,-262.147889011,848.0111535260278,-460.84247701808584 +739875963.6752,366788371.9112,105370318.95448878,-121123221.93121281,-262.6662572992,847.8618853734195,-460.45187262709914 +739876392.251,366675577.43160003,105733628.05062993,-121320393.13371816,-263.7024149934,847.562965568004,-459.6709692656274 +739877249.4027,366448657.0821,106459861.36433215,-121713731.94211027,-265.772417909,846.9635877625564,-458.11037066556804 +739878963.7061,365989500.05700004,107910782.30502596,-122496399.94361684,-269.9031980093,845.7586466765722,-454.9938989797924 +739882392.313,365049994.27750003,110806391.65065844,-124045734.2537736,-278.1280441757,843.3237743637859,-448.77902523419914 +739889249.5267,363086799.6942,116572275.92595789,-127080669.77619289,-294.4323261597,838.3522808377633,-436.4152477482992 +739896106.7404,361012460.74200004,122303596.30570707,-130031094.99446815,-310.54531799660003,833.2422121210072,-424.12831131278836 +739902963.954,358828279.0924,127999392.44005886,-132897494.5114173,-326.46991133660003,827.9907362521606,-411.90609342311575 +739909821.1677,356535537.3294,133658686.82364318,-135680274.07891306,-342.20878883380004,822.5956607718372,-399.7376860312825 +739916678.3814,354135500.2529,139280488.7993058,-138379768.31394553,-357.7644601996,817.0553261563431,-387.6132230358966 +739923535.5951,351629415.9584,144863797.89968207,-140996247.32194766,-373.1392921735,811.3685180373647,-375.5237330052402 +739930392.8088,349018516.7317,150407606.6545196,-143529922.40245333,-388.33553373219996,805.5343946873849,-363.46101271427347 +739937250.0225,346304019.7709,155910902.90032363,-145980950.8887385,-403.3553375994,799.5524267104823,-351.41751772320515 +739944107.2362,343487127.7925,161372671.78075403,-148349440.37967062,-418.20077876529996,793.4223472511081,-339.38626746200197 +739950964.4498,340569029.50519997,166791897.39293396,-150635452.30429077,-432.8738707283,787.1441104059536,-327.36076202100054 +739964678.8772,334433900.9225,177498658.07872325,-154960076.04717308,-461.7108392528,774.1438841076668,-303.30295712714695 +739978393.3046,327907875.29370004,188023084.51314506,-158954494.06994736,-489.8816434319,760.5546244938378,-279.19912131776215 +739980757.4181,326744073.7011,189818286.43126968,-159609632.39886108,-494.6715683017,758.1528899088631,-275.0363545776815 +739988598.5783,322803389.6813,195731492.02357316,-161712045.1443168,-510.4210446202,750.0629997199025,-261.2083539364131 +739999462.0454,317141440.3289,203817525.31561887,-164445337.58871892,-531.8962182806,738.5419421743247,-241.98599752144077 +740010325.5124,311248340.1156,211776438.8029238,-166969325.3501193,-552.9780099945,726.6604259711077,-222.671523984855 +740021188.9795,305128318.4999,219604336.8664035,-169282905.08381715,-573.6746078219,714.4222378150135,-203.2460099087659 +740032052.4465,298785513.3696,227297367.00542378,-171384766.55328026,-593.9946862665,701.831516610198,-183.69024639998653 +740042915.9136,292223964.9823,234851723.5374267,-173273387.61687407,-613.9475853668,688.8927481367348,-163.9843592448886 +740053779.3806,285447607.5511,242263651.4808535,-174947024.81408176,-633.5435248842,675.6107855295705,-144.10741134368504 +740064642.8477,278460258.32640004,249529450.7658637,-176403699.52337813,-652.7938667515,661.9908952183954,-124.03696993125828 +740075506.3147,271265603.50339997,256645481.0899022,-177641179.1535635,-671.7114418673,648.0388295136107,-103.74861950912648 +740080938.0482,267591648.2392,260146213.04124933,-178176947.78231266,-681.0499522462001,640.9401859138802,-93.51441990276334 +740083653.915,265735702.0631,261882064.8709595,-178423942.82208583,-685.6900099855,637.3605787749373,-88.37324883916298 +740085011.8484,264803009.82540002,262746338.31782576,-178542198.71426073,-688.0028565364,635.5632522090945,-85.79643907386918 +740085690.8151,264335486.75390002,263177558.9487941,-178600013.7693387,-689.1574994197,634.6627143860597,-84.50645159548279 +740086030.2984,264101431.33200002,263392939.87017488,-178628592.75972432,-689.7343776978,634.2119776262992,-83.86105884241968 +740086200.0401,263984330.19329998,263500572.93599826,-178642800.08104584,-690.0227062901,633.9864923833586,-83.53826228875207 +740086284.9109,263925761.27229998,263554375.11469597,-178649883.19350925,-690.166842979,633.873720557777,-83.37683892196364 +740086369.7818,263867180.11900002,263608167.7215325,-178656952.60513383,-690.3109612755,633.7609292679895,-83.21539880321839 +740086539.5234,263749981.12259996,263715724.21249056,-178671050.31969032,-690.5991427294999,633.5352883118594,-82.8924682340949 +740086879.0068,263515436.41169998,263930722.2592609,-178699081.27589875,-691.1752853177001,633.0837729867909,-82.24640540152299 +740087557.9735,263045760.4663,264360258.24316558,-178754484.97667345,-692.3266912012999,632.1798094866953,-80.95346952622776 +740088915.9069,262104065.2596,265217486.8194006,-178862656.95047635,-694.6260018422,630.368157549497,-78.36432927008065 +740091631.7736,260211323.647,266924546.84853154,-179068438.2786183,-699.210749501,626.7300063541106,-73.17275008677146 +740097063.5071,256388609.35869998,270308891.07655,-179437578.25727904,-708.3258405040001,619.3947468186165,-62.73454417066279 +740107926.9742,248595599.7017,276956995.72692597,-180004712.24400908,-726.3478823086999,604.4920748966271,-41.62214787068581 +740118790.4412,240608228.17839998,283441557.3689918,-180340641.2397132,-744.1129094721,589.2875694488688,-20.161930336583765 +740129653.9083,232429133.712,289759352.75430536,-180441346.43865347,-761.6500931693,573.7917575893039,1.6915191692079645 +740140517.3753,224060603.88849998,295907282.49877,-180302274.58047155,-778.9952382458,558.016989024189,23.991482833048224 +740147711.1202,218415667.0118,299883482.6413318,-180075718.20876038,-790.3967423306,547.4245301116324,39.034564450573555 +740151939.4303,215059500.5892,302184903.9698999,-179891765.97355932,-797.0741314481,541.1463958226258,47.98916674364568 +740159074.3719,209332311.3914,306007920.870092,-179494888.3194219,-808.3131032502,530.4687072630262,63.30427228074362 +740166209.3134,203525012.2027,309754392.2798542,-178987756.95582584,-819.5333572671,519.6909378702469,78.89897444943006 +740173344.255,197637656.12510002,313423627.86149,-178368275.58604947,-830.758095904,508.81989710397954,94.80235006286449 +740180479.1966,191670115.4706,317014989.46920484,-177634125.37105128,-842.0149565868,497.86343821607466,111.04783925444437 +740184046.6673,188656178.039,318781284.36862034,-177223255.6646714,-847.6655444835,492.3559685593045,119.31073524178774 +740187614.1381,185622046.3714,320527899.3424864,-176782730.704402,-853.3371042259,486.8306739932698,127.67413994839828 +740191181.6089,182567636.4569,322254773.2292321,-176312181.64611065,-859.0348787577,481.2889347037748,136.14389641745623 +740194749.0797,179492844.6255,323961849.9945946,-175811217.9515048,-864.7646585623,475.7322471082512,144.72633270454682 +740198316.5505,176397545.4663,325649079.1689813,-175279425.56286356,-870.5328537537,470.1622365251893,153.42831498028673 +740200100.2859,174842159.9399,326485236.7756233,-175001832.29906926,-873.4335501272001,467.3727817779568,157.82644337905631 +740201884.0213,173281589.4883,327316416.3287845,-174716364.8931903,-876.3465779469,464.5806715509335,162.2573078527817 +740203667.7566,171715811.2157,328142613.31033146,-174422964.03175813,-879.2729522719001,461.7861519714995,166.72194621964363 +740205451.492,170144800.365,328963823.6509208,-174121568.50870502,-882.2137451962,458.98948028028576,171.22144279301557 +740206343.3597,169357324.4343,329372557.6909595,-173967853.06657436,-883.6899000967001,457.5904209592422,173.48461506638222 +740207235.2274,168568530.1802,329780043.75815964,-173812115.10736853,-885.1700895908,456.1909254402309,175.75693096498793 +740208127.0951,167778413.94349998,330186281.47774225,-173654346.4160462,-886.6544656266,454.7910293021345,178.03854036322585 +740208573.029,167382858.9016,330388932.098606,-173574697.94263384,-887.3982722861,454.09094234502845,179.1828779061946 +740208795.9959,167184956.9366,330490140.3318602,-173534682.21179342,-887.770588952,453.7408661597608,179.755938376359 +740208907.4794,167085974.8159,330540715.17710644,-173514626.4146788,-887.9568517187,453.5658201450975,180.04269260878493 +740208963.2211,167036475.9677,330565995.281685,-173504586.52592736,-888.0500093488,453.47829518925835,180.18612585919627 +740208991.092,167011724.5962,330578633.504388,-173499563.58310813,-888.0965947431,453.4345322279677,180.25785653437538 +740209018.9628,166986971.9262,330591270.5073451,-173494538.64095744,-888.14318453,453.39076894616505,180.32959658297167 +740209046.8337,166962217.95769998,330603906.2906558,-173489511.69924593,-888.1897787146,453.3470053448821,180.4013460098786 +740209074.7046,166937462.6905,330616540.85422415,-173484482.75769228,-888.2363773018001,453.3032414253861,180.4731048197784 +740209130.4463,166887948.2595,330641806.3220088,-173474418.87383792,-888.3295877039001,453.21571263685723,180.61665060912438 +740209241.9297,166788903.808,330692322.62054205,-173454267.0965014,-888.5160615592,453.04065129163723,180.90385499850885 +740209464.8967,166590752.519,330793296.66676056,-173413867.44419217,-888.8892225976999,452.6905137872469,181.4787161102036 +740209910.8305,166194200.1741,330995010.5410765,-173332683.27770498,-889.6364070326999,451.99018160596336,182.63025643748998 +740210802.6982,165400094.6074,331397501.30174404,-173168771.699639,-891.1342987365,450.5893054068538,184.94068047343367 +740211694.5659,164604650.9816,331798742.5501665,-173002795.1210435,-892.6370299808,449.1881793542948,187.26103293792184 +740212586.4336,163807864.8959,332198734.08275884,-172834744.6057245,-894.1447761441999,447.7868433788277,189.5914819568755 +740214370.169,162210246.9334,332994967.36987454,-172492385.24863073,-897.1760410163,444.98370615931293,194.28336222097556 +740216153.9044,160607202.3475,333786200.24904794,-172141619.13177028,-900.229605438,442.1802328388253,199.01774877202467 +740217937.6398,158998689.94169998,334572432.43619776,-171782369.10821372,-903.3070747202,439.3767791333968,203.79613900302598 +740219721.3752,157384665.5663,335353664.2971996,-171414555.29384664,-906.4101550555,436.5737184697423,208.62010480648834 +740223288.8459,154139888.4003,336901131.955225,-170652902.2314726,-912.7005265637999,430.97036532966194,218.41145224932063 +740226856.3167,150872451.2063,338428620.43000877,-169855960.76224813,-919.1167107286,425.3735599610643,228.40604793651664 +740230423.7875,147581873.40129998,339936159.6560053,-169022978.11686972,-925.6769099352,419.78705367892485,238.61968898091436 +740233991.2583,144267604.938,341423793.6764651,-168153142.09797773,-932.401931346,414.2150132677036,249.06993053295582 +740237558.7291,140929016.1905,342891582.2279624,-167245574.36837792,-939.3156664808,408.6620802575244,259.7763412934478 +740241126.1999,137565385.7667,344339602.5754141,-166299322.65748462,-946.4456788462,403.13344044033454,270.7608043786827 +740244693.6706,134175886.67479998,345767951.5317704,-165313352.1624791,-953.8239400248,397.63490628173884,282.0478749031016 +740248261.1414,130759568.46910001,347176747.9297652,-164286534.99100485,-961.4877352734001,392.17301361693353,293.6652021901071 +740251828.6122,127315336.64320001,348566135.3687147,-163217638.3927922,-969.480815342,386.75513704233344,305.6440356023625 +740255396.083,123841926.896,349936285.4580894,-162105310.81077874,-977.8548543667999,381.38962692579133,318.0198287710254 +740258179.7667,121110437.08649999,350992176.10083437,-161206247.97372004,-984.6928540249,377.2453760508961,327.9781312853528 +740259678.5665,119631759.3346,351555935.2139517,-160710570.3370371,-988.4981391433,375.0313284010695,333.4576606036169 +740262569.2178,116763447.9367,352633890.86694187,-159731107.5298671,-996.1072395755,370.79940534667526,344.27482516422265 +740265459.8691,113872579.03310001,353699692.61676526,-158719873.834546,-1004.1140554000001,366.6233948953545,355.4445284391928 +740268350.5204,110957923.15879999,354753512.6894322,-157675804.6694692,-1012.575363572,362.51077377134516,366.998884426385 +740271241.1717,108018072.2136,355795546.20527387,-156597736.95014602,-1021.55835186,358.4699255820781,378.97402977078923 +740274131.823,105051405.8847,356826013.9804564,-155484396.59732276,-1031.143116039,354.51026777318145,391.4107246698078 +740277022.4742,102056049.91479999,357845165.717701,-154334384.21904042,-1041.42591216,350.6423920061966,404.35503480584106 +740279913.1255,99029823.36359999,358853283.6096117,-153146158.68916756,-1052.523439501,346.87821553888534,417.85909400349334 +740282803.7768,95970171.82675,359850686.4088506,-151918018.40655628,-1064.5785582409999,343.2311340401743,431.98192316504156 +740285694.4281,92874081.02106,360837733.881742,-150648080.24571496,-1077.768028615,339.71615777878316,446.7902535527769 +740287139.7537,91311276.22156,361327499.19889396,-149996793.11753076,-1084.8551915589999,338.01336339069195,454.4746220563083 +740288585.0794,89737964.39619,361814831.6367004,-149334256.13463336,-1092.313148881,336.34999255456404,462.3592281618398 +740290030.405,88153583.40201,362299789.8590419,-148660172.17438787,-1100.178955379,334.72839089664967,470.45483433657506 +740291475.7307,86557514.0425,362782435.984244,-147974228.1778663,-1108.494630802,333.1509906626517,478.7727273674594 +740292921.0563,84949072.30018,363262835.6967243,-147276094.42299476,-1117.308012165,331.6202907092629,487.32466740921416 +740294366.382,83327500.20206,363741058.3241707,-146565423.8960555,-1126.67378613,330.13882492411676,496.12279670247773 +740295811.7076,81691955.04584001,364217176.85082275,-145841851.85380256,-1136.654744831,328.7091145431914,505.17949093630216 +740297257.0332,80041496.61016,364691267.8592912,-145104995.61726978,-1147.323324172,327.33359713397726,514.50712630042 +740298702.3589,78375071.89269,365163411.33026147,-144354454.83665416,-1158.763497806,326.0145229121126,524.1177269406028 +740300147.6845,76691496.80888,365633690.27930766,-143589812.32546487,-1171.073125431,324.7538039060281,534.0224377230417 +740301593.0102,74989434.06457,366102190.10787314,-142810635.89732924,-1184.3668812570002,323.55279547310374,544.2307441106724 +740303038.3358,73267366.32862,366568997.599871,-142016481.48975378,-1198.779932226,322.41198029626275,554.7493237330619 +740304483.6615,71523563.34869,367034199.3309366,-141206898.4291697,-1214.472586244,321.33050900425826,565.5803532155802 +740305928.9871,69756041.5475,367497879.3087949,-140381437.55436713,-1231.636205891,320.3055319454778,576.719014055135 +740307374.3127,67962513.88600999,367960115.4047381,-139539663.88865036,-1250.500779495,319.33121692532404,588.1497888892906 +740308819.6384,66140327.268060006,368420974.06629854,-138681175.78820837,-1271.344661,318.397299893584,599.8409440959215 +740310264.964,64286383.99041,368880502.4620817,-137805633.97220564,-1294.507161846,317.48691874345997,611.7362166657107 +740310987.6268,63346390.044,369109774.4952123,-137361389.34856242,-1307.084514567,317.03270890222603,617.7331257370955 +740311710.2897,62397042.3059,369338716.73419,-136912805.48290646,-1320.404844081,316.57334929535085,623.7421920940355 +740312432.9525,61437779.87128,369567323.47304994,-136459880.76858503,-1334.5357400780001,316.1031442820348,629.7427641949165 +740313155.6153,60467990.24115,369795584.41169125,-136002630.36065495,-1349.552563467,315.6150219416248,635.7089002677995 +740313878.2781,59487003.3501,370023483.54459053,-135541090.45599276,-1365.539441476,315.1002089348617,641.6080891363795 +740314600.9409,58494084.842429996,370250997.79338145,-135075323.58499676,-1382.590372467,314.54782299319,647.3996416992223 +740315323.6038,57488428.50144,370478095.3008895,-134605425.24119842,-1400.81043733,313.94436022009035,653.0326613892125 +740316046.2666,56469147.78345,370704733.3156293,-134131532.13470727,-1420.31709892,313.2730492575708,658.4434791350924 +740316768.9294,55435266.3731,370930855.54486066,-133653832.56106475,-1441.2415526099999,312.51303448538346,663.5523996924561 +740317491.5922,54385707.78515,371156388.8441738,-133172579.41300696,-1463.730054429,311.6383433087216,668.25957394765 +740318214.2551,53319284.03193,371381239.06962174,-132688106.55492833,-1487.94510063,310.61657725803315,672.439750373329 +740318936.9179,52234683.566070005,371605285.84991825,-132200849.51852551,-1514.066243116,309.4072568109928,675.935613706737 +740319659.5807,51130458.86098,371828376.03353226,-131711371.56624748,-1542.2901961310001,307.9597313238131,678.5493415130766 +740320382.2435,50005014.324609995,372050315.41196185,-131220396.70684668,-1572.829675924,306.2105569190073,680.0319661527392 +740321185.2022,48727493.780420005,372295264.16519636,-130674248.33415128,-1609.752621012,303.815904755349,679.9689256396554 +740321586.6816,48077278.890070006,372416961.1735848,-130401408.08073016,-1629.489728543,302.4000882582079,679.1022429590388 +740321988.1609,47418960.00937,372538055.8731677,-130129046.01121123,-1650.129688676,300.8117886323971,677.5722135254466 +740322389.6402,46752167.06077,372658474.4110923,-129857446.78868027,-1671.7099905740001,299.02759587782134,675.2855360042483 +740322791.1196,46076515.4625,372778132.9459288,-129586934.93808693,-1694.265149339,297.0211102401919,672.1367216555384 +740323192.5989,45391607.64933,372896936.3862433,-129317879.99880761,-1717.825011754,294.7626377714167,668.0068046861772 +740323594.0783,44697035.363199994,373014777.0078007,-129050702.19068249,-1742.412591238,292.21889434580135,662.7620702498745 +740323995.5576,43992382.92435,373131532.9580851,-128785878.57600576,-1768.041337985,289.35273932639296,656.2528825602994 +740324397.037,43277231.72815,373247066.66243035,-128523949.65533817,-1794.711745082,286.1229698775929,648.3127348329454 +740324798.5163,42551166.25448,373361223.1697948,-128265526.26643433,-1822.407193949,282.48421875169146,638.7576908174196 +740325199.9957,41813781.91094,373473828.48537636,-128011296.59497157,-1851.0889616729999,278.387014010392,627.3864514141051 +740325601.475,41064695.0563,373584687.973328,-127762032.98236921,-1880.690352339,273.77807636682775,613.9813509595406 +740326002.9543,40303555.55167,373693584.9416005,-127518598.08351885,-1911.109988942,268.60094903574355,598.3106678665923 +740326404.4337,39530062.14847,373800279.56553596,-127281949.75751959,-1942.204421892,262.7970726310609,580.1327099055325 +740326805.913,38743980.9303,373904508.3519042,-127053143.87654364,-1973.7803883430001,256.30742948670377,559.2021883802596 +740327207.3924,37945166.839379996,374005984.399884,-126833334.02833036,-2005.587298404,249.0748805275847,535.2793989399038 +740327608.8717,37133588.033879995,374104398.7542653,-126623766.89832586,-2037.310827891,241.04729322039233,508.1426378355618 +740328054.9599,36216999.54596,374209757.40701675,-126404546.96930844,-2071.994291798,231.14322595307817,473.9943886194457 +740328278.004,35752958.53152,374260720.55976593,-126300891.24600461,-2088.929247082,225.79001913990504,455.2856409890554 +740328501.0481,35285181.56516,374310459.49812645,-126201531.87989764,-2105.478995646,220.16568188656836,435.46826870343136 +740328724.0921,34813764.7729,374358913.68911886,-126106716.73944809,-2121.551173722,214.27006753301544,414.53844071168254 +740328947.1362,34338825.40317,374406022.8327723,-126016693.4910495,-2137.048905031,208.10546027650744,392.50199112524837 +740329170.1803,33860502.71606,374451727.434721,-125931707.31906141,-2151.871897326,201.67683623670126,369.37551252013606 +740329393.2244,33378958.60089,374495969.43179286,-125851998.41602673,-2165.917793863,194.99209057045414,345.18732094346063 +740329616.2685,32894377.85713,374538692.8649127,-125777799.27652606,-2179.0837686679997,188.06221583044504,319.97823242629636 +740329839.3125,32406968.10269,374579844.5851748,-125709331.83760518,-2191.268338977,180.90141632939626,293.802088482466 +740330062.3566,31916959.26267,374619374.9700756,-125646804.56962249,-2202.373357555,173.5271440387253,266.7259708181182 +740330285.4007,31424602.58616,374657238.649604,-125590409.50564706,-2212.306110338,165.960045369379,238.83005960413362 +740330508.4448,30930169.19711,374693395.2022724,-125540319.3801588,-2220.98145746,158.22380916541655,210.20709407021272 +740330731.4889,30433948.16931,374727809.80668694,-125496684.92585027,-2228.323922944,150.34491255587412,180.9614185598079 +740330954.5329,29936244.14975,374760453.82641417,-125459632.43036485,-2234.2696393349997,142.3522662946691,151.2076173550862 +740331066.055,29686934.800350003,374776104.7328121,-125443606.67464286,-2236.702358126,138.3228786833251,136.17835397377013 +740331177.577,29437374.57316,374791305.3034897,-125429261.64276436,-2238.768052043,134.27676730774243,121.06876613124359 +740331289.0991,29187604.63237,374806053.9006908,-125416605.38248247,-2240.462707603,130.21801818855553,105.89522368293652 +740331400.6211,28937666.535159998,374820349.3454384,-125405644.10082532,-2241.783293599,126.15077225001116,90.6743526859471 +740331512.1431,28687602.12101,374834190.92296076,-125396382.14026843,-2242.727781046,122.0792059676836,75.4229578962024 +740331567.9042,28562535.66944,374840941.41557384,-125392389.24849226,-2243.058631027,120.04311271890614,67.7910949486908 +740331595.7847,28499996.18292,374844274.0887582,-125390552.40139937,-2243.188683465,119.02521793125703,63.97454802302334 +740331609.7249,28468725.16212,374845929.7836278,-125389673.88105974,-2243.2448668,118.51633713958992,62.06623644335678 +740331616.6951,28453089.36828,374846754.9709077,-125389244.59674715,-2243.270747984,118.2619169716094,61.112085586553796 +740331620.1801,28445271.405,374847166.8995553,-125389032.44854254,-2243.2831359969996,118.13471239147171,60.635013198697486 +740331621.9226,28441362.407330003,374847372.6976434,-125388926.9979308,-2243.2891918640003,118.07111153319376,60.396477990733985 +740331622.7939,28439407.90456,374847475.55515605,-125388874.42849725,-2243.292185265,118.03931146941119,60.27721066323372 +740331623.6652,28437453.399180003,374847578.3849437,-125388821.96298051,-2243.295155642,118.00751165155344,60.15794352960631 +740331625.4077,28433544.38073,374847783.9613604,-125388717.3436611,-2243.301027332,117.94391276084843,59.91940987287719 +740331628.8928,28425726.31353,374848194.7818222,-125388509.35202484,-2243.312494456,117.8167180184899,59.442345241120975 +740331635.8629,28410090.062439997,374849015.0928445,-125388098.35646302,-2243.334323739,117.56234113652093,58.4882285105329 +740331649.8032,28378817.12948,374850650.3960494,-125387296.31592542,-2243.373562978,117.05364135434823,56.58005962765692 +740331677.6837,28316269.82786,374853899.73106205,-125385772.03182776,-2243.434369147,116.03648625735704,52.76409568816279 +740331733.4447,28191171.78012,374860313.35169125,-125383042.58491047,-2243.4853457920003,114.00338190252657,45.13458604039313 +740331844.9667,27940980.26368,374872800.78057015,-125378859.25555488,-2243.305389935,109.94381217872574,29.892598255083257 +740332068.0108,27440761.649979997,374896420.9810015,-125375581.37792376,-2241.826185026,101.86557801691004,-0.46497891241507006 +740332291.0549,26941037.29055,374918247.84851754,-125379046.06475899,-2238.879375117,93.86852975346959,-30.54549338890438 +740332391.4247,26716408.97093,374927490.3590762,-125382785.73298416,-2237.0853539610002,90.30455789310304,-43.957768373273986 +740332491.7946,26491975.008500002,374936376.4028747,-125387867.04053219,-2235.007404929,86.76589937392441,-57.277621265007824 +740332592.1644,26267763.63736,374944908.6500297,-125394280.1787464,-2232.650865138,83.25511741942574,-70.49450851623565 +740332692.5342,26043802.53082,374953090.02301437,-125402014.30014805,-2230.0215685840003,79.7746742412253,-83.59827739127057 +740332792.9041,25820118.75312,374960923.6859585,-125411057.55895367,-2227.1258127150004,76.32692428409348,-96.57919443355594 +740332893.2739,25596738.71462,374968413.0336435,-125421397.15455556,-2223.970323295,72.91410828818778,-109.42797068726831 +740333094.0136,25150991.984190002,374982373.4457545,-125445909.65613516,-2216.9089682,66.2016428847568,-134.69429536980653 +740333294.7533,24706759.074559998,374995002.576154,-125475432.08937629,-2208.898464982,59.65275741617394,-159.3325760085247 +740333696.2326,23823557.377720002,375016406.35273564,-125548968.70449089,-2190.294837388,47.09731280936609,-206.50731754014663 +740334057.564,23035556.45662,375031484.12072104,-125630860.32638894,-2170.989959708,36.46961527087686,-246.33716463275076 +740334219.2516,22685281.71666,375037012.0826935,-125672068.9680456,-2161.680553518,31.93146190586566,-263.30448190075015 +740334219.2516,22685281.86259,375037012.0715827,-125672068.92278041,-2161.680433732,31.931466516586383,-263.3043973557464 +740334240.7588,22638803.82198,375037692.4427787,-125677755.70618036,-2160.414017992,31.338156398863376,-265.520524519948 +740334259.2581,22598847.75108,375038267.4721715,-125682685.22611506,-2159.319652462,30.829775783926607,-267.41900207634956 +740334268.5078,22578877.31824,375038551.4642445,-125685163.13974631,-2158.770732152,30.576263488436453,-268.36556126383516 +740334273.1326,22568894.00715,375038692.5815348,-125686405.37777701,-2158.495840608,30.44967696374674,-268.8381703701937 +740334275.445,22563902.82852,375038762.9206753,-125687027.31617364,-2158.358287364,30.386426121783174,-269.0743072295385 +740334276.6012,22561407.3585,375038798.0354247,-125687338.49012133,-2158.289483923,30.354811308057407,-269.192333725081 +740334277.7575,22558911.96805,375038833.11358273,-125687649.8005023,-2158.220662618,30.323203566299895,-269.31033226237685 +740334280.0699,22553921.42591,375038903.1603725,-125688272.83049695,-2158.08296647,30.26000929984724,-269.54624545553645 +740334284.6947,22543941.29727,375039042.81564164,-125689520.52638006,-2157.807360403,30.13370565245782,-270.0177362320581 +740334293.9444,22523984.86717,375039320.37511617,-125692022.45468727,-2157.2552961799997,29.88143801092805,-270.95937479257714 +740334312.4437,22484087.35232,375039868.5043207,-125697052.39936303,-2156.1477832749997,29.378262206016288,-272.83727561670383 +740334349.4423,22404353.99361,375040936.9214744,-125707216.17636953,-2153.919410314,28.37735502324213,-276.5715390995713 +740334423.4396,22245136.22521,375042963.3317755,-125727955.55626102,-2149.4107940579997,26.39736407208028,-283.9536758368589 +740334571.4341,21927713.76473,375046582.0072247,-125771051.70453472,-2140.198096651,22.524942024496482,-298.37089402154055 +740334719.4287,21611672.68405,375049636.24071574,-125816247.16859612,-2130.747261714,18.76950667021744,-312.3236178741432 +740335015.4178,20983863.993589997,375054120.5823138,-125912660.87985274,-2111.2353916740003,11.608804458404364,-338.83515161380495 +740335311.4069,20361931.430320002,375056553.971545,-126016648.24157147,-2091.074115243,4.909823684770714,-363.5033076522968 +740335607.3959,19746039.81738,375057071.59555274,-126127668.65036702,-2070.445586284,-1.338219102305402,-386.3653219762891 +740335903.385,19136302.7323,375055804.7974641,-126245195.25362134,-2049.513717474,-7.150331720423651,-407.47613962660216 +740336199.3741,18532788.01218,375052879.98253745,-126368719.56194502,-2028.4236439679999,-12.544701168625835,-426.90420979060343 +740336495.3632,17935523.299370002,375048417.8187649,-126497754.87443872,-2007.3019228370001,-17.541759233752884,-444.7277028329173 +740336791.3523,17344501.42526,375042532.6921651,-126631838.66678683,-1986.257284488,-22.16337463040699,-461.03121932649685 +740337087.3414,16759685.58217,375035332.3951012,-126770534.03338264,-1965.381752564,-26.432176350969485,-475.90301641042515 +740337383.3305,16181014.00672,375026917.976038,-126913430.45669353,-1944.752022207,-30.37100186810588,-489.43272963212183 +740337679.3196,15608404.322369998,375017383.7480948,-127060143.92454141,-1924.43094707,-34.00246218493902,-501.70956317881087 +740337975.3087,15041757.40257,375006817.40737,-127210316.58906786,-1904.4690658650002,-37.348609262928875,-512.8208924409242 +740338271.2978,14480960.801630002,374995300.236475,-127363616.06098722,-1884.9060969660002,-40.430691842753276,-522.8512249062643 +740338567.2869,13925891.74471,374982907.3694206,-127519734.44669476,-1865.77236001,-43.268985107473355,-531.8814620126049 +740338863.2759,13376419.70837,374969708.0971485,-127678387.20087804,-1847.090095147,-45.88268057629671,-539.9884079981198 +740339455.2541,12293718.79395,374941140.2847933,-128002266.7552005,-1811.13563007,-50.50729274863008,-553.717563174884 +740340047.2323,11231734.78498,374910047.08146536,-128333396.21326506,-1777.101606299,-54.43490840600691,-564.5637134058834 +740340639.2105,10189330.02123,374876806.9996476,-128670206.70709577,-1744.981908483,-57.77779414010368,-572.9809456153205 +740341231.1887,9165384.178774001,374841737.12358874,-129011378.32312045,-1714.72719249,-60.631498818312025,-579.3572886128874 +740341823.1668,8158814.867825,374805102.47273874,-129355802.9760652,-1686.260883994,-63.07670385130473,-584.0216306669081 +740342415.145,7168590.17177,374767124.2201442,-129702551.63050637,-1659.4906144949998,-65.18118512037955,-587.2512483404765 +740343007.1232,6193735.493249,374727986.76868,-130050845.93735583,-1634.31620315,-67.001695163797,-589.2791340189859 +740343599.1014,5233336.459302,374687843.7612694,-130400034.04125464,-1610.635089284,-68.58567223947202,-590.3007131058287 +740344191.0796,4286539.195784,374646823.1397293,-130749570.14012925,-1588.34592214,-69.97274035756266,-590.4797810134518 +740344783.0577,3352548.879189,374605031.3799394,-131098997.31634086,-1567.3508420090002,-71.19599754130903,-589.9536301236201 +740345375.0359,2430627.228364,374562557.0218887,-131447933.17670013,-1547.5568458369999,-72.2831062956063,-588.837409452806 +740345967.0141,1520089.389022,374519473.61083823,-131796057.85526444,-1528.876521998,-73.25720775461426,-587.2277938060431 +740346558.9923,620300.5115183,374475842.139006,-132143104.01986186,-1511.228359767,-74.13768345061575,-585.2060519827479 +740347150.9705,-269327.7602902,374431713.0793601,-132488848.53032431,-1494.536776345,-74.94078738680625,-582.8406006907127 +740348334.9268,-2020244.132964,374342121.3587997,-133175720.35621403,-1463.7496245470002,-76.3673082575603,-577.3003402429679 +740349400.4876,-3566389.993764,374260132.48816425,-133787895.16834782,-1438.668455788,-77.50238233393651,-571.6299658191836 +740350466.0483,-5086991.474179,374176987.65237814,-134393774.99268654,-1415.757009737,-78.54336086702841,-565.5124360993553 +740351531.609,-6584217.088156,374092768.6358672,-134992963.24954516,-1394.752717381,-79.52327171371161,-559.0907625466746 +740352597.1697,-8059976.038182,374007526.84618473,-135585195.55055332,-1375.43055124,-80.46653395757446,-552.4718218631936 +740353662.7305,-9515955.208918,373921291.2236789,-136170306.406245,-1357.597335701,-81.39121478690808,-545.7356797812255 +740354728.2912,-10953650.40427,373834074.0966822,-136748204.4460482,-1341.086825166,-82.31066757214397,-538.9423864969814 +740355793.8519,-12374392.73628,373745875.5255695,-137318853.91480124,-1325.75551832,-83.23472755920038,-532.1369580797254 +740356859.4126,-13779370.94041,373656686.56579506,-137882260.68526345,-1311.479137734,-84.1705915010752,-525.3530568470271 +740357924.9734,-15169650.23554,373566491.7109046,-138438461.70625818,-1298.14968078,-85.12346870935403,-518.6157276493846 +740358990.5341,-16546188.31431,373475270.7419181,-138987516.9535054,-1285.672957175,-86.0970663351163,-511.9434469104126 +740360056.0948,-17909848.934410002,373383000.123659,-139529503.29570746,-1273.966532285,-87.09395321510853,-505.34966646266344 +740361121.6555,-19261413.50106,373289654.06493473,-140064509.79282716,-1262.958008452,-88.11583423165912,-498.84398372836665 +740362187.2163,-20601590.973729998,373195205.3232938,-140592634.08400118,-1252.583585657,-89.16375828514265,-492.4330336518892 +740363252.777,-21931026.3616,373099625.81657946,-141113979.60921356,-1242.786853672,-90.23827665782987,-486.12117191935357 +740365383.8984,-24559974.101,372904960.6400712,-142136764.81576335,-1224.7318292010002,-92.46751216372978,-473.8037766239357 +740367515.0199,-27152392.201440003,372705432.0246508,-143133739.29907024,-1208.4545697439999,-94.80195050465485,-461.89827855417076 +740369646.1413,-29711770.24501,372500819.91615397,-144105775.61165586,-1193.684179736,-97.237393262709,-450.3981467356646 +740371777.2628,-32241077.8774,372290914.81107277,-145053723.7933608,-1180.201400039,-99.76828694979244,-439.2894723327702 +740373908.3842,-34742861.89098,372075519.8038424,-145978399.51947138,-1167.826965875,-102.38847158212626,-428.55441372598074 +740376039.5057,-37219321.742699996,371854451.33277035,-146880578.27306703,-1156.4129497590002,-105.09162737828247,-418.1733148071689 +740378170.6271,-39672369.10758,371627539.23894954,-147760992.8847903,-1145.83623226,-107.87153472461827,-408.1259925033678 +740380301.7486,-42103675.13565,371394626.37392867,-148620333.33086422,-1135.993532213,-110.7222223208815,-398.3925162298494 +740382432.87,-44514708.59485,371155567.9692529,-149459247.83627018,-1126.797576642,-113.63804425204032,-388.9536593829113 +740384563.9915,-46906766.54394,370910230.91864115,-150278344.59572887,-1118.1741203880001,-116.61371494904866,-379.7911497690156 +740386695.1129,-49280999.62677,370658492.9764557,-151078194.0369273,-1110.059606204,-119.64431760908681,-370.8877898889023 +740388826.2344,-51638432.711100005,370400241.99603117,-151859331.0913627,-1102.399309375,-122.72529747403793,-362.2274983173069 +740390957.3558,-53979982.12033,370135375.1597811,-152622257.62467876,-1095.145855137,-125.85244587384939,-353.79530033931314 +740393088.4773,-56306469.964839995,369863798.2708682,-153367444.72752133,-1088.258025074,-129.02188000353684,-345.577290805749 +740395219.5987,-58618636.19241,369585425.07874,-154095334.95242012,-1081.699787754,-132.23002019829983,-337.5605786756724 +740397350.7202,-60917148.77725,369300176.66015166,-154806344.4015747,-1075.439507712,-135.47356711750825,-329.7332247196119 +740399481.8416,-63202612.37094,369007980.8433357,-155500864.69199815,-1069.449294255,-138.74947916446857,-322.08417499426673 +740401612.9631,-65475575.68665,368708771.6841572,-156179264.76455563,-1063.704463071,-142.0549511054482,-314.6031950470866 +740403744.0845,-67736537.84740001,368402488.98179203,-156841892.568918,-1058.1830880930002,-145.3873939830606,-307.28080599939284 +740406245.995,-70376176.7852,368033816.3436823,-157600124.6673639,-1051.959956851,-149.33084142652993,-298.87497025917554 +740408952.729,-73214796.30199,367623804.41846,-158397033.52203834,-1045.512153098,-153.631231861714,-289.9985434309293 +740415668.215,-80185053.04914999,366555934.8008771,-160272862.56036898,-1030.601640165,-164.42830542499613,-268.85859226413584 +740422383.7011,-87059590.60734999,365415057.4812514,-162010537.78487244,-1016.95096802,-175.36644509671802,-248.82427009176183 +740429099.1871,-93845877.46340999,364200372.5880726,-163616931.45725378,-1004.2785157039999,-186.40331817885047,-229.73671573819962 +740435814.6731,-100549739.29110001,362911335.2503187,-165097954.7183916,-992.3725886218,-197.5049499038779,-211.4672532073654 +740442530.1591,-107175756.0739,361547606.15711004,-166458736.39613757,-981.0710712696,-208.64381850631165,-193.9105794516757 +740449245.6452,-113727545.7584,360109013.2441939,-167703761.9072024,-970.2477963435,-219.79744106388364,-176.97966832640967 +740455961.1312,-120207972.9832,358595521.52629197,-168836982.69554165,-959.803187681,-230.9473134603773,-160.60193177090864 +740462676.6172,-126619303.494,357007209.2842018,-169861902.6478482,-949.6576731509,-242.07810581687784,-144.71629768650848 +740469392.1033,-132963322.8399,355344248.77924144,-170781648.03362328,-939.746973115,-253.17704641518924,-129.27096776730838 +740476107.5893,-139241425.9858,353606890.8636651,-171599023.27197462,-930.0186467894,-264.233442864557,-114.22167505444094 +740482823.0753,-145454688.1419,351795452.28420794,-172316556.8939998,-920.429537514,-275.2383075205349,-99.53032037901487 +740489538.5614,-151603920.334,349910305.27014303,-172936539.1947525,-910.9438472594001,-286.18406084784993,-85.16389380231969 +740496254.0474,-157689713.6695,347951868.9019298,-173461053.41304713,-901.5316678393001,-297.06429446451,-71.09361420455815 +740499611.7904,-160708954.2589,346945309.18638414,-173688110.8742472,-896.8451244831001,-302.4781112495173,-64.16151862187246 +740501290.6619,-162212677.7128,346435220.12823737,-173792938.5975351,-894.505491547,-305.17817470863315,-60.71994842102603 +740502130.0977,-162963066.8996,346178476.67420405,-173843189.0780862,-893.3364405635,-306.52646399730565,-59.00513142167834 +740502549.8156,-163337893.5386,346049680.6441592,-173867774.926783,-892.7520891,-307.20016927926594,-58.14919657082248 +740502759.6745,-163525214.8903,345985176.60720986,-173879933.18319952,-892.4599547483,-307.536911619649,-57.72159529278406 +740502864.604,-163618852.57680002,345952898.0900656,-173885978.66682976,-892.3138976541,-307.7052551576697,-57.50788590945531 +740502917.0687,-163665665.673,345936752.20762235,-173888993.00015768,-892.2408715949999,-307.7894200124087,-57.40105399865031 +740502969.5334,-163712474.9379,345920601.90960497,-173892001.72897032,-892.1678471818,-307.87358025446383,-57.294237260400564 +740503074.4629,-163806081.9744,345888288.06786436,-173898002.3764879,-892.0218032555,-308.0418868902561,-57.080649258278456 +740503284.3218,-163993250.0761,345823607.408332,-173909936.45242673,-891.7297347453,-308.3784447203293,-56.653654887438194 +740503704.0397,-164367402.4131,345694034.23916364,-173933535.90530828,-891.1456730215999,-309.05133816522726,-55.80039045750627 +740504543.4755,-165114971.76459998,345434040.9364002,-173979661.42837706,-889.9778343349,-310.39623264372034,-54.09674119599269 +740506222.347,-166607170.2157,344910669.98486716,-174067630.1444022,-887.643167029,-313.0824240904301,-50.7008218115642 +740509580.09,-169579812.83159998,343850419.14741147,-174226526.09667408,-882.9768785232,-318.4402024256307,-43.95341586104625 +740516295.576,-175478110.83310002,341676114.40501785,-174476828.61252108,-873.6490914990001,-329.0957507345406,-30.628119324676945 +740523011.0621,-181313755.1009,339430528.5183733,-174638364.8738314,-864.3150107157,-339.668580981331,-17.51435368885393 +740529726.5481,-187086657.44370002,337114226.6798524,-174712501.37688679,-854.9612901619,-350.1558825847156,-4.5963082200726575 +740536442.0341,-192796646.3465,334727791.45342946,-174700503.8552653,-845.5764026676001,-360.5552810027491,8.140257137496832 +740543157.5202,-198443478.1524,332271820.05776286,-174603547.06470853,-836.1503458177,-370.8647769558003,20.708230972046493 +740549873.0062,-204026846.4589,329746922.0242232,-174422723.2157577,-826.6744009026,-381.08269526097445,33.11933541235919 +740556588.4922,-209546390.0813,327153717.16393715,-174159049.28540516,-817.1409342425,-391.2076416254986,45.3842831969054 +740563303.9782,-215001699.67900002,324492833.8246606,-173813473.27488986,-807.5432318401,-401.2384659047668,57.51291202288239 +740576734.9503,-225717772.4628,318970578.7005982,-172880094.58739102,-788.1320611279,-421.0141861345391,81.39686440867285 +740588921.8385,-235213923.89889997,313732093.5826531,-171758069.36415002,-770.2428885605001,-438.62467475967065,102.68234686916125 +740599077.8129,-242959851.55359998,309203960.84634656,-170626236.71712264,-755.1159729086,-453.05623664941476,120.17231663884577 +740610709.3881,-251641043.1913,303839385.6856558,-169113138.3757797,-737.5304750565,-469.31096773052894,139.9571303493058 +740622340.9634,-260115997.65969998,298287442.78085136,-167371296.000579,-719.6519955241,-485.2733587691399,159.50893902311913 +740633972.5387,-268381228.147,292551529.8891217,-165403247.01965648,-701.4672492961,-500.9439768382789,178.85717040377085 +740645604.114,-276433102.6958,286635034.2301132,-163211195.21137148,-682.9644933523,-516.3240546662053,198.02986323520136 +740657235.6893,-284267859.83650005,280541325.0898611,-160797023.56522483,-664.133146515,-531.415438299563,217.05422725399862 +740663051.4769,-288102611.4535,277429061.73683405,-159507145.26213658,-654.5911873569,-538.8536099104595,226.51919224970516 +740668867.2645,-291881620.2922,274273746.8123338,-158162300.84840634,-644.9634891635,-546.2205719552645,235.95716995461532 +740671775.1583,-293750064.576,272680074.1631342,-157469313.0871814,-640.1171369914,-549.8774735697298,240.6670997694363 +740673229.1053,-294678994.036,271879256.5542354,-157117685.2510176,-637.6857747943,-551.6993028106626,243.0199871452691 +740673956.0787,-295142132.1193,271477855.23464787,-156940588.71028665,-636.4680397068,-552.6085650875601,244.19593501406658 +740674319.5654,-295373369.06350005,271276906.796282,-156851719.88824162,-635.8586577378001,-553.0627835297893,244.78378795049352 +740674501.3088,-295488904.4566,271176370.67617893,-156807205.35205156,-635.5538380313,-553.2897896261753,245.07768453959102 +740674592.1805,-295546651.3766,271126087.14635855,-156784928.05424085,-635.4013959831,-553.4032668993533,245.22462541069027 +740674637.6163,-295575519.6416,271100941.51466966,-156773784.3981043,-635.3251669087,-553.45999909311,245.2980939952596 +740674683.0522,-295604384.443,271075793.3054196,-156762637.4038964,-635.2489324665,-553.5167269917805,245.37156134863093 +740674773.9239,-295662103.65379995,271025489.15501726,-156740333.4014743,-635.0964474766,-553.6301699048137,245.51849237039403 +740674955.6672,-295777500.50070006,270924849.9318333,-156695685.34212023,-634.7914130615,-553.8570042004684,245.8123397128297 +740675319.1539,-296008127.8416,270723447.8398,-156606229.017857,-634.1810863748,-554.3104667202074,246.3999759647778 +740676046.1274,-296468716.67380005,270320149.42248535,-156426675.64545834,-632.9594006542,-555.2165678754882,247.57501771142364 +740677500.0743,-297387227.4341,269511578.44823587,-156065006.77705157,-630.5118924671999,-557.025477908148,249.92420202668896 +740680407.9681,-299213553.2076,267886562.25273198,-155331426.44222885,-625.6002705061001,-560.6301555177212,254.61916564989252 +740686223.7558,-302823195.4688,264605210.7623939,-153823338.41118428,-615.7101391235001,-567.7871639988228,263.99702231011196 +740697855.331,-309868612.3393,257918644.18069288,-150643728.4501566,-595.658654269,-581.8937471051835,282.71714958889646 +740709486.9063,-316678663.5466,251069584.95552105,-147246533.24369642,-575.2386415917,-595.7279987701421,301.415063571913 +740721118.4816,-323249014.7945,244061166.7490416,-143631825.64181995,-554.4419017370999,-609.2959612382897,320.12311267589723 +740732750.0569,-329575236.5596,236896445.49045676,-139799285.12876618,-533.2602457984999,-622.6050102248931,338.8767282375674 +740744381.6321,-335652803.7713,229578381.7916767,-135748156.61271134,-511.68542320949996,-635.6642314075882,357.71537521121604 +740752273.2324,-339632285.3585,224527481.3851342,-132874541.92530717,-496.81957934449997,-644.3878274084212,370.56758053137634 +740759263.0996,-343058509.1423,219996552.06765783,-130244357.82613803,-483.4958896261,-652.0262792745748,382.0134848660751 +740766343.5897,-346433669.428,215352733.4934832,-127498259.16304566,-469.84759347290003,-659.682831653299,393.6801336000002 +740773424.0797,-349711646.2017,210654979.1587014,-124669257.45531291,-456.0444899297,-667.2620570732089,405.4331890227028 +740780504.5698,-352891336.3071,205903819.90688193,-121756688.35433432,-442.08458501089996,-674.7687917685788,417.2877589653442 +740787585.0599,-355971622.3756,201099749.56381765,-118759774.7459635,-427.965859152,-682.2086973691432,429.26065342347675 +740794665.5499,-358951372.6584,196243218.34252328,-115677613.47552738,-413.6862690857,-689.5884309828759,441.3706756133143 +740801746.04,-361829440.865,191334625.2218441,-112509160.23540416,-399.24375185900004,-696.9158583753868,453.6389726610407 +740808826.53,-364604666.04649997,186374308.43063745,-109253211.44998538,-384.6362309131,-704.2003189396738,466.08945807984503 +740815907.0201,-367275872.529,181362533.88992798,-105908382.94539204,-369.8616252397,-711.4529596984997,478.74932600236014 +740822987.5101,-369841869.924,176299481.00125942,-102473084.5926898,-354.91786264179996,-718.6871592902372,491.6496815125479 +740826527.7552,-371085039.2222,173748753.32425404,-100720948.6466123,-347.38190686859997,-722.302265165875,498.20101970951885 +740828297.8777,-371696600.1808,172468589.68614042,-99836151.148554,-343.5977998806,-724.1103009460512,501.5040983998403 +740829182.9389,-371999866.3986,171827307.55939552,-99391555.6421566,-341.7017004987,-725.0145738490659,503.1627738900038 +740829625.4696,-372150869.89710003,171506366.34641704,-99168706.84212363,-340.7526376484,-725.466791635548,503.99393241071516 +740829846.7349,-372226214.11300004,171345820.69146562,-99057144.44440112,-340.27785272349996,-725.6929231121716,504.4099715392151 +740829957.3675,-372263846.8212,171265529.10050625,-99001328.71643087,-340.04039686,-725.8059947808407,504.6181066600532 +740830012.6839,-372282653.3234,171225378.61385447,-98973412.21655828,-339.9216530743,-725.8625321343335,504.7222031809797 +740830068.0002,-372301453.2569,171185224.99977964,-98945489.957945,-339.8028987183,-725.9190705137858,504.8263190390802 +740830178.6329,-372339033.415,171104908.3890171,-98889628.15975864,-339.56535829259997,-726.0321503899914,505.03460885637594 +740830399.8982,-372414114.8804,170944237.63536873,-98777835.41097382,-339.0901505571,-726.2583229064584,505.45142147148033 +740830842.4288,-372563962.2765,170622745.98588678,-98553973.06232579,-338.139227341,-726.7107213195641,506.2859834135491 +740831727.4901,-372862393.8813,169979162.00204888,-98105139.01407757,-336.2353482662,-727.615750473845,507.95889281405823 +740833497.6126,-373454195.937,168689590.23859352,-97203017.68655795,-332.4194463354,-729.4268921928583,511.3201686752037 +740837037.8576,-374617488.0328,166100820.97761658,-95380831.14198764,-324.7549629971,-733.0548029199028,518.1071631191579 +740844118.3477,-376862282.2146,160884658.42222804,-91663562.09856573,-309.29447060679996,-740.34455585959,531.961471846494 +740851198.8377,-378996983.5596,155616650.7727245,-87846740.54755564,-293.657169292,-747.7047779011461,546.237646292173 +740858279.3278,-381020334.61139995,150296173.9694596,-83927149.18198055,-277.8415356135,-755.1721889020547,561.0026785642117 +740865359.8178,-382931068.2597,144922312.2134481,-79901052.2243153,-261.846388958,-762.7928957687709,576.3365078532007 +740872440.3079,-384727910.73349994,139493781.39070794,-75764092.35843976,-245.6710631952,-770.6254159908885,592.3353972566515 +740879520.7979,-386409586.09290004,134008827.07982017,-71511160.03112307,-229.31566525050002,-778.7449226891752,609.1164347430395 +740886601.288,-387974823.06979996,128465085.52899005,-67136224.74068414,-212.78147052810002,-787.2493122143096,626.8236191244123 +740893681.7781,-389422365.19560003,122859395.802125,-62632118.70087656,-196.0715481835,-796.2681292154567,645.6362556473713 +740900762.2681,-390750986.98829997,117187528.6644731,-57990245.057015836,-179.1917571503,-805.9758943304153,665.7806867189894 +740905578.0516,-391586098.3577,113289180.64074947,-54749139.192081764,-167.61894257429998,-813.0913060235608,680.3876987393653 +740906938.0568,-391811824.6971,112181980.64057845,-53820912.18127292,-164.33799783930002,-815.1917104474161,684.6637333321851 +740910742.8207,-392419589.6154,109068845.5757067,-51192619.83200723,-155.13104734970003,-821.3121754765502,697.0148313629895 +740914547.5845,-392992250.1169,105931657.63695677,-48516160.4160804,-145.88583654750002,-827.8473229437794,709.9956184994696 +740918352.3484,-393529669.6332,102768691.21153985,-45788986.99738429,-136.6073350292,-834.8776992886208,723.6877197342759 +740922157.1122,-394031733.5266,99577878.78933328,-43008215.33994094,-127.3021896539,-842.5033493902031,738.1873001995345 +740924059.4941,-394269479.0812,97971270.2902955,-41596721.781376965,-122.6423112968,-846.5774663919219,745.7747326541576 +740925961.8761,-394498356.6018,96356725.7038999,-40170562.470898256,-117.9793556108,-850.8499707989074,753.6084308451659 +740927864.258,-394718361.744,94733847.94521764,-38729252.2814805,-113.31495273510001,-855.3419919169905,761.7061570275621 +740929766.6399,-394929493.5243,93102197.07237935,-37272270.68428014,-108.65101430019999,-860.0775259686304,770.087395103697 +740931669.0218,-395131754.907,91461284.38914075,-35799058.28981495,-103.9897897461,-865.0839310627158,778.7735570910829 +740933571.4037,-395325153.51159996,89810565.48223624,-34309012.9540075,-99.33393596473,-870.3925270476527,787.7882174064482 +740935473.7857,-395509702.46599996,88149432.02753341,-32801485.42329789,-94.68660402784,-876.0393268584146,797.1573776969146 +740937376.1676,-395685421.4479,86477202.021418,-31275774.436641708,-90.05154788502,-882.0659339981078,806.9097659290319 +740939278.5495,-395852337.95489997,84793108.14679244,-29731121.22351685,-85.43326159224999,-888.5206508422297,817.0771715799049 +740941180.9314,-396010488.87369996,83096283.75042096,-28166703.33352236,-80.83715388476,-895.4598577366356,827.6948192959005 +740943083.3134,-396159922.42249995,81385745.90673937,-26581627.716488525,-76.26977202228,-902.949740853363,838.8017788235027 +740944985.6953,-396300700.58180004,79660374.75802206,-24974922.98769979,-71.73909148409,-911.0684762384715,850.4414065279211 +740946888.0772,-396432902.1541,77918888.17881672,-23345530.85035169,-67.25489408130001,-919.9090111408958,862.6618034740995 +740948790.4591,-396556626.6518,76159810.40529895,-21692296.610988483,-62.82926690215999,-929.5826418264511,875.5162624945219 +740950692.841,-396671999.2876,74381432.91911687,-20013958.972994737,-58.47726713013,-940.2236553932914,889.0636503355645 +740952595.223,-396779177.4275,72581765.18018387,-18309139.111258548,-54.21781884842,-951.9954180987404,903.3686284162859 +740954497.6049,-396878359.0611,70758471.99198239,-16576329.780785851,-50.07493698448,-965.0984409315748,918.5015399840458 +740956399.9868,-396969793.995,68908793.09129277,-14813884.988788977,-46.079420372449995,-979.7811888923641,934.5376632286391 +740957351.1778,-397012702.2841,67973055.09910664,-13920994.990297716,-44.148969305440005,-987.809219761211,942.9188682268154 +740958302.3687,-397053798.8984,67029438.67844792,-13020012.257443052,-42.27122645582,-996.3547289921818,951.5552928609237 +740959253.5597,-397093137.2143,66077427.402009666,-12110689.433503384,-40.453170479229996,-1005.4696690771531,960.4565395811068 +740960204.7506,-397130777.7422,65116452.259568825,-11192770.24079404,-38.70285182487,-1015.2128157391512,969.6317079934092 +740961155.9416,-397166789.2363,64145884.66337364,-10265990.129221266,-37.029591075380004,-1025.6508662949686,979.0890225649719 +740962107.1326,-397201250.0147,63165028.305821516,-9330077.3360774,-35.444220004630004,-1036.8597421060992,988.8353250956509 +740963058.3235,-397234249.53029996,62173109.6805679,-8384754.51322698,-33.95937590518,-1048.9261365163925,998.8753833646724 +740964009.5145,-397265890.2565,61169266.97182845,-7429741.1249671,-32.58986210629,-1061.949356277765,1009.2109517671585 +740964960.7054,-397296289.9486,60152537.057162166,-6464756.88812024,-31.35309144958,-1076.0435144591377,1019.8394935124503 +740965911.8964,-397325584.379,59121840.20853712,-5489526.6438502185,-30.26963340066,-1091.340139926903,1030.7524418793614 +740966863.0874,-397353930.6479,58075962.10325154,-4503787.153255075,-29.363890918800003,-1107.9912755088194,1041.9328287435671 +740967814.2783,-397381511.2177,57013532.60753034,-3507296.564119078,-28.66493968842,-1126.1731416699058,1053.3520436722972 +740968765.4693,-397408538.8311,55933000.79984483,-2499847.4696943276,-28.20756892627,-1146.090430491772,1064.965392094462 +740969716.6602,-397435262.54179996,54832605.56559552,-1481284.9722600877,-28.033571612150002,-1167.9812749552243,1076.7059908779454 +740970667.8512,-397461975.1028,53710341.18648513,-451531.5662038475,-28.1933365843,-1192.1228635973519,1088.476360526297 +740971619.0422,-397489022.0433,52563917.29020009,589378.5455230251,-28.7477988336,-1218.8375457606596,1100.136819668696 +740972570.2331,-397516812.7844,51390712.959792085,1641252.0779314376,-29.77079166168,-1248.4990003608184,1111.489468017529 +740973045.8286,-397531135.77360004,50793146.133480825,2171180.629722692,-30.48525965034,-1264.5669314855961,1116.9673246347888 +740973521.4241,-397545834.19119996,50187725.23784089,2703671.369138483,-31.351811654869998,-1281.537567530737,1122.2561129288765 +740973997.0196,-397560983.6786,49574006.091263376,3238622.2888517305,-32.384591551419994,-1299.4740121570833,1127.3035597196497 +740974472.6151,-397576666.9267,48951513.63544746,3775904.350892581,-33.59911746152,-1318.4429692386395,1132.048028865973 +740974948.2105,-397592974.3525,48319740.28896634,4315356.671261504,-35.012375329739996,-1338.5144343303116,1136.4169476513737 +740975423.806,-397610004.8165,47678144.50034565,4856780.895766014,-36.6428975869,-1359.7611511660975,1140.3250037215998 +740975899.4015,-397627866.3717,47026149.63065895,5399934.667597065,-38.51081554535,-1382.2577507997541,1143.6721009048074 +740976374.997,-397646677.0292,46363143.34291877,5944524.058533654,-40.63786982128,-1406.0794678430557,1146.3410722175045 +740976850.5925,-397666565.5134,45688477.72700157,6490194.865790047,-43.04735711773,-1431.3003013797063,1148.1951697604766 +740977326.1879,-397687671.9713,45001470.46331442,7036522.666674515,-45.76398461819,-1457.9904591740485,1149.0753820949951 +740977801.7834,-397710148.5856,44301407.40688361,7583001.567943158,-48.81359417748,-1486.212892635933,1148.7976788502974 +740978277.3789,-397734160.0131,43587547.08476323,8129031.671550268,-52.22270845027,-1516.0187023256055,1147.1503485406874 +740978752.9744,-397759883.55480003,42859127.690601915,8673905.340302628,-56.01783983088,-1547.441179021282,1143.8916973685439 +740979228.5699,-397787508.9282,42115377.282450765,9216792.530179836,-60.22449307672,-1580.4882534175588,1138.748502845085 +740979704.1653,-397817237.4756,41355527.988963485,9756725.67655921,-64.8657857031,-1615.1331801683752,1131.4157813895433 +740980179.7608,-397849280.61249995,40578835.07480754,10292584.925083317,-69.96061201243,-1651.3034058254552,1121.5586185982515 +740980655.3563,-397883857.281,39784601.70742127,10823084.906173656,-75.5212930135,-1688.8677974249924,1108.8170102185104 +740981130.9518,-397921190.15929997,38972210.0855496,11346764.74723552,-81.55069629403,-1727.6227778258767,1092.814817008195 +740981606.5473,-397961500.38530004,38141159.22736338,11861983.546976147,-88.03888432836,-1767.2784390294958,1073.1739859551585 +740981844.345,-397982839.0133,37718522.70264981,12115858.739414085,-91.44751995816,-1787.32675869186,1061.875312123391 +740982082.1427,-398005000.6053,37291109.02846387,12366924.069809798,-94.95946987273,-1807.4463916328718,1049.5350017328267 +740982319.9405,-398028008.989,36858908.868752256,12614927.283752713,-98.56827323081,-1827.5720937006374,1036.1154614774582 +740982557.7382,-398051886.2846,36421929.20986715,12859607.746257996,-102.2660173511,-1847.631854181857,1021.5839889175899 +740982795.536,-398076652.551,35980194.94785658,13100697.739950536,-106.04326694299999,-1867.5471070222738,1005.9139255625904 +740983033.3337,-398102325.4173,35533750.402202696,13337924.047112329,-109.88901922490001,-1887.233136962224,989.0858483128442 +740983271.1314,-398128919.7086,35082660.70903237,13571009.808984214,-113.7906917007,-1906.5997043612128,971.0887632793975 +740983508.9292,-398156447.0719,34627013.037491746,13799676.669557901,-117.7341485516,-1925.5519023718916,951.9212580708224 +740983746.7269,-398184915.615,34166917.5738913,14023647.18235898,-121.7037712658,-1943.9912539371737,931.5925619375214 +740983984.5247,-398214329.56649995,33702508.217051275,14242647.453040948,-125.6825776894,-1961.8170436304745,910.1234583044483 +740984222.3224,-398244688.9707,33233942.930496573,14456409.975718413,-129.6523918543,-1978.927866114597,887.5469923465128 +740984341.2213,-398260222.0226,32998157.756514587,14561245.963163333,-131.6279736976,-1987.1837100399314,875.8572940929432 +740984460.1201,-398275989.4293,32761403.703765422,14664676.607843397,-133.5940645746,-1995.2233581872943,863.908917916509 +740984579.019,-398291989.91389996,32523707.19830611,14766671.604718229,-135.5481628559,-2003.0347346277065,851.7095913174566 +740984697.9179,-398308221.9006,32285096.08456228,14867201.614765294,-137.487742029,-2010.606066649331,839.2678342955567 +740984816.8167,-398324683.51210004,32045599.58564155,14966238.358417485,-139.41026127369997,-2017.9259460693431,826.5929440574604 +740984935.7156,-398341372.5688,31805248.256568372,15063754.70657646,-141.31317647979998,-2024.9833899814764,813.6949737604641 +740984995.1651,-398349801.62520003,31684761.929999128,15111934.591039466,-142.256489426,-2028.4103973982137,807.1656753067499 +740985024.8898,-398354037.1404,31624442.88018184,15135878.584763344,-142.7259715234,-2030.0979143667996,803.8815591454577 +740985039.7521,-398356160.1257,31594264.60988326,15147813.926816309,-142.9601517707,-2030.9351082271917,802.2347130000478 +740985047.1833,-398357222.9228,31579170.81690157,15153772.413452879,-143.0770995491,-2031.3520556111241,801.4101028681366 +740985050.8989,-398357754.6472,31571622.75952874,15156749.358093195,-143.1355375842,-2031.5601158776217,800.9975022919245 +740985052.7567,-398358020.5908,31567848.441068772,15158237.25543291,-143.16474760469998,-2031.664042524545,800.7911282833325 +740985053.6856,-398358153.583,31565961.209444486,15158981.060320027,-143.1793503613,-2031.7159799595156,800.6879228700061 +740985054.6145,-398358286.5887,31564073.929591373,15159724.769329958,-143.1939516141,-2031.7679001291392,800.5847051902637 +740985056.4723,-398358552.6408,31560299.225240566,15161211.89968919,-143.2231496036,-2031.8716886587927,800.3782330527386 +740985060.1879,-398359084.9077,31552749.238409583,15164185.00941792,-143.2815274837,-2032.079058339761,799.96514183248 +740985067.6191,-398360150.092,31537646.955809586,15170126.622437997,-143.39821058060002,-2032.492967158124,799.1383728761306 +740985082.4814,-398362283.0602,31507433.183736958,15181991.402381646,-143.6312839843,-2033.3174544097144,797.4824990543967 +740985112.2061,-398366559.3739,31446969.043772593,15205647.016825788,-144.0962425682,-2034.9530421235306,794.1614894873072 +740985171.6556,-398375153.3431,31325896.248255596,15252661.19284179,-145.0212707685,-2038.1701569309496,787.4830850893983 +740985290.5544,-398392505.24700004,31083187.761569887,15345491.46683966,-146.8506910768,-2044.3841648405275,773.986160771031 +740985505.4235,-398424407.7289,30642770.947249502,15509139.275357146,-150.0801695169,-2054.845318187299,749.1573566615975 +740985705.845,-398454780.6439,30230035.452177774,15656927.427819947,-152.9932777676,-2063.677598966524,725.5498649669621 +740985825.8361,-398473240.48590004,29982118.282801725,15743129.574479807,-154.6869148452,-2068.524635036223,711.2382814411355 +740985885.8317,-398482546.0183,29857946.628334638,15785584.881311098,-155.5187010761,-2070.822093581474,704.0385049888187 +740985915.8295,-398487217.42120004,29795809.74709019,15806650.34649923,-155.9307206834,-2071.939038504537,700.428463586347 +740985930.8284,-398489557.74770004,29764728.821499698,15817142.444704209,-156.1357480273,-2072.4895340040334,698.6210108686903 +740985938.3278,-398490729.0629,29749185.272379875,15822378.324653547,-156.2380143467,-2072.762783845677,697.7166898446558 +740985942.0776,-398491315.008,29741412.73061675,15824993.72104944,-156.2890854526,-2072.898908841152,697.2643823363795 +740985943.9524,-398491608.0523,29737526.26847518,15826300.783189077,-156.31460546510002,-2072.966846302194,697.038192042246 +740985944.8899,-398491754.5924,29735582.989654608,15826954.155218758,-156.3273615827,-2073.000783766313,696.925087787851 +740985945.8273,-398491901.1445,29733639.679036327,15827607.421228103,-156.3401151068,-2073.0347003837264,696.8119774708748 +740985947.7021,-398492194.2844,29729752.962468103,15828913.635126438,-156.3656143707,-2073.1024710714105,696.5857386754508 +740985951.4519,-398492780.7077,29721979.14852307,15831524.79030423,-156.41658173369999,-2073.237762202766,696.1331886620987 +740985958.9513,-398493954.1273,29706430.0018685,15836742.00895483,-156.518391586,-2073.507343051225,695.2278006172314 +740985973.9502,-398496303.254,29675325.668477446,15847156.069405198,-156.7215100911,-2074.042495680655,693.4158858615552 +740986003.948,-398501010.62160003,29613093.122330368,15867902.604335291,-157.12572876049998,-2075.096738083112,689.7876090964323 +740986063.9436,-398510461.5301,29488534.765421357,15909068.725855496,-157.9259859094,-2077.140770317032,682.5141283942403 +740986183.9347,-398529505.71330005,29239063.100489166,15990088.730876097,-159.49294991099998,-2080.969603572777,667.9063886658337 +740986423.917,-398568144.2238,28738845.880073234,16146850.496092428,-162.4864609296,-2087.582000376462,638.503619216925 +740986663.8993,-398607477.6253,28237209.854795866,16296536.390777338,-165.2821551342,-2092.7932633357873,608.9577433033285 +740986903.8815,-398647457.1146,27734491.100350425,16439127.334304547,-167.86933312739998,-2096.6072138911272,579.3956034327445 +740987143.8638,-398688031.607,27231023.07573129,16574634.338517185,-170.2396983917,-2099.0417354486776,549.940786867515 +740987383.8461,-398729148.3206,26727133.348858178,16703097.476790957,-172.38740372540002,-2100.1278691016355,520.7115745174715 +740987623.8284,-398770753.36219996,26223140.577943347,16824584.389454566,-174.30902771010003,-2099.908595814457,491.81914682601894 +740987863.8106,-398812792.29910004,25719351.823190905,16939188.400642157,-176.00348711229998,-2098.4373742664593,463.3660971838764 +740988103.7929,-398855210.7088,25216060.205440454,17047026.294722505,-177.47189419129998,-2095.776515688553,435.4452894932322 +740988343.7752,-398897954.6794,24713543.007140353,17148235.89676302,-178.7173691961,-2091.9954637262244,408.1390591939033 +740988583.7575,-398940971.26640004,24212060.16699203,17242973.4773078,-179.7448201327,-2087.1690616027176,381.5187609756916 +740989063.722,-399027617.6961,23213144.410331637,17413733.954150785,-181.1727619727,-2074.6965646039475,330.56595483011074 +740989495.6901,-399106033.483,22319879.293898508,17547135.913808145,-181.78942722440001,-2060.7002270037783,287.545967717502 +740989927.6582,-399184589.4465,21433139.111795507,17662565.10618909,-181.83176399439998,-2044.5624575387337,247.36897427358576 +740990359.6263,-399263050.6673,20553752.347900942,17761264.708234243,-181.3611747662,-2026.7249149782824,210.0911463049498 +740990791.5944,-399341209.0561,19682364.45085773,17844485.61781019,-180.43997775859998,-2007.5917109749198,175.6948735306205 +740991223.5625,-399418883.1599,18819455.828998387,17913458.21240168,-179.12881281510002,-1987.5220401282907,144.1054818119013 +740991655.5306,-399495917.01919997,17965362.011334583,17969371.113825105,-177.4848321095,-1966.8273265996186,115.20675942303944 +740992087.4987,-399572178.3956,17120294.27874007,18013356.243019648,-175.56057246580002,-1945.7717137463394,88.85446825709835 +740992519.4668,-399647556.6351,16284359.560477898,18046479.212036964,-173.4033751636,-1924.5748037677195,64.88750089482573 +740992951.4349,-399721960.375,15457578.828126559,18069734.02142138,-171.0552160686,-1903.4157346359725,43.136683349907116 +740993383.403,-399795315.2434,14639903.565493269,18084041.080408856,-168.5528230552,-1882.4378965120925,23.43142767516656 +740993815.3711,-399867561.6507,13831230.167312387,18090247.710387185,-165.9279785819,-1861.7537892367832,5.60454064626208 +740994247.3392,-399938652.7416,13031412.252060506,18089130.35704231,-163.20792997229998,-1841.44970321537,-10.504477404709405 +740994679.3073,-400008552.5343,12240271.037303999,18081397.97632385,-160.4158490956,-1821.5900262741995,-25.047321649121955 +740995111.2754,-400077234.2608,11457603.960887445,18067696.12992626,-157.571302353,-1802.2210840626076,-38.16567616089367 +740995543.2435,-400144678.9083,10683191.738497939,18048611.44576185,-154.6907052317,-1783.3744838838447,-49.99067326093325 +740995975.2116,-400210873.9518,9916804.090031844,18024676.20473128,-151.7877462694,-1765.0699740771408,-60.64282767481825 +740996407.1797,-400275812.26019996,9158204.323329879,17996372.879739024,-148.87377212159998,-1747.3178524204084,-70.2322956665372 +740996839.1478,-400339491.1605,8407152.972413993,17964138.515520312,-145.9581309815,-1730.120972272906,-78.85934571834036 +740997703.084,-400463077.6788,6926740.207744466,17889422.298808724,-140.1510198044,-1697.376749888332,-93.58148442783215 +740998567.0202,-400581673.9291,5473687.499407141,17803265.85969037,-134.4117404964,-1666.7669286808523,-105.43771358209915 +740999430.9564,-400695351.9745,4046196.7740834565,17707916.271297116,-128.7691674024,-1638.1804313461791,-114.94029950029005 +741000294.8926,-400804203.5472,2642575.710211697,17605220.815128665,-123.2406641972,-1611.486305460238,-122.50568495371454 +741001158.8288,-400908331.7279,1261248.7813691208,17496701.876672745,-117.8356298015,-1586.5467587348762,-128.47232699423762 +741002022.765,-401007845.2126,-99240.5078215478,17383617.61568199,-112.5580159031,-1563.2250540409893,-133.1156595364838 +741002886.7012,-401102854.41819996,-1440232.715731021,17267010.97919137,-107.408102815,-1541.390065445748,-136.6603594890065 +741003750.6374,-401193468.88310003,-2762958.4683398986,17147749.068795957,-102.38374562419999,-1520.9187070076096,-139.29025284464944 +741004614.5736,-401279795.5685,-4068545.956553477,17026554.91303453,-97.48124480194,-1501.6970232681465,-141.15625973493638 +741005478.5098,-401361937.79410005,-5358028.983411699,16904033.021505974,-92.6959518742,-1483.620465007302,-142.38273791937604 +741006342.446,-401439994.6093,-6632355.029420363,16780690.08893396,-88.02268783478,-1466.5936783923912,-143.0725430800452 +741007206.3822,-401514060.4673,-7892392.997420092,16656951.744750328,-83.45603020243,-1450.5300248896447,-143.31106740185078 +741008070.3184,-401584225.1039,-9138940.489360608,16533176.207710134,-78.99050723476,-1435.3509631006227,-143.16946759450337 +741008934.2546,-401650573.5545,-10372730.503005888,16409665.41385541,-74.62072725067,-1420.9853776536609,-142.70725284873492 +741009798.1908,-401713186.2629,-11594437.566689063,16286674.15801265,-70.34146212451,-1407.3689040604077,-141.97436439438826 +741010662.127,-401772139.2456,-12804683.279217716,16164417.605029183,-66.14769903419999,-1394.4432796822352,-141.01285398409334 +741012389.9994,-401879349.18780005,-15193041.95441866,15922807.30473382,-57.99786540094,-1370.4584369678423,-138.5406231649426 +741013945.0845,-401964001.2231,-17308686.401643116,15709417.37618123,-50.91031436394,-1350.75470307888,-135.83730950436507 +741015500.1697,-402037798.1038,-19394923.052683137,15500499.380425341,-44.03345365757,-1332.6030261975598,-132.8065339808192 +741017055.2548,-402101051.49909997,-21454015.485399306,15296488.815485554,-37.34715183026,-1315.8156821037203,-129.53896011426252 +741018610.34,-402154043.6101,-23487958.076102562,15097697.925639424,-30.83359043754,-1300.2332316900147,-126.10346758119192 +741020165.4251,-402197030.55810004,-25498515.965152375,14904345.118932333,-24.47701446408,-1285.7195914715085,-122.55267566542511 +741021720.5103,-402230245.41580003,-27487258.215344355,14716576.920369146,-18.263488760010002,-1272.1580372687058,-118.92695786762289 +741023275.5954,-402253900.84860003,-29455585.262300644,14534484.64000342,-12.18067345251,-1259.4479656313733,-115.2573891910173 +741024830.6806,-402268191.4439,-31404751.904214088,14358117.031083973,-6.217622334076,-1247.5022585032114,-111.56793251447704 +741026385.7658,-402273295.7317,-33335886.517960254,14187490.025822708,-0.3646052994337,-1236.2451340057266,-107.87707385175048 +741027940.8509,-402269377.95589995,-35250007.290991254,14022594.24774941,5.387046752404999,-1225.6103839425825,-104.19905671978319 +741029495.9361,-402256589.615,-37148035.93359334,13863400.84304451,11.04507629442,-1215.5399242265241,-100.5448207023855 +741031051.0212,-402235070.8121,-39030809.35995426,13709866.039438307,16.6164154724,-1205.9825954751936,-96.92272049332445 +741032606.1064,-402204951.4338,-40899089.65100962,13561934.711739259,22.10728640696,-1196.8931673877676,-93.33908046821392 +741035716.2767,-402119385.505,-44594895.16506332,13282621.502718698,32.86946993605,-1179.9618849107858,-86.30481398407017 +741038218.2782,-402026521.1827,-47531265.22074354,13073616.310420787,41.33585667305,-1167.400258570772,-80.78736151388665 +741038218.2782,-402026521.64280003,-47531262.99901317,13073623.764273195,41.33584093062,-1167.400225887906,-80.78724923617767 +741040533.4004,-401921889.1879,-50221201.0539612,12892386.319885742,49.03387486294,-1156.5075327811085,-75.80034370641653 +741043760.7823,-401746579.1472,-53930540.0089484,12658716.274790801,59.56910075413,-1142.3460209402158,-69.04203576069614 +741046988.1641,-401537604.9067,-57595886.35646375,12446494.192466909,69.89950411326,-1129.218916571058,-62.50861689205908 +741050215.546,-401295590.847,-61220337.68849743,12255000.956860326,80.04714939227,-1116.9816687964492,-56.19537377313162 +741053442.9278,-401021096.0262,-64806567.07187585,12083537.296491012,90.03058229629,-1105.5147355560082,-50.094973616825826 +741056670.3097,-400714624.38699996,-68356894.88047113,11931430.170785502,99.86550817427,-1094.7183725799125,-44.19863768596093 +741059897.6915,-400376633.0492,-71873346.12636316,11798036.173089609,109.565319545,-1084.508676352383,-38.496892054148304 +741063125.0734,-400007539.0586,-75357696.29572208,11682742.898721348,119.14151068139999,-1074.8145388333326,-32.980047730592105 +741066352.4553,-399607724.9973,-78811508.92751598,11584969.162434686,128.60400556919998,-1065.5752845086681,-27.638501997770277 +741069579.8371,-399177543.54510003,-82236165.68767206,11504164.349744797,137.96142081230002,-1056.738806992473,-22.462926651914017 +741072807.219,-398717321.4703,-85632892.40718453,11439807.364487644,147.2212758586,-1048.260105212372,-17.44437514947873 +741076034.6008,-398227362.7689,-89002779.25613071,11391405.271720078,156.3901653471,-1040.100096509514,-12.57434548368326 +741079261.9827,-397707951.45320004,-92346798.51312731,11358491.820402786,165.4738988842,-1032.224669373618,-7.8448061565044895 +741082489.3645,-397159353.8919,-95665819.31466277,11340625.91252293,174.47761627280002,-1024.6039113555614,-3.2482018514068614 +741084103.0555,-396874189.1792,-97316201.78128529,11337204.450387437,178.95091579569998,-1020.8806756575808,-0.9975177662071246 +741085716.7464,-396581820.8036,-98960620.08860172,11337390.086091857,183.4058829607,-1017.2114766814782,1.2225544972708917 +741087330.4373,-396282277.9466,-100599159.14138673,11341134.082305908,187.84301169920002,-1013.5934934179297,3.4128304129814637 +741088944.1282,-395975589.01430005,-102231899.4259683,11348388.995587353,192.262769241,-1010.0240677681538,5.574098541337719 +741089750.9737,-395819573.4447,-103046119.03371248,11353318.563844632,194.46627297319998,-1008.2567750162123,6.644093928591133 +741090154.3964,-395740899.37509996,-103452695.25120644,11356106.38822462,195.56645454169998,-1007.37735097232,7.176472852966128 +741090557.8192,-395661781.6768,-103858917.24818558,11359108.636911679,196.66559794300002,-1006.5006927248364,7.707121251527781 +741090961.2419,-395582220.7676,-104264786.1338071,11362324.613866672,197.7637095929,-1005.6267641039797,8.236050493253003 +741091162.9533,-395542274.2387,-104467588.50250135,11364012.5341224,198.31238049270002,-1005.1908122412008,8.499873956767203 +741091263.809,-395522259.4782,-104568956.72773072,11364876.439615585,198.5866200552,-1004.9730874860946,8.6316260125991 +741091314.2368,-395512241.72679996,-104619632.6078035,11365313.373951625,198.72371590720002,-1004.8642876622238,8.697462197926711 +741091339.4507,-395507230.25869995,-104644968.49067377,11365533.086009473,198.79225785650002,-1004.8099033588403,8.730370338846683 +741091364.6646,-395502217.06240004,-104670303.00237481,11365753.627695229,198.8607958231,-1004.7555294496946,8.763271849419823 +741091389.8786,-395497202.138,-104695636.14328127,11365974.998898841,198.92932980860002,-1004.7011659263326,8.796166732302424 +741091415.0925,-395492185.48560005,-104720967.91358835,11366197.199421559,198.9978598145,-1004.6468127802083,8.82905499011082 +741091465.5203,-395482146.9975,-104771627.34349212,11366644.087675162,199.13490789320002,-1004.5381375855741,8.894811642533682 +741091566.376,-395462049.2902,-104872929.7678461,11367547.808795761,199.40895636209999,-1004.3209113489644,9.026245566437865 +741091768.0874,-395421770.9734,-105075468.93276004,11369394.99195259,199.9568628828,-1003.8869535901583,9.288796496931411 +741092171.5101,-395340882.9109,-105480284.99152784,11373248.02399211,201.0519169376,-1003.0210018620087,9.812635519674416 +741092574.9328,-395259553.2821,-105884752.22995326,11377312.046265729,202.14596407480002,-1002.15764007299,10.33479990442288 +741092978.3556,-395177782.4919,-106288871.6852367,11381586.385532033,203.2390103021,-1001.2968345057163,10.855300545738316 +741093785.201,-395012919.03470004,-107096071.32762642,11390763.344647944,205.42212367259998,-999.5827594819777,11.891353715844616 +741095398.892,-394677915.7389,-108706341.40627083,11411611.920766842,209.7765953402,-996.1838515235598,13.943964368753711 +741097012.5829,-394335898.1239,-110311157.07333063,11435752.16222936,214.11569014859998,-992.8222775505668,15.971132989015189 +741098626.2738,-393986890.7271,-111910577.03805698,11463143.534189481,218.4397485382,-989.4961430781967,17.973502846845065 +741100239.9647,-393630917.55,-113504657.03167702,11493746.522868901,222.7490942969,-986.2036525380511,19.95169573411323 +741103467.3466,-392898167.3413,-116677006.09316565,11564434.188806705,231.3248658681,-979.7128778029014,23.837934972636674 +741106694.7285,-392137829.7324,-119828596.13490003,11647518.212086357,239.8452993363,-973.3373346375074,27.63442396962853 +741109922.1103,-391350079.8999,-122959780.34319542,11742715.912920713,248.3124811036,-967.0656238793238,31.345439323896528 +741113149.4922,-390535086.59010005,-126070876.8825488,11849757.96489416,256.7283130564,-960.8874205954522,34.97498253443331 +741116376.874,-389693012.6813,-129162172.16097459,11968387.53930436,265.0945329369,-954.7933493318614,38.526800244814694 +741122831.6377,-387928248.1725,-135286362.6552542,12239439.751938738,281.68437072269995,-942.8242155390127,45.41108297211679 +741129286.4015,-386056989.7959,-141334109.92824078,12554039.203274213,298.0932316944,-931.0984572641817,52.023845523658736 +741135741.1652,-384080374.12619996,-147306818.47430575,12910507.565336913,314.330650151,-919.5659221140475,58.387636562731416 +741142195.9289,-381999480.82519996,-153205594.92343217,13307303.4966826,330.4047735018,-908.1841898527994,64.5224192632432 +741143330.8915,-381622889.0506,-154235223.28313488,13381133.555099241,333.21479515059997,-906.1957087782706,65.57879867976106 +741143330.8915,-381622888.6763,-154235221.2284241,13381134.12236096,333.2148003432,-906.1956965580438,65.57880581163829 +741148316.1787,-379931053.53139997,-158731166.45378736,13719491.961471006,345.5014120431,-897.498732875037,70.1438719622297 +741157753.0425,-376561766.8991,-167123557.48928273,14421029.984851927,368.51550431199996,-881.1643775969847,78.47029636086009 +741167189.9063,-372976753.6158,-175362338.18662328,15199336.110470653,391.2238391082,-864.9310251286776,86.42040277823637 +741176626.7701,-369178834.4497,-183448135.92378557,16051039.047485657,413.6396890271,-848.731834886144,94.03138996238275 +741186063.634,-365170715.9692,-191381004.29858127,16973093.584825113,435.774068619,-832.5115617048339,101.33533167476182 +741190782.0659,-363088651.34430003,-195289974.12885925,17459629.256989636,446.73864451099996,-824.378786883074,104.8810088732088 +741193141.2818,-362028257.8948,-197230056.73494077,17709131.022244975,452.19573403000004,-820.3044518110876,106.62868281815474 +741194320.8898,-361493238.1692,-198196491.70695195,17835423.244226083,454.9180315958,-818.2650328826082,107.49639404889709 +741194910.6938,-361224524.70180005,-198678806.81753957,17898952.594715297,456.2776248755,-817.2447287451994,107.92873828699123 +741195205.5958,-361089867.3344,-198919738.67556477,17930812.82044451,456.9570334108,-816.734424103121,108.14453503152549 +741195353.0468,-361022463.52559996,-199040148.16718346,17946766.78874632,457.29664074780004,-816.4792331551529,108.2523398665864 +741195426.7723,-360988742.84389997,-199100338.80195227,17954749.73286616,457.4664201945,-816.3516279669191,108.30621893327148 +741195500.4978,-360955009.6457,-199160520.02883807,17962736.648738645,457.6361834985,-816.2240162777587,108.36008245036595 +741195647.9488,-360887505.7051,-199280854.25643155,17978722.39051412,457.975661694,-815.9687733235459,108.46776288877291 +741195942.8508,-360752347.6784,-199521409.79441062,18010741.48392964,458.6544245209,-815.4582086532325,108.68293764817173 +741196532.6548,-360481431.3097,-200002069.09268713,18074969.85472563,460.01117667,-814.4367604580349,109.1125451173271 +741197712.2628,-359937199.437,-200961579.6877447,18204185.297829643,462.72159289530003,-812.3925584631126,109.96881107679522 +741200071.4787,-358839156.1136,-202873361.49147853,18465634.872345604,468.13011970360003,-808.2986948852958,111.66969860517554 +741204789.9106,-356604886.01900005,-206667904.33478948,19000482.611711137,478.89830970500003,-800.08729857695,115.02607373806984 +741214226.7744,-351984678.98700005,-214140339.56804717,20117002.76472725,500.24189453440005,-783.5561585944978,121.56613053760364 +741223663.6383,-347164251.00659996,-221456000.6704714,21294213.85832134,521.3329499414,-766.8569282106607,127.89159484313524 +741233100.5021,-342145962.2804,-228613179.85125652,22530172.779606164,542.1761988262001,-749.9643977806703,134.01953087615212 +741242537.3659,-336932131.8322,-235609945.97864848,23823089.242671065,562.7756674847,-732.8563314096368,139.96531778272546 +741251974.2297,-331525043.5278,-242444169.8644158,25171311.273018092,583.1347979640999,-715.5129066173371,145.742933204164 +741261411.0936,-325926951.1224,-249113544.81212857,26573313.163533628,603.2565437451,-697.9162627719043,151.36519589756688 +741270847.9574,-320140082.4795,-255615603.42829502,28027685.52112536,623.1434539624,-680.0501337561433,156.84397650726828 +741280284.8212,-314166642.9821,-261947730.94398728,29533127.313281074,642.7977501976,-661.8995449966003,162.19038399154815 +741289721.685,-308008818.32149994,-268107176.46471846,31088439.377925366,662.2213991682,-643.4505636297796,167.41493341427025 +741299158.5489,-301668776.55840003,-274091061.7205578,32692519.57754989,681.4161841923,-624.6900878103686,172.52770024719388 +741305694.9815,-297171670.16470003,-278131305.34920794,33831637.64643076,694.5781508386,-611.5064941984128,176.00867872183875 +741308960.516,-294892823.92509997,-280117361.2334326,34409213.93898299,701.1130682095,-604.8606334402709,177.73040749845302 +741323172.9909,-284727784.44409996,-288505931.90473527,36987805.6691173,729.2412146549,-575.460687274332,185.10070154774894 +741337385.4658,-274166573.872,-296471001.742698,39669859.57228175,756.8638952056001,-545.2585238068317,192.29530704776386 +741351597.9407,-263216327.6678,-304000895.3232248,42453118.85857603,783.9881926417,-514.2156761850327,199.34830088006188 +741358704.1781,-257597515.6785,-307598853.4182692,43882130.74822469,797.3662102981,-498.3670178338027,202.83293753353973 +741365810.4156,-251884066.8361,-311083392.0193141,45335825.93754573,810.6233223188,-482.29375264438204,206.29607210489152 +741372916.653,-246076834.4549,-314452897.58242893,46814069.709905595,823.7612334695999,-465.99095835136654,209.7428475053622 +741380022.8904,-240176658.59350002,-317705721.23802423,48316765.07496089,836.7819736563,-449.4536121953114,213.1787441435922 +741387129.1279,-234184363.5333,-320840177.98168176,49843855.364245296,849.6879687278999,-432.67656115549624,216.60964264451684 +741394235.3653,-228100754.6654,-323854545.6311145,51395327.32845712,862.4821238619,-415.6544893139079,220.04189459927304 +741401341.6028,-221926614.7455,-326747063.5427755,52971214.76220548,875.1679225445,-398.38188143307053,223.4824030853946 +741408447.8402,-215662699.381,-329515931.0528273,54571602.74212757,887.7495445782,-380.85298167897093,226.93871495724252 +741412000.959,-212497303.29549998,-330853421.80287564,55381026.245526314,894.0028201373001,-371.99054636554405,228.67535742273532 +741413777.5183,-210906284.0673,-331510329.32992977,55788054.943639144,897.1203773524,-367.534491940761,229.54627942153965 +741414665.798,-210108698.8299,-331835810.72765535,55992149.92529759,898.6769270799,-365.300211847666,229.98245338864334 +741415109.9378,-209709387.8805,-331997806.7126062,56094342.76268491,899.4546501067,-364.1815030436143,230.20072665346734 +741415332.0078,-209509602.89450002,-332078618.32328814,56145475.54237123,899.8433743482001,-363.62175575503585,230.3099108733044 +741415443.0427,-209409678.0325,-332118977.5077142,56171051.025548145,900.0377022378,-363.3417838017249,230.36451500803037 +741415498.5602,-209359707.5104,-332139145.44160384,56183841.04082042,900.1348576349,-363.20177323790296,230.3918200956242 +741415554.0777,-209309731.59449998,-332159305.6020631,56196632.572085515,900.2320073382,-363.0617462776177,230.4191272040917 +741415665.1126,-209209763.5832,-332199602.59859264,56222220.18299721,900.426289678,-362.781643153749,230.47374750642444 +741415887.1826,-209009762.8506,-332280103.2695923,56273413.60131468,900.8147861708001,-362.2212400121515,230.58301256482764 +741416331.3224,-208609502.6155,-332440731.1198904,56375873.249751285,901.5915071173999,-361.09964544977294,230.80164153122502 +741417219.6021,-207807947.6281,-332760491.2170545,56581084.00089769,903.143866579,-358.853297555676,231.23930318875887 +741418996.1614,-206200704.0442,-333394015.87769663,56992673.033155635,906.2443025644001,-354.34792113605533,232.11630884695387 +741422549.2802,-202969717.4508,-334636977.4597931,57820535.877239406,912.4284337296999,-345.2860757940868,233.8776028805428 +741429655.5176,-196442015.7028,-337025694.86022204,59495133.033890605,924.7331456748999,-326.95496021667793,237.43398222244502 +741436761.7551,-189827154.191,-339283147.0764625,61195189.71702658,936.9605151117,-308.3411655473053,241.04500823607418 +741443867.9925,-183125646.5833,-341407297.814349,62921138.6320803,949.1209841285,-289.43684417777087,244.7234195537319 +741450974.2299,-176337924.9775,-343396052.64031357,64673508.6148949,961.2271364182,-270.2334606829967,248.48357507439923 +741458080.4674,-169464323.0831,-345247253.6257495,66452937.121211365,973.2941647108,-250.7216554452362,252.34173717772342 +741465186.7048,-162505055.6861,-346958672.91624343,68260184.9233774,985.340455307,-230.89107696789569,256.3164123518453 +741472292.9423,-155460193.35779998,-348528004.9495054,70096153.51475066,997.3883245851,-210.730174021911,260.42876340930206 +741479399.1797,-148329631.5662,-349952857.1038166,71961905.59655248,1009.4649582819999,-190.22593551406538,264.70311227046 +741486505.4172,-141113051.7126,-351230738.1372191,73858689.76530841,1021.603615121,-169.363562890183,269.167556094893 +741493611.6546,-133809872.8317,-352359044.1053877,75787969.87953241,1033.8451937090001,-148.12605288802763,273.8547294556838 +741500717.8921,-126419190.2089,-353335040.84698296,77751460.58812675,1046.240290677,-126.49366199815886,278.8027527120264 +741507824.1295,-118939697.2858,-354155842.1674617,79751170.35413554,1058.851944235,-104.44321125835528,284.0564219395935 +741514930.367,-111369584.67359999,-354818382.3227297,81789454.04077807,1071.759342156,-81.94717431679425,289.66871249782207 +741522036.6044,-103706408.3335,-355319381.0390867,83869077.54931635,1085.062918063,-58.97246595450642,295.70269343603604 +741525166.0511,-100301376.05160001,-355487874.3643876,84798834.16351575,1091.079181643,-48.69296308926137,298.51266434372735 +741527336.1137,-97929088.05896999,-355585746.47118694,85448809.07005097,1095.317498466,-41.50371713479299,300.5214916624165 +741531051.9949,-93845329.55530001,-355716920.9173586,86572081.67925626,1102.716658459,-29.072460507951433,304.08469631323163 +741534767.8761,-89733708.67037,-355801608.6309062,87708902.52859381,1110.3187540870001,-16.48175300850606,307.8160797723991 +741538483.7573,-85593414.13923,-355839200.91537976,88859925.59467101,1118.1553462289999,-3.722696035585315,311.7315555926348 +741542199.6385,-81423508.12005,-355829053.89118224,90025867.21721676,1126.263158931,9.214776315483476,315.8488058462085 +741545915.5197,-77222905.08636,-355770483.79704744,91207513.08265823,1134.685151319,22.342100361723524,320.1875139741823 +741549631.4009,-72990346.29045,-355662761.4702171,92405726.11175904,1143.471867054,35.67232857229055,324.76962719691437 +741553347.2821,-68724368.42806,-355505105.75978285,93621455.4960987,1152.6831504279999,49.22042826555341,329.61964811874594 +741557063.1633,-64423265.29665,-355296675.8305813,94855746.62018096,1162.390351542,63.00364787307336,334.76495564531376 +741560779.0445,-60085039.82362,-355036561.79081786,96109752.5739353,1172.679188898,77.04196568570568,340.2361415772859 +741564494.9257,-55707344.04839,-354723773.62384754,97384746.54633272,1183.6535117239998,91.35864429387952,346.0673466587652 +741568210.8069,-51287403.01013,-354357227.7357285,98682135.66669145,1195.44031326,105.98091803926403,352.29655519545076 +741571926.6881,-46821916.582040004,-353935730.6435282,100003475.66047063,1208.1964943770001,120.94084227563981,358.96576117483704 +741573784.6287,-44570888.439380005,-353703967.6106914,100673657.68053424,1214.997529303,128.5590140521145,362.47956812930516 +741575642.5693,-42306932.25698,-353457959.21741945,101350485.62753794,1222.118152812,136.27634930625214,366.1208690424405 +741577500.5099,-40029424.446830004,-353197515.8472246,102034202.15754431,1229.5911214799999,144.0987202270826,369.8959062491612 +741579358.4505,-37737676.63646,-352922436.48027474,102725061.6300907,1237.453540957,152.03254310535505,373.8110312143948 +741581216.3911,-35430926.89595,-352632507.62308174,103423330.24591744,1245.747607091,160.0848337938182,377.8726120632407 +741583074.3317,-33108329.50236,-352327502.14827996,104129285.94635186,1254.5215037,168.26326714969287,382.08689888428273 +741584932.2723,-30768942.80737,-352007178.00716794,104843218.03123209,1263.8304945950001,176.5762390327998,386.4598297611121 +741586790.2129,-28411714.90233,-351671276.8334688,105565426.34117794,1273.738261504,185.03292880991245,390.9967537917886 +741588648.1535,-26035466.49431,-351319522.43426883,106296219.80739927,1284.318553235,193.64335874002782,395.7020380950949 +741590506.0941,-23638870.3594,-350951619.16802657,107035914.15861535,1295.657231117,202.41844319298156,400.57850908261014 +741592364.0347,-21220426.57925,-350567250.26959765,107784828.33410329,1307.854827053,211.37001802921617,405.62665981135035 +741594221.9753,-18778432.38312,-350166076.1218885,108543279.19927639,1321.029760041,220.51083114535638,410.8435180845701 +741596079.9159,-16310945.27389,-349747732.62940174,109311573.65967274,1335.32241818,229.85446713815872,416.22102535896545 +741597937.8565,-13815737.63167,-349311829.82158244,110089997.17821392,1350.9003731389998,239.41515894115096,421.743697527024 +741599795.7971,-11290240.098439999,-348857950.9356112,110878797.04349186,1367.965091275,249.2074089680708,427.3852170730848 +741601653.7377,-8731471.048337,-348385652.5396967,111678157.8323119,1386.760643219,259.24529782573643,433.1034291258588 +741603511.6783,-6135947.208245,-347894466.3047025,112488165.59436211,1407.585069273,269.54126653674007,438.83289291515575 +741604440.6486,-4823149.246473,-347641638.1865824,112897149.47230473,1418.869585912,274.7889819469791,441.6723751962369 +741605369.6189,-3499570.214733,-347383903.84441084,113308754.84582628,1430.8052996489998,280.1040239978921,444.4736661585873 +741606298.5892,-2164577.8830009997,-347121200.71563923,113722936.96026084,1443.452058352,285.486315681973,447.2160817145487 +741607227.5595,-817481.2084528999,-346853466.66544354,114139629.7070634,1456.8767951920001,290.9349749471761,449.8741625698221 +741608156.5298,542476.6966172,-346580640.85509324,114558740.67995581,1471.154504282,296.44804216484766,452.41654603636647 +741609085.5001,1916126.559625,-346302664.89959306,114980145.0621061,1486.369350818,302.02212274981775,454.80454478589394 +741610014.4704,3304382.019791,-346019484.41276705,115403678.01585336,1502.6159254810002,307.6519171807555,456.99034847111386 +741610943.4407,4708249.986429,-345731051.04704386,115829125.18832754,1520.000643607,313.3296010662835,458.91473939380455 +741611872.411,6128842.294968,-345437325.20657194,116256210.81688192,1538.643284431,319.044005012555,460.50417769546345 +741612801.3813,7567388.899854,-345138279.6327173,116684582.76357518,1558.678634684,324.77952614610626,461.66707015066623 +741613730.3516,9025252.59755,-344833904.1647682,117113793.60954957,1580.258169201,330.5146787482993,462.288976578383 +741614659.3219,10503945.25171,-344524212.0637346,117543276.68314672,1603.551637537,336.2201602102989,462.22643888341327 +741615588.2922,12005145.43964,-344209248.40966624,117972315.57071963,1628.748306663,341.85626204560526,461.2990235338338 +741616517.2625,13530716.83672,-343889101.3119074,118400005.19028997,1656.0574601110002,347.36940423693466,459.27907009008334 +741617446.2328,15082726.54032,-343563916.83112335,118825202.09247938,1685.707441798,352.68749506508505,455.8785244214922 +741618375.2031,16663461.42886,-343233918.9286126,119246460.8127735,1717.9421082879999,357.7137408554417,450.73215530970134 +741619304.1734,18275439.2218,-342899436.03443396,119661952.80093056,1753.012851984,362.3184488521358,443.37645819896795 +741619768.6585,19093994.63089,-342730652.3921097,119866835.26814876,1771.6888161910001,364.4106253415995,438.6921267325651 +741620233.1437,19921409.158210002,-342560936.3803266,120069363.4261859,1791.163267353,366.32831985049705,433.22378973205946 +741620697.6288,20758059.601910003,-342390376.0094966,120269150.82787725,1811.461007242,368.0408178293326,426.87360824001445 +741621162.114,21604333.23087,-342219074.60254616,120465762.89876898,1832.602022009,369.5128049651536,419.53202259480906 +741621626.5991,22460625.10431,-342047153.066327,120658711.25528817,1854.599503636,370.7037821383254,411.0767317568928 +741622091.0843,23327334.36459,-341874752.441255,120847447.56470665,1877.457365153,371.5674573426263,401.3717798718567 +741622555.5694,24204859.22731,-341702036.73212075,121031357.0356425,1901.167161261,372.05114049331144,390.2668558850229 +741623020.0546,25093590.39126,-341529196.01343,121209751.6544677,1925.7043230769998,372.0951829273856,377.5969592228704 +741623484.5397,25993902.55998,-341356449.7710643,121381863.38496897,1951.0236295450002,371.6325234601045,363.1826381395797 +741623949.0249,26906143.6112,-341184050.4175215,121546837.67129457,1977.053875902,370.58842746356174,346.8310658677033 +741624413.51,27830621.145379998,-341012286.8576856,121703727.6964297,2003.6917503290001,368.88053973261754,328.33830200697736 +741624877.9952,28767586.01754,-340841487.93031156,121851490.04174262,2030.7950410209999,366.41940691240694,307.49315017372294 +741625342.4803,29717212.603520002,-340672025.4597694,121988982.60219072,2058.1754471679997,363.10966294964066,284.08308050218835 +741625806.9655,30679575.725449998,-340504316.559932,122114965.82853079,2085.591487075,358.8521021701014,257.9027005215375 +741626271.4506,31654624.45255,-340338824.7218667,122228108.58110148,2112.742280215,353.5468765465178,228.7651951416772 +741626787.5452,32752634.285979997,-340158165.9169324,122337044.7963405,2142.153193274,346.3070192736207,192.73674368042325 +741627303.6399,33865496.39835,-339981633.42989653,122426364.99703568,2170.191994854,337.5387828475146,152.73377437207773 +741627561.6872,34427235.89912,-339895167.03583944,122463024.40423223,2183.486451546,332.55225264312753,131.2291508307687 +741627819.7345,34992329.93976,-339810040.4941776,122494006.317227,2196.175665004,327.1532297713761,108.73276041936855 +741628077.7818,35560610.013170004,-339726360.8851045,122519057.20272814,2208.16364654,321.337338596739,85.26492389095056 +741628335.8291,36131882.53822,-339644235.9618913,122537930.20150933,2219.352255414,315.1038045529342,60.85717721201172 +741628593.8764,36705928.491179995,-339563773.1656811,122550388.1232271,2229.6427227560002,308.4558992614474,35.5530417611333 +741628851.9237,37282503.46701,-339485078.52794373,122556206.61486953,2238.9374094769996,301.4013332268506,9.408561511864065 +741629109.971,37861338.21942,-339408255.48343295,122555177.43079723,2247.141762962,293.9525707726464,-17.50745437143668 +741629368.0183,38442139.72587,-339333403.6126589,122547111.72080371,2254.1664175120004,286.12704199017867,-45.113537972873004 +741629626.0656,39024592.80551,-339260617.3473289,122531843.24169292,2259.9293660450003,277.94722835467724,-73.31606104146184 +741629755.0893,39316334.657189995,-339225026.5983322,122521462.94511667,2262.3146177679996,273.7328598724638,-87.60862023770677 +741629884.1129,39608362.29783,-339189984.67063683,122509231.38591085,2264.358115361,269.44060274276484,-102.01015125080427 +741630013.1366,39900631.157180004,-339155501.3472496,122495135.4430703,2266.052618798,265.07463512061986,-116.5060077857257 +741630142.1602,40193095.78448,-339121585.85412914,122479163.91917193,2267.391726615,260.6394108411209,-131.08103028689715 +741630271.1839,40485709.95984,-339088246.82573575,122461307.60248661,2268.36992619,256.13964366812,-145.71960905729452 +741630400.2075,40778426.8118,-339055492.2722872,122441559.32063138,2268.9826383140003,251.58028913712508,-160.40575241231892 +741630529.2312,41071198.94073,-339023329.5503102,122419913.98536149,2269.226255375,246.96652411669174,-175.12315926775398 +741630593.743,41217590.80823,-339007472.2394676,122408378.91130465,2269.208799393,244.64091046302065,-182.48842652219525 +741630625.9989,41290785.56886,-338999599.9402978,122402433.17600983,2269.165144264,243.4737204896279,-186.1717912647306 +741630642.1269,41327382.32715,-338995677.9203478,122399415.75361356,2269.1345742800004,242.88906770254042,-188.01354224790532 +741630650.1908,41345680.50964,-338993720.4478128,122397895.90353078,2269.117102579,242.5964816416112,-188.9344206009136 +741630654.2228,41354829.54659,-338992742.5964131,122397133.19372818,2269.107819925,242.45012429381853,-189.39485870518513 +741630656.2388,41359404.05084,-338992253.8920543,122396751.14266452,2269.103041882,242.3769296156877,-189.62507726577672 +741630657.2468,41361691.299339995,-338992009.59527147,122396559.94310775,2269.100618679,242.34032828556468,-189.74018639348907 +741630658.2548,41363978.54538,-338991765.3352961,122396368.62748441,2269.098172689,242.30372429786897,-189.85529540999215 +741630660.2708,41368553.03,-338991276.9261346,122395985.64819716,2269.093212343,242.23050835936334,-190.08551308093462 +741630664.3028,41377701.96879,-338990300.5505334,122395218.29720612,2269.083018174,242.0840447101757,-190.54594673711358 +741630672.3668,41395999.71937,-338988349.571575,122393678.02594984,2269.0615358229998,241.79099092461874,-191.46680551754534 +741630688.4947,41432594.67142,-338984454.7064536,122390575.20632914,2269.014194244,241.20438222962323,-193.30847463660163 +741630720.7507,41505782.04959,-338976693.385121,122384280.46389553,2268.901997932,240.02919905750292,-196.99150454596497 +741630785.2625,41652144.065220006,-338961284.66705096,122371334.63335937,2268.6075205240004,237.67128101639153,-204.35541402114694 +741630914.2861,41944796.0305,-338930925.08758104,122344018.57259268,2267.7381860339997,232.92775601449375,-219.06729329267532 +741631172.3334,42529643.107370004,-338872052.158753,122283703.80366763,2264.881122082,223.3504402407473,-248.36876393526842 +741631430.3807,43113561.99832,-338815662.0683653,122215860.30036043,2260.54838168,213.6924622250228,-277.39706193445704 +741631688.4281,43696175.80798,-338761769.43636173,122140575.23144296,2254.7728335300003,204.00184529514394,-306.02380207462966 +741631946.4754,44277118.13538,-338710376.52276313,122057968.11012763,2247.60278136,194.32621371155903,-334.12707206044917 +741632204.5227,44856036.89342,-338661473.4470888,121968188.83771688,2239.100611232,184.71188624911915,-361.5936034485971 +741632223.8588,44899325.78841,-338657908.76332957,121961177.36909513,2238.411782595,183.99520506528506,-363.62303018138874 +741632223.8588,44899325.85763,-338657908.75843287,121961177.37661812,2238.411881822,183.99517582934473,-363.623161897127 +741632292.4067,45052679.10125,-338645383.2341013,121936006.03791308,2235.913786861,181.45947155945106,-370.78384167791364 +741632473.002,45455852.087699994,-338613212.8910868,121867358.72489741,2228.9211576489997,174.82147882756635,-389.38406443009984 +741632653.5974,45857710.07176,-338582234.9725361,121795388.76815827,2221.355955959,168.25624515356228,-407.5756033632513 +741632834.1927,46258152.48984,-338552435.1401187,121720172.48259643,2213.249927553,161.77689443321043,-425.33120655338496 +741633014.788,46657084.657929994,-338523796.7673644,121641790.81626818,2204.636376058,155.39563228739183,-442.62682921070325 +741633195.3833,47054418.01856,-338496301.11109954,121560328.76567921,2195.5497833,149.1236843185817,-459.44168260826757 +741633375.9786,47450070.31969,-338469927.4927655,121475874.78764592,2186.025437651,142.9712518077883,-475.75823504393117 +741633466.2763,47647242.12252,-338457154.5028895,121432554.27020486,2181.11026743,139.94275461328925,-483.7250504763847 +741633511.4251,47745660.488579996,-338450870.1863004,121410625.70106956,2178.6163944610003,138.44090351115673,-487.65990734496137 +741633533.9995,47794827.315069996,-338447753.40816814,121399594.97989501,2177.360631327,137.69313236580658,-489.61512240230167 +741633545.2867,47819400.081369996,-338446201.3433032,121394063.09065023,2176.730573742,137.32004206597878,-490.58966772383116 +741633550.9303,47831683.79564,-338445426.88933754,121391293.02396978,2176.415004775,137.1336965543115,-491.0761737648418 +741633553.7521,47837824.98466,-338445040.05666375,121389906.96139039,2176.2570857260002,137.04057380978193,-491.31923499906685 +741633555.163,47840895.41204,-338444846.7388106,121389213.67291246,2176.178092622,136.9940249541457,-491.4407176511925 +741633556.5739,47843965.72796,-338444653.48664784,121388520.21306342,2176.099077154,136.94748444687883,-491.562168321906 +741633559.3957,47850106.02525,-338444267.17930603,121387132.77945375,2175.940979186,136.85442849010352,-491.80497370550705 +741633565.0393,47862385.28083,-338443495.3520962,121384355.8576524,2175.6245156210002,136.66841691628397,-492.29020049452305 +741633576.3266,47886938.42899,-338441954.84507775,121378793.80599776,2174.99052181,136.2967959303064,-493.2591171434584 +741633598.901,47936023.217360005,-338438886.39967996,121367636.95151855,2173.718298048,135.55516896829258,-495.19079474135947 +741633644.0498,48034106.31999,-338432799.61194634,121345192.88732567,2171.157150523,134.07842512458632,-499.02946572709726 +741633734.3475,48229923.17211,-338420825.0647838,121299788.55292581,2165.9700078680003,131.15136475373345,-506.60761689166145 +741633914.9428,48620133.13319,-338397660.7608866,121206957.05977967,2155.351865448,125.4058332703519,-521.3641231682116 +741634095.5381,49008398.26519,-338375520.64013743,121111509.06111178,2144.437840153,119.80998046767473,-535.5834024847173 +741634276.1334,49394668.256680004,-338354377.2058926,121013541.85647032,2133.262384433,114.36879313261059,-549.2628029005783 +741634456.7287,49778898.93562,-338334202.1497412,120913152.99447569,2121.8590013030002,109.08628224028774,-562.4021840844612 +741634817.9194,50541095.191929996,-338296640.9044086,120705499.15958203,2098.496623942,99.00874090130847,-587.0716764103693 +741635179.11,51294748.52819,-338262600.507444,120489317.30733803,2074.593408888,89.59185138856819,-609.6332146241691 +741635540.3006,52039703.85932,-338231841.5670124,120265357.20207994,2050.368087755,80.8380198196939,-630.1550481229017 +741635901.4913,52775880.48847,-338204125.70226073,120034340.0770211,2026.0136187399999,72.73957884355289,-648.7258576654037 +741636262.6819,53503262.68527,-338179218.82055855,119796952.34373969,2001.696808217,65.28078396400181,-665.4488185175195 +741636623.8725,54221890.33609,-338156893.6921896,119553841.32051107,1977.55902693,58.43968513987639,-680.4364030709088 +741636985.0631,54931850.03557,-338136931.88632864,119305612.66758944,1953.717709237,52.18980752362654,-693.8060080802729 +741637346.2538,55633266.6914,-338119125.1196578,119052829.35242869,1930.268331044,46.50160281872701,-705.6764138301718 +741637707.4444,56326296.10442,-338103276.15314126,118796011.59545428,1907.2866913169998,41.34367037545013,-716.1650175167384 +741638068.635,57011118.27553,-338089199.2688329,118535637.78522323,1884.8312665419999,36.68374745544804,-725.3857631481133 +741638429.8257,57687931.53782,-338076720.43893975,118272146.00684552,1862.945532602,32.48949031662505,-733.4476686519263 +741638791.0163,58356947.551570006,-338065677.24050593,118005936.0118121,1841.66016713,28.729072865407147,-740.4538424935147 +741639513.3976,59672476.306379996,-338047304.3043252,117466782.38077134,1800.9612192060001,22.387561440795253,-751.6786654894171 +741640163.5407,60832044.98574,-338034274.6360803,116975555.42950782,1766.498721911,17.86841894654259,-759.0687512849369 +741640813.6839,61969870.54485,-338023860.40911466,116480234.93090513,1734.066105098,14.31814366010343,-764.337545365191 +741641463.827,63087253.32584,-338015476.0127052,115982077.89828128,1703.598331203,11.603370843694393,-767.8504782505805 +741642113.9701,64185442.302080005,-338008617.007685,115482122.98583758,1675.0046527,9.607591850334188,-769.9151082166802 +741642764.1133,65265622.2811,-338002849.5499435,114981225.65356776,1648.179972738,8.229898500771696,-770.7886827830924 +741643414.2564,66328907.288849995,-337997800.75725156,114480088.46204379,1623.012758497,7.383396658401807,-770.6854760794006 +741644064.3995,67376338.25869,-337993150.13755363,113979286.79700586,1599.390397103,6.993533933623837,-769.7834959052593 +741644714.5427,68408883.54371001,-337988622.0986963,113479290.47796181,1577.202695387,6.996482438080136,-768.230391913697 +741645364.6858,69427441.26095,-337983979.466354,112980481.80258818,1556.344061155,7.337649297184328,-766.1485384761775 +741646014.829,70432842.73503001,-337979017.9225947,112483170.5383355,1536.714764446,7.9703462818505955,-763.6393381296464 +741646664.9721,71425856.54133,-337973561.2540225,111987606.34893501,1518.2215679790002,8.854624938945733,-760.786826573796 +741647315.1152,72407192.81300001,-337967457.3041776,111493989.08448753,1500.7779351420002,9.956270430941345,-757.6606706740178 +741647965.2584,73377507.58811,-337960574.53455985,111002477.28619248,1484.30396244,11.245940081273602,-754.3186507481477 +741648615.4015,74337407.05059999,-337952799.1022512,110513195.22705954,1468.726138933,12.69843045815577,-750.8087094533327 +741649265.5447,75287451.5788,-337944032.37518835,110026238.74334984,1453.9770034790001,14.292056185684771,-747.1706405404736 +741649915.6878,76228159.55135001,-337934188.82094747,109541680.06400707,1439.994748271,16.0081247008402,-743.4374800576833 +741651215.9741,78083450.31586,-337910984.07969713,108579950.38017686,1414.109404464,19.745191277313268,-735.7909169070205 +741652516.2603,79906714.12703,-337882700.6167242,107628248.19666265,1390.672909633,23.804730912410434,-728.0369679246215 +741653816.5466,81700912.58494,-337848972.94247127,106686633.51271895,1369.352669075,28.10763187747716,-720.2908300840926 +741655116.8329,83468610.73384,-337809525.4590747,105755041.90853596,1349.869619055,32.593786998398144,-712.6308661393914 +741656417.1192,85212040.39845,-337764151.094324,104833324.8688108,1331.988852505,37.217208677379034,-705.1095854019618 +741657717.4055,86933152.36537,-337712695.3772688,103921278.11983399,1315.511851893,41.94248557328535,-697.7612753463098 +741659017.6917,88633659.44202,-337655044.4459042,103018661.66997278,1300.2701251540002,46.7421923721551,-690.6073441515894 +741660317.978,90315071.99538,-337591115.97436,102125213.9490861,1286.1200188560001,51.59498029126104,-683.6600884788136 +741661618.2643,91978727.42055,-337520852.23482656,101240661.8289857,1272.938497822,56.48415810225271,-676.9253672716555 +741662918.5506,93625814.63651,-337444214.7665619,100364727.68161967,1260.619709218,61.396628952021075,-670.4045107581899 +741664218.8368,95257394.54629,-337361180.2480242,99497134.32799354,1249.0721796290002,66.32208774492346,-664.095689505682 +741665519.1231,96874417.19432001,-337271737.28161496,98637608.47121227,1238.216521752,71.25241049434058,-657.9949005893183 +741666819.4094,98477736.21514,-337175883.8747487,97785883.0363192,1227.98355135,76.18118662288663,-652.0966792310807 +741668119.6957,100068121.0625,-337073625.4567217,96941698.71679012,1218.3127352870001,81.1033581435739,-646.3946135756383 +741669419.9819,101646267.3957,-336964973.3099234,96104804.94974448,1209.1509069410001,86.01493967973573,-640.8817164045065 +741670720.2682,103212805.9426,-336849943.3224191,95274960.48402691,1200.4511986310001,90.91279981568033,-635.5506932018021 +741673320.8408,106313302.4376,-336600830.64399016,93635502.37928452,1184.276964479,100.65810622444371,-625.4046519037956 +741674087.8576,107219933.0007,-336522526.94982016,93156909.82133004,1179.786314314,103.5179887836938,-622.5368364076811 +741674087.8576,107219951.3994,-336522522.3249592,93156910.83318463,1183.951093848,102.49897077313648,-621.0644512292763 +741674918.7626,108201726.3774,-336436071.033428,92642134.77595049,1179.2171163550001,105.58909591416756,-618.0193011544919 +741675400.8536,108769566.8055,-336384736.14559996,92344613.05120106,1176.529988729,107.37808243288865,-616.2813352603727 +741675641.899,109053003.7821,-336358745.4566935,92196165.13160637,1175.2022643149999,108.27148268975884,-615.4201430815023 +741675882.9445,109336121.9663,-336332539.50633824,92047924.17892253,1173.8848796650002,109.16414759131374,-614.5640842469941 +741676123.9899,109618923.8327,-336306118.4720791,91899888.96060151,1172.5776739960002,110.05607247914139,-613.7131138148425 +741676244.5127,109760206.90980001,-336292827.354412,91825948.1196234,1171.9278389150002,110.50175603848217,-613.289522800099 +741676304.774,109830819.1159,-336286161.6552682,91788996.8248109,1171.603854783,110.72452786405043,-613.0781984167946 +741676334.9047,109866117.9023,-336282823.77188456,91770525.9505618,1171.442095013,110.83589626010178,-612.9726537040314 +741676349.9701,109883765.4683,-336281153.571867,91761291.70574209,1171.3612730700002,110.89157607542245,-612.9199106806533 +741676365.0354,109901411.8169,-336279482.5330116,91752058.25535092,1171.280489705,110.94725296763772,-612.8671871975139 From 9648b681e2e842286ef5c9db1d7d68b04907e8bf Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Mon, 30 Sep 2024 16:19:33 +0900 Subject: [PATCH 443/456] modify path name --- settings/sample_satellite/satellite.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sample_satellite/satellite.ini b/settings/sample_satellite/satellite.ini index 59e3c5997..3a89dc56f 100644 --- a/settings/sample_satellite/satellite.ini +++ b/settings/sample_satellite/satellite.ini @@ -125,7 +125,7 @@ error_tolerance = 0.0001 /////////////////////////////////////////////////////////////////////////////// // Settings for orbit propagation with time series file /////////// -time_series_file_path = SETTINGS_DIR_FROM_EXE/sample_satellite/time_series/time_series.csv +time_series_file_path = SETTINGS_DIR_FROM_EXE/sample_satellite/orbit_files/time_series_orbit.csv number_of_interpolation = 5 // Interpolation method 0: POLYNOMIAL From 7d36c935b36fe8cafdc7244181f773257fcaddb5 Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Mon, 30 Sep 2024 16:30:12 +0900 Subject: [PATCH 444/456] modify time_series_orbit.csv --- .../orbit_files/time_series_orbit.csv | 3971 ----------------- 1 file changed, 3971 deletions(-) diff --git a/settings/sample_satellite/orbit_files/time_series_orbit.csv b/settings/sample_satellite/orbit_files/time_series_orbit.csv index 6ee1558ff..fd1519f45 100644 --- a/settings/sample_satellite/orbit_files/time_series_orbit.csv +++ b/settings/sample_satellite/orbit_files/time_series_orbit.csv @@ -99,3974 +99,3 @@ ephemeris_time[s],position_i_x[m],position_i_y[m],position_i_z[m],velocity_i_x[m 715843150.8148,259800185.9332,-261643400.80021977,84980394.98085491,2.2741037471439998,9.254357245190995,-150.56163132943067 715844634.1195,259797975.8742,-261628811.0746532,84756314.34089553,-5.31953792671,10.40324886362125,-151.5807702951432 715845969.0938,259786114.5769,-261614274.80887884,84553328.72959259,-12.510306223079999,11.362263826441371,-152.5288019697381 -715847304.0681,259764404.85930002,-261598507.233625,84349054.22182807,-20.08141920621,12.247554842498914,-153.51298860023627 -715848639.0424,259732307.7008,-261581608.1765313,84143437.16427371,-28.08097505023,13.057138010599793,-154.54170530495486 -715849974.0167,259689214.5239,-261563679.52256495,83936411.39707837,-36.56534952681,13.789988345323579,-155.6254010632265 -715851308.991,259634434.98839998,-261544823.6003607,83727895.09941868,-45.600995026679996,14.446572119858857,-156.77720582770465 -715852643.9653,259567182.0871,-261525140.7072075,83517786.6940269,-55.266706171799996,15.029623075761187,-158.01374612072897 -715853978.9395,259486553.8294,-261504725.37117884,83305959.47828165,-65.65648857488,15.54527887060432,-159.3562518269308 -715855313.9138,259391510.5787,-261483660.74655542,83092254.50854683,-76.88320850091999,16.004753966824694,-160.83207376331202 -715856648.8881,259280846.9398,-261462010.33082265,82876471.13123453,-89.08325583538,16.426825074026375,-162.47679042163605 -715857983.8624,259153156.4844,-261439805.50530124,82658354.1053246,-102.4225067982,16.841544663390167,-164.33715999702287 -715858200.2221,259130751.8159,-261436153.30122408,82622763.2705383,-104.7049088838,16.910875218194327,-164.66292750087834 -715858200.2221,259130750.1223,-261436154.18654937,82622763.0612167,-104.70484791129999,16.910945282458982,-164.6629285537212 -715858428.7089,259106549.0605,-261432280.89078584,82585099.8814117,-107.1544154388,16.985516048090894,-165.01517127322052 -715859202.5569,259020328.0829,-261419034.88047567,82456922.38485497,-115.7658849424,17.25302584162487,-166.27608909142887 -715859976.4049,258927243.08670002,-261405569.61373553,82327724.62041724,-124.9031811158,17.55493394745895,-167.65507997491835 -715860750.2529,258826865.8636,-261391851.50849944,82197407.71489953,-134.6225062219,17.910014224285057,-169.1721347127964 -715861524.1009,258718721.91289997,-261377830.49471095,82065855.83497111,-144.9874500632,18.342312383606306,-170.85122474491342 -715862297.9488,258602284.3524,-261363435.39410907,81932932.77339733,-156.0699879808,18.882633088865887,-172.72121345949176 -715863071.7968,258476967.007,-261348567.9611615,81798477.73023327,-167.951550803,19.570472135757576,-174.81699600683362 -715863845.6448,258342116.68420002,-261333095.24476138,81662300.1255673,-180.7241169927,20.456532099269715,-177.18092466615087 -715864619.4928,258197004.5851,-261316839.6826969,81524173.15136464,-194.4912385027,21.606001204148498,-179.86458907704449 -715865393.3408,258040817.0448,-261299566.33131877,81383825.8121829,-209.368834704,23.102822290291414,-182.93102844162098 -715866253.1718,257853177.4276,-261278801.23187062,81224882.65631053,-227.35869979109998,25.306008190373504,-186.88160155938613 -715866683.0874,257753378.5437,-261267634.2589715,81144066.94434695,-236.98723133,26.677380493346433,-189.10989622286 -715867113.0029,257649343.0503,-261255831.91774556,81062252.32020569,-247.07207084249998,28.267129814124928,-191.5320362086942 -715867542.9185,257540869.1352,-261243293.10054716,80979350.86669968,-257.6395319475,30.109669343984578,-194.16973366633908 -715867972.834,257427743.5944,-261229900.81464338,80895264.79130565,-268.7162243657,32.2446031055684,-197.04725998051973 -715868402.7496,257309741.8089,-261215519.79508284,80809885.27137429,-280.32854594730003,34.71745350247028,-200.1916972966993 -715868832.6651,257186627.97550002,-261199993.79446837,80723091.19308814,-292.5019858904,37.580452900320964,-203.63318407341907 -715869262.5807,257058155.6935,-261183142.51600716,80634747.78781198,-305.2601885982,40.89338413361257,-207.4051375025047 -715869692.4962,256924069.00640002,-261164758.1850893,80544705.18333004,-318.623719962,44.72444199045327,-211.54442798200736 -715870122.4117,256784104.0585,-261144601.74936345,80452796.89561643,-332.608468991,49.151069729608494,-216.09147039495204 -715870552.3273,256637991.5212,-261122398.74102286,80358838.308323,-347.2236144254,54.26069857990056,-221.09018374393122 -715870982.2428,256485460.00980002,-261097834.85236806,80262625.20722757,-362.4690870616,60.15128501651576,-226.58775491016763 -715871412.1584,256326240.7043,-261070551.35474902,80163932.47405182,-378.33247059390004,66.9314971985911,-232.63412374491304 -715871842.0739,256160073.42450002,-261040140.56151566,80062513.08552508,-394.7853130649,74.72035126714566,-239.28108798283938 -715872271.9895,255986714.4208,-261006141.583833,79958097.58808737,-411.77888479250004,83.64603799806055,-246.58090989074554 -715872701.905,255805946.0825,-260968036.83668998,79850394.30869615,-429.23950196299995,93.84363177669246,-254.58429943608888 -715873131.8206,255617588.7086,-260925249.82706773,79739090.58589663,-447.06368019390004,105.45133412739101,-263.33765792001446 -715873561.7361,255421514.3231,-260877144.93278116,79623855.35940747,-465.1135640339,118.60491225812662,-272.879505438175 -715873991.6517,255217662.2821,-260823030.01179695,79504343.47369032,-483.21330106159996,133.43007384183204,-283.2360979117487 -715874421.5672,255006056.0777,-260762162.75163627,79380202.01792194,-501.14725645659996,150.0327130098471,-294.41637716488094 -715874851.4827,254786820.3249,-260693761.6272707,79251078.92272612,-518.6611347021,168.48729777925917,-306.4065924449079 -715875329.1667,254534574.7479,-260607945.6609314,79101352.9450165,-537.2773452899,191.19946580631614,-320.6273520675598 -715875568.0086,254405186.80249998,-260560831.38440293,79023889.77370863,-546.1245415594001,203.41743722773313,-328.0628625797542 -715875806.8506,254273730.125,-260510732.02597463,78944627.11955754,-554.5911726552,216.19276646787742,-335.6925123498452 -715876045.6926,254140302.1722,-260457516.8876198,78863521.0626211,-562.6224498183,229.50400133755153,-343.49526561751895 -715876284.5346,254005013.3314,-260401061.23988432,78780533.08399583,-570.1650603763,243.32259151928446,-351.4469532449376 -715876523.3765,253867986.4246,-260341248.02615008,78695630.79076853,-577.1683607486,257.61288749019127,-359.5205050046252 -715876762.2185,253729355.9392,-260277969.52342016,78608788.56627901,-583.5855912630999,272.33236523016,-367.68629495715686 -715877001.0605,253589266.9464,-260211128.94764847,78519988.13284978,-589.3750501234,287.4320832986297,-375.91259086234385 -715877239.9024,253447873.7644,-260140641.90404406,78429218.99015611,-594.5011763099,302.8573755046721,-384.1660993790824 -715877478.7444,253305338.37690002,-260066437.65027565,78336478.71523154,-598.9354806254,318.5487595476753,-392.4125857352024 -715877717.5864,253161828.651,-259988460.11894262,78241773.10778718,-602.6572750344001,334.44303041581213,-400.6175430889348 -715877837.0074,253089762.00640002,-259948043.0548229,78193687.36416368,-604.246774518,342.44578038304604,-404.69376038729 -715877896.7178,253053660.2179,-259927475.70984995,78169462.27302381,-604.9732576685,346.45741531728027,-406.7234657654023 -715877926.5731,253035593.3969,-259917102.16812658,78157304.32523862,-605.3194079008,348.46533956590247,-407.7359919241446 -715877941.5007,253026556.1535,-259911892.91231605,78151214.02139702,-605.4882087972,349.4697710290141,-408.24164545141434 -715877948.9645,253022036.5921,-259909282.6612276,78148166.03968619,-605.5715406250999,349.9720969256632,-408.4943163580958 -715877952.6964,253019776.5789,-259907976.12963375,78146641.34171736,-605.6129393824,350.223286519105,-408.6206124147834 -715877954.5624,253018646.5144,-259907322.51233047,78145878.81600356,-605.6335719718,350.34888786036674,-408.6837505376958 -715877956.4283,253017516.4115,-259906668.66064698,78145116.17248437,-605.6541600355,350.4744935251946,-408.7468820380617 -715877960.1602,253015256.0906,-259905360.25402823,78143590.53203611,-605.6952025868,350.72571770650956,-408.8731251138745 -715877967.6241,253010734.991,-259902740.62818214,78140537.83808705,-605.7767533893,351.2282165430847,-409.1255311174055 -715877982.5517,253001690.979,-259897490.12347487,78134426.80041325,-605.9377178745,352.23340894410495,-409.6300190915536 -715878012.4069,252983595.8529,-259886944.0895873,78122182.14906129,-606.2510994288,354.2445153289799,-410.6376714798529 -715878072.1174,252947378.3827,-259865671.83312324,78097602.7313932,-606.8436882011,358.26915619574777,-412.6474640989403 -715878191.5384,252874844.08449998,-259822406.04225233,78048085.04437375,-607.8923981829,366.3244923908285,-416.64328218650627 -715878430.3804,252729453.8357,-259732988.4360708,77947628.64222784,-609.4474824941,382.4303633812578,-424.5265500334899 -715878669.2223,252583777.4991,-259639730.03020683,77845308.94419435,-610.2907580268,398.4756467748739,-432.2414113318209 -715878908.0643,252437982.82299998,-259542652.83336338,77741169.36534852,-610.4423620663,414.3977584229386,-439.76162530736997 -715879146.9063,252292231.91820002,-259441793.37508473,77635259.22078595,-609.9292349016,430.13785386301873,-447.0640813503534 -715879385.7483,252146679.73929998,-259337201.70282847,77527632.94597021,-608.7841939632999,445.6417206751304,-454.1290484748662 -715879624.5902,252001472.8024,-259228940.18859878,77418349.27113454,-607.0449035378999,460.8604688692209,-460.9403070486011 -715879863.4322,251856748.1575,-259117082.20021686,77307470.38033079,-604.7527927203,475.75100999555787,-467.48516858419316 -715880102.2742,251712632.6131,-259001710.6657899,77195061.06818472,-601.951975275,490.27632736900983,-473.754395216029 -715880341.1161,251569242.227,-258882916.62408298,77081187.94173405,-598.6882077916,504.40555331309565,-479.74203363147257 -715880579.9581,251426682.0313,-258760797.76019797,76965918.66093248,-595.0079283506,518.1138738948164,-485.4451815598809 -715881057.642,251144417.036,-258507001.08805025,76731463.43352093,-586.5819631402,544.1972598578534,-495.9999223748966 -715881535.326,250866459.6449,-258241183.06458986,76492233.10643432,-577.0296351432,568.4373399435711,-505.44500467173225 -715882013.0099,250593268.9511,-257964230.7865126,76248745.51630268,-566.6752575345,590.8172588642014,-513.8355649307454 -715882490.6939,250325158.72579998,-257677025.40965626,76001487.28995924,-555.8018575041999,611.3760033927456,-521.2456011032114 -715882968.3778,250062318.2598,-257380419.34080255,75750906.91689025,-544.6473686238,630.1924304283956,-527.759530945286 -715883446.0617,249804833.8829,-257075220.62752357,75497411.42349575,-533.4053272297,647.3712793666276,-533.4655856835766 -715883923.7457,249552709.4147,-256762183.41214064,75241365.76189671,-522.2284061594,663.0318308029733,-538.4510328980825 -715884401.4296,249305884.5259,-256442003.15111396,74983094.08800298,-511.2334284429,677.299281681386,-542.7989975387314 -715884879.1135,249064250.55130002,-256115315.35710666,74722882.24028629,-500.50688464290005,690.2985658329956,-546.5865599114899 -715885356.7975,248827663.6751,-255782696.78211612,74460980.88241555,-490.1103258304,702.1501987560649,-549.8838050953557 -715885834.4814,248595955.64880002,-255444668.22567967,74197608.94788973,-480.0852741393,712.9676950150421,-552.7535362335515 -715886312.1654,248368942.3049,-255101698.22779018,73932957.0808968,-470.4574962504,722.8561534229658,-555.2514263948785 -715886789.8493,248146430.1991,-254754207.25830132,73667190.95143414,-461.2405938568,731.9116645104115,-557.4264335032443 -715887267.5332,247928221.70160002,-254402572.0572426,73400454.34051624,-452.4389483316,740.2212737019049,-559.3213571131706 -715887745.2172,247714118.8078,-254047129.88550395,73132871.93234608,-444.0500894923,747.8633005736926,-560.9734544426578 -715888222.9011,247503925.9498,-253688182.5748788,72864551.81483582,-436.0665718372,754.9078691536133,-562.4150620313933 -715888700.5851,247297452.0031,-253326000.2898401,72595587.68418634,-428.4774393625,761.4175487452954,-563.6741903915349 -715889178.269,247094511.6864,-252960824.97550634,72326060.77975962,-421.2693569329,767.4480369951131,-564.7750739654845 -715890133.6369,246698525.1798,-252222340.33430433,71785591.19109234,-407.9360729543,778.2639344449731,-566.5830913149998 -715890993.468,246352509.0748,-251549421.42595276,71297858.99332011,-397.0833718939,786.8009326932996,-567.8514040143194 -715891853.299,246015392.1765,-250869575.34839118,70809153.40140964,-387.2208309075,794.4057510481196,-568.8581969049519 -715892713.1301,245686361.9608,-250183533.86634335,70319673.25945108,-378.25898707,801.2351299189432,-569.6615115520723 -715893572.9612,245364680.3269,-249491907.14202896,69829573.36405176,-370.1144097074,807.4163324838516,-570.3063593505493 -715894432.7923,245049677.9465,-248795206.38946393,69338974.28110422,-362.7106536189,813.0531043852352,-570.8277797940292 -715895292.6234,244740748.1261,-248093862.007203,68847969.88728932,-355.97844712370005,818.2304056486531,-571.2531576932563 -715896152.4545,244437340.72939998,-247388238.0383563,68356633.15421842,-349.85545664399996,823.0181482695073,-571.603978544195 -715897012.2856,244138956.38779998,-246678643.8092127,67865020.62827346,-344.2858292701,827.4741475048332,-571.8971616272454 -715897872.1167,243845141.1721,-245965343.27505586,67373175.89608622,-339.2196388388,831.6464532809371,-572.1460755204613 -715898731.9478,243555481.7382,-245248562.6021165,66881132.291835815,-334.6123056376,835.5751969050494,-572.3613148725527 -715899591.7789,243269600.9802,-244528496.3150524,66388915.01276396,-330.4240313227,839.2940583301072,-572.551297269056 -715900451.6099,242987154.14589998,-243805312.32665077,65896542.785797186,-326.6192695247,842.831436481462,-572.7227239555455 -715901311.441,242707825.3962,-243079156.05708584,65404029.18225352,-323.1662423417,846.2113867141036,-572.8809372831702 -715902171.2721,242431324.7511,-242350153.83590284,64911383.66226097,-320.0365053045,849.4543749607425,-573.0301992694269 -715903031.1032,242157385.3967,-241618415.71520734,64418612.40575864,-317.2045602631,852.5778872683518,-573.1739098130029 -715904750.7654,241616225.09960002,-240147104.2667417,63432704.856773704,-312.3447711531,858.5244069212134,-573.4549596114506 -715906470.4276,241082589.3834,-238665856.52248073,62446312.55208876,-308.4297942335,864.1479030726866,-573.7397297495968 -715908190.0897,240554967.1983,-237175162.37620828,61459420.05121782,-305.33166833260003,869.5212959767712,-574.0379459429971 -715909909.7519,240032047.0333,-235675401.99751288,60471998.75326648,-302.945395387,874.7001836472343,-574.3554511289565 -715911629.4141,239512681.6788,-234166871.41807336,59484012.37891084,-301.18420225819995,879.7274947510876,-574.695523029984 -715913349.0763,238995860.1642,-232649801.30640793,58495420.56978906,-299.9758877807,884.636765691059,-575.0597403822909 -715915068.7385,238480685.2173,-231124371.0047185,57506181.28277931,-299.25998665640003,889.4544813863941,-575.4485572940798 -715916788.4006,237966355.0892,-229590719.12204394,56516252.377085246,-298.9855552961,894.2017709797224,-575.8616880472883 -715918508.0628,237452148.71859998,-228048951.6185357,55525592.64433466,-299.10943102109997,898.8956519445287,-576.298366591852 -715920227.725,236937413.5924,-226499148.0457458,54534162.47697193,-299.5948539601,903.5499538239378,-576.757522384823 -715921947.3872,236421555.7091,-224941366.4053263,53541924.281930335,-300.4103684219,908.1760116765795,-577.2378997434214 -715923667.0494,235904031.2461,-223375646.95996407,52548842.72260637,-301.528941168,912.7831922711462,-577.7381388843814 -715925386.7115,235384339.5867,-221802015.26413864,51554884.85096202,-302.92724901649996,917.3792968351652,-578.2568304785881 -715928826.0359,234336633.9543,-218631057.79222265,49564220.57580101,-306.48495811299995,926.5634549596509,-579.3438924695577 -715932265.3603,233275096.4074,-215428484.84523553,47569716.431194104,-310.9515721931,935.769830200443,-580.4879224453693 -715934814.2644,232477711.7638,-213034567.55784854,46088993.95262695,-314.7880830091,942.6252806481396,-581.3662303797452 -715935841.8465,232153396.8664,-212064508.18342358,45491402.99588941,-316.4525791266,945.3996566335526,-581.7266499305906 -715940288.0513,230729180.0938,-207834247.71995983,42901404.4085661,-324.3831374326,957.4884635989112,-583.3195640226397 -715944734.2562,229267223.362,-203549884.25289404,40304226.83565536,-333.4118833092,969.741705793105,-584.9527292384618 -715949180.4611,227762846.0587,-199210621.14099884,37699732.76995489,-343.4529747117,982.1876928433802,-586.6077166674213 -715953626.666,226211687.1109,-194815549.50464615,35087864.00762693,-354.4473248882,994.8489953783055,-588.2672190604881 -715958072.8708,224609600.5437,-190363669.03402773,32468637.51895196,-366.35634066349996,1007.7444591624318,-589.9146610188026 -715962519.0757,222952574.906,-185853901.3418619,29842143.03799443,-379.1576130666,1020.8905030699722,-591.5338258904436 -715966965.2806,221236667.7967,-181285098.87964752,27208542.26655376,-392.841940819,1034.301967911936,-593.1085048993194 -715971411.4854,219457952.4957,-176656050.48765302,24568069.578085884,-407.4112609924,1047.9926847434067,-594.6221623996113 -715975857.6903,217612471.6097,-171965485.0288217,21921034.199453235,-422.877241138,1061.9758537057642,-596.0576102980503 -715980303.8952,215696196.03640002,-167212073.592958,19267823.83423022,-439.2603514841,1076.2642956998095,-597.3966810752834 -715984750.1001,213704987.1968,-162394430.7934875,16608909.759262137,-456.5893044095,1090.8706126015118,-598.6198891303308 -715986973.2025,212679950.6953,-159961074.44943464,15277485.560887143,-465.61962678230003,1098.2968758661764,-599.1815067361946 -715988084.7537,212159834.9734,-158738182.02587473,14611315.306249738,-470.2284990609,1102.041462894256,-599.448602308496 -715988640.5293,211897847.2091,-158125172.0107416,14278120.167278133,-472.5566696154,1103.9217048655012,-599.5785627743454 -715988918.4171,211766366.9936,-157818274.76107347,14111495.681383163,-473.7267284325,1104.8638235251933,-599.6426258344858 -715989057.361,211700504.81770003,-157664727.91367725,14028176.784034029,-474.31325631839997,1105.3353835925545,-599.6744254983199 -715989126.833,211667543.1519,-157587929.91406745,13986515.681181751,-474.6068955235,1105.5712889750523,-599.6902670400314 -715989161.569,211651054.6674,-157549524.76780573,13965684.717309497,-474.75380902210003,1105.68927302293,-599.6981731963612 -715989196.3049,211634561.0785,-157511115.52288714,13944853.478979632,-474.900785149,1105.8072779839977,-599.7060695953107 -715989265.7769,211601558.5786,-157434284.73402697,13903190.180457428,-475.1949253814,1106.0433506714953,-599.7218330766646 -715989404.7208,211535492.23169997,-157280573.94035864,13819860.3048044,-475.7839584084,1106.5157472614635,-599.7532424366916 -715989682.6086,211403113.66120002,-156972955.32678792,13653187.51583118,-476.96503994169996,1107.4615466205532,-599.8155881305775 -715990238.3842,211137369.0947,-156356928.68723974,13319790.40456485,-479.3393071789,1109.357180585606,-599.9383663616154 -715991349.9354,210601898.7313,-155121707.26088828,12652795.079149403,-484.13660287510004,1113.1646736390783,-600.1760996922185 -715993573.0379,209514777.9066,-152638507.12123847,11318041.68619433,-493.9291009761,1120.8452318620484,-600.6188753976347 -715998019.2427,207273724.43,-147620389.00179508,8645841.464221895,-514.3303352857,1136.473977704601,-601.3618838152204 -716002465.4476,204939452.5011,-142531971.06921056,5970802.871509992,-535.8717273019,1152.4696141473883,-601.8905646587236 -716006911.6525,202506740.195,-137371595.70963556,3293949.2521394566,-558.6234686187,1168.8439241315793,-602.1725944398311 -716011357.8573,199970031.9791,-132137553.93764794,616456.9077118263,-582.6655687726,1185.6081974379529,-602.1713722625507 -716015804.0622,197323393.0143,-126828088.14639677,-2060324.1453752741,-608.0888134080999,1202.772964070552,-601.8452138532265 -716020250.2671,194560458.7145,-121441396.25324574,-4734845.505112499,-634.9959443217999,1220.3476296814576,-601.1463902920374 -716024696.472,191674378.4174,-115975637.7779044,-7405330.95328103,-663.5030877497001,1238.3399863681875,-600.019973497996 -716029142.6768,188657752.4531,-110428942.27512674,-10069741.63508568,-693.7414675644001,1256.7555591822236,-598.402436581904 -716033588.8817,185502560.32320002,-104799421.38197723,-12725733.95758938,-725.859444207,1275.596743305816,-596.219953346131 -716038035.0866,182200079.4122,-99085185.07127362,-15370609.443272755,-760.0249371046,1294.8616585882341,-593.3863109714368 -716042481.2914,178740791.7768,-93284363.93223009,-18001254.067297935,-796.4282933952001,1314.5426332496015,-589.8003381856814 -716046927.4963,175114277.1229,-87395139.14308767,-20614064.963041525,-835.2856815046,1334.6241890783629,-585.3427142522444 -716051373.7012,171309089.3187,-81415782.89423606,-23204861.171627738,-876.8430983458,1355.0803572977593,-579.8719873948426 -716055819.9061,167312613.56910002,-75344712.59952317,-25768774.580752183,-921.3810906731001,1375.8710869965375,-573.2195758967576 -716060266.1109,163110900.79779997,-69180563.72980471,-28300115.798224237,-969.2202975516,1396.9374168144807,-565.1834545201256 -716064712.3158,158688475.3738,-62922287.65016511,-30792208.35525619,-1020.7279176149999,1418.1949486087965,-555.520132740499 -716066447.513,156899022.2337,-60454219.224993736,-31752480.407225568,-1041.9138001,1426.518604280511,-551.245611501802 -716066868.3561,156459442.3189,-59853453.70354001,-31984242.44842916,-1047.148954274,1428.5381344688717,-550.1626317665787 -716069800.5229,153334421.9453,-55644117.40290637,-33585798.89826896,-1084.718704673,1442.6018223328779,-542.0823178764136 -716072732.6897,150096315.7631,-51393605.25130797,-35162201.162893064,-1124.308830337,1456.6141077492289,-532.9856896689917 -716075664.8565,146738970.7146,-47102159.167604834,-36710289.23563297,-1166.077934891,1470.5105067030547,-522.7470997500347 -716078597.0232,143255746.8266,-42770231.663849354,-38226508.0747772,-1210.199731241,1484.2113327968398,-511.2222590568838 -716081529.19,139639471.1199,-38398535.39955847,-39706848.37464055,-1256.86428493,1497.618181222992,-498.24501962325144 -716084461.3568,135882387.8646,-33988104.241163954,-41146777.01184474,-1306.279178606,1510.6095441360646,-483.6235515923444 -716087393.5236,131976105.78770001,-29540368.756371617,-42541155.29038941,-1358.670484418,1523.0353299700628,-467.13580101697266 -716090325.6904,127911542.8234,-25057249.70284211,-43884142.633647405,-1414.283362524,1534.7100002077918,-448.5241047146124 -716093257.8572,123678869.9902,-20541274.09821722,-45169083.09366515,-1473.382013906,1545.4039620138885,-427.48882670607 -716096190.024,119267456.96260001,-15995719.662504956,-46388371.63699662,-1536.248582426,1554.8327718650107,-403.6808840842697 -716099122.1907,114665822.8357,-11424794.677391771,-47533296.689884,-1603.180387667,1562.6435990645277,-376.69305558878426 -716102054.3575,109861598.82869999,-6833862.514672965,-48593855.37413478,-1674.4846058189999,1568.3983020805288,-346.0500241135558 -716104986.5243,104841511.65990001,-2229721.3982722424,-49558537.8635079,-1750.469077223,1571.552372223239,-311.19724564282717 -716108244.4874,98993213.95839,2890973.0667243116,-50501756.83337639,-1840.741408521,1571.178215468314,-266.7457704454942 -716109873.4689,95956173.77837,5448903.529460318,-50916336.071528,-1888.291647361,1569.1185264670803,-241.9540741210053 -716111502.4505,92840329.59507,8002303.485361479,-51289002.222363144,-1937.4987934679998,1565.585109254404,-215.26132092686402 -716113131.432,89642961.28395,10548615.986598026,-51616532.25624971,-1988.386797185,1560.3822702581997,-186.5106010657699 -716114760.4136,86361319.91639,13084945.92568307,-51895438.152805924,-2040.966478818,1553.2901104513815,-155.5334625382821 -716116389.3951,82992652.27662,15608018.588642245,-52121948.13117624,-2095.2315416,1544.0620514527197,-122.15002366219068 -716118018.3767,79534232.57942,18114134.17844192,-52291988.40864214,-2151.153722529,1532.4223624411943,-86.16950740305407 -716119647.3582,75983402.84796,20599118.374611437,-52401166.24939432,-2208.676946321,1518.0638174991136,-47.391359501364946 -716121276.3398,72337623.78188,23058269.34440185,-52444755.505946636,-2267.71035847,1500.6456676866908,-5.607147723545836 -716122905.3213,68594537.93835999,25486301.84737434,-52417686.019665256,-2328.120128852,1479.7921927816249,39.39650818706741 -716124534.3029,64752047.109699994,27877289.69349206,-52314538.735698864,-2389.719964299,1455.0921914810472,87.8336795796489 -716126163.2844,60808406.55432,30224608.440159917,-52129549.22888779,-2452.260358502,1426.0998760602765,139.91321314165748 -716127792.266,56762337.44033,32520881.104856484,-51856622.36486922,-2515.416727143,1392.3377798755405,195.8307772283352 -716129421.2475,52613159.35506,34757930.72144643,-51489361.841626674,-2578.7767887930004,1353.30241346305,255.75850058449362 -716131050.229,48360943.59295,36926744.93904135,-51021118.816525675,-2641.827828342,1308.4735294910092,319.83187636958274 -716132679.2106,44006686.63236,39017459.294165656,-50445064.25012155,-2703.944853685,1257.3279327940863,388.13373072906035 -716134308.1921,39552501.19388,41019367.31853649,-49754289.74799462,-2764.38111407,1199.3587490368193,460.675295605813 -716136118.1716,34490431.09493,43125539.838369735,-48843884.52788539,-2828.494364573,1126.3821527524653,546.1463186882427 -716137928.1511,29316200.42845,45091074.44752438,-47774332.77979925,-2888.071978422,1043.880658018908,636.4660597280375 -716138833.1409,26689909.46535,46015627.67015787,-47177225.500389084,-2915.68148537,998.9395204132427,683.298419018574 -716139738.1306,24039397.33801,46898381.632723905,-46537272.5906996,-2941.56498075,951.5032968188259,731.1381666009522 -716140643.1204,21366322.05517,47737074.939344645,-45853606.767966196,-2965.5095069950003,901.5677064841423,779.8844412730155 -716141548.1101,18672536.186320003,48529451.30155717,-45125459.58790971,-2987.298508716,849.1487098989278,829.4196078963796 -716142453.0999,15960088.81747,49273278.85526065,-44352176.73072979,-3006.714771815,794.2846672837472,879.6090920501377 -716143358.0896,13231224.6514,49966371.32099176,-43533233.25951718,-3023.5438002650003,737.0382540179339,930.3016088450368 -716144263.0794,10488379.87255,50606610.74680882,-42668248.47192389,-3037.577579197,677.4980233354781,981.3298421518853 -716145168.0691,7734174.4598900005,51191971.46382447,-41756999.916169755,-3048.618644156,615.7795039211776,1032.5116184453657 -716145620.564,6353677.772881,51463470.590746105,-41284003.645303905,-3052.95913396,584.1470071920421,1058.0994996854074 -716146073.0589,4971400.717923,51720544.784905516,-40799436.11058429,-3056.4843466270004,552.0257244470308,1083.6516016849012 -716146525.5537,3587716.737411,51962977.82177525,-40303319.38791563,-3059.174476017,519.4378076898114,1109.141815044041 -716146978.0486,2203007.909732,52190563.877816826,-39795687.48816369,-3061.011178274,486.40706942299374,1134.5435129371642 -716147430.5435,817664.2580252,52403108.272418395,-39276586.56975367,-3061.9776986340003,452.95893665098635,1159.8296471785065 -716147883.0384,-567917.0001417,52600428.1869171,-38746075.10562688,-3062.0589924289998,419.12039243367593,1184.9728507133386 -716148888.5825,-3645794.970045,52983571.918917544,-37526684.70908685,-3059.006674008,342.6714580435263,1240.1958058480511 -716150005.8538,-7059189.2622879995,53318179.73324158,-36107379.03930834,-3050.283210308,256.0443590289716,1300.1983977086368 -716151123.1251,-10459664.92601,53555234.470844604,-34622015.13807745,-3035.8757443609998,168.1307847535869,1358.3779706630116 -716151681.7608,-12153071.56019,53636799.156259224,-33855250.0118122,-3026.539666871,123.85738362640814,1386.6607062732105 -716151961.0786,-12997720.276010001,53668296.860632755,-33465983.495756842,-3021.341621088,101.67142222837668,1400.5796402909375 -716152100.7375,-13419487.8849,53681721.02403544,-33269897.690732375,-3018.610757643,90.56991180418208,1407.481013691799 -716152170.567,-13630227.13795,53687851.61648675,-33171494.03734885,-3017.2124656210003,85.01749928114594,1410.9168733070037 -716152205.4817,-13735559.957789999,53690771.50855456,-33122202.32612452,-3016.5051180829996,82.24093816706318,1412.6310588412327 -716152222.939,-13788217.08255,53692195.10005421,-33097534.037584584,-3016.1493956930003,80.85257633572803,1413.4872108824347 -716152231.6677,-13814543.313210001,53692897.80676367,-33085194.289876588,-3015.9710225669996,80.15837603146048,1413.9150511408266 -716152236.0321,-13827705.8443,53693246.88780775,-33079023.015763663,-3015.8817080490003,79.81127114846248,1414.128912256981 -716152238.2142,-13834286.96363,53693420.860242374,-33075937.028715212,-3015.8370188050003,79.63771753864734,1414.2358280525568 -716152239.3053,-13837577.48672,53693507.704445824,-33074393.94770599,-3015.814666188,79.55094044366024,1414.2892822585804 -716152240.3964,-13840867.98542,53693594.453956746,-33072850.80836987,-3015.792308239,79.46416315592859,1414.3427340031492 -716152242.5786,-13847448.909610001,53693767.668950886,-33069764.35475272,-3015.747576353,79.29060800376175,1414.449630106169 -716152246.9429,-13860610.46505,53694112.96273947,-33063590.747767806,-3015.65804862,78.94349540931074,1414.6633927604992 -716152255.6716,-13886932.4028,53694799.0055456,-33051240.735435423,-3015.478737347,78.24926117302766,1415.0907997827737 -716152273.129,-13939571.575410001,53696152.91163325,-33026529.5221072,-3015.119091803,76.86075744596786,1415.9451401150643 -716152308.0437,-14044831.025740001,53698788.00301596,-32977062.37949027,-3014.395710577,74.08361641256369,1417.6519213048593 -716152377.8732,-14255273.680739999,53703767.2822352,-32877949.540766425,-3012.9326027049997,68.52885959087422,1421.0578490027171 -716152517.5321,-14675848.68783,53712562.09541131,-32679012.15179584,-3009.941130499,57.41792351611315,1427.838873296606 -716152796.8499,-15515715.06454,53725496.19093378,-32278310.850448932,-3003.698229397,35.194175249385125,1441.2752907552285 -716153355.4855,-17189976.284479998,53732745.84645259,-31465769.47649259,-2990.182219573,-9.230339494058626,1467.627684953184 -716154472.7568,-20513962.74542,53672926.98749549,-29797542.149575822,-2959.122922057,-97.74508318141727,1518.1166267503659 -716155590.0281,-23800344.63284,53514665.13727322,-28074658.745962057,-2922.9160765929996,-185.36149915592625,1565.4238793030777 -716156595.5723,-26721321.28045,53289121.09886568,-26480374.502185732,-2886.198294589,-263.0173913507149,1605.0921547001933 -716157601.1165,-29603529.477029998,52986218.11978817,-24847644.309756253,-2845.856356221,-339.1696219926524,1641.8740280325867 -716158606.6606,-32443479.6989,52607633.60627487,-23179417.68547198,-2802.2026966109997,-413.4947745800432,1675.6822224712887 -716159612.2048,-35238009.17877,52155352.68918615,-21478712.78521815,-2755.573367037,-485.7049130632124,1706.467320061972 -716160617.7489,-37984301.4847,51631630.69064174,-19748578.994555276,-2706.3197617610003,-555.5509940885723,1734.2162511090864 -716161623.2931,-40679897.84731,51038952.929191254,-17992061.576459356,-2654.800563081,-622.8248041254617,1758.9497958779662 -716162628.8373,-43322700.69371,50379993.42491613,-16212169.310444362,-2601.374229518,-687.359491141929,1780.7193090402134 -716163634.3814,-45910969.89266,49657573.14856002,-14411845.354436813,-2546.3923055180003,-749.0288337456623,1799.6029088710243 -716164639.9256,-48443312.90584,48874620.402803496,-12593942.66562105,-2490.193673388,-807.7454466711972,1815.701337741627 -716165645.4698,-50918669.538200006,48034132.939937994,-10761203.348053327,-2433.099892584,-863.4581377698646,1829.1337243907783 -716166651.0139,-53336292.71194,47139143.1253409,-8916242.202476252,-2375.411627182,-916.148647597824,1840.0334198412845 -716167656.5581,-55695726.08431,46192686.653899565,-7061534.453832053,-2317.406121096,-965.8279949078857,1848.5440528283077 -716168662.1023,-57996779.62403,45197775.02543144,-5199407.26464949,-2259.3356388119996,-1012.5326279304574,1854.8159128817779 -716170673.1906,-62424165.0767,43074373.49051654,-1461435.6773839388,-2143.880393758,-1097.2675433747622,1861.2588879729199 -716172684.2789,-66621281.38352001,40791744.14522003,2282136.1243621856,-2030.5545567640002,-1171.0098282505576,1860.5864258592687 -716174695.3673,-70593604.86386001,38371176.73177862,6018188.082283791,-1920.485253456,-1234.5940230497342,1853.9683307890477 -716176706.4556,-74348532.71488,35832179.3815674,9735860.354885409,-1814.464445816,-1288.944534279229,1842.4773272009961 -716178717.5439,-77894764.10223,33192368.142901678,13426332.898377182,-1713.00453339,-1335.0092401149122,1827.0669696940618 -716180728.6322,-81241794.81594,30467469.519387428,17082576.693973597,-1616.394448793,-1373.7132295673787,1808.5647302783943 -716182739.7206,-84399520.66785999,27671398.487700142,20699102.10711074,-1524.751055833,-1405.9292358065272,1787.675175088079 -716184750.8089,-87377937.18137,24816382.4528993,24271720.211690925,-1438.063359103,-1432.460889433998,1764.989139497191 -716186761.8972,-90186920.33866,21913109.033063862,27797326.037402153,-1356.228847595,-1454.0352069216062,1740.9959113401078 -716188772.9856,-92836072.70566,18970882.213115044,31273707.548374504,-1279.082341229,-1471.3013480316822,1716.0964020523013 -716190784.0739,-95334620.79984,15997776.719248373,34699380.97677243,-1206.418242505,-1484.8333562969744,1690.6160507066224 -716192795.1622,-97691351.39210999,13000784.120780319,38073451.31438645,-1138.007277157,-1495.1352239555063,1664.8167600696804 -716194806.2505,-99914576.98002,9985947.74551823,41395495.354728855,-1073.608788811,-1502.6471171733292,1638.9075213342053 -716196817.3389,-102012122.28379999,6958484.385989064,44665464.80490955,-1012.979553222,-1507.7520067007408,1613.0536392887736 -716198828.4272,-103991325.63069999,3922892.607546497,47883606.61064798,-955.8799180589999,-1510.782218621785,1587.3845916149476 -716200839.5155,-105859050.56269999,883048.3521940708,51050397.700879276,-902.0779299554,-1512.0256227900343,1562.0006360983598 -716202850.6039,-107621704.2077,-2157711.4820966534,54166491.95678486,-851.3519680946,-1511.7313079823036,1536.978307437084 -716204861.6922,-109285259.7421,-5196516.254424401,57232677.18640777,-803.4922915216999,-1510.1146865884957,1512.3749601601098 -716206872.7805,-110855281.1839,-8230898.524497531,60249840.456535086,-758.3018054932,-1507.3620186027822,1488.232499216533 -716208883.8688,-112336949.105,-11258739.483775139,63218940.16987161,-715.596280106,-1503.634381284371,1464.5804317504776 -716210894.9572,-113735086.4059,-14278221.887355927,66140983.73819069,-675.2041919715999,-1499.07112716246,1441.4383551405567 -716214917.1338,-116298422.4365,-20286111.79133025,71848073.80634086,-600.7351627913,-1487.9041200524052,1396.7247741982244 -716218939.3105,-118577649.0525,-26244652.425558478,77379559.04813899,-533.7577228751001,-1474.6453199859222,1354.1182405602808 -716222961.4872,-120600893.8189,-32146672.90719912,82743856.95833963,-473.3007149329,-1459.884843436567,1313.5821739196958 -716226983.6638,-122392673.98799999,-37987070.55686193,87949155.89272825,-418.5363488944,-1444.0680355741533,1275.042626544448 -716231005.8405,-123974429.6013,-43762305.712739795,93003300.70208657,-368.7590038602,-1427.5319060241454,1238.40495837129 -716235028.0171,-125364976.3369,-49470022.65969327,97913732.7223883,-323.3663282787,-1410.5320322227708,1203.5645630915953 -716239050.1938,-126580886.8567,-55108764.33165774,102687464.404005,-281.84292970300004,-1393.2624844290765,1170.413682312314 -716243072.3704,-127636812.2702,-60677756.0232064,107331075.88367033,-243.7465397764,-1375.870650975512,1138.8456455665705 -716247094.5471,-128545751.956,-66176741.12596306,111850724.92507938,-208.6964072468,-1358.468324793158,1108.7574251047538 -716251116.7238,-129319281.1049,-71605855.40004681,116252164.79470825,-176.36361038959998,-1341.1400371044356,1080.051086083328 -716255138.9004,-129967742.3604,-76965530.64189714,120540766.40749699,-146.46299592879998,-1323.9493584780696,1052.6345233460775 -716259161.0771,-130500408.0527,-82256420.40884249,124721542.47108814,-118.7464732584,-1306.943686080951,1026.421737218522 -716263183.2537,-130925617.6144,-87479342.6576673,128799172.05441849,-92.9974333408,-1290.157902600748,1001.3328216225698 -716267205.4304,-131250894.65540001,-92635235.31271257,132778024.81227998,-69.02609565095,-1273.617183965717,977.293774059109 -716271227.6071,-131483046.763,-97725121.74562515,136662184.12359786,-46.66562026203,-1257.3391669407301,954.2362044713689 -716275249.7837,-131628251.0622,-102750084.01164678,140455469.02945194,-25.76884994952,-1241.3356270638787,932.096988614809 -716279271.9604,-131692127.6936,-107711241.95329458,144161454.6202816,-6.205573116387,-1225.6137854154986,910.8179004956992 -716287316.3137,-131595965.447,-117446719.96130046,151324720.94999576,29.37010785276,-1195.0272039900044,870.6294789021781 -716293658.99,-131328743.5555,-124952087.4937435,156751883.28126168,54.49464672874,-1171.714967949332,840.967549442751 -716300001.6662,-130909401.35489999,-132311810.40907079,161996088.29826975,77.38521778084,-1149.0992440689433,812.9132336799257 -716306344.3425,-130351245.2306,-139530249.89249814,167067069.32510307,98.30664325033001,-1127.1613692662868,786.3234036868562 -716312687.0188,-129666031.73079999,-146611635.01390082,171973705.0955562,117.48412879429999,-1105.8786464818972,761.0712882199119 -716319029.695,-128864195.5931,-153560042.71315306,176724116.2757671,135.1102946378,-1085.226066953421,737.0443158915486 -716325372.3713,-127955038.0704,-160379387.27007064,181325749.62951177,151.3507851666,-1065.1774957435919,714.14225456145 -716331715.0476,-126946883.1444,-167073415.82622588,185785450.9887197,166.3487718062,-1045.7064842624538,692.275614657511 -716338057.7238,-125847208.1936,-173645708.2960165,190109529.00114805,180.2285956145,-1026.7868199913821,671.3642778158923 -716344400.4001,-124662753.6418,-180099680.08153665,194303810.69274127,193.0987304715,-1008.3928924473958,651.3363210780979 -716350743.0764,-123399615.708,-186438586.71210322,198373690.2031777,205.05421020420002,-990.4999287429488,632.1270061686574 -716357085.7527,-122063325.06469999,-192665529.64159593,202324171.49844936,216.17862714979998,-973.0841379695805,613.6779104235081 -716363428.4289,-120658914.0324,-198783462.7708454,206159906.0206619,226.54578777080002,-956.1227908954629,595.9361772191317 -716363934.2845,-120544113.0064,-199266785.35529426,206461012.93914288,227.342012377,-954.7889647433897,594.5501930622547 -716373797.2455,-118219430.8526,-208567211.23041436,212218501.8551268,242.9099571122,-930.3132724557388,570.7661862228047 -716387659.451,-114722835.438,-221224446.7059432,219888683.0796793,261.13200121980003,-896.1400424835398,536.303959298887 -716401521.6565,-110990793.03289999,-233420142.853584,227098545.6713279,276.9500092924,-863.6938490668475,504.2964055666667 -716415383.862,-107053908.7721,-245177049.5407742,233879913.5846127,290.7421810075,-832.8064205067623,474.4351789199056 -716429246.0675,-102938087.8181,-256515724.51574242,240260704.3149697,302.8117870948,-803.3293434729089,446.4630711677454 -716443108.273,-98665446.57407999,-267454791.7311542,246265563.2947852,313.4047161185,-775.1316408993572,420.1636879828607 -716456970.4785,-94255013.74955,-278011167.2478348,251916372.06191993,322.72233410169997,-748.0975236482732,395.3535323044793 -716470832.6839,-89723279.14228,-288200255.5974573,257232660.52406323,330.9310383152,-722.124381506875,371.8758700886832 -716484694.8894,-85084625.23432,-298036119.9209061,262231942.822235,338.1694649686,-697.1210246130819,349.59592251935237 -716498557.0949,-80351672.56562,-307531629.5250232,266929994.51968428,344.553986733,-673.0061642878848,328.3970676034851 -716512419.3004,-75535557.70663,-316698587.8502047,271341082.5083686,350.1829555977,-649.70710869974,308.17781006506084 -716526281.5059,-70646159.18712,-325547843.68761814,275478157.19611937,355.1400126016,-627.1586441373481,288.8493427013156 -716540143.7114,-65692282.65033,-334089388.04502624,279353014.22730434,359.49669536489995,-605.3020781354302,270.3335696733593 -716547074.8141,-63193661.695939995,-338247677.09432447,281195515.63282835,361.4694610238,-594.616494916593,261.3585641179831 -716554005.9169,-60681813.73674,-342332438.72208464,282976431.4038217,363.3145094423,-584.08442073837,252.56149240497876 -716560937.0196,-58157601.5762,-346344716.48538077,284696968.8510303,365.0382333575,-573.7000075584832,243.93493339914974 -716567868.1224,-55621845.24695,-350285514.3674941,286358285.30575323,366.6465879822,-563.4576813804483,235.47188139044582 -716574799.2251,-53075324.91772,-354155798.6186149,287961490.89518166,368.1451265948,-553.352125473269,227.16571635918416 -716581730.3278,-50518783.56576,-357956499.48446757,289507651.1197133,369.5390326787,-543.378264784001,219.01017679179577 -716585195.8792,-49236977.626760006,-359831037.4062985,290259660.5797994,370.19827445789997,-538.4391966850368,214.987026692808 -716586928.6549,-48595228.55124,-360761901.2047035,290630452.3525126,370.5187224235,-535.9813697958796,212.98879218438697 -716587795.0427,-48274147.09816,-361225737.70506245,290814551.71138954,370.6766840482,-534.7553515153123,211.99297174676954 -716588228.2367,-48113555.212979995,-361457257.83549047,290906278.0900627,370.75510307030004,-534.1430622541574,211.49588100200106 -716588444.8336,-48033246.55162,-361572918.46169734,290952060.5577758,370.794172605,-533.837097106913,211.24753991051813 -716588553.1321,-47993089.05009,-361630723.92635345,290974931.62396175,370.8136724369,-533.6841593434843,211.12342036178018 -716588607.2813,-47973009.507659994,-361659620.44786274,290986362.116774,370.8234136264,-533.6077016570542,211.06137332768003 -716588661.4306,-47952929.437910005,-361688512.82955915,290997789.2499713,370.83314900109997,-533.5312514309867,210.99933478348788 -716588769.7291,-47912767.71781,-361746285.17475116,291020633.4396923,370.8526023138,-533.3783733510335,210.87528315419755 -716588986.326,-47832437.9636,-361861780.2040082,291066281.52447855,370.8914392522,-533.0727066213135,210.62728166011476 -716589419.5199,-47671753.26956,-362092571.7074333,291157416.61839485,370.968834847,-532.4617303996272,210.1316851473111 -716590285.9078,-47350283.70032,-362553361.2155278,291339043.3235077,371.12251662439996,-531.2412030533027,209.1421133765252 -716592018.6835,-46706948.30449,-363471771.97975576,291699729.3359045,371.4254720252,-528.8058180744379,207.16941790914777 -716595484.2348,-45418727.84403,-365295966.0466487,292410883.54973227,372.01398256040005,-523.9574841114445,203.24952733806919 -716602415.3376,-42836365.20394,-368894202.49502426,293792727.52258766,373.12320529,-514.3486565972356,195.5094685079995 -716616277.5431,-37650078.61267,-375892837.5294577,296397697.12772477,375.0840335588,-495.4677366381763,180.4108630055245 -716630139.7486,-32438858.43389,-382632706.3894624,298796719.635604,376.725063949,-477.0095093156484,165.79005727599434 -716644001.9541,-27206957.57675,-389119462.3759833,300996178.9634765,378.07176112860003,-458.94463285841186,151.61306103217612 -716657864.1595,-21958297.10686,-395358368.1062128,303002009.9935288,379.1466128786,-441.24603767080555,137.8490096179785 -716671726.365,-16696504.69567,-401354325.29041135,304819739.2609564,379.9695211798,-423.88868483752094,124.46979531919433 -716685588.5705,-11424948.10561,-407111901.3802651,306454520.90985745,380.55813161500004,-406.8493545549048,111.44975052237885 -716699450.776,-6146764.557945,-412635353.4913266,307911168.6313271,380.9281120641,-390.1064590868434,98.76537374187714 -716713312.9815,-864886.2325451,-417928649.7542782,309194183.82240176,381.0933909575,-373.63987758295417,86.39509183702214 -716727175.187,4417936.819348,-422995488.7408253,310307781.0570991,381.0663592822,-357.43081052896406,74.3190540218944 -716754899.598,14976209.59089,-432463343.8332892,312042278.7581364,380.4782571876,-325.71586158373805,50.97785777884894 -716782624.0089,25508987.874530002,-441063735.18554205,313143442.79005444,379.2382007491,-294.833038549786,28.611097597832554 -716810348.4199,35999042.39823,-448818117.5110171,313636690.245556,377.4048572827,-264.66791698267883,7.106159003600169 -716814694.5036,37638545.76828,-449958231.9316784,313660397.44696414,377.0668143523,-259.9974551237922,3.8066229147552804 -716835757.3386,45561965.82768,-455197692.5507293,313574125.1620413,375.2429315186,-237.5644463257931,-11.929624851257017 -716858560.6192,54093055.23913,-460341309.425236,313112075.2019502,372.9339627325,-213.62060593321095,-28.521740282017134 -716881363.8998,62567673.04599,-464942545.2877178,312276540.6115837,370.292234272,-189.9862357770869,-44.6935204294099 -716904167.1804,70978371.06771,-469007936.27593315,311076655.85071516,367.3294228674,-166.61613010790583,-60.48385124944414 -716926970.461,79317928.94268,-472543017.9179251,309520709.4862548,364.0539081162,-143.4676456381186,-75.92813966417799 -716949773.7416,87579282.80405,-475552378.3350052,307616217.7632007,360.4710699096,-120.50027141236365,-91.0587781694612 -716972577.0222,95755459.44839999,-478039702.49094665,305369988.8258905,356.58351176250005,-97.67524306006663,-105.9055411348169 -716995380.3028,103839514.98809999,-480007807.96693915,302788178.4378048,352.3912243649,-74.95519682027569,-120.49592333988116 -717018183.5833,111824476.6372,-481458673.2502704,299876338.5603497,347.8916936612,-52.30385077607011,-134.8554320539295 -717029585.2236,115777596.4622,-481990535.02721566,298298237.9928612,345.5252577461,-40.99282519477124,-141.95609915012747 -717035286.0438,117743926.42390001,-482208111.843901,297478898.9600457,344.3125264803,-35.339051845976066,-145.4879119884688 -717038136.4539,118724484.7133,-482304814.00052637,297061687.6526385,343.69873154379997,-32.512361158737214,-147.2493399157427 -717039561.6589,119214106.0001,-482350143.6410342,296851200.2506729,343.3899698903,-31.09903502113994,-148.1289529381242 -717040274.2614,119458751.4035,-482372053.1071259,296745486.5686075,343.2351221294,-30.392373033670882,-148.56848653228042 -717040630.5627,119581032.6981,-482382819.001771,296692512.28895336,343.1575814025,-30.039041845439662,-148.7881853888304 -717040808.7133,119642162.9814,-482388154.7394436,296665995.79652995,343.1187818133,-29.86237614462419,-148.8980178680117 -717040897.7886,119672725.5307,-482390810.80581564,296652730.2129805,343.0993747105,-29.774043260780296,-148.95292987441843 -717040986.8639,119703286.351,-482393459.0040178,296639459.73830366,343.07996273500004,-29.68571035159669,-149.0078390607874 -717041165.0146,119764402.8031,-482398731.79542786,296612904.11643684,343.0411241629,-29.509044447650513,-149.117648978865 -717041521.3158,119886614.94129999,-482409182.95874745,296559734.189593,342.9633885221,-29.15571224376269,-149.33723502978864 -717042233.9183,120130956.0562,-482429707.6067849,296453159.6596526,342.8076831381,-28.44904578764112,-149.7762722783671 -717043659.1234,120619304.8613,-482469246.1792601,296239072.34181654,342.49533502860004,-27.035700966167944,-150.65380965669735 -717046509.5335,121594662.5314,-482542280.32225615,295807148.2291758,341.8668818676,-24.208933971482445,-152.40675422767717 -717052210.3536,123539968.0087,-482664175.0838816,294928330.1330281,340.5948852029,-18.554853012415407,-155.90426791416047 -717063611.9939,127408535.9281,-482811248.3005125,293111032.6427845,337.9899982763,-7.242604545721633,-162.86693964474978 -717086415.2745,135054221.8544,-482718189.4765602,289239441.615246,332.53188037539996,15.41341928574824,-176.67178512795599 -717109218.5551,142571575.08499998,-482107755.5392825,285054736.6197771,326.7320909134,38.14045663682845,-190.33233248330515 -717132021.8357,149952638.89549997,-480977928.4356319,280559992.38759,320.5756637299,60.97354520917395,-203.8673451591532 -717154825.1162,157189083.8495,-479325885.5116403,275757866.13972425,314.0448486134,83.94826170543601,-217.2946992574991 -717177628.3968,164272142.1384,-477147984.09615237,270650616.49400973,307.1189095818,107.10099456696749,-230.63149545810856 -717200431.6774,171192536.6827,-474439739.8211317,265240120.03649554,299.7738686088,130.46922836849728,-243.89415515260686 -717223234.958,177940403.6146,-471195798.10594076,259527885.8508299,291.9821896178,154.09185042738176,-257.098503784797 -717246038.2386,184505207.19660002,-467409898.58348894,253515068.22299176,283.7123910291,178.00948156333024,-270.25983953140906 -717265767.4359,190028620.5397,-463691549.92366314,248070932.0165895,276.144115292,198.9736997178315,-281.62364238528903 -717265767.4359,190028620.0923,-463691549.90884584,248070932.24609476,276.1441164588,198.97369931228957,-281.62364254385443 -717270950.2988,191454524.0625,-462645915.22451675,246603584.8639186,274.0889130699,204.52653888019472,-284.6065906692731 -717294361.4311,197759485.4695,-457561948.8457781,239782955.64798716,264.43820094069997,229.8661754353054,-298.07504633425134 -717317772.5635,203831124.759,-451879465.59254986,232647020.986559,254.14724540779997,255.66656793563632,-311.5454384420525 -717341183.6959,209653784.7138,-445587025.698048,225195563.24443075,243.15762859199998,281.98421229840113,-325.03240936095915 -717364594.8282,215210343.222,-438671813.6301129,217428027.50109616,231.4024019162,308.8802764611452,-338.5501240282792 -717388005.9606,220481997.0594,-431119519.1727152,209343533.4130794,218.804634814,336.4214258582807,-352.112202823091 -717411417.0929,225448007.99740002,-422914197.6643609,200940889.23160732,205.27561559909998,364.6808029761367,-365.731603186337 -717423122.6591,227809314.6447,-418561182.1742059,196619807.51010597,198.1304047746,379.10473624734584,-372.5666225189034 -717434828.2253,230085401.7744,-414038105.18788326,192218609.38682213,190.7126209164,393.7391881745695,-379.42043172175 -717446533.7915,232272989.2853,-409342435.66807646,187737067.02430338,183.0067753815,408.5956778530338,-386.2943644645046 -717458239.3576,234368608.4914,-404471503.8951619,183174937.5201729,174.99611535670002,423.68639078609294,-393.1896585854098 -717469944.9238,236368586.5751,-399422493.3211292,178531964.1254722,166.6624926588,439.0242389714986,-400.1074389156656 -717481650.49,238269029.4084,-394192431.68377465,173807877.68317217,157.9862152297,454.6229275197895,-407.04869665704155 -717487503.2731,239180643.0331,-391508532.9353166,171415329.97801816,153.51296412250002,462.5246045864239,-410.52839676407365 -717490429.6646,239626563.998,-390149189.69512975,170211414.40806642,151.24133365510002,466.50185141210864,-412.27055474005476 -717491892.8604,239847022.9278,-389465146.92620367,169607544.21774444,150.096607603,468.4971831305893,-413.14221509772034 -717492624.4583,239956623.1882,-389122029.8827911,169305130.77289146,149.5219965173,469.49653954529,-413.5781911255639 -717492990.2572,240011265.5367,-388950197.0849891,169153804.43187076,149.2341263891,469.99664208922906,-413.79621566248625 -717493173.1567,240038547.20520002,-388864212.07176256,169078111.35281706,149.09004985579998,470.2467996582747,-413.90523706900103 -717493264.6064,240052178.1555,-388821202.4059283,169040257.33568132,149.0179761814,470.37190504382136,-413.95975005769037 -717493310.3313,240058991.1588,-388799693.2825008,169021328.45764035,148.98193048719997,470.4344643900512,-413.9870071234591 -717493356.0562,240065802.5137,-388778181.2984819,169002398.33327705,148.9458788864,470.49702817326624,-414.01426457025286 -717493447.5059,240079420.2774,-388735148.7476406,168964534.3454428,148.87375795909998,470.62216905465567,-414.0687806072343 -717493630.4054,240106636.0131,-388649049.3096532,168888791.41301918,148.7294451615,470.87250410348156,-414.17781725491017 -717493996.2043,240160988.2571,-388476713.0426816,168737245.71712968,148.440535469,471.37338755895246,-414.3959088523946 -717494727.8022,240269375.3494,-388131490.58027565,168433914.97000295,147.8615770866,472.3760096170562,-414.8321653127455 -717496190.998,240484876.05200002,-387438843.0149613,167826295.8040638,146.6990833596,474.38468810352936,-415.7049717363694 -717499117.3895,240910752.1011,-386044713.7556089,166607224.7771453,144.3556185459,478.4158936590277,-417.45176194764656 -717504970.1726,241741747.57979998,-383220927.7346716,164153735.81501827,139.5933950938,486.5346016440511,-420.9500755662649 -717516675.7388,243318608.0499,-377429677.34351194,159185240.36904663,129.75622472350003,503.0046536495482,-427.9657729723764 -717528381.305,244777769.81910002,-371443751.11250466,154134472.8181271,119.4786819421,519.799747477425,-435.0069960499537 -717540086.8711,246113902.67040002,-365259234.6977104,149001135.00177145,108.7303263343,536.9388183573509,-442.07357813462363 -717551792.4373,247321302.9175,-358871984.1996559,143784932.8924794,97.47772972825,554.4421741234723,-449.16496829618393 -717563498.0035,248393856.24960002,-352277609.3014947,138485581.53241068,85.68409391249,572.331633615913,-456.28015384362266 -717575203.5697,249324995.7599,-345471454.6936406,133102810.97014554,73.30880733408,590.6306814514613,-463.41756611961034 -717586909.1359,250107654.29790002,-338448579.56781864,127636373.43871626,60.30692923569,609.3646406294229,-470.57496551924305 -717598614.702,250734210.55310002,-331203735.04218775,122086051.95222281,46.62858539584,628.5608654477354,-477.74930008795 -717610320.2682,251196427.0531,-323731339.082508,116451670.85454102,32.21825931133,648.2489580813665,-484.93653225221556 -717622025.8344,251485379.4762,-316025448.8259309,110733108.52957034,17.01395557635,668.461010879965,-492.1314245452713 -717633731.4006,251591375.11659998,-308079729.8724171,104930312.96885754,0.9462085629264,689.2318768568026,-499.32727381027445 -717645436.9667,251503858.7629,-299887422.2249083,99043320.78022501,-16.063099386490002,710.5994721516098,-506.5155795953601 -717657142.5329,251211303.37840003,-291441302.50360584,93072280.57415631,-34.10215338538,732.6051133566029,-513.685628667231 -717668848.0991,250701082.5938,-282733641.9934277,87017481.81078258,-53.27091088906,755.293891521673,-520.8239712076605 -717680553.6653,249959321.1985,-273756160.0727493,80879390.56578545,-73.68316822197,778.7150839325755,-527.9137559436657 -717703964.7976,247718341.3231,-254955534.93278462,68356356.78779247,-118.7782638959,827.975481589148,-541.8578986576148 -717727375.93,244344806.6441,-234960044.4505141,55512444.20798042,-170.6860844165,880.88205972824,-555.2761600239587 -717735960.7988,242789900.513,-227310518.11341518,50725121.36087111,-191.75684653300002,901.310551774149,-559.9949729977244 -717739341.7876,242127030.2482,-224249346.6680523,48828700.90244044,-200.3925974561,909.5192426076155,-561.8149444051692 -717749531.8747,239947684.0142,-214852988.02527153,43076389.29202845,-227.6677417214,934.845747195943,-567.1452629146971 -717759721.9618,237480181.93809998,-205193878.1482256,37271123.668552294,-256.9872541703,961.0995777510595,-572.1978037401356 -717769912.0489,234702449.332,-195262244.13594174,31416077.04786223,-288.6015193243,988.3448230256677,-576.9027667714947 -717780102.136,231589645.6182,-185047641.6023617,25515220.05210051,-322.8045023098,1016.6491085093218,-581.1726596676549 -717790292.2232,228113671.57169998,-174538922.55811292,19573526.581657067,-359.94364445909997,1046.0826723264056,-584.897044887817 -717800482.3103,224242562.65820003,-163724216.91000682,13597242.078041881,-400.4325274714,1076.7166338216218,-587.9354267565787 -717810672.3974,219939735.48770002,-152590937.53537196,7594236.771183431,-444.7672239508,1108.6199613018557,-590.1075005651475 -717815767.441,217613504.64,-146900713.18785435,4585730.316248462,-468.5594411112,1125.0673982913072,-590.7982114652299 -717820862.4845,215163043.3891,-141125826.0735,1574476.554758519,-493.54757989449996,1141.8543295462282,-591.1796071070305 -717825957.5281,212582018.6461,-135264532.6249574,-1437847.3414335325,-519.8274130156,1158.9859267739416,-591.2110214985852 -717831052.5717,209863583.2838,-129315067.29617181,-4449341.787669778,-547.5051622097001,1176.4655528659366,-590.8456490592349 -717836147.6152,207000319.4156,-123275653.30992958,-7457850.7948722765,-576.6989104976999,1194.2941390513326,-590.0294444683402 -717841242.6588,203984173.8549,-117144516.98355371,-10460921.794169389,-607.5402337572,1212.4693818625612,-588.6997919396238 -717846337.7023,200806384.7473,-110919906.7733998,-13455757.993864894,-640.1760882924999,1230.9847061389305,-586.7838883959973 -717851432.7459,197457397.727,-104600118.29281004,-16439161.607010476,-674.7709942865,1249.8279220133388,-584.1967704361548 -717856527.7895,193926770.1568,-98183527.14760365,-19407465.961364605,-711.5095609655,1268.9794806744637,-580.8388956455949 -717861622.833,190203061.5429,-91668632.0111774,-22356453.87265042,-750.5994042213,1288.4102018688172,-576.5931637345826 -717866717.8766,186273707.9043,-85054110.8657429,-25281259.156741884,-792.2745032697,1308.0782996112757,-571.3212315991022 -717871812.9201,182124877.9514,-78338894.81397219,-28176247.131760836,-836.7990502717,1327.925476162418,-564.8589326090922 -717876907.9637,177741308.1878,-71522264.64440869,-31034869.060269788,-884.4718174046,1347.871764911206,-557.0105599683035 -717882003.0073,173106114.37269998,-64603977.86681818,-33849483.81702207,-935.6310559670001,1367.8086922268517,-547.5416993644345 -717887098.0508,168200577.2065,-57584436.11694187,-36611138.699809425,-990.6598680576,1387.5901658099942,-536.1702139387231 -717892759.2103,162407537.4344,-49667767.29324016,-39604654.220990494,-1056.870667669,1409.1468524262848,-520.8863392696626 -717895589.7901,159366376.167,-45664143.22619631,-41066736.91376181,-1092.1766525409998,1419.6523547276524,-512.0301331458105 -717898420.3699,156223051.7606,-41631130.14208175,-42502471.405768394,-1129.07201512,1429.9017973104892,-502.2546196441982 -717901250.9496,152972926.2863,-37569546.36000981,-43909124.10541665,-1167.6560373089999,1439.8272743521984,-491.46516136993125 -717904081.5294,149611072.0851,-33480418.82355137,-45283677.75329161,-1208.0341653599999,1449.3489536249792,-479.55572168260466 -717906912.1091,146132254.3144,-29365019.804978415,-46622797.04326637,-1250.3179663649998,1458.3729448679267,-466.40735764138145 -717909742.6889,142530913.93089998,-25224910.15521593,-47922789.75560041,-1294.624890608,1466.7887738435143,-451.8865203516466 -717912573.2686,138801151.70369998,-21061990.38292229,-49179562.75827261,-1341.077754615,1474.4663890513668,-435.8431498312616 -717915403.8484,134936714.1005,-16878560.91688529,-50388572.2965236,-1389.803838943,1481.252622082075,-418.1085568610365 -717918234.4281,130930982.7179,-12677393.309099715,-51544768.08484052,-1440.933457307,1486.9670092298334,-398.4930920548596 -717921065.0079,126776968.3203,-8461814.270216772,-52642530.3399865,-1494.597800833,1491.3968806074297,-376.78362585411185 -717923895.5877,122467312.7075,-4235804.702243177,-53675599.69480821,-1550.925811498,1494.291615400668,-352.74088073502094 -717926726.1674,117994300.92300001,-4116.421824499965,-54636999.226908155,-1610.039755159,1495.355979432973,-326.0967082395312 -717929556.7472,113349888.301,4227591.095779683,-55518949.01599093,-1672.0490641929998,1494.2424780561944,-296.551461988595 -717932387.3269,108525748.3338,8452590.645433802,-56312773.631358266,-1737.041934033,1490.5427221769164,-263.771703992212 -717935217.9067,103513347.75580001,12662901.809633058,-57008804.01913859,-1805.073978087,1483.7779003473515,-227.38863298210464 -717938048.4864,98304059.33335,16849077.112230863,-57596276.53272006,-1876.153173226,1473.3886197846525,-186.99777876828347 -717940879.0662,92889323.34828,20999959.67480267,-58063234.09884037,-1950.220148314,1458.7246613277766,-142.16079199381198 -717943709.646,87260872.45605,25102412.101923786,-58396436.12513976,-2027.122837498,1439.0355922368558,-92.410458729141 -717946540.2257,81411037.91031,29141022.573068663,-58581289.76419805,-2106.584597206,1413.46381317546,-37.26048671217745 -717949370.8055,75333155.33358,33097796.66182335,-58601817.06089547,-2188.165161906,1381.0424303828609,23.777934144856204 -717952201.3852,69022091.76201,36951854.379381,-58440682.01628505,-2271.214637027,1340.7014657662362,91.1703720208559 -717955346.4738,61732839.558690004,41084327.00766233,-58025950.26394273,-2364.096408662,1285.1846020706244,173.99189663768072 -717956919.0182,57978831.37388,43080238.48649889,-57717506.671360284,-2410.2800422009996,1252.711466171707,218.66119495371578 -717958491.5625,54152562.97358,45022424.335689075,-57337082.16025771,-2455.9516642850003,1216.8213363305451,265.5413359394844 -717960064.1068,50255071.180630006,46905354.447291374,-56881195.09455635,-2500.810410411,1177.3165282603816,314.6345927447723 -717961636.6511,46287895.52105,48723197.25317999,-56346380.70532611,-2544.517718664,1134.0123813768987,365.9164456889297 -717963209.1954,42253137.53679,50469845.52368127,-55729237.04897804,-2586.697512462,1086.744197347635,419.3306955040053 -717964781.7397,38153518.674669996,52138953.853186265,-55026478.67957252,-2626.93786353,1035.3751765063025,474.78454725836065 -717966354.284,33992434.19945,53723989.36090647,-54234997.9479901,-2664.794481988,979.8051991727461,532.1439352375085 -717967926.8283,29773999.94519,55218296.67152239,-53351933.21518981,-2699.796356001,919.9801821610831,591.2294313956249 -717969499.3726,25503088.342759997,56615177.808143996,-52374742.782739416,-2731.453789372,855.9016008695378,651.8131459033909 -717971071.9169,21185349.831570003,57907986.838322304,-51301282.62366292,-2759.2689588939998,787.6356257672651,713.6170711401331 -717972644.4612,16827215.7136,59090238.14397384,-50129885.27860966,-2782.748927267,715.3211920906112,776.3133274652545 -717974217.0055,12435878.79862,60155726.03840359,-48859436.59511456,-2801.420808078,639.1762298659446,839.5267239370922 -717975789.5499,8019248.866328999,61098652.20652316,-47489446.40699841,-2814.848503792,559.5012530815832,902.8399398052388 -717976575.822,5804099.829349,61522486.20876869,-46767155.83310515,-2819.473858357,518.4566326058177,934.39394385189 -717977362.0942,3585881.123728,61913756.22571942,-46020108.91247348,-2822.6501567339997,476.6795710144959,965.8014564450217 -717978148.3663,1365746.775658,62271909.73843965,-45248444.37523806,-2824.340944645,434.23030642786125,997.0024313856534 -717978934.6385,-855122.6370399001,62596443.37069793,-44452348.460905805,-2824.5152104979998,391.17355306895683,1027.9361364596182 -717979720.9106,-3075524.438521,62886906.279663704,-43632055.28491551,-2823.147807717,347.5781520001719,1058.5415993102379 -717980507.1828,-5294238.596364,63142903.23374362,-42787846.84755142,-2820.219821401,303.51665780837385,1088.758073408413 -717981293.4549,-7510032.762124999,63364097.35952909,-41920052.66731188,-2815.7188698120003,259.064867839225,1118.5255149987606 -717982079.7271,-9721667.497727,63550212.48590306,-41029049.0396252,-2809.63933365,214.3012983111337,1147.7850646602194 -717982865.9992,-11927901.658,63701035.06120809,-40115257.91718954,-2801.982506657,169.3066160492474,1176.4795242178666 -717983652.2714,-14127497.85898,63816415.60844309,-39179145.4197347,-2792.756663124,124.16303469604031,1204.5538206231263 -717984045.4075,-15224422.421540001,63860786.179330826,-38702875.94736929,-2787.5598519309997,101.56136707918711,1218.3418878602047 -717984241.9755,-15772099.54649,63879638.934881,-38462716.97154046,-2784.8165198869997,90.25762589493519,1225.170867151313 -717984340.2595,-16045733.52438,63888232.0649158,-38342135.18403181,-2783.408774889,84.60559910249486,1228.5687550537423 -717984389.4015,-16182498.33385,63892320.31672665,-38281719.19316177,-2782.6959030810003,81.77961796166369,1230.2635069437563 -717984413.9726,-16250867.564779999,63894312.36499239,-38251479.98364981,-2782.337219988,80.36664436509426,1231.1098297115689 -717984426.2581,-16285048.8707,63895295.36985707,-38236352.58293201,-2782.1573169790004,79.66016292415634,1231.5327271590997 -717984432.4008,-16302138.69426,63895783.617484055,-38228786.93452658,-2782.067225151,79.30692368167729,1231.744109817538 -717984435.4722,-16310683.39844,63896026.92760413,-38225003.62343228,-2782.022144162,79.13030444758124,1231.8497846210034 -717984437.0079,-16314955.69859,63896148.379241586,-38223111.8461762,-2781.9995948990004,79.0419949299606,1231.9026178906975 -717984438.5436,-16319227.96412,63896269.69526144,-38221219.98778662,-2781.977039791,78.95368547865519,1231.955448403506 -717984441.6149,-16327772.39123,63896511.920452,-38217436.027623855,-2781.93191204,78.77706677859948,1232.0611011612614 -717984447.7577,-16344860.829470001,63896994.74344865,-38209867.13388676,-2781.841586403,78.42383020751589,1232.272373593901 -717984460.0432,-16379036.039959999,63897953.8799308,-38194725.453709915,-2781.660654635,77.71736051935278,1232.6947860450227 -717984484.6142,-16447379.780939998,63899846.11504598,-38164426.53013995,-2781.2976694609997,76.30443607160527,1233.5390806502205 -717984533.7562,-16584040.41436,63903526.43572406,-38103766.4910157,-2780.567215329,73.47865579273594,1235.2255435701402 -717984632.0402,-16857253.259490002,63910470.49707295,-37982198.1338595,-2779.088394345,67.82744091302055,1238.5899236245878 -717984828.6083,-17403237.05996,63922692.49798588,-37738072.24602455,-2776.0592862159997,56.526963123757525,1245.2841782718197 -717985221.7443,-18493371.7599,63940474.43645862,-37245895.78264812,-2769.716767425,33.9383615413289,1258.5321320222029 -717986008.0165,-20665791.74868,63949422.8135707,-36246107.44869994,-2755.908345246,-11.153234895131675,1284.4462908393907 -717986794.2886,-22826774.9688,63922983.29221561,-35226259.583752744,-2740.632017538,-56.062459251036444,1309.5497669268798 -717987580.5608,-24975183.059120003,63861330.99938754,-34187005.01736617,-2723.92898057,-100.70891455635632,1333.8040383486502 -717988366.833,-27109912.29661,63764703.441613294,-33129025.22938662,-2705.84607414,-145.0144221753797,1357.1747866585847 -717989153.1051,-29229897.85241,63633398.54160871,-32053026.971802566,-2686.4353093900004,-188.90357213306658,1379.6320724901311 -717989939.3773,-31334117.656549998,63467772.26014799,-30959738.77472832,-2665.753347079,-232.30422579666617,1401.1504540562228 -717991511.9216,-35491405.67973,63035252.743868604,-28724294.16982917,-2620.8223292069997,-317.3704758786836,1441.2915380706709 -717993084.4659,-39574574.156169996,62471040.90867049,-26428819.461682905,-2571.5773913179996,-399.71699241598157,1477.4854154929094 -717994657.0102,-43577276.79207,61779755.407373436,-24079564.005063754,-2518.579503097,-478.92212053869656,1509.6898120769574 -717996229.5545,-47494065.71676,60966615.736326985,-21682791.50977705,-2462.4072225570003,-554.643870554778,1537.9276796773333 -717997802.0988,-51320405.04981,60037315.53213538,-19244682.9748548,-2403.6390939030002,-626.6210892707442,1562.2798822662126 -717999374.6431,-55052658.46266,58997896.84000648,-16771252.364514925,-2342.838309711,-694.6711541653658,1582.8764394610819 -718000947.1874,-58688054.774720006,57854630.31747462,-14268276.710982958,-2280.5401688720003,-758.6848716070001,1599.8870617957227 -718002519.7317,-62224636.244950004,56613905.070978254,-11741241.13442646,-2217.2425539240003,-818.6193433386159,1613.5116288587012 -718004092.276,-65661194.022530004,55282131.195889466,-9195298.912452586,-2153.3993602339997,-874.4895663540638,1623.9711272052607 -718005664.8204,-68997195.83122,53865655.48395796,-6635244.58117412,-2089.416676177,-926.3594344780904,1631.499433849553 -718007237.3647,-72232709.37441,52370691.730921656,-4065499.4791211355,-2025.6512953420001,-974.3327234651154,1636.3361681038687 -718008809.909,-75368324.79428,50803264.85230053,-1490107.6226162352,-1962.411142501,-1018.5444874157731,1638.7207245715276 -718010382.4533,-78405079.19351,49169168.01698328,1087260.047184024,-1899.957165477,-1059.1531616646917,1638.8874912866086 -718011954.9976,-81344384.95768,47473931.52040106,3663294.766408654,-1838.506273209,-1096.3335544599572,1637.062189240884 -718013527.5419,-84187963.29095,45722801.91395481,6235034.116910405,-1778.234947504,-1130.2708108474153,1633.459220517797 -718015100.0862,-86937783.72701,43920729.85014745,8799842.717781145,-1719.283225002,-1161.1553544747221,1628.2798885606885 -718018245.1748,-92164952.64599,40182057.6120174,13899631.112191852,-1605.741096449,-1214.5304977781166,1613.9261242617927 -718021390.2634,-97044718.51302,36291549.38472482,18947277.161111012,-1498.4249756079998,-1257.9517573175078,1595.3229648027366 -718024535.3521,-101597066.0829,32278287.93712733,23931195.864634626,-1397.5443443899999,-1292.8123365633674,1573.5656931156354 -718027680.4407,-105842244.1577,28167182.11458981,28842915.222420245,-1303.072542724,-1320.369450249476,1549.5427825209963 -718030825.5293,-109800151.9269,23979419.569441747,33676467.62560485,-1214.825141928,-1341.731646532072,1523.9631140529318 -718033970.6179,-113489939.86739999,19732933.876694523,38427870.32108789,-1132.5188802549999,-1357.8607491041187,1497.384665497038 -718037115.7065,-116929769.9014,15442851.839776685,43094693.83336629,-1055.81433247,-1369.5819571599975,1470.2415113390416 -718040260.7952,-120136688.6663,11121901.685676064,47675710.79977826,-984.3458133516,-1377.5977859326595,1442.8676614571243 -718043405.8838,-123126578.9761,6780775.371179733,52170613.89988054,-917.7416308106,-1382.5032002631042,1415.5172847779604 -718046550.9724,-125914163.2331,2428443.215939477,56579792.004489765,-855.6373091666,-1384.800393706546,1388.381422914264 -718049696.061,-128513040.2202,-1927575.9958788268,60904153.69120678,-797.6837886143,-1384.9124159717076,1361.6015517480548 -718052841.1496,-130935741.5674,-6280985.708729591,65144989.101470016,-743.552132593,-1383.1953003799094,1335.2804508535655 -718055986.2382,-133193799.4669,-10626517.702445209,69303862.38053113,-692.9358535466,-1379.9486087606965,1309.4908359319315 -718059131.3269,-135297818.4809,-14959769.186778288,73382528.21580197,-645.5516535547,-1375.4244651730785,1284.2821743229997 -718062276.4155,-137257548.421,-19277065.901119705,77382867.50281689,-601.1391443186001,-1369.835209416742,1259.6860388764894 -718065421.5041,-139081955.0207,-23575347.43975876,81306837.91379571,-559.4599393657,-1363.3598410495692,1235.7203044664777 -718068566.5927,-140779287.23290002,-27852071.146333892,85156436.20709915,-520.2963788361999,-1356.1494162904085,1212.3924240867514 -718071711.6813,-142357140.1616,-32105131.504261628,88933669.61677112,-483.450075889,-1348.3315593628972,1189.7019878366668 -718074856.77,-143822513.28149998,-36332792.57107748,92640534.40573439,-448.74039375480004,-1340.0142242066843,1167.6427126868975 -718078001.8586,-145181863.861,-40533631.16763527,96278999.90218458,-416.00293648120004,-1331.2888318497835,1146.2039912637106 -718081146.9472,-146441155.7766,-44706489.14512822,99850996.90588395,-385.08809618419997,-1322.2328861995265,1125.372093106881 -718084292.0358,-147605903.8022,-48850433.12470505,103358409.35230467,-355.8596853889,-1312.9121568317805,1105.1310951058065 -718090582.213,-149671819.237,-57048771.068228476,110186749.84155928,-301.9769914657,-1293.6913963147517,1066.3512892384433 -718096243.3726,-151255279.1832,-64322527.370109916,116129152.620417,-258.11587103830004,-1275.9655165185284,1033.2880136216081 -718101904.5321,-152601523.3093,-71495272.20152119,121889037.06847149,-218.09078141179998,-1258.0327040731236,1001.8520639461026 -718107565.6916,-153730953.2666,-78566253.11126232,127475307.43051468,-181.4491800401,-1240.0341131566183,971.9351136014883 -718113226.8511,-154661599.7466,-85535410.04003781,132896266.65238146,-147.8039941673,-1222.0749018551533,943.4333556290223 -718118888.0106,-155409461.494,-92403197.74245164,138159646.09354866,-116.82283756010001,-1204.2330382169957,916.2488174496789 -718124549.1701,-155988789.1202,-99170451.30098748,143272640.54687068,-88.21913403996,-1186.5658650244427,890.2899530327056 -718130210.3296,-156412322.8849,-105838283.97977039,148241945.10902447,-61.74481672958,-1169.1150249360062,865.4717902720056 -718135871.4891,-156691493.3491,-112408009.35149792,153073792.24583405,-37.18430767579,-1151.910176327583,841.715805137019 -718141532.6487,-156836590.5884,-118881081.79712734,157773987.4621725,-14.34954336386,-1134.9718126206756,818.9496380868738 -718147193.8082,-156856908.0324,-125259050.95058146,162347943.2130492,6.924149088136001,-1118.313411541058,797.1067245456434 -718152854.9677,-156760864.8398,-131543526.88384314,166800710.5726502,26.78148101848,-1101.9430820747514,776.1258873529656 -718158516.1272,-156556110.5747,-137736153.44140196,171137008.5482452,45.350064515330004,-1085.8648307117235,755.9509190203289 -718164177.2867,-156249615.0146,-143838587.89523,175361251.04073185,62.74280976042,-1070.0795391592605,736.5301726451765 -718175499.6057,-155356333.8989,-155779487.81098637,183489845.7720692,94.39069562869,-1039.3801101380968,699.7652426082572 -718186821.9248,-154125874.1864,-167379254.11821032,191216590.21855772,122.4035304792,-1009.8141807034374,665.4949265059663 -718198144.2438,-152596204.0923,-178650466.83827186,198568069.63409263,147.325124955,-981.3350181752423,633.4337334650487 -718208638.0311,-150939634.1771,-188813980.65102327,205067117.35651803,168.04795831229998,-955.862670879819,605.478573926305 -718208638.0311,-150939619.0177,-188813981.5520415,205067110.97130683,168.0480437023,-955.8626560356743,605.4785237593546 -718212396.6114,-150294919.4636,-192389876.91901758,207324690.67357618,174.9735157138,-946.9460511145892,595.8437726854723 -718226134.8894,-147727415.3476,-205179917.21862155,215276602.80381286,198.302972832,-915.2375211963702,562.1771745299621 -718239873.1673,-144858837.34289998,-217543449.1548822,222781501.6086676,218.87762557759999,-884.8387478151101,530.7216982277283 -718253611.4453,-141724179.0517,-229497786.62545642,229867951.97117525,237.0986132064,-855.6516905515084,501.22076367943 -718267349.7233,-138353459.04799998,-241058938.2825948,236561272.02326322,253.29228566829997,-827.5845560859974,473.45693154171045 -718281088.0013,-134772628.0995,-252241698.8008391,242884019.2255912,267.72683023080003,-800.5524502907762,447.24469280411347 -718294826.2793,-131004279.3598,-263059744.32739684,248856388.49786475,280.6246662867,-774.4774142264247,422.4247688507305 -718308564.5572,-127068209.4164,-273525726.16280854,254496540.12280127,292.17180943600005,-749.2881393043976,398.85957962339234 -718322302.8352,-122981867.8108,-283651359.1143399,259820872.27331668,302.5250238171,-724.9195237961031,376.4296161256752 -718336041.1132,-118760718.6815,-293447503.35864615,264844248.2196327,311.81735574699997,-701.3121653482605,355.0305136414043 -718349779.3912,-114418535.95580001,-302924239.17673326,269580187.6165588,320.1624542781,-678.411844021155,334.5706781233075 -718363517.6692,-109967645.52510001,-312090934.68900955,274041028.17970043,327.6579780938,-656.169024239445,314.9693469988523 -718377255.9471,-105419125.5962,-320956306.9612879,278238063.1814903,334.3883071812,-634.5383879976071,296.1549936413285 -718390994.2251,-100782973.63170001,-329528476.971263,282181658.9958419,340.426719697,-613.4784074082352,278.0640078281169 -718397863.3641,-98434899.24923,-333706998.1945603,284061428.39648676,343.2067611202,-603.1503759211305,269.2717902420474 -718404732.5031,-96068246.36173,-337815018.9731154,285881356.08624864,345.837151819,-592.9509579724345,260.63959802037226 -718411601.6421,-93684019.44849999,-341853407.93297654,287642519.8724271,348.32465915619997,-582.8758625640805,252.16124690030375 -718418470.7811,-91283177.9614,-345823004.8177104,289345956.1911337,350.6756313482,-572.9209698336119,243.83087206390294 -718425339.9201,-88866639.09367001,-349724621.63293636,290992662.2283069,352.8960290681,-563.0823221355785,235.64290696556125 -718432209.0591,-86435280.34162,-353559043.73171955,292583597.90085864,354.9914541875,-553.3561156172368,227.59206383420712 -718435643.6286,-85214307.45966001,-355451295.1515686,293358442.0917648,355.993960988,-548.5340291789474,223.61648235024543 -718437360.9133,-84602542.48541,-356391221.7326614,293740757.7794959,356.4841913615,-546.1330444520216,221.64088440388574 -718438219.5557,-84296345.8593,-356859640.26041234,293930645.1030016,356.7265846212,-544.9350426843464,220.65610099645536 -718438648.8769,-84143169.69153999,-357093463.9560537,294025271.8881812,356.8471049388,-544.336661473066,220.1644591521222 -718438863.5375,-84066562.22857,-357210279.4894271,294072506.1554424,356.9071965372,-544.037625415077,219.91882519365956 -718438970.8678,-84028253.66286,-357268663.1870989,294096103.51944965,356.9372002608,-543.8881459768846,219.79605489292925 -718439024.5329,-84009098.1727,-357297849.0198538,294107897.2604278,356.9521916117,-543.8134158999922,219.73468140453613 -718439078.1981,-83989941.87821999,-357327030.84235364,294119687.7079906,356.96717595850004,-543.7386922487311,219.6733156876853 -718439185.5284,-83951626.87789999,-357385382.45830107,294143258.7247024,356.9971236486,-543.5892642165426,219.5506075596075 -718439400.1889,-83874987.24191,-357502037.5824748,294190361.255563,357.05693507949997,-543.2904851885326,219.30528446449952 -718439829.5101,-83721669.51243,-357735155.47763336,294284408.4003384,357.1762226567,-542.6932349106936,218.81501042167358 -718440688.1525,-83414880.89408,-358200622.47089875,294471871.7662333,357.4134607603,-541.4999625284125,217.83594695906262 -718442405.4373,-82800696.35741,-359128486.1770576,294844280.7331171,357.88262123249996,-539.1183070506697,215.8837269770186 -718445840.0068,-81569940.37284,-360971971.4215332,295579074.64059895,358.79993541529996,-534.3743676464746,212.00266526228023 -718452709.1457,-79099212.57933,-364610280.1690115,297008936.29106426,360.5525305211,-524.9625160578713,204.33210327515494 -718466447.4237,-74123449.12242,-371694632.62416035,299712616.78985125,363.7446953007,-506.43164693608725,189.3422934170338 -718480185.7017,-69106550.01124,-378526971.8417658,302213432.90707904,366.5460957587,-488.2707927265749,174.7942323821439 -718493923.9797,-64053681.25535,-385112221.0792952,304517247.5489737,368.9856585789,-470.45691518949695,160.65838489163073 -718507662.2577,-58969632.80544,-391454997.8567784,306629535.6118336,371.089273962,-452.968516765241,146.9077476628983 -718521400.5356,-53858857.619330004,-397559634.0763506,308555416.7725173,372.8801678395,-435.78549156905876,133.5175676194492 -718535138.8136,-48725506.02003,-403430194.21232116,310299684.676637,374.379218624,-418.88899259903377,120.46509739702833 -718548877.0916,-43573456.10646,-409070491.7829278,311866833.0344396,375.6052277609,-402.26131210969356,107.72938186127679 -718562615.3696,-38406340.44636,-414484104.1939661,313261078.80048543,376.5751530655,-385.88577418641677,95.29107114739395 -718590091.9255,-28040356.44269,-424644482.70981157,315546470.6140856,377.8065377239,-353.82901535276693,71.23633061086684 -718617568.4815,-17652555.32314,-433935710.5189297,317184806.6404488,378.1791138269,-322.6025200788626,48.172436158864514 -718645045.0375,-7265305.175408,-442379135.2256231,318201746.0865594,377.7794434745,-292.1013395776639,25.9879763263976 -718665117.5303,310860.2398525,-448022222.5122534,318565081.10216,377.0405983397,-270.222384686959,10.280900237355155 -718684526.1431,7619035.67387,-453063918.4926341,318620217.6451381,375.9922028257,-249.35383453873828,-4.542031884091273 -718705075.3602,15331084.98128,-457963288.13663226,318368715.43987155,374.5444443143,-227.5328609171442,-19.876984503602884 -718725624.5774,23009968.67438,-462416867.84585047,317805627.5556352,372.7670534681,-205.96085704370444,-34.8727396966498 -718746173.7945,30649074.28601,-466429443.1292808,316937629.33986664,370.6752629123,-184.6058766383107,-49.557621490865436 -718766723.0116,38242074.94797,-470005156.65456724,315770836.42207956,368.28166983709997,-163.4372666004366,-63.957822339493724 -718787272.2288,45782877.40574,-473147532.6726842,314310845.94209146,365.59645946449996,-142.42545290653095,-78.09766123262249 -718807821.4459,53265574.55555,-475859497.09139216,312562772.5642941,362.627585007,-121.54174615194715,-91.99980766885157 -718828370.663,60684401.04589,-478143393.7976147,310531280.3588988,359.3809111384,-100.75815820785505,-105.68547878813196 -718848919.8802,68033691.55612,-480000997.2632216,308220610.8167774,355.8603248982,-80.04723144659704,-119.17461206161641 -718869469.0973,75307841.05545999,-481433521.7621126,305634607.54408234,352.0678167565,-59.38187295213942,-132.48601916544143 -718879743.7059,78914993.37405999,-481990607.18446714,304239453.48606527,350.06970955080004,-49.05787562439378,-139.0806801242266 -718884881.0101,80710783.53217,-482229374.7952868,303516516.7941396,349.0451448802,-43.89658020564069,-142.36369666864854 -718887449.6623,81606693.8597,-482338815.44674206,303148729.7064454,348.5264730156,-41.315924936401814,-144.0017421075819 -718888733.9884,82054148.04663,-482391049.95205295,302963259.05508864,348.2655378693,-40.02557248006123,-144.81991341569443 -718889376.1514,82277749.29665999,-482416545.73843783,302870129.7703085,348.13467024119996,-39.3803871790016,-145.22878799440036 -718889697.2329,82389518.38587001,-482429138.2632827,302823466.6776312,348.0691363805,-39.05779190169788,-145.43317273639556 -718889857.7737,82445395.03716,-482435395.6833228,302800110.52361315,348.0363444344,-38.89649356153542,-145.5353519982413 -718889938.044,82473331.38836001,-482438514.6827224,302788426.2952757,348.0199422069,-38.815844210909034,-145.58643835509764 -718890018.3144,82501266.42277999,-482441627.20846444,302776737.9663493,348.0035358095,-38.73519473748087,-145.6375225306998 -718890178.8552,82557132.53983,-482447832.83842194,302753349.00725275,347.97071050439996,-38.57389541504776,-145.73968434266772 -718890499.9367,82668848.95783001,-482460166.41284645,302706521.8892012,347.9050098492,-38.25129522629291,-145.94398183509816 -718891142.0997,82892218.45446,-482484522.817237,302612670.8926055,347.7734083235,-37.606088314587524,-146.35247251472043 -718892426.4258,83338703.49013,-482531992.6265526,302424182.169031,347.5094041275,-36.31564548514197,-147.1690384172568 -718894995.0779,84230652.92743,-482621960.0541519,302044060.2783733,346.9781887958,-33.73462084030315,-148.80052246826494 -718900132.3822,86010430.78669001,-482782004.13938403,301271258.26735693,345.90291004,-28.57183180128282,-152.05701155292985 -718910406.9908,89553193.76279001,-483022506.14509946,299675573.4265708,343.7007742981,-18.241822064385275,-158.54496046188476 -718930956.2079,96569062.62157,-483184866.98836434,296285029.77905846,339.08833013360004,2.4477535582028693,-171.42769678877536 -718951505.4251,103487260.92889999,-482921481.8354758,292630925.9019008,334.1937261404,23.199459522715316,-184.19910966834436 -718972054.6422,110301920.235,-482230790.5813475,288715394.5536811,329.0098033481,44.04096375483874,-196.87418313393113 -718992603.8593,117007005.133,-481110658.55094826,284540265.67023236,323.52745781699997,65.00055108056185,-209.46742040346257 -719013153.0765,123596272.3062,-479558361.8780303,280107075.41739327,317.7355401402,86.10731163522743,-221.99292207241592 -719033702.2936,130063227.2332,-477570568.94880956,275417073.72365254,311.62072458029996,107.39134159378241,-234.46445799428665 -719054251.5107,136401077.7243,-475143317.45603323,270471230.3823082,305.1673416754,128.8839634423404,-246.89553473501724 -719095349.945,148660503.4253,-468951265.5494578,259814524.4525292,291.1691956081,172.62787935298573,-271.68939247600883 -719111697.1024,153371574.32909998,-465984651.5431698,255292627.77647406,285.165304213,190.35833998760342,-281.54445214362005 -719111837.2787,153411542.42459998,-465957956.1620543,255253156.12513927,285.112684065,190.5112881627002,-281.62897620864123 -719141621.4848,161732331.48270002,-459796006.63457,246597460.21627632,273.46966041319996,223.39224342175075,-299.60490723676094 -719171405.691,169691897.5773,-452642405.169971,237405573.72328314,260.8389903686,257.1227767689661,-317.64064340147274 -719201189.8972,177259136.7016,-444469770.97598827,227675120.8339222,247.1035959666,291.84506695066625,-335.77616494551205 -719216082.0002,180884883.14699998,-439991546.0509434,222606862.73280418,239.77833283319998,309.6274450858904,-344.89394680482775 -719230974.1033,184399097.4412,-435246225.79254895,217402529.23985142,232.12130537090002,327.7196062204338,-354.0518548714248 -719245866.2064,187796672.9108,-430229022.8930983,212061484.69387808,224.1098209699,346.14520207461754,-363.2550075123082 -719260758.3095,191072146.93240002,-424934784.82561755,206583017.0703275,215.7187473162,364.9296487078946,-372.50854436905087 -719275650.4126,194219662.58470002,-419357966.1785539,200966337.70296207,206.9201958242,384.100337184121,-381.81761519263705 -719290542.5156,197232924.8294,-413492597.43803436,195210581.262153,197.6831517156,403.686874388097,-391.18736288527646 -719305434.6187,200105150.83560002,-407332250.00214815,189314806.02913636,187.97304068510002,423.7213585823275,-400.62289874546883 -719320326.7218,202829013.3062,-400869996.79908746,183277994.60934734,177.7512183922,444.23869457164756,-410.1292671131895 -719327772.7733,204132853.75730002,-397523343.70154506,180206362.01408407,172.4350796969,454.69019556790215,-414.9105598823674 -719331495.7991,204769797.0917,-395820709.3628082,178657177.04172117,169.7231773252,459.96634197608813,-417.30849822170467 -719333357.312,205084465.515,-394962010.03749007,177879234.41270357,168.3534343203,462.61729942708894,-418.50932285269346 -719334288.0684,205240841.3911,-394530807.80984473,177489424.55191305,167.6650719914,463.94603564698747,-419.1102030460951 -719334753.4467,205318788.7952,-394314742.6684357,177294309.8576725,167.3200126857,464.61122273442516,-419.4107606109354 -719334986.1358,205357702.24449998,-394206593.9795366,177196700.05362967,167.1472628134,464.9440216011992,-419.56106882253755 -719335102.4803,205377143.891,-394152490.59166443,177147882.03540823,167.0608327365,465.1104724378374,-419.6362302932878 -719335160.6526,205386860.9429,-394125431.6351713,177123469.74699262,167.0176039022,465.19371071574506,-419.67381287077586 -719335218.8249,205396575.4799,-394098367.83625454,177099055.27227136,166.9743658665,465.2769575704789,-419.71139667670093 -719335335.1694,205415997.0065,-394044225.7089956,177050219.7636045,166.8878621786,465.44347702096115,-419.78656797570545 -719335567.8585,205454809.8562,-393935883.32371145,176952522.5075769,166.71474425099998,465.7766189568392,-419.93692532809246 -719336033.2368,205532314.6219,-393718965.917563,176757023.02448225,166.36806549739998,466.4433155518615,-420.23769911234604 -719336963.9932,205686839.45430002,-393284199.6654238,176365604.0458145,165.6729308511,467.77836431051304,-420.8394834924918 -719338825.5061,205993942.57459998,-392410934.1861342,175581085.00758153,164.27550832089997,470.4551217186929,-422.0440034357749 -719342548.5319,206600300.0199,-390649413.0695143,174005314.30130082,161.451687733,475.83558037942606,-424.4568793250943 -719349994.5834,207781108.474,-387065935.54480165,170826775.0735862,155.6851593645,486.7067620030178,-429.2982213017118 -719364886.6865,210010836.419,-379653298.8696963,164361153.54542047,143.6512377285,508.9110158939553,-439.04516271854567 -719379778.7896,212056071.8019,-371905157.92976284,157749721.33395588,130.8968836198,531.7735891283494,-448.88114292045293 -719394670.8926,213905570.9174,-363811301.55761373,150991125.3011955,117.3513938096,555.3501459673456,-458.80970043740143 -719409562.9957,215546964.4641,-355360645.30942744,144083965.0017571,102.9340317711,579.7024414081172,-468.8336098160664 -719424455.0988,216966594.7895,-346541134.0782445,137026806.09269872,87.55217198647,604.8992449760888,-478.9545946966383 -719437857.9916,218042175.8468,-338277368.6422335,130545915.91721311,72.79591729539001,628.3617759839119,-488.1467561080641 -719449920.5951,218836081.3353,-330566855.2326989,124607359.60318308,58.69981062933,650.1675835945432,-496.48625683020634 -719461983.1986,219454907.614,-322589105.68172,118567836.40057728,43.754302083919995,672.6788032579851,-504.8868003523426 -719472839.5417,219853299.8746,-315173352.6087834,113045344.86232772,29.50749336254,693.5879566621762,-512.4967160283109 -719482610.2506,220076095.4005,-308302267.9246776,108004275.92684528,15.981174743250001,712.970141740625,-519.3825461304825 -719487495.605,220137068.42249998,-304795025.4993997,105458472.05845371,8.949497800849,722.8730726673273,-522.8374083854605 -719492380.9594,220163230.2211,-301239045.433071,102895772.06981784,1.728586635813,732.9235014944488,-526.2994946286552 -719497266.3138,220153636.3993,-297633595.1001622,100316142.23868518,-5.689796690894,743.1263970929275,-529.7681469514174 -719502151.6682,220107301.1064,-293977917.05147797,97719552.28092803,-13.31438892211,753.4869546455295,-533.2426146338962 -719507037.0226,220023194.5127,-290271227.877991,95105975.8279465,-21.154464336420002,764.0106087375816,-536.7220437310946 -719511922.377,219900240.0813,-286512717.00757194,92475390.95854323,-29.21987715793,774.7030473042387,-540.2054653965688 -719521693.0859,219533230.1137,-278836844.35640275,87163134.14823462,-46.06931530431,796.6183865108775,-547.1797562207321 -719531463.7947,218996606.7221,-270943220.95332533,81782719.72002536,-63.955022436229996,819.2841325342906,-554.1548971617556 -719541234.5035,218279742.6567,-262824244.28964692,76334202.51194072,-82.98209980104001,842.7565579635052,-561.1174286825475 -719551005.2124,217370912.08,-254471734.5094325,70817785.7795591,-103.2707454839,867.0976814196904,-568.050293039146 -719560775.9212,216257129.6727,-245876874.84214103,65233860.73836759,-124.9590923515,892.3759827266722,-574.9318969183024 -719563700.3445,215881797.0629,-243255863.31822017,63549526.31116591,-131.7457888104,900.1352026858068,-576.9777428164866 -719563700.3445,215881807.3106,-243255866.46468297,63549523.266312644,-131.74584065969998,900.1352203011054,-576.977729249896 -719564311.0239,215800904.7026,-242705671.1882449,63197047.70948583,-133.1810415031,901.7671362659237,-577.403994181817 -719572325.7143,214656358.1826,-235391399.56201252,58547011.48582517,-152.6215209191,923.569821703613,-582.9625869409986 -719580340.4047,213351276.5694,-227899418.81494448,53852734.196011,-173.26015659630002,946.1212559314606,-588.440248246995 -719588355.0952,211875581.9704,-220223523.28006482,49114960.72378598,-195.21813305290001,969.4732526382589,-593.8121405847704 -719596369.7856,210218158.02,-212357073.81356132,44334656.31066226,-218.63388894239998,993.6822297910446,-599.0479115035964 -719604384.476,208366699.21670002,-204292959.33482197,39513055.9568893,-243.6663129895,1018.8096041896773,-604.1103448480549 -719612399.1664,206307531.81419998,-196023555.20922434,34651726.08170588,-270.49867569590003,1044.9221726645494,-608.953627238408 -719620413.8569,204025399.6432,-187540678.77291334,29752642.031862885,-299.3434966256,1072.0924434096244,-613.5211017123693 -719628428.5473,201503206.1636,-178835542.47255248,24818286.216200806,-330.4486171983,1100.3988620472378,-617.7423312167148 -719636443.2377,198721702.1712,-169898706.17441934,19851773.369486064,-364.1048324543,1129.9258369719155,-621.5292235999777 -719644457.9281,195659104.0425,-160720030.11143696,14857011.704687312,-400.65556097260003,1160.7634118558901,-624.7708653664133 -719652472.6186,192290624.83740002,-151288633.2484004,9838912.380195186,-440.5091992642,1193.0063373960022,-627.3265578347923 -719660487.309,188587892.2087,-141592862.17029864,4803664.2097532675,-484.15504533940003,1226.752139921865,-629.0163174141157 -719668501.9994,184518220.86,-131620282.03751984,-240901.69731295854,-532.1839997032,1262.0975222338698,-629.6077495126234 -719672509.3446,182334168.5501,-126526095.09820053,-2763665.383696206,-558.0610976941999,1280.3985687958466,-629.4002576099562 -719676516.6898,180043694.3582,-121357706.23858811,-5284822.45289474,-585.3157253797,1299.1320053205604,-628.7976600124783 -719680524.0351,177641049.81530002,-116113365.51506977,-7802685.448007636,-614.0638434199,1318.3061110247381,-627.7467182412151 -719684531.3803,175119995.9646,-110791293.9875054,-10315337.428754568,-644.4345729772,1337.9269591945872,-626.1859078785202 -719688538.7255,172473747.01029998,-105389694.14362459,-12820595.794754088,-676.5720334374,1357.997582915948,-624.0438862978584 -719692546.0707,169694906.085,-99906764.18315032,-15315969.335733734,-710.6374724734001,1378.5168852567292,-621.2376290798029 -719696553.4159,166775391.7416,-94340717.28863904,-17798606.995170593,-746.8117362309999,1399.478213659619,-617.6701535287165 -719700560.7611,163706353.86949998,-88689807.46545245,-20265236.555909242,-785.298132412,1420.8674898778704,-613.2277248946281 -719704568.1063,160478077.1442,-82952364.01051092,-22712090.813653287,-826.3257451403,1442.6607509196033,-607.7764122199021 -719708575.4516,157079870.312,-77126837.30133002,-25134818.45481835,-870.1532590776,1464.8209027787268,-601.1578231825159 -719712582.7968,153499938.9004,-71211859.66684131,-27528375.726320375,-917.0733518866,1487.293420391247,-593.1837977632431 -719716590.142,149725239.2701,-65206326.107728034,-29886894.436720777,-967.4176898205999,1510.0006254541613,-583.6297804105294 -719720597.4872,145741311.22480002,-59109501.695445225,-32203519.999149457,-1021.5625396679999,1532.8340394897355,-572.2265056718841 -719724604.8324,141532087.2681,-52921164.5519539,-34470212.19557783,-1079.934923872,1555.6441168365316,-558.6495389928489 -719729057.4382,136569106.66779998,-45938521.50806063,-36918617.56964814,-1150.342497683,1580.7102421028735,-540.5341189735783 -719731283.7411,133966535.13100001,-42405641.76182711,-38110566.025036775,-1187.960772329,1593.0210840589302,-530.0860829871725 -719733510.044,131278289.6195,-38845595.274474084,-39278100.443998925,-1227.325713769,1605.1042557392038,-518.5845823465611 -719735736.3469,128500358.92539999,-35258968.40425208,-40418756.28489815,-1268.5486185799998,1616.886280044432,-505.92046239979635 -719737962.6498,125628476.3072,-31646525.694290213,-41529811.629639864,-1311.747746284,1628.2801760916223,-491.9713900545753 -719740188.9527,122658104.0492,-28009242.63539756,-42608255.9514753,-1357.048242967,1639.1829796907266,-476.6001252842929 -719742415.2556,119584418.4104,-24348344.409047797,-43650754.81868449,-1404.581826996,1649.4727964677961,-459.6525808812914 -719744641.5585,116402295.6748,-20665351.854591038,-44653610.01070673,-1454.486135538,1659.0053016890636,-440.95566088207283 -719746867.8614,113106300.0766,-16962135.8494834,-45612714.59402358,-1506.903603433,1667.6095932448418,-420.31487653782557 -719749094.1643,109690675.0082,-13240981.820301773,-46523502.45137526,-1561.9796944490001,1675.0832884186036,-397.5117536962494 -719751320.4672,106149338.96550001,-9504666.056636792,-47380891.81508996,-1619.860256187,1681.1867573180114,-372.3010719530818 -719753546.77,102475888.7599,-5756545.956826441,-48179222.57752656,-1680.687690706,1685.6363790897353,-344.40801153987667 -719755773.0729,98663612.82909,-2000666.4964206852,-48912187.19041941,-1744.595547742,1688.0967311744346,-313.5253445852484 -719757999.3758,94705518.89632,1758114.8025198206,-49572755.6982576,-1811.701030383,1688.171653166449,-279.31088942156543 -719760225.6787,90594381.12763,5513981.595229927,-50153095.533159874,-1882.094781417,1685.3942178003335,-241.38557353701975 -719762451.9816,86322813.79165,9259989.175555993,-50644488.251350485,-1955.827165069,1679.2157699021616,-199.3326205622356 -719764678.2845,81883380.23097,12987869.713059139,-51037246.30877289,-2032.890131425,1668.9944336837343,-152.69861248759838 -719766904.5874,77268748.0145,16687812.11725832,-51320635.31602007,-2113.19363313,1653.9838517979083,-100.99749715539315 -719769130.8903,72471903.67108999,20348218.03418275,-51482809.68460346,-2196.5355727359997,1633.3234602517573,-43.71899204926194 -719771357.1932,67486442.36489,23955440.002926484,-51510773.79980206,-2282.5644421889997,1606.0323925353855,19.65669542263697 -719773583.4961,62306949.12025,27493512.617041893,-51390384.926568106,-2370.734375164,1571.010135614854,89.63546257702353 -719775809.799,56929488.08625,30943896.875597537,-51106420.652753845,-2460.253477073,1527.0483743387288,166.6744996711028 -719778036.1019,51352211.66668,34285268.5004176,-50642738.84434551,-2550.028285046,1472.8598251925137,251.13339196543097 -719779149.2534,48488814.14801,35907616.28240883,-50338275.289283946,-2594.5740662509997,1441.519017185059,296.2153288819812 -719780262.4048,45576092.64905,37493395.71789063,-49982564.146190695,-2638.6103222280003,1407.1310174622947,343.20921918146644 -719781375.5562,42614747.37132,39039128.003540136,-49573483.12093404,-2681.893723386,1369.5412854459812,392.1010453728982 -719782488.7077,39605763.845180005,40541167.92035346,-49108936.90564003,-2724.1549631919997,1328.6060852176302,442.8558309242105 -719783601.8591,36550441.64293,41995718.38555566,-48586882.20534611,-2765.09926418,1284.197121673355,495.4145935221356 -719784715.0106,33450422.02523,43398850.47700267,-48005356.12147328,-2804.407784779,1236.2067181635748,549.6913720357653 -719785828.162,30307713.49866,44746529.47542186,-47362507.759299256,-2841.740094704,1184.5534378029083,605.5704825142641 -719786941.3135,27124713.91249,46034647.31537323,-46656632.63776331,-2876.737869033,1129.187995637013,662.904188769461 -719788054.4649,23904227.60929,47259061.82579465,-45886209.415305465,-2909.029903872,1070.0992445808856,721.5109948060446 -719789167.6164,20649476.422790002,48415642.31363635,-45049937.99754725,-2938.238520399,1007.3199487718108,781.1747973190825 -719790280.7678,17364102.67058,49500321.4534024,-44146778.05505048,-2963.9873062879997,940.9320078479909,841.6451121028258 -719791393.9193,14052162.870070001,50509152.47380125,-43175986.58301321,-2985.910063826,871.0707468901276,902.6385823221192 -719792507.0707,10718110.9374,51438370.41721964,-42137152.99736444,-3003.6607048819997,797.9278708276905,963.8419220245838 -719793620.2222,7366770.011708001,52284455.764946595,-41030230.11258544,-3016.9237110520003,721.7526983130199,1024.9163745831024 -719794176.7979,5686214.78183,52675306.73489188,-40451326.14544386,-3021.7847095409998,682.6215125752152,1055.293878342453 -719794733.3736,4003292.5395669998,53044198.32707331,-39855559.3170159,-3025.424663575,642.8513482372434,1085.5036662181224 -719795289.9493,2318690.3575999998,53390787.733932294,-39243035.9336373,-3027.817338156,602.4888389356033,1115.4991050704189 -719795846.5251,633108.8749614,53714758.956951015,-38613888.33683014,-3028.9402620270002,561.5836532394429,1145.2333189554245 -719796403.1008,-1052739.866255,54015824.43509815,-37968274.96023834,-3028.774968719,520.1882697941519,1174.6594724239244 -719796959.6765,-2738134.7097460004,54293726.53829655,-37306380.22617461,-3027.3072055850002,478.357718294714,1203.7310618516376 -719798072.828,-6104646.960283999,54779167.627393894,-35934612.555417165,-3020.4293266170002,393.6222123986747,1260.6279663230048 -719798629.4037,-7784298.436629,54986352.20592149,-35225235.18668982,-3015.013130783,350.8373175316717,1288.3645892908744 -719798907.6916,-8622902.144117001,55080999.62880572,-34864793.49544142,-3011.811670791,329.36754483608274,1302.0362096002398 -719799046.8355,-9041858.486768,55126081.28338914,-34683150.6526658,-3010.087958428,318.61675176962086,1308.8205883681992 -719799116.4075,-9251245.292922,55148060.978353634,-34591975.83695069,-3009.195416351,313.2378090943241,1312.1996434435318 -719799151.1934,-9355915.232297,55158910.472511835,-34546300.34812063,-3008.74148223,310.54750516196196,1313.8858532327145 -719799168.5864,-9408244.258327,55164300.12293032,-34523440.617195144,-3008.512600507,309.2021517966525,1314.7281244436017 -719799177.2829,-9434407.275717,55166986.1729533,-34512005.2593359,-3008.397681121,308.52942560799465,1315.1490510982467 -719799181.6312,-9447488.409291,55168327.00403854,-34506286.207835674,-3008.340101815,308.1930502431949,1315.3594621229606 -719799183.8053,-9454028.882145999,55168996.87109344,-34503426.33901367,-3008.311282261,308.0248595058414,1315.464654550224 -719799184.8924,-9457299.095073,55169331.667490385,-34501996.31883875,-3008.296865009,307.94076337554435,1315.517247492345 -719799185.9794,-9460569.292325001,55169666.37247433,-34500566.241496146,-3008.282442774,307.85666673771414,1315.5698382522762 -719799188.1535,-9467109.639779001,55170335.508172445,-34497705.915303275,-3008.253583355,307.6884719415956,1315.675013225731 -719799192.5018,-9480190.146347001,55171672.6825464,-34491984.57698234,-3008.1958047209996,307.35207628196,1315.885336978573 -719799201.1983,-9506350.404909,55174342.64300994,-34480539.157100365,-3008.080008292,306.6792607983268,1316.305879642741 -719799218.5913,-9558667.894032,55179665.00982534,-34457637.34863384,-3007.847458938,305.333534015668,1317.1465450709823 -719799253.3773,-9663290.682651998,55190239.519334234,-34411789.89103395,-3007.378535434,302.6417039496346,1318.826192124922 -719799322.9492,-9872486.880723,55211107.58209041,-34319919.88733566,-3006.425399008,297.2565919021734,1322.1787174475444 -719799462.0932,-10290676.8002,55251719.43249099,-34135481.736729495,-3004.4580503099996,286.4809931551876,1328.8564260162734 -719799740.381,-11126207.14284,55328442.884602636,-33763830.82521496,-3000.279762934,264.9117651696297,1342.1003665259798 -719800296.9567,-12793554.774500001,55463870.85349864,-33009578.585017987,-2990.955469392,221.72896532267202,1368.1259273478838 -719801410.1082,-16110910.01372,55662623.37371449,-31458522.509051148,-2968.50375545,135.40774467669672,1418.2042543156213 -719802523.2596,-19400523.42383,55765506.38618525,-29853281.32315823,-2941.149324079,49.56268613119914,1465.4407127232957 -719803525.0959,-22333052.89645,55776784.30013886,-28364948.064342044,-2912.5496174590003,-26.889912086272034,1505.3457041106083 -719804526.9322,-25235137.6703,55711999.3973212,-26837929.416600857,-2880.411890258,-102.23025249881857,1542.6518742502285 -719805528.7685,-28103359.255489998,55572423.36273124,-25274876.859411567,-2844.992317215,-176.148602732276,1577.2691441623529 -719806530.6049,-30934568.319649998,55359624.12109883,-23678515.70776478,-2806.57090086,-248.3639829169075,1609.1400906440865 -719807532.4412,-33725905.17791,55075435.20063781,-22051612.81692862,-2765.4447115790003,-318.6275959677871,1638.2389419012197 -719808534.2775,-36474813.50028,54721922.28069335,-20396945.740830857,-2721.921179204,-386.7250581650121,1664.5697442907524 -719809536.1138,-39179047.472619995,54301348.20512939,-18717274.13751055,-2676.31170277,-452.4774597584337,1688.1638574011238 -719810537.9501,-41836672.761659995,53816137.019156136,-17015313.64017968,-2628.9258162859996,-515.7413438023857,1709.0769617549881 -719811539.7864,-44446062.028400004,53268839.19815668,-15293713.35998385,-2580.066029,-576.407746363728,1727.385741613531 -719812541.6227,-47005885.58627,52662097.820325345,-13555036.539141303,-2530.0234816899997,-634.4004524164018,1743.1844251092305 -719813543.459,-49515098.25542,51998616.86710935,-11801744.662072921,-2479.074446959,-689.6736463578937,1756.5813235486817 -719814545.2953,-51972923.0498,51281132.14354266,-10036185.050189642,-2427.477668259,-742.2091350355073,1767.6954939831385 -719815547.1316,-54378832.60925999,50512385.10312232,-8260581.6779607665,-2375.472495819,-792.0133081079912,1776.6536211916355 -719817550.8042,-59033923.56895,48831963.01778642,-4687488.3202822525,-2271.091216403,-883.5572293666197,1788.629957100738 -719819554.4768,-63480366.988460004,46978598.162568346,-1097618.1639273968,-2167.429435167,-964.7290069101534,1793.577065382143 -719821558.1494,-67720832.32424,44972475.00542565,2495997.223979801,-2065.6603277980003,-1036.1514598779563,1792.537521965624 -719823561.822,-71760036.15837,42832398.977661625,6082353.832262175,-1966.660101785,-1098.566271872647,1786.4870987246213 -719825565.4946,-75604186.25873,40575624.81413186,9652313.890153056,-1871.048255858,-1152.770380146338,1776.3099630777867 -719827569.1672,-79260511.18041,38217795.65953851,13198409.243810304,-1779.23156783,-1199.5689707539225,1762.7876174792796 -719829572.8398,-82736877.27746,35772961.224735364,16714632.987136219,-1691.446669735,-1239.7430600557743,1746.5975156789466 -719831576.5124,-86041486.97452,33253648.58938868,20196235.029910557,-1607.798315262,-1274.0288831315372,1728.3178971761645 -719833580.185,-89182648.28188999,30670964.855103243,23639531.315648872,-1528.292077523,-1303.1062530008076,1708.436174281959 -719835583.8576,-92168603.95683001,28034716.268297862,27041731.735799048,-1452.861257076,-1327.5933794629254,1687.3589693925296 -719837587.5302,-95007409.08945,25353533.049585667,30400788.68585608,-1381.38838748,-1348.046099534059,1665.4225402184966 -719839591.2029,-97706846.88090001,22634992.528409354,33715266.31841744,-1313.722014445,-1364.959952539416,1642.9028209883531 -719841594.8755,-100274373.9968,19885736.539080787,36984228.97827235,-1249.689507954,-1378.7739437403634,1620.0246430043182 -719843598.5481,-102717088.23969999,17111580.128248364,40207147.22010251,-1189.106657993,-1389.8751961980993,1596.9699470978526 -719845602.2207,-105041712.7852,14317610.463851893,43383819.26242095,-1131.784714716,-1398.6039435386544,1573.8849350460264 -719847605.8933,-107254592.41139999,11508275.80686799,46514305.645532325,-1077.5354397750002,-1405.258512730028,1550.88619900421 -719849609.5659,-109361698.307,8687464.64900093,49598875.276407756,-1026.1746321809999,-1410.100080838102,1528.0659114126406 -719851613.2385,-111368638.6736,5858575.672663448,52637960.9728019,-977.5245031605,-1413.3570899674726,1505.4961839099542 -719853616.9111,-113280673.23709999,3024579.2418049574,55632123.038656324,-931.4151911425,-1415.2292615701176,1483.2327018890844 -719855620.5837,-115102730.0985,188071.28437730297,58582019.457018316,-887.6856449198,-1415.8911960990008,1461.3177410678254 -719857624.2563,-116839423.8755,-2648679.653397899,61488381.60862194,-846.1840477461,-1415.495568065193,1439.7826613922796 -719861631.6015,-120073725.0641,-8315232.119794343,67173680.86349717,-769.3039667173,-1412.0492293036127,1397.9349781456172 -719865638.9467,-123014928.62,-13962044.162029218,72694677.76110962,-699.7437034071,-1405.771626642918,1357.7917171399602 -719869646.292,-125690530.71069999,-19579186.40948025,78058274.966279,-636.6080921722,-1397.3402213772556,1319.3790432766 -719873653.6372,-128124689.49679999,-25159119.848786823,83271375.92641369,-579.1237583866,-1387.2776261256647,1282.6749083888506 -719877660.9824,-130338682.2895,-30696152.872383144,88340731.19519858,-526.6238380012,-1375.9885215755853,1247.627567475148 -719881668.3276,-132351302.98400001,-36186026.8252211,93272845.86988485,-478.5333602911,-1363.7874196468597,1214.1679082877363 -719885675.6728,-134179203.0641,-41625598.676224664,98073927.45958424,-434.3560304678,-1350.9195747447734,1182.2176109232464 -719889683.018,-135837183.2539,-47012596.48405789,102749860.45179902,-393.6626374646,-1337.576789386423,1151.6944972560564 -719893690.3632,-137338441.7387,-52345430.43722828,107306198.323945,-356.0810780819,-1323.9094112608727,1122.5159903181636 -719897697.7084,-138694785.5893,-57623045.79394601,111748166.63777836,-321.2878592457,-1310.0354821517935,1094.6012977574874 -719901705.0537,-139916810.6974,-62844808.14216584,116080673.09702335,-289.000908954,-1296.047752200777,1067.8727415111448 -719905712.3989,-141014055.3297,-68010413.31355922,120308321.70954898,-258.9735117629,-1282.0190838130009,1042.2565134961787 -719909719.7441,-141995131.1959,-73119816.43672998,124435429.11170441,-230.9892004582,-1268.0066382241264,1017.6830515620279 -719913727.0893,-142867835.89630002,-78173175.81925607,128466041.95487869,-204.85745325300002,-1254.055133781963,994.0871648914724 -719917734.4345,-143639249.3473,-83170808.38302776,132403954.34594591,-180.4100650497,-1240.199395952894,971.4079985933745 -719921741.7797,-144315816.9414,-88113154.2271192,136252725.01884028,-157.4980824118,-1226.4663609170293,949.5888965751479 -719925749.1249,-144903421.32729998,-93000748.26898429,140015693.74064723,-135.98920940699998,-1212.876658394643,928.5772048752602 -719933763.8154,-145832822.56530002,-102614163.3808364,147296582.2360524,-96.72201542184999,-1186.185508245998,888.784051081308 -719941778.5058,-146465429.832,-112016474.03127086,154269527.15186998,-61.80740770005,-1160.2065629460772,851.6783336663484 -719949793.1962,-146833449.8143,-121213562.46988624,160954829.21023834,-30.599765671980002,-1134.9775954634072,816.9585412545537 -719957807.8866,-146964416.1898,-130211494.82856569,167370543.34344485,-2.573563072989,-1110.5087896597424,784.3646709236742 -719965822.5771,-146882041.7767,-139016343.03450012,173532785.6903025,22.70294101775,-1086.7927014630318,753.6718970279259 -719973034.6149,-146642599.25689998,-146779290.6426044,178873187.35419974,43.39450718171,-1066.0800020852857,727.5162590296006 -719980246.6528,-146260240.31759998,-154394947.7047526,184029554.99798673,62.36943844765,-1045.9436574821673,702.6171537544491 -719987458.6907,-145746650.9828,-161867396.78585044,189010544.89945984,79.81551771192,-1026.362780513421,678.8642208439685 -719994670.7286,-145112260.36049998,-169200563.99506038,193824062.7462741,95.8943421113,-1007.3150366795533,656.1593730393681 -719997061.1487,-144876967.8671,-171601049.0925405,195383802.16271564,100.94648462869999,-1001.1153952136096,648.8498715568376 -719997061.1487,-144876952.6256,-171601051.69873083,195383796.139364,101.0007947533,-1001.1970048759765,649.0242878610857 -720001614.1406,-144395828.2319,-176132883.17716548,198307607.26664358,110.2673618388,-989.5406903237724,635.3832038511352 -720020390.0151,-141997508.2774,-194274948.5917673,209734112.6432411,144.0995389977,-943.4643577380697,582.6630199683304 -720029777.9523,-140574946.9482,-203028686.84463745,215088342.45496342,158.7340217492,-921.5439309082534,558.1906977767807 -720039165.8896,-139021170.545,-211579879.5986731,220218062.00723213,172.0791501773,-900.3067566929612,534.8152157046849 -720048553.8268,-137347596.1878,-219934735.58677545,225133074.23834002,184.27776916759998,-879.7094574275093,512.4334608403302 -720057941.764,-135564394.2957,-228099068.27949625,229842271.81385148,195.4532599412,-859.7112057616235,490.954317543518 -720067329.7013,-133680654.849,-236078319.7104559,234353741.72395217,205.7129159585,-840.2736847561548,470.29701339639826 -720076717.6385,-131704525.25780001,-243877583.5990867,238674855.83084053,215.15065887609998,-821.3609874422006,450.38976474354655 -720086105.5757,-129643325.1608,-251501627.3764869,242812349.84130174,223.84923587300003,-802.9394836382793,431.1686675975768 -720095493.5129,-127503642.76099999,-258954912.86274385,246772392.94604677,231.8820030112,-784.9776726767217,412.57679067143334 -720104881.4502,-125291415.7497,-266241615.55232397,250560649.5917216,239.3143749746,-767.4460349406863,394.5634340786799 -720114269.3874,-123012000.5504,-273365642.5846014,254182335.16967335,246.2049986013,-750.3168899360172,377.0835244000478 -720123657.3246,-120670230.8605,-280330649.3404309,257642266.30202705,252.60670034709997,-733.5642668662825,360.09711611434625 -720133045.2619,-118270468.75,-287140054.96023685,260944907.03032112,258.56724028369996,-717.1637905940041,343.56897783477865 -720142433.1991,-115816649.33240001,-293797056.8599285,264094411.3782733,264.1299034392,-701.0925856464419,327.46823958281743 -720151821.1363,-113312320.5604,-300304644.4336327,267094662.80027205,269.3339524463,-685.329198905664,311.76808011876716 -720162252.1777,-110474371.0412,-307363450.8378028,270257657.63093555,274.7387858319,-668.1509554907603,294.7653382167213 -720174216.1527,-107152485.4046,-315241335.5193139,273670235.27229995,280.5031428864,-648.8525790299075,275.803649135 -720187509.4583,-103383755.60960001,-323726784.1869319,277200063.5113424,286.4303459106,-627.8754429557134,255.3740542443705 -720194156.1111,-101470602.9303,-327865703.15279996,278864214.54141986,289.2261129753,-617.5572919064924,245.40086440505635 -720197479.4375,-100507144.5966,-329909534.70221806,279671562.6287997,290.5853704453,-612.4385700646278,240.47308008464938 -720199141.1007,-100023731.7876,-330925082.200205,280069111.5522617,291.25572099469997,-609.8890319567658,238.02371802459874 -720199971.9323,-99781608.9346,-331431268.6163488,280266361.7610678,291.5886216658,-608.6166863742469,236.80264941864306 -720200387.3481,-99660443.94511001,-331683965.5768181,280364606.6765517,291.7545088229,-607.9811154822029,236.19301579535403 -720200595.056,-99599835.62773001,-331810215.0681,280413634.1961596,291.83731228190004,-607.6634800185911,235.88842385550748 -720200698.91,-99569525.02185,-331873315.0755218,280438124.2350682,291.8786790654,-607.50469972111,235.7361840666015 -720200750.8369,-99554368.10813001,-331904858.89578575,280450363.3259233,291.8993537311,-607.4253189236301,235.66007821323305 -720200802.7639,-99539210.12099,-331936398.59416014,280462598.4650285,291.92002258350004,-607.3459443571705,235.58398171855907 -720200906.6179,-99508890.92774,-331999465.626886,280487056.89022833,291.9613428595,-607.1872139079886,235.43181679914852 -720201114.3258,-99448239.67345001,-332125550.24439627,280535926.34171104,292.04391378139997,-606.869827686261,235.1275992071434 -720201529.7416,-99326885.76109,-332377521.76015174,280633475.7570656,292.2087777668,-606.2353534618212,234.51961271902823 -720202360.5732,-99083972.85835999,-332880674.4916063,280827817.5069177,292.53739957019997,-604.9675940060702,233.30543221661495 -720204022.2364,-98597331.00496,-333883823.34685534,281213479.62262535,293.1902600625,-602.4368002385776,230.88422293797635 -720207345.5628,-97620816.71364,-335877530.97850156,281972773.60588837,294.4787719368,-597.3938704604619,226.070270732462 -720213992.2155,-95655126.87348999,-339814870.83229417,283443679.5556426,296.9894023502,-587.3807592658092,216.55517783309557 -720227285.5211,-91675078.17394,-347491438.11296624,286198226.5712533,301.7624054277,-567.6314054705988,197.968747570548 -720239249.4962,-88040427.22811,-354177739.13056326,288469156.5629431,305.7975010602,-550.1525157068867,181.73662773629005 -720251213.4712,-84358879.58736001,-360656497.86074054,290548643.41793036,309.60460329259996,-532.9339226828531,165.9639039059228 -720261981.0487,-81007580.34795,-366312426.3484024,292260995.1824235,312.84666399900004,-517.6460479772752,152.15324141873882 -720272748.6263,-77622281.43273,-371804756.2431427,293826567.12500864,315.92061838579997,-502.54499696861785,138.69929044641398 -720283516.2038,-74204769.87418,-377135447.2088578,295249155.81709045,318.83042415110003,-487.6212862071543,125.59364808262916 -720294283.7813,-70756799.59191,-382306361.9281116,296532461.914922,321.57837161140003,-472.86635036098716,112.82688756840714 -720305051.3588,-67280106.37298,-387319274.9054528,297680078.81704146,324.1656225258,-458.2723453626479,100.38851701438624 -720315818.9364,-63776417.450950004,-392175879.27346694,298695481.4982938,326.5926739806,-443.831974320814,88.26705296031166 -720326586.5139,-60247456.64724,-396877791.9007597,299582016.7183024,328.8597334501,-429.53834167249863,76.45017669008794 -720337354.0914,-56694945.63920999,-401426556.9862968,300342894.7617399,330.9670008158,-415.3848376424704,64.92493800574425 -720348121.669,-53120603.14235,-405823648.7107131,300981184.18147814,332.91486434200004,-401.36505073386667,53.67798173865994 -720358889.2465,-49526142.101500005,-410070472.99573004,301499808.6257308,334.7040204475,-387.4727061086877,42.69576976750932 -720369656.824,-45913266.02884,-414168368.7495886,301901545.87358177,336.3355315196,-373.7016254867993,31.964784129080883 -720391191.9791,-38639011.48845,-421922400.42500234,302364749.5249959,339.13173243349996,-346.49889666440123,11.203533912910416 -720405690.8293,-33710508.24727,-426814954.1574542,302428923.52530146,340.6701676851,-328.4195780598452,-2.2895475026358696 -720412863.3287,-31264642.19323,-429138676.0409695,302388991.49895406,341.33091841059996,-319.540525599785,-8.831142657338845 -720429120.8056,-25704797.051400002,-434170931.4228988,302126812.59143394,342.58779676259996,-299.56215006621653,-23.353618664141393 -720445378.2825,-20127185.06132,-438879945.36894137,301631782.0454644,343.51820342779996,-279.77198222597707,-37.482505094854545 -720461635.7595,-14537035.231579999,-443268618.810515,300910020.279289,344.13182633049996,-260.15054700802665,-51.25153257030091 -720477893.2364,-8939418.995301,-447339539.4069573,299967123.91490376,344.43831472320005,-240.67878283931165,-64.6914370117893 -720494150.7133,-3339253.098737,-451094988.2816716,298808212.9152661,344.4470037154,-221.3380411436267,-77.8301566073809 -720510408.1902,2258693.45339,-454536946.6441386,297437974.1492933,344.16671022509996,-202.11006747819175,-90.69307248737131 -720526665.6671,7849789.8122189995,-457667101.8845108,295860700.96854275,343.6055870586,-182.9769671090828,-103.30326460761196 -720542923.144,13429531.54415,-460486853.0857413,294080328.4587297,342.7710230485,-163.9211560209834,-115.68176490530809 -720559180.6209,18993527.66928,-462997315.5961503,292100464.7962731,341.66957870100003,-144.92530271132057,-127.8477961552413 -720575438.0978,24537486.84312,-465199324.6012841,289924418.8426125,340.3069452922,-125.97226185059347,-139.81899154347843 -720591695.5747,30057203.01255,-467093437.5737754,287555224.3467903,338.6879208439,-107.04500145736574,-151.61159297242284 -720599824.3131,32806675.300000004,-467925131.64746165,286299074.47990674,337.7835134692,-97.58572872083121,-157.44565994240256 -720603888.6823,34178590.72143,-468312144.94910944,285653255.9779583,337.3077706106,-92.85625187714064,-160.347922592355 -720605920.8669,34863815.385510005,-468498443.1379403,285325928.16644156,337.06403451790004,-90.49143690691614,-161.7954563782333 -720606936.9592,35206240.982,-468589790.0582018,285161161.7421276,336.9407026369,-89.30899571190511,-162.51833558835867 -720607445.0054,35377406.66266,-468635012.9639294,285078503.1627027,336.87867101759997,-88.71776486397694,-162.87955472373253 -720607699.0285,35462977.66942,-468657511.7766548,285037105.0638181,336.8475638225,-88.42214664943027,-163.0601093545866 -720607826.04,35505760.20764,-468668733.0227123,285016388.8161318,336.83198738280004,-88.27433681602717,-163.15037295838707 -720607889.5458,35527150.73465,-468674336.6057412,285006026.393243,336.824193453,-88.20043171448248,-163.1955013350014 -720607953.0516,35548540.76658,-468679935.49525994,284995661.10447973,336.8163957167,-88.12652648819221,-163.2406274292944 -720608080.0631,35591319.34415,-468691119.1940998,284974921.93007314,336.80078882519996,-87.97871565673901,-163.33087277445236 -720608334.0862,35676870.547699995,-468713430.27062774,284933409.1975839,336.7695293713,-87.6830924519051,-163.51133611210972 -720608842.1323,35847949.09425,-468757827.1369703,284850246.23016554,336.7068278125,-87.0918396465808,-163.87215355649434 -720609858.2246,36190010.31228,-468845719.70697725,284683370.544044,336.58069435420003,-85.90930662819504,-164.59335295635657 -720611890.4092,36873745.78641,-469017900.0568181,284347422.22391707,336.32550813430004,-83.54411635169367,-166.03402122973534 -720615954.7785,38239641.22433,-469347840.2455045,283666754.0708055,335.80347421470003,-78.81312185740478,-168.90852639199798 -720624083.5169,40964909.20938,-469950024.23947513,282270459.22385234,334.7128743951,-69.34773918653744,-174.63092578279085 -720640340.9938,46387592.811950006,-470923434.57179666,279339012.7160547,332.34626677250003,-50.39585605424723,-185.97482841860167 -720656598.4707,51769797.72562,-471588412.0184247,276224170.2681178,329.7332799632,-31.401307603819284,-197.19433345883283 -720672855.9476,57107521.06916,-471944119.6661933,272927859.4447763,326.8740760372,-12.346408449068733,-208.3009985527215 -720689113.4245,62396754.70885,-471989429.9562223,269451824.92538553,323.7678423816,6.786927494861274,-219.3057797978704 -720705370.9014,67633469.17793,-471722917.37125415,265797637.6004715,320.4127619787,26.017286715491892,-230.21911381891672 -720721628.3783,72813597.04662,-471142849.4314858,261966702.4068419,316.80597463799995,45.36386286815946,-241.05099056122575 -720754143.3321,82987528.56259,-469033516.22253144,253779417.8552033,308.8203166395,84.48616321668023,-262.5084759345309 -720786658.2859,92884567.52267,-465640972.99875313,244898123.84407884,299.764936484,124.32404809164481,-283.751483477689 -720809069.7053,99526456.3433,-462542102.0919486,238375659.29841614,292.86651764709995,152.2968580545587,-298.30507666821114 -720820648.3171,102895680.91569999,-460694080.46958494,234878274.48886073,289.0819199736,166.9388009625168,-305.80432738593595 -720849838.2518,111186939.7727,-455275242.1091085,225676365.46459576,278.83591605680004,204.50753558685517,-324.6746411360721 -720879028.1865,119163557.7024,-448744441.39130145,215923938.58384514,267.5071064395,243.15787994382902,-343.5318507254213 -720893623.1539,123023639.2825,-445051533.6355778,210841240.48985255,261.4024424521,262.9498751460317,-352.9701267482725 -720908218.1212,126792344.43969999,-441067261.49925894,205620694.75088882,254.9825050529,283.0893599848484,-362.4225610535607 -720922813.0886,130464936.6637,-436786338.3562029,200262052.76483953,248.22839121340002,303.60619718386636,-371.89489515244713 -720937408.0559,134036386.34970002,-432203024.06530714,194764982.44580293,241.11882140970002,324.53269531488286,-381.39283085353327 -720952003.0233,137501334.164,-427311087.29470456,189129068.84499642,233.62982336230002,345.9039204967428,-390.92201686690305 -720966597.9906,140854049.0021,-422103762.62773603,183353815.08514628,225.7343594012,367.7580559357867,-400.48802755101417 -720981192.958,144088380.14880002,-416573702.12832963,177438643.65905988,217.401886047,390.1368186591942,-410.0963312930919 -720995787.9253,147197702.4386,-410712920.35397756,171382898.28120562,208.5978306796,413.0859428726227,-419.7522452046916 -721003085.409,148703269.7992,-407655823.97620124,168302084.35917664,204.0069025491,424.78991808753625,-424.59966117903207 -721006734.1509,149443370.4007,-406095101.5338004,166748399.7591891,201.6619110485,430.7021640143,-427.02850488712363 -721008558.5218,149810196.71710002,-405306631.98880553,165968232.52836925,200.4767277898,433.6737319791175,-428.2442435217894 -721009470.7072,149992797.0953,-404910361.8767417,165577316.9764691,199.88092489340002,435.16342590281073,-428.8524460677053 -721009926.8,150083893.23290002,-404711716.94290215,165381651.1274716,199.5822156284,435.90925650979653,-429.156631147309 -721010154.8463,150129390.18129998,-404612266.8755778,165283766.1735769,199.4326584119,436.28241849917504,-429.30874470088804 -721010268.8695,150152125.86189997,-404562509.92535704,165234810.68786484,199.3578290786,436.46906126243937,-429.384806738876 -721010325.8811,150163490.5021,-404537623.46917236,165210329.69266057,199.32040172080002,436.56239809801343,-429.42283907392516 -721010382.8927,150174853.00840002,-404512731.6913682,165185846.5291287,199.2829658984,436.65574524109354,-429.4608722868244 -721010496.9159,150197571.6167,-404462932.16856027,165136873.69695187,199.20806884869998,436.84247046441953,-429.53694134783734 -721010724.9622,150242983.2036,-404363269.2381117,165038902.0106635,199.05817305000002,437.2160447542369,-429.68909001648876 -721011181.055,150333703.7505,-404163687.70624185,164842854.53923425,198.7579740189,437.9636894876586,-429.9934296022278 -721012093.2404,150514733.4676,-403763500.9003503,164450343.110795,198.1559411094,439.4609698362283,-430.60227825931304 -721013917.6114,150875140.40870002,-402959023.8128123,163663653.58787113,196.945294687,442.4635444983774,-431.82065743153976 -721017566.3532,151589287.8619,-401333586.97622395,162083602.03037956,194.497344527,448.5011581431241,-434.2601741953183 -721024863.8369,152990456.04140002,-398016221.2597579,158896761.27477258,189.492050239,460.70959156339467,-439.1504833229762 -721039458.8042,155680439.6528,-391110841.0754292,152415735.6535888,179.0203105279,485.6874489769329,-448.9780316918556 -721054053.7716,158212817.1416,-383835117.4125141,145790802.1032154,167.8843155402,511.4711262983714,-458.871272544649 -721068648.7389,160577416.1248,-376176741.32893676,139020978.53514445,156.0170225817,538.1371748291571,-468.83324651933924 -721083243.7063,162763012.0022,-368122219.8547676,132105245.84242788,143.3409847508,565.7715327760548,-478.8659324498583 -721097838.6736,164757161.6525,-359656727.6627856,125042566.03360523,129.76629407779998,594.4711301989538,-488.9698670616716 -721110974.1443,166376786.1453,-351672940.66046745,118559660.66854596,116.694349972,621.3020543060229,-498.1232033374639 -721124109.6149,167818887.1554,-343329976.7912332,111956164.64285246,102.7206954916,649.1752448644748,-507.33028924660243 -721135931.5384,168954688.15150002,-335502382.20429146,105909353.63482688,89.28830999593,675.2366010784611,-515.6584321831915 -721147753.462,169926457.4883,-327360803.2458566,99763882.51333958,74.95465756323,702.3091002154674,-524.0201648255651 -721158393.1932,170651541.17380002,-319754616.2618586,94148312.31335858,61.20065653485,727.6169184235048,-531.5675704566494 -721167968.9513,171175266.0086,-312674760.0011206,89025581.478286,48.05824047975,751.2235910768615,-538.370832692756 -721177544.7093,171569388.11589998,-305364829.9074364,83837688.52526136,34.11918834099,775.681362116994,-545.1758683948735 -721186162.8916,171806687.7574,-298582185.96166956,79112894.10813004,20.82660544753,798.4787493972177,-551.2934677495281 -721193919.2557,171919685.9004,-292307102.758402,74815550.37262444,8.200995634328,819.6808825146605,-556.7856806377622 -721200899.9833,171935573.0345,-286516798.2885778,70911579.69125183,-3.745203808077,839.3560107165347,-561.710458779386 -721207182.6382,171876928.64200002,-281186443.7529568,67368677.40127881,-15.00715790432,857.5750176387855,-566.1217151243325 -721212837.0276,171762366.29450002,-276289984.01757836,64156432.62362621,-25.587023407150003,874.4107928274025,-570.069386168761 -721218491.417,171586721.7238,-271297098.5400443,60921939.3348934,-36.61741828862,891.6854076603962,-573.990219280789 -721220226.0264,171520189.6932,-269745701.815283,59925254.444113776,-40.096916765989995,897.0749832493229,-575.1861819197079 -721220226.0264,171520194.1564,-269745703.2751132,59925252.26893555,-40.09632631742,897.076416832269,-575.186710384995 -721227673.7963,171164480.7491,-262976912.93378392,55622375.91427566,-55.57303392698,920.7347853739751,-580.2833547078287 -721237105.0079,170542800.5057,-254147160.3230323,50119592.19163541,-76.52759591156,951.9647458193986,-586.6226039973174 -721246536.2196,169715646.2424,-245015680.77823466,44557787.23938166,-99.18152892011,984.7445105724726,-592.791189591674 -721257015.3437,168534738.0326,-234496985.6862863,38311070.807423756,-126.6285180381,1023.1797517739377,-599.3754340719975 -721267494.4677,167052074.9554,-223563367.55562252,31997262.446951345,-156.8437736305,1063.9805740767831,-605.5765616881201 -721272734.0298,166187975.5203,-217932867.77613613,28816606.484620623,-173.13300385140002,1085.3589584143235,-608.4925616011916 -721277973.5918,165236260.4682,-212188522.51453486,25621055.522566296,-190.29983058919998,1107.4439289931636,-611.2583636500995 -721283213.1538,164192132.48619998,-206326512.42975947,22411459.272902608,-208.4217298827,1130.280821045387,-613.8493850907068 -721288452.7159,163050363.8805,-200342770.51722205,19188806.809553362,-227.5857386946,1153.9189025917703,-616.2368930370502 -721293692.2779,161805242.6035,-194232960.46009842,15954250.369578421,-247.8899802208,1178.4117700720499,-618.3871860170602 -721298931.8399,160450509.5331,-187992452.86433968,12709133.951118663,-269.4454895723,1203.817777479855,-620.2605843720237 -721304171.402,158979285.23909998,-181616299.1097956,9455027.783211,-292.37841012959996,1230.200496206594,-621.8101775877838 -721309410.964,157383984.1042,-175099202.75788546,6193770.146274567,-316.83265050159997,1257.6291984451384,-622.9802597426716 -721314650.526,155656213.017,-168435488.42465267,2927518.4609682634,-342.9731168667,1286.1793510016776,-623.704362550008 -721319890.0881,153786651.3809,-161619068.0236078,-341188.1023574546,-370.9896694532,1315.933094069941,-623.902762989961 -721325129.6501,151764908.0222,-154643404.6593179,-3609351.160875134,-401.1019954936,1346.9796651638696,-623.4793018286504 -721330369.2121,149579349.6803,-147501474.58270386,-6873416.742323816,-433.56565008089996,1379.4156998052028,-622.3172879593803 -721335608.7742,147216894.0467,-140185728.1286583,-10129154.369142666,-468.6795968325,1413.3453001902628,-620.2741789648884 -721340848.3362,144662758.47219998,-132688051.2406837,-13371504.200446397,-506.79568383270004,1448.8796930308588,-617.1746073516371 -721346087.8982,141900152.6708,-124999730.46872292,-16594381.979406238,-548.3306405507,1486.1361933099404,-612.8011445150089 -721351327.4603,138909900.4321,-117111426.22679254,-19790427.890901245,-593.7813683457999,1525.236009776296,-606.8819394456494 -721356567.0223,135669970.1378,-109013161.94028507,-22950679.803882293,-643.7445695037,1566.3001423468359,-599.0739826517498 -721359186.8033,133948568.72459999,-104882006.58943039,-24514041.16266015,-670.638200395,1587.6048942443983,-594.3295988613004 -721361806.5843,132154888.4734,-100694342.55755274,-26064143.581696022,-698.9421018557,1609.442140533106,-588.9401777744977 -721364426.3653,130285086.4679,-96448759.97026165,-27599201.680288583,-728.771456045,1631.8228842187889,-582.8311752585313 -721367046.1464,128335002.0495,-92143823.1459313,-29117221.373344954,-760.2539060421,1654.755679770918,-575.9175279353501 -721369665.9274,126300122.08669999,-87778078.20035492,-30615970.025989585,-793.5311736492,1678.2457005153456,-568.1018726798521 -721372285.7084,124175541.7508,-83350063.4003724,-32092941.55591647,-828.7609070118001,1702.2935294538536,-559.2724159611018 -721374905.4894,121955920.07409999,-78858323.17896661,-33545315.352012224,-866.1187831925,1726.8935856457335,-549.3003758371249 -721377525.2704,119635429.6577,-74301426.82574758,-34969907.87527576,-905.8008976124,1752.0320788750903,-538.0369015164778 -721380145.0514,117207699.75,-69677993.34844121,-36363115.3783236,-948.0264628413,1777.6843404293177,-525.3093517844957 -721382764.8325,114665751.71339999,-64986724.32641888,-37720845.81529397,-993.0408346256,1803.8113363298373,-510.9167888929409 -721385384.6135,112001926.3069,-60226447.27014804,-39038437.83921697,-1041.118866969,1830.355096346841,-494.6245066585441 -721388004.3945,109207801.5836,-55396172.732865274,-40310563.84070275,-1092.568563822,1857.232707350768,-476.1573787014723 -721390624.1755,106274101.10630001,-50495169.53551957,-41531113.87431611,-1147.73494672,1884.3283948370743,-455.1917628796571 -721393243.9565,103190591.7659,-45523063.98633234,-42693055.99541206,-1207.003964971,1911.4830558756978,-431.3456556312748 -721395863.7375,99945971.70118,-40479970.600994825,-43788268.295109436,-1270.806123069,1938.4803831317233,-404.16674710437763 -721398483.5186,96527749.71953,-35366665.11774868,-44807336.34788659,-1339.619274491,1965.0284376522734,-373.1179981982033 -721401103.2996,92922119.32935,-30184813.030735645,-45739309.35909701,-1413.969611655,1990.7351420907426,-337.5603985279734 -721403723.0806,89113834.24849,-24937272.731542863,-46571407.016419955,-1494.429307821,2015.0757028075857,-296.73266017160597 -721406342.8616,85086097.20935,-19628497.04709933,-47288669.40277245,-1581.608254129,2037.3494194113302,-249.7279515244653 -721407652.7521,82984240.59897001,-16953101.06301462,-47598865.78587287,-1627.914169287,2047.4304711408302,-223.57980068852476 -721408962.6426,80820482.05051,-14265065.310561817,-47873542.50846335,-1676.1358658870001,2056.622758827227,-195.4684285085533 -721410272.5331,78592261.89181,-11565659.64298359,-48110020.930545725,-1726.3494563670001,2064.7610550648665,-165.22817641196843 -721411582.4236,76296923.37693,-8856386.313043023,-48305396.50883857,-1778.626662069,2071.655208385895,-132.67969114024243 -721412892.3142,73931720.10960001,-6139014.8450923655,-48456520.54673322,-1833.032134741,2077.086663830832,-97.62948269228946 -721414202.2047,71493827.45944999,-3415621.733369397,-48559981.52851424,-1889.6200300799999,2080.8046333112557,-59.86977816059323 -721415512.0952,68980359.04949,-688635.3192283921,-48612086.56720588,-1948.429672663,2082.5219488299003,-19.178808103912502 -721416821.9857,66388389.602730006,2039113.664461419,-48608843.553227276,-2009.480120882,2081.910672230278,24.678288649405204 -721418131.8762,63714985.727400005,4764335.774921734,-48545945.05540834,-2072.763435092,2078.5975969064166,71.94771033914662 -721419441.7667,60957246.56475,7483220.646143386,-48418755.26189114,-2138.236432285,2072.1598530390015,122.88409078574159 -721420751.6572,58112356.203099996,10191369.274264108,-48222301.58141543,-2205.810730818,2062.1209569644407,177.74608141804686 -721422061.5477,55177650.47008,12883721.679986773,-47951273.35592028,-2275.340930779,2047.9477747633946,236.78998970164525 -721423371.4382,52150700.33601,15554481.530378517,-47600030.34154869,-2346.6108666490004,2029.0490835917622,300.26096763004136 -721424681.3287,49029414.76089,18197040.38473849,-47162624.77168982,-2419.3180429110002,2004.7766204720158,368.3812285966028 -721425991.2192,45812164.793299995,20803905.574031048,-46632840.994628504,-2493.056618343,1974.4297850606658,441.33476570531343 -721427301.1097,42497930.25369,23366637.589768253,-46004257.59906809,-2567.299694662,1937.2654043326006,519.2481590912714 -721428611.0003,39086469.88992,25875804.049057286,-45270337.42848745,-2641.382242202,1892.5141691567824,602.1673341493481 -721429920.8908,35578512.159600005,28320960.73568643,-44424550.54484978,-2714.4866110589996,1839.405404095737,690.0305360068204 -721431230.7813,31975961.91029,30690671.288717255,-43460534.58571581,-2785.633395158,1777.20161591281,782.6385141035369 -721432540.6718,28282113.65322,32972579.082015112,-42372295.03313662,-2853.681143658,1705.2436249887091,879.6238608058405 -721433850.5623,24501857.212139998,35153545.01920194,-41154444.53856861,-2917.338921203,1623.0058638807338,980.4226320647966 -721435160.4528,20641856.31959,37219863.284385875,-39802475.6040986,-2975.195678023,1530.1595576772022,1084.2526110044585 -721436470.3433,16710675.9571,39157562.56902283,-38313054.472156994,-3025.7694355020003,1426.6390288655575,1190.103563539013 -721437125.2886,14721604.093190001,40073834.90506467,-37516151.630731255,-3047.8594682939997,1370.942847369146,1243.410347364001 -721437780.2338,12718831.75592,40952792.24386356,-36684316.87746673,-3067.5771225,1312.703705787121,1296.7450882254045 -721438435.1791,10703969.30974,41792797.57563829,-35817591.39375192,-3084.751289447,1252.012740799119,1349.9245262365905 -721439090.1243,8678735.543916,42592281.76664401,-34916139.31909838,-3099.222473073,1188.9861480719026,1402.7567544419828 -721439745.0696,6644949.003009999,43349760.040828235,-33980252.70411799,-3110.845991349,1123.7651830468258,1455.0434963634627 -721440400.0148,4604517.353382,44063848.12595244,-33010354.83986101,-3119.4950841239997,1056.515564313871,1506.5827200937808 -721441054.9601,2559424.5937340003,44733278.01851871,-32007001.79551832,-3125.063796087,987.4262617804462,1557.171507517392 -721441709.9053,511716.5986953,45356912.60886476,-30970882.0009121,-3127.46953239,916.707650099373,1606.6091189319034 -721442364.8506,-1536514.905668,45933758.93200217,-29902813.785788327,-3126.655168919,844.5890583989022,1654.7001481329414 -721443019.7958,-3583149.575021,46462979.62557632,-28803740.84915221,-3122.590621995,771.3157691874892,1701.2576645395088 -721443347.2685,-4605202.095848,46709513.5775415,-28242905.225091234,-3119.337770525,734.3262802252522,1723.9060044783744 -721443511.0048,-5115795.655274,46828229.90673753,-27959724.23082115,-3117.4069569060002,715.757731796641,1735.0633859158336 -721443592.8729,-5370969.73623,46886447.02182991,-27817450.986441474,-3116.365638509,706.4568324296393,1740.5992792894422 -721443633.807,-5498524.290437,46915269.92862037,-27746144.70441938,-3115.826030239,701.8024559317505,1743.3563922966628 -721443654.2741,-5562293.219812,46929609.92298356,-27710449.278107714,-3115.551492791,699.4743147311394,1744.7322237920212 -721443664.5076,-5594175.569316001,46936762.04975585,-27692591.00991349,-3115.4130412560003,698.3100094905653,1745.4194562264383 -721443669.6243,-5610116.211742,46940333.64483645,-27683659.23909663,-3115.343519851,697.7277986603583,1745.7629013589885 -721443672.1827,-5618086.399432,46942118.325217895,-27679192.69476448,-3115.308685248,697.4366787490034,1745.9345811219546 -721443673.4619,-5622071.459841001,46943010.38610073,-27676959.257896785,-3115.291249472,697.2911151765885,1746.0204102992982 -721443674.1015,-5624063.9816809995,46943456.346721575,-27675842.498294808,-3115.2825269659998,697.2183324867287,1746.063322210478 -721443674.7411,-5626056.497939999,46943902.26078858,-27674725.711246274,-3115.27380138,697.1455491952856,1746.1062323377475 -721443676.0203,-5630041.51371,46944793.9492595,-27672492.054813243,-3115.256340973,696.9999808073636,1746.192047237409 -721443678.5787,-5638011.4782070005,46946576.767580524,-27668024.412656207,-3115.221383214,696.7088368192593,1746.3636556138053 -721443683.6954,-5653951.138578,46950140.16956763,-27659087.811398093,-3115.1513199240003,696.1265200514758,1746.7067866456152 -721443693.9289,-5685829.38131,46957258.034352586,-27641209.343198888,-3115.010602325,694.961771800816,1747.3927055719064 -721443714.396,-5749581.526508,46971458.00159269,-27605431.360415854,-3114.726803596,692.631820039863,1748.7631688278977 -721443755.3301,-5877068.230157,46999714.84377995,-27533791.34088241,-3114.149756497,687.9701243192312,1751.4985806750237 -721443837.1982,-6131969.486416,47055655.82324753,-27390176.143113982,-3112.957900928,678.6397950182763,1756.9472163459995 -721444000.9345,-6641468.986315,47165244.41927496,-27101613.649119288,-3110.423464227,659.9532354986893,1767.7547144489477 -721444328.4072,-7659141.096375001,47375230.089523345,-26519229.78929974,-3104.754602307,622.4913555252156,1789.0026747260376 -721444983.3524,-9688267.323423,47758327.30381838,-25334001.512953274,-3091.045811556,547.3315790976178,1829.9706837742797 -721445638.2977,-11707397.61548,48092155.22576407,-24122635.879276536,-3074.2457125280002,472.08326319148586,1868.7987566407112 -721446293.2429,-13714540.72126,48376743.88161168,-22886570.06755002,-3054.460263733,397.0142500391085,1905.3815422364282 -721446948.1882,-15707782.40552,48612296.45677594,-21627303.307856068,-3031.8183008720002,322.38484287379515,1939.6350553783163 -721447603.1334,-17685299.575829998,48799183.16594529,-20346382.692543525,-3006.4688349119997,248.44421798191144,1971.4971753262346 -721448258.0787,-19645372.520329997,48937932.901753664,-19045388.83283394,-2978.5780064680002,175.4272559311819,2000.9276168983295 -721448913.0239,-21586395.04824,49029222.99340624,-17725921.7323116,-2948.325815216,103.55186884384193,2027.9074068046093 -721449567.9692,-23506882.52197,49073867.2864691,-16389587.027829597,-2915.902755373,33.01688356678142,2052.4379179973685 -721450222.9144,-25405477.56777,49072803.183610074,-15037983.181155842,-2881.506453893,-35.99951402319573,2074.5395273429085 -721450877.8597,-27280953.67813,49027077.73976277,-13672689.532622878,-2845.338434112,-103.34075918174324,2094.2499741651923 -721452187.7502,-30958304.88928,48806293.246607035,-10907191.174855726,-2768.4948944899998,-232.4817748127076,2126.7238398690456 -721453497.6407,-34531754.64875,48421538.17757003,-8104966.991809934,-2686.954241945,-353.59082737011386,2150.4350367080115 -721454807.5312,-37996135.17008,47883686.62805394,-5277032.6000332665,-2602.1988760669997,-466.1805677185172,2166.109467208065 -721456117.4217,-41348126.95525,47204057.134696595,-2433388.4209976364,-2515.562132059,-570.0520863582852,2174.561608134924 -721457427.3122,-44586043.20658,46394066.77686139,417060.332711298,-2428.2005489529997,-665.2451350424609,2176.6411884475747 -721458737.2028,-47709590.26214,45464953.03515625,3266520.889413314,-2341.0843625959997,-751.9855040333523,2173.1909156515007 -721460047.0933,-50719625.084910005,44427563.3821841,6108282.349409867,-2255.001735159,-830.6349449177427,2165.015693884515 -721461356.9838,-53617924.76724,43292206.88644746,8936651.819601394,-2170.572196468,-901.6469384055123,2152.862340577214 -721462666.8743,-56406977.5032,42068559.04071952,11746869.908145072,-2088.265372141,-965.5298591407712,2137.4080561670125 -721463976.7648,-59089799.89401,40765609.746707946,14535015.834453495,-2008.421948185,-1022.817811266989,2119.2556611282275 -721465286.6553,-61669781.76,39391644.90815802,17297909.432052307,-1931.27470331,-1074.0486070230322,2098.9337011328344 -721466596.5458,-64150558.11246,37954252.45375459,20033015.991494186,-1856.968268467,-1119.7479260535933,2076.8998171995427 -721467906.4363,-66535905.53463,36460345.78318648,22738356.713599227,-1785.576825644,-1160.418558191793,2053.546079777156 -721469216.3268,-68829660.08415,34916198.54224527,25412426.830941148,-1717.119436375,-1196.5336466075014,2029.205335687508 -721470526.2173,-71035653.89479999,33327486.215300947,28054122.43360054,-1651.572976746,-1228.5329536850495,2004.1578917394704 -721471836.1078,-73157667.09997,31699331.02298872,30662675.966223765,-1588.88281953,-1256.821345571407,1978.6380924815917 -721473145.9983,-75199392.49646,30036347.761261873,33237600.154540453,-1528.9715005090002,-1281.7688310202484,1952.840512523923 -721474455.8889,-77164410.31622,28342688.83470414,35778639.667402714,-1471.745641644,-1303.7116522501901,1926.9256184424312 -721475765.7794,-79056171.093,26622087.381025836,38285729.82642774,-1417.101400394,-1322.954040655629,1901.0248306910491 -721477075.6699,-80877984.85766001,24877897.849282537,40758961.53652571,-1364.928704187,-1339.7703563638995,1875.2449801336895 -721478385.5604,-82633015.194,23113133.600042723,43198551.68432892,-1315.114490434,-1354.4074123072407,1849.6721815425165 -721479695.4509,-84324276.99521,21330501.447677165,45604818.23288925,-1267.5451497850001,-1367.0868425645967,1824.3751700757875 -721481005.3414,-85954637.00216,19532433.10852385,47978159.383591115,-1222.10833404,-1378.0074232188524,1799.4081536642739 -721482315.2319,-87526816.34952,17721113.67835612,50319036.17105334,-1178.694264019,-1387.3472863481988,1774.8132375145206 -721484935.0129,-90506814.63889001,14066380.224211667,54905470.631287575,-1097.51329344,-1401.9064468469319,1726.8596010945812 -721487554.7939,-93283303.27228,10379761.198487293,59368575.424485944,-1023.2032582429999,-1411.851259296142,1680.6793255277942 -721490174.575,-95873316.46393,6672160.572263703,63713108.435849436,-955.0392552055999,-1418.0542718567242,1636.3455104131504 -721492794.356,-98292088.60319,2952428.663737558,67943932.9671623,-892.3719019419,-1421.2172291420552,1593.8697274191527 -721495414.137,-100553248.42639999,-772237.8543936275,72065885.95735568,-834.62399472,-1421.906020865969,1553.22322533935 -721498033.918,-102669001.0338,-4495977.867693439,76083692.83395815,-781.2848477217999,-1420.5784304534163,1514.3516270856667 -721500653.699,-104650293.6682,-8214012.397527833,80001914.44656199,-731.9037253534,-1417.6060631847902,1477.1850538593405 -721503273.48,-106506963.9281,-11922442.453692403,83824916.10271472,-686.0831811743,-1413.2916402198887,1441.6450558598187 -721505893.2611,-108247871.0757,-15618087.087394528,87556851.703652,-643.4727242222999,-1407.8826413836184,1407.6493121288959 -721508513.0421,-109881011.2307,-19298353.38498724,91201657.96823145,-603.7630161751,-1401.5820849999516,1375.1147761990715 -721511132.8231,-111413618.3013,-22961131.576446623,94763055.45687959,-566.6806746353999,-1394.557066442577,1343.959740595035 -721513752.6041,-112852252.0143,-26604710.161070354,98244553.92479137,-531.9836850988,-1386.945543476903,1314.105151355864 -721516372.3851,-114202874.70820001,-30227706.929895934,101649460.40716782,-499.4573867528,-1378.8617469013877,1285.475403189374 -721518992.1661,-115470918.3346,-33829012.676769406,104980888.9004602,-468.91098238399996,-1370.4005117566421,1257.9987791269984 -721521611.9472,-116661342.9042,-37407745.116741784,108241770.8451461,-440.17451256149997,-1361.6407577363852,1231.6076463879413 -721524231.7282,-117778687.57090001,-40963210.99509337,111434865.8970665,-413.096239263,-1352.64829756714,1206.2384900674974 -721526851.5092,-118827115.3363,-44494874.84077009,114562772.64497459,-387.540383847,-1343.4781116136937,1181.8318387469858 -721529471.2902,-119810452.2224,-48002333.08539532,117627939.01175433,-363.3851723189,-1334.1761977467822,1158.3321221233382 -721534710.8522,-121595675.0508,-54943552.708622634,123579148.46718878,-318.849690131,-1315.3250534501706,1113.849591630173 -721539950.4143,-123159434.0367,-61785547.53788531,129305430.81663512,-278.7368605798,-1296.3341776653037,1072.4169045179078 -721545189.9763,-124523235.1064,-68528051.81694539,134821895.2110907,-242.4305505325,-1277.3716841928915,1033.709332364891 -721550429.5383,-125705649.20879999,-75171541.12041563,140142063.85020214,-209.4224027294,-1258.5552509706313,997.4447764862861 -721555669.1004,-126722816.49949999,-81717007.7683306,145278079.0678036,-179.2897001382,-1239.9665153057222,963.3777348015799 -721560908.6624,-127588848.59120001,-88165800.2783835,150240881.11647138,-151.6783538644,-1221.6611812683047,931.2940202354732 -721566148.2244,-128316152.14400001,-94519507.25883086,155040359.98238227,-126.28971058730001,-1203.6761862570959,901.0062118681386 -721571387.7865,-128915691.1673,-100779873.23271011,159685485.1503895,-102.87024181640001,-1186.034835708435,872.3497851196194 -721576627.3485,-129397201.40259999,-106948737.49549448,164184416.82293338,-81.20341881945,-1168.7505127412749,845.1798352085152 -721581866.9105,-129769366.5868,-113027989.52803752,168544601.19454753,-61.10325981317,-1151.8293793855803,819.3683098113308 -721587106.4726,-130039964.53040001,-119019536.62123485,172772852.496042,-42.409167587899994,-1135.2723563656339,794.801672939363 -721592346.0346,-130215988.7932,-124925280.47473216,176875423.73548675,-24.98176939072,-1119.0765830848377,771.378931069004 -721597585.5966,-130303750.7817,-130747100.29908872,180858067.90304387,-8.699542242309999,-1103.2364979654863,749.0099618238562 -721602825.1587,-130308965.8154,-136486840.87789994,184726091.12013906,6.5439425259120005,-1087.74464201764,727.614096354413 -721608064.7207,-130236826.0738,-142146304.29962385,188484398.93305695,20.84228312514,-1072.5922572401755,707.1189129425084 -721613304.2827,-130092062.78310001,-147727244.35188153,192137536.75026157,34.27811779889,-1057.769733016276,687.4592078170874 -721618543.8448,-129878999.43710001,-153231362.9954579,195689725.306275,46.92467908753,-1043.26693874382,668.5761141313249 -721623783.4068,-129601597.5816,-158660308.28879693,199144891.81448436,58.84709214924,-1029.0734714269481,650.4163456220147 -721629022.9688,-129263496.357,-164015673.4941519,202506697.47871172,70.10346462672,-1015.1788390337568,632.9315452219877 -721634262.5309,-128868046.7878,-169298996.96150595,205778561.79281157,80.74580594017,-1001.5725954565795,616.0777223616763 -721643341.1792,-128056059.1522,-178287254.9409085,211244137.48200664,97.86719953274999,-978.6494315483055,588.2524692564484 -721655219.2786,-126770939.7646,-189739933.67872506,218027145.10067856,118.08294878519999,-949.8832000217085,554.2486623645975 -721672995.6888,-124432314.7482,-206258461.9182159,227458546.47103435,144.3115533834,-909.0251607379452,507.66914562651544 -721690772.099,-121663202.2348,-222072723.76351434,236102239.45549566,166.6592280087,-870.595636469184,465.4886524410865 -721708548.5092,-118525664.2731,-237223268.05706027,244029739.7533785,185.8695236923,-834.3066230872695,426.9853646763125 -721726324.9194,-115070248.96149999,-251745880.15636244,251301182.47008586,202.50488308319999,-799.9093845781788,391.5926345069864 -721744101.3296,-111338716.1178,-265672235.63990682,257967699.55726504,216.9986490112,-767.189424852877,358.8586166458857 -721752989.5347,-109380547.1663,-272420732.50316405,261088074.0688122,223.5514178934,-751.3995131419158,343.3716745632304 -721761877.7398,-107366000.8566,-279030463.9687565,264073194.80417818,229.6901056236,-735.9614722225475,328.4179781310921 -721770765.9449,-105298614.27849999,-285504470.61668444,266927641.24648523,235.4463862529,-720.855969010937,313.96206405160643 -721779654.15,-103181657.8287,-291845627.03467464,269655692.1437127,240.8486707037,-706.0649671179144,299.97165975052616 -721788542.3551,-101018162.34189999,-298056652.863678,272261352.21461844,245.9225150229,-691.5716203135951,286.4173214551958 -721797430.5602,-98810942.89231001,-304140122.93855315,274748375.87831885,250.69096840970002,-677.3601751189213,273.2721211463759 -721806318.7653,-96562619.68703,-310098476.59261215,277120288.35317016,255.1748713543,-663.4158817848602,260.51137459199026 -721815206.9704,-94275636.58802,-315934026.22624224,279380404.5733155,259.3931118197,-649.7249130085961,248.1124044909496 -721824095.1755,-91952277.40416001,-321648965.1583161,281531846.03836936,263.3628467153,-636.2742899462146,236.0543332815767 -721832983.3806,-89594680.42402,-327245374.8683754,283577556.0015431,267.099693454,-623.051814887735,224.3179016693383 -721841871.5857,-87204851.34124,-332725231.6617062,285520313.12752193,270.6178963675,-610.0460099020748,212.88530896447134 -721850759.7908,-84784674.79884,-338090412.8152837,287362743.81744385,273.9304717748,-597.2460607866707,201.7400721524258 -721855203.8934,-83563764.64829001,-340730561.00131977,288247118.62962747,275.5134125432,-590.9200715407075,196.2703905827716 -721857425.9446,-82950697.89819,-342040119.28670037,288680227.67947876,276.2871662122,-587.7750332451263,193.5604822820356 -721858536.9703,-82643523.01013999,-342692281.04881376,288894528.6754916,276.66968827830004,-586.2069374560866,192.21166442473856 -721859092.4831,-82489776.59441999,-343017709.0137396,289001117.77348006,276.8598697351,-585.4239872944576,191.53877767044895 -721859370.2395,-82412863.81827,-343180259.9448367,289054272.21875536,276.9546916975,-585.0327856401474,191.20271336203038 -721859509.1177,-82374397.55987,-343261494.6696791,289080814.4462054,277.0020356275,-584.837253044249,191.03477579145266 -721859578.5568,-82355161.96568,-343302101.8494938,289094076.8147274,277.02569084739997,-584.739503789003,190.9508306294188 -721859647.9959,-82335924.72928,-343342702.24214053,289107333.3547037,277.04933491040003,-584.6417658892676,190.86690120735378 -721859786.8741,-82297445.3332,-343423882.6691525,289133828.95390433,277.0965895854,-584.4463241370784,190.69908955638567 -721860064.6305,-82220466.86858,-343586162.11109716,289186750.25793254,277.1909652721,-584.0555767020676,190.36365484678942 -721860620.1433,-82066431.42255,-343910395.5229449,289292313.5327758,277.3791831051,-583.2746251111757,189.69353833878523 -721861731.169,-81758047.84290001,-344557561.8638978,289502324.69751835,277.75349346810003,-581.7148870905644,188.35630535268422 -721863953.2203,-81140040.89687,-345846703.7918297,289917900.96922666,278.4936831497,-578.604008452828,185.69374734977967 -721868397.3228,-79899154.41692,-348404312.9881658,290731391.61400986,279.9408886916,-572.4161414252691,180.41553821509802 -721877285.5279,-77398565.67758,-353437523.2931037,292288680.3504975,282.7068383664,-560.172074356245,170.04113501819387 -721886173.733,-74874126.50831,-358362660.47055924,293754801.31628364,285.3091248247,-548.0964165209251,159.89922602965288 -721895061.9381,-72327253.24768,-363181184.6766632,295131769.1882973,287.75625784289997,-536.1809818363561,149.97829052895514 -721903950.1432,-69759289.59127,-367894485.181761,296421499.62448716,290.0560845718,-524.4180006409644,140.26755696956957 -721912838.3483,-67171512.20691,-372503883.9362135,297625815.63720644,292.21584978460004,-512.8000896525458,130.75693994535465 -721921726.5534,-64565135.84509,-377010638.88109124,298746453.4342912,294.2422494667,-501.3202244570007,121.4369835530657 -721939502.9636,-59301163.192499995,-385720947.29982626,300743236.9650724,297.9192735999,-478.74817820142965,103.33407518275502 -721957279.3738,-53976018.73325,-394034305.3624308,302424197.17745346,301.13144187340004,-456.65192936915093,85.89395313308076 -721975055.784,-48597618.983449996,-401958759.6125766,303800594.07175547,303.9168400654,-434.985857911819,69.05901036721949 -721992832.1942,-43173251.40152,-409501579.7227587,304882720.28738487,306.3082985601,-413.7080906690427,52.77785779861023 -722010608.6044,-37709660.757539995,-416669320.6245896,305680003.5979398,308.3341593549,-392.78001398871027,37.004448857946 -722028385.0146,-32213123.13601,-423467876.6794959,306201095.234588,310.01890426849997,-372.16585571662483,21.697350080080383 -722046161.4248,-26689509.88171,-429902528.8983578,306453946.28887564,311.3836687912,-351.8323228030139,6.819128329016095 -722063937.835,-21144343.11148,-435977986.06957155,306445874.029987,312.4466680913,-331.74828391933613,-7.664167585786714 -722070299.6065,-19155622.83502,-438065790.16256195,306380890.7910847,312.7568302501,-324.61564820822383,-12.757438986285365 -722070299.6065,-19155622.97826,-438065790.1387844,306380890.88715416,312.7568297908,-324.61564863224226,-12.757438478294873 -722084690.9104,-14650327.42005,-442621873.8327886,306115306.6133672,313.3266460456,-308.57785367797385,-24.11417221606864 -722104209.326,-8529382.239142,-448434103.6612913,305497055.9242625,313.81717068800003,-287.0207370444785,-39.172653460699195 -722123727.7416,-2401928.504359,-453827506.6109022,304588509.54201317,313.9957454103,-265.6562200395897,-53.86535204626797 -722143246.1572,3726064.834013,-458805521.5835624,303396502.4591582,313.87423826319997,-244.45173979634848,-68.22301870540717 -722162764.5729,9848837.274285,-463370966.4625368,301927294.79325724,313.462172226,-223.37618743416007,-82.27385832784704 -722182282.9885,15960792.88671,-467526064.1638374,300186618.4858598,312.7669277706,-202.3996633005127,-96.04384570978885 -722201801.4041,22056460.28447,-471272463.96741146,298179717.95984685,311.79390567229996,-181.49325587221466,-109.55699772727652 -722221319.8197,28130455.23243,-474611258.80219364,295911386.02132267,310.5466528786,-160.62883510660458,-122.83561064435823 -722240838.2353,34177445.435,-477542998.58813304,293385995.3693099,309.0269588501,-139.77885880129293,-135.90046762895915 -722260356.651,40192116.94792,-480067699.8846963,290607526.30298364,307.2349222295,-118.91618741969822,-148.7710216487446 -722270115.8588,43185669.57891,-481177272.00703466,289124529.9671521,306.2363546883,-108.47167525634958,-155.13919087433223 -722274995.4627,44678707.66145,-481693819.3593788,288359778.0082196,305.7112985582,-103.24465623041439,-158.30746559408237 -722277435.2646,45424255.41694,-481942526.16824573,287971610.8172222,305.44230529920003,-100.62977238297978,-159.88776819351682 -722278655.1656,45796781.86919,-482064486.8528133,287776082.1317856,305.306189281,-99.32196391193297,-160.6769753294542 -722279265.1161,45982982.66252,-482124868.8830086,287677956.8514503,305.23772601810003,-98.66796516777958,-161.07134466084776 -722279570.0913,46076067.378879994,-482154910.3031618,287628804.01848555,305.2033930211,-98.34094180952465,-161.2684709923675 -722279722.579,46122605.807959996,-482169893.6123625,287604205.0589907,305.1862011746,-98.17742408890135,-161.36701960249232 -722279798.8228,46145874.03916,-482177375.9164794,287591899.94410026,305.1775989135,-98.0956637130475,-161.41629027200398 -722279875.0666,46169141.614319995,-482184851.986857,287579591.0727241,305.1689924269,-98.01390232441628,-161.46555851929858 -722280027.5542,46215674.795159996,-482199785.4259492,287554962.0612914,305.15176677610003,-97.85037650152174,-161.56408775149143 -722280332.5295,46308733.27031,-482229577.49565595,287505658.968668,305.11726475759997,-97.52331263179133,-161.76111719307605 -722280942.4799,46494818.602239996,-482288862.38331765,287406872.545538,305.0480577991,-96.86913563710169,-162.15506020825094 -722282162.3809,46866862.2149,-482406235.0107418,287208579.07697934,304.90883175970004,-95.56058175277033,-162.9424845555063 -722284602.1829,47610436.60909,-482636190.5162578,286809112.2668701,304.6271276207,-92.94265140288388,-164.5155007809902 -722289481.7868,49095496.99419,-483076932.84172773,285998679.819768,304.05068122119997,-87.70331622537668,-167.65431677250015 -722299240.9946,52056966.36837,-483881658.53792477,284331980.8457604,302.8453757631,-77.20927201295022,-173.90397948198319 -722318759.4102,57942896.18991,-485183291.99816114,280816471.7287321,300.2226919541,-56.14782208413959,-186.29843764007632 -722338277.8258,63774833.295930006,-486072706.7831418,277060305.575676,297.3116608385,-34.96572718608426,-198.56600844434095 -722357796.2415,69547072.20531,-486547277.0661493,273065812.0511526,294.1040545555,-13.635109360835798,-210.72165219283292 -722377314.6571,75253729.14459,-486603825.95102185,268835034.3197868,290.5898135079,7.872657255934882,-222.77978336767967 -722396833.0727,80888705.08522001,-486238608.6083292,264369738.67669258,286.7569167303,29.587184321711945,-234.7543754060013 -722416351.4883,86445645.8705,-485447290.440685,259671422.12192017,282.5912103824,51.53933781568034,-246.6590656744816 -722435869.9039,91917898.43348001,-484224919.6812577,254741317.8928912,278.07618500980004,73.76154157306368,-258.5072622478011 -722455388.3196,97298462.33757,-482565893.75132877,249580398.83822984,273.192687193,96.28813164747757,-270.3122574501814 -722488234.9164,106125437.6632,-478770489.65868837,240376145.71034217,264.07963576870003,134.98708335537793,-290.1177103531217 -722488234.9164,106125439.2443,-478770491.2787722,240376146.03315213,264.0796329271,134.9870877032027,-290.11771164167124 -722502996.5918,109990874.6125,-476647089.7855806,236027902.59178472,259.5901816488,152.74442720578753,-299.0080745488526 -722519199.9842,114155172.75129999,-474012255.6854354,231103884.1334359,254.3585088857,172.5288235247155,-308.76924835735923 -722535403.3766,118231989.7988,-471054184.607121,226021626.34341386,248.78858514310002,192.64672492004644,-318.54111729222774 -722551606.769,122215655.6916,-467767229.611839,220780886.1092681,242.8565124193,213.12859610565707,-328.3323756554836 -722567810.1614,126100085.1898,-464145225.91873616,215381275.3104577,236.5348331869,234.00798117218943,-338.15225212158055 -722584013.5538,129878714.3611,-460181436.037388,209822250.81502485,229.791776732,255.3221490522319,-348.0106845799372 -722600216.9462,133544423.0369,-455868482.9302642,204103101.2137754,222.5902687532,277.1129295140419,-357.9185499021826 -722616420.3386,137089438.6968,-451198267.5272304,198222929.22288758,214.8866082571,299.4278268758035,-367.88797386043 -722624522.0348,138814050.2039,-448726433.15642595,195222122.97954896,210.8305724645,310.798579184877,-372.90000309354775 -722632623.731,140505215.3291,-446161865.1894645,192180628.18572083,206.6286678237,322.32154182619155,-377.9327587042861 -722640725.4272,142161719.4678,-443503297.27961266,189098268.59493336,202.2726521847,334.00502766150987,-382.9883266728708 -722648827.1234,143782277.7542,-440749392.7522203,185974850.30851203,197.75338953669998,345.8581175889561,-388.0689870092534 -722656928.8196,145365527.1157,-437898737.722865,182810160.02828136,193.06070668950002,357.89078883897326,-393.177249263922 -722665030.5158,146910017.3118,-434949833.3499181,179603963.05875117,188.18321761410002,370.11407585624795,-398.31589627730847 -722673132.212,148414200.2228,-431901086.4341809,176356000.87145048,183.1081089313,382.54027137276364,-403.488037936168 -722681233.9082,149876417.2606,-428750798.2417034,173065988.19737053,177.82087455189998,395.18318239045936,-408.697177969532 -722689335.6044,151294884.3856,-425497150.9863489,169733609.51539668,172.3049849619,408.0584597790273,-413.9472974449749 -722693386.4525,151987115.5568,-423830963.09168327,168051425.0156347,169.4554755643,414.58873407662236,-416.589124391375 -722695411.8766,152328870.3186,-422987916.6984604,167206313.67389005,168.0067077775,417.87809045850275,-417.9144995630714 -722696424.5886,152498643.1693,-422563890.9522515,166782750.56126446,167.2761704893,419.5289655059258,-418.57833869672845 -722696930.9446,152583251.6356,-422351250.6028298,166570716.80215833,166.9093440635,420.355970650469,-418.9105508281223 -722697184.1226,152625486.1484,-422244773.32701194,166464636.82858652,166.7255389327,420.76986747124965,-419.0767306301261 -722697310.7116,152646585.9457,-422191495.3847256,166411581.0628575,166.633538076,420.9769147393593,-419.15983904021545 -722697374.0061,152657131.4761,-422164846.58395416,166385049.2345779,166.5875130352,421.0804631250567,-419.20139788185406 -722697437.3006,152667674.0929,-422138191.22858316,166358514.77574298,166.5414715714,421.18402802594,-419.2429598183394 -722697563.8896,152688750.581,-422084860.84978306,166305437.96567217,166.44933933110002,421.3912074159866,-419.3260929864168 -722697817.0676,152730868.5476,-421978121.39112514,166199252.77026287,166.2648772801,421.80576484813076,-419.4923965787618 -722698323.4236,152814964.20839998,-421764327.4354138,165986756.0347344,165.8951603633,422.6356767249879,-419.8251533979593 -722699336.1357,152982592.5598,-421335477.47963953,165561256.8292145,165.1525348159,424.2987079389531,-420.491270499592 -722701361.5597,153315582.1778,-420472714.11882687,164708232.59984872,163.6543502353,427.6377584744103,-421.8259586881478 -722705412.4078,153972368.8616,-418726808.96261954,162994057.19664496,160.6048639959,434.369128217932,-424.5054842772192 -722713514.104,155248134.1214,-415152445.6641013,159532998.61078665,154.28148591160002,448.05635851560817,-429.9080112933141 -722721615.8002,156471375.9624,-411465901.73492426,156027915.94370085,147.6333892303,462.0675465142012,-435.374668087263 -722729717.4964,157639323.5064,-407664415.5178297,152478255.74150145,140.62492280610002,476.437708077857,-440.91408163829414 -722737819.1926,158748889.2825,-403744910.41136044,148883387.87639993,133.2133023599,491.20997820789273,-446.5366197357188 -722745110.7192,159694723.6022,-400113592.4483641,145608759.12203634,126.15547685969999,504.89333275100074,-451.67831500063966 -722752402.2458,160587615.6844,-396381007.08285016,142296324.03106382,118.683323453,518.9961122188292,-456.9085810795688 -722758964.6197,161343302.6383,-392932394.8987323,139282237.35373417,111.5583828683,532.0996442622845,-461.7025441799469 -722764870.7563,161982346.5614,-389753975.7038331,136542421.0163797,104.780229621,544.2764007050184,-466.0972836574945 -722770776.8928,162580227.3026,-386502427.5786477,133776399.21718405,97.6115261516,556.8737939450067,-470.57831625542576 -722776092.4157,163081105.2046,-383511298.69168544,131264126.44819072,90.78402300345,568.6294873251467,-474.6946149160783 -722776283.3955,163098419.0192,-383402660.834205,131173455.08615912,90.53154029184,569.0600510742165,-474.8441031802806 -722776283.3955,163098418.1678,-383402659.1324307,131173454.56110379,90.53153545021,569.0600289111242,-474.8441004716318 -722780067.3063,163431376.0065,-381233082.22422355,129371051.85418922,85.4191444617,577.7195352642361,-477.83033401587676 -722784735.4109,163814820.5381,-378510597.4595344,127131762.6635524,78.80427631976,588.7731450244244,-481.58253700668104 -722789403.5154,164166524.3522,-375735434.78898966,124874767.99290338,71.81339931891,600.3018085767335,-485.4174086774465 -722794071.6199,164484633.5926,-372905178.8398797,122599662.84800467,64.40345057363001,612.393906603397,-489.34315486953506 -722796405.6722,164630453.4938,-371468511.29758555,121455181.79627211,60.52657742098,618.6856094233901,-491.3426474715098 -722798739.7244,164767082.3257,-370016945.0991166,120306004.03837469,56.52675015306,625.1633113961806,-493.3678084733044 -722801073.7767,164894225.5921,-368550023.6692174,119152068.69965196,52.39751625329,631.8466877024238,-495.4194373779401 -722803407.829,165011573.7019,-367067241.2378274,117993313.25182402,48.13242024001,638.7582896165085,-497.498137700485 -722805741.8812,165118802.1733,-365568035.5937807,116829674.07890749,43.725195937929996,645.9240130978375,-499.60421910678906 -722808075.9335,165215572.3805,-364051779.6639231,115661087.3097371,39.170045686289996,653.373636699882,-501.73756497033645 -722810409.9858,165301533.08580002,-362517771.75401336,114487490.01093581,34.46203873095,661.141430667197,-503.8974541383691 -722812744.038,165376323.0804,-360965224.28810436,113308821.86258057,29.59767171874,669.2668324955175,-506.0823224746566 -722815078.0903,165439575.37579998,-359393250.9076606,112125027.47844256,24.57564760517,677.7951724454022,-508.2894459464118 -722817412.1425,165490923.53800002,-357800851.8521558,110936059.57919939,19.397945210339998,686.7784125695183,-510.5145229039761 -722820005.5339,165533582.3356,-356006184.9249557,109608874.5768097,13.4707226426,697.36567596985,-512.9999834598077 -722822598.9253,165560650.4438,-354183138.89528805,108275238.88273466,7.378780865063,708.680577044967,-515.4866431684364 -722823895.6211,165568213.2053,-353260353.22420764,107606006.17909768,4.280823599255,714.6431673554549,-516.7248270668243 -722825192.3168,165571740.53730002,-352329693.4655793,106935172.30559179,1.155712889849,720.8278432385621,-517.9557118372478 -722826489.0125,165571201.8616,-351390862.1175029,106262748.97646329,-1.9891442688799998,727.2493873594938,-519.175731083305 -722827785.7082,165566577.27989998,-350443542.1790416,105588752.9224947,-5.144642846453,733.9230678144888,-520.3807017787201 -722829082.4039,165557859.9357,-349487396.6329512,104913206.73814915,-8.299728637827,740.8644517976169,-521.5657506265909 -722830379.0996,165545058.713,-348522068.2189981,104236139.8242191,-11.441134359569999,748.0891483980387,-522.7252408489614 -722831675.7953,165528201.2774,-347547179.5861434,103557589.42298764,-14.55311253389,755.6124657949625,-523.8527036931189 -722832972.491,165507337.457,-346562333.9574196,102877601.73487821,-17.617179228319998,763.4489683948698,-524.9407804713243 -722834269.1867,165482542.9583,-345567116.4547921,102196233.10544273,-20.6118889394,771.6119211579378,-525.981182973709 -722835565.8824,165453923.30560002,-344561096.2009549,101513551.23668358,-23.51266725379,780.112608958276,-526.9646822334706 -722836862.5781,165421617.96400002,-343543829.39929444,100829636.39423814,-26.2917359956,788.9595292392871,-527.8811376907399 -722838159.2738,165385804.47140002,-342514863.53822666,100144582.54219407,-28.91817206912,798.1574634728818,-528.7195805399947 -722839455.9695,165346702.3843,-341473742.8658735,99458498.32655057,-31.358146847359997,807.7064488800747,-529.4683658994866 -722840752.6652,165304576.7685,-340420015.2419962,98771507.80954772,-33.575394685119996,817.6006912242273,-530.1154077195974 -722841401.013,165282476.1044,-339888285.5244151,98427715.77348027,-34.58867300895,822.673610802744,-530.3969560919534 -722842049.3609,165259740.9128,-339353240.4090263,98083750.83975866,-35.53195480627,827.8274829597365,-530.648507256507 -722842697.7087,165236418.1412,-338814828.2994298,97739632.93534803,-36.4004017939,833.0594765944415,-530.8685887954866 -722843346.0566,165212557.8707,-338272999.60932547,97395382.92861547,-37.18921798681,838.3662158059424,-531.0557798471298 -722843994.4044,165188213.2612,-337727707.1237959,97051022.58642314,-37.89369909493,843.7437619346921,-531.2087292979891 -722844642.7523,165163440.4781,-337178906.3666087,96706574.5236188,-38.50928634772,849.1876024943443,-531.3261750275634 -722845291.1001,165138298.58,-336626555.9745114,96362062.13916539,-39.03162372628,854.6926472910226,-531.406963834669 -722846011.4866,165110005.47890002,-336008624.22326285,95979224.50259739,-39.49766332136,860.8742390456878,-531.452495931532 -722846731.8731,165081421.493,-335386217.1909869,95596371.1839274,-39.8383929328,867.1158086548648,-531.4503251262256 -722847452.2596,165052638.5687,-334759295.003462,95213536.89780018,-40.04927006121,873.4079665573561,-531.399525360218 -722848252.6891,165020539.8188,-334057379.55567163,94788230.71241258,-40.12663547613,880.4462264470785,-531.2852864417108 -722849142.0551,164984886.95250002,-333270847.4353879,94315806.38225305,-40.01408457807,888.3069342043469,-531.0865571266232 -722850031.4212,164949428.47169998,-332477313.0271545,93843592.35235018,-39.689091778089995,896.1892458554715,-530.812472311812 -722850920.7872,164914354.0983,-331676767.1113237,93371655.23427108,-39.15028339256,904.0705664358335,-530.4640885047442 -722851365.4702,164897020.3407,-331273867.51577073,93135810.99189255,-38.800930650400005,908.0036275184782,-530.2626031824784 -722851810.1533,164879853.70450002,-330869220.83780855,92900060.31348673,-38.39871508257,911.9277340742557,-530.0433351059004 -722852254.8363,164862877.586,-330462831.7073481,92664411.02472582,-37.944161253770005,915.8399731289733,-529.806661486091 -722852477.1778,164854468.211,-330258985.5228805,92546626.79869427,-37.6974645568,917.7907370509878,-529.6819299488989 -722852699.5193,164846115.11380002,-330054706.0461741,92428870.77213052,-37.43795135507,919.7374514436843,-529.5530123193744 -722852921.8608,164837821.1318,-329849994.21726954,92311143.86897835,-37.16573126476,921.6797600683327,-529.419970338595 -722853144.2023,164829589.07720003,-329644851.0550213,92193446.99907914,-36.88092346557,923.6173096888873,-529.2828688249176 -722853255.3731,164825497.1437,-329542118.0644233,92134610.10682729,-36.73383898145,924.584190407292,-529.2128168168018 -722853366.5439,164821421.7341,-329439277.6578023,92075781.05729996,-36.58365653196,925.5497504970233,-529.1417755911145 -722853477.7146,164817363.19189999,-329336329.9844577,92016959.96015626,-36.430393653370004,926.5139468442869,-529.069754084567 -722853533.3,164815340.3529,-329284815.9704893,91987552.42763598,-36.352612690920004,926.9955202172293,-529.0333785687087 -722853561.0927,164814330.56,-329259048.92788804,91972849.4213259,-36.31343583503,927.2361733678702,-529.0151001233228 -722853574.989,164813826.0726,-329246162.89863014,91965498.10883334,-36.29377594106,927.356466268078,-529.0059382922486 -722853581.9372,164813573.93129998,-329239719.2572184,91961822.50037354,-36.283928143640004,927.4166042631028,-529.001351732611 -722853585.4113,164813447.8864,-329236497.2798712,91959984.70812203,-36.278999784410004,927.4466711421766,-528.9990570427947 -722853588.8854,164813321.8586,-329233275.19803786,91958146.92382342,-36.274068452230004,927.4767366073633,-528.9967614133059 -722853592.3595,164813195.8479,-329230053.0117145,91956309.14748693,-36.26913414766,927.5068006573874,-528.9944648445725 -722853595.8335,164813069.8544,-329226830.72099286,91954471.3791523,-36.26419687129,927.5368632910925,-528.9921673367469 -722853602.7817,164812817.91889998,-329220385.8261751,91950795.86640006,-36.25431340533,927.5969843036073,-528.9875695049512 -722853616.6781,164812314.254,-329207494.7835725,91943444.93684788,-36.2345108373,927.7172092728565,-528.9783625848469 -722853644.4708,164811307.7514,-329181707.6869376,91928743.4620484,-36.19476328729,927.9575907033318,-528.9599037849302 -722853700.0561,164809298.07349998,-329130113.4576489,91899342.05570516,-36.11469958256,928.4380772129273,-528.9228068612905 -722853811.2269,164805292.1739,-329026844.9263947,91840545.46227941,-35.95230628159,929.3979263964525,-528.8478998926882 -722853922.3976,164801304.4951,-328923469.7726735,91781757.2488749,-35.786908322959995,930.3562421877593,-528.7720501349271 -722854033.5684,164797335.3698,-328819988.1694037,91722977.51969597,-35.61852602721,931.3129829386122,-528.6952673829217 -722854255.9099,164789454.0992,-328612706.3297547,91605443.92531863,-35.27289239066,933.2215743750062,-528.5389428779835 -722854478.2514,164781650.9792,-328405000.8801002,91487945.49132493,-34.91557873419001,935.1233744093303,-528.37900796746 -722854700.5929,164773928.5867,-328196873.3660963,91370483.01109067,-34.54676669674,937.0180625945401,-528.2155466830345 -722854922.9345,164766289.4571,-327988325.40403044,91253057.2591317,-34.16664598896,938.9053247294862,-528.0486454032011 -722855367.6175,164751270.912,-327569974.9450331,91018318.94013548,-33.37327619068,942.6563473580175,-527.7048794151997 -722855812.3005,164736614.7379,-327149963.7889596,90783736.33278866,-32.53713817029,946.3740666719149,-527.3484435183731 -722856256.9835,164722339.5614,-326728307.2511037,90549314.90247847,-31.66001183255,950.0562279498579,-526.9801011190672 -722856701.6666,164708463.1946,-326305021.620917,90315059.76926345,-30.74377800256,953.7007063653591,-526.6006414148665 -722857146.3496,164695002.59300002,-325880124.10228133,90080975.69731286,-29.790407686160002,957.305514784208,-526.21087517131 -722858035.7156,164669392.0027,-325025566.4077175,89613337.964648,-27.780524990729997,964.3888998228247,-525.4037481566231 -722858925.0817,164645624.9932,-324164787.64391476,89146432.41908987,-25.64750239571,971.2934583154084,-524.565473867277 -722859814.4477,164623803.1859,-323297951.6787004,88680283.72755112,-23.40918171032,978.0087583745849,-523.7028772193978 -722860703.8138,164604012.1591,-322425230.5361486,88214910.50380307,-21.08373773863,984.5268911959263,-522.822724977788 -722861593.1798,164586321.3099,-321546802.1658258,87750325.41322108,-18.68932724058,990.8424279434679,-521.9316080515586 -722862482.5459,164570784.0147,-320662848.28052986,87286535.37622029,-16.24376931814,996.9523124075101,-521.0358389622859 -722863371.9119,164557438.0544,-319773552.3176475,86823541.85360473,-13.76426629743,1002.8557007434922,-520.1413668363302 -722864261.278,164546306.27830002,-318879097.5432137,86361341.20475224,-11.26717149187,1008.5537617176108,-519.2537111989933 -722865150.644,164537397.4366,-317979665.3773037,85899925.08836621,-8.767805280402,1014.0494487225172,-518.3779142918639 -722866040.0101,164530707.16640002,-317075433.91181976,85439280.9029032,-6.280320464122,1019.3472572624273,-517.5185113204943 -722866929.3761,164526219.07029998,-316166576.6447312,84979392.24411607,-3.817613966597,1024.452977974702,-516.6795169272445 -722867818.7422,164523905.858,-315253261.4387652,84520239.36906466,-1.391280426087,1029.3734544374379,-515.8644257393103 -722869597.4743,164525647.4433,-313413895.68055147,83604048.03623244,3.3124286568290002,1038.6899496255223,-514.3174146733422 -722871376.2064,164535539.68580002,-311558539.96494913,82690499.14319521,7.763748494954,1047.364259219329,-512.8957186549341 -722873154.9385,164553088.1165,-309688273.0857315,81779358.65547326,11.914416711740001,1055.4680491519987,-511.61082394752486 -722874933.6706,164577727.28399998,-307804045.98692816,80870377.2518642,15.73241613378,1063.072801813899,-510.46863415778813 -722876712.4027,164608847.10459998,-305906684.9228943,79963299.18696254,19.19909362931,1070.2468438745127,-509.47066271472147 -722878491.1348,164645814.08839998,-303996898.8471029,79057869.10471006,22.30632911136,1077.0535190835935,-508.6151300913148 -722880269.8669,164687987.7475,-302075289.22742295,78153837.03101578,25.05397790931,1083.5502439100574,-507.8979069306586 -722882048.599,164734732.7824,-300142360.9430435,77250961.84248686,27.44769012602,1089.7881953878564,-507.3132845289389 -722883827.3311,164785427.7484,-298198533.33421403,76349013.5151492,29.497130229659998,1095.8124197529478,-506.85457907124203 -722885606.0632,164839470.8943,-296244150.8094748,75447774.4319505,31.21457293113,1101.6621982090887,-506.51458900838855 -722887384.7953,164896283.8046,-294279492.6678066,74547039.98961833,32.61382810646,1107.37155101516,-506.2859298866202 -722889163.5274,164955313.384,-292304781.95423317,73646618.70195083,33.70943969314,1112.9697988889695,-506.1612710735096 -722890942.2595,165016032.6152,-290320193.32193804,72746331.95015359,34.51610487183,1118.4821287287787,-506.1334964424135 -722892720.9916,165077940.4454,-288325859.89917254,71846013.50185424,35.04826533382,1123.9301326560133,-506.19580768525304 -722894499.7237,165140561.0687,-286321879.2325502,70945508.88680825,35.31983013872,1129.332303111915,-506.34178534780943 -722896278.4558,165203442.8082,-284308318.4003178,70044674.69172671,35.343997167830004,1134.7044764172144,-506.5654194418221 -722898057.1879,165266156.7466,-282285218.3799145,69143377.82135272,35.13314708393,1140.0602233279078,-506.8611187011641 -722899835.92,165328295.2189,-280252597.7709738,68241494.75643492,34.69878955371,1145.41118867967,-507.2237052926459 -722901614.6521,165389470.2435,-278210455.9520146,67338910.8305,34.05154641284,1150.7673840679374,-507.6483999807746 -722903393.3842,165449311.9474,-276158775.75774795,66435519.53861139,33.20116022407,1156.1374384106687,-508.1308013790283 -722905172.1163,165507467.02310002,-274097525.7432049,65531221.88630561,32.156519714279995,1161.528811461497,-508.6668618756693 -722908729.5805,165617378.0292,-269946130.2629435,63719545.4819165,29.51598411274,1172.4005671692257,-509.88538471078135 -722912287.0447,165716653.38259998,-265755798.0156473,61903217.965981156,26.185473348960002,1183.425176618455,-511.27768935719166 -722915844.5089,165802920.8499,-261525924.3449098,60081661.74220207,22.209566418829997,1194.6355224383692,-512.8215492989721 -722919401.9731,165873949.39880002,-257255800.50796735,58254372.14035301,17.62329338096,1206.0576299665477,-514.4980819259804 -722922959.4373,165927617.5365,-252944634.320779,56420906.6377167,12.45340230958,1217.7126623688364,-516.2911369478859 -722926516.9015,165961885.8315,-248591564.77237657,54580876.084490836,6.719447355566,1229.6183546223647,-518.186779489747 -722930074.3657,165974772.99130002,-244195672.27259457,52733937.61671133,0.4346940455406,1241.7900493773673,-520.1728576020338 -722933631.8299,165964334.83949998,-239755985.75842926,50879788.97227202,-6.393144864111,1254.2414495725795,-522.2386409997628 -722937189.2941,165928645.6518,-235271487.49530315,49018163.990919195,-13.76132421639,1266.985168729474,-524.3745182900925 -722940746.7583,165865781.32189998,-230741116.19705728,47148829.09825884,-21.671612231810002,1280.0331358242315,-526.5717410479392 -722944304.2225,165773803.94790003,-226163768.90144387,45271580.63744983,-30.12994932779,1293.396894839572,-528.8222047247907 -722947861.6867,165650747.4465,-221538301.92450288,43386242.92365134,-39.14620464866999,1307.087827298217,-531.1182578856136 -722951419.1509,165494603.88430002,-216863531.12942585,41492666.940122165,-48.73401783253,1321.1173177448768,-533.4525325811771 -722954976.6151,165303310.23110002,-212138231.68712774,39590729.60760663,-58.91071625175999,1335.496876180092,-535.817789755224 -722958534.0793,165074735.2873,-207361137.46250817,37680333.58621714,-69.69730043039999,1350.2382272366074,-538.2067744079982 -722962091.5435,164806666.5482,-202530940.1324385,35761407.581191525,-81.11849256054,1365.3533726579867,-540.6120758644525 -722969206.4719,164142710.1575,-192705785.43978855,31897815.9690421,-105.9829074336,1396.7546593579364,-545.4403715871049 -722976321.4003,163291591.209,-182651414.75854617,27999948.363568194,-133.78176436889999,1429.8033177417833,-550.2348886467977 -722983436.3287,162231230.82729998,-172355727.28373095,24068320.37708062,-164.86554280800001,1464.6068560336403,-554.9157714507958 -722985830.2148,161823165.23340002,-168835153.4286483,22738073.64622259,-176.136060802,1476.7307468469103,-556.4486308353411 -722985830.2148,161823157.07799998,-168835156.34351417,22738075.328466296,-176.1360283418,1476.7307410772805,-556.4486606413891 -722990188.9476,161008773.65710002,-162349421.20030048,20306705.24932079,-197.7996539394,1499.3618468793866,-559.16436349786 -722995092.6107,159975273.79119998,-154932850.48737085,17557550.976441547,-224.0726044735,1525.7075098632156,-562.0714927912139 -722999996.2737,158807604.513,-147384723.48931363,14794620.651460849,-252.5588926351,1553.0237500418057,-564.7740570209908 -723004899.9368,157494338.5225,-139700201.72257036,12019058.275150873,-283.4984162504,1581.3421723512301,-567.2127312294899 -723009803.5998,156022781.471,-131874303.41130602,9232328.395473719,-317.16901900659997,1610.6891719853293,-569.3156316331522 -723014707.2629,154378770.30929998,-123901936.26018545,6436285.293156646,-353.89313782389996,1641.0828171823944,-570.9950641107234 -723019610.926,152546435.3401,-115777948.48030601,3633260.3524244204,-394.0458314479,1672.5284570077772,-572.1433681431402 -723024514.589,150507919.3829,-107497205.35591342,826172.431454435,-438.0644404029,1705.0125321400494,-572.6275685021988 -723029418.2521,148243044.7015,-99054702.29781066,-1981331.6570149735,-486.46016610839996,1738.4938549840376,-572.282450261541 -723034321.9151,145728918.176,-90445728.6310441,-4784698.037462767,-539.8318138727,1772.8912907134586,-570.9015485785251 -723039770.4296,142611272.6677,-80679901.06815083,-7887728.721307855,-605.8280750286999,1812.0140545758381,-567.8345904761163 -723042494.6869,140912315.967,-75716529.72188339,-9431685.905065168,-641.8049463274999,1831.843735452961,-565.5630998955185 -723045218.9441,139112393.52650002,-70698973.74501806,-10968679.855823666,-679.9798806091,1851.7832441315984,-562.7102531696758 -723047943.2014,137205278.9707,-65627023.90610291,-12497021.446492746,-720.5303996192,1871.7639729027687,-559.1969129711879 -723050667.4586,135184240.75349998,-60500680.27678189,-14014790.63621112,-763.6500079878,1891.7003013363608,-554.9324143388011 -723053391.7159,133041997.2814,-55320203.50198357,-15519802.669687808,-809.5491744466,1911.4858882130047,-549.8127666434152 -723056115.9732,130770669.5714,-50086177.12430591,-17009569.048116446,-858.4561101232,1930.9891665586301,-543.718588015117 -723058840.2304,128361732.2148,-44799583.59962402,-18481252.41568602,-910.6171914831999,1950.047879557635,-536.5127496083619 -723061564.4877,125805963.9714,-39461896.50997145,-19931614.716355205,-966.2968223597001,1968.4624784983823,-528.0377155253367 -723064288.7449,123093399.72479999,-34075192.754436016,-21356957.572226282,-1025.776427163,1985.9881779032037,-518.1125829330837 -723067013.0022,120213286.8932,-28642288.309416458,-22753054.30212407,-1089.352167649,2002.3254655688477,-506.52985655540454 -723069737.2594,117154050.5126,-23166902.1484887,-24115072.91364023,-1157.330805629,2017.108868317431,-493.05204172098746 -723072461.5167,113903272.74,-17653853.403122514,-25437489.638824075,-1230.022945534,2029.8938472575403,-477.4082240342392 -723075185.7739,110447695.6852,-12109296.7370023,-26713993.535544384,-1307.732640709,2040.1418011233147,-459.29091826760543 -723077910.0312,106773258.7276,-6541000.988374986,-27937383.28697413,-1390.74205472,2047.2034055141564,-438.35365485722355 -723080634.2884,102865186.3807,-958674.7510994449,-29099459.304112367,-1479.289564844,2050.300907044573,-414.210019530214 -723083358.5457,98708146.7058,4625659.582465153,-30190916.24455346,-1573.5394156389998,2048.510650228619,-386.43521098190143 -723086082.8029,94286506.26008,10197247.106658552,-31201244.946855087,-1673.5408983930001,2040.7480873095046,-354.571616941057 -723088807.0602,89584712.772,15738147.984750217,-32118657.209755,-1779.175276575,2025.758929758295,-318.1404147103421 -723091531.3174,84587840.00579,21226775.61132625,-32930053.224575095,-1890.0895266040002,2002.1219309090336,-276.6617072128184 -723094255.5747,79282330.38258,26637466.18843759,-33621058.55269687,-2005.6180155929999,1968.270902466547,-229.68598100076497 -723095617.7033,76510207.52615,29304364.917719632,-33916606.15446932,-2064.7980290749997,1946.9978065864243,-204.01541740245682 -723096979.832,73656962.52865,31940145.55450785,-34176165.354757056,-2124.696813993,1922.545530206336,-176.8394495540299 -723098341.9606,70721754.77549,34540335.701193325,-34397667.25939855,-2185.1055125149996,1894.7065636781388,-148.1331199863613 -723099704.0892,67704051.33001,37100185.13057713,-34579017.59998933,-2245.780969409,1863.2813289364808,-117.88454803371656 -723101066.2178,64603674.49731,39614680.241325244,-34718116.281708196,-2306.444634176,1828.083673264993,-86.09749052387372 -723102428.3465,61420850.25444,42078566.51650558,-34812880.451192275,-2366.7824035099998,1788.947121026401,-52.793942701770675 -723103790.4751,58156256.12446,44486379.95444528,-34861271.07296347,-2426.4456513249997,1745.7317721241102,-18.016663026401034 -723105152.6037,54811066.734469995,46832488.2577822,-34861322.83093784,-2485.053689446,1698.3316510275044,18.16852806672955 -723106514.7323,51386994.94677,49111142.11138808,-34811176.88502216,-2542.1978589670002,1646.6822341407287,55.67084406280378 -723107876.861,47886325.93865,51316536.838711075,-34709115.84863328,-2597.447387721,1590.7677897860965,94.37321127619998 -723109238.9896,44311942.47462,53442883.73090355,-34553600.19494282,-2650.3570566149997,1530.6280826222883,134.13172624415938 -723110601.1182,40667338.36121,55484488.554044716,-34343304.2093183,-2700.4766290159996,1466.3639524307123,174.776078805773 -723111963.2469,36956618.08791,57435838.671384856,-34077151.50257263,-2747.3616916610003,1398.1412489473037,216.11105196488973 -723113325.3755,33184480.82906,59291692.797742724,-33754347.11612005,-2790.585609696,1326.1926507227402,257.9192062177157 -723114687.5041,29356187.7175,61047171.913731,-33374405.304745793,-2829.751984655,1250.8169716399389,299.96473513091354 -723116049.6327,25477512.154510003,62697847.33512134,-32937171.292389892,-2864.506947484,1172.3757097262396,341.99840096827916 -723116730.697,23521209.32538,63482643.05655298,-32697115.553378362,-2880.1340264620003,1132.1341071964182,362.9306454681183 -723117071.2292,22539169.03533,63864710.1308495,-32571749.219771262,-2887.49542373,1111.7824930719612,373.36146446841775 -723117241.4953,22047221.83455,64053138.5430167,-32507735.21950509,-2891.0614800949998,1101.55218218195,378.5662795982344 -723117326.6283,21801022.17821,64146698.79291003,-32475396.05434699,-2892.8156606700004,1096.4238089569008,381.16581808342494 -723117369.1948,21677866.55324,64193315.10261615,-32459143.502826083,-2893.685516556,1093.856369409219,382.46484254797724 -723117390.4781,21616274.881419998,64216582.26339899,-32450996.4941447,-2894.118633141,1092.5718428698015,383.1141651510324 -723117401.1197,21585475.591930002,64228205.59027056,-32446917.807754073,-2894.3347382529996,1091.9293787191857,383.43877861623594 -723117406.4405,21570075.085190002,64234014.689703405,-32444877.169194713,-2894.442677471,1091.6080965249864,383.6010733360796 -723117409.1009,21562374.6165,64236918.5983436,-32443856.526094154,-2894.496618741,1091.4474429108611,383.6822176861487 -723117410.4312,21558524.32835,64238370.39237969,-32443346.123588577,-2894.5235822900004,1091.3671129762058,383.72278910778067 -723117411.7614,21554674.00433,64239822.07956538,-32442835.667116683,-2894.550541115,1091.2867809570525,383.76336002693637 -723117414.4218,21546973.24873,64242725.13335318,-32441814.592272986,-2894.604444593,1091.1261106668753,383.8445003567873 -723117419.7426,21531571.30744,64248529.958524406,-32439771.794997007,-2894.7121948520003,1090.804745092272,384.006774975712 -723117430.3842,21500765.705900002,64260134.478644215,-32435683.610254515,-2894.927468546,1090.161914067949,384.3312999965805 -723117451.6675,21439147.6383,64283322.99303807,-32427496.8812051,-2895.357108292,1088.8758533316895,384.9802527422156 -723117494.234,21315884.135110002,64329617.878936686,-32411081.994566455,-2896.212754551,1086.302143618986,386.2777656204257 -723117579.367,21069248.37919,64421878.76526797,-32378086.58595299,-2897.909492954,1081.1484234309398,388.8711935142187 -723117749.6331,20575547.661429998,64605082.51811637,-32311433.875396214,-2901.2445874980003,1070.8161993589063,394.0514388843721 -723118090.1653,19586475.945499998,64966198.65940574,-32175486.344180226,-2907.679979301,1050.0559987200586,404.3837416750513 -723118771.2296,17602026.78104,65667119.92743819,-31893070.985825673,-2919.602371643,1008.1800533006865,424.92172922622916 -723120133.3582,13610949.20418,66982696.608739555,-31286614.19134199,-2939.595405542,923.2311901703507,465.3824876146193 -723121495.4868,9596175.888369,68181714.12582272,-30625712.3991307,-2954.385915505,837.1261492876524,504.82400757144705 -723122857.6155,5564810.661855999,69262961.73336688,-29911907.75752803,-2963.961202341,750.4000807630455,543.0238832690808 -723124219.7441,1523922.999671,70225956.436707,-29147030.063173667,-2968.384013263,663.5841581775862,579.7829665789098 -723125581.8727,-2519551.973411,71070928.56172645,-28333162.190740295,-2967.78794653,577.1924356326173,614.9294222627236 -723126807.7885,-6155340.705037,71731234.72196147,-27560689.018546052,-2963.122272463,500.2043323643311,645.0646293720065 -723127911.1127,-9420819.647405,72245305.3829051,-26834605.14958615,-2955.733270963,431.8162526470953,670.9031593250469 -723128904.1044,-12351505.92196,72643913.46058862,-26157307.714286197,-2946.630398346,371.1848555006524,693.0792442329929 -723129797.797,-14980515.10963,72951577.49434589,-25529325.498768233,-2936.556270982,317.4841994661789,712.1434847998748 -723130199.9587,-16160473.54471,73074451.21183498,-25241254.047114473,-2931.467735199,293.61384662228056,720.4426140064043 -723130602.1204,-17338318.49892,73187764.026595,-24949880.11346618,-2926.0471775160004,269.9379256180526,728.5670462714907 -723131004.282,-18513918.276019998,73291595.65906474,-24655274.0538524,-2920.303720979,246.46396674530772,736.5163190756645 -723131808.6054,-20857874.02205,73471148.8138784,-24056647.624074496,-2907.885166738,200.14996522653178,751.8885526380634 -723132612.9287,-23191361.78094,73613804.30693199,-23445939.06352361,-2894.286999246,154.72373351409703,766.5595852727632 -723133417.252,-25513463.19567,73720294.84304047,-22823711.262749173,-2879.584978359,110.23055732797948,780.5326268152075 -723134221.5754,-27823320.96504,73791386.9412826,-22190523.429026823,-2863.855060598,66.70925937524157,793.8135855413249 -723135025.8987,-30120138.76427,73827875.81435765,-21546929.01584363,-2847.172818262,24.192403739075758,806.4108180634095 -723135830.222,-32403180.7219,73830580.43412533,-20893473.855685826,-2829.61291764,-17.293448024589225,818.3348750313745 -723136634.5454,-34671770.50555,73800338.82412468,-20230694.497764282,-2811.2486581440003,-57.72743881727371,829.5982471458825 -723137438.8687,-36925290.04451,73738003.59149885,-19559116.74775806,-2792.151572618,-97.0940860749867,840.2151156860137 -723139047.5153,-41384927.85991,73520510.85926196,-18191608.19978342,-2752.034242848,-172.588152657212,859.5730778832212 -723140656.162,-45778249.84144001,73185063.40246493,-16794896.544319868,-2709.786382374,-243.7455038981414,876.5471019246759 -723142264.8087,-50102221.989700004,72738619.09940095,-15372696.425460842,-2665.889189371,-310.5983623416092,891.2883342834516 -723143873.4553,-54354546.26818,72188041.77089472,-13928473.013770787,-2620.776116483,-373.2295392756596,903.9549123910534 -723145482.102,-58533582.66841,71540028.78832644,-12465434.758119775,-2574.8318245080004,-431.7614158731647,914.7071601713088 -723147090.7487,-62638271.17747,70801055.56156565,-10986533.06586957,-2528.393014747,-486.3460236805535,923.7037716230112 -723148699.3953,-66668056.24005,69977334.9704496,-9494467.376829315,-2481.750618449,-537.1563996456935,931.0989045320823 -723150308.042,-70622815.52473,69074789.6385943,-7991694.252921421,-2435.1528921719996,-584.3792632258948,937.0400743810866 -723151916.6887,-74502794.1543,68099034.96288915,-6480439.298160307,-2388.8090493040004,-628.2089734559256,941.6667252283974 -723153525.3353,-78308544.97125,67055370.838756934,-4962710.903129455,-2342.893139528,-668.8426683604847,945.1093550138633 -723155133.982,-82040875.15394999,65948780.43534011,-3440315.0504328012,-2297.547960245,-706.4764536086245,947.4890789550484 -723156742.6287,-85700799.0099,64783934.297801785,-1914870.527006369,-2252.888849784,-741.3024997745533,948.9175304849362 -723159959.922,-92808278.56699,62296645.57024757,1139534.8310980722,-2165.974058158,-803.268187833575,949.3208246025141 -723163177.2153,-99641807.1135,59624991.46743088,4190734.4809089936,-2082.650912024,-856.1319909190793,947.0324011988077 -723166394.5087,-106213413.7265,56796207.35072822,7231041.499887526,-2003.180125382,-901.142034714723,942.6372774108559 -723169611.802,-112535675.6106,53833755.06377511,10254468.837187413,-1927.652065942,-939.3962162970089,936.6102135727303 -723172829.0953,-118621260.9984,50757798.95350779,13256403.65108923,-1856.040588058,-971.8481292905128,929.3335703013778 -723176046.3887,-124482621.2234,47585651.69328289,16233336.762147088,-1788.24271125,-999.3191345956703,921.1136196168933 -723179263.682,-130131792.4613,44332176.82834288,19182641.241972044,-1724.1072444800002,-1022.5129460010929,912.1947147262454 -723182480.9753,-135580274.872,41010142.88517724,22102392.995514795,-1663.455039222,-1042.0305915283707,902.7712132489726 -723185698.2687,-140838966.8551,37630530.792988844,24991226.231746778,-1606.093066353,-1058.3845982757991,892.9973121974939 -723188915.562,-145918136.8145,34202797.43473643,27848217.623176336,-1551.824002758,-1072.0118436407136,882.9950503256455 -723192132.8553,-150827420.2402,30735100.44965956,30672793.565531775,-1500.452596382,-1083.2848811127606,872.8607632085258 -723195350.1486,-155575833.5222,27234488.99616187,33464656.150093935,-1451.789755882,-1092.5217390980586,862.6702616923214 -723198567.442,-160171798.11130002,23707065.337123476,36223724.031214476,-1405.6550397530002,-1099.9943009891676,852.4829714592702 -723201784.7353,-164623170.7922,20158121.53799824,38950085.22048352,-1361.878042429,-1105.935414482234,842.3452368436588 -723205002.0286,-168937277.1898,16592255.155856635,41643959.39661172,-1320.299024835,-1110.54489370947,832.2929554017917 -723208219.322,-173120946.35390002,13013467.136371374,44305667.79854843,-1280.7690402859998,-1113.9945713795682,822.3536794223266 -723211436.6153,-177180545.2733,9425244.808016533,46935609.19056287,-1243.149730481,-1116.4325448757056,812.5482933330686 -723214653.9086,-181122012.2846,5830632.349275943,49534240.63194963,-1207.3129137189999,-1117.9867429072322,802.8923537663466 -723217871.202,-184950888.9971,2232290.7105791643,52102062.13246389,-1173.140050726,-1118.767922770368,793.3971617564741 -723224305.7886,-192291232.76000002,-4966553.440607067,57147419.01863386,-1109.356627162,-1118.383126167,774.9179307732995 -723230740.3753,-199239067.8746,-12155900.83665751,62076131.22344467,-1051.02083533,-1115.9071397141986,757.1445606134683 -723237174.962,-205827256.7789,-19323906.955533847,66892771.50137952,-997.4693949617,-1111.8195022763634,740.0829831877259 -723243609.5486,-212084716.77830002,-26461438.376194537,71601890.20275459,-948.1365615013,-1106.4887702759497,723.7217207874144 -723250044.1353,-218036996.2033,-33561453.02404313,76207927.08163822,-902.5385856423001,-1100.200317901475,708.0387957553153 -723256478.7219,-223706758.686,-40618533.35693091,80715159.2853528,-860.2604978113,-1093.1766174789293,693.0062325836227 -723262913.3086,-229114188.4909,-47628532.25227981,85127672.7855744,-820.9450330561,-1085.5921681817067,678.5929859268823 -723269347.8953,-234277331.726,-54588301.56738352,89449349.224858,-784.2834210108,-1077.5845866184243,664.7668342896922 -723275782.4819,-239212382.7636,-61495482.944573656,93683862.50346139,-750.007750406,-1069.2629186908966,651.4955891046484 -723282217.0686,-243933926.2853,-68348345.02246666,97834681.61507276,-717.8846443603,-1060.7139209262589,638.7478494157034 -723288651.6553,-248455142.0999,-75145656.1495601,101905077.32424267,-687.7100184061001,-1052.0068470507242,626.4934558329439 -723295086.2419,-252787979.15510002,-81886584.07026684,105898131.03820992,-659.3047244759999,-1043.1971219587788,614.7037436325438 -723301520.8286,-256943303.9991,-88570616.4832848,109816744.88640326,-632.5109242887,-1034.3291836113722,603.3516648476973 -723307955.4152,-260931027.8488,-95197497.74627846,113663652.26779923,-607.1890584159,-1025.4386951503238,592.4118237261644 -723314390.0019,-264760215.78239998,-101767178.21469875,117441428.43889695,-583.2153062498,-1016.554278967993,581.8604575158258 -723320824.5886,-268439180.9834,-108279773.52925153,121152500.8835927,-560.4794489290999,-1007.6988834539012,571.6753825923861 -723333693.7619,-275376414.8273,-121134806.41110632,128383564.59039341,-518.3380017469001,-990.1448605450656,552.3228115608994 -723346562.9352,-281797040.6673,-133765723.18908569,135373671.55111277,-480.0929566853,-972.8827907213241,534.2051776987507 -723359432.1085,-287747577.5484,-146176738.63511693,142137863.9225571,-445.19956567730003,-955.9783354728346,517.193391479024 -723372301.2819,-293268193.264,-158372726.56828746,148689635.48169726,-413.2114309209,-939.470015062306,501.17545322939606 -723385170.4552,-298393826.434,-170358931.04993626,155041135.12828285,-383.75922807660004,-923.3780574873849,486.05397177410697 -723398039.6285,-303155070.5405,-182140771.82195693,161203340.65434107,-356.5346956423,-907.7103362408023,471.74400194010957 -723410908.8018,-307578877.90959996,-193723712.81543908,167186206.67910898,-331.27845152829997,-892.4664040074031,458.17120105027817 -723423777.9752,-311689125.8542,-205113174.02066347,172998790.8396185,-307.770606998,-877.6402578010988,445.2702692723993 -723436647.1485,-315507075.7888,-216314472.99296135,178649361.41682518,-285.8234674829,-863.2222497407364,432.9836387497813 -723449516.3218,-319051749.5784,-227332787.09437785,184145489.66107795,-265.2757957302,-849.2004136489684,421.26037131742567 -723462385.4951,-322340239.2626,-238173129.83810136,189494128.8113581,-245.9882619188,-835.5613885687625,410.055231874236 -723475254.6685,-325387964.8867,-248840337.4038786,194701682.44943732,-227.839804088,-822.2910626509087,399.3279087680625 -723488123.8418,-328208890.0364,-259339062.03680387,199774063.49821308,-210.7246951335,-809.3750210094988,389.04235644824377 -723500993.0151,-330815703.35770005,-269673770.2092817,204716745.38748467,-194.550159123,-796.7988535322171,379.16623759904815 -723513862.1884,-333219972.1483,-279848744.1598074,209534806.6718925,-179.2344210661,-784.5483654749935,369.670450809337 -723526731.3618,-335432273.3851,-289868085.63743556,214232970.0673307,-164.705101351,-772.6097177344595,360.52872790715503 -723539600.5351,-337462305.7725,-299735721.0795765,218815636.5642747,-150.8978858065,-760.9695172814722,351.7172895118952 -723552469.7084,-339318986.1949,-309455407.7433902,223286915.5455102,-137.7554163963,-749.6148718020585,343.2145496323026 -723565338.8817,-341010533.0675,-319030740.35386515,227650651.32671764,-125.2263619172,-738.533419553979,335.0008617025955 -723578208.0551,-342544538.73109996,-328465158.05006343,231910446.6837464,-113.2646351451,-727.7133410869483,327.0582990307828 -723591077.2284,-343928032.5643,-337761951.35287356,236069683.72085357,-101.8287300984,-717.143358618808,319.37046466558877 -723594929.4857,-344313881.59499997,-340518561.53398204,237295632.58521438,-98.50208087248,-714.0263623264834,317.1164528200413 -723613062.9155,-345961758.6833,-353335149.3198834,242951675.9816099,-83.40263294099,-699.6337363337185,306.78349325836587 -723639026.5142,-347862125.42609996,-371240649.46623456,250732635.46543095,-63.2579034507,-679.7877886660729,292.72985323118365 -723664990.113,-349259842.853,-388641802.0530187,258159135.84599343,-44.64870909639,-660.7714687792487,279.46457423183654 -723690953.7118,-350192252.4936,-405559250.1197217,265250563.81727552,-27.38602347295,-642.5168248992403,266.90637341054435 -723716917.3105,-350692193.7112,-422011958.7279026,272024346.3627671,-11.31096826614,-624.9624224798025,254.9852042997398 -723742880.9093,-350788707.505,-438017374.6590633,278496215.96714276,3.711017151084,-608.0526360081227,243.64029928041137 -723768844.5081,-350507606.9809,-453591568.80348945,284680430.64899665,17.794686245509997,-591.7369954605156,232.81861233691413 -723794808.1068,-349871943.8862,-468749362.19231176,290589957.62493414,31.0385114481,-575.9696045220716,222.47357263401318 -723820771.7056,-348902393.777,-483504437.9263793,296236627.88245755,43.52747434578,-560.7086224905969,212.56407632634995 -723846735.3044,-347617576.37899995,-497869440.4476,301631267.14431775,55.33528999912,-545.9158089891183,203.05366498636144 -723872698.9031,-346034323.8859,-511856063.68258244,306783807.3810988,66.52620009238,-531.556125232541,193.90985177392113 -723898662.5019,-344167907.6113,-525475129.5766368,311703382.5539229,77.15642784919,-517.597383339217,185.10356367417222 -723924626.1007,-342032229.79190004,-538736657.954298,316398410.8922642,87.27536907034,-504.0099405252411,176.60867778639494 -723950589.6994,-339639988.446,-551649929.1975085,320876666.5722365,96.92657299119,-490.76642939194727,168.40163280337822 -723976553.2982,-337002817.5967,-564223540.0303981,325145341.6005819,106.1485566408,-477.8415215913312,160.46110140635517 -724002516.897,-334131409.0809,-576465453.7444023,329211100.20237345,114.9754841671,-465.2117191393445,152.76771292361462 -724028480.4957,-331035617.9372,-588383045.2797545,333080126.4696034,123.4377366216,-452.85516937732467,145.30381661415524 -724054444.0945,-327724554.2115,-599983141.7610264,336758166.3120392,131.5623928482,-440.7515016438701,138.05327935671448 -724067425.8939,-325990958.2831,-605666122.1123694,338527251.3235824,135.5057829655,-434.7885015614682,134.50335024514428 -724073916.7936,-325105087.1539,-608478675.6557982,339394590.72829366,137.4489841454,-431.8282074218291,132.74644995300488 -724077162.2434,-324657436.801,-609877758.0524234,339823993.57707286,138.41360842059999,-430.3532402806456,131.8724232594838 -724078784.9684,-324432439.50450003,-610575505.5382026,340037632.4584373,138.8941944023,-429.6170367248927,131.43650442070376 -724079596.3308,-324319648.6415,-610923931.4574053,340144186.78033864,139.13405806560002,-429.2492530938325,131.2188172225235 -724080002.012,-324263180.2579,-611098032.5362442,340197397.7259322,139.2538828401,-429.06544058367206,131.11004150381632 -724080204.8527,-324234927.84070003,-611185055.1148863,340223986.652937,139.31376849720002,-428.97355412610256,131.05567059275663 -724080306.273,-324220797.07720006,-611228559.4151064,340237276.980926,139.3437046476,-428.9276158433145,131.02848937166547 -724080407.6933,-324206663.27790004,-611272059.056486,340250564.5523741,139.37363634739998,-428.88168085620845,131.0013109723932 -724080610.5339,-324178386.5734,-611359044.363805,340277131.42667264,139.4334864002,-428.78982076513546,130.94696263624945 -724081016.2151,-324121796.7534,-611532959.086396,340330232.10889363,139.5531331529,-428.60614008744597,130.83829979214948 -724081827.5776,-324008471.57019997,-611880565.0373498,340436301.27154016,139.792213519,-428.23893651973793,130.6211092428937 -724083450.3025,-323781239.83640003,-612574883.5595824,340647911.3008506,140.2695238648,-427.5051586978001,130.1872673134768 -724086695.7523,-323324457.32,-613959951.8338331,341069022.2457273,141.22076026780002,-426.0401056616446,129.3217290890928 -724093186.652,-322401667.03319997,-616715850.9349117,341902839.9747569,143.1098322154,-423.1198937104025,127.59914767532646 -724106168.4514,-320519586.459,-622170994.8239727,343537112.9435156,146.8354355445,-417.31812918195277,124.18727794201382 -724132132.0502,-316612533.3022,-632856941.4967853,346674176.8423957,154.0845622285,-405.862107028182,117.49141349129309 -724158095.649,-312520614.5819,-643247865.6640555,349639505.3103759,161.0785435606,-394.589722567315,110.95648019753614 -724184059.2477,-308250248.4933,-653348340.267097,352437135.40999,167.8329889968,-383.48609979991375,104.57172830303585 -724210022.8465,-303807469.1059,-663162562.644719,355070835.15052915,174.3619087422,-372.5371668736795,98.32716750611877 -724235986.4453,-299197965.7414,-672694374.3604736,357544122.1611625,180.6778739572,-361.7295781596945,92.21348912849723 -724261950.044,-294427118.48950005,-681947279.1477327,359860280.4830341,186.79215458090002,-351.0506447571768,86.2219977357127 -724313877.2416,-284421557.0878,-699628789.4568132,364033268.5765232,198.4549305904,-330.03089749098797,74.57350288096549 -724365804.4391,-273828796.7098,-716228945.1046884,367611938.67703444,209.41847780129999,-309.38729517277886,63.322243715703046 -724417731.6366,-262683698.81089997,-731765081.0734688,370615519.9152243,219.7362635799,-289.0362819098272,52.41536175311594 -724469658.8342,-251018688.8222,-746250350.2771912,373060642.3664144,229.44892498229999,-268.900166213842,41.805448287751275 -724521586.0317,-238864382.60020003,-759694003.899766,374961596.55467355,238.5857342108,-248.90624360945816,31.449678767561664 -724533696.0013,-235962672.1243,-762680093.2163854,375328012.04665333,240.6359646793,-244.25650401272839,29.066913921195805 -724543167.9676,-233675863.9039,-764976467.1020449,375594536.8610753,242.2186109237,-240.62190163773417,27.2110508499333 -724570945.1305,-226884360.0293,-771512310.9773278,376275190.4475056,246.7543383421,-229.97067960781084,21.80617797998795 -724598722.2934,-219969041.0898,-777752366.9552265,376806444.9351653,251.13364816029997,-219.32312112302625,16.453215583316506 -724626499.4562,-212934241.9745,-783696606.8173263,377189671.67274886,255.35715176950004,-208.66993059603587,11.147127433465883 -724654276.6191,-205784289.0485,-789344749.619938,377426105.9204596,259.4248610736,-198.00221491938115,5.883152264428375 -724682053.782,-198523515.9013,-794696273.5095989,377516854.5967102,263.3362575795,-187.31152893432997,0.6568120880718027 -724709830.9448,-191156276.9821,-799750429.001722,377462904.3641813,267.090372129,-176.5899389968281,-4.536070657318788 -724737608.1077,-183686958.878,-804506254.2437551,377265130.3022764,270.6858762446,-165.83010668146918,-9.69934561046788 -724765385.2705,-176119988.9129,-808962592.9157281,376924305.50155395,274.1211824752,-155.02539460113502,-14.836495272806538 -724793162.4334,-168459840.83569998,-813118115.7349621,376441112.10859805,277.3945492227,-144.16999576984304,-19.950583002332763 -724820939.5963,-160711037.67520002,-816971345.5881724,375816153.8411327,280.50418068069996,-133.25908445972388,-25.044188292607537 -724848716.7591,-152878152.41459998,-820520686.3814653,375049970.110322,283.4483084652,-122.28898379576715,-30.11933125133752 -724876493.922,-144965806.0139,-823764457.8789668,374143052.92762834,286.22524088570003,-111.25733032447654,-35.17739587643668 -724904271.0849,-136978665.2074,-826700934.099644,373095865.49180883,288.83336536359997,-100.16321638391551,-40.21906150890376 -724932048.2477,-128921440.9054,-829328385.2115488,371908862.48108137,291.2710972632,-89.00727494243318,-45.24426102209098 -724959825.4106,-120798888.7775,-831645120.4855952,370582510.8737113,293.5367827388,-77.79166963170532,-50.25218547063933 -724973713.992,-116714613.97819999,-832686462.174509,369867233.5553361,294.6045428469,-72.16255690315107,-52.74922937950517 -724980658.2828,-114666991.21380001,-833177791.6401931,369496598.1513749,295.1220435199,-69.34290580269061,-53.99592235709068 -724984130.4281,-113641841.7114,-833416110.8108206,369308035.0114048,295.3766844292,-67.9318390341954,-54.618797578486216 -724985866.5008,-113128936.59480001,-833533432.7556994,369212942.5622655,295.5029756385,-67.22599958378719,-54.9301155349834 -724986734.5371,-112872401.9665,-833591634.1634314,369165193.67865753,295.5658636915,-66.87300388207552,-55.08574436526726 -724987168.5553,-112744114.20009999,-833620619.9568839,369141268.5797278,295.5972432998,-66.69648710519284,-55.163551213845714 -724987385.5644,-112679965.212,-833635084.1236044,369129293.3669347,295.6129169956,-66.60822399379535,-55.20245274278275 -724987494.0689,-112647889.4426,-833642309.0241579,369123302.59481305,295.620749816,-66.56409125861136,-55.221903032864134 -724987602.5735,-112615812.82360001,-833649529.1361368,369117309.7122933,295.6285799511,-66.5199577373883,-55.24135300656416 -724987819.5826,-112551657.0374,-833663954.9937056,369105317.61608326,295.6442321651,-66.43168833769656,-55.28025200444213 -724988253.6007,-112423335.281,-833692749.2414027,369081308.10006374,295.6755043644,-66.25514011937977,-55.35804619778554 -724989121.6371,-112166651.09660001,-833750107.8477185,369033187.7812239,295.7379198177,-65.90200607588456,-55.513619344776444 -724990857.7097,-111653120.5644,-833863905.352346,368936542.05836034,295.8622346963,-65.19558811482283,-55.824704439493004 -724994329.8551,-110625415.0297,-834087820.3212222,368741630.770269,296.1087983554,-63.78215715810555,-56.4466278915121 -725001274.1458,-108567459.59539999,-834520920.541525,368345332.85981774,296.5936451305,-60.95295131375912,-57.68947209141685 -725015162.7273,-104441640.26529999,-835328127.611524,367526868.8309744,297.5300832262,-55.2854606047038,-60.171020520110375 -725042939.8901,-96152534.1374,-836706003.81835,365786746.69682556,299.2688133752,-43.91661044456694,-65.11649426509732 -725070717.053,-87817640.17209001,-837767510.8054773,363909602.27131397,300.8264260797,-32.50730619806231,-70.03644428465141 -725098494.2158,-79442027.55949,-838511600.8411528,361896176.7310381,302.20017572859996,-21.06294622919738,-74.92859343282683 -725123493.6624,-71873411.28915,-838909139.0390726,359968233.4837767,303.2772287803,-10.7369896414231,-79.30616200212943 -725145993.1643,-65040154.0901,-839045989.375239,358139765.1231314,304.116184852,-1.424973091305322,-83.22450695965871 -725168492.6663,-58189418.79012,-838973140.6893444,356223370.04007274,304.8307625806,7.903129295446533,-87.12198197817877 -725190992.1682,-51324009.565519996,-838690243.1362315,354219521.0806769,305.4205206116,17.24633462284669,-90.998338252006 -725213491.6701,-44446735.975839995,-838196962.8346347,352128693.81431067,305.88542499249996,26.60420692177867,-94.8535806913836 -725235991.172,-37560403.63592,-837492969.582087,349951360.9658316,306.2258589506,35.976853483148076,-98.68795442432543 -725258490.674,-30667804.98289,-836577924.7671971,347687987.2120902,306.4426057924,45.36491185642076,-102.50192645848921 -725280990.1759,-23771710.72403,-835451469.6416665,345339024.4202464,306.53681002810004,54.76953281917449,-106.29616570555447 -725303489.6778,-16874862.14333,-834113213.9148757,342904907.29874074,306.5099222165,64.19236336477442,-110.07152379260589 -725325989.1797,-9979965.099068,-832562724.834411,340386049.5182649,306.36363309949996,73.63553049573619,-113.82901734761676 -725370988.1836,3793354.193747,-828823039.6044202,335095640.5358681,305.7203837552,92.59370310234847,-121.2952128304195 -725413510.9423,16773034.169480002,-824502923.2208759,329788762.5835406,304.694623261,110.61682923592238,-128.29910904051675 -725419785.5867,18701063.6985,-823809274.203429,328984232.58457243,307.17787332160003,111.88382275517709,-128.7345495690181 -725477054.3359,36236532.098969996,-816701143.3769507,321343321.49002624,305.0974806872,136.4010907162716,-138.10015945300051 -725534323.085,53632964.49164,-808179969.338954,313167353.40363055,302.3253752925,161.24702269946494,-147.42567127031833 -725591591.8341,70851149.76025,-798224128.9925785,304457684.8454117,298.873254678,186.52213912113388,-156.74442413553106 -725648860.5832,87852110.19431,-786805780.8786535,295213678.63921404,294.73704018,212.34304340514123,-166.09262927000694 -725706129.3324,104596111.36330001,-773889945.2104712,285432550.8279982,289.8939326633,238.8424995155849,-175.5090025359903 -725734763.7069,112858848.6429,-766857354.9244747,280339075.37696475,287.1943887297,252.39278575545393,-180.25548708459763 -725763398.0815,121041512.79370001,-759433557.712101,275109233.351418,284.29970619389997,266.17029820233614,-185.03458207819372 -725792032.4561,129138385.9264,-751611739.6303644,269742012.68372303,281.2005130614,280.19672441578695,-189.8517804406152 -725820666.8306,137143456.9643,-743384446.6228684,264236241.83034968,277.8856755767,294.4951091106923,-194.71272960445611 -725849301.2052,145050369.00579998,-734743543.8741702,258590585.22609544,274.342146462,309.089977802072,-199.62324001387645 -725877935.5798,152852362.0555,-725680171.3806094,252803538.47310603,270.5547853217,324.0074827712977,-204.58929531728484 -725906569.9543,160542210.1439,-716184695.0048165,246873423.2202419,266.50614553469995,339.27557527763867,-209.6170639474679 -725920887.1416,164342677.3331,-711271682.2663938,243854141.51711908,264.377701999,347.0503667803486,-212.15607196918884 -725928045.7352,166231354.3112,-708773258.4545654,242330837.41772956,263.2862708559,350.97465251266283,-213.4322113469754 -725931625.0321,167172746.32549998,-707513489.4446613,241565755.55434287,262.7335962468,352.94623814602016,-214.0719848660147 -725933414.6805,167642698.4158,-706880955.7604408,241182355.3814356,262.4554989825,353.9344196649689,-214.39230325004917 -725934309.5047,167877487.56109998,-706564025.3736687,240990440.2587517,262.3160077961,354.42911113192343,-214.5525710593796 -725934756.9168,167994835.2931,-706405394.137159,240894428.90995917,262.2461512413,354.6766074857036,-214.63273220745432 -725934980.6228,168053497.43449998,-706326036.9884135,240846409.78513858,262.21119518300003,354.8003933731755,-214.67281960346662 -725935092.4759,168082825.57230002,-706286348.0291635,240822396.85972917,262.1937102034,354.8622957513645,-214.69286500829676 -725935204.3289,168112151.7541,-706246652.1455292,240798381.69208342,262.1762205884,354.92420442195663,-214.71291155158104 -725935428.0349,168170798.24740002,-706167239.6022446,240750344.62964866,262.1412274463,355.048040648526,-214.75300805526925 -725935875.447,168288067.73909998,-706008331.3929403,240654243.59276375,262.0711854724,355.2957886978971,-214.83321474173576 -725936770.2712,168522512.62640002,-705690182.3248508,240461933.84216353,261.9308784394,355.7915876272129,-214.9936829201016 -725938559.9197,168991025.0838,-705052552.3248423,240076883.40472788,261.6493694111,356.7844003847392,-215.31483921389665 -725942139.2165,169926533.22770002,-703771954.6862676,239305056.9406894,261.0827503696,358.7749142317693,-215.9580372819583 -725949297.8101,171791421.85059997,-701189326.6127924,237754486.74712473,259.9349366295,362.77572719105825,-217.2480213810492 -725963614.9974,175496194.3649,-695937668.7772409,234625555.55860206,257.5795896478,370.85838302359673,-219.84271266407123 -725992249.372,182801609.4705,-685083174.5970452,228255515.76105598,252.6179579206,387.363484449887,-225.09400509740615 -726020883.7465,189959876.5978,-673749222.450045,221733859.47235024,247.2965885131,404.35316061514993,-230.43372838599097 -726049518.1211,196960220.55719998,-661921363.1856031,215057950.95095167,241.5816070238,421.868041436542,-235.8691585803741 -726078152.4957,203790829.3405,-649583933.9639616,208224942.51713774,235.434358685,439.9523425765396,-241.40782329477605 -726106786.8702,210438706.8766,-636719948.7574304,201231767.31386405,228.8106618384,458.65435499315277,-247.05750352883416 -726135421.2448,216889502.2823,-623310973.6911235,194075132.10601547,221.65990371450002,478.0270178108327,-252.82622824371052 -726164055.6193,223127310.0149,-609336984.3179405,186751510.40349147,213.9239382387,498.12859283992975,-258.722258146482 -726192689.9939,229134436.7261,-594776202.7961118,179257136.18369687,205.53573071809998,519.0234617329062,-264.7540529923556 -726221324.3685,234891122.28030002,-579604908.799757,171587998.99080163,196.41768770660002,540.7830713769529,-270.93021664991295 -726249958.743,240375209.5375,-563797221.8780062,163739840.91712648,186.4795737547,563.4870631301087,-277.25940816333156 -726278593.1176,245561745.8602,-547324847.8969728,155708156.9171129,175.6158972871,587.2246249207649,-283.7502044171299 -726307227.4922,250422501.136,-530156783.17801946,147488199.8712671,163.7025981927,612.0961199194578,-290.41089215469316 -726335861.8667,254925377.6264,-512258967.1075605,139074993.12087166,150.59280905469998,638.2150576283688,-297.249156098078 -726364496.2413,259033682.0763,-493593872.6725385,130463353.87901983,136.1113728255,665.7104870484563,-304.27161365971284 -726393130.6159,262705217.52150002,-474120020.9558184,121647933.08440106,120.04767048160001,694.729916592771,-311.4831212966245 -726421764.9904,265891138.2986,-453791403.22915065,112623279.70782158,102.1461137836,725.442884851305,-318.8857351191073 -726424620.7849,266180142.1335,-451715175.16097295,111711538.93228424,100.2485045537,728.6061231973094,-319.6344608949316 -726434354.4969,267119774.20619997,-444604470.1593807,108603084.08544733,93.19682906715,736.0036558804487,-320.63501475469997 -726447113.9006,268251372.27679998,-435120354.3209687,104490345.42869939,84.09918622720001,750.6713225611389,-324.03107740717275 -726459873.3043,269263798.8157,-425446479.5968532,100334044.20180753,74.51088082823,765.7513572190969,-327.46315302811166 -726472632.708,270150549.5892,-415577445.73739433,96133728.24740942,64.39306075942,781.2657517542618,-330.9300219252389 -726485392.1118,270904598.34730005,-405507561.86041296,91888963.75787085,53.70266006878,797.2380936546671,-334.4300116556334 -726498151.5155,271518339.35040003,-395230825.2184489,87599341.67304637,42.39180764236,813.6937046390889,-337.96089914567824 -726510910.9192,271983521.7617,-384740898.0930582,83264485.43704726,30.40713316562,830.6597897354801,-341.5197903945861 -726523670.3229,272291174.4319,-374031082.8100877,78884060.4643662,17.688948574850002,848.1655973402911,-345.102971934237 -726536429.7266,272431519.26089996,-363094294.57089424,74457785.73029314,4.1702799308589995,866.2425878653007,-348.70572734898934 -726549189.1303,272393871.0918,-351923032.1170314,69985447.99098529,-10.224284703799999,884.9246089708572,-352.32210866300795 -726561948.534,272166521.53849995,-340509346.1305741,65466919.22861315,-25.57997247992,904.2480740690726,-355.9446504079186 -726574707.9377,271736603.5375,-328844805.39070076,60902178.21549128,-41.99348074854,924.2521365434752,-359.56401015730194 -726587467.3414,271089932.6323,-316920460.77681386,56291337.27531727,-59.574976069520005,944.9788494214328,-363.16851422925487 -726600226.7451,270210820.09679997,-304726807.28061455,51634675.52483936,-78.45052396532,966.4732932095515,-366.7435788067826 -726612986.1489,269081851.8267,-292253745.0825353,46932680.58542651,-98.76505959942,988.7836490045956,-370.27096887718074 -726625745.5526,267683625.0071,-279490539.84807074,42186100.996621415,-120.6860424514,1011.961174423988,-373.72784144952675 -726638504.9563,265994432.9002,-266425784.3755794,37396012.58297798,-144.4079832268,1036.0600258475577,-377.08550111584924 -726651264.36,263989885.0742,-253047364.13952097,32563903.083936505,-170.15809175060002,1061.1368365070932,-380.3077675836248 -726664023.7637,261642446.54090002,-239342430.11836806,27691780.74587579,-198.20337187410001,1087.2499113792535,-383.3488152371689 -726676783.1674,258920875.12030002,-225297385.8761698,22782314.99050559,-228.8596073651,1114.4578290243553,-386.15028608829704 -726689542.5711,255789528.8645,-210897897.59478444,17839019.896426618,-262.50282595360005,1142.8171178838625,-388.6373911491928 -726702301.9748,252207507.0019,-196128941.70317698,12866495.837605417,-299.58404872020003,1172.3784916541042,-390.71358517187076 -726715061.3785,248127577.0561,-180974915.6243091,7870751.737430796,-340.6484187549,1203.1808384429664,-392.2532100890545 -726721441.0804,245884078.91030002,-173248515.0419924,5366538.760496117,-362.87637699969997,1219.0540414639747,-392.77212626311865 -726727820.7823,243494820.9514,-165419844.1785069,2859638.324137777,-386.36019376210004,1235.2416398280216,-393.0911953052364 -726734200.4841,240951455.79999998,-157486907.20004082,351416.2249752581,-411.2069014486,1251.7399821291988,-393.1812345358365 -726740580.186,238244915.4147,-149447742.90088788,-2156561.2383384034,-437.5356445972,1268.541710028367,-393.0084431944707 -726746959.8878,235365328.6715,-141300451.56993383,-4662495.184971735,-465.47934186130004,1285.6347050542863,-392.53355157784614 -726753339.5897,232301927.5002,-133043229.4731301,-7164316.068817057,-495.1866016352,1303.0007471619385,-391.71078952956566 -726759719.2915,229042939.94,-124674413.0094956,-9659638.346668802,-526.8239295226,1320.613801841134,-390.4866311944555 -726766098.9934,225575468.006,-116192535.28373367,-12145706.2581622,-560.5782675405,1338.4378255346405,-388.79826170554213 -726772478.6952,221885348.2143,-107596398.5825076,-14619328.76873064,-596.6599068568,1356.4239443563338,-386.5716971211949 -726778858.3971,217956992.3521,-98885167.34451963,-17076801.2192078,-635.3058129551,1374.506813729312,-383.7194708208649 -726785238.0989,213773205.4489,-90058487.62058993,-19513810.50262971,-676.7833902533,1392.5999045243243,-380.13777796063357 -726791617.8008,209314978.3811,-81116640.91253158,-21925319.95681488,-721.3946938314,1410.5893752086058,-375.7029403267484 -726797997.5027,204561252.3142,-72060742.76981811,-24305429.111047596,-769.4810518521999,1428.3260770260592,-370.26702049605893 -726804377.2045,199488652.5332,-62892999.9405545,-26647202.151830364,-821.4279849308999,1445.6150879692227,-363.652373912087 -726810756.9064,194071190.5648,-53617044.159021124,-28942457.615378283,-877.6701738928,1462.2019717550388,-355.6448828439503 -726817136.6082,188279935.71359998,-44238366.97396475,-31181509.86868012,-938.6960036963001,1477.7546999288727,-345.9855713032688 -726823516.3101,182082660.9492,-34764887.09326875,-33352851.111461535,-1005.05082154,1491.8398483220171,-334.36027080669896 -726829896.0119,175443475.95729998,-25207692.726704426,-35442760.286326505,-1077.3374384479998,1503.8912905580842,-320.38700996946943 -726833085.8629,171945861.4731,-20402267.65230827,-36452168.934915714,-1115.908260992,1508.931320558803,-312.37832122667936 -726836275.7138,168322472.09510002,-15582013.13044491,-37434823.705252975,-1156.211380008,1513.1691961202491,-303.60090096170774 -726839465.5647,164567642.2407,-10749688.063481504,-38388156.419679575,-1198.334684038,1516.4765710987638,-293.98079754304285 -726842655.4156,160675424.4595,-5908489.315823222,-39309351.22863809,-1242.3667994230002,1518.706797489214,-283.43657218101424 -726845845.2666,156639589.2839,-1062114.0274417475,-40195319.73147434,-1288.395644596,1519.692419302812,-271.8786748494621 -726849035.1175,152453630.4411,3785169.677230099,-41042674.14100516,-1336.5064841839999,1519.242398871752,-259.2088432706122 -726852224.9684,148110777.2325,8628442.660359927,-41847698.59173868,-1386.779351076,1517.1390882976234,-245.3195642264347 -726855414.8194,143604016.3777,13462044.827679353,-42606318.950472414,-1439.2856833380001,1513.1349810386844,-230.09365086020887 -726858604.6703,138926126.0415,18279474.400845744,-43314071.487875685,-1494.0839859470002,1506.9493153341668,-213.40401383520845 -726861794.5212,134069725.50189999,23073276.444715444,-43966071.32284839,-1551.214312518,1498.2646525819812,-195.1137285544416 -726864984.3721,129027344.8149,27834920.569506936,-44556981.73827522,-1610.691327464,1486.7236203580255,-175.07653619908643 -726868174.2231,123791518.8538,32554668.916830227,-45080985.94511755,-1672.4957069099999,1471.9261198674776,-153.13796077585204 -726871364.074,118354912.0722,37221436.536356255,-45531763.78182596,-1736.563647513,1453.427405854891,-129.13726472047352 -726874553.9249,112710479.6557,41822647.73350392,-45902476.24539998,-1802.774301958,1430.737631636976,-102.91052632704992 -726877743.7758,106851672.7049,46344094.268637255,-46185762.18097347,-1870.9350807459998,1403.3236232338131,-74.29515923046432 -726880933.6268,100772693.22,50769804.09418911,-46373752.089097396,-1940.764951033,1370.6138840566093,-43.136239266875236 -726884123.4777,94468804.44817,55081933.23007818,-46458105.516571805,-2011.8761858149999,1332.0080338878784,-9.29500101242445 -726887313.3286,87936701.73900999,59260695.73360016,-46430079.32733202,-2083.755538424,1286.8920544327964,27.34020181429281 -726890503.1796,81174941.80343,63284354.03302333,-46280635.1858083,-2155.746399524,1234.660749070141,66.8403148187453 -726893693.0305,74184424.40321,67129293.9069062,-46000594.38294227,-2227.0343446099996,1174.7486219865007,109.21952438899854 -726896882.8814,66968910.543239996,70770212.43564391,-45580847.16665043,-2296.639332304,1106.6697995441327,154.41731946084627 -726900072.7323,59535549.58397,74180447.27571607,-45012620.7243392,-2363.418578115,1030.0665125683026,202.27990934233804 -726903262.5833,51895374.327810004,77332471.60248451,-44287804.90291642,-2426.084491213,944.7639639035915,252.54300289919007 -726906452.4342,44063709.35079,80198568.69929059,-43399327.04373803,-2483.241626686,850.82715784364,304.8187375999834 -726908047.3597,40082098.12727,81515887.12877406,-42891887.94646242,-2509.302740088,800.7198171521659,331.55476364218134 -726909642.2851,36060427.91602,82751682.0766035,-42341557.52015314,-2533.444969359,748.6128506208122,358.59008617861537 -726911237.2106,32001899.90828,83902838.3408425,-41747924.42857971,-2555.492905272,694.6027324544305,385.8407480600023 -726912832.1361,27909989.3099,84966411.95768136,-41110716.673758015,-2575.278825757,638.8077384590138,413.2160946121783 -726914427.0615,23788430.52781,85939664.94914527,-40429811.60617462,-2592.645884826,581.3677207609823,440.61969052104405 -726916021.987,19641197.46394,86820098.9639561,-39705244.22487166,-2607.451309432,522.443327664291,467.9504599668867 -726917616.9124,15472478.40705,87605487.67762949,-38937213.58178321,-2619.569471618,462.21465940813835,495.1040192848684 -726919211.8379,11286646.43711,88293906.28897198,-38126086.86475498,-2628.89473215,400.8793463123603,521.9741806173944 -726920806.7634,7088225.4913099995,88883757.58900017,-37272400.9889741,-2635.343926913,338.65008663676576,548.4545782920297 -726922401.6888,2881852.824087,89373793.6988,-36376861.52662922,-2638.858386885,275.75170146168733,574.4403667597919 -726923199.1516,777154.8467001,89581090.83886269,-35913662.43151565,-2639.503826965,244.12434211336634,587.2158557419224 -726923597.8829,-275313.0337595,89675272.46872781,-35678258.10530481,-2639.547629154,228.27909587705773,593.5438244600151 -726923797.2486,-801544.2511388999,89719993.17619677,-35559611.82055038,-2639.499765891,220.35021686357987,596.6922037037355 -726923896.9315,-1064655.122463,89741760.6580306,-35500053.56263525,-2639.458394229,216.38441842249736,598.2624105783159 -726923946.7729,-1196208.866749,89752496.14262739,-35470215.77104685,-2639.433348862,214.4012051247277,599.0465082226032 -726923971.6936,-1261985.252675,89757826.81635804,-35455282.224247575,-2639.419736374,213.4095231649475,599.4383043381877 -726923984.1539,-1294873.316162,89760482.88553657,-35447811.789934605,-2639.412657691,212.91366375847542,599.6341390623937 -726923990.3841,-1311317.314547,89761808.60313731,-35444075.6577794,-2639.409050241,212.66572949873333,599.7320405714868 -726923993.4992,-1319539.305276,89762470.88267872,-35442207.36297942,-2639.407229489,212.5417612359766,599.7809873602658 -726923995.0568,-1323650.298509,89762801.87764233,-35441273.158406235,-2639.406314856,212.47977682223274,599.8054597629377 -726923996.6143,-1327761.2903159999,89763132.7760521,-35440338.91571221,-2639.405397386,212.4177922204919,599.8299315043212 -726923999.7294,-1335983.269631,89763794.28325398,-35438470.31598605,-2639.403553931,212.29382245387876,599.8788730030685 -726924005.9596,-1352427.2109440002,89765116.13910276,-35434732.65917428,-2639.3998329690003,212.0458806745549,599.9767480612608 -726924018.4199,-1385315.023316,89767755.21661316,-35427255.51638975,-2639.392254834,211.54998818206158,600.1724664017922 -726924043.3406,-1451090.3591250002,89773014.83425917,-35412293.915972896,-2639.376553733,210.5581678626575,600.5637758224913 -726924093.1821,-1582639.8116370002,89783459.9160728,-35382341.47060728,-2639.3429723140002,208.57438909635007,601.3458843715373 -726924192.8649,-1845733.333405,89804053.43454798,-35322319.7207833,-2639.26709359,204.60630473772773,602.9080503131636 -726924392.2306,-2371894.790034,89844053.66033812,-35201809.74456053,-2639.0804817350004,196.66823423932004,606.024098005918 -726924790.9619,-3424082.940889,89919305.33013682,-34958931.68245038,-2638.567935165,180.7861308039764,612.2224255217883 -726925588.4247,-5527661.242567999,90050806.16408189,-34465807.35822738,-2636.986653843,149.01123016385685,624.4790503110905 -726927183.3501,-9729563.522266,90237817.33034839,-33450628.72744292,-2631.61363566,85.52357349977171,648.3940585790831 -726928778.2756,-13920571.56473,90323762.86816444,-32397987.26606635,-2623.3355461540004,22.316463445253362,671.4435450610808 -726930373.2011,-18096106.66134,90309275.9078474,-31309323.264820542,-2612.224997837,-40.37857165639278,693.5540381147647 -726931968.1265,-22251724.8799,90195351.63390024,-30186186.401050262,-2598.378071318,-102.33960621054308,714.6619805081748 -726933563.052,-26383152.747870002,89983329.44631764,-29030219.3732012,-2581.912029002,-163.35742091810755,734.7143736409572 -726935157.9775,-30486318.94848,89674870.50775342,-27843140.730039287,-2562.962619942,-223.2381609049043,753.6691381632872 -726936752.9029,-34557381.404139996,89271931.51813361,-26626727.39229965,-2541.681090832,-281.80548568372546,771.4951958116955 -726938347.8284,-38592749.6579,88776735.22141919,-25382797.09117133,-2518.231033828,-338.90216683430754,788.1722887581702 -726939942.7538,-42589101.82828999,88191739.2192364,-24113191.539257355,-2492.785172082,-394.39114063531963,803.6905655341277 -726941537.6793,-46543396.65551,87519603.25263208,-22819760.263947707,-2465.522210579,-448.1560165637122,818.04996697489 -726944727.5302,-54315090.78255001,85925363.27985463,-20168768.907619152,-2406.271960945,-550.1508879236833,843.3361076563963 -726947917.3812,-61889274.27071,84018094.57904676,-17444239.20198912,-2341.921832358,-644.358887292244,864.1940637389421 -726951107.2321,-69251896.07180001,81823085.62544115,-14659900.784877248,-2273.845369793,-730.543257679305,880.8856051704515 -726954297.083,-76393105.35028,79365974.17771614,-11828533.465588648,-2203.295607057,-808.7135404840383,893.7394259982368 -726957486.934,-83306811.63467,76672042.82953179,-8961800.497127187,-2131.373556705,-879.0741841454685,903.1224851936222 -726960676.7849,-89990174.22042,73765679.69481434,-6070166.02721158,-2059.01480078,-941.973329054481,909.4161122215091 -726963866.6358,-96443072.17879,70669995.84625793,-3162880.0683778524,-1986.9899984249998,-997.8563091760591,912.9976022109371 -726967056.4867,-102667592.2617,67406580.05159146,-248013.56027605012,-1915.914944545,-1047.226313184316,914.2271422247977 -726970246.3377,-108667558.9311,63995366.4194109,2667472.481290154,-1846.266322188,-1090.6130193662782,913.4393928084451 -726973436.1886,-114448119.7097,60454589.5138306,5577637.292991225,-1778.400111623,-1128.5489165743325,910.9388224648629 -726976626.0395,-120015389.9684,56800804.41400489,8477460.215986524,-1712.570470188,-1161.5524025701452,906.9978659073669 -726979815.8904,-125376157.6671,53048950.651990876,11362738.603476562,-1648.9477120810002,-1190.1164850690643,901.8570822880879 -726983005.7414,-130537642.35730001,49212445.24637265,14229988.200186621,-1587.63455901,-1214.7018883210512,895.7266211463426 -726986195.5923,-135507302.4366,45303292.15994849,17076349.48658374,-1528.680311182,-1235.7334755829936,888.7884707890115 -726989385.4432,-140292684.6778,41332199.164138995,19899502.031839773,-1472.092873633,-1253.5990555063756,881.1991007249133 -726992575.2942,-144901308.4904,37308695.618974,22697587.48729687,-1417.84873982,-1268.649841826525,873.0922333276469 -726995765.1451,-149340579.3459,33241247.00484579,25469141.43554306,-1365.9011331069999,-1281.2019847993138,864.5815649218289 -726998954.996,-153617725.2251,29137363.427500356,28213033.60969834,-1316.18654672,-1291.5387591981585,855.7633331694137 -727002144.8469,-157739751.894,25003700.437892497,30928416.056679334,-1268.629924007,-1299.9130959708596,846.7186687256656 -727005334.6979,-161713412.811,20846151.67348263,33614678.35113181,-1223.1487143499999,-1306.5502467742695,837.5157081693686 -727008524.5488,-165545190.4227,16669932.835927758,36271409.21351483,-1179.6560043690001,-1311.65043881185,828.211463132307 -727011714.3997,-169241286.23999998,12479657.445115816,38898363.678814925,-1138.062907016,-1315.3914268130313,818.8534558349012 -727014904.2506,-172807617.54450002,8279404.640948407,41495435.1505747,-1098.280355319,-1317.9308888066203,809.4811378141216 -727018094.1016,-176249819.0228,4072779.6514743064,44062631.65124543,-1060.220426411,-1319.408635796019,800.1271124940096 -727024473.8034,-182782992.5097,-4347219.249472465,49107887.27001946,-988.9279094666999,-1319.660776156295,781.5762504843791 -727030853.5053,-188880490.327,-12759081.745178748,54035796.04506196,-923.5344813037,-1316.9806459221159,763.3609068790211 -727037233.2071,-194578014.86699998,-21146276.404700305,58848853.35990721,-863.444077457,-1312.0243989585351,745.5844222933204 -727043612.909,-199907651.8901,-29496000.85877916,63550078.15536514,-808.1191180021,-1305.310626773343,728.3098856020583 -727049992.6109,-204898241.8935,-37798405.39472585,68142795.70310327,-757.079355577,-1297.2509020437094,711.5719070309664 -727056372.3127,-209575735.172,-46045989.41478434,72630484.33785395,-709.8982253459,-1288.1735210062357,695.3850131651261 -727062752.0146,-213963519.28800002,-54233131.20738749,77016667.32456177,-666.1980480538,-1278.341932773796,679.7496047407185 -727069131.7164,-218082714.5496,-62355722.00161683,81304837.00058058,-625.6448801263,-1267.9690629933516,664.6561619384231 -727075511.4183,-221952436.79860002,-70410880.619151,85498401.40760195,-587.9434228747,-1257.2284774165332,650.088179478735 -727081891.1201,-225590028.23200002,-78396731.4115875,89600646.5375252,-552.8321997791,-1246.2631191953078,636.0241787538878 -727088270.822,-229011258.8596,-86312231.65240338,93614709.20110635,-520.0790764497,-1235.192172032877,622.4390405836539 -727094650.5238,-232230500.2111,-94157037.86078018,97543556.63917103,-489.47712000810003,-1224.1164622273993,609.3048330204816 -727101030.2257,-235260873.74199998,-101931402.7927269,101389970.20919707,-460.8407509407,-1213.1226929945344,596.5912601705678 -727107409.9275,-238114375.3958,-109636096.17757384,105156530.94536705,-434.0021149435,-1202.2867060824915,584.2658291764286 -727113789.6294,-240801977.4881,-117272343.54171227,108845605.53885835,-408.8075917143,-1191.67587397788,572.2938188907519 -727120169.3313,-243333708.5867,-124841777.5301046,112459331.6991638,-385.11436854339996,-1181.3506412624304,560.6381394586734 -727126549.0331,-245718711.5648,-132346396.24351716,115999602.56876588,-362.78703592380003,-1171.365148509474,549.2591936617881 -727132928.735,-247965280.09750003,-139788522.2246087,119468050.64279875,-341.69423765380003,-1161.7668010612351,538.1148962876822 -727139308.4368,-250080874.34350002,-147170754.9086712,122866032.90199782,-321.70553076609997,-1152.5946029857143,527.1610675738661 -727145688.1387,-252072118.0699,-154495908.033119,126194620.33869946,-302.68880767900004,-1143.876113066262,516.3524821369788 -727152067.8405,-253944782.7512,-161766923.31476736,129454597.15295544,-284.5088793403,-1135.623059784934,505.6448854300615 -727158447.5424,-255703768.37539998,-168986752.8141019,132646476.5362814,-267.02804931640003,-1127.826047418043,494.998221187029 -727164827.2442,-257353096.771,-176158207.30423772,135770541.0383679,-250.10955594579997,-1120.4494116896606,484.38105944731234 -727171206.9461,-258895937.4066,-183283776.7223231,138826913.80979455,-233.6243837195,-1113.4279940016977,473.77572131216533 -727177586.648,-260334686.7129,-190365442.09841943,141815661.9025331,-217.46096098930002,-1106.6679937664726,463.18295144605094 -727183966.3498,-261671113.5451,-197404510.6182611,144736923.59627095,-201.5358006637,-1100.053593820126,452.62448572911865 -727190346.0517,-262906567.11349997,-204401512.13571998,147591041.02126604,-185.8018787698,-1093.4593835012054,442.1419756841053 -727193535.9026,-263486796.1055,-207884185.99395746,148993111.7477901,-178.0027551988,-1090.131931606485,436.94644619803836 -727196725.7535,-264042222.4249,-211356188.05059063,150378672.48632377,-170.2514727794,-1086.7662089339003,431.7917311109273 -727199915.6045,-264573005.30040002,-214817377.46899062,151747866.1102444,-162.55248452179998,-1083.3507846852006,426.68577089876226 -727203105.4554,-265079320.7651,-218267580.14026707,153100860.57746345,-154.91179533800002,-1079.8762551101415,421.63630447010297 -727206295.3063,-265561365.91599998,-221706595.4136042,154437847.84937564,-147.336535937,-1076.3353958139517,416.6506038250271 -727209485.1572,-266019361.81039998,-225134203.13019842,155759042.0404362,-139.8345246379,-1072.7231944568102,411.7352543528998 -727212675.0082,-266453554.9775,-228550170.58307508,157064676.94983244,-132.4138481345,-1069.0367753715486,406.89599070127474 -727215864.8591,-266864217.6645,-231954259.0927051,158355003.16502458,-125.0824863865,-1065.2752357048469,402.13759182240204 -727219054.71,-267251646.9764,-235346229.9484153,159630284.92262065,-117.8479989798,-1061.4394171771346,397.46383310123764 -727222244.5609,-267616163.12939999,-238725849.55507678,160890796.89921072,-110.7172819975,-1057.5316385991057,392.8774890452784 -727225434.4119,-267958107.04189998,-242092893.6933686,162136821.0790639,-103.6963969166,-1053.5554123730285,388.3803772113352 -727228624.2628,-268277837.49040002,-245447150.87769988,163368643.81382963,-96.79046706909,-1049.5151644222017,383.97343282387897 -727231814.1137,-268575728.03180003,-248788424.84592998,164586553.1556395,-90.00363313797,-1045.4159722131485,379.6568036612718 -727235003.9647,-268852163.8637,-252116536.2558087,165790836.5117785,-83.33905696805,-1041.2633306637629,375.429955827855 -727241383.6665,-269342252.1713,-258732644.06112152,168159660.01287478,-70.38470173193,-1032.820596438903,367.2407107928754 -727247763.3684,-269751305.18,-265294402.2940125,170477333.12267667,-57.935246001239996,-1024.232504263629,359.39182901922817 -727254143.0702,-270082538.70460004,-271801022.4507816,172745970.2700941,-45.98742369747,-1015.5419161447659,351.86490520529327 -727260522.7721,-270339120.08159995,-278251975.1568619,174967560.37574482,-34.52978576794,-1006.7869951255834,344.63932861280273 -727266902.4739,-270524124.7058,-284646957.2364129,177143958.39619374,-23.54534946223,-998.0004302687179,337.6939340860073 -727273282.1758,-270640507.8302,-290985856.466968,179276885.4612247,-13.01375340115,-989.2094418636734,331.00807131142176 -727279661.8776,-270691088.4831,-297268717.91891736,181367934.3530212,-2.9128883107959997,-980.4362130386269,324.5622322090924 -727286041.5795,-270678542.28440005,-303495713.73425007,183418577.95968607,6.77993796151,-971.6985111321515,318.33836808516395 -727292421.2814,-270605400.3961,-309667117.09967834,185430179.0119831,16.08721031795,-963.0103549816897,312.320003051649 -727298800.9832,-270474052.621,-315783280.37825173,187404000.1501029,25.03069952532,-954.3826498537657,306.49222237738707 -727305180.6851,-270286752.9891,-321844617.1062264,189341213.62922505,33.631160022669995,-945.8237533229915,300.8415897213131 -727311560.3869,-270045626.8222,-327851587.3216623,191242910.3918689,41.90817016185,-937.3399600963485,295.35602885706015 -727317940.0888,-269752678.4789,-333804685.73810726,193110108.32900155,49.88006835678,-928.9359070193497,290.0246919934467 -727324319.7906,-269409799.291,-339704432.26840687,194943759.68620622,57.563951575299996,-920.6149058598717,284.83782780043475 -727330699.4925,-269018775.3871,-345551364.45714766,196744757.6658337,64.97571258442001,-912.3792136399518,279.7866564813221 -727337079.1943,-268581295.1899,-351346031.4743364,198513942.24808994,72.13009984778999,-904.2302507439703,274.86325534191144 -727343458.8962,-268098956.4931,-357088989.35987467,200252105.3273996,79.04078925506,-896.1687760274292,270.0604562448051 -727349838.598,-267573273.06069997,-362780797.2638655,201959995.2309685,85.72046064841001,-888.1950269762957,265.37175495044437 -727356218.2999,-267005680.7353,-368422014.4943167,203638320.69367284,92.18087464879001,-880.3088317307775,260.7912316986408 -727368977.7036,-265750156.4632,-379554901.5627165,206908935.89075387,104.4868191594,-864.7968873993667,251.93355665967454 -727381737.1073,-264342514.42720002,-390492052.1398163,210068952.2207288,116.0370438274,-849.6263598716824,243.44935247073914 -727394496.511,-262791953.20539996,-401237767.0623065,213122923.42840847,126.89955312560001,-834.7882627287396,235.3063166402672 -727407255.9147,-261106860.9564,-411796223.1462178,216075021.4751262,137.1336295053,-820.2722842692696,227.47674000698007 -727420015.3185,-259294917.48,-422171460.9862222,218929089.19928947,146.79123412959999,-806.0674768520523,219.9366117270239 -727432774.7222,-257363180.0452,-432367379.8945052,221688682.92965034,155.9181566057,-792.1626971685562,212.66493595688664 -727445534.1259,-255318155.97570002,-442387737.2755374,224357107.48966655,164.55495667530002,-778.5468851859271,205.64320473128976 -727446035.9933,-255235488.30920002,-442778331.65358716,224460245.02395818,164.88516615650002,-778.0170878349508,205.37189233245834 -727456763.5394,-253407183.1104,-451078141.7254839,226633472.51991504,173.85396132149998,-768.095278044593,199.7389495242624 -727493527.5211,-246611602.51319999,-478628718.460135,233632387.87206173,195.2999743515,-731.0376113501293,181.28896139911558 -727530291.5028,-239082754.78340003,-504854387.4987286,239982185.3533748,213.8371356339,-695.9833092786167,164.38405733843905 -727567055.4845,-230918212.9562,-529825061.6688917,245735395.12431395,229.9535515437,-662.7339491420763,148.8013371164368 -727603819.4662,-222199725.2017,-553603887.9360781,250937295.99476948,244.0283120435,-631.1192744581407,134.3664436767526 -727640583.4478,-212996607.4338,-576248210.5648272,255627430.75054896,256.3630032287,-600.9931742882468,120.93980232339725 -727677347.4295,-203368177.8772,-597810381.2385134,259840704.3853316,267.2026187787,-572.2294932075644,108.40749450763856 -727714111.4112,-193365565.8236,-618338422.2256026,263608206.73785403,276.7497742218,-544.7182519935712,96.67494575634858 -727750875.3929,-183033070.5323,-637876558.7289366,266957833.35801595,285.174583734,-518.3624496927074,85.66241272574096 -727787639.3746,-172409229.313,-656465649.8280431,269914771.3310753,292.6215995782,-493.07546092399645,75.30170071772685 -727824403.3562,-161527653.7213,-674143527.14419,272501873.296887,299.2148022242,-468.778978993113,65.53372961242005 -727861167.3379,-150417718.3987,-690945271.4931769,274739958.946013,305.06122228799995,-445.4014391123139,56.306725179051625 -727897931.3196,-139105132.1399,-706903437.9743948,276648057.4355556,310.253644308,-422.87684023393933,47.574862094157695 -727934695.3013,-127612421.9247,-722048243.8628364,278243606.4172234,314.8726815471,-401.143886449199,39.297241089723755 -727953077.2921,-121804793.5803,-729324480.3135638,278929230.38811696,316.9894552527,-390.5562525519333,35.31714205119296 -727962268.2876,-118886664.13049999,-732890026.3092585,279244839.48197526,318.0031927831,-385.3291341574808,33.364875577828016 -727966863.7853,-117424138.5202,-734654833.502658,279395943.63307,318.4993128649,-382.73188447521846,32.397962211200365 -727969161.5341,-116692024.7943,-735532767.4152275,279469832.9096098,318.7447357513,-381.43729205748065,31.916782906189 -727970310.4085,-116325756.9621,-735970619.6467189,279506363.3706704,318.866794055,-380.79099837759384,31.676759189154055 -727970884.8458,-116142570.5221,-736189267.4169127,279524525.2463568,318.9276606843,-380.46810147544545,31.556888390862156 -727971172.0644,-116050964.1984,-736298521.7574452,279533580.36909527,318.9580534632,-380.30671542207733,31.496988203972705 -727971315.6737,-116005157.7638,-736353131.5465424,279538101.4794871,318.9732397308,-380.22603798444635,31.4670469070372 -727971459.283,-115959349.1489,-736407729.7503505,279542618.29045314,318.98841925470003,-380.1453709351379,31.437111471888443 -727971746.5016,-115867725.3819,-736516891.4086745,279551639.01779795,319.0187580851,-379.98406798821986,31.37725817934522 -727972320.9388,-115684451.72569999,-736735075.7673749,279569628.916299,319.0793549715,-379.66158661803024,31.25762185320329 -727973469.8132,-115317800.14019999,-737170888.9869863,279605402.67698884,319.2002264007,-379.0171212813374,31.018629815834572 -727975767.5621,-114584081.601,-738040296.0976756,279676127.5549355,319.440685889,-377.73017470542646,30.54176484764244 -727980363.0598,-113114996.7315,-739770254.209802,279814298.69396955,319.9165190265,-375.16417396754116,29.592484657283677 -727989554.0552,-110170343.6793,-743194914.1068333,280077621.2414043,320.8482168065,-370.06339298711777,27.71151222838708 -728007936.046,-104255941.78940001,-749904529.729193,280552930.9966467,322.63463949799996,-359.98396096024607,24.018268300852142 -728044700.0277,-92333071.58474,-762775141.1297104,281303936.6418971,325.9213137966,-340.29224363325227,16.893947249995477 -728081464.0094,-80295824.93925999,-774932679.3632128,281799114.3927994,328.8639378616,-321.18440612794654,10.09659689957293 -728118227.9911,-68156103.63226,-786397788.0252773,282050018.0604229,331.50217420990003,-302.61618931796585,3.6011936764613637 -728154991.9728,-55924453.49898,-797189534.1731142,282067321.7142627,333.8702496326,-284.5460590673118,-2.615139545250912 -728191755.9544,-43610251.49989,-807325505.4957135,281860894.37472504,335.9976309897,-266.93504491189566,-8.573355425301614 -728228519.9361,-31221869.510050002,-816821901.6375283,281439867.09200966,337.9096205096,-249.74658027747293,-14.29267689417081 -728265283.9178,-18766817.88359,-825693619.6369731,280812693.3865947,339.6278773652,-232.94634215442176,-19.790770239715727 -728302047.8995,-6251870.067664,-833954333.4511023,279987203.3240147,341.17087143320003,-216.50208977157536,-25.083900713549426 -728375575.8628,18933654.94217,-848691764.6084068,277769766.801208,343.7912863602,-184.56202690750325,-35.11415447338796 -728441751.0299,41748961.94043,-859980439.6313822,275163257.1246104,345.6829274473,-156.74700847382206,-43.57957865796632 -728495450.2808,60346437.57518,-867804209.645189,272646527.6109171,346.9289918307,-134.71916101093169,-50.106803427119345 -728495450.2808,60346435.687869996,-867804209.7932012,272646528.77812606,346.9289918784,-134.71916374685492,-50.1068020981393 -728510812.1388,65678329.53632,-869825904.3089615,271862819.04058284,347.2408200207,-128.49591617003384,-51.92275153475627 -728569348.5954,86035585.76392,-876659652.6627588,268625084.8480593,348.2548606083,-105.06099895486429,-58.6511464971511 -728598616.8237,96234492.0846,-879565062.027766,266860620.54730183,348.6608482593,-93.49067404427379,-61.90971662063029 -728627885.052,106444309.82169999,-882133091.0581666,265001740.4968732,349.00054551339997,-82.00498707540257,-65.10359204297293 -728657153.2803,116663102.4956,-884366074.6946303,263050278.74526316,349.274125239,-70.59427055172284,-68.23680147244961 -728686421.5086,126888931.59809999,-886266069.5519073,261007954.33378842,349.481278103,-59.24917013800661,-71.31317681044803 -728715689.7369,137119842.6595,-887834862.8399358,258876376.90557626,349.6212245267,-47.96062871425314,-74.33636305629166 -728744957.9652,147353851.6349,-889073980.8643911,256657052.04719186,349.6927242948,-36.719873293241136,-77.30982659616242 -728809998.4726,170096884.2225,-890653298.3930886,251418005.07386625,349.5973397389,-11.869086193077749,-83.75584940709314 -728875038.9799,192821738.8439,-890620213.0112586,245766258.49629003,349.1284597759,12.875875575054387,-90.0055890537142 -728947306.2103,218019228.1387,-888697258.4398642,239016787.16655248,348.12408372330003,40.34610894522195,-96.75516947828241 -728983439.8255,230585786.1311,-886990936.9382981,235460774.1238847,347.4118306724,54.10316487576321,-100.06379690543551 -729001506.6331,236858738.99760002,-885951243.4337378,233638116.1309266,346.9991163038,60.99257397512311,-101.70330561711947 -729010540.0369,239992331.1444,-885384700.7863455,232715700.61297584,346.7780540525,64.44064289543374,-102.51955768410699 -729015056.7388,241558367.10209998,-885089746.2973856,232251730.3520154,346.6637738425,66.16559704877446,-102.92683189044234 -729017315.0898,242341190.0942,-884939347.0304121,232019055.71240366,346.6056871739,67.02831375429552,-103.13025893454301 -729018444.2652,242732552.2187,-884863416.7320895,231902546.1532935,346.5764060252,67.45973322005118,-103.2319202996667 -729019008.853,242928220.8598,-884825268.8965194,231844248.33102685,346.56170584989997,67.67545838135958,-103.28273798742782 -729019291.1469,243026052.06509998,-884806149.3046823,231815088.66140974,346.55434084350003,67.78332483789914,-103.30814358816235 -729019432.2938,243074966.8879,-884796578.0897883,231800506.13722932,346.55065460829996,67.83725903732397,-103.32084557839426 -729019573.4407,243123881.19009998,-884786999.2623533,231785921.82021803,346.5469658843,67.89119388509614,-103.33354702878175 -729019855.7346,243221708.2317,-884767818.7688475,231756747.8080267,346.5395809669,67.99906552913669,-103.35894831110707 -729020420.3223,243417356.0537,-884729366.4255484,231698378.27348298,346.52478123640003,68.21481662774258,-103.40974440679763 -729021549.4978,243808626.574,-884652096.292961,231581553.17989284,346.4950620445,68.64635021697993,-103.5113107664474 -729023807.8488,244591066.4886,-884496094.0773077,231347559.03090167,346.4351435461,69.50954415832479,-103.71434051033438 -729028324.5507,246155536.7383,-884178240.4935496,230878195.9668706,346.31337652080003,71.23644862314477,-104.11999089127735 -729037357.9545,249282797.991,-883519125.5806756,229933979.3256777,346.0620450298,74.69239963850872,-104.92967730037816 -729055424.762,255530270.7807,-882107170.640565,228023650.9404486,345.5275615415,81.6134683727847,-106.54276479405974 -729091558.3772,267994268.04180002,-878907527.4754051,224115926.82643783,344.32607246559996,95.49693622809617,-109.74510280905072 -729163825.6076,292774984.96779996,-870997425.2705147,215955985.99545258,341.347978036,123.46452159677159,-116.06370191403335 -729236092.838,317310078.2759,-861054710.2395713,207343135.92799664,337.5085371442,151.76135049527815,-122.28189936426133 -729308360.0684,341532803.6451,-849053164.5587921,198284159.4384153,332.6806205885,180.45284277129198,-128.41177751035872 -729380627.2988,365366641.5298,-834962207.408092,188785187.5227572,326.7206741678,209.59424679100556,-134.4592234154852 -729452894.5292,388724067.7953,-818747650.8260541,178852165.38239703,319.46749697459995,239.2300178919422,-140.4233838326375 -729517935.0365,409256166.8549,-802308352.6603786,169546503.15256992,311.6853460199,266.3521224365921,-145.71312860172387 -729582975.5439,429239398.9101,-784090710.6235461,159899517.57503593,302.5645003698,293.91590352156,-150.91657242593973 -729616144.082,439189598.63879997,-774106298.6526178,154850394.18922433,297.34708031130003,308.14461109944654,-153.5312135745924 -729626433.9359,442240532.6017,-770912720.4641358,153266441.20547304,295.6458741934,312.58238536692403,-154.33634912811462 -729659562.5957,451940753.8458,-760319686.467211,148110804.9842191,289.8916178106,326.9455289242759,-156.9074289611413 -729692691.2556,461443103.9023,-749248924.6819474,142870564.01878417,283.6963138784,341.4228701698467,-159.44331280338105 -729725819.9154,470732576.6223,-737696682.3566922,137546955.0569534,277.03603535499997,356.01245620090793,-161.9396426579172 -729758948.5752,479793365.4525,-725659282.4665639,132141367.75695851,269.8864209577,370.7116772582861,-164.39154572204131 -729792077.235,488608852.9412,-713133144.8031485,126655361.46897349,262.22293290510004,385.5173054373906,-166.7936604521528 -729825205.8948,497161610.4302,-700114805.9400527,121090680.5250518,254.02119306049997,400.42552544989763,-169.1401861301928 -729858334.5547,505433409.6459,-686600938.4940925,115449267.85339412,245.25739752639998,415.43192738084923,-171.42495733914 -729891463.2145,513405249.92590004,-672588372.0269839,109733275.22770676,235.90879273279998,430.5314166349687,-173.64154137883875 -729928272.8365,521887025.86459994,-656430333.3390508,103297589.40540287,224.80981605739998,447.4104634444799,-176.01641668314738 -729969172.4165,530814181.19719994,-637745966.0369421,96046623.23333111,211.5682686718,466.2785675321332,-178.5357768434663 -729989622.2066,535069666.5336,-628113841.9990269,92383184.33293673,204.5789225085,475.7521611483848,-179.74456172448402 -730010071.9966,539179665.2348,-618287747.4797021,88695391.76497701,197.3390205207,485.24847304925555,-180.91731345963842 -730030521.7866,543139018.3244,-608267250.5016319,84983998.71996722,189.84513996040002,494.7642404220792,-182.0524308112032 -730050971.5766,546942497.4090999,-598051990.464327,81249791.50520355,182.0938923399,504.2957466115002,-183.14827332662662 -730071421.3666,550584803.927,-587641687.3019214,77493590.55673164,174.0817806549,513.8388295388302,-184.20313961802634 -730091871.1566,554060565.3113999,-577036150.2751288,73716251.92727408,165.80504080460003,523.3889246456467,-185.2152448168652 -730112320.9466,557364328.0254,-566235285.5249878,69918669.1875233,157.25947870279998,532.9411418139366,-186.1826989645502 -730132770.7366,560490546.9949,-555239101.6653184,66101775.80038631,148.4403177049,542.4903687339494,-187.10348923955883 -730153220.5267,563433572.3571,-544047713.1171598,62266547.761160195,139.3420670521,552.0313905709556,-187.97546723380944 -730173670.3167,566187633.7509,-532661340.9460535,58414006.45183948,129.9584189798,561.5590113854679,-188.79634195754284 -730194120.1067,568746822.8229,-521080311.32326937,54545221.58461577,120.2821766816,571.0681617607162,-189.56367763677451 -730204345.0017,569951451.5674,-515216929.81280756,52605086.044413865,115.3318291115,575.8142819250811,-189.9264677009328 -730209457.4492,570534687.6144,-512267048.8162615,51633645.437610686,112.8281247975,578.1849700664006,-190.10249780494107 -730212013.6729,570821493.3686,-510787564.36816275,51147589.96839923,111.5690776857,579.3696897390383,-190.1891529839772 -730213291.7848,570963687.8049,-510046686.62692416,50904479.45893788,110.93774740730001,579.9618896042166,-190.23213824664873 -730213930.8408,571034482.2387,-509675963.9369167,50782903.63825527,110.6216295774,580.2579490635443,-190.25354499966687 -730214250.3687,571069803.6751,-509490531.6445615,50722110.602509886,110.4634573628,580.4059686149774,-190.26422686938054 -730214410.1327,571087445.4376,-509397797.76254886,50691712.80524689,110.3843429146,580.4799758387297,-190.26956242290757 -730214490.0147,571096261.5787001,-509351426.387732,50676513.5870229,110.3447786034,580.5169788115212,-190.2722288537187 -730214569.8967,571105074.5590999,-509305052.0569753,50661314.15589008,110.3052095666,580.5539813580459,-190.27489438704265 -730214729.6607,571122691.0363001,-509212294.52808845,50630914.6548737,110.2260573139,580.6279851712821,-190.28022276054978 -730215049.1886,571157886.0460999,-509026744.0015979,50570113.100572556,110.0676960767,580.775987670326,-190.29086873022516 -730215688.2446,571228124.2028,-508655501.0813527,50448499.798291504,109.7507465466,581.0719720991399,-190.312117522876 -730216966.3565,571367992.3865,-507912447.83301544,50205232.54833463,109.1159382367,581.6638582039365,-190.35444222216444 -730219522.5802,571645290.8052,-506424072.2023907,49718536.500083,107.8426763496,582.8472956114807,-190.43839767617393 -730224635.0277,572190092.2412001,-503438248.45235753,48744506.522322804,105.2815045805,585.2128011156448,-190.60351348828746 -730234859.9227,573240162.06,-497430344.52978206,46793962.29379672,100.1000212081,589.9380975143451,-190.92240834582603 -730255309.7127,575179314.6289,-485269797.1072515,42883486.92848623,89.49591255713001,599.3639861149871,-191.51357016931254 -730275759.5027,576898252.5147,-472916856.8268287,38961578.670069486,78.56099233392,608.7535535211604,-192.04003629752452 -730296209.2928,578390089.5828,-460372306.5561357,35029592.64707008,67.28325035232,618.1029029133804,-192.49863858613665 -730316659.0828,579647683.8712,-447637007.57678515,31088950.50289437,55.64967332823,627.4082477244531,-192.88603703805586 -730337108.8728,580663616.8138,-434711898.33746785,27141144.120711267,43.646217035439996,636.6658097805973,-193.19869812228083 -730357558.6628,581430171.7659,-421597995.4329857,23187739.8575072,31.25776649339,645.8717030114066,-193.43286682450713 -730398458.2428,582182655.2116001,-394808289.61146146,15270805.409053907,5.259754141304,664.1116236004203,-193.64939249009228 -730439357.8228,581836558.1002,-367277787.52219945,7352371.765287057,-22.48888869939,682.0897100551924,-193.49972938572688 -730474042.8825,580626640.4829,-343358541.4008476,647650.0852561891,-47.515847021089996,697.0948848422253,-193.05472491661487 -730508727.9421,578523125.0669,-318923255.81459874,-6036117.202941835,-74.0355133885,711.8381691003807,-192.2860415517054 -730543413.0017,575472047.5265,-293981836.16639775,-12687108.112389281,-102.17660419250001,726.2701456557172,-191.15842430223273 -730578098.0613,571414714.0556,-268546131.9700339,-19292173.771827325,-132.0833862771,740.3275896671663,-189.63042030819713 -730612783.1209,566287132.6679,-242630475.81122684,-25836601.709103405,-163.91738930370002,753.9298933717563,-187.65309023886851 -730647468.1805,560019382.9216,-216252359.2313751,-32303830.42434582,-197.8592439601,766.9747048198934,-185.16847543673993 -730682153.2401,552534920.1173,-189433277.38087344,-38675105.60604991,-234.110610674,779.3325120816729,-182.1077565461039 -730716838.2997,543749812.2236,-162199785.56446066,-44929065.78855082,-272.89612195219996,790.8398302077965,-178.38902419151762 -730751523.3593,533571910.7427,-134584819.10145968,-51041243.42609438,-314.46518731649996,801.2905423253688,-173.91456434223412 -730786208.4189,521899965.7593,-106629358.7625148,-56983460.553972006,-359.093400068,810.4248342209376,-168.567547975016 -730813500.3621,511593301.2898,-84426203.32980427,-61518489.45015916,-396.5561886166,816.4755185215697,-163.6563641994211 -730835762.5626,502409402.6111,-66202999.82471731,-65112384.59508702,-428.7655928597,820.5233976003805,-159.1311323130483 -730860624.7203,491283149.2433,-45757983.6289074,-68999661.56346513,-466.6089303622,823.9362417079832,-153.46098265450775 -730885486.878,479190173.90569997,-25244662.292234413,-72737111.80858542,-506.55428904819996,825.9808426608074,-147.06462633176935 -730910349.0357,466076552.6567,-4699997.762729146,-76305594.7903167,-548.7357489628,826.4134220448407,-139.8527733962041 -730935211.1934,451885019.4815,15832440.129764825,-79683597.32739338,-593.2875243556,824.9448775934429,-131.72360038627153 -730960073.3511,436555014.42249995,36301243.0013471,-82846902.24478394,-640.3393497074001,821.2322769795508,-122.56117758827827 -730984935.5088,420022876.80189997,56645707.11250794,-85768219.03370383,-690.0096262277,814.868950789245,-112.23386724948588 -731009797.6665,402222242.3685,76794109.52045482,-88416772.92346667,-742.3955303398,805.3732161363829,-100.59288110783473 -731034659.8243,383084734.6437,96661690.67890203,-90757865.09989096,-797.5588315262,792.175880984012,-87.47118543285524 -731059521.982,362541080.615,116148316.1107641,-92752413.17500742,-855.5061100787999,774.6070564429747,-72.68318240099464 -731071953.0608,351720457.28620005,125712624.57882923,-93606208.95875712,-885.5041458196,763.9432913941235,-64.60146472920744 -731084384.1397,340522804.34720004,135135810.81374684,-94356498.28241093,-916.1613372613,751.8834277375086,-56.02579080854349 -731096815.2185,328940094.9016,144399798.8644175,-94996970.03786395,-947.4491973921,738.3101327278108,-46.92859368336761 -731109246.2974,316964719.2633,153485003.9996585,-95520967.13853034,-979.3288029467,723.0979913919343,-37.28182383918326 -731121677.3762,304589625.93630004,162370232.54219788,-95921482.48056597,-1011.7489485110001,706.1135906986833,-27.057282276468726 -731134108.4551,291808486.88460004,171032584.10828978,-96191159.6764697,-1044.644073683,687.2158380679599,-16.227056857350618 -731146539.534,278615890.07879996,179447359.71050182,-96322299.9883951,-1077.9319628320002,666.2565856689638,-4.764081084374567 -731158970.6128,265007561.99189997,187587979.93333593,-96306877.02565274,-1111.511232493,643.0816468422282,7.357162601857681 -731171401.6917,250980622.39490002,195425918.6075886,-96136561.20584571,-1145.258637834,617.5323052837039,20.159772701517653 -731183832.7705,236533873.5449,202930658.9814087,-95802756.23870897,-1179.0262554199999,589.4474286879322,33.66337045603646 -731196263.8494,221668124.7788,210069680.5414182,-95296649.98333743,-1212.638634681,558.6663083091971,47.882835240039725 -731208694.9282,206386551.839,216808486.31777596,-94609282.35494462,-1245.8900513649999,525.0323508993349,62.826820997484106 -731221126.0071,190695088.97079998,223110681.8490963,-93731633.10767049,-1278.542049815,488.3977399821026,78.49605222429895 -731233557.0859,174602848.4731,228938118.82891756,-92654732.08449605,-1310.321515254,448.6291634469809,94.8814135318068 -731245988.1648,158122559.378,234251116.7806681,-91369794.2874749,-1340.9195854319998,405.6146577198329,111.9618708614914 -731258419.2436,141271012.5235,239008776.64043632,-89868381.54021502,-1369.991770711,359.2715497728292,129.70229045455488 -731270850.3225,124069494.50050001,243169399.4264058,-88142591.40048374,-1397.1596979780002,309.5553757007457,148.0512589623433 -731283281.4014,106544187.60069999,246691020.57112882,-86185272.38702466,-1422.014916928,256.4695136243281,166.93905165419696 -731295712.4802,88726507.41358,249532066.26136193,-83990262.60285175,-1444.1251883740001,200.07509682545486,186.27593820963745 -731309524.7901,68631236.51524,251841498.15697265,-81266660.12095931,-1464.9290160540002,133.6929883384397,208.1525128983963 -731323337.0999,48279381.31087,253208516.22070938,-78239046.58144712,-1481.176534787,63.67308984383204,230.26305128386926 -731337149.4097,27738017.85639,253585571.32861915,-74905636.03724031,-1492.2738745769998,-9.57255884325734,252.39327170043413 -731344055.5647,17419409.45966,253389755.72707036,-73124551.49144557,-1495.718927769,-47.240757926609874,263.39116865521237 -731350961.7196,7082103.611831,252931701.07783836,-71267796.93146409,-1497.678987875,-85.50219959779793,274.3015754425361 -731357867.8745,-3263452.652984,252207607.64186785,-69336091.35349053,-1498.099757168,-124.26957120786993,285.09110610187236 -731364774.0294,-13606462.0948,251214303.37628672,-67330387.0357255,-1496.93427052,-163.44849546661766,295.7256394075017 -731371680.1843,-23935831.32868,249949290.5890096,-65251873.45494746,-1494.14385254,-202.93820427738967,306.17066486258256 -731378586.3392,-34240230.7946,248410787.0973786,-63101978.69904302,-1489.698990485,-242.63237422993666,316.39165915098465 -731385492.4942,-44508161.06757,246597761.4733613,-60882368.187775776,-1483.580091454,-282.4201071309311,326.35448320698794 -731392398.6491,-54728023.47807,244509960.79661888,-58594940.60628894,-1475.778098967,-322.1870460312218,336.02579315829075 -731399304.804,-64888194.555740006,242147930.361789,-56241820.980116,-1466.2949435649998,-361.81660165597015,345.3734539387267 -731406210.9589,-74977102.94964,239513024.60019532,-53825350.91316153,-1455.1438081029999,-401.1912629308353,354.3669449776703 -731409664.0364,-79991251.04899,238093888.58551654,-52594147.413987786,-1448.949964782,-420.74636898686975,358.72187637907973 -731411390.5751,-82490128.42262,237359043.05282798,-51972948.76182147,-1445.700160824,-430.4845044199893,360.8623976987285 -731412253.8445,-83737441.14359999,236985321.3781094,-51660968.95617158,-1444.0372848089999,-435.34292940674914,361.92324372256877 -731412685.4792,-84360556.4646,236796888.53328094,-51504636.312845655,-1443.196386315,-437.7693832106145,362.45129127123414 -731412901.2965,-84671977.67499,236702279.45842984,-51426384.60557106,-1442.773576212,-438.9819082260572,362.7147184871296 -731413009.2052,-84827654.0191,236654876.80231127,-51387237.44314298,-1442.561581488,-439.58799373785826,362.84628262095214 -731413063.1595,-84905483.60733,236631150.95013133,-51367658.539427534,-1442.455436777,-439.89099205437924,362.91202727769485 -731413090.1367,-84944396.25328001,236619281.8936801,-51357867.757507,-1442.402327592,-440.0424800771166,362.9448902479223 -731413117.1138,-84983307.46616,236607408.75061405,-51348076.089124665,-1442.349193859,-440.1939606684016,362.9777469776168 -731413171.0682,-85061125.58986,236583650.20552334,-51328490.09369666,-1442.242852753,-440.49689953301277,363.04344171051457 -731413278.9769,-85216744.61132,236536084.08466765,-51289307.47262622,-1442.029876056,-441.10268778557963,363.1747562251401 -731413494.7942,-85527913.60226,236440755.76593202,-51210899.74757752,-1441.6027452810001,-442.31390486275205,363.43708511861655 -731413926.4289,-86149974.19109,236249315.18380523,-51053914.66839885,-1440.743778664,-444.7348891479898,363.9605397173708 -731414789.6982,-87392976.33075999,235863301.19255668,-50739268.42402598,-1439.007061384,-449.5709611463407,365.0026151398147 -731416516.237,-89874428.96334,235078766.12227872,-50107291.16448713,-1435.458789084,-459.2187448606458,367.0672649068182 -731419969.3144,-94818527.72159,233459871.44257027,-48832756.276665054,-1428.0654178329999,-478.41072666411526,371.1172680663442 -731426875.4693,-104626769.7492,230024571.66913006,-46242666.93304731,-1412.113707609,-516.3320553463565,378.890345832501 -731433781.6243,-114319614.5643,226329758.79159078,-43600447.85858686,-1394.657028265,-553.5473807461366,386.2106960850202 -731440687.7792,-123886892.2587,222380663.99510473,-40909287.63058387,-1375.761668113,-589.954819688271,393.06091164286124 -731447593.9341,-133318921.2104,218183199.14114657,-38172483.68602974,-1355.502591798,-625.4593101315191,399.42689692224985 -731454500.089,-142606564.5483,213743906.2457351,-35393419.09664409,-1333.962414089,-659.9735743334184,405.2979592002069 -731461406.2439,-151741279.1451,209069900.85089475,-32575538.930659793,-1311.230267594,-693.4189186656974,410.6668364176167 -731468312.3989,-160715156.44349998,204168810.58566996,-29722326.679906167,-1287.4005967090002,-725.7258570695017,415.5296632981141 -731475218.5538,-169520955.0417,199048709.63240945,-26837280.9652351,-1262.571914766,-756.83454923604,419.88587952208627 -731489030.8636,-186602819.437,188185599.96162972,-20985626.896110542,-1210.324426191,-815.2674249916666,427.0918532002778 -731502843.1735,-202942972.1496,176551513.28835285,-15048051.982858397,-1155.3105649640002,-868.4371290451919,432.3398201505479 -731515274.2523,-216987799.72770002,165482574.87840202,-9652647.501333326,-1104.1052107530002,-911.6819114872814,435.46646870289527 -731527705.3312,-230389203.8718,153903223.16386843,-4227298.450257018,-1051.883255495,-950.5640195700728,437.1739840686367 -731540136.41,-243137858.4673,141867231.99386945,1210994.9708902314,-999.1698213075,-985.1697811847457,437.5674877778716 -731552567.4889,-255230663.0239,129426862.21625489,6646601.976306722,-946.4401469101,-1015.6541477371632,436.76132818753524 -731564998.5677,-266670082.91669998,116632088.86473384,12065345.136101484,-894.1137963955,-1042.2278147815596,434.87423020420937 -731577429.6466,-277463438.5911,103529985.3004039,17454528.019328482,-842.5521288116,-1065.1449904855244,432.025102246369 -731589860.7254,-287622179.7559,90164251.54222022,22802915.16959525,-792.0582775895,-1084.6925224381744,428.32956548535583 -731602291.8043,-297161170.4098,76574866.95537964,28100673.283509374,-742.8787872590999,-1101.1808118618742,423.8971802912645 -731614722.8832,-306097999.8691,62797844.100719765,33339281.777376838,-695.2060110694999,-1114.9366750602808,418.8292830765226 -731627153.962,-314452324.01540005,48865058.55047122,38511420.00086924,-649.1803660481,-1126.2980374688577,413.2173125631751 -731639585.0409,-322245228.35719997,34804137.12672033,43610835.36723699,-604.8915229065,-1135.6100224257782,407.14148335765697 -731652016.1197,-329498594.8464,20638389.03831837,48632196.827921465,-562.3776339866,-1143.2215640067643,400.66968839421196 -731664447.1986,-336234443.0421,6386783.779543592,53570935.94085481,-521.6218222938,-1149.4810216479389,393.85657618899245 -731676878.2774,-342474208.18020004,-7935998.363175362,58423077.624135226,-482.5456381327,-1154.728332822453,386.7428997523921 -731689309.3563,-348237923.404,-22319378.459366713,63185066.48661654,-445.00045575309997,-1159.280133226535,379.35551234094805 -731701740.4351,-353543298.8244,-36756440.73690009,67853600.97788462,-408.76048786030003,-1163.403656181919,371.7088170030586 -731714171.514,-358404763.5554,-51243085.08171269,72425500.81643234,-373.5254725851,-1167.2768261120393,363.80892886953217 -731726602.5929,-362832663.7047,-65776612.296562724,76897650.025931,-338.9456061324,-1170.9387141727852,355.6618193160481 -731739033.6717,-366832973.518,-80353717.1560607,81267066.96136358,-304.6803963557,-1174.2479178116732,347.2853736192859 -731750221.6427,-370069576.5265,-93505314.17399488,85109529.32855028,-273.9074624535,-1176.6598118672696,339.58490593003575 -731755815.6282,-371558774.8453,-100090165.01283272,86998287.55016851,-258.5213628674,-1177.5614955448248,335.6933548159391 -731761409.6136,-372961919.3893,-106679353.6089161,88865225.48549768,-243.142925121,-1178.2036905072844,331.78502501027106 -731767003.5991,-374279096.847,-113271314.58384019,90710274.6343253,-227.7893996432,-1178.5463031728718,327.8691114889896 -731772597.5846,-375510514.069,-119864271.00128199,92533419.45285511,-212.4861778504,-1178.5542812715012,323.9552658143086 -731778191.5701,-376656538.74579996,-126456269.11176044,94334698.67595968,-197.26497456459998,-1178.1996931877177,320.0531689337816 -731783785.5556,-377717728.4271,-133045222.10757259,96114204.2888612,-182.1615769141,-1177.4630926965851,316.172111143081 -731789379.5411,-378694846.7234,-139628959.73157388,97872078.28314075,-167.2134509351,-1176.3340785533992,312.3206265531378 -731794973.5266,-379588866.1329,-146205278.4806562,99608507.59967129,-152.4574871838,-1174.8110858473847,308.5062166045599 -731800567.512,-380400959.4105,-152771988.98757422,101323717.8344619,-137.9281043332,-1172.900550229627,304.73517905909415 -731806161.4975,-381132481.5074,-159326957.38568854,103017966.26533909,-123.65583965399999,-1170.615644543244,301.0125415495811 -731811755.483,-381784945.1745,-165868138.9007047,104691534.78323394,-109.6664640302,-1167.9747985780125,297.34208530686965 -731817349.4685,-382359992.96220005,-172393603.02663314,106344723.1452104,-95.9805837784,-1165.0001873852157,293.7264370668697 -731822943.454,-382859368.17660004,-178901550.46547213,107977842.88386251,-82.61364460875,-1161.7163267182914,290.16720489675004 -731828537.4395,-383284886.7443,-185390322.73111492,109591212.042795,-69.57623200578,-1158.1488618594267,286.665135921744 -731834131.425,-383638411.32180005,-191858405.62271866,111185150.81567141,-56.87456300404,-1154.3235894131242,283.2202780644641 -731839725.4104,-383921828.4992,-198304427.8848297,112759978.06799467,-44.51107870176,-1150.2657155164948,279.83213336281244 -731845319.3959,-384137029.4091,-204727156.34306392,114316008.67841364,-32.48506677719,-1145.9993308339695,276.4997950939759 -731850913.3814,-384285893.796,-211125488.6359381,115853551.5866266,-20.793264656450003,-1141.5470700607575,273.22206505984286 -731856507.3669,-384370277.3249,-217498444.46775797,117372908.44612089,-9.430412312169,-1136.9299195223548,269.99755019627185 -731862101.3524,-384392001.7975,-223845156.12405586,118874372.75478885,1.610261536134,-1132.1671375874153,266.8247395772493 -731867695.3379,-384352847.894,-230164858.77834356,120358229.37209053,12.33662539692,-1127.2762567305729,263.7020639525774 -731873289.3233,-384254550.0237,-236456880.97793886,121824754.32281017,22.75730182736,-1122.2731414289003,260.62794037290473 -731878883.3088,-384098792.915,-242720635.56229553,123274214.81647475,32.881389437909995,-1117.1720816414147,257.6008045629285 -731884477.2943,-383887209.5935,-248955611.1673217,124706869.41878651,42.71824245522,-1111.9859065319295,254.61913347077746 -731890071.2798,-383621380.451,-255161364.3946405,126122968.3269562,52.277299456570006,-1106.7261073808343,251.68146017606082 -731895665.2653,-383302833.15720004,-261337512.67652464,127522753.71174204,61.56795308803,-1101.402961977636,248.7863829567128 -731906853.2363,-382513434.88850003,-273599730.25591445,130274314.75444609,79.38083738383,-1090.6023940966008,243.11876102557292 -731918041.2072,-381530212.7964,-285740191.04940563,132963344.11895436,96.22806874729,-1079.6465634495207,237.60646559952633 -731929229.1782,-380363593.47720003,-297757447.2016846,135591529.8825763,112.1762328395,-1068.5853253235061,232.24078494811002 -731940417.1492,-379023286.8533,-309650551.24619997,138160468.28977403,127.28682344459999,-1057.4586688538889,227.01399297698188 -731951605.1201,-377518343.5811,-321418957.93266,140671674.06298798,141.6162261161,-1046.2988142665338,221.91922167552138 -731962793.0911,-375857211.00479996,-333062446.8705371,143126589.2938328,155.2159609828,-1035.131851728899,216.95033445810662 -731973981.0621,-374047785.5687,-344581061.3174263,145526590.96312946,168.1330475762,-1023.9790116271404,212.1018113664129 -731985169.033,-372097460.97319996,-355975059.5725713,147872997.2772584,180.41041130050002,-1012.8576471819672,207.36865019882347 -731996357.004,-370013171.6769,-367244876.03059137,150167072.9815741,192.08728874690001,-1001.7819958584773,202.74628367968165 -732007544.975,-367801431.9973,-378391089.77566516,152410033.83242595,203.19960904570002,-990.7637717944864,198.23051125081244 -732018732.9459,-365468371.1509,-389414399.0473422,154603050.37714294,213.7803417063,-979.8126294615265,193.81744348628703 -732029920.9169,-363019764.5722,-400315600.31530404,156747251.17264825,223.8598081785,-968.9365292607346,189.50345712840604 -732041108.8879,-360461061.96919996,-411095571.0215659,158843725.5573738,233.4659577856,-958.1420283403207,185.28515884989918 -732052296.8589,-357797412.47859997,-421755255.2306606,160893526.05260727,242.62461053570001,-947.4345137916727,181.15935594238357 -732063484.8298,-355033687.27140003,-432295651.62643456,162897670.46653748,251.35967050820003,-936.8183911054692,177.12303254550014 -732074672.8008,-352174499.9077,-442717803.4177201,164857143.76563862,259.6933133481,-926.297237866846,173.17333040879984 -732097048.7427,-346187013.58650005,-463211718.7611559,168645862.53618374,275.2373760803,-905.5507487754072,165.52305349254794 -732119424.6847,-339867367.3032,-483245943.8536215,172266965.02175948,289.4054220768,-885.2114115104856,158.18827923741918 -732141800.6266,-333244867.67509997,-502829704.59651804,175727301.03228492,302.32713619860004,-865.2885397000313,151.15052063737258 -732164176.5686,-326346102.1373,-521972374.32212055,179033324.08604795,314.11634195659997,-845.7862687144172,144.39281796567 -732186552.5105,-319195264.8327,-540683373.7035948,182191123.79065892,324.8734684272,-826.7049220231759,137.89956820038842 -732208928.4524,-311814433.9152,-558972098.4568917,185206454.47399247,334.6875411461,-808.0420337927391,131.65638862693822 -732228484.9862,-305191139.4938,-574617907.5942173,187729454.22676083,342.555122806,-792.0699011554319,126.39421176953462 -732234275.3077,-303201224.5324,-579190701.1336288,188456898.08216977,344.7651083839,-787.4008819576703,124.86963928940423 -732277931.5319,-287811565.381,-612810703.423312,193664589.0874688,359.81447344130004,-753.0686035999968,113.84213164555885 -732326438.4476,-270012894.5064,-648449703.2910957,198907712.54005933,373.5669347726,-716.6718303914454,102.48828129829658 -732374945.3634,-251613142.6417,-682366272.1495347,203621195.0433002,384.6724267491,-682.0363868403103,91.98992094701609 -732428841.9365,-230607140.8186,-718132450.476702,208285130.59034163,394.40034043279996,-645.5137057008452,81.23117609707566 -732482738.5095,-209140845.50289997,-751983297.3464673,212392860.923571,401.82281319370003,-610.9430187238341,71.33576070620012 -732536635.0826,-187327871.7256,-784020960.4096805,215988688.27786744,407.3234994346,-578.2114179051238,62.22289292471501 -732596520.1638,-162799136.6802,-817608531.2299409,219432474.92187423,411.57435855520004,-543.8661802017166,52.929249017351566 -732656405.2449,-138065345.0027,-849199537.596016,222343825.80374765,414.22972214159995,-511.50683337568955,44.42716257501036 -732716290.3261,-113212215.1575,-878908460.6032466,224767732.37942457,415.6088279447,-480.98484687906875,36.63718012712326 -732776175.4073,-88307883.94008,-906840869.2104051,226744604.8261185,415.98070372219996,-452.15113677009487,29.485528867611578 -732836060.4885,-63405740.21162,-933093401.5755005,228310579.89805198,415.5696741512,-424.8567800918876,22.903182467275883 -732866003.0291,-50968770.89574,-945617484.6017493,228949673.09802565,415.1295441094,-411.74082637056716,19.80516939396415 -732895945.5696,-38546966.743930005,-957753828.8050137,229497796.86337376,414.559798313,-398.95495239190893,16.825670653220982 -732925888.1102,-26143942.79569,-969512052.9671466,229958389.54589507,413.8778642889,-386.4815504013156,13.957373059002009 -732955830.6508,-13762821.98027,-980901255.1766815,230334675.23709774,413.0992097817,-374.3034607146459,11.193279780805113 -732985773.1914,-1406291.553607,-991930027.2743868,230629673.35729513,412.2374927658,-362.40403825662264,8.526717626264315 -733015715.732,10923344.97982,-1002606471.1178886,230846208.42029563,411.30471295760003,-350.7672071150572,5.951341335255549 -733030687.0023,17077451.36845,-1007814972.1230007,230925884.0917381,410.8150079629,-345.0424057783555,4.695954913943851 -733038172.6374,20151728.49066,-1010387195.4733051,230958712.80733362,410.5648569633,-342.2025823524138,4.076018178239536 -733041915.455,21688161.68012,-1011665349.3059376,230973391.6866355,410.43851886470003,-340.7882137290934,3.767950101229971 -733043786.8638,22456200.56664,-1012302442.7899704,230980299.32215732,410.3750416639,-340.08240266758185,3.6143863466242436 -733044722.5682,22840175.41543,-1012620494.4227967,230983645.44541407,410.3432269473,-339.7298388924584,3.5377214456013633 -733045190.4204,23032151.67048,-1012779396.5555862,230985291.61561054,410.3273006742,-339.55364224959715,3.499418165203295 -733045424.3465,23128137.00309,-1012858816.7120484,230986107.9814505,410.3193328232,-339.46556521513656,3.480273808250587 -733045541.3095,23176128.97036,-1012898519.0641978,230986514.4850953,410.3153477209,-339.42153201666,3.47070344937174 -733045658.2726,23224120.47147,-1012938216.2666095,230986919.86946815,410.3113618347,-339.377502362896,3.4611343032161415 -733045892.1987,23320102.07484,-1013017595.2230182,230987727.28107104,410.3033877125,-339.2894536856639,3.441999647627341 -733046360.0509,23512059.683679998,-1013176291.3529462,230989328.6785217,410.28743008379996,-339.1133988291166,3.4037448739050262 -733047295.7553,23895952.48932,-1013493436.576932,230992477.8036062,410.2554774015,-338.7614589139136,3.327293402839061 -733049167.1641,24663648.28963,-1014126739.6179291,230998561.62658373,410.1914232376,-338.05825673001726,3.1746221771001046 -733052909.9816,26198679.356519997,-1015389401.9747183,231009873.5809599,410.0627268488,-336.65455061879834,2.870201896995951 -733060395.6168,29267289.232470002,-1017898998.6600057,231029090.7332273,409.8030379672,-333.85783331484095,2.2650127194881833 -733075366.8871,35398622.060449995,-1022855649.393402,231054023.9989407,409.2749099231,-328.3064019506195,1.0689455330399795 -733105309.4277,47637163.5026,-1032521650.219145,231050861.82640022,408.1868966097,-317.3654760042894,-1.2682349347153519 -733135251.9683,59842560.90589,-1041863149.7466738,230978765.0659862,407.0621204861,-306.62926865463953,-3.5363314983486163 -733165194.5088,72013803.51203,-1050886083.5060524,230839730.18525493,405.9064422499,-296.08491155617236,-5.740110258021943 -733195137.0494,84150042.98337,-1059596011.266196,230635615.22208342,404.72486815070005,-285.72017070887796,-7.884053901446862 -733225079.59,96250569.36252,-1067998135.6788566,230368148.0367146,403.52165125880003,-275.523422614877,-9.97237758233284 -733255022.1306,108314789.90010001,-1076097320.144433,230038934.0734921,402.30038135399997,-265.48362503154385,-12.009045901923471 -733314907.2118,132332418.6862,-1091404726.9151418,229201118.39351952,399.8151858854,-245.83341540913815,-15.942127312428056 -733374792.293,156199874.77620003,-1105550969.7311125,228132825.3733932,397.28745112359996,-226.69150179041912,-19.710668729994154 -733434677.3741,179914984.8991,-1118564328.6057327,226843162.8433201,394.7286729452,-207.9868340134188,-23.339130913248226 -733494562.4553,203476093.3262,-1130469009.143266,225339848.67688864,392.1447783668,-189.65420387588307,-26.849549096477645 -733554447.5365,226881749.1367,-1141285461.2084804,223629343.51210335,389.53674812310004,-171.6332346696941,-30.26193576052021 -733614332.6177,250130418.9195,-1151030642.9852712,221716962.24090496,386.90085963620004,-153.86757748696814,-33.59458459458002 -733674217.6989,273220205.10209996,-1159718244.4184966,219606970.54846278,384.2286495407,-136.30436436383147,-36.86426510218901 -733734102.78,296148556.6761,-1167358886.6814907,217302673.2694734,381.506697406,-118.89395105836549,-40.086302537691616 -733793987.8612,318911962.2499,-1173960314.5035923,214806501.1978231,378.71633517019995,-101.58996632593545,-43.274543893692105 -733853872.9424,341505629.27169997,-1179527602.0019484,212120103.4824872,375.8333912428,-84.34966704866677,-46.44121638013983 -733861323.689,344304504.1938,-1180148088.1850994,211772617.51323286,375.46681209639996,-82.20717058474153,-46.83423276613361 -733883087.4275,352464322.47040004,-1181869136.3845866,210740844.71906102,374.3846188785,-75.95046552550505,-47.98142673903518 -733938413.0797,373099515.1685,-1185631219.7863185,208005642.55360103,371.5471576832,-60.04634174332915,-50.89457428964407 -733993738.7319,393573770.3205,-1188513019.8816285,205109296.32545102,368.5615504179,-44.12491212345356,-53.80750754877529 -734055211.6788,416123061.4674,-1190680705.6949892,201702009.15302753,365.0301525203,-26.39056843756207,-57.04833302723718 -734116684.6257,438447136.8706,-1191756308.4149425,198095304.44397,361.2257701202,-8.591960728855106,-60.29555269496662 -734178157.5726,460527633.8107,-1191735528.161327,194288812.57913876,357.0966884003,9.280694106729786,-63.54781816969593 -734239630.5195,482342984.4548,-1190613760.967466,190282355.38893694,352.5907131089,27.227430715620624,-66.80024573272391 -734301103.4664,503868456.4972,-1188386706.7874753,186076162.17059326,347.6574859036,45.23832034499402,-70.04448939926493 -734369406.7407,527411873.55230004,-1184611805.8013594,181169406.75609183,341.6192119046,65.30136564690295,-73.62545669937799 -734403558.3778,539023603.4779,-1182210219.9030807,178624627.5668975,338.36386039689995,75.34126261609347,-75.40071849527972 -734437710.015,550521354.4344,-1179465779.5418866,176019448.18437916,334.94351132009996,85.3786117305875,-77.16214895770585 -734471861.6522,561899412.8698,-1176378690.417471,173354391.5654077,331.3537278514,95.40634422395794,-78.90675904082082 -734506013.2893,573151931.5709,-1172949411.9202216,170630085.24400097,327.5911419307,105.41666982276212,-80.63141924629899 -734540164.9265,584272967.5774001,-1169178681.1152427,167847265.54011518,323.6535185373,115.40113051283477,-82.33289391618317 -734574316.5637,595256521.5626,-1165067534.407986,165006780.60215974,319.5397957018,125.35066581107762,-84.00787509574188 -734608468.2008,606096578.2132,-1160617326.7741737,162109592.3099805,315.2500986234,135.2556972813152,-85.65301595483213 -734642619.838,616787146.6464,-1155829747.6397717,159156777.03277445,310.78572878439996,145.10623996762484,-87.26496430487384 -734659695.6566,622074517.0982001,-1153310066.0935583,157659876.87131268,308.48876249939997,150.00788147120676,-88.05745081859261 -734668233.5658,624703402.4971999,-1152018874.4310055,156906372.2476251,307.32425216679997,152.4522296786391,-88.4501420897016 -734672502.5205,626014105.4226,-1151365457.2719717,156528365.23242837,306.7380147092,153.67271488262296,-88.6455774639081 -734674636.9978,626668516.9898,-1151036795.4809546,156339049.18790185,306.44390368480003,154.28252642253057,-88.74306482110038 -734675704.2365,626995487.1822,-1150871976.552711,156244313.17539763,306.2966005216,154.58732332340094,-88.79175057292335 -734676237.8558,627158913.3036001,-1150789445.1136875,156196925.68940765,306.2228870809,154.73969441865472,-88.81607892416582 -734676504.6655,627240611.6109,-1150748148.9044592,156173227.07854342,306.1860149026,154.81587311022741,-88.82823946323916 -734676638.0703,627281457.075,-1150727493.1783042,156161376.55661076,306.16757494980004,154.85396073979504,-88.83431882297432 -734676771.4751,627322300.0790999,-1150706832.3714268,156149525.22381008,306.14913242160003,154.89204722445376,-88.84039757592423 -734677038.2848,627403978.7052001,-1150665495.5145102,156125820.12539095,306.1122396397,154.96821675665507,-88.85255326069391 -734677571.9041,627567306.4205,-1150582760.8354468,156078400.20027995,306.0384231813,155.12054205487678,-88.87685734032019 -734678639.1428,627893843.6265,-1150417047.6517067,155983521.45608962,305.8906667408,155.42513744905187,-88.92543629716896 -734680773.6201,628546444.5252999,-1150084646.2520573,155793608.5351811,305.5946602069,156.03410632644497,-89.0224770587396 -734685042.5748,629849747.358,-1149415945.5550385,155413162.13761288,305.0006761131,157.25114763285302,-89.21608723994419 -734693580.4841,632448717.9860001,-1148062970.6337523,154649796.57181138,303.8048533408,159.68157415304108,-89.60140046281589 -734710656.3026,637615807.6317999,-1145294875.7468514,153113251.39239395,301.382038769,164.52724319116552,-90.36422580703221 -734744807.9398,647824122.888,-1139511369.3185298,150001542.89421666,296.4139345009,174.15343148700228,-91.85732178807402 -734778959.577,657860044.6645,-1133400708.0346735,146839617.88836175,291.28728251250004,183.68460353263998,-93.30454077462065 -734813111.2141,667718267.1048,-1126966296.4596856,143629091.20023113,286.0086079809,193.11153331221675,-94.70310912784609 -734847262.8513,677393722.6076001,-1120211840.4345684,140371667.90823185,280.5853286729,202.42584110876217,-96.05052453202968 -734881414.4884,686881611.2934,-1113141314.4141223,137069133.06789267,275.0256938,211.62021111055077,-97.34461538829044 -734915566.1256,696177428.1001,-1105758921.8415403,133723339.44002795,269.33870486060005,220.68857857420673,-98.5835976755308 -734949717.7628,705276986.6875,-1098069049.8281102,130336193.38107282,263.53401013869995,229.62628017237677,-99.76612537860812 -734983869.3999,714176439.4735,-1090076218.982248,126909639.1330095,257.6217671759,238.4301639459374,-100.89133060905903 -735018021.0371,722872292.0506,-1081785030.797648,123445642.01587558,251.6124735295,247.0986584928594,-101.95885102720607 -735052172.6742,731361411.584,-1073200112.9783672,119946170.8706482,245.51676871659998,255.63180029067573,-102.96884199298562 -735086324.3114,739641027.9097999,-1064326064.6821121,116413180.43690598,239.3452152597,264.03121985403783,-103.9219725932996 -735154627.5857,755562436.7008,-1045728511.2179317,109254287.5855524,226.81505538649998,280.44302246660715,-105.66276162142667 -735222930.8601,770621169.7211,-1026026627.0283613,101983691.45833486,214.09638829550002,296.3760123956919,-107.19571346579153 -735284403.8069,783427488.2378,-1007376219.1930119,95355867.45410866,202.5381064549,310.35593811426526,-108.414139590445 -735345876.7538,795520897.2749,-987875505.1252215,88657388.46244925,190.90606709489998,324.0497250369926,-109.49738882638871 -735407349.7007,806897444.4331001,-967540321.7923508,81896016.73921406,179.2168848576,337.5148484845619,-110.46330803946323 -735468822.6476,817553776.1386,-946382924.2173591,75078422.71587312,167.4735376072,350.80984466653086,-111.32939313945164 -735530295.5945,827486329.066,-924412010.9965615,68210236.95259684,155.66645995450003,363.99148368339814,-112.11184962602857 -735551673.1898,830770037.8642,-916581918.4543004,65810813.096086204,151.5420812932,368.55877579840944,-112.3670414860212 -735570487.8057,833587023.791,-909609848.4718361,63694609.88682479,147.90292418029998,372.57415730837295,-112.5851458784725 -735642056.85,843674498.9645001,-882398937.7246556,55608640.75942904,133.964596878,387.83559262353435,-113.36525890084218 -735713625.8943,852757831.9807,-854095054.8236599,47469312.70674622,119.8319136772,403.1280904032579,-114.07862310626493 -735785194.9385,860820794.5935999,-824693775.6731987,39280944.631144255,105.4383955497,418.5115879012377,-114.73737454010123 -735856763.9828,867842056.1931001,-794186711.7258637,31047126.17099315,90.70816087653,434.0371161871501,-115.34982329038557 -735928333.0271,873794544.9231,-762562106.1994464,22770977.14021218,75.55667608079,449.74796466373186,-115.92084982481913 -735964117.5492,876359816.2626001,-746326258.4392157,18617933.055091053,67.79410006427,457.6845609761879,-116.19149414023002 -735999902.0714,878644820.0191,-729805348.9036865,14455381.409152478,59.89033278122,465.68072643591813,-116.45220142495519 -736035686.5935,880644267.0039,-712997179.9662384,10283681.804257005,51.83201799978,473.74008059096536,-116.70271335079643 -736071471.1156,882352376.1098,-695899431.5484431,6103206.725832254,43.60500549554,481.86585232448635,-116.9425688499191 -736107255.6378,883762844.4043,-678509675.3750172,1914348.9903131425,35.19426518275,490.0608492518675,-117.17108810470319 -736143040.1599,884868813.9915999,-660825390.9403813,-2282470.018452555,26.58379438802,498.32740869034023,-117.38734992908324 -736178824.682,885662835.483,-642843983.5132935,-6486791.202233881,17.75652109251,506.66732831557215,-117.59016207410717 -736214609.2042,886136827.9734,-624562805.0109863,-10698107.40735057,8.694206080938,515.0817750140088,-117.7780241295612 -736254369.7843,886277469.9408,-603895545.0773951,-15384859.633501858,-1.6744640192409999,524.5190528086774,-117.96695827076744 -736294130.3645,885999127.3404,-582851223.7492992,-20078660.57905093,-12.38613442119,534.0481266076948,-118.13200422690943 -736338308.7869,885181087.8976,-559022025.9950562,-25301011.18935603,-24.727946236100003,544.7407440272755,-118.28265773565357 -736382487.2092,883806773.5504,-534718111.8487515,-30529143.34113109,-37.5771639258,555.5377144470328,-118.39253973515235 -736404576.4204,882903758.118,-522386739.4204137,-33144775.648186684,-44.20732773068,560.9724834157389,-118.42975969378244 -736415621.026,882396933.3166001,-516175971.8656982,-34452864.38345677,-47.576609124680004,563.6982898526285,-118.44345257596022 -736421143.3288,882129515.2199999,-513059291.09488976,-35106960.72444433,-49.275162712669996,565.0632033308358,-118.4490032422368 -736423904.4802,881992282.2221999,-511498123.2553354,-35434019.77936861,-50.12796383213,565.746149793871,-118.45144594796159 -736425285.0559,881922781.8903,-510716832.07980615,-35597551.75867379,-50.555251281189996,566.0877437908836,-118.4525830346111 -736425975.3438,881887810.4085001,-510326009.62954056,-35679318.32727295,-50.76911745687,566.2585707687506,-118.45313037124414 -736426320.4877,881870269.2939,-510130554.18287176,-35720201.75197801,-50.87610624877,566.3439917258215,-118.4533987202884 -736426493.0597,881861484.8874999,-510032815.4033077,-35740643.49892667,-50.92961458216,566.3867040679262,-118.4535315627407 -736426579.3457,881857089.2214,-509983943.2493465,-35750864.38102093,-50.95637223464,566.4080607044759,-118.45359765079182 -736426665.6316,881852691.2463,-509935069.2526779,-35761085.26879156,-50.98313221151,566.4294176512187,-118.45366351637549 -736426838.2036,881843888.3687,-509837315.7308235,-35781527.061205745,-51.036659140119994,566.4721324747692,-118.45379458057167 -736427183.3475,881826254.8976,-509641786.5723641,-35822410.71371284,-51.14374090814,566.5575658386382,-118.45405403782127 -736427873.6354,881790877.0474,-509250639.79090565,-35904178.28421286,-51.35801617887,566.728447406131,-118.45456225056483 -736429254.2111,881719677.3548001,-508467992.3214043,-36067714.452891946,-51.787014392,567.070269683093,-118.4555357263155 -736432015.3625,881575499.1104,-506901281.37725437,-36394790.62355968,-52.64680737872,567.7541490487243,-118.45730973497784 -736437537.6653,881280003.9439,-503762192.4707174,-37048956.051026106,-54.373626764719994,569.122832725722,-118.46015672282904 -736448582.2709,880660271.0036,-497461323.20819163,-38357320.88970268,-57.8565794028,571.8637813676619,-118.46297092900123 -736470671.4821,879304299.7271999,-484768642.14732397,-40974033.1733596,-64.94282713087999,577.3589885782832,-118.45644896787518 -736514849.9045,876113534.7885001,-459018279.40104103,-46206051.0894286,-79.62209770115,588.3933848729026,-118.38931719989377 -736559028.3268,872258452.6759,-432779502.47618437,-51433305.907737285,-95.02736597601,599.4653693029106,-118.23832417812231 -736603206.7492,867705597.5696,-406051309.9887539,-56651743.866301835,-111.2217101639,610.5439625839982,-117.98725681320036 -736647385.1716,862418663.8580999,-378834225.3202636,-61856538.01439436,-128.2710073802,621.5909961689745,-117.61729207297388 -736691563.594,856358380.9525,-351130629.9433239,-67041968.69099744,-146.2435406633,632.5604021031884,-117.10680839463407 -736735742.0164,849482416.0378001,-322945127.71698785,-72201296.06549515,-165.2095862379,643.397522993882,-116.43121558766063 -736779920.4388,841745294.9161,-294284939.5503127,-77326625.46987246,-185.2410148848,654.038423140403,-115.56279796976696 -736824098.8612,833098339.5129,-265160329.15208372,-82408765.96058892,-206.4109368449,664.409164359322,-114.47055973171706 -736868277.2836,823489620.0772,-235585062.50592285,-87437081.5973614,-228.7934122815,674.4249887277699,-113.12005545908866 -736912455.706,812863918.2481999,-205576906.84059662,-92399334.85631521,-252.4632236162,683.9893446845167,-111.47318852136661 -736956634.1283,801162699.5123,-175158176.76085016,-97281520.05442321,-277.495695256,692.9926706413962,-109.48795426565795 -737000812.5507,788324092.8184,-144356342.4165674,-102067683.47548498,-303.96651648349996,701.3108552828717,-107.11810884360449 -737089169.3955,758970495.2385,-81743219.58931789,-111277191.6134864,-361.5261802821,715.3104193513095,-101.01576364500576 -737177526.2403,724241425.6555,-18089009.98709095,-119853246.70700242,-425.7410695655,724.6172800193365,-92.69261068137709 -737257047.4006,687883300.9228,39688475.032195464,-126848592.99549016,-489.6915716434,727.5168236221123,-82.82645614748066 -737304714.3584,663566212.3946,74342990.30070399,-130629040.96951008,-530.9761781515,726.0622272882122,-75.61643024824309 -737304714.3584,663566199.455,74342993.3634826,-130629038.64684527,-530.9761360217,726.0622335138917,-75.6164376078857 -737329542.8071,650106026.069,92348318.49827231,-132455080.93474132,-553.3817353931,724.1789252474773,-71.42388692833975 -737365992.3696,629319489.9552,118671133.53060746,-134937677.5644914,-587.408213882,719.8343558627566,-64.67506874687987 -737402441.9322,607267994.0275,144798136.64787054,-137160533.15985292,-622.7911581023,713.3919738874737,-57.16041381399981 -737438891.4948,583902098.9588,170648020.62535527,-139094464.02482522,-659.5282488603,704.5811354383018,-48.8096052708531 -737475341.0574,559172702.0881001,196129062.6448102,-140707658.1911015,-697.6028721513001,693.1006192845157,-39.548981770707826 -737511790.6199,533031610.3247,221137974.28436244,-141965585.78414965,-736.9812391191,678.616799754149,-29.30354959171291 -737548240.1825,505432222.1,245558697.40921164,-142831010.30172378,-777.60921395,660.7625140241327,-18.000540991096244 -737588739.6965,473002231.3178,271844292.6129065,-143283811.17032933,-824.1210260055,636.4827416225999,-4.123028657207556 -737608989.4535,456074010.3261,284592728.9764872,-143292188.71377653,-847.8744207592,622.4119222029739,3.356524652739637 -737629239.2104,438661693.03889996,297042280.34162635,-143145396.09409288,-871.9293729010999,606.9494986813751,11.202989619930662 -737649488.9674,420759441.9299,309163945.64064145,-142835993.88053638,-896.2586389529,590.0139393359028,19.416587429560906 -737669738.7244,402362014.56560004,320927049.02550685,-142356585.50629947,-920.8305793135,571.5213924558539,27.992692655481505 -737689988.4814,383464859.6101,332299195.54174256,-141699926.6343973,-945.6084609171,551.3859953762162,36.92068182794793 -737710238.2384,364064227.99009997,343246234.19833726,-140859059.4564229,-970.549594179,529.5202197070892,46.182670863965996 -737730487.9954,344157304.1982,353732227.6709245,-139827473.1274072,-995.6043155367,505.83521969463266,55.75215446741731 -737750737.7524,323742358.62,363719429.0016577,-138599292.97749895,-1020.714791516,480.24118950165325,65.59257086102639 -737770987.5093,302818927.0219,373168266.04431856,-137169499.00937262,-1045.8136687190001,452.64767091255834,75.65580854905363 -737791237.2663,281388017.9037,382037330.08324295,-135534175.5014056,-1070.822568209,422.96382707372464,85.88064756143132 -737811487.0233,259452352.2342,390283371.1833835,-133690792.95024037,-1095.650430903,391.09861322157406,96.19112152536235 -737831736.7803,237016638.8415,397861294.3381637,-131638524.2039908,-1120.191700481,356.9608581365771,106.49472902286337 -737851986.5373,214087887.6772,404724156.465931,-129378599.5596931,-1144.3242441920002,320.4592269554025,116.68041860519301 -737872236.2943,190675770.176,410823162.5997434,-126914705.54904625,-1167.9068774309999,281.5020673245832,126.61621037523282 -737892486.0513,166793035.9087,416107656.8988248,-124253436.78727219,-1190.7761711800001,239.99723086587124,136.14633177337856 -737912735.8082,142456004.5483,420525111.3708693,-121404811.91971698,-1212.742074856,195.85198303027778,145.08775566842806 -737922860.6867,130123348.0106,422391769.27747035,-119914451.97930336,-1223.318098556,172.76013050902196,149.2720634115026 -737932985.5652,117685164.5607,424021116.62621254,-118382865.74186303,-1233.581657377,148.9733396401461,153.2261167717309 -737943110.4437,105144789.8228,425406059.175101,-116812546.63629422,-1243.4982558479999,124.48016999801902,156.91747957751835 -737953235.3222,92505925.52166,426539388.0405517,-115206329.1771089,-1253.0299924590001,99.26944153816177,160.31119047628468 -737963360.2007,79772676.55078,427413783.20105773,-113567415.15992773,-1262.1350314069998,73.33041956726939,163.3696436234275 -737973485.0792,66949593.907510005,428021819.2945355,-111899400.89873405,-1270.766979609,46.65308015793407,166.05250344049614 -737983609.9577,54041724.433199994,428355974.5954653,-110206305.07780856,-1278.874161055,19.22848253111915,168.31667492217045 -737993734.8362,41054668.32137,428408644.40594584,-108492596.48534395,-1286.398784526,-8.95071957683654,170.11635802495354 -738003859.7147,27994645.778279997,428172160.54076403,-106763220.65245938,-1293.2760096480001,-37.889590096838454,171.40322328130333 -738013984.5932,14868573.47248,427638818.82171476,-105023623.8807687,-1299.432926232,-67.59000173276996,172.12675642708123 -738024109.4717,1684151.6515630002,426800917.10478467,-103279772.68494284,-1304.787481072,-98.04945768961588,172.2348310421837 -738034234.3502,-11550037.83787,425650806.81587434,-101538165.98902234,-1309.247410482,-129.259594056906,171.67457999257584 -738044359.2287,-24824423.135190003,424180961.4565434,-99805836.64593028,-1312.70927063,-161.20431818157618,170.39364637478744 -738054484.1071,-38128325.16281,422384065.95390904,-98090338.00171782,-1315.0577005129999,-193.85755311107465,168.34189984827748 -738059546.5464,-44787674.825119995,421360773.7689323,-97241395.1963636,-1315.774979681,-210.43833820858546,167.01245967050932 -738064608.9856,-51449834.93208,420253130.81969386,-96399710.39480299,-1316.165104208,-227.1805869085648,165.4737006870372 -738069671.4249,-58113104.494389996,419060337.7272727,-95566354.99321441,-1316.210268251,-244.0769937420988,163.72109110964377 -738074733.8641,-64775690.681719996,417781635.0289531,-94742421.66715965,-1315.891993582,-261.1190746471199,161.75077392394664 -738079796.3034,-71435705.54337,416416309.41571885,-93929020.65338041,-1315.1911975649998,-278.29706382976815,159.5596908046 -738084858.7426,-78091163.17929,414963700.4769394,-93127275.37185682,-1314.088283521,-295.599812260087,157.14571451750803 -738089921.1819,-84739977.41933,413423207.9500066,-92338317.36186896,-1312.5632562409999,-313.0146910027321,154.5077882090798 -738094983.6211,-91379960.1554,411794299.4408155,-91563280.49986751,-1310.5958648510002,-330.5275027327636,151.64606956081676 -738100046.0604,-98008820.46986,410076518.56373346,-90803294.48009183,-1308.1657748119999,-348.12240535728904,148.56207712535505 -738105670.9929,-105358261.21440001,408063190.89698446,-89977877.29214153,-1304.898425732,-367.7471760854307,144.8784609212114 -738111295.9254,-112687582.6639,405939312.9405679,-89173926.63524786,-1301.0076932709999,-387.42499343217133,140.93074933247775 -738116920.8578,-119993204.0269,403704667.38253194,-88392903.27948752,-1296.4673616119999,-407.126588357746,136.72821185372484 -738122545.7903,-127271400.98439999,401359208.9872161,-87636207.73109387,-1291.252699118,-426.82005962678664,132.28303319042922 -738128795.7153,-135321425.51500002,398623357.0689512,-86825574.05154023,-1284.640216363,-448.65021898404837,127.07801680319405 -738135045.6403,-143327361.25710002,395751363.45824677,-86048283.25580215,-1277.139925094,-470.3772208878294,121.61782563194888 -738141990.0014,-152164294.7458,392401584.92603374,-85225553.47956762,-1267.737995274,-494.33200118518255,115.28870576863493 -738148934.3625,-160931970.148,388886350.26862705,-84447600.86379285,-1257.1905225169999,-518.0160497231099,108.73050783715523 -738155878.7237,-169622386.1753,385207814.45852464,-83715828.59279342,-1245.4861043859999,-541.3499288800368,101.99832952430755 -738162823.0848,-178227503.1126,381368687.70211977,-83031236.26077753,-1232.625262383,-564.2534650137744,95.15313223629006 -738169767.4459,-186739329.3145,377372234.2426252,-82394382.99795431,-1218.621421349,-586.6475794288293,88.26058451010678 -738173239.6264,-190957796.6494,375316178.3207109,-82093905.75518851,-1211.198743143,-597.6296699623128,84.81801062082576 -738174975.7167,-193057245.6033,374273917.211493,-81948144.66441244,-1207.384101313,-603.0629482818288,83.10148590893533 -738175843.7618,-194104471.8214,373749258.01949906,-81876380.69097073,-1205.4512336809998,-605.7646600206584,82.2448975489861 -738176277.7844,-194627453.9107,373486050.06534195,-81840777.40205301,-1204.4784507279999,-607.111724571312,81.81708238925026 -738176494.7957,-194888786.3976,373354226.98013866,-81823045.36982568,-1203.990476823,-607.7843016655979,81.60330213098447 -738176603.3013,-195019412.9016,373288260.72103715,-81814196.74860339,-1203.746094882,-608.1203505039217,81.49644477796696 -738176657.5542,-195084716.20679998,373255263.9196556,-81809776.7857603,-1203.623805251,-608.2883148730407,81.44302442671525 -738176711.807,-195150012.8757,373222258.00676346,-81805359.72094668,-1203.50144987,-608.4562391714452,81.38960966201182 -738176820.3126,-195280586.2889,373156218.8560389,-81796534.28414953,-1203.256541929,-608.7919674443152,81.28279700127575 -738177037.3239,-195541653.3224,373024031.31305915,-81778918.17376958,-1202.765938036,-609.4629417152989,81.06924020406632 -738177471.3465,-196063467.4205,372759219.74993044,-81743824.93496655,-1201.781583288,-610.8029539246522,80.64240826989618 -738178339.3916,-197105809.3788,372227854.6548472,-81674193.79687616,-1199.800327232,-613.4751754934044,79.7899315277686 -738180075.4819,-199185297.7437,371158188.49272054,-81537147.75068823,-1195.78796949,-618.7879527965773,78.09020997705585 -738182822.9692,-202461840.11290002,369446622.5013234,-81326273.42743188,-1189.304031364,-627.1073935118895,75.41684803130508 -738184230.6942,-204133675.5014,368560854.3019225,-81221065.77494995,-1185.919145736,-631.3269471451035,74.05617521492653 -738186077.5523,-206319751.6471,367389804.9207665,-81085935.13123852,-1181.414967273,-636.8174336503528,72.28161902668148 -738187000.9814,-207409653.8077,366800489.70682776,-81019595.86437148,-1179.136226622,-639.543069432996,71.39920867937792 -738187462.6959,-207953813.76029998,366504889.7761748,-80986731.40237062,-1177.990259059,-640.9009267878805,70.95929109417128 -738187924.4105,-208497443.5928,366208663.67093337,-80954069.85314748,-1176.8399189259999,-642.2554552449251,70.52025866518386 -738188386.125,-209040541.2904,365911812.9314594,-80921610.8038154,-1175.685225688,-643.6066386263997,70.08213138821085 -738188616.9823,-209311889.96150002,365763153.8072011,-80905457.08508469,-1175.106252797,-644.2809709086854,69.86341341271455 -738188732.4109,-209447514.1432,365688765.89145046,-80897399.15377682,-1174.816360866,-644.6178213287337,69.7541419285929 -738188790.1252,-209515313.682,365651557.35576534,-80893374.91716151,-1174.671313665,-644.7861675005108,69.69952819819079 -738188818.9824,-209549210.31170002,365632949.4448222,-80891363.98079221,-1174.5987647739998,-644.8703208122517,69.67222685483992 -738188847.8395,-209583104.8477,365614339.10553193,-80889353.83216071,-1174.5261990289998,-644.9544609367855,69.6449291977722 -738188876.6967,-209616997.28939998,365595726.3384487,-80887344.4712457,-1174.453616434,-645.0385878704011,69.61763523202737 -738188905.5539,-209650887.6363,365577111.1438634,-80885335.89787897,-1174.381016994,-645.12270160914,69.59034496221079 -738188963.2682,-209718662.0436,365539873.4739723,-80881321.11344212,-1174.235767595,-645.290889489117,69.53577552647215 -738189078.6968,-209854185.6998,365465369.02123827,-80873300.99071363,-1173.9450668739998,-645.627106742834,69.4266812205089 -738189309.5541,-210125132.2688,365316243.74944437,-80857298.50588459,-1173.362858835,-646.2989063706834,69.20867195364772 -738189771.2686,-210666621.56599998,365017528.42539066,-80825444.38460854,-1172.195225206,-647.6399593100855,68.77337944666928 -738190232.9832,-211207570.762,364718194.7036254,-80793791.01816246,-1171.023318455,-648.9776043216757,68.33907140343658 -738190694.6977,-211747977.88910002,364418244.16131914,-80762337.9469603,-1169.847159098,-650.3118261649256,67.90576747216997 -738191618.1268,-212827158.1137,363816498.96028316,-80700030.80643427,-1167.4821656459999,-652.9699403469879,67.04225015491821 -738193464.9849,-214978928.19840002,362605676.86963314,-80577798.86739084,-1162.7020724949998,-658.2444416368189,65.32812063006361 -738195311.8431,-217121809.28379998,361385165.4615322,-80458716.03483286,-1157.8563283189999,-663.4625567175033,63.63221946097613 -738197158.7012,-219255681.43850002,360155069.6680908,-80342747.52793483,-1152.946363454,-668.6234307055993,61.95575174535571 -738199005.5594,-221380427.41390002,358915495.9520837,-80229856.3635717,-1147.97365323,-673.7262615276913,60.29989685167425 -738202699.2757,-225602085.7439,356408347.6505845,-80013147.42283955,-1137.846106124,-683.7548553178476,57.054602038098494 -738206392.992,-229785902.85000002,353864599.1202858,-79808251.25591588,-1127.486279118,-693.5430128905108,53.905177898498124 -738210086.7083,-233931044.8409,351285146.9232027,-79614798.23031689,-1116.907293719,-703.0863026585382,50.85993234609353 -738213780.4246,-238036727.1093,348670902.3242652,-79432389.09609136,-1106.122698466,-712.3811959787399,47.9265867770695 -738217474.1409,-242102215.7198,346022787.956503,-79260597.23303594,-1095.1463645679999,-721.4250658637519,45.11223288966025 -738221167.8572,-246126828.3732,343341734.5104984,-79098971.05511747,-1083.992380978,-730.216175700761,42.423297984580614 -738224861.5735,-250109935.1331,340628677.4771297,-78947036.47046962,-1072.674951042,-738.7536579363363,39.86551963945854 -738232249.0061,-257949373.5284,335110299.8011104,-78670248.94912916,-1049.606536662,-755.0684306268339,35.16283997056681 -738239636.4387,-265616536.731,329475118.170003,-78426091.64881006,-1026.053325442,-770.378515674155,31.035867380238898 -738247023.8713,-273108246.07240003,323730485.65914875,-78210229.32928723,-1002.123464561,-784.7043329835303,27.505024326861587 -738254411.3039,-280422099.5935,317883568.2041061,-78018215.79080275,-977.9187441703,-798.0758097545995,24.58006034487005 -738261798.7365,-287556418.2514,311941281.441181,-77845569.44404551,-953.532842752,-810.5304537568305,22.260989119981616 -738269186.1691,-294510181.23039997,305910241.9076117,-77687840.96975994,-929.0501324324,-822.1114124453526,20.539275521367927 -738276573.6017,-301282954.4238,299796732.29389024,-77540671.61253944,-904.545014656,-832.8656259306741,19.399165366973364 -738280086.97,-304440497.0352,296862017.935419,-77473156.59604508,-892.9018146737,-837.7042640992759,19.054951999550212 -738288227.5575,-311599635.6571,289999010.38450956,-77319806.6234594,-865.9939849779,-848.2691950815522,18.72906785727332 -738297088.9351,-319144361.1868,282434778.7028128,-77152785.54997839,-836.8750979775999,-858.8062990891588,19.086933430464228 -738306934.9102,-327226072.9018,273925779.3609423,-76959588.99055047,-804.8087215429,-869.4349766426469,20.292491472908466 -738316780.8854,-334993825.0962,265317294.984655,-76750638.49132317,-773.1101945992999,-879.0318684202969,22.274027406386722 -738327720.8577,-343261148.451,255647351.67457426,-76491194.33009413,-738.3759715998,-888.6055923129586,25.291172031945734 -738338660.8301,-351151448.64229995,245878404.69844627,-76194505.61780804,-704.1885933284,-897.1503624335147,29.066000537144987 -738349600.8025,-358670808.1884,236021111.9164537,-75852829.13130206,-670.5632391953001,-904.7731335320216,33.4998194624784 -738360540.7749,-365825382.6673,226085043.62935433,-75459462.20440112,-637.4988748983001,-911.565896694037,38.50130481829939 -738366010.761,-369267780.7178,221090201.26853943,-75241563.69269252,-621.1734331726,-914.6759254874875,41.188641119022975 -738368745.7541,-370955584.9708,218586524.96851426,-75127023.8557929,-613.0614169910999,-916.1632171350867,42.57468067216013 -738370113.2507,-371791178.6706,217333176.5000171,-75068323.13189007,-609.0179392865001,-916.8903761930197,43.27778625093066 -738370796.9989,-372206903.40110004,216706131.22710392,-75038611.08513811,-606.9993135827,-917.2498871816516,43.631798824558246 -738371138.8731,-372414248.3563,216392516.64054894,-75023664.1523065,-605.9907765181,-917.4286320431826,43.80941245477976 -738371309.8102,-372517791.55869997,216235686.46048716,-75016167.89815699,-605.4867016159,-917.5177526196519,43.89837016215722 -738371395.2787,-372569530.8508,216157265.6612421,-75012414.06660247,-605.2347125325,-917.5622500442043,43.94288662136023 -738371438.013,-372595392.4206,216118053.83576092,-75010535.72379218,-605.1087300795,-917.5844830544775,43.965154237052275 -738371480.7472,-372621248.6069,216078841.060466,-75008656.4293015,-604.9827556825,-917.6067056005561,43.98742810495884 -738371566.2158,-372672944.8302,216000412.6620999,-75004894.98395182,-604.7308310474,-917.6511193112915,44.03199458198088 -738371737.1528,-372776272.6887,215843544.48642522,-74997360.66084494,-604.2270783867,-917.7398213183324,44.1212023787412 -738372079.027,-372982670.1308,215529762.71906582,-74982246.22535211,-603.2199591811001,-917.9167244660327,44.29991640837284 -738372762.7752,-373394432.5304,214902018.31784475,-74951833.72282018,-601.2072626393,-918.2685335982217,44.65853076207196 -738374130.2718,-374213832.3028,213645812.3961086,-74890270.43589218,-597.1880160424,-918.9642130767063,45.38044546503261 -738376865.2649,-375836170.7878,211130582.3686011,-74764161.27921198,-589.1739372101999,-920.324207215454,46.84255205066137 -738382335.2511,-379015312.3969,206089244.04816487,-74499786.42900462,-573.2420104608001,-922.9217241276966,49.83624573222443 -738393275.2234,-385113864.1632,195966094.5150432,-73920744.15407239,-541.7509762393,-927.6487420430254,56.07418528199901 -738404215.1958,-390870517.92399997,185794482.46867588,-73271842.90255332,-510.73263709329996,-931.7881907486036,62.5984941747858 -738415155.1682,-396290279.5912,175580628.28715587,-72550234.59391053,-480.1566385424,-935.3767655485901,69.35827220820659 -738426095.1406,-401377820.86259997,165330389.866678,-71753591.17458525,-449.99241993830003,-938.444243316244,76.30923707544747 -738437035.1129,-406137481.8426,155049332.0308005,-70880036.04660685,-420.2100347318,-941.01460483143,83.41301672916649 -738446881.0881,-410144166.7336,145774438.46181217,-70026841.53128457,-393.7085349877,-942.9188127603593,89.90958112392292 -738456727.0632,-413891243.9008,136482655.0345079,-69109292.28119147,-367.47303605999997,-944.4470895607105,96.4820474306755 -738466573.0383,-417381238.7087,127177637.3949103,-68126733.15884939,-341.48469570099996,-945.608391935398,103.11210374411962 -738468967.1199,-418191256.2689,124913496.88290739,-67877936.86165906,-335.20087644539996,-945.8361399408299,104.73107733445562 -738472226.9047,-419270020.301,121829815.10186492,-67532938.0693505,-326.6661919339,-946.112201999051,106.93903136199074 -738485652.5085,-423420979.471,109122071.72728088,-66036001.40297296,-291.76315547589996,-946.8393335836644,116.06584717829836 -738499078.1123,-427105865.69280005,96408950.66067015,-64416294.39233339,-257.22946225709995,-946.9148818483128,125.22320407859397 -738512503.7161,-430329393.6662,83699144.96403155,-62673589.0342004,-223.02939888769998,-946.3464369862775,134.38482494241427 -738525929.3198,-433095823.4011,71001267.50301939,-60807978.16463418,-189.13089754260002,-945.1384704041136,143.52905280144597 -738539354.9236,-435409007.22249997,58323888.557862975,-58819818.71408665,-155.5052432,-943.292941222673,152.63808924380578 -738552780.5274,-437272432.6971,45675566.309729025,-56709684.28370722,-122.1267620096,-940.8097575006743,161.69736300041842 -738559493.3293,-438036485.7957,39364978.83554092,-55609105.02895218,-105.5229428885,-939.3285430216877,166.20453790878807 -738562849.7302,-438376761.0082,36213548.08261032,-55047483.18822427,-97.24121192332,-938.5278850631674,168.45193548914503 -738564527.9307,-438536480.3165,34638857.27389558,-54763845.37382206,-93.10525156365,-938.1125208190663,169.5740220299886 -738565367.0309,-438613737.785,33851775.37225415,-54621320.53924215,-91.03848067728,-937.901076793428,170.13465454771 -738565786.581,-438651716.26780003,33458301.218120955,-54549881.74081612,-90.00539546108,-937.7944139030632,170.4148671827632 -738565996.3561,-438670542.983,33261580.9553656,-54514118.259016804,-89.48892764942,-937.7408471872716,170.55494747893914 -738566101.2436,-438679915.7137,33163225.041968863,-54496225.49906804,-89.23071241027,-937.7140050052665,170.62498110729547 -738566153.6874,-438684591.9228,33114048.14147457,-54487276.364519134,-89.10160945431001,-937.700569208264,170.65999628886874 -738566206.1312,-438689261.3614,33064871.945855647,-54478325.39367524,-88.97250960522,-937.68712360637,170.69501038183373 -738566311.0187,-438698579.9275,32966521.671500143,-54460417.94332865,-88.71431922106001,-937.6602029854228,170.76503530238767 -738566520.7938,-438717135.8202,32769829.603983708,-54424581.009565204,-88.19797568446,-937.6062440746732,170.90507205911697 -738566940.3439,-438753922.6836,32376479.508944876,-54352819.02253324,-87.16543728007,-937.4978555259162,171.18509312233874 -738567779.4441,-438826197.01280004,31589916.40059585,-54208942.67345144,-85.10095308918001,-937.279195094356,171.74492454670536 -738569457.6446,-438965550.3936,30017345.886304095,-53919781.30594648,-80.9743388288,-936.8343374372354,172.8637374664303 -738572814.0455,-439223494.3186,26874486.733875986,-53335830.60791491,-72.73039763763,-935.9144463228025,175.0979081858804 -738579526.8474,-439656473.89750004,20598369.14789504,-52145472.497053504,-56.27865767734,-933.9537165146426,179.55200892126473 -738592952.4512,-440191895.4488,8088335.919974439,-49675390.14138671,-23.512091275739998,-929.5462765015747,188.40023650340237 -738606378.055,-440288558.00229996,-4358149.749153862,-47087078.38056284,9.085473659594,-924.4860677876906,197.16366388285667 -738619803.6587,-439948629.19990003,-16732280.501811791,-44381707.84119205,41.528871684150005,-918.7664361348192,205.8377292194627 -738633229.2625,-439174087.3815,-29025152.99658417,-41560501.71370907,73.83150459734999,-912.3797451924953,214.4191366771499 -738646654.8663,-437966739.43050003,-41227754.93977599,-38624719.68249856,106.0055448902,-905.3174035920422,222.90572734957098 -738660080.4701,-436328235.9859,-53330952.3272275,-35575643.31085981,138.0621256918,-897.5698697605266,231.29638953354504 -738673506.0738,-434260084.208,-65325476.58498217,-32414562.3401255,170.0115196306,-889.1266376147421,239.59100448174593 -738686931.6776,-431763658.10429996,-77201911.4987759,-29142761.677031036,201.8633130486,-879.9762051664233,247.7904253651369 -738698870.3395,-429184983.456,-87656041.88030112,-26141347.365606356,230.1127517756,-871.2350475898393,255.00322775551433 -738703908.0823,-427995753.2856,-92035416.65124215,-24849089.51901508,242.01362357969998,-867.3735151936654,258.02510435657825 -738724349.5107,-422555909.9774,-109597611.10763747,-19450322.674525723,290.1960613579,-850.6315058939674,270.1596740847735 -738734570.2249,-419467049.8939,-118245910.76521371,-16658424.591857933,314.22939926600003,-841.6026889347637,276.1540914449754 -738744790.939,-416132726.0803,-126799644.58963293,-13805492.329683825,338.2293201348,-832.125474430124,282.103400210127 -738755011.6532,-412553259.5247,-135254189.20607266,-10891970.855002299,362.1998791585,-822.1918659182902,288.0108377112324 -738765232.3674,-408728928.6371,-143604836.8470116,-7918269.111795589,386.1453672421,-811.7933390168622,293.8802282792136 -738775453.0816,-404659966.3755,-151846789.73765814,-4884753.610157877,410.07040459,-800.920797662251,299.7160664506856 -738785673.7958,-400346556.3289,-159975154.00120658,-1791741.0739257932,433.98005148180005,-789.5645234645851,305.5236184231651 -738795894.51,-395788827.5643,-167984933.00442642,1360510.0559714586,457.8799406971,-777.714116720282,311.3090453198611 -738801004.867,-393418367.48870003,-171943761.7048743,2958787.6669859067,469.8281817082,-771.6001606134099,314.19566813465 -738806115.2241,-390986847.9834,-175871020.04941326,4571809.507548384,481.77643777730003,-765.3584270188383,317.0795529325227 -738811225.5812,-388494266.59279996,-179766051.17791137,6199564.3436881155,493.7256512332,-758.9873913576453,319.961793578188 -738816335.9383,-385940615.8634,-183628190.29226297,7842046.758870982,505.676837125,-752.4854710274464,322.84357418783225 -738821446.2954,-383325882.95,-187456764.35091797,9499257.635316677,517.6310920363,-745.8510219260263,325.7261771997101 -738826556.6525,-380650049.1744,-191251091.74542946,11171204.679051831,529.589603933,-739.0823346351063,328.61099232514846 -738829111.831,-379289211.911,-193135197.5140792,12012708.677561298,535.5708551609,-735.6470985925498,330.0546954685662 -738830389.4203,-378603061.6123,-194073947.87187868,12434844.362072848,538.5620535473,-733.9166579614974,330.77695716109747 -738831028.215,-378258553.3276,-194542492.6339856,12646258.28452444,540.0578055533,-733.0482193126762,331.13820173394845 -738831347.6123,-378085940.8724,-194776556.8106179,12752051.787458546,540.8057209868,-732.6131938046241,331.31885387885904 -738831507.3109,-377999545.063,-194893536.772735,12804970.177172735,541.1796887161,-732.3954793037398,331.40918759603164 -738831587.1603,-377956324.7623,-194952013.71281683,12831434.781934977,541.3666751034,-732.2865715913008,331.4543563883801 -738831627.0849,-377934709.0129,-194981248.9215046,12844668.436836123,541.4601689297,-732.2321051168209,331.4769412702788 -738831667.0096,-377913089.5308,-195010481.9555317,12857902.993476354,541.5536631791,-732.1776302287386,331.49952647744516 -738831746.8589,-377869839.3684,-195068941.49780953,12884374.811839059,541.7406529503,-732.068655207358,331.54469787196916 -738831906.5576,-377783294.2502,-195185834.4710029,12937329.26958634,542.1146375994999,-731.8506041614454,331.6350446000006 -738832225.9549,-377610024.8366,-195419515.8961888,13043281.471933216,542.8626274819,-731.4140978543737,331.8157539943029 -738832864.7495,-377262769.26919997,-195886460.0589081,13255359.048171662,544.3586908463,-730.5394667567556,332.1772380029679 -738834142.3388,-376565390.9208,-196818668.8041162,13680207.08609388,547.3511621875,-728.7837175779945,332.90047874787325 -738836697.5174,-375159163.2368,-198676329.1995061,14532676.420598134,553.3375667614,-725.2461658608553,334.3481478011089 -738841807.8744,-372300805.2414,-202364309.39669237,16248723.724844411,565.3169197098999,-718.0659884304317,337.2490402385514 -738846918.2315,-369381203.31960005,-206015234.90794605,17979617.838846594,577.3064097863,-710.7440233932659,340.1589611814146 -738852028.5886,-366400301.0443,-209628375.8045239,19725410.183738478,589.3078746847999,-703.2781636988561,343.08000750191553 -738857138.9457,-363358032.14169997,-213202991.14200816,21486163.365315236,601.3233340186,-695.6662041592648,346.0144626250567 -738862249.3028,-360254319.504,-216738328.4395249,23261952.175834157,613.3550121155,-687.9058336462219,348.96481580112476 -738867359.6599,-357089074.0787,-220233623.1165098,25052864.700016856,625.4053639682,-679.9946263720262,351.9337837784515 -738877580.3741,-350573561.2542,-227100962.07243168,28680487.165427834,649.5732443018,-663.7093652254756,357.9397183722739 -738887801.0883,-343810490.5155,-233798624.79778075,32370051.24298311,673.8524676948,-646.7883178374029,364.0595620748629 -738898021.8024,-336798568.2848,-240319989.2730959,36122883.87317943,698.2746325492,-629.2067767769894,370.32619140184033 -738908242.5166,-329536139.3303,-246658165.3664524,39940682.340185635,722.8792605562,-610.9368809091472,376.77946571353664 -738918463.2308,-322021093.8275,-252805959.10712808,43825594.62759408,747.7162652390999,-591.946899653726,383.4680718688827 -738928683.945,-314250744.6959,-258755828.53489187,47780321.59851876,772.8493597736999,-572.2002871593941,390.4519851364787 -738938904.6592,-306221663.4986,-264499828.32343096,51808248.52488427,798.3608495463001,-551.6544131519661,397.8058038277579 -738949125.3734,-297929456.9773,-270029539.124,55913617.01015676,824.3585123487,-530.2588318896233,405.6233468594603 -738954809.8287,-293201670.7367,-273008976.7610209,58232360.36690491,839.0893196654,-517.9760338240226,410.2158022657201 -738954809.8287,-293201687.6062,-273008979.28081286,58232323.57561689,839.0790409517,-517.9696802232536,410.214677029002 -738956163.0987,-292063765.0645,-273707931.52676606,58788251.068262056,842.6256123388999,-515.0076467022254,411.33799463822345 -738961101.9101,-287870118.4025,-276224444.0148365,60830073.3900478,855.6468806362,-504.0304669001081,415.5377559962892 -738966040.7215,-283611677.9362,-278686170.8358444,62893070.41522866,868.8687040750001,-492.82027056057257,419.9162615981494 -738970979.5329,-279287383.213,-281091936.46082556,64978178.42940788,882.3201914349,-481.366863922063,424.49567851937184 -738975918.3444,-274896017.6039,-283440512.0511827,67086451.06589772,896.0356528192,-469.6588202649772,429.30145337778936 -738980857.1558,-270436179.7885,-285730608.84931934,69219076.99763745,910.0557930598,-457.68325986020034,434.3629436501062 -738985795.9672,-265906248.55409998,-287960870.3483269,71377401.13572848,924.4292516830001,-445.42558024058246,439.71420303358434 -738990734.7786,-261304338.83279997,-290129863.0110596,73562950.13327917,939.2146124172,-432.8691237183925,445.394966251358 -738995673.5901,-256628246.3839,-292236065.1105468,75777463.44001445,954.4830619421,-419.994764629441,451.4518961864553 -739000612.4015,-251875377.15240002,-294277853.3454241,78022931.2453925,970.3219564112,-406.7803940427991,457.9401780551933 -739005551.2129,-247042656.0192,-296253486.5448225,80301641.47994173,986.8396849366001,-393.20027269388913,464.92557909437477 -739008020.6186,-244595229.7996,-297215913.866978,81454273.01273012,995.3943442246,-386.26382278331175,468.6287905518225 -739010490.0244,-242126407.227,-298161085.8247544,82616238.37191135,1004.1724214329998,-379.22421540686275,472.4871382504225 -739012959.4301,-239635608.8807,-299088742.0379173,83787935.87068477,1013.1968433709999,-372.0768138020296,476.51315771324465 -739015428.8358,-237122194.9415,-299998610.165084,84969796.39352742,1022.493686144,-364.8165602736109,480.7207200630809 -739017898.2415,-234585456.7383,-300890404.8078366,86162286.91100504,1032.092739648,-357.4379284811004,485.12521483852015 -739020367.6472,-232024606.7577,-301763826.2876993,87365914.48817222,1042.0281993580002,-349.9348703507766,489.7437629604966 -739022837.0529,-229438766.75030002,-302618559.2858428,88581230.85996735,1052.339520309,-342.3007574993335,494.5954653188571 -739025306.4586,-226826953.4653,-303454271.33554393,89808837.66523682,1063.0724796460001,-334.5283172822154,499.70169368496414 -739027775.8644,-224188061.46629998,-304270611.14436406,91049392.46918689,1074.280510715,-326.6095646033936,505.0864310515236 -739030245.2701,-221520842.22190002,-305067206.74941087,92303615.68768087,1086.026393276,-318.5357313024619,510.7766702995195 -739032714.6758,-218823878.4621,-305843663.49844575,93572298.57889086,1098.384416571,-310.297197347399,516.8028799519113 -739035184.0815,-216095552.4499,-306599561.86524755,94856312.48879951,1111.443178444,-301.88343129712166,523.1995460237438 -739037653.4872,-213334006.341,-307334455.1599151,96156619.49742164,1125.309251474,-293.282953356457,530.005796977653 -739040122.8929,-210537092.059,-308047867.16421205,97474284.78697865,1140.112046468,-284.4833449709948,537.2661117685632 -739042592.2986,-207702307.2476,-308739289.933045,98810490.75490752,1156.0103609179998,-275.47134589443255,545.0310992310324 -739045061.7044,-204826712.237,-309408181.9734447,100166553.1821107,1173.20133435,-266.23311192448676,553.3583053810927 -739046296.4072,-203372546.4953,-309734000.3377634,100852482.63859448,1182.35662907,-261.5247967764138,557.7528046592882 -739047531.1101,-201906820.82279998,-310053967.3982892,101543939.30999614,1191.932914129,-256.75476389025675,562.3129435711874 -739048765.8129,-200428990.1465,-310368005.9707934,102241133.47706525,1201.972015643,-251.92144750647094,567.0481436531596 -739050000.5158,-198938454.2738,-310676037.03979784,102944287.3618953,1212.521551999,-247.02346082519813,571.968322392249 -739051235.2186,-197434550.11879998,-310977980.0366537,103653635.71584733,1223.635980871,-242.0596919023189,577.083851413413 -739052469.9215,-195916542.4765,-311273753.2529059,104369426.34306335,1235.377881393,-237.0294349659523,582.4054764440615 -739053704.6243,-194383613.0824,-311563274.45133495,105091920.47298287,1247.819537564,-231.93257050291845,587.9441813457922 -739054939.3272,-192834847.4258,-311846461.73067427,105821392.94270675,1261.044904193,-226.76981358402756,593.7109679374018 -739056174.0301,-191269218.9027,-312123234.75882995,106558132.01360375,1275.152071682,-221.54305756818914,599.7165128375026 -739057408.7329,-189685569.51430002,-312393516.5098027,107302438.66293031,1290.2563789429998,-216.2558531373127,605.9706406457044 -739058643.4358,-188082586.194,-312657235.69164056,108054625.09461862,1306.4943789150002,-210.91408167006168,612.4815219138486 -739059878.1386,-186458771.6486,-312914330.1955508,108815011.95920366,1324.028945036,-205.52690929459575,619.2544595999323 -739061112.8415,-184812407.89949998,-313164751.9260542,109583923.79774259,1343.0559006380001,-200.1081549352182,626.2900448196883 -739062484.7336,-182954244.0456,-313435140.1116935,110448658.67949814,1366.2378551909999,-194.07545566910795,634.4066097899164 -739063170.6796,-182012824.24740002,-313567232.82380605,110885253.25344153,1378.7525867049999,-191.066479290404,638.5756774288545 -739063856.6256,-181062585.82050002,-313697265.87865853,111324730.84972514,1391.960752303,-188.07146901608482,642.8114356704409 -739064542.5716,-180103030.3958,-313825251.7712149,111767134.56601462,1405.929961741,-185.09923414341128,647.1057263280996 -739065228.5177,-179133610.2158,-313951209.7299121,112212500.92133565,1420.736828311,-182.16067783121565,651.4473956590614 -739065914.4637,-178153721.4601,-314075167.3264346,112660857.51656032,1436.468475701,-179.2693225747345,655.8214293131097 -739066600.4097,-177162696.43559998,-314197162.49526954,113112220.01346636,1453.224342068,-176.44198518031286,660.2078213263961 -739067286.3558,-176159794.4094,-314317246.079123,113566588.22521979,1471.11834548,-173.69964971386912,664.5800860531583 -739067972.3018,-175144190.8111,-314435485.058723,114023941.03057924,1490.281489221,-171.0686045300106,668.9032874340184 -739068658.2478,-174114964.466,-314551966.6829808,114484229.71300039,1510.864998945,-168.58193449473893,673.131410005952 -739069344.1939,-173071082.47980002,-314666803.7703683,114947369.21932486,1533.0441016309999,-166.28149469720123,677.2038257064121 -739070030.1399,-172011382.2507,-314780141.5912987,115413226.56460549,1557.0225633109999,-164.22054307819056,681.0405049914655 -739070716.0859,-170934550.09519997,-314892166.8348477,115881605.41521895,1583.038111049,-162.4672800104114,684.5354757310791 -739071402.032,-169839095.8271,-315003119.4252452,116352225.35533,1611.368839595,-161.10965057932916,687.547804690398 -739072087.978,-168723322.53100002,-315113308.2044458,116824693.84183982,1642.340623654,-160.2619098767414,689.8890648706058 -739072430.951,-168157220.8168,-315168236.5430588,117061458.8227383,1658.933839294,-160.07430883928507,690.7319839430997 -739072773.924,-167585291.0504,-315223131.9034734,117298467.9598689,1676.335397806,-160.07367821849434,691.3057552256157 -739073116.897,-167007246.1859,-315278062.8123737,117535621.2715443,1694.603213951,-160.28630330601814,691.5644591639681 -739073459.8701,-166422778.5442,-315333107.486305,117772801.73957133,1713.7997427530001,-160.74250741881139,691.4544646498316 -739073802.8431,-165831558.21809998,-315388355.3308517,118009872.43294601,1733.9921569609999,-161.47734423447196,690.9130159486309 -739074145.8161,-165233231.4404,-315443908.7015578,118246673.0929606,1755.252435049,-162.5314166253632,689.866542920986 -739074488.7891,-164627418.93809998,-315499884.96528506,118483016.09375098,1777.65730649,-163.95184360530578,688.2286416765753 -739074831.7621,-164013714.3402,-315556418.92902124,118718681.63226092,1801.287981124,-165.7934003040541,685.8976625109284 -739075174.7351,-163391682.737,-315613665.68575585,118953412.02766031,1826.229560961,-168.11985592538605,682.753838127229 -739075517.7082,-162760859.5,-315671803.9629929,119186904.93436392,1852.569987115,-171.0055355460735,678.6558757152008 -739075860.6812,-162120749.59190002,-315731040.0436184,119418805.29175575,1880.398327475,-174.53712580880554,673.4369420541205 -739076203.6542,-161470827.5947,-315791612.34949964,119648695.7873445,1909.802126585,-178.815735915975,666.89997545132 -739076546.6272,-160810538.8638,-315853796.78705084,119876085.5614788,1940.863449036,-183.9591996656207,658.8122984167251 -739076889.6002,-160139302.34550002,-315917912.8906125,120100397.00633797,1973.653126283,-190.1045732977403,648.8995510763469 -739077232.5732,-159456515.7477,-315984330.873509,120320950.31278378,2008.222543593,-197.4107053855502,636.8391016136701 -739077575.5462,-158761564.07369998,-316053479.5124859,120536945.78259385,2044.59216549,-206.06065870774214,622.2532712136057 -739077918.5193,-158053832.79680002,-316125854.80423373,120747443.82571322,2082.735782794,-216.2635858340819,604.703045619597 -739078299.6004,-157251754.4796,-316210755.0836001,120973537.25472072,2127.080810152,-229.7093819726175,581.1095796207196 -739078490.141,-156844287.0841,-316255243.47709894,121082983.0650863,2149.953139302,-237.3718457181254,567.4631949883486 -739078680.6815,-156432422.32909998,-316301256.8244588,121189699.46223912,2173.227747296,-245.72412937392875,552.4420119776865 -739078871.2221,-156016089.6254,-316348931.25634605,121293413.81317896,2196.838335062,-254.81565963182476,535.9331785268439 -739079061.7627,-155595232.6236,-316398412.39637214,121393831.58341658,2220.70132709,-264.6965037689194,517.819892478974 -739079252.3032,-155169812.7416,-316449855.39209825,121490635.7352839,2244.7133882040002,-275.41638004859806,497.9830835149459 -739079442.8438,-154739813.17020002,-316503424.7317363,121583486.50513345,2268.7489086250002,-287.023364359285,476.3037220420008 -739079633.3843,-154305243.34759998,-316559293.7793903,121672021.68918146,2292.6575919790002,-299.5622503792422,452.66586429709 -739079823.9249,-153866143.8736,-316617643.96495533,121755857.5863445,2316.262337566,-313.072530747685,426.96053029011136 -739080014.4655,-153422591.7773,-316678663.54933,121834590.76573387,2339.357664441,-327.58598414594655,399.09048348290474 -739080205.006,-152974706.01,-316742545.89528906,121907800.8330385,2361.708989092,-343.12388342118277,368.9759280322298 -739080395.5466,-152522652.96539998,-316809487.1727554,121975054.36467578,2383.053120685,-359.6938825387487,336.5610584989271 -739080586.0872,-152066651.7589,-316879683.4500528,122035910.1590983,2403.100370526,-377.2866967390522,301.8212843585427 -739080776.6277,-151606978.9191,-316953327.1461316,122089925.90416001,2421.538665467,-395.8727588161085,264.7708078383781 -739080967.1683,-151143972.0784,-317030602.86319077,122136666.28487693,2438.039990367,-415.39910812081297,225.47007076682613 -739081201.4161,-150570786.2857,-317130834.1813714,122183542.42171353,2455.1780986149997,-440.5743508670805,174.24265950144743 -739081318.5399,-150282800.88590002,-317183195.545321,122202392.149371,2462.267490416,-453.58831303662487,147.51739165968036 -739081435.6638,-149994047.959,-317237095.74756837,122218071.81796986,2468.272554236,-466.8458830785177,120.12073138031313 -739081552.7877,-149704658.5555,-317292561.2883105,122230506.4036614,2473.124980658,-480.31174057855395,92.11578899348399 -739081669.9116,-149414771.4048,-317349614.31595457,122239628.77112907,2476.762166565,-493.9469272409502,63.57410608545206 -739081787.0355,-149124532.16619998,-317408272.217503,122245380.63744919,2479.1285589,-507.7091741003431,34.575178612451566 -739081904.1594,-148834092.535,-317468547.2571581,122247713.45967792,2480.176940905,-521.5533344765096,5.205751365327984 -739082021.2833,-148543609.1884,-317530446.26778615,122246589.23722339,2479.869605122,-535.4319130073626,-24.44110455982772 -739082138.4071,-148253242.61290002,-317593970.4113228,122241981.18663327,2478.179369231,-549.2956839916912,-54.26712386308836 -739082255.531,-147963155.8213,-317659115.01616776,122233874.27476028,2475.090385901,-563.0943812862572,-84.17015918974684 -739082372.6549,-147673512.98950002,-317725869.4986266,122222265.58924635,2470.598707823,-576.7774397590675,-114.04563762143772 -739082431.2169,-147528909.3343,-317759845.5206688,122215150.5366568,2467.828956133,-583.5599102442898,-128.94008241678617 -739082489.7788,-147384478.0431,-317794217.3728138,122207164.53137654,2464.712578306,-590.2947645338985,-143.78811655835568 -739082548.3407,-147240239.33290002,-317828982.0887968,122198310.67425004,2461.2525091820003,-596.9759407790694,-158.5766870616356 -739082606.9027,-147096213.2266,-317864136.3503126,122188592.82629597,2457.452428995,-603.5975016900474,-173.2928870300426 -739082665.4646,-146952419.5103,-317899676.49601394,122178015.59901677,2453.316747193,-610.1536568369074,-187.92400448699658 -739082694.7456,-146880615.9064,-317917590.0394627,122172406.36124724,2451.1246280600003,-613.4054431606847,-195.2037497844989 -739082709.3861,-146844738.4754,-317926582.45034486,122169521.90128592,2449.997800171,-615.0244616181651,-198.83399550544505 -739082716.7063,-146826805.9838,-317931087.5358985,122168059.75268006,2449.4267339750004,-615.8322150529356,-200.64662839370334 -739082720.3664,-146817841.3103,-317933342.29493695,122167323.70407708,2449.139292925,-616.2356482215508,-201.5523120022869 -739082722.1965,-146813359.3686,-317934470.2280533,122166954.43687221,2448.99509606,-616.4372533462931,-202.00499430912697 -739082723.1115,-146811118.49679998,-317935034.3329929,122166769.4926479,2448.922878623,-616.5380279723287,-202.23129542732966 -739082723.569,-146809998.0857,-317935316.41995883,122166676.94285773,2448.886740165,-616.5884082918974,-202.34443595627772 -739082724.0266,-146808877.6911,-317935598.5301097,122166584.34135255,2448.8505818830004,-616.6387839459252,-202.45756979165145 -739082724.9416,-146806636.9516,-317936162.8193917,122166398.98301366,2448.778205861,-616.7395212490662,-202.6838173612922 -739082726.7717,-146802155.6715,-317937291.674404,122166027.64531538,2448.633216067,-616.940939758706,-203.13623192537764 -739082730.4318,-146793193.9087,-317939550.4900903,122165282.48664114,2448.342286136,-617.3435518230556,-204.04073746977633 -739082737.752,-146775273.58929998,-317944072.5393461,122163782.24138664,2447.756630209,-618.1478715927034,-205.8484439762467 -739082752.3925,-146739445.9042,-317953134.2792496,122160742.08463925,2446.5701770220003,-619.752857535288,-209.45855694878009 -739082781.6735,-146667843.3804,-317971328.07113177,122154503.47466141,2444.137057012,-622.9479285271229,-216.6569335089452 -739082840.2354,-146524857.885,-318007994.8209632,122141396.16112493,2439.032905566,-629.2762200991301,-230.96116973537838 -739082898.7974,-146382180.4485,-318045029.6553795,122127454.99973692,2433.617495383,-635.5178964859092,-245.132519800985 -739082957.3593,-146239829.0772,-318082427.3614312,122112688.09898138,2427.898485892,-641.6681913462487,-259.1599091057617 -739083015.9212,-146097821.3129,-318120182.4543013,122097104.20293753,2421.884086559,-647.7225922239643,-273.03270773125155 -739083074.4832,-145956174.20119998,-318158289.19237745,122080712.66430986,2415.583016101,-653.6768527881322,-286.74076207879955 -739083191.6071,-145674027.4705,-318235533.4526648,122045546.93983541,2402.1580241799998,-665.2693588614395,-313.6245703750362 -739083308.731,-145393514.3114,-318314109.6978313,122007276.79365143,2387.701777841,-676.4174096668158,-339.74060859488367 -739083425.8548,-145114750.6607,-318393964.444467,121965995.85291259,2372.297813671,-687.0974338387607,-365.027187502828 -739083542.9787,-144837842.4357,-318475041.72902364,121921804.42236727,2356.033440278,-697.2906537067618,-389.4320164294289 -739083660.1026,-144562885.1787,-318557283.66746426,121874808.37355277,2338.9982655689996,-706.9830404397388,-412.9123331917485 -739083777.2265,-144289963.8712,-318640631.0042438,121825118.03169763,2321.2827921549997,-716.1651704692629,-435.43481835780324 -739083894.3504,-144019152.9052,-318725023.6382001,121772847.08621578,2302.977116937,-724.8319972360896,-456.97531760270374 -739084011.4743,-143750516.2032,-318810401.121386,121718111.53470166,2284.16976514,-732.9825548967002,-477.5184021650967 -739084155.3607,-143423551.1414,-318916546.42780185,121647668.23005792,2260.504568925,-742.293161536114,-501.38014363307525 -739084155.3607,-143423555.43559998,-318916546.07665944,121647669.06860697,2260.505315982,-742.2925893687642,-501.3792652978358 -739084271.2878,-143162624.5357,-319003005.27801496,121588485.65180704,2241.085800938,-749.2383532540227,-519.5024544863614 -739084471.9227,-142716398.8293,-319154443.84769607,121481290.90640119,2206.965386313,-760.1177905413136,-548.5720650904556 -739084672.5576,-142277059.16,-319307924.5371529,121368550.17067276,2172.498963027,-769.6070674325629,-574.8036683398041 -739084873.1924,-141844642.9966,-319463176.18973345,121250821.55684882,2137.9973566529998,-777.785601700789,-598.3153182161648 -739085073.8273,-141419130.086,-319619944.66523874,121128636.536601,2103.725169618,-784.742777075855,-619.252801726215 -739085274.4622,-141000451.6409,-319777994.3703816,121002495.36484322,2069.901919158,-790.5734051430313,-637.780027711788 -739085475.097,-140588499.1305,-319937108.96084636,120872864.2892439,2036.7048813899999,-795.3740196261451,-654.0708883789545 -739085675.7319,-140183132.3687,-320097091.3890358,120740174.22337344,2004.2730109379997,-799.2399950660238,-668.3026724871573 -739085876.3668,-139784186.7662,-320257763.4407132,120604820.61201054,1972.711402314,-802.2634207353055,-680.6509672681376 -739086077.0016,-139391479.6579,-320418964.92053807,120467164.16633806,1942.0959084810002,-804.5316288905159,-691.2858974729488 -739086277.6365,-139004815.7154,-320580552.59612626,120327532.24030353,1912.477630402,-806.1262623010834,-700.369505620519 -739086478.2714,-138623991.48560002,-320742398.99839807,120186220.63648671,1883.887099389,-807.1227686687105,-708.0540666868477 -739086678.9062,-138248799.1223,-320904391.15661114,120043495.67347604,1856.3380494540002,-807.5902193764474,-714.4811394964509 -739087124.7615,-137434149.2045,-321264411.29246867,119722434.9650794,1798.8318364230001,-807.0416721387398,-724.9017141672005 -739087570.6168,-136644022.0998,-321623782.5026398,119397737.6877778,1746.2930668850001,-804.7651009786423,-730.9786415810897 -739088066.0115,-135792254.0374,-322021520.9768736,119034759.33739626,1693.36807002,-800.76006680617,-733.8393071807251 -739088561.4062,-134965384.7587,-322416986.66497904,118671163.48053241,1645.683079411,-795.6570515891624,-733.6256927545543 -739089111.8448,-134072857.23930001,-322853182.0027122,118268028.66167645,1598.191363628,-789.12178913865,-730.760315069767 -739089662.2834,-133205037.2633,-323285607.42259884,117867046.40110189,1555.795849705,-782.0072726728632,-725.9215766317867 -739090273.8818,-132266590.9105,-323761361.0610051,117425133.51601557,1513.882942937,-773.7159876539147,-718.9588494331988 -739090885.4803,-131352299.5239,-324231976.8876642,116987841.01486753,1476.686164718,-765.2370091534414,-710.8949780849485 -739091565.0341,-130361509.719,-324748781.23648703,116508026.36331764,1440.0799115989998,-755.7792299822218,-701.1472513867292 -739092244.5879,-129394118.0882,-325259183.10886925,116035007.18153769,1407.706569505,-746.4114014753458,-690.949282907365 -739092924.1417,-128447470.9928,-325763274.06964236,115568992.46239428,1378.930401352,-737.216091144905,-680.5688280312197 -739093679.2015,-127417233.097,-326316138.8740101,115059481.24012966,1350.5398656739999,-727.2595164038232,-669.0378309427048 -739094056.7314,-126909834.7472,-326589780.3989806,114807979.55544642,1337.578156448,-722.3951438708538,-663.3238538015471 -739094434.2613,-126407189.0079,-326861600.3832768,114558625.2237238,1325.352485647,-717.6100003884176,-657.6640880014128 -739094811.7912,-125909028.9361,-327131628.9792764,114311395.62737298,1313.805885856,-712.9052143024419,-652.0694758186967 -739095189.3211,-125415108.0537,-327399896.60959077,114066264.49929293,1302.886807818,-708.2811215389311,-646.5484922695629 -739095566.851,-124925198.4142,-327666433.7024637,113823202.76544656,1292.548534843,-703.7374415484838,-641.1075996463843 -739095944.3809,-124439088.87920001,-327931270.4866067,113582179.23249443,1282.748664094,-699.2734175993832,-635.7516177717864 -739096133.1459,-124197397.3826,-328063060.6147791,113462421.60486361,1278.038444198,-697.070938014971,-633.1066010485806 -739096227.5284,-124076882.1825,-328128800.2330437,113402729.4957584,1275.728765306,-695.9770106760261,-631.7924904499754 -739096274.7196,-124016705.97919999,-328161631.3816415,113372929.88562587,1274.5850446660002,-695.4318654754786,-631.1375505436615 -739096298.3152,-123986638.0743,-328178037.31579506,113358041.66250041,1274.01593482,-695.1597462411371,-630.8106112407748 -739096310.113,-123971609.15220001,-328186237.8758681,113350600.44272809,1273.732063902,-695.0237998064024,-630.647274465588 -739096316.0119,-123964095.9464,-328190337.5546103,113346880.55539621,1273.590298991,-694.9558548659172,-630.5656393273039 -739096321.9108,-123956583.5766,-328194436.83255845,113343161.14952454,1273.44864761,-694.8879287681244,-630.4840263622079 -739096333.7086,-123941561.3419,-328202634.1867941,113335723.78175521,1273.165684938,-694.7521330747818,-630.3208669719382 -739096357.3043,-123911526.874,-328219024.0911383,113320854.81832062,1272.601116352,-694.4807675461698,-629.9948145850158 -739096404.4955,-123851497.79609999,-328251784.70840096,113291139.95067596,1271.4773778370002,-693.9389386123048,-629.34377694195 -739096498.878,-123731597.89,-328317229.3758073,113231802.21699217,1269.25127086,-692.8588786243689,-628.0459819412811 -739096687.6429,-123492421.7827,-328447814.0209768,113113492.86423048,1264.882778479,-690.7130629094218,-625.4675965815632 -739097065.1728,-123016492.4501,-328707777.05582505,112878323.39373434,1256.467195119,-686.4779184213687,-620.3801575113948 -739097442.7027,-122543663.03729999,-328966155.1941834,112645057.03704214,1248.455993189,-682.3166241674946,-615.3857504790886 -739097820.2326,-122073786.0161,-329222975.9708998,112413658.61693527,1240.82235014,-678.2273353941936,-610.4845779398072 -739098575.2924,-121142346.7158,-329732052.0144179,111956325.11450295,1226.59146395,-670.2570928254411,-600.9604533997713 -739099330.3522,-120221174.2741,-330235210.98662645,111506044.49573375,1213.601067986,-662.5515831103759,-591.801426564929 -739100085.412,-119309389.0041,-330732646.8706743,111062544.80730939,1201.704269319,-655.0952142471997,-582.9971592841064 -739100840.4718,-118406213.62910001,-331224542.0162034,110625562.89550373,1190.775972481,-647.8728155273313,-574.5348987647154 -739101595.5316,-117510958.325,-331711067.55664825,110194845.7957074,1180.709067806,-640.8698736081426,-566.4005447628078 -739102350.5914,-116623008.34,-332192383.9597338,109770151.45751563,1171.411373076,-634.0726587683375,-558.5793744240887 -739103105.6512,-115741813.6441,-332668641.63640237,109351249.0381571,1162.803167183,-627.4682799208466,-551.0565294077735 -739103860.711,-114866880.4447,-333139981.59960586,108937918.81268233,1154.815180448,-621.044697002772,-543.8173453131303 -739104615.7708,-113997763.778,-333606536.0797124,108529952.01125854,1147.386965708,-614.7907016095406,-536.8475574598787 -739105370.8306,-113134061.4023,-334068429.14386255,108127150.45077103,1140.4655538220002,-608.6958835822442,-530.1334344678346 -739106880.9502,-111421473.7863,-334978689.9935764,107336300.52002944,1127.962187654,-596.9458664082575,-517.4203515317173 -739108391.0698,-109726574.4887,-335871614.9368505,106563977.60812262,1116.9932043699998,-585.725595270781,-505.5809954243467 -739109901.1894,-108047239.55680001,-336747958.05522406,105808928.99541396,1107.312208366,-574.975777402808,-494.52870551353783 -739111411.309,-106381678.2028,-337608390.3296689,105070025.29255424,1098.722072018,-564.6454229860001,-484.1866826699627 -739112921.4286,-104728367.6868,-338453511.1922976,104346246.19867337,1091.063277441,-554.6905609212779,-474.48707632265945 -739114431.5482,-103086003.2775,-339283858.26768255,103636667.75531368,1084.2053992400001,-545.0731409235748,-465.3699846833768 -739115941.6678,-101453459.3161,-340099915.6001093,102940451.0738182,1078.0407888650002,-535.760110335542,-456.7824860629268 -739117451.7874,-99829758.57154,-340902120.5995741,102256832.48060918,1072.479828404,-526.7226434703355,-448.67775057132303 -739118961.907,-98214047.8616,-341690869.92642367,101585114.92487788,1067.447318844,-517.9355004828143,-441.0142501014431 -739120472.0266,-96605578.47797,-342466524.4929563,100924660.50261602,1062.879699905,-509.37649415966223,-433.75506737574835 -739121982.1462,-95003690.27798,-343229413.7249298,100274883.96664312,1058.722888222,-501.0260456951293,-426.8672968698934 -739123492.2658,-93407798.74228,-343979839.2153724,99635247.05704232,1054.930577544,-492.86681403758865,-420.32152915287986 -739125002.3854,-91817384.27971,-344718077.86142653,99005253.56717378,1051.462892107,-484.8833853194002,-414.09140700017315 -739126512.505,-90231983.34706,-345444384.57104784,98384445.03401294,1048.285309897,-477.06201191054674,-408.15324410132973 -739128022.6246,-88651181.05111,-346158994.6094862,97772396.95512791,1045.3677948299999,-469.3903922913614,-402.48569722588843 -739131042.8638,-85501919.63668,-347553979.49079925,96573034.4413626,1040.211152155,-454.4533489532495,-391.88714062430176 -739134063.103,-82367040.03562,-348904593.0666858,95404332.5495034,1035.818628482,-439.99634683538693,-382.1620588185567 -739137083.3422,-79244448.52814,-350212188.24961835,94263825.45449926,1032.053843572,-425.9572171759064,-373.1997719459896 -739140103.5814,-76132418.72786,-351477947.0647389,93149353.02947009,1028.808592438,-412.2845295234852,-364.90781390506345 -739143123.8206,-73029517.43974,-352702909.5042802,92059011.65330657,1025.995941076,-398.935346465795,-357.2082891980248 -739146144.0597,-69934548.38751,-353887996.5202465,90991114.54371357,1023.5452560780001,-385.8735222070061,-350.035071615567 -739149164.2989,-66846508.692339994,-355034028.4611263,89944159.68699686,1021.3985670679999,-373.06839683267583,-343.3316266037423 -739152184.5381,-63764554.94413,-356141740.0554182,88916803.52774476,1019.507860653,-360.49378284559566,-337.0493026560428 -739155204.7773,-60687976.343540005,-357211792.6710357,87907839.28262073,1017.8330408889999,-348.1271703278136,-331.14597803228634 -739158225.0165,-57616173.23863,-358244784.4327335,86916178.91946302,1016.340370734,-335.94909711807907,-325.5849792746401 -739161245.2557,-54548639.82714,-359241258.6413094,85940838.05723725,1015.001268336,-323.942645433262,-320.33420997470387 -739164265.4949,-51484950.05245,-360201710.8225844,84980923.25079146,1013.7913664619999,-312.09303593522736,-315.36544330218493 -739167285.7341,-48424746.04527,-361126594.6713121,84035621.2049728,1012.6897709169999,-300.38729788745536,-310.6537433469996 -739168066.3136,-47634366.676309995,-361359898.0827658,83793592.3023667,1012.420414042,-297.3839207436803,-309.4750455154566 -739170763.7664,-44904619.329169996,-362148147.47395825,82964168.22370629,1011.5320986680001,-287.07073840283283,-305.517802017224 -739175937.6597,-39675147.99571,-363582787.9090314,81402138.73870713,1009.981777274,-267.5536691374696,-298.39081201437557 -739181111.5529,-34453286.10657,-364917274.3131929,79875552.68088183,1008.5811315540001,-248.34914014275847,-291.8041817454526 -739186285.4462,-29238396.32777,-366153129.6620954,78381800.96141204,1007.2790540259999,-229.4218932922571,-285.68782084376505 -739191459.3395,-24030079.0074,-367291710.43427205,76918607.27987932,1006.034334494,-210.74259581561728,-279.9827600247653 -739196633.2327,-18828127.07914,-368334234.0243627,75483976.48725766,1004.8134334629999,-192.2866497218463,-274.6389822878645 -739201807.126,-13632490.78162,-369281800.81161,74076152.71758325,1003.5888303,-174.03327921294886,-269.61374963241525 -739206981.0193,-8443249.991256,-370135411.972083,72693585.34446673,1002.337778062,-155.9648217722145,-264.8702953006959 -739212154.9126,-3260591.928964,-370895984.17874855,71334900.69727035,1001.0413557869999,-138.06617264912592,-260.3767929858183 -739217328.8058,1915206.5177439998,-371564361.5715581,69998878.85435323,999.6837346712,-120.32434355194289,-256.1055334090528 -739222502.6991,7083793.304713,-372141325.7896187,68684434.06309848,998.251606993,-102.72811010068338,-252.03226292607638 -739227676.5924,12244753.062059999,-372627604.33393735,67390598.2999543,996.7337357449,-85.2677271801718,-248.13564670257517 -739232850.4856,17397616.84646,-373023877.6015613,66116507.342021674,995.1205965157,-67.93469740434976,-244.39682980133182 -739235437.4323,19970853.575329997,-373188463.4840142,65486621.521432266,994.2757214665,-59.31357829349388,-242.5812917560533 -739236730.9056,21256643.75747,-373262402.5340178,65173428.91090368,993.8433036747,-55.013990138338606,-241.68613401025186 -739237377.6422,21899328.00967,-373297287.69912773,65017265.482658595,993.6245528825,-52.866894494577515,-241.2416065298231 -739237701.0106,22220616.94491,-373314209.6989486,64939291.415960535,993.5145363727,-51.794015892776464,-241.0200932910796 -739237862.6947,22381248.05424,-373322540.61629903,64900331.22394796,993.4593671473,-51.257743233219664,-240.90952277382536 -739237943.5368,22461560.26174,-373326673.56212044,64880857.829493284,993.4317422063,-50.98964848140261,-240.85428385146417 -739237983.9579,22501715.52779,-373328731.9078035,64871122.80663706,993.417919643,-50.855611490064625,-240.8266759517566 -739238024.3789,22541870.234980002,-373330784.8356571,64861388.899535924,993.4040903471,-50.72158141767948,-240.79907575013738 -739238105.221,22622177.9716,-373334874.4392869,64841924.43135731,993.3764115457,-50.45354201730161,-240.74389841223552 -739238266.9051,22782786.72657,-373342988.6455595,64803008.87074971,993.320973019,-49.917546115448616,-240.63363581814752 -739238590.2735,23103977.30223,-373358957.11657524,64725231.18323313,993.2097715952,-48.84588525642554,-240.4134774595019 -739239237.0101,23746250.22569,-373389854.7906406,64569888.99209121,992.9860659164001,-46.70388215200262,-239.9746161676333 -739240530.4834,25030359.20975,-373447497.0285144,64260052.99485743,992.5334012106,-42.4251096702483,-239.1026213528834 -739243117.4301,27596797.71766,-373546200.3609061,63643740.64670408,991.6067343074,-33.88818311112772,-237.38081033819032 -739248291.3233,32722294.818639997,-373677526.94178283,62424297.08165382,989.66563808,-16.894412004513498,-234.02033042925189 -739253465.2166,37837437.49584,-373721197.0091274,61221974.135869786,987.6033898096,-0.0032220169454859615,-230.76083385044268 -739258639.1099,42941587.40681,-373677729.33170426,60036277.816240326,985.4156496378,16.78992710350768,-227.59149426787124 -739263813.0032,48034085.39667,-373547620.50150824,58866767.40841545,983.0986954407999,33.48908002626308,-224.50251848583514 -739268986.8964,53114254.457,-373331347.3226815,57713050.47571623,980.6493343557,50.09785151453032,-221.48501778953369 -739274160.7897,58181402.26529,-373029368.8851595,56574778.47332828,978.0648286839,66.6194824762971,-218.53089768721236 -739284508.5762,68273801.13441,-372170054.65601313,54343371.814955145,972.4813444186,99.41269896337991,-212.7838357985421 -739294856.3628,78305513.28568001,-370973059.39799374,52170501.25691192,966.3333042092,131.88884951089602,-207.2091586621097 -739305204.1493,88270637.9411,-369441575.4445348,50054618.53714855,959.6099341836,164.06454892112473,-201.7624924054748 -739307770.7483,90731324.02478,-369010299.7568399,49538490.321882814,957.8523261014001,172.00036694687228,-200.42680073215672 -739314878.0442,97521263.81796001,-367709992.3095441,48127074.63889353,952.7973154929,193.88545955109083,-196.7524122782051 -739322731.6059,104981137.68640001,-366092829.678088,46597704.50648138,946.8889628641,217.9176161274065,-192.72378613684214 -739330585.1676,112393275.17819999,-364287536.26256865,45099885.022399694,940.6404918795,241.79587214805773,-188.7155741368755 -739338438.7293,119755001.02,-362295303.7742402,43633504.034253106,934.0509343015,265.52448877624255,-184.71567149514368 -739346292.291,127063634.2206,-360117291.6732984,42198540.855358064,927.1197903106,289.10743348220615,-180.7128619133559 -739354145.8527,134316491.4892,-357754629.11869836,40795059.92792541,919.8469650731,312.5484695800763,-176.69665784170283 -739358072.6336,137921165.7326,-356504398.8239615,40105167.433834106,916.0824908525001,324.2169126390725,-174.6804198843303 -739361999.4144,141510890.2164,-355208416.2411548,39423205.66542232,912.2327201009,335.851239268095,-172.65716001548722 -739365926.1953,145085330.1557,-353866814.45624226,38749204.49326199,908.2977352724,347.4518987911393,-170.62571220602558 -739369852.9762,148644151.1255,-352479724.7874452,38083198.3226563,904.2776371843,359.0193427513239,-168.58493220119453 -739373779.757,152187019.1317,-351047276.7713923,37425226.01471762,900.1725444593,370.55402733694194,-166.5336941984076 -739375743.1474,153952366.53530002,-350314083.37049466,37099265.905557156,898.0881669414999,376.3092292971401,-165.5038058887769 -739376724.8427,154833500.366,-349943251.2510623,36937044.861336485,897.0380283607,379.1838207977608,-164.9877340806602 -739377215.6903,155273680.0377,-349756777.19692653,36856124.418108,896.5109726654,380.6203674112448,-164.7294087591486 -739377461.1141,155493672.7784,-349663275.77833235,36815711.7577762,896.2469483512,381.33845384009936,-164.60017280803964 -739377583.826,155603644.83929998,-349616458.9845918,36795517.323293984,896.1148120944999,381.69745038605646,-164.53553639304985 -739377645.1819,155658624.788,-349593034.06828076,36785423.08052081,896.0487129434999,381.87693699831306,-164.5032135611022 -739377675.8599,155686113.24139997,-349581317.48045975,36780376.70293097,896.0156556124999,381.966677389778,-164.48705098744546 -739377706.5379,155713600.68060002,-349569598.1395375,36775330.82110056,895.9825931114001,382.05641583858807,-164.47088764112036 -739377767.8938,155768572.51560003,-349546151.1990437,36765240.54521994,895.9164525988999,382.23588690988527,-164.43855862793572 -739377890.6057,155878504.0081,-349499224.2843526,36745065.94453046,895.7841095352001,382.59480575095307,-164.37389130672287 -739378136.0295,156098318.2476,-349405238.3335631,36704740.55346964,895.5191752702,383.31255027840547,-164.24451936832884 -739378626.8771,156537751.46,-349216738.0533644,36624185.05465667,894.9883143296,384.7476671248114,-163.9856253745568 -739379608.5723,157415834.5461,-348837624.8301835,36463455.53740689,893.9226239362,387.6164152719147,-163.46722945951737 -739381571.9628,159168849.1884,-348070954.51820016,36143525.25216524,891.7753783598,393.34799586094374,-162.42794634622845 -739385498.7436,162662127.1005,-346503892.3385191,35509803.16397925,887.4175055915,404.78770894664353,-160.33893980175554 -739393352.3053,169596517.8195,-343235306.54435366,34267114.77273129,878.4489097339,427.5751141039011,-156.11537894071478 -739401205.8671,176459153.7396,-339788229.1763104,33057857.470269397,869.1446261284001,450.2433783443448,-151.8238865235332 -739409059.4288,183247406.1185,-336163578.1208184,31882598.80814293,859.5066395808,472.79710492354576,-147.4557775394728 -739416912.9905,189958662.9754,-332362233.2864434,30741975.008868262,849.5372372464,495.2413805916628,-143.00223340447366 -739424766.5522,196590331.5652,-328385032.34484303,29636692.387981415,839.2390357647,517.5818959865334,-138.45420663937603 -739432620.1139,203139841.1031,-324232765.4573451,28567529.539480776,828.6150179893999,539.8250844006718,-133.80232106022578 -739440473.6756,209604645.8268,-319906168.8087784,27535340.33506465,817.668580484,561.9782837935825,-129.03676520532693 -739448327.2373,215982228.4514,-315405916.8139576,26541057.779627353,806.4035935795,584.0499283264694,-124.14717642888294 -739449313.3823,216776751.26839998,-314828594.89258933,26418937.81004934,804.9667913462,586.8160986299579,-123.52389794639032 -739449313.3823,216776751.1597,-314828595.24920154,26418937.618280247,804.9667880579,586.8161011743,-123.52389075494143 -739456976.0082,222901682.9132,-310249792.256469,25491176.772638693,793.6347113288,608.2737890033421,-118.60574939329138 -739467812.9974,231413267.5606,-303493920.72085804,24244586.421874076,777.1079937374999,638.5273376544799,-111.40655401670892 -739473231.4921,235601116.04389998,-299993158.2037398,23650961.72494842,768.6292443304001,653.6230924131763,-107.69042383634348 -739478649.9867,239742640.4756,-296410639.0285369,23077697.993027285,760.0099030595,668.7051814841539,-103.89037919040737 -739484068.4813,243837085.893,-292746421.0280664,22525263.518453896,751.2525245713,683.7796735256517,-100.0013546462136 -739489486.976,247883711.8664,-289000527.30638134,21994154.94393103,742.3599459448001,698.8533991722438,-96.01792111408992 -739494905.4706,251881794.2107,-285172941.57867616,21484899.43837668,733.3353253230999,713.9340640718239,-91.93424123963345 -739500323.9652,255830626.8234,-281263603.14505637,20998057.016626015,724.1821878773001,729.030383118583,-87.7440192127442 -739505742.4599,259729523.8174,-277272400.99583083,20534223.17791982,714.9044796282999,744.1522383288793,-83.44044415085449 -739508451.7072,261660038.23000002,-275246050.955491,20311130.98158905,710.2202751599001,751.7261947866838,-81.24386440860135 -739511160.9545,263577821.95329997,-273199167.0427455,20094031.843615547,705.5066311769001,759.3108662610853,-79.01612609500256 -739513870.2018,265482796.09189996,-271131718.00594497,19883011.56354639,700.7641895278999,766.9079053845779,-76.75620307725816 -739516579.4491,267374883.5449,-269043667.958206,19678158.783699274,695.9936325311,774.5190796009192,-74.4630234245895 -739517934.0728,268316071.18690002,-267991904.9995589,19578073.71373847,693.5980358631,778.3305534418836,-73.30361416638146 -739518611.3846,268785446.9361,-267464086.64298755,19528621.613611013,692.3976991016,780.2378695242903,-72.72064185032093 -739519288.6964,269254009.1147,-266934976.0695248,19479565.11254053,691.1956862227,782.1462807726251,-72.13546658925941 -739519966.0083,269721756.5912,-266404572.5275436,19430905.708309665,689.9920095944,784.0558196735961,-71.54806975618163 -739520304.6642,269955324.4649,-266138885.65253136,19406725.388968185,689.3895512939,785.011022303057,-71.25353237031268 -739520473.9921,270072031.8745,-266005920.8958145,19394672.65811257,689.0881678403,785.4887337368832,-71.10605289840532 -739520558.6561,270130366.4398,-265939408.18217015,19388655.660304382,688.9374376249,785.7276172135231,-71.03226033748467 -739520600.9881,270159528.9368,-265906144.24083245,19385649.504528835,688.8620629057,785.8470659201737,-70.99535083546527 -739520643.3201,270188688.2428,-265872875.24299747,19382644.911444575,688.7866817833001,785.9665192838268,-70.95843251219296 -739520685.6521,270217844.35770005,-265839601.18831867,19379641.881348178,688.7112942607,786.0859773126032,-70.92150536301406 -739520727.9841,270246997.28110003,-265806322.07662505,19376640.414634153,688.6359003412,786.2054400149273,-70.88456938307945 -739520812.6481,270305293.5525,-265739748.6813814,19370642.172974154,688.4850933243,786.4443794738538,-70.81067091043036 -739520981.976,270421847.786,-265606541.1982436,19358664.466766268,688.1834026653,786.9223148389833,-70.6627677909095 -739521320.6319,270654802.9559,-265339883.416667,19334784.24678947,687.5797155562,787.8784132297965,-70.36653580137138 -739521997.9438,271120099.62460005,-264805596.22962335,19287325.250458345,686.3711238927001,789.7915357522943,-69.77236034050318 -739522675.2556,271584577.1526,-264270012.83736596,19240269.472797662,685.1609199783,791.705921682965,-69.17588663169457 -739523352.5674,272048234.4529,-263733132.37100595,19193618.47766763,683.949117215,793.6216064740358,-68.57709494735698 -739524707.1911,272973084.0689,-262655476.61804414,19101537.159018815,681.520769851,797.4570176164033,-67.37247758632898 -739527416.4384,274812893.7495,-260484559.31721637,18922302.20351146,676.6455037398,805.1450585103576,-64.93453295099488 -739530125.6857,276639462.4262,-258292779.8730334,18749725.306699812,671.7462652224,812.8581637287762,-62.45717902894893 -739532834.933,278452726.5015,-256080066.76413363,18583915.141694024,666.8240590792,820.599026989492,-59.93900250224945 -739535544.1803,280252625.1945,-253846340.89754418,18424984.30399087,661.8799610072,828.3705477936553,-57.37851993833419 -739540962.675,283812098.6253,-249315493.0797695,18128231.810119838,651.9307851786999,844.0183053701942,-52.124325291308764 -739546381.1696,287317460.80509996,-244699428.94219643,17860454.728057206,641.909022136,859.8295306260529,-46.681148083217465 -739551799.6642,290768349.86770004,-239997176.1128475,17622716.698540553,631.8265792704,875.8370797846612,-41.03410136154662 -739556676.3094,293827332.4278,-235690498.29351088,17435383.331749722,622.7119121508,890.4435185443567,-35.763836977384074 -739561552.9546,296841796.9435,-231312060.28707877,17274213.169189826,613.5710347556001,905.2731703648957,-30.301776022252 -739566429.5997,299811647.9436,-226860682.06609437,17140176.680619612,604.4175612301999,920.3645957097048,-24.633267093172208 -739570818.5804,302446348.04910004,-222790938.539608,17043605.577776685,596.1817375617001,934.2079896766908,-19.34178849231688 -739575207.561,305044931.3055,-218659821.35183448,16970677.671472326,587.9620159878,948.338732804898,-13.85713691828579 -739579596.5417,307607501.8624,-214465972.69468516,16922271.203475744,579.7740589980999,962.8020817209496,-8.165254707322276 -739583546.6243,309883170.3718,-210636578.0365983,16900448.884320565,572.4471334459,976.1472724631096,-2.852765005009701 -739587496.7069,312130002.2048,-206753778.11441678,16899986.978883654,565.1763208998,989.850363964717,2.6519899097116877 -739591446.7895,314348253.9452,-202816056.85491738,16921670.12478003,557.9797903853,1003.9646189840419,8.361893994671163 -739591772.6434,314529977.7801,-202488718.0883374,16924473.144533962,557.3900792357,1005.149171383599,8.842499691391026 -739591772.6434,314529976.4434,-202488722.65452626,16924472.00454639,557.3901148482,1005.1493219637088,8.8426012265233 -739593620.0951,315556647.7884,-200625512.95720446,16943344.113352396,554.0596061667001,1011.9279603910531,11.595961370141197 -739596518.5579,317155051.92380005,-197676803.40996057,16983330.32170725,548.8832936849,1022.7918284353536,16.016175043996952 -739599417.0208,318738550.3054,-194696167.65754855,17036312.178828344,543.7762198902,1033.9633190905718,20.56420718414637 -739602315.4836,320307360.8529,-191682663.03835174,17102668.690095946,538.7505445185,1045.4784479113405,25.245950895431747 -739605213.9465,321861739.2015,-188635235.0822822,17182795.980330586,533.8201822276,1057.3784998862598,30.06731722616962 -739608112.4093,323401984.2546,-185552700.84149015,17277107.186180294,529.0011366828,1069.7110270542107,35.034093575734914 -739611010.8722,324928444.81930006,-182433728.99806383,17386031.785489924,524.3119146468,1082.5310823684968,40.15173539076147 -739613909.335,326441527.57799995,-179276815.99087554,17510014.24224145,519.7740431073,1095.9027567249914,45.425061206335556 -739616807.7979,327941706.7594,-176080257.10025275,17649511.54181075,515.4127207280001,1109.901109860233,50.8578077351068 -739619706.2607,329429535.9157,-172842111.29985285,17804989.183565058,511.25764593480005,1124.6146174409519,56.451982521796424 -739622604.7236,330905662.4586,-169560157.9684883,17976914.891367286,507.3440796095,1140.1483004653082,62.20691580519025 -739625503.1864,332370845.6794,-166231843.36604178,18165748.934876263,503.7142231847001,1156.627768218875,68.11786902066234 -739628401.6493,333825979.3581,-162854213.67053443,18371929.59910875,500.4190259839,1174.2044974233124,74.17397064861365 -739631300.1121,335272120.4545,-159423830.29993305,18595851.165469132,497.5205819499,1193.06279865785,80.3551283971546 -739634198.575,336710525.8053,-155936662.02939194,18837830.938610308,495.0953514867,1213.429128561244,86.62734706690213 -739635647.8064,337427286.44479996,-154170328.21593407,18965658.93045675,494.0890611178,1224.263106446132,89.78148063783641 -739637097.0378,338142699.8155,-152387945.43572795,19098059.221368395,493.2385456244,1235.5846782084977,92.93552626114257 -739638546.2692,338857002.90610003,-150588774.0050256,19235023.298605517,492.55962662769997,1247.4403673705888,96.07745820769202 -739639995.5007,339570457.0847,-148772002.6308416,19376523.086868405,492.0701782785,1259.882616706646,99.19218693282181 -739641444.7321,340283351.3093,-146936739.17301467,19522505.955436304,491.7904637356,1272.9707315231728,102.26078143216381 -739642893.9635,340996005.874,-145081999.90421867,19672888.480416305,491.7435368417,1286.7719985338595,105.25947115641168 -739644343.1949,341708776.7917,-143206697.0039353,19827548.549076296,491.9557233153,1301.3630166123767,108.15835683950814 -739645792.4263,342422060.9394,-141309623.96258026,19986315.24663288,492.4571987147,1316.831282251293,110.91973683619841 -739647241.6578,343136302.1276,-139389438.44839102,20148956.095045157,493.28268339,1333.2770769225017,113.4959108143529 -739648690.8892,343851998.273,-137444642.2035952,20315160.541994765,494.4722793182,1350.8157137851774,115.82628409110055 -739650140.1206,344569709.9045,-135473557.38418514,20484518.61490931,496.07247660760004,1369.5802015778818,117.83351515127015 -739651589.352,345290070.26890004,-133474298.70385091,20656493.098652337,498.1373602395,1389.7243815456618,119.41834863009916 -739653038.5835,346013797.3486,-131444740.66424704,20830382.9655405,500.7300464175,1411.4265740379437,120.45262623552401 -739654487.8149,346741708.1476,-129382479.11103699,21005274.966580383,503.9243691388,1434.893722358571,120.76975373189487 -739655212.4306,347107518.93050003,-128338246.16126011,21092737.841837153,505.7736193797,1447.3627608909208,120.59368370732852 -739655937.0463,347474735.59070003,-127284786.53021835,21179978.902348254,507.80681320080004,1460.3659141629548,120.15158571323786 -739656661.662,347843496.1162,-126221700.31419674,21266791.849838175,510.0370855359,1473.939120720136,119.40515997526813 -739657386.2777,348213948.3881,-125148560.6430689,21352940.52912569,512.4786294109001,1488.120929813732,118.31024184851071 -739658110.8935,348586250.97529995,-124064911.73724884,21438154.37294512,515.1467565719,1502.9525813394712,116.81579680327604 -739658835.5092,348960573.9619,-122970266.95114711,21522122.989734557,518.0579475559,1518.4780345063364,114.86273207492479 -739659560.1249,349337099.80740005,-121864106.81375682,21604489.83167172,521.2298825037,1534.743914776679,112.38248716053215 -739660284.7406,349716024.2196,-120745877.14638162,21684844.751124747,524.6814414305,1551.7993405984932,109.29536385816675 -739660647.0484,349906450.8811,-120182053.14463234,21724122.785287514,526.5182978649,1560.6390835135298,107.49579266382273 -739660828.2024,350001917.2501,-119898930.40512502,21743508.99458405,527.4656246422,1565.1398221325126,106.52648228043131 -739660918.7793,350049715.2329,-119757062.04819772,21753135.162442423,527.946657086,1567.4107702538774,106.02370441828953 -739660964.0678,350073630.6193,-119686050.577364,21757931.02951591,528.1890338104,1568.5514344847343,105.76768873336368 -739660986.7121,350085592.43590003,-119650525.45015915,21760324.597472064,528.3106895893001,1569.1230698365634,105.63851197228121 -739660998.0342,350091574.3781,-119632758.03005111,21761520.282330535,528.3716346200999,1569.4092140351465,105.57362981900917 -739661003.6952,350094565.6081,-119623873.10474832,21762117.849017754,528.4021364558,1569.552367851636,105.5411151018875 -739661009.3563,350097557.0108,-119614987.36892574,21762715.23152005,528.4326578528,1569.695576181445,105.5085512197569 -739661020.6784,350103540.3348,-119597213.46440026,21763909.44274317,528.4937593730999,1569.9821564880604,105.44327574479064 -739661043.3227,350115509.06060004,-119561655.91486067,21766295.642339025,528.6161976001,1570.5559723874012,105.31213236202325 -739661088.6111,350139454.8474,-119490501.78549728,21771059.087761596,528.8620171061,1571.7062310279762,105.0474633315581 -739661179.1881,350187379.9623,-119348036.84833401,21780549.65650135,529.3574468138,1574.01730137736,104.50849498201319 -739661360.342,350283365.96889997,-119062475.77695817,21799381.381830864,530.3636174988001,1578.6820200819243,103.39121242777355 -739661722.6499,350475894.188,-118488792.47273165,21836413.052312866,532.4384018091,1588.184700081883,100.99241954012768 -739662447.2656,350863283.51049995,-117330882.30110447,21907656.66951108,536.8474426864,1607.9063946733431,95.47896551073143 -739663171.8813,351253998.44659996,-116158322.70811486,21974523.595966097,541.6211024060999,1628.626904697573,88.88582952762113 -739663896.497,351648311.29639995,-114970371.66304009,22036170.640464272,546.7816242298001,1650.3959198246432,81.04058980053856 -739664621.1127,352046510.1915,-113766253.07726946,22091619.36940718,552.3502950841,1673.2571744145368,71.74167476577725 -739665345.7285,352448897.9765,-112545162.58737467,22139733.33733859,558.3461913845,1697.2441441889505,60.75374534279695 -739666070.3442,352855789.9939,-111306277.04189989,22179191.848847724,564.7843782499,1722.3740446982267,47.802766500237794 -739666794.9599,353267510.2694,-110048769.24087639,22208460.103590596,571.6733760362999,1748.6395953952929,32.57106465739275 -739667519.5756,353684385.6788,-108771829.17505647,22225755.988915663,579.0116467618,1775.997854634179,14.692941203446026 -739668244.1913,354106736.8998,-107474695.35512684,22229014.069932368,586.7828548042,1804.355472632839,-6.248239935843799 -739668968.807,354534865.5998,-106156697.73669463,22215848.395893533,594.9495904449999,1833.5495766099775,-30.719922284343284 -739669693.4227,354969036.3179,-104817316.5984391,22183517.387420963,603.4453397571,1863.3238637159207,-59.23492329864666 -739670418.0384,355409451.9355,-103456260.27698006,22128895.273425646,612.1646449244,1893.3000799343595,-92.33734998348064 -739671059.5058,355804632.4591,-102233313.8312709,22059120.66540677,619.9463838403,1919.5823307069636,-125.91034644836998 -739671059.5058,355804632.0737,-102233315.00530891,22059121.075290363,619.9463788608999,1919.5823503381293,-125.91008345146554 -739671163.413,355869114.6441,-102033636.90832482,22045735.168822583,621.2025332141001,1923.7841487253831,-131.7521998208149 -739671748.6758,356234736.4587,-100900887.07496737,21958534.61848414,628.1969721843001,1946.9732149549284,-166.87073728359996 -739672333.9386,356604386.5513,-99754883.20945685,21849645.365432274,634.9406024525999,1968.9892643378248,-205.89924679012904 -739672919.2013,356977866.38740003,-98596474.32491769,21716733.38689746,641.2511294652,1989.2620187445666,-248.97788518386233 -739673504.4641,357354861.347,-97426868.53691086,21557414.26225755,646.9146112186,2007.136688687346,-296.1321400787704 -739674089.7269,357734923.4296,-96247677.56275454,21369332.03798717,651.6904292438,2021.8933220220197,-347.2325089213089 -739674382.3583,357925924.853,-95655109.19014253,21263801.015745703,653.6653739873,2027.8678745790846,-374.1700662985525 -739674674.9897,358117458.3541,-95060945.39628987,21150261.391513564,655.3215210967,2032.781969272763,-401.95627776174 -739674967.6211,358309425.9296,-94465509.76162891,21028475.466493502,656.6268145314999,2036.5457252594938,-430.5159535099961 -739675260.2525,358501720.36679995,-93869151.42452474,20898229.686655454,657.5504895477001,2039.0747190669647,-459.75928762543873 -739675552.8839,358694225.7313,-93272243.15162984,20759338.885784145,658.0638413106999,2040.2922927051513,-489.58218804722617 -739675845.5153,358886818.08930004,-92675178.71545576,20611650.34652653,658.1410189036,2040.131886967644,-519.8671078333066 -739676138.1467,359079366.4598,-92078369.59846249,20455047.5648612,657.7598091927999,2038.5392886280094,-550.4844065238024 -739676430.7781,359271733.9741,-91482241.12155989,20289453.506857857,656.9023736729,2035.4746782601464,-581.2942499285116 -739676723.4095,359463779.2675,-90887227.92421265,20114833.27411448,655.555893257,2030.9143482013737,-612.1489834738555 -739677016.0409,359655358.0234,-90293769.06359884,19931195.985637046,653.7130856164999,2024.8519877111214,-642.8959317414669 -739677308.6723,359846324.65010005,-89702302.79674399,19738595.79750842,651.3725588096,2017.2994375437015,-673.3805019407998 -739677601.3037,360036534.0342,-89113261.23050222,19537131.985445134,648.5389760355,2008.286851180325,-703.4494577551034 -739677747.6194,360131309.9796,-88819781.75098725,19433119.383590233,646.9403963438,2003.2473741588608,-718.2813768594962 -739677820.7772,360178608.05639994,-88673324.88751197,19380302.087921806,646.096424994,2000.5974967589268,-725.63877698594 -739677857.3562,360202233.671,-88600169.93693812,19353691.97326149,645.6633829822,1999.2404710380758,-729.3018745387428 -739677875.6456,360214040.50479996,-88563611.17326383,19340336.717731826,645.4441132364001,1998.5539954996975,-731.1294042472953 -739677884.7904,360219942.41359997,-88545336.51174843,19333646.56195975,645.3337931711,1998.2087746606337,-732.0421496673378 -739677889.3627,360222892.9892,-88536200.36636318,19330298.354805052,645.2784620931999,1998.0356694343468,-732.4982656929361 -739677891.6489,360224368.182,-88531632.59066498,19328623.469252877,645.2507538248,1997.9489932396525,-732.7262593065605 -739677892.792,360225105.7547,-88529348.7771454,19327785.831019524,645.2368890124,1997.9056242633242,-732.8402399835934 -739677893.9351,360225843.31149995,-88527065.01321942,19326948.062513463,645.2230170826,1997.8622347060223,-732.9542098975518 -739677896.2213,360227318.3775,-88522497.63421129,19325272.134688713,645.1952518752,1997.775393864977,-733.182117408294 -739677900.7936,360230268.31890005,-88513363.47228022,19321918.716161977,645.1396361022,1997.6014654013923,-733.6378029171867 -739677909.9384,360236167.4377,-88495097.53796543,19315205.63042363,645.0280633829,1997.2526223303303,-734.5486540719849 -739677928.2278,360247962.6038,-88458575.26957873,19301754.486396976,644.8035553359,1996.5509994781835,-736.3682624484253 -739677964.8068,360271540.53489995,-88385569.4689096,19274752.48849929,644.3491057671,1995.1320706067258,-739.9989881650578 -739678037.9646,360318645.868,-88239715.47588626,19220351.12608024,643.418612518,1992.2320012373953,-747.2255618514002 -739678184.2803,360412647.107,-87948658.93819506,19109971.2149918,641.4724343024,1986.187371244512,-761.5320400315178 -739678330.596,360506355.4209,-87658510.1625511,18997513.12388563,639.4151018216,1979.8255450754793,-775.629768102523 -739678476.9117,360599754.775,-87369314.74541865,18883008.511686176,637.249795187,1973.1577857315665,-789.5036404641179 -739678623.2274,360692829.6206,-87081116.57961974,18766491.183541037,634.9799697993001,1966.1961031099913,-803.1394359735243 -739678769.5431,360785564.93340003,-86793957.75091174,18647996.95722611,632.6093323991,1958.953175232021,-816.5238734911416 -739678915.8588,360877946.248,-86507878.44619378,18527563.522112694,630.1418156813,1951.4422660596197,-829.6446582075301 -739679208.4902,361061592.0003,-85939109.1970845,18281038.253594164,624.9328452732999,1935.6719809918068,-855.0512335793469 -739679501.1216,361243663.42370003,-85375089.63865878,18027248.626948297,619.3880177489,1918.9998439868714,-879.2816956124087 -739679793.753,361424067.5901,-84816066.4026577,17766548.05232329,613.5441671004,1901.5443776272677,-902.2757453498813 -739680086.3844,361602722.519,-84262251.18354206,17499305.082502224,607.439139683,1883.4254158786484,-923.9901238669213 -739680379.0158,361779557.3535,-83713820.71302697,17225898.5062852,601.1109835212,1864.7616982945176,-944.3979894227106 -739680671.6472,361954512.30990005,-83170917.39837357,16946712.686569437,594.5972175974,1845.6687507262595,-963.4878840824434 -739680964.2786,362127538.4282,-82633650.53247009,16662133.249436745,587.9342008685,1826.2571027289632,-981.2623856024774 -739681256.91,362298597.1538,-82102097.9719863,16372543.199479776,581.1566123952,1806.6308661499475,-997.736542657965 -739681549.5414,362467659.7825,-81576308.18236399,16078319.523067437,574.2970455362,1786.886674164116,-1012.9361868423741 -739681842.1728,362634706.80649996,-81056302.53498337,15779830.278186677,567.385714428,1767.1129667543528,-1026.8962039408345 -739682134.8042,362799727.18689996,-80542077.77260962,15477432.197713967,560.4502634881001,1747.3895870704732,-1039.6588347519223 -739682427.4356,362962717.5858,-80033608.54949078,15171468.775102431,553.5156692912,1727.7876505973118,-1051.2720595314072 -739683012.6984,363282628.8821,-79033740.11273465,14550145.35358738,539.7355659936,1689.1896883747634,-1071.2621053172204 -739683597.9612,363594538.39559996,-78056147.65812214,13918297.802210342,526.192627015,1651.7212922490478,-1087.312097802334 -739684183.2239,363898618.5348,-77100081.66722576,13278097.862179317,512.9956890814001,1615.6663773291048,-1099.880457977568 -739684768.4867,364195095.4248,-76164656.60335532,12631451.579034314,500.22044031089996,1581.2091167636681,-1109.413347544024 -739685353.7495,364484231.2097,-75248903.56825247,11980011.556410909,487.91525347469997,1548.4533842714047,-1116.3286670506873 -739685939.0123,364766309.7446,-74351811.88065499,11325196.410568591,476.1068550147,1517.4409596364367,-1121.007130317378 -739686524.2751,365041625.449,-73472360.64116096,10668213.835935663,464.8054043738,1488.1673990306256,-1123.7885054249218 -739687109.5379,365310474.9116,-72609541.8002323,10010084.784727156,454.0088019956,1460.5951898505125,-1124.9713611880204 -739687694.8007,365573150.77970004,-71762376.3191544,9351667.08501995,443.7061978489,1434.6642409567992,-1124.8150052431072 -739688280.0635,365829937.4819,-70929924.9057861,8693677.537104875,433.8807605129,1410.2999917854718,-1123.5426489686297 -739688865.3263,366081108.3794,-70111294.60614248,8036711.965960037,424.5118060408,1387.4195119584808,-1121.3451338713285 -739689450.5891,366326923.9994,-69305642.33547203,7381263.026459467,415.5763971418,1365.9359732222133,-1118.3847874836488 -739690035.8519,366567631.0815,-68512176.15902191,6727735.805400737,407.0505178917,1345.7618421179807,-1114.7991422188215 -739690621.1147,366803462.2066,-67730155.01810671,6076461.309615772,398.9099168681,1326.8110912720203,-1110.704374834161 -739691206.3775,367034635.8421,-66958887.388218656,5427708.035318077,391.13069596360003,1309.0006719622008,-1106.198397263724 -739691791.6403,367261356.67270005,-66197729.24168237,4781691.848095529,383.6897078034,1292.251441688346,-1101.3635798177297 -739692376.9031,367483816.1206,-65446081.589978844,4138584.3656856455,376.5648107052,1276.4886948756146,-1096.2691165570272 -739692962.1659,367702192.9825,-64703387.8022594,3498520.0636410713,369.73502009609996,1261.6424124193231,-1090.9730603828898 -739694132.6914,368127355.2533,-63242830.49605732,2227908.223515149,356.88301078020004,1234.4427733754526,-1079.9628358431626 -739695303.217,368538048.55120003,-61812347.11996251,970394.8542700559,344.9906540962,1210.1850881010503,-1068.6342471159164 -739696473.7426,368935321.91459996,-60408734.03453758,-273777.77749144286,333.93410711459995,1188.4698948215275,-1057.1972786304252 -739697644.2682,369320089.7763,-59029219.432334095,-1504573.0053710118,323.60695619169996,1168.9576005580611,-1045.7970863881285 -739698814.7938,369693151.2262,-57671397.96534004,-2722095.6878127716,313.9180899944,1151.3600420531232,-1034.5327977614527 -739699985.3194,370055206.58320004,-56333175.466290504,-3926546.4454343095,304.78957932099996,1135.4326397281461,-1023.4708130457411 -739701155.845,370406871.7168,-55012721.92429351,-5118189.184049234,296.1547197174,1120.967449642342,-1012.6542468430089 -739702326.3706,370748690.13,-53708432.26010352,-6297328.109991431,287.9563183365,1107.787243043466,-1002.1096494246477 -739703496.8961,371081143.22249997,-52418893.31990774,-7464291.1410068795,280.1452104877,1095.7404865422823,-991.8517993715898 -739704667.4217,371404658.9059,-51142856.41532982,-8619418.39591888,272.67901280079997,1084.697183833101,-981.8871483428806 -739705837.9473,371719618.95769995,-49879214.04437796,-9763053.887706412,265.5210684075,1074.5454039541785,-972.2162904877059 -739707008.4729,372026365.1247,-48626980.688612774,-10895539.793525886,258.63956815259996,1065.1884171976012,-962.8357493250826 -739708178.9985,372325204.4292,-47385276.22710648,-12017212.503633324,252.0068152028,1056.5423198492083,-953.7392653723839 -739709349.5241,372616413.55160004,-46153312.29413967,-13128399.90657168,245.5986110591,1048.5340657882887,-944.918730406309 -739710520.0497,372900242.6496,-44930380.45353551,-14229419.663333809,239.39374231,1041.0998322092485,-936.3648606749268 -739712861.1008,373446647.6853,-42509120.728564374,-16402169.749513468,227.5215739647,1027.736315124256,-920.0168960942751 -739714968.0469,373915244.4785,-40355081.84661785,-18325819.642120868,217.3664481632,1017.1770190567568,-906.1132298138346 -739717074.993,374362905.6371,-38222028.397875234,-20220928.335220724,207.63777191900002,1007.7839501698005,-892.9146948204432 -739719181.939,374790465.529,-36107693.12483547,-22088921.187843196,198.276628716,999.3827704172402,-880.3645801571065 -739721288.8851,375198645.8915,-34010141.39386511,-23931107.891938485,189.23461198389998,991.8308085018682,-868.4099886490383 -739723395.8311,375588075.57629997,-31927711.85728186,-25748691.15419656,180.4716240032,985.0103130452846,-857.0021982148008 -739725502.7772,375959306.1792,-29858969.65594934,-27542775.38626915,171.9541967911,978.8233325544934,-846.0966759733101 -739727609.7232,376312824.6092,-27802668.963394783,-29314375.488116097,163.6541977781,973.1877878793623,-835.6529026543001 -739729716.6693,376649063.2137,-25757722.913195003,-31064424.962453045,155.5478233579,968.0344316730791,-825.6341040297932 -739731823.6154,376968408.0393,-23723179.15296726,-32793783.515945163,147.6148088063,963.3044713645929,-816.0069434629045 -739733930.5614,377271205.6028,-21698199.8723298,-34503243.960030615,139.8378034005,958.9476962308186,-806.7412085715835 -739736037.5075,377557768.4875,-19682045.344190612,-36193538.472511016,132.20187178510002,954.9209882533091,-797.8095077003984 -739738144.4535,377828379.9927,-17674060.29088992,-37865344.24141078,124.694093428,951.1871298501932,-789.1869866360568 -739740251.3996,378083298.0285,-15673662.491517985,-39519288.53008203,117.3032383852,947.7138418406623,-780.8510681363158 -739742358.3456,378322758.3879,-13680333.234935958,-41155953.220291734,110.0195031949,944.4730021067876,-772.7812164126705 -739744465.2917,378546977.5181,-11693609.252324764,-42775878.89124363,102.8342943099,941.4400067123028,-764.9587253140625 -739748679.1838,378950474.9346,-7738361.218379118,-45967490.48913364,88.7300896665,935.9136618495111,-749.9890337820115 -739752893.0759,379295216.29940003,-3805085.012367118,-49097751.53394455,74.9400032334,930.9905012392583,-735.8222460564614 -739757106.968,379582437.79150003,108512.45556506142,-52169827.347188994,61.42404249516,926.556907540179,-722.3577533521257 -739761320.8602,379813224.7218,4004296.352650173,-55186493.18612093,48.15022560173,922.5223256273175,-709.5104849536194 -739765534.7523,379988541.0953,7883788.93622461,-58150193.43722661,35.09269529932,918.8137900021687,-697.208063895448 -739769748.6444,380109252.36719996,11748234.838412896,-61063090.20549747,22.23033725013,915.3719305078422,-685.3885476283277 -739773962.5365,380176143.1588,15598651.81835895,-63927103.314047314,9.545753329958,912.1480135154674,-673.9986276148268 -739778176.4286,380189931.2152,19435870.681753,-66743943.56778464,-2.975512198527,909.1017185055925,-662.9921831180009 -739779049.0771,380186211.1831,20228929.52971472,-67321526.3872295,-5.549259420576,908.4898706998283,-660.7570195041797 -739779049.0771,380186224.23649997,20228964.73946974,-67321531.1579924,-5.549122837767,908.4901850875899,-660.7572554572392 -739779641.2517,380182421.9952,20766827.429818872,-67712367.79352388,-7.292013235442,908.0783588797142,-659.2486970744665 -739786498.4654,380063713.9879,26977786.801275957,-72174171.33674683,-27.26923355344,903.4820322586585,-642.2309780883515 -739793355.679,379809242.7055,33158127.805763066,-76521883.70850334,-46.89500356340999,899.1322940691895,-625.9516590595986 -739800212.8927,379421308.52820003,39309242.80964601,-80760167.8773399,-66.20001510942001,894.9457075756081,-610.2977481709976 -739807070.1064,378902025.11490005,45432019.9967127,-84892984.0124889,-85.2083642013,890.8577260474871,-595.1764393543721 -739813927.3201,378253358.539,51526955.58289008,-88923712.4930093,-103.9392414099,886.8178866276805,-580.510804743396 -739820784.5338,377477156.5229,57594237.87116575,-92855251.03869918,-122.4081372885,882.7863840761833,-566.2365426532616 -739827641.7475,376575170.7133,63633811.53168905,-96690092.52208942,-140.6277155724,878.7315872157208,-552.299492758768 -739834498.9612,375549073.6761,69645426.84652999,-100430387.44475678,-158.60845650710002,874.6282063386219,-538.6537126181851 -739841356.1748,374400472.25450003,75628678.58878922,-104077995.24311793,-176.35913570190002,870.4559265051377,-525.2599758263294 -739848213.3885,373130917.8632,81583036.14413434,-107634525.82597762,-193.8871867594,866.1983687443482,-512.0845834302472 -739855070.6022,371741914.7355,87507867.75589275,-111101374.21228477,-211.19897744210002,861.8422963148662,-499.0984177989702 -739861927.8159,370234926.4691,93402459.86917643,-114479749.23811507,-228.3000227484,857.3769993134475,-486.2761814349363 -739868785.0296,368611381.2813,99266032.74135305,-117770697.56301978,-245.1951507032,852.7938133469203,-473.59577985888035 -739872213.6364,367756337.5482,102185928.36383554,-119383674.48222855,-253.5668491887,850.4557685548332,-467.3026124694639 -739873927.9398,367318073.4144,103642856.473298,-120182084.08601624,-257.7339506721,849.2747953692174,-464.16680083884023 -739874785.0916,367096265.1342,104370559.59660855,-120579274.47044678,-259.81284041820004,848.6812830028637,-462.6014717773602 -739875213.6674,366984693.1048,104734220.16725388,-120777366.69648623,-260.8511232056,848.3837658581399,-461.8194373150345 -739875427.9553,366928740.2629,104916002.6094885,-120876287.14634717,-261.3699744685,848.2348164950388,-461.42857586085 -739875535.0993,366900722.1533,105006881.85795623,-120925715.9652228,-261.6293276158,848.1602940478786,-461.23318386201356 -739875588.6713,366886702.6785,105052318.4876039,-120950422.52429393,-261.7589860744,848.1230208744099,-461.13549751998767 -739875642.2433,366872676.258,105097753.12030445,-120975123.85031629,-261.8886324586,848.0857397312453,-461.0378176045268 -739875749.3872,366844602.58250004,105188616.39264862,-121024510.80455393,-262.147889011,848.0111535260278,-460.84247701808584 -739875963.6752,366788371.9112,105370318.95448878,-121123221.93121281,-262.6662572992,847.8618853734195,-460.45187262709914 -739876392.251,366675577.43160003,105733628.05062993,-121320393.13371816,-263.7024149934,847.562965568004,-459.6709692656274 -739877249.4027,366448657.0821,106459861.36433215,-121713731.94211027,-265.772417909,846.9635877625564,-458.11037066556804 -739878963.7061,365989500.05700004,107910782.30502596,-122496399.94361684,-269.9031980093,845.7586466765722,-454.9938989797924 -739882392.313,365049994.27750003,110806391.65065844,-124045734.2537736,-278.1280441757,843.3237743637859,-448.77902523419914 -739889249.5267,363086799.6942,116572275.92595789,-127080669.77619289,-294.4323261597,838.3522808377633,-436.4152477482992 -739896106.7404,361012460.74200004,122303596.30570707,-130031094.99446815,-310.54531799660003,833.2422121210072,-424.12831131278836 -739902963.954,358828279.0924,127999392.44005886,-132897494.5114173,-326.46991133660003,827.9907362521606,-411.90609342311575 -739909821.1677,356535537.3294,133658686.82364318,-135680274.07891306,-342.20878883380004,822.5956607718372,-399.7376860312825 -739916678.3814,354135500.2529,139280488.7993058,-138379768.31394553,-357.7644601996,817.0553261563431,-387.6132230358966 -739923535.5951,351629415.9584,144863797.89968207,-140996247.32194766,-373.1392921735,811.3685180373647,-375.5237330052402 -739930392.8088,349018516.7317,150407606.6545196,-143529922.40245333,-388.33553373219996,805.5343946873849,-363.46101271427347 -739937250.0225,346304019.7709,155910902.90032363,-145980950.8887385,-403.3553375994,799.5524267104823,-351.41751772320515 -739944107.2362,343487127.7925,161372671.78075403,-148349440.37967062,-418.20077876529996,793.4223472511081,-339.38626746200197 -739950964.4498,340569029.50519997,166791897.39293396,-150635452.30429077,-432.8738707283,787.1441104059536,-327.36076202100054 -739964678.8772,334433900.9225,177498658.07872325,-154960076.04717308,-461.7108392528,774.1438841076668,-303.30295712714695 -739978393.3046,327907875.29370004,188023084.51314506,-158954494.06994736,-489.8816434319,760.5546244938378,-279.19912131776215 -739980757.4181,326744073.7011,189818286.43126968,-159609632.39886108,-494.6715683017,758.1528899088631,-275.0363545776815 -739988598.5783,322803389.6813,195731492.02357316,-161712045.1443168,-510.4210446202,750.0629997199025,-261.2083539364131 -739999462.0454,317141440.3289,203817525.31561887,-164445337.58871892,-531.8962182806,738.5419421743247,-241.98599752144077 -740010325.5124,311248340.1156,211776438.8029238,-166969325.3501193,-552.9780099945,726.6604259711077,-222.671523984855 -740021188.9795,305128318.4999,219604336.8664035,-169282905.08381715,-573.6746078219,714.4222378150135,-203.2460099087659 -740032052.4465,298785513.3696,227297367.00542378,-171384766.55328026,-593.9946862665,701.831516610198,-183.69024639998653 -740042915.9136,292223964.9823,234851723.5374267,-173273387.61687407,-613.9475853668,688.8927481367348,-163.9843592448886 -740053779.3806,285447607.5511,242263651.4808535,-174947024.81408176,-633.5435248842,675.6107855295705,-144.10741134368504 -740064642.8477,278460258.32640004,249529450.7658637,-176403699.52337813,-652.7938667515,661.9908952183954,-124.03696993125828 -740075506.3147,271265603.50339997,256645481.0899022,-177641179.1535635,-671.7114418673,648.0388295136107,-103.74861950912648 -740080938.0482,267591648.2392,260146213.04124933,-178176947.78231266,-681.0499522462001,640.9401859138802,-93.51441990276334 -740083653.915,265735702.0631,261882064.8709595,-178423942.82208583,-685.6900099855,637.3605787749373,-88.37324883916298 -740085011.8484,264803009.82540002,262746338.31782576,-178542198.71426073,-688.0028565364,635.5632522090945,-85.79643907386918 -740085690.8151,264335486.75390002,263177558.9487941,-178600013.7693387,-689.1574994197,634.6627143860597,-84.50645159548279 -740086030.2984,264101431.33200002,263392939.87017488,-178628592.75972432,-689.7343776978,634.2119776262992,-83.86105884241968 -740086200.0401,263984330.19329998,263500572.93599826,-178642800.08104584,-690.0227062901,633.9864923833586,-83.53826228875207 -740086284.9109,263925761.27229998,263554375.11469597,-178649883.19350925,-690.166842979,633.873720557777,-83.37683892196364 -740086369.7818,263867180.11900002,263608167.7215325,-178656952.60513383,-690.3109612755,633.7609292679895,-83.21539880321839 -740086539.5234,263749981.12259996,263715724.21249056,-178671050.31969032,-690.5991427294999,633.5352883118594,-82.8924682340949 -740086879.0068,263515436.41169998,263930722.2592609,-178699081.27589875,-691.1752853177001,633.0837729867909,-82.24640540152299 -740087557.9735,263045760.4663,264360258.24316558,-178754484.97667345,-692.3266912012999,632.1798094866953,-80.95346952622776 -740088915.9069,262104065.2596,265217486.8194006,-178862656.95047635,-694.6260018422,630.368157549497,-78.36432927008065 -740091631.7736,260211323.647,266924546.84853154,-179068438.2786183,-699.210749501,626.7300063541106,-73.17275008677146 -740097063.5071,256388609.35869998,270308891.07655,-179437578.25727904,-708.3258405040001,619.3947468186165,-62.73454417066279 -740107926.9742,248595599.7017,276956995.72692597,-180004712.24400908,-726.3478823086999,604.4920748966271,-41.62214787068581 -740118790.4412,240608228.17839998,283441557.3689918,-180340641.2397132,-744.1129094721,589.2875694488688,-20.161930336583765 -740129653.9083,232429133.712,289759352.75430536,-180441346.43865347,-761.6500931693,573.7917575893039,1.6915191692079645 -740140517.3753,224060603.88849998,295907282.49877,-180302274.58047155,-778.9952382458,558.016989024189,23.991482833048224 -740147711.1202,218415667.0118,299883482.6413318,-180075718.20876038,-790.3967423306,547.4245301116324,39.034564450573555 -740151939.4303,215059500.5892,302184903.9698999,-179891765.97355932,-797.0741314481,541.1463958226258,47.98916674364568 -740159074.3719,209332311.3914,306007920.870092,-179494888.3194219,-808.3131032502,530.4687072630262,63.30427228074362 -740166209.3134,203525012.2027,309754392.2798542,-178987756.95582584,-819.5333572671,519.6909378702469,78.89897444943006 -740173344.255,197637656.12510002,313423627.86149,-178368275.58604947,-830.758095904,508.81989710397954,94.80235006286449 -740180479.1966,191670115.4706,317014989.46920484,-177634125.37105128,-842.0149565868,497.86343821607466,111.04783925444437 -740184046.6673,188656178.039,318781284.36862034,-177223255.6646714,-847.6655444835,492.3559685593045,119.31073524178774 -740187614.1381,185622046.3714,320527899.3424864,-176782730.704402,-853.3371042259,486.8306739932698,127.67413994839828 -740191181.6089,182567636.4569,322254773.2292321,-176312181.64611065,-859.0348787577,481.2889347037748,136.14389641745623 -740194749.0797,179492844.6255,323961849.9945946,-175811217.9515048,-864.7646585623,475.7322471082512,144.72633270454682 -740198316.5505,176397545.4663,325649079.1689813,-175279425.56286356,-870.5328537537,470.1622365251893,153.42831498028673 -740200100.2859,174842159.9399,326485236.7756233,-175001832.29906926,-873.4335501272001,467.3727817779568,157.82644337905631 -740201884.0213,173281589.4883,327316416.3287845,-174716364.8931903,-876.3465779469,464.5806715509335,162.2573078527817 -740203667.7566,171715811.2157,328142613.31033146,-174422964.03175813,-879.2729522719001,461.7861519714995,166.72194621964363 -740205451.492,170144800.365,328963823.6509208,-174121568.50870502,-882.2137451962,458.98948028028576,171.22144279301557 -740206343.3597,169357324.4343,329372557.6909595,-173967853.06657436,-883.6899000967001,457.5904209592422,173.48461506638222 -740207235.2274,168568530.1802,329780043.75815964,-173812115.10736853,-885.1700895908,456.1909254402309,175.75693096498793 -740208127.0951,167778413.94349998,330186281.47774225,-173654346.4160462,-886.6544656266,454.7910293021345,178.03854036322585 -740208573.029,167382858.9016,330388932.098606,-173574697.94263384,-887.3982722861,454.09094234502845,179.1828779061946 -740208795.9959,167184956.9366,330490140.3318602,-173534682.21179342,-887.770588952,453.7408661597608,179.755938376359 -740208907.4794,167085974.8159,330540715.17710644,-173514626.4146788,-887.9568517187,453.5658201450975,180.04269260878493 -740208963.2211,167036475.9677,330565995.281685,-173504586.52592736,-888.0500093488,453.47829518925835,180.18612585919627 -740208991.092,167011724.5962,330578633.504388,-173499563.58310813,-888.0965947431,453.4345322279677,180.25785653437538 -740209018.9628,166986971.9262,330591270.5073451,-173494538.64095744,-888.14318453,453.39076894616505,180.32959658297167 -740209046.8337,166962217.95769998,330603906.2906558,-173489511.69924593,-888.1897787146,453.3470053448821,180.4013460098786 -740209074.7046,166937462.6905,330616540.85422415,-173484482.75769228,-888.2363773018001,453.3032414253861,180.4731048197784 -740209130.4463,166887948.2595,330641806.3220088,-173474418.87383792,-888.3295877039001,453.21571263685723,180.61665060912438 -740209241.9297,166788903.808,330692322.62054205,-173454267.0965014,-888.5160615592,453.04065129163723,180.90385499850885 -740209464.8967,166590752.519,330793296.66676056,-173413867.44419217,-888.8892225976999,452.6905137872469,181.4787161102036 -740209910.8305,166194200.1741,330995010.5410765,-173332683.27770498,-889.6364070326999,451.99018160596336,182.63025643748998 -740210802.6982,165400094.6074,331397501.30174404,-173168771.699639,-891.1342987365,450.5893054068538,184.94068047343367 -740211694.5659,164604650.9816,331798742.5501665,-173002795.1210435,-892.6370299808,449.1881793542948,187.26103293792184 -740212586.4336,163807864.8959,332198734.08275884,-172834744.6057245,-894.1447761441999,447.7868433788277,189.5914819568755 -740214370.169,162210246.9334,332994967.36987454,-172492385.24863073,-897.1760410163,444.98370615931293,194.28336222097556 -740216153.9044,160607202.3475,333786200.24904794,-172141619.13177028,-900.229605438,442.1802328388253,199.01774877202467 -740217937.6398,158998689.94169998,334572432.43619776,-171782369.10821372,-903.3070747202,439.3767791333968,203.79613900302598 -740219721.3752,157384665.5663,335353664.2971996,-171414555.29384664,-906.4101550555,436.5737184697423,208.62010480648834 -740223288.8459,154139888.4003,336901131.955225,-170652902.2314726,-912.7005265637999,430.97036532966194,218.41145224932063 -740226856.3167,150872451.2063,338428620.43000877,-169855960.76224813,-919.1167107286,425.3735599610643,228.40604793651664 -740230423.7875,147581873.40129998,339936159.6560053,-169022978.11686972,-925.6769099352,419.78705367892485,238.61968898091436 -740233991.2583,144267604.938,341423793.6764651,-168153142.09797773,-932.401931346,414.2150132677036,249.06993053295582 -740237558.7291,140929016.1905,342891582.2279624,-167245574.36837792,-939.3156664808,408.6620802575244,259.7763412934478 -740241126.1999,137565385.7667,344339602.5754141,-166299322.65748462,-946.4456788462,403.13344044033454,270.7608043786827 -740244693.6706,134175886.67479998,345767951.5317704,-165313352.1624791,-953.8239400248,397.63490628173884,282.0478749031016 -740248261.1414,130759568.46910001,347176747.9297652,-164286534.99100485,-961.4877352734001,392.17301361693353,293.6652021901071 -740251828.6122,127315336.64320001,348566135.3687147,-163217638.3927922,-969.480815342,386.75513704233344,305.6440356023625 -740255396.083,123841926.896,349936285.4580894,-162105310.81077874,-977.8548543667999,381.38962692579133,318.0198287710254 -740258179.7667,121110437.08649999,350992176.10083437,-161206247.97372004,-984.6928540249,377.2453760508961,327.9781312853528 -740259678.5665,119631759.3346,351555935.2139517,-160710570.3370371,-988.4981391433,375.0313284010695,333.4576606036169 -740262569.2178,116763447.9367,352633890.86694187,-159731107.5298671,-996.1072395755,370.79940534667526,344.27482516422265 -740265459.8691,113872579.03310001,353699692.61676526,-158719873.834546,-1004.1140554000001,366.6233948953545,355.4445284391928 -740268350.5204,110957923.15879999,354753512.6894322,-157675804.6694692,-1012.575363572,362.51077377134516,366.998884426385 -740271241.1717,108018072.2136,355795546.20527387,-156597736.95014602,-1021.55835186,358.4699255820781,378.97402977078923 -740274131.823,105051405.8847,356826013.9804564,-155484396.59732276,-1031.143116039,354.51026777318145,391.4107246698078 -740277022.4742,102056049.91479999,357845165.717701,-154334384.21904042,-1041.42591216,350.6423920061966,404.35503480584106 -740279913.1255,99029823.36359999,358853283.6096117,-153146158.68916756,-1052.523439501,346.87821553888534,417.85909400349334 -740282803.7768,95970171.82675,359850686.4088506,-151918018.40655628,-1064.5785582409999,343.2311340401743,431.98192316504156 -740285694.4281,92874081.02106,360837733.881742,-150648080.24571496,-1077.768028615,339.71615777878316,446.7902535527769 -740287139.7537,91311276.22156,361327499.19889396,-149996793.11753076,-1084.8551915589999,338.01336339069195,454.4746220563083 -740288585.0794,89737964.39619,361814831.6367004,-149334256.13463336,-1092.313148881,336.34999255456404,462.3592281618398 -740290030.405,88153583.40201,362299789.8590419,-148660172.17438787,-1100.178955379,334.72839089664967,470.45483433657506 -740291475.7307,86557514.0425,362782435.984244,-147974228.1778663,-1108.494630802,333.1509906626517,478.7727273674594 -740292921.0563,84949072.30018,363262835.6967243,-147276094.42299476,-1117.308012165,331.6202907092629,487.32466740921416 -740294366.382,83327500.20206,363741058.3241707,-146565423.8960555,-1126.67378613,330.13882492411676,496.12279670247773 -740295811.7076,81691955.04584001,364217176.85082275,-145841851.85380256,-1136.654744831,328.7091145431914,505.17949093630216 -740297257.0332,80041496.61016,364691267.8592912,-145104995.61726978,-1147.323324172,327.33359713397726,514.50712630042 -740298702.3589,78375071.89269,365163411.33026147,-144354454.83665416,-1158.763497806,326.0145229121126,524.1177269406028 -740300147.6845,76691496.80888,365633690.27930766,-143589812.32546487,-1171.073125431,324.7538039060281,534.0224377230417 -740301593.0102,74989434.06457,366102190.10787314,-142810635.89732924,-1184.3668812570002,323.55279547310374,544.2307441106724 -740303038.3358,73267366.32862,366568997.599871,-142016481.48975378,-1198.779932226,322.41198029626275,554.7493237330619 -740304483.6615,71523563.34869,367034199.3309366,-141206898.4291697,-1214.472586244,321.33050900425826,565.5803532155802 -740305928.9871,69756041.5475,367497879.3087949,-140381437.55436713,-1231.636205891,320.3055319454778,576.719014055135 -740307374.3127,67962513.88600999,367960115.4047381,-139539663.88865036,-1250.500779495,319.33121692532404,588.1497888892906 -740308819.6384,66140327.268060006,368420974.06629854,-138681175.78820837,-1271.344661,318.397299893584,599.8409440959215 -740310264.964,64286383.99041,368880502.4620817,-137805633.97220564,-1294.507161846,317.48691874345997,611.7362166657107 -740310987.6268,63346390.044,369109774.4952123,-137361389.34856242,-1307.084514567,317.03270890222603,617.7331257370955 -740311710.2897,62397042.3059,369338716.73419,-136912805.48290646,-1320.404844081,316.57334929535085,623.7421920940355 -740312432.9525,61437779.87128,369567323.47304994,-136459880.76858503,-1334.5357400780001,316.1031442820348,629.7427641949165 -740313155.6153,60467990.24115,369795584.41169125,-136002630.36065495,-1349.552563467,315.6150219416248,635.7089002677995 -740313878.2781,59487003.3501,370023483.54459053,-135541090.45599276,-1365.539441476,315.1002089348617,641.6080891363795 -740314600.9409,58494084.842429996,370250997.79338145,-135075323.58499676,-1382.590372467,314.54782299319,647.3996416992223 -740315323.6038,57488428.50144,370478095.3008895,-134605425.24119842,-1400.81043733,313.94436022009035,653.0326613892125 -740316046.2666,56469147.78345,370704733.3156293,-134131532.13470727,-1420.31709892,313.2730492575708,658.4434791350924 -740316768.9294,55435266.3731,370930855.54486066,-133653832.56106475,-1441.2415526099999,312.51303448538346,663.5523996924561 -740317491.5922,54385707.78515,371156388.8441738,-133172579.41300696,-1463.730054429,311.6383433087216,668.25957394765 -740318214.2551,53319284.03193,371381239.06962174,-132688106.55492833,-1487.94510063,310.61657725803315,672.439750373329 -740318936.9179,52234683.566070005,371605285.84991825,-132200849.51852551,-1514.066243116,309.4072568109928,675.935613706737 -740319659.5807,51130458.86098,371828376.03353226,-131711371.56624748,-1542.2901961310001,307.9597313238131,678.5493415130766 -740320382.2435,50005014.324609995,372050315.41196185,-131220396.70684668,-1572.829675924,306.2105569190073,680.0319661527392 -740321185.2022,48727493.780420005,372295264.16519636,-130674248.33415128,-1609.752621012,303.815904755349,679.9689256396554 -740321586.6816,48077278.890070006,372416961.1735848,-130401408.08073016,-1629.489728543,302.4000882582079,679.1022429590388 -740321988.1609,47418960.00937,372538055.8731677,-130129046.01121123,-1650.129688676,300.8117886323971,677.5722135254466 -740322389.6402,46752167.06077,372658474.4110923,-129857446.78868027,-1671.7099905740001,299.02759587782134,675.2855360042483 -740322791.1196,46076515.4625,372778132.9459288,-129586934.93808693,-1694.265149339,297.0211102401919,672.1367216555384 -740323192.5989,45391607.64933,372896936.3862433,-129317879.99880761,-1717.825011754,294.7626377714167,668.0068046861772 -740323594.0783,44697035.363199994,373014777.0078007,-129050702.19068249,-1742.412591238,292.21889434580135,662.7620702498745 -740323995.5576,43992382.92435,373131532.9580851,-128785878.57600576,-1768.041337985,289.35273932639296,656.2528825602994 -740324397.037,43277231.72815,373247066.66243035,-128523949.65533817,-1794.711745082,286.1229698775929,648.3127348329454 -740324798.5163,42551166.25448,373361223.1697948,-128265526.26643433,-1822.407193949,282.48421875169146,638.7576908174196 -740325199.9957,41813781.91094,373473828.48537636,-128011296.59497157,-1851.0889616729999,278.387014010392,627.3864514141051 -740325601.475,41064695.0563,373584687.973328,-127762032.98236921,-1880.690352339,273.77807636682775,613.9813509595406 -740326002.9543,40303555.55167,373693584.9416005,-127518598.08351885,-1911.109988942,268.60094903574355,598.3106678665923 -740326404.4337,39530062.14847,373800279.56553596,-127281949.75751959,-1942.204421892,262.7970726310609,580.1327099055325 -740326805.913,38743980.9303,373904508.3519042,-127053143.87654364,-1973.7803883430001,256.30742948670377,559.2021883802596 -740327207.3924,37945166.839379996,374005984.399884,-126833334.02833036,-2005.587298404,249.0748805275847,535.2793989399038 -740327608.8717,37133588.033879995,374104398.7542653,-126623766.89832586,-2037.310827891,241.04729322039233,508.1426378355618 -740328054.9599,36216999.54596,374209757.40701675,-126404546.96930844,-2071.994291798,231.14322595307817,473.9943886194457 -740328278.004,35752958.53152,374260720.55976593,-126300891.24600461,-2088.929247082,225.79001913990504,455.2856409890554 -740328501.0481,35285181.56516,374310459.49812645,-126201531.87989764,-2105.478995646,220.16568188656836,435.46826870343136 -740328724.0921,34813764.7729,374358913.68911886,-126106716.73944809,-2121.551173722,214.27006753301544,414.53844071168254 -740328947.1362,34338825.40317,374406022.8327723,-126016693.4910495,-2137.048905031,208.10546027650744,392.50199112524837 -740329170.1803,33860502.71606,374451727.434721,-125931707.31906141,-2151.871897326,201.67683623670126,369.37551252013606 -740329393.2244,33378958.60089,374495969.43179286,-125851998.41602673,-2165.917793863,194.99209057045414,345.18732094346063 -740329616.2685,32894377.85713,374538692.8649127,-125777799.27652606,-2179.0837686679997,188.06221583044504,319.97823242629636 -740329839.3125,32406968.10269,374579844.5851748,-125709331.83760518,-2191.268338977,180.90141632939626,293.802088482466 -740330062.3566,31916959.26267,374619374.9700756,-125646804.56962249,-2202.373357555,173.5271440387253,266.7259708181182 -740330285.4007,31424602.58616,374657238.649604,-125590409.50564706,-2212.306110338,165.960045369379,238.83005960413362 -740330508.4448,30930169.19711,374693395.2022724,-125540319.3801588,-2220.98145746,158.22380916541655,210.20709407021272 -740330731.4889,30433948.16931,374727809.80668694,-125496684.92585027,-2228.323922944,150.34491255587412,180.9614185598079 -740330954.5329,29936244.14975,374760453.82641417,-125459632.43036485,-2234.2696393349997,142.3522662946691,151.2076173550862 -740331066.055,29686934.800350003,374776104.7328121,-125443606.67464286,-2236.702358126,138.3228786833251,136.17835397377013 -740331177.577,29437374.57316,374791305.3034897,-125429261.64276436,-2238.768052043,134.27676730774243,121.06876613124359 -740331289.0991,29187604.63237,374806053.9006908,-125416605.38248247,-2240.462707603,130.21801818855553,105.89522368293652 -740331400.6211,28937666.535159998,374820349.3454384,-125405644.10082532,-2241.783293599,126.15077225001116,90.6743526859471 -740331512.1431,28687602.12101,374834190.92296076,-125396382.14026843,-2242.727781046,122.0792059676836,75.4229578962024 -740331567.9042,28562535.66944,374840941.41557384,-125392389.24849226,-2243.058631027,120.04311271890614,67.7910949486908 -740331595.7847,28499996.18292,374844274.0887582,-125390552.40139937,-2243.188683465,119.02521793125703,63.97454802302334 -740331609.7249,28468725.16212,374845929.7836278,-125389673.88105974,-2243.2448668,118.51633713958992,62.06623644335678 -740331616.6951,28453089.36828,374846754.9709077,-125389244.59674715,-2243.270747984,118.2619169716094,61.112085586553796 -740331620.1801,28445271.405,374847166.8995553,-125389032.44854254,-2243.2831359969996,118.13471239147171,60.635013198697486 -740331621.9226,28441362.407330003,374847372.6976434,-125388926.9979308,-2243.2891918640003,118.07111153319376,60.396477990733985 -740331622.7939,28439407.90456,374847475.55515605,-125388874.42849725,-2243.292185265,118.03931146941119,60.27721066323372 -740331623.6652,28437453.399180003,374847578.3849437,-125388821.96298051,-2243.295155642,118.00751165155344,60.15794352960631 -740331625.4077,28433544.38073,374847783.9613604,-125388717.3436611,-2243.301027332,117.94391276084843,59.91940987287719 -740331628.8928,28425726.31353,374848194.7818222,-125388509.35202484,-2243.312494456,117.8167180184899,59.442345241120975 -740331635.8629,28410090.062439997,374849015.0928445,-125388098.35646302,-2243.334323739,117.56234113652093,58.4882285105329 -740331649.8032,28378817.12948,374850650.3960494,-125387296.31592542,-2243.373562978,117.05364135434823,56.58005962765692 -740331677.6837,28316269.82786,374853899.73106205,-125385772.03182776,-2243.434369147,116.03648625735704,52.76409568816279 -740331733.4447,28191171.78012,374860313.35169125,-125383042.58491047,-2243.4853457920003,114.00338190252657,45.13458604039313 -740331844.9667,27940980.26368,374872800.78057015,-125378859.25555488,-2243.305389935,109.94381217872574,29.892598255083257 -740332068.0108,27440761.649979997,374896420.9810015,-125375581.37792376,-2241.826185026,101.86557801691004,-0.46497891241507006 -740332291.0549,26941037.29055,374918247.84851754,-125379046.06475899,-2238.879375117,93.86852975346959,-30.54549338890438 -740332391.4247,26716408.97093,374927490.3590762,-125382785.73298416,-2237.0853539610002,90.30455789310304,-43.957768373273986 -740332491.7946,26491975.008500002,374936376.4028747,-125387867.04053219,-2235.007404929,86.76589937392441,-57.277621265007824 -740332592.1644,26267763.63736,374944908.6500297,-125394280.1787464,-2232.650865138,83.25511741942574,-70.49450851623565 -740332692.5342,26043802.53082,374953090.02301437,-125402014.30014805,-2230.0215685840003,79.7746742412253,-83.59827739127057 -740332792.9041,25820118.75312,374960923.6859585,-125411057.55895367,-2227.1258127150004,76.32692428409348,-96.57919443355594 -740332893.2739,25596738.71462,374968413.0336435,-125421397.15455556,-2223.970323295,72.91410828818778,-109.42797068726831 -740333094.0136,25150991.984190002,374982373.4457545,-125445909.65613516,-2216.9089682,66.2016428847568,-134.69429536980653 -740333294.7533,24706759.074559998,374995002.576154,-125475432.08937629,-2208.898464982,59.65275741617394,-159.3325760085247 -740333696.2326,23823557.377720002,375016406.35273564,-125548968.70449089,-2190.294837388,47.09731280936609,-206.50731754014663 -740334057.564,23035556.45662,375031484.12072104,-125630860.32638894,-2170.989959708,36.46961527087686,-246.33716463275076 -740334219.2516,22685281.71666,375037012.0826935,-125672068.9680456,-2161.680553518,31.93146190586566,-263.30448190075015 -740334219.2516,22685281.86259,375037012.0715827,-125672068.92278041,-2161.680433732,31.931466516586383,-263.3043973557464 -740334240.7588,22638803.82198,375037692.4427787,-125677755.70618036,-2160.414017992,31.338156398863376,-265.520524519948 -740334259.2581,22598847.75108,375038267.4721715,-125682685.22611506,-2159.319652462,30.829775783926607,-267.41900207634956 -740334268.5078,22578877.31824,375038551.4642445,-125685163.13974631,-2158.770732152,30.576263488436453,-268.36556126383516 -740334273.1326,22568894.00715,375038692.5815348,-125686405.37777701,-2158.495840608,30.44967696374674,-268.8381703701937 -740334275.445,22563902.82852,375038762.9206753,-125687027.31617364,-2158.358287364,30.386426121783174,-269.0743072295385 -740334276.6012,22561407.3585,375038798.0354247,-125687338.49012133,-2158.289483923,30.354811308057407,-269.192333725081 -740334277.7575,22558911.96805,375038833.11358273,-125687649.8005023,-2158.220662618,30.323203566299895,-269.31033226237685 -740334280.0699,22553921.42591,375038903.1603725,-125688272.83049695,-2158.08296647,30.26000929984724,-269.54624545553645 -740334284.6947,22543941.29727,375039042.81564164,-125689520.52638006,-2157.807360403,30.13370565245782,-270.0177362320581 -740334293.9444,22523984.86717,375039320.37511617,-125692022.45468727,-2157.2552961799997,29.88143801092805,-270.95937479257714 -740334312.4437,22484087.35232,375039868.5043207,-125697052.39936303,-2156.1477832749997,29.378262206016288,-272.83727561670383 -740334349.4423,22404353.99361,375040936.9214744,-125707216.17636953,-2153.919410314,28.37735502324213,-276.5715390995713 -740334423.4396,22245136.22521,375042963.3317755,-125727955.55626102,-2149.4107940579997,26.39736407208028,-283.9536758368589 -740334571.4341,21927713.76473,375046582.0072247,-125771051.70453472,-2140.198096651,22.524942024496482,-298.37089402154055 -740334719.4287,21611672.68405,375049636.24071574,-125816247.16859612,-2130.747261714,18.76950667021744,-312.3236178741432 -740335015.4178,20983863.993589997,375054120.5823138,-125912660.87985274,-2111.2353916740003,11.608804458404364,-338.83515161380495 -740335311.4069,20361931.430320002,375056553.971545,-126016648.24157147,-2091.074115243,4.909823684770714,-363.5033076522968 -740335607.3959,19746039.81738,375057071.59555274,-126127668.65036702,-2070.445586284,-1.338219102305402,-386.3653219762891 -740335903.385,19136302.7323,375055804.7974641,-126245195.25362134,-2049.513717474,-7.150331720423651,-407.47613962660216 -740336199.3741,18532788.01218,375052879.98253745,-126368719.56194502,-2028.4236439679999,-12.544701168625835,-426.90420979060343 -740336495.3632,17935523.299370002,375048417.8187649,-126497754.87443872,-2007.3019228370001,-17.541759233752884,-444.7277028329173 -740336791.3523,17344501.42526,375042532.6921651,-126631838.66678683,-1986.257284488,-22.16337463040699,-461.03121932649685 -740337087.3414,16759685.58217,375035332.3951012,-126770534.03338264,-1965.381752564,-26.432176350969485,-475.90301641042515 -740337383.3305,16181014.00672,375026917.976038,-126913430.45669353,-1944.752022207,-30.37100186810588,-489.43272963212183 -740337679.3196,15608404.322369998,375017383.7480948,-127060143.92454141,-1924.43094707,-34.00246218493902,-501.70956317881087 -740337975.3087,15041757.40257,375006817.40737,-127210316.58906786,-1904.4690658650002,-37.348609262928875,-512.8208924409242 -740338271.2978,14480960.801630002,374995300.236475,-127363616.06098722,-1884.9060969660002,-40.430691842753276,-522.8512249062643 -740338567.2869,13925891.74471,374982907.3694206,-127519734.44669476,-1865.77236001,-43.268985107473355,-531.8814620126049 -740338863.2759,13376419.70837,374969708.0971485,-127678387.20087804,-1847.090095147,-45.88268057629671,-539.9884079981198 -740339455.2541,12293718.79395,374941140.2847933,-128002266.7552005,-1811.13563007,-50.50729274863008,-553.717563174884 -740340047.2323,11231734.78498,374910047.08146536,-128333396.21326506,-1777.101606299,-54.43490840600691,-564.5637134058834 -740340639.2105,10189330.02123,374876806.9996476,-128670206.70709577,-1744.981908483,-57.77779414010368,-572.9809456153205 -740341231.1887,9165384.178774001,374841737.12358874,-129011378.32312045,-1714.72719249,-60.631498818312025,-579.3572886128874 -740341823.1668,8158814.867825,374805102.47273874,-129355802.9760652,-1686.260883994,-63.07670385130473,-584.0216306669081 -740342415.145,7168590.17177,374767124.2201442,-129702551.63050637,-1659.4906144949998,-65.18118512037955,-587.2512483404765 -740343007.1232,6193735.493249,374727986.76868,-130050845.93735583,-1634.31620315,-67.001695163797,-589.2791340189859 -740343599.1014,5233336.459302,374687843.7612694,-130400034.04125464,-1610.635089284,-68.58567223947202,-590.3007131058287 -740344191.0796,4286539.195784,374646823.1397293,-130749570.14012925,-1588.34592214,-69.97274035756266,-590.4797810134518 -740344783.0577,3352548.879189,374605031.3799394,-131098997.31634086,-1567.3508420090002,-71.19599754130903,-589.9536301236201 -740345375.0359,2430627.228364,374562557.0218887,-131447933.17670013,-1547.5568458369999,-72.2831062956063,-588.837409452806 -740345967.0141,1520089.389022,374519473.61083823,-131796057.85526444,-1528.876521998,-73.25720775461426,-587.2277938060431 -740346558.9923,620300.5115183,374475842.139006,-132143104.01986186,-1511.228359767,-74.13768345061575,-585.2060519827479 -740347150.9705,-269327.7602902,374431713.0793601,-132488848.53032431,-1494.536776345,-74.94078738680625,-582.8406006907127 -740348334.9268,-2020244.132964,374342121.3587997,-133175720.35621403,-1463.7496245470002,-76.3673082575603,-577.3003402429679 -740349400.4876,-3566389.993764,374260132.48816425,-133787895.16834782,-1438.668455788,-77.50238233393651,-571.6299658191836 -740350466.0483,-5086991.474179,374176987.65237814,-134393774.99268654,-1415.757009737,-78.54336086702841,-565.5124360993553 -740351531.609,-6584217.088156,374092768.6358672,-134992963.24954516,-1394.752717381,-79.52327171371161,-559.0907625466746 -740352597.1697,-8059976.038182,374007526.84618473,-135585195.55055332,-1375.43055124,-80.46653395757446,-552.4718218631936 -740353662.7305,-9515955.208918,373921291.2236789,-136170306.406245,-1357.597335701,-81.39121478690808,-545.7356797812255 -740354728.2912,-10953650.40427,373834074.0966822,-136748204.4460482,-1341.086825166,-82.31066757214397,-538.9423864969814 -740355793.8519,-12374392.73628,373745875.5255695,-137318853.91480124,-1325.75551832,-83.23472755920038,-532.1369580797254 -740356859.4126,-13779370.94041,373656686.56579506,-137882260.68526345,-1311.479137734,-84.1705915010752,-525.3530568470271 -740357924.9734,-15169650.23554,373566491.7109046,-138438461.70625818,-1298.14968078,-85.12346870935403,-518.6157276493846 -740358990.5341,-16546188.31431,373475270.7419181,-138987516.9535054,-1285.672957175,-86.0970663351163,-511.9434469104126 -740360056.0948,-17909848.934410002,373383000.123659,-139529503.29570746,-1273.966532285,-87.09395321510853,-505.34966646266344 -740361121.6555,-19261413.50106,373289654.06493473,-140064509.79282716,-1262.958008452,-88.11583423165912,-498.84398372836665 -740362187.2163,-20601590.973729998,373195205.3232938,-140592634.08400118,-1252.583585657,-89.16375828514265,-492.4330336518892 -740363252.777,-21931026.3616,373099625.81657946,-141113979.60921356,-1242.786853672,-90.23827665782987,-486.12117191935357 -740365383.8984,-24559974.101,372904960.6400712,-142136764.81576335,-1224.7318292010002,-92.46751216372978,-473.8037766239357 -740367515.0199,-27152392.201440003,372705432.0246508,-143133739.29907024,-1208.4545697439999,-94.80195050465485,-461.89827855417076 -740369646.1413,-29711770.24501,372500819.91615397,-144105775.61165586,-1193.684179736,-97.237393262709,-450.3981467356646 -740371777.2628,-32241077.8774,372290914.81107277,-145053723.7933608,-1180.201400039,-99.76828694979244,-439.2894723327702 -740373908.3842,-34742861.89098,372075519.8038424,-145978399.51947138,-1167.826965875,-102.38847158212626,-428.55441372598074 -740376039.5057,-37219321.742699996,371854451.33277035,-146880578.27306703,-1156.4129497590002,-105.09162737828247,-418.1733148071689 -740378170.6271,-39672369.10758,371627539.23894954,-147760992.8847903,-1145.83623226,-107.87153472461827,-408.1259925033678 -740380301.7486,-42103675.13565,371394626.37392867,-148620333.33086422,-1135.993532213,-110.7222223208815,-398.3925162298494 -740382432.87,-44514708.59485,371155567.9692529,-149459247.83627018,-1126.797576642,-113.63804425204032,-388.9536593829113 -740384563.9915,-46906766.54394,370910230.91864115,-150278344.59572887,-1118.1741203880001,-116.61371494904866,-379.7911497690156 -740386695.1129,-49280999.62677,370658492.9764557,-151078194.0369273,-1110.059606204,-119.64431760908681,-370.8877898889023 -740388826.2344,-51638432.711100005,370400241.99603117,-151859331.0913627,-1102.399309375,-122.72529747403793,-362.2274983173069 -740390957.3558,-53979982.12033,370135375.1597811,-152622257.62467876,-1095.145855137,-125.85244587384939,-353.79530033931314 -740393088.4773,-56306469.964839995,369863798.2708682,-153367444.72752133,-1088.258025074,-129.02188000353684,-345.577290805749 -740395219.5987,-58618636.19241,369585425.07874,-154095334.95242012,-1081.699787754,-132.23002019829983,-337.5605786756724 -740397350.7202,-60917148.77725,369300176.66015166,-154806344.4015747,-1075.439507712,-135.47356711750825,-329.7332247196119 -740399481.8416,-63202612.37094,369007980.8433357,-155500864.69199815,-1069.449294255,-138.74947916446857,-322.08417499426673 -740401612.9631,-65475575.68665,368708771.6841572,-156179264.76455563,-1063.704463071,-142.0549511054482,-314.6031950470866 -740403744.0845,-67736537.84740001,368402488.98179203,-156841892.568918,-1058.1830880930002,-145.3873939830606,-307.28080599939284 -740406245.995,-70376176.7852,368033816.3436823,-157600124.6673639,-1051.959956851,-149.33084142652993,-298.87497025917554 -740408952.729,-73214796.30199,367623804.41846,-158397033.52203834,-1045.512153098,-153.631231861714,-289.9985434309293 -740415668.215,-80185053.04914999,366555934.8008771,-160272862.56036898,-1030.601640165,-164.42830542499613,-268.85859226413584 -740422383.7011,-87059590.60734999,365415057.4812514,-162010537.78487244,-1016.95096802,-175.36644509671802,-248.82427009176183 -740429099.1871,-93845877.46340999,364200372.5880726,-163616931.45725378,-1004.2785157039999,-186.40331817885047,-229.73671573819962 -740435814.6731,-100549739.29110001,362911335.2503187,-165097954.7183916,-992.3725886218,-197.5049499038779,-211.4672532073654 -740442530.1591,-107175756.0739,361547606.15711004,-166458736.39613757,-981.0710712696,-208.64381850631165,-193.9105794516757 -740449245.6452,-113727545.7584,360109013.2441939,-167703761.9072024,-970.2477963435,-219.79744106388364,-176.97966832640967 -740455961.1312,-120207972.9832,358595521.52629197,-168836982.69554165,-959.803187681,-230.9473134603773,-160.60193177090864 -740462676.6172,-126619303.494,357007209.2842018,-169861902.6478482,-949.6576731509,-242.07810581687784,-144.71629768650848 -740469392.1033,-132963322.8399,355344248.77924144,-170781648.03362328,-939.746973115,-253.17704641518924,-129.27096776730838 -740476107.5893,-139241425.9858,353606890.8636651,-171599023.27197462,-930.0186467894,-264.233442864557,-114.22167505444094 -740482823.0753,-145454688.1419,351795452.28420794,-172316556.8939998,-920.429537514,-275.2383075205349,-99.53032037901487 -740489538.5614,-151603920.334,349910305.27014303,-172936539.1947525,-910.9438472594001,-286.18406084784993,-85.16389380231969 -740496254.0474,-157689713.6695,347951868.9019298,-173461053.41304713,-901.5316678393001,-297.06429446451,-71.09361420455815 -740499611.7904,-160708954.2589,346945309.18638414,-173688110.8742472,-896.8451244831001,-302.4781112495173,-64.16151862187246 -740501290.6619,-162212677.7128,346435220.12823737,-173792938.5975351,-894.505491547,-305.17817470863315,-60.71994842102603 -740502130.0977,-162963066.8996,346178476.67420405,-173843189.0780862,-893.3364405635,-306.52646399730565,-59.00513142167834 -740502549.8156,-163337893.5386,346049680.6441592,-173867774.926783,-892.7520891,-307.20016927926594,-58.14919657082248 -740502759.6745,-163525214.8903,345985176.60720986,-173879933.18319952,-892.4599547483,-307.536911619649,-57.72159529278406 -740502864.604,-163618852.57680002,345952898.0900656,-173885978.66682976,-892.3138976541,-307.7052551576697,-57.50788590945531 -740502917.0687,-163665665.673,345936752.20762235,-173888993.00015768,-892.2408715949999,-307.7894200124087,-57.40105399865031 -740502969.5334,-163712474.9379,345920601.90960497,-173892001.72897032,-892.1678471818,-307.87358025446383,-57.294237260400564 -740503074.4629,-163806081.9744,345888288.06786436,-173898002.3764879,-892.0218032555,-308.0418868902561,-57.080649258278456 -740503284.3218,-163993250.0761,345823607.408332,-173909936.45242673,-891.7297347453,-308.3784447203293,-56.653654887438194 -740503704.0397,-164367402.4131,345694034.23916364,-173933535.90530828,-891.1456730215999,-309.05133816522726,-55.80039045750627 -740504543.4755,-165114971.76459998,345434040.9364002,-173979661.42837706,-889.9778343349,-310.39623264372034,-54.09674119599269 -740506222.347,-166607170.2157,344910669.98486716,-174067630.1444022,-887.643167029,-313.0824240904301,-50.7008218115642 -740509580.09,-169579812.83159998,343850419.14741147,-174226526.09667408,-882.9768785232,-318.4402024256307,-43.95341586104625 -740516295.576,-175478110.83310002,341676114.40501785,-174476828.61252108,-873.6490914990001,-329.0957507345406,-30.628119324676945 -740523011.0621,-181313755.1009,339430528.5183733,-174638364.8738314,-864.3150107157,-339.668580981331,-17.51435368885393 -740529726.5481,-187086657.44370002,337114226.6798524,-174712501.37688679,-854.9612901619,-350.1558825847156,-4.5963082200726575 -740536442.0341,-192796646.3465,334727791.45342946,-174700503.8552653,-845.5764026676001,-360.5552810027491,8.140257137496832 -740543157.5202,-198443478.1524,332271820.05776286,-174603547.06470853,-836.1503458177,-370.8647769558003,20.708230972046493 -740549873.0062,-204026846.4589,329746922.0242232,-174422723.2157577,-826.6744009026,-381.08269526097445,33.11933541235919 -740556588.4922,-209546390.0813,327153717.16393715,-174159049.28540516,-817.1409342425,-391.2076416254986,45.3842831969054 -740563303.9782,-215001699.67900002,324492833.8246606,-173813473.27488986,-807.5432318401,-401.2384659047668,57.51291202288239 -740576734.9503,-225717772.4628,318970578.7005982,-172880094.58739102,-788.1320611279,-421.0141861345391,81.39686440867285 -740588921.8385,-235213923.89889997,313732093.5826531,-171758069.36415002,-770.2428885605001,-438.62467475967065,102.68234686916125 -740599077.8129,-242959851.55359998,309203960.84634656,-170626236.71712264,-755.1159729086,-453.05623664941476,120.17231663884577 -740610709.3881,-251641043.1913,303839385.6856558,-169113138.3757797,-737.5304750565,-469.31096773052894,139.9571303493058 -740622340.9634,-260115997.65969998,298287442.78085136,-167371296.000579,-719.6519955241,-485.2733587691399,159.50893902311913 -740633972.5387,-268381228.147,292551529.8891217,-165403247.01965648,-701.4672492961,-500.9439768382789,178.85717040377085 -740645604.114,-276433102.6958,286635034.2301132,-163211195.21137148,-682.9644933523,-516.3240546662053,198.02986323520136 -740657235.6893,-284267859.83650005,280541325.0898611,-160797023.56522483,-664.133146515,-531.415438299563,217.05422725399862 -740663051.4769,-288102611.4535,277429061.73683405,-159507145.26213658,-654.5911873569,-538.8536099104595,226.51919224970516 -740668867.2645,-291881620.2922,274273746.8123338,-158162300.84840634,-644.9634891635,-546.2205719552645,235.95716995461532 -740671775.1583,-293750064.576,272680074.1631342,-157469313.0871814,-640.1171369914,-549.8774735697298,240.6670997694363 -740673229.1053,-294678994.036,271879256.5542354,-157117685.2510176,-637.6857747943,-551.6993028106626,243.0199871452691 -740673956.0787,-295142132.1193,271477855.23464787,-156940588.71028665,-636.4680397068,-552.6085650875601,244.19593501406658 -740674319.5654,-295373369.06350005,271276906.796282,-156851719.88824162,-635.8586577378001,-553.0627835297893,244.78378795049352 -740674501.3088,-295488904.4566,271176370.67617893,-156807205.35205156,-635.5538380313,-553.2897896261753,245.07768453959102 -740674592.1805,-295546651.3766,271126087.14635855,-156784928.05424085,-635.4013959831,-553.4032668993533,245.22462541069027 -740674637.6163,-295575519.6416,271100941.51466966,-156773784.3981043,-635.3251669087,-553.45999909311,245.2980939952596 -740674683.0522,-295604384.443,271075793.3054196,-156762637.4038964,-635.2489324665,-553.5167269917805,245.37156134863093 -740674773.9239,-295662103.65379995,271025489.15501726,-156740333.4014743,-635.0964474766,-553.6301699048137,245.51849237039403 -740674955.6672,-295777500.50070006,270924849.9318333,-156695685.34212023,-634.7914130615,-553.8570042004684,245.8123397128297 -740675319.1539,-296008127.8416,270723447.8398,-156606229.017857,-634.1810863748,-554.3104667202074,246.3999759647778 -740676046.1274,-296468716.67380005,270320149.42248535,-156426675.64545834,-632.9594006542,-555.2165678754882,247.57501771142364 -740677500.0743,-297387227.4341,269511578.44823587,-156065006.77705157,-630.5118924671999,-557.025477908148,249.92420202668896 -740680407.9681,-299213553.2076,267886562.25273198,-155331426.44222885,-625.6002705061001,-560.6301555177212,254.61916564989252 -740686223.7558,-302823195.4688,264605210.7623939,-153823338.41118428,-615.7101391235001,-567.7871639988228,263.99702231011196 -740697855.331,-309868612.3393,257918644.18069288,-150643728.4501566,-595.658654269,-581.8937471051835,282.71714958889646 -740709486.9063,-316678663.5466,251069584.95552105,-147246533.24369642,-575.2386415917,-595.7279987701421,301.415063571913 -740721118.4816,-323249014.7945,244061166.7490416,-143631825.64181995,-554.4419017370999,-609.2959612382897,320.12311267589723 -740732750.0569,-329575236.5596,236896445.49045676,-139799285.12876618,-533.2602457984999,-622.6050102248931,338.8767282375674 -740744381.6321,-335652803.7713,229578381.7916767,-135748156.61271134,-511.68542320949996,-635.6642314075882,357.71537521121604 -740752273.2324,-339632285.3585,224527481.3851342,-132874541.92530717,-496.81957934449997,-644.3878274084212,370.56758053137634 -740759263.0996,-343058509.1423,219996552.06765783,-130244357.82613803,-483.4958896261,-652.0262792745748,382.0134848660751 -740766343.5897,-346433669.428,215352733.4934832,-127498259.16304566,-469.84759347290003,-659.682831653299,393.6801336000002 -740773424.0797,-349711646.2017,210654979.1587014,-124669257.45531291,-456.0444899297,-667.2620570732089,405.4331890227028 -740780504.5698,-352891336.3071,205903819.90688193,-121756688.35433432,-442.08458501089996,-674.7687917685788,417.2877589653442 -740787585.0599,-355971622.3756,201099749.56381765,-118759774.7459635,-427.965859152,-682.2086973691432,429.26065342347675 -740794665.5499,-358951372.6584,196243218.34252328,-115677613.47552738,-413.6862690857,-689.5884309828759,441.3706756133143 -740801746.04,-361829440.865,191334625.2218441,-112509160.23540416,-399.24375185900004,-696.9158583753868,453.6389726610407 -740808826.53,-364604666.04649997,186374308.43063745,-109253211.44998538,-384.6362309131,-704.2003189396738,466.08945807984503 -740815907.0201,-367275872.529,181362533.88992798,-105908382.94539204,-369.8616252397,-711.4529596984997,478.74932600236014 -740822987.5101,-369841869.924,176299481.00125942,-102473084.5926898,-354.91786264179996,-718.6871592902372,491.6496815125479 -740826527.7552,-371085039.2222,173748753.32425404,-100720948.6466123,-347.38190686859997,-722.302265165875,498.20101970951885 -740828297.8777,-371696600.1808,172468589.68614042,-99836151.148554,-343.5977998806,-724.1103009460512,501.5040983998403 -740829182.9389,-371999866.3986,171827307.55939552,-99391555.6421566,-341.7017004987,-725.0145738490659,503.1627738900038 -740829625.4696,-372150869.89710003,171506366.34641704,-99168706.84212363,-340.7526376484,-725.466791635548,503.99393241071516 -740829846.7349,-372226214.11300004,171345820.69146562,-99057144.44440112,-340.27785272349996,-725.6929231121716,504.4099715392151 -740829957.3675,-372263846.8212,171265529.10050625,-99001328.71643087,-340.04039686,-725.8059947808407,504.6181066600532 -740830012.6839,-372282653.3234,171225378.61385447,-98973412.21655828,-339.9216530743,-725.8625321343335,504.7222031809797 -740830068.0002,-372301453.2569,171185224.99977964,-98945489.957945,-339.8028987183,-725.9190705137858,504.8263190390802 -740830178.6329,-372339033.415,171104908.3890171,-98889628.15975864,-339.56535829259997,-726.0321503899914,505.03460885637594 -740830399.8982,-372414114.8804,170944237.63536873,-98777835.41097382,-339.0901505571,-726.2583229064584,505.45142147148033 -740830842.4288,-372563962.2765,170622745.98588678,-98553973.06232579,-338.139227341,-726.7107213195641,506.2859834135491 -740831727.4901,-372862393.8813,169979162.00204888,-98105139.01407757,-336.2353482662,-727.615750473845,507.95889281405823 -740833497.6126,-373454195.937,168689590.23859352,-97203017.68655795,-332.4194463354,-729.4268921928583,511.3201686752037 -740837037.8576,-374617488.0328,166100820.97761658,-95380831.14198764,-324.7549629971,-733.0548029199028,518.1071631191579 -740844118.3477,-376862282.2146,160884658.42222804,-91663562.09856573,-309.29447060679996,-740.34455585959,531.961471846494 -740851198.8377,-378996983.5596,155616650.7727245,-87846740.54755564,-293.657169292,-747.7047779011461,546.237646292173 -740858279.3278,-381020334.61139995,150296173.9694596,-83927149.18198055,-277.8415356135,-755.1721889020547,561.0026785642117 -740865359.8178,-382931068.2597,144922312.2134481,-79901052.2243153,-261.846388958,-762.7928957687709,576.3365078532007 -740872440.3079,-384727910.73349994,139493781.39070794,-75764092.35843976,-245.6710631952,-770.6254159908885,592.3353972566515 -740879520.7979,-386409586.09290004,134008827.07982017,-71511160.03112307,-229.31566525050002,-778.7449226891752,609.1164347430395 -740886601.288,-387974823.06979996,128465085.52899005,-67136224.74068414,-212.78147052810002,-787.2493122143096,626.8236191244123 -740893681.7781,-389422365.19560003,122859395.802125,-62632118.70087656,-196.0715481835,-796.2681292154567,645.6362556473713 -740900762.2681,-390750986.98829997,117187528.6644731,-57990245.057015836,-179.1917571503,-805.9758943304153,665.7806867189894 -740905578.0516,-391586098.3577,113289180.64074947,-54749139.192081764,-167.61894257429998,-813.0913060235608,680.3876987393653 -740906938.0568,-391811824.6971,112181980.64057845,-53820912.18127292,-164.33799783930002,-815.1917104474161,684.6637333321851 -740910742.8207,-392419589.6154,109068845.5757067,-51192619.83200723,-155.13104734970003,-821.3121754765502,697.0148313629895 -740914547.5845,-392992250.1169,105931657.63695677,-48516160.4160804,-145.88583654750002,-827.8473229437794,709.9956184994696 -740918352.3484,-393529669.6332,102768691.21153985,-45788986.99738429,-136.6073350292,-834.8776992886208,723.6877197342759 -740922157.1122,-394031733.5266,99577878.78933328,-43008215.33994094,-127.3021896539,-842.5033493902031,738.1873001995345 -740924059.4941,-394269479.0812,97971270.2902955,-41596721.781376965,-122.6423112968,-846.5774663919219,745.7747326541576 -740925961.8761,-394498356.6018,96356725.7038999,-40170562.470898256,-117.9793556108,-850.8499707989074,753.6084308451659 -740927864.258,-394718361.744,94733847.94521764,-38729252.2814805,-113.31495273510001,-855.3419919169905,761.7061570275621 -740929766.6399,-394929493.5243,93102197.07237935,-37272270.68428014,-108.65101430019999,-860.0775259686304,770.087395103697 -740931669.0218,-395131754.907,91461284.38914075,-35799058.28981495,-103.9897897461,-865.0839310627158,778.7735570910829 -740933571.4037,-395325153.51159996,89810565.48223624,-34309012.9540075,-99.33393596473,-870.3925270476527,787.7882174064482 -740935473.7857,-395509702.46599996,88149432.02753341,-32801485.42329789,-94.68660402784,-876.0393268584146,797.1573776969146 -740937376.1676,-395685421.4479,86477202.021418,-31275774.436641708,-90.05154788502,-882.0659339981078,806.9097659290319 -740939278.5495,-395852337.95489997,84793108.14679244,-29731121.22351685,-85.43326159224999,-888.5206508422297,817.0771715799049 -740941180.9314,-396010488.87369996,83096283.75042096,-28166703.33352236,-80.83715388476,-895.4598577366356,827.6948192959005 -740943083.3134,-396159922.42249995,81385745.90673937,-26581627.716488525,-76.26977202228,-902.949740853363,838.8017788235027 -740944985.6953,-396300700.58180004,79660374.75802206,-24974922.98769979,-71.73909148409,-911.0684762384715,850.4414065279211 -740946888.0772,-396432902.1541,77918888.17881672,-23345530.85035169,-67.25489408130001,-919.9090111408958,862.6618034740995 -740948790.4591,-396556626.6518,76159810.40529895,-21692296.610988483,-62.82926690215999,-929.5826418264511,875.5162624945219 -740950692.841,-396671999.2876,74381432.91911687,-20013958.972994737,-58.47726713013,-940.2236553932914,889.0636503355645 -740952595.223,-396779177.4275,72581765.18018387,-18309139.111258548,-54.21781884842,-951.9954180987404,903.3686284162859 -740954497.6049,-396878359.0611,70758471.99198239,-16576329.780785851,-50.07493698448,-965.0984409315748,918.5015399840458 -740956399.9868,-396969793.995,68908793.09129277,-14813884.988788977,-46.079420372449995,-979.7811888923641,934.5376632286391 -740957351.1778,-397012702.2841,67973055.09910664,-13920994.990297716,-44.148969305440005,-987.809219761211,942.9188682268154 -740958302.3687,-397053798.8984,67029438.67844792,-13020012.257443052,-42.27122645582,-996.3547289921818,951.5552928609237 -740959253.5597,-397093137.2143,66077427.402009666,-12110689.433503384,-40.453170479229996,-1005.4696690771531,960.4565395811068 -740960204.7506,-397130777.7422,65116452.259568825,-11192770.24079404,-38.70285182487,-1015.2128157391512,969.6317079934092 -740961155.9416,-397166789.2363,64145884.66337364,-10265990.129221266,-37.029591075380004,-1025.6508662949686,979.0890225649719 -740962107.1326,-397201250.0147,63165028.305821516,-9330077.3360774,-35.444220004630004,-1036.8597421060992,988.8353250956509 -740963058.3235,-397234249.53029996,62173109.6805679,-8384754.51322698,-33.95937590518,-1048.9261365163925,998.8753833646724 -740964009.5145,-397265890.2565,61169266.97182845,-7429741.1249671,-32.58986210629,-1061.949356277765,1009.2109517671585 -740964960.7054,-397296289.9486,60152537.057162166,-6464756.88812024,-31.35309144958,-1076.0435144591377,1019.8394935124503 -740965911.8964,-397325584.379,59121840.20853712,-5489526.6438502185,-30.26963340066,-1091.340139926903,1030.7524418793614 -740966863.0874,-397353930.6479,58075962.10325154,-4503787.153255075,-29.363890918800003,-1107.9912755088194,1041.9328287435671 -740967814.2783,-397381511.2177,57013532.60753034,-3507296.564119078,-28.66493968842,-1126.1731416699058,1053.3520436722972 -740968765.4693,-397408538.8311,55933000.79984483,-2499847.4696943276,-28.20756892627,-1146.090430491772,1064.965392094462 -740969716.6602,-397435262.54179996,54832605.56559552,-1481284.9722600877,-28.033571612150002,-1167.9812749552243,1076.7059908779454 -740970667.8512,-397461975.1028,53710341.18648513,-451531.5662038475,-28.1933365843,-1192.1228635973519,1088.476360526297 -740971619.0422,-397489022.0433,52563917.29020009,589378.5455230251,-28.7477988336,-1218.8375457606596,1100.136819668696 -740972570.2331,-397516812.7844,51390712.959792085,1641252.0779314376,-29.77079166168,-1248.4990003608184,1111.489468017529 -740973045.8286,-397531135.77360004,50793146.133480825,2171180.629722692,-30.48525965034,-1264.5669314855961,1116.9673246347888 -740973521.4241,-397545834.19119996,50187725.23784089,2703671.369138483,-31.351811654869998,-1281.537567530737,1122.2561129288765 -740973997.0196,-397560983.6786,49574006.091263376,3238622.2888517305,-32.384591551419994,-1299.4740121570833,1127.3035597196497 -740974472.6151,-397576666.9267,48951513.63544746,3775904.350892581,-33.59911746152,-1318.4429692386395,1132.048028865973 -740974948.2105,-397592974.3525,48319740.28896634,4315356.671261504,-35.012375329739996,-1338.5144343303116,1136.4169476513737 -740975423.806,-397610004.8165,47678144.50034565,4856780.895766014,-36.6428975869,-1359.7611511660975,1140.3250037215998 -740975899.4015,-397627866.3717,47026149.63065895,5399934.667597065,-38.51081554535,-1382.2577507997541,1143.6721009048074 -740976374.997,-397646677.0292,46363143.34291877,5944524.058533654,-40.63786982128,-1406.0794678430557,1146.3410722175045 -740976850.5925,-397666565.5134,45688477.72700157,6490194.865790047,-43.04735711773,-1431.3003013797063,1148.1951697604766 -740977326.1879,-397687671.9713,45001470.46331442,7036522.666674515,-45.76398461819,-1457.9904591740485,1149.0753820949951 -740977801.7834,-397710148.5856,44301407.40688361,7583001.567943158,-48.81359417748,-1486.212892635933,1148.7976788502974 -740978277.3789,-397734160.0131,43587547.08476323,8129031.671550268,-52.22270845027,-1516.0187023256055,1147.1503485406874 -740978752.9744,-397759883.55480003,42859127.690601915,8673905.340302628,-56.01783983088,-1547.441179021282,1143.8916973685439 -740979228.5699,-397787508.9282,42115377.282450765,9216792.530179836,-60.22449307672,-1580.4882534175588,1138.748502845085 -740979704.1653,-397817237.4756,41355527.988963485,9756725.67655921,-64.8657857031,-1615.1331801683752,1131.4157813895433 -740980179.7608,-397849280.61249995,40578835.07480754,10292584.925083317,-69.96061201243,-1651.3034058254552,1121.5586185982515 -740980655.3563,-397883857.281,39784601.70742127,10823084.906173656,-75.5212930135,-1688.8677974249924,1108.8170102185104 -740981130.9518,-397921190.15929997,38972210.0855496,11346764.74723552,-81.55069629403,-1727.6227778258767,1092.814817008195 -740981606.5473,-397961500.38530004,38141159.22736338,11861983.546976147,-88.03888432836,-1767.2784390294958,1073.1739859551585 -740981844.345,-397982839.0133,37718522.70264981,12115858.739414085,-91.44751995816,-1787.32675869186,1061.875312123391 -740982082.1427,-398005000.6053,37291109.02846387,12366924.069809798,-94.95946987273,-1807.4463916328718,1049.5350017328267 -740982319.9405,-398028008.989,36858908.868752256,12614927.283752713,-98.56827323081,-1827.5720937006374,1036.1154614774582 -740982557.7382,-398051886.2846,36421929.20986715,12859607.746257996,-102.2660173511,-1847.631854181857,1021.5839889175899 -740982795.536,-398076652.551,35980194.94785658,13100697.739950536,-106.04326694299999,-1867.5471070222738,1005.9139255625904 -740983033.3337,-398102325.4173,35533750.402202696,13337924.047112329,-109.88901922490001,-1887.233136962224,989.0858483128442 -740983271.1314,-398128919.7086,35082660.70903237,13571009.808984214,-113.7906917007,-1906.5997043612128,971.0887632793975 -740983508.9292,-398156447.0719,34627013.037491746,13799676.669557901,-117.7341485516,-1925.5519023718916,951.9212580708224 -740983746.7269,-398184915.615,34166917.5738913,14023647.18235898,-121.7037712658,-1943.9912539371737,931.5925619375214 -740983984.5247,-398214329.56649995,33702508.217051275,14242647.453040948,-125.6825776894,-1961.8170436304745,910.1234583044483 -740984222.3224,-398244688.9707,33233942.930496573,14456409.975718413,-129.6523918543,-1978.927866114597,887.5469923465128 -740984341.2213,-398260222.0226,32998157.756514587,14561245.963163333,-131.6279736976,-1987.1837100399314,875.8572940929432 -740984460.1201,-398275989.4293,32761403.703765422,14664676.607843397,-133.5940645746,-1995.2233581872943,863.908917916509 -740984579.019,-398291989.91389996,32523707.19830611,14766671.604718229,-135.5481628559,-2003.0347346277065,851.7095913174566 -740984697.9179,-398308221.9006,32285096.08456228,14867201.614765294,-137.487742029,-2010.606066649331,839.2678342955567 -740984816.8167,-398324683.51210004,32045599.58564155,14966238.358417485,-139.41026127369997,-2017.9259460693431,826.5929440574604 -740984935.7156,-398341372.5688,31805248.256568372,15063754.70657646,-141.31317647979998,-2024.9833899814764,813.6949737604641 -740984995.1651,-398349801.62520003,31684761.929999128,15111934.591039466,-142.256489426,-2028.4103973982137,807.1656753067499 -740985024.8898,-398354037.1404,31624442.88018184,15135878.584763344,-142.7259715234,-2030.0979143667996,803.8815591454577 -740985039.7521,-398356160.1257,31594264.60988326,15147813.926816309,-142.9601517707,-2030.9351082271917,802.2347130000478 -740985047.1833,-398357222.9228,31579170.81690157,15153772.413452879,-143.0770995491,-2031.3520556111241,801.4101028681366 -740985050.8989,-398357754.6472,31571622.75952874,15156749.358093195,-143.1355375842,-2031.5601158776217,800.9975022919245 -740985052.7567,-398358020.5908,31567848.441068772,15158237.25543291,-143.16474760469998,-2031.664042524545,800.7911282833325 -740985053.6856,-398358153.583,31565961.209444486,15158981.060320027,-143.1793503613,-2031.7159799595156,800.6879228700061 -740985054.6145,-398358286.5887,31564073.929591373,15159724.769329958,-143.1939516141,-2031.7679001291392,800.5847051902637 -740985056.4723,-398358552.6408,31560299.225240566,15161211.89968919,-143.2231496036,-2031.8716886587927,800.3782330527386 -740985060.1879,-398359084.9077,31552749.238409583,15164185.00941792,-143.2815274837,-2032.079058339761,799.96514183248 -740985067.6191,-398360150.092,31537646.955809586,15170126.622437997,-143.39821058060002,-2032.492967158124,799.1383728761306 -740985082.4814,-398362283.0602,31507433.183736958,15181991.402381646,-143.6312839843,-2033.3174544097144,797.4824990543967 -740985112.2061,-398366559.3739,31446969.043772593,15205647.016825788,-144.0962425682,-2034.9530421235306,794.1614894873072 -740985171.6556,-398375153.3431,31325896.248255596,15252661.19284179,-145.0212707685,-2038.1701569309496,787.4830850893983 -740985290.5544,-398392505.24700004,31083187.761569887,15345491.46683966,-146.8506910768,-2044.3841648405275,773.986160771031 -740985505.4235,-398424407.7289,30642770.947249502,15509139.275357146,-150.0801695169,-2054.845318187299,749.1573566615975 -740985705.845,-398454780.6439,30230035.452177774,15656927.427819947,-152.9932777676,-2063.677598966524,725.5498649669621 -740985825.8361,-398473240.48590004,29982118.282801725,15743129.574479807,-154.6869148452,-2068.524635036223,711.2382814411355 -740985885.8317,-398482546.0183,29857946.628334638,15785584.881311098,-155.5187010761,-2070.822093581474,704.0385049888187 -740985915.8295,-398487217.42120004,29795809.74709019,15806650.34649923,-155.9307206834,-2071.939038504537,700.428463586347 -740985930.8284,-398489557.74770004,29764728.821499698,15817142.444704209,-156.1357480273,-2072.4895340040334,698.6210108686903 -740985938.3278,-398490729.0629,29749185.272379875,15822378.324653547,-156.2380143467,-2072.762783845677,697.7166898446558 -740985942.0776,-398491315.008,29741412.73061675,15824993.72104944,-156.2890854526,-2072.898908841152,697.2643823363795 -740985943.9524,-398491608.0523,29737526.26847518,15826300.783189077,-156.31460546510002,-2072.966846302194,697.038192042246 -740985944.8899,-398491754.5924,29735582.989654608,15826954.155218758,-156.3273615827,-2073.000783766313,696.925087787851 -740985945.8273,-398491901.1445,29733639.679036327,15827607.421228103,-156.3401151068,-2073.0347003837264,696.8119774708748 -740985947.7021,-398492194.2844,29729752.962468103,15828913.635126438,-156.3656143707,-2073.1024710714105,696.5857386754508 -740985951.4519,-398492780.7077,29721979.14852307,15831524.79030423,-156.41658173369999,-2073.237762202766,696.1331886620987 -740985958.9513,-398493954.1273,29706430.0018685,15836742.00895483,-156.518391586,-2073.507343051225,695.2278006172314 -740985973.9502,-398496303.254,29675325.668477446,15847156.069405198,-156.7215100911,-2074.042495680655,693.4158858615552 -740986003.948,-398501010.62160003,29613093.122330368,15867902.604335291,-157.12572876049998,-2075.096738083112,689.7876090964323 -740986063.9436,-398510461.5301,29488534.765421357,15909068.725855496,-157.9259859094,-2077.140770317032,682.5141283942403 -740986183.9347,-398529505.71330005,29239063.100489166,15990088.730876097,-159.49294991099998,-2080.969603572777,667.9063886658337 -740986423.917,-398568144.2238,28738845.880073234,16146850.496092428,-162.4864609296,-2087.582000376462,638.503619216925 -740986663.8993,-398607477.6253,28237209.854795866,16296536.390777338,-165.2821551342,-2092.7932633357873,608.9577433033285 -740986903.8815,-398647457.1146,27734491.100350425,16439127.334304547,-167.86933312739998,-2096.6072138911272,579.3956034327445 -740987143.8638,-398688031.607,27231023.07573129,16574634.338517185,-170.2396983917,-2099.0417354486776,549.940786867515 -740987383.8461,-398729148.3206,26727133.348858178,16703097.476790957,-172.38740372540002,-2100.1278691016355,520.7115745174715 -740987623.8284,-398770753.36219996,26223140.577943347,16824584.389454566,-174.30902771010003,-2099.908595814457,491.81914682601894 -740987863.8106,-398812792.29910004,25719351.823190905,16939188.400642157,-176.00348711229998,-2098.4373742664593,463.3660971838764 -740988103.7929,-398855210.7088,25216060.205440454,17047026.294722505,-177.47189419129998,-2095.776515688553,435.4452894932322 -740988343.7752,-398897954.6794,24713543.007140353,17148235.89676302,-178.7173691961,-2091.9954637262244,408.1390591939033 -740988583.7575,-398940971.26640004,24212060.16699203,17242973.4773078,-179.7448201327,-2087.1690616027176,381.5187609756916 -740989063.722,-399027617.6961,23213144.410331637,17413733.954150785,-181.1727619727,-2074.6965646039475,330.56595483011074 -740989495.6901,-399106033.483,22319879.293898508,17547135.913808145,-181.78942722440001,-2060.7002270037783,287.545967717502 -740989927.6582,-399184589.4465,21433139.111795507,17662565.10618909,-181.83176399439998,-2044.5624575387337,247.36897427358576 -740990359.6263,-399263050.6673,20553752.347900942,17761264.708234243,-181.3611747662,-2026.7249149782824,210.0911463049498 -740990791.5944,-399341209.0561,19682364.45085773,17844485.61781019,-180.43997775859998,-2007.5917109749198,175.6948735306205 -740991223.5625,-399418883.1599,18819455.828998387,17913458.21240168,-179.12881281510002,-1987.5220401282907,144.1054818119013 -740991655.5306,-399495917.01919997,17965362.011334583,17969371.113825105,-177.4848321095,-1966.8273265996186,115.20675942303944 -740992087.4987,-399572178.3956,17120294.27874007,18013356.243019648,-175.56057246580002,-1945.7717137463394,88.85446825709835 -740992519.4668,-399647556.6351,16284359.560477898,18046479.212036964,-173.4033751636,-1924.5748037677195,64.88750089482573 -740992951.4349,-399721960.375,15457578.828126559,18069734.02142138,-171.0552160686,-1903.4157346359725,43.136683349907116 -740993383.403,-399795315.2434,14639903.565493269,18084041.080408856,-168.5528230552,-1882.4378965120925,23.43142767516656 -740993815.3711,-399867561.6507,13831230.167312387,18090247.710387185,-165.9279785819,-1861.7537892367832,5.60454064626208 -740994247.3392,-399938652.7416,13031412.252060506,18089130.35704231,-163.20792997229998,-1841.44970321537,-10.504477404709405 -740994679.3073,-400008552.5343,12240271.037303999,18081397.97632385,-160.4158490956,-1821.5900262741995,-25.047321649121955 -740995111.2754,-400077234.2608,11457603.960887445,18067696.12992626,-157.571302353,-1802.2210840626076,-38.16567616089367 -740995543.2435,-400144678.9083,10683191.738497939,18048611.44576185,-154.6907052317,-1783.3744838838447,-49.99067326093325 -740995975.2116,-400210873.9518,9916804.090031844,18024676.20473128,-151.7877462694,-1765.0699740771408,-60.64282767481825 -740996407.1797,-400275812.26019996,9158204.323329879,17996372.879739024,-148.87377212159998,-1747.3178524204084,-70.2322956665372 -740996839.1478,-400339491.1605,8407152.972413993,17964138.515520312,-145.9581309815,-1730.120972272906,-78.85934571834036 -740997703.084,-400463077.6788,6926740.207744466,17889422.298808724,-140.1510198044,-1697.376749888332,-93.58148442783215 -740998567.0202,-400581673.9291,5473687.499407141,17803265.85969037,-134.4117404964,-1666.7669286808523,-105.43771358209915 -740999430.9564,-400695351.9745,4046196.7740834565,17707916.271297116,-128.7691674024,-1638.1804313461791,-114.94029950029005 -741000294.8926,-400804203.5472,2642575.710211697,17605220.815128665,-123.2406641972,-1611.486305460238,-122.50568495371454 -741001158.8288,-400908331.7279,1261248.7813691208,17496701.876672745,-117.8356298015,-1586.5467587348762,-128.47232699423762 -741002022.765,-401007845.2126,-99240.5078215478,17383617.61568199,-112.5580159031,-1563.2250540409893,-133.1156595364838 -741002886.7012,-401102854.41819996,-1440232.715731021,17267010.97919137,-107.408102815,-1541.390065445748,-136.6603594890065 -741003750.6374,-401193468.88310003,-2762958.4683398986,17147749.068795957,-102.38374562419999,-1520.9187070076096,-139.29025284464944 -741004614.5736,-401279795.5685,-4068545.956553477,17026554.91303453,-97.48124480194,-1501.6970232681465,-141.15625973493638 -741005478.5098,-401361937.79410005,-5358028.983411699,16904033.021505974,-92.6959518742,-1483.620465007302,-142.38273791937604 -741006342.446,-401439994.6093,-6632355.029420363,16780690.08893396,-88.02268783478,-1466.5936783923912,-143.0725430800452 -741007206.3822,-401514060.4673,-7892392.997420092,16656951.744750328,-83.45603020243,-1450.5300248896447,-143.31106740185078 -741008070.3184,-401584225.1039,-9138940.489360608,16533176.207710134,-78.99050723476,-1435.3509631006227,-143.16946759450337 -741008934.2546,-401650573.5545,-10372730.503005888,16409665.41385541,-74.62072725067,-1420.9853776536609,-142.70725284873492 -741009798.1908,-401713186.2629,-11594437.566689063,16286674.15801265,-70.34146212451,-1407.3689040604077,-141.97436439438826 -741010662.127,-401772139.2456,-12804683.279217716,16164417.605029183,-66.14769903419999,-1394.4432796822352,-141.01285398409334 -741012389.9994,-401879349.18780005,-15193041.95441866,15922807.30473382,-57.99786540094,-1370.4584369678423,-138.5406231649426 -741013945.0845,-401964001.2231,-17308686.401643116,15709417.37618123,-50.91031436394,-1350.75470307888,-135.83730950436507 -741015500.1697,-402037798.1038,-19394923.052683137,15500499.380425341,-44.03345365757,-1332.6030261975598,-132.8065339808192 -741017055.2548,-402101051.49909997,-21454015.485399306,15296488.815485554,-37.34715183026,-1315.8156821037203,-129.53896011426252 -741018610.34,-402154043.6101,-23487958.076102562,15097697.925639424,-30.83359043754,-1300.2332316900147,-126.10346758119192 -741020165.4251,-402197030.55810004,-25498515.965152375,14904345.118932333,-24.47701446408,-1285.7195914715085,-122.55267566542511 -741021720.5103,-402230245.41580003,-27487258.215344355,14716576.920369146,-18.263488760010002,-1272.1580372687058,-118.92695786762289 -741023275.5954,-402253900.84860003,-29455585.262300644,14534484.64000342,-12.18067345251,-1259.4479656313733,-115.2573891910173 -741024830.6806,-402268191.4439,-31404751.904214088,14358117.031083973,-6.217622334076,-1247.5022585032114,-111.56793251447704 -741026385.7658,-402273295.7317,-33335886.517960254,14187490.025822708,-0.3646052994337,-1236.2451340057266,-107.87707385175048 -741027940.8509,-402269377.95589995,-35250007.290991254,14022594.24774941,5.387046752404999,-1225.6103839425825,-104.19905671978319 -741029495.9361,-402256589.615,-37148035.93359334,13863400.84304451,11.04507629442,-1215.5399242265241,-100.5448207023855 -741031051.0212,-402235070.8121,-39030809.35995426,13709866.039438307,16.6164154724,-1205.9825954751936,-96.92272049332445 -741032606.1064,-402204951.4338,-40899089.65100962,13561934.711739259,22.10728640696,-1196.8931673877676,-93.33908046821392 -741035716.2767,-402119385.505,-44594895.16506332,13282621.502718698,32.86946993605,-1179.9618849107858,-86.30481398407017 -741038218.2782,-402026521.1827,-47531265.22074354,13073616.310420787,41.33585667305,-1167.400258570772,-80.78736151388665 -741038218.2782,-402026521.64280003,-47531262.99901317,13073623.764273195,41.33584093062,-1167.400225887906,-80.78724923617767 -741040533.4004,-401921889.1879,-50221201.0539612,12892386.319885742,49.03387486294,-1156.5075327811085,-75.80034370641653 -741043760.7823,-401746579.1472,-53930540.0089484,12658716.274790801,59.56910075413,-1142.3460209402158,-69.04203576069614 -741046988.1641,-401537604.9067,-57595886.35646375,12446494.192466909,69.89950411326,-1129.218916571058,-62.50861689205908 -741050215.546,-401295590.847,-61220337.68849743,12255000.956860326,80.04714939227,-1116.9816687964492,-56.19537377313162 -741053442.9278,-401021096.0262,-64806567.07187585,12083537.296491012,90.03058229629,-1105.5147355560082,-50.094973616825826 -741056670.3097,-400714624.38699996,-68356894.88047113,11931430.170785502,99.86550817427,-1094.7183725799125,-44.19863768596093 -741059897.6915,-400376633.0492,-71873346.12636316,11798036.173089609,109.565319545,-1084.508676352383,-38.496892054148304 -741063125.0734,-400007539.0586,-75357696.29572208,11682742.898721348,119.14151068139999,-1074.8145388333326,-32.980047730592105 -741066352.4553,-399607724.9973,-78811508.92751598,11584969.162434686,128.60400556919998,-1065.5752845086681,-27.638501997770277 -741069579.8371,-399177543.54510003,-82236165.68767206,11504164.349744797,137.96142081230002,-1056.738806992473,-22.462926651914017 -741072807.219,-398717321.4703,-85632892.40718453,11439807.364487644,147.2212758586,-1048.260105212372,-17.44437514947873 -741076034.6008,-398227362.7689,-89002779.25613071,11391405.271720078,156.3901653471,-1040.100096509514,-12.57434548368326 -741079261.9827,-397707951.45320004,-92346798.51312731,11358491.820402786,165.4738988842,-1032.224669373618,-7.8448061565044895 -741082489.3645,-397159353.8919,-95665819.31466277,11340625.91252293,174.47761627280002,-1024.6039113555614,-3.2482018514068614 -741084103.0555,-396874189.1792,-97316201.78128529,11337204.450387437,178.95091579569998,-1020.8806756575808,-0.9975177662071246 -741085716.7464,-396581820.8036,-98960620.08860172,11337390.086091857,183.4058829607,-1017.2114766814782,1.2225544972708917 -741087330.4373,-396282277.9466,-100599159.14138673,11341134.082305908,187.84301169920002,-1013.5934934179297,3.4128304129814637 -741088944.1282,-395975589.01430005,-102231899.4259683,11348388.995587353,192.262769241,-1010.0240677681538,5.574098541337719 -741089750.9737,-395819573.4447,-103046119.03371248,11353318.563844632,194.46627297319998,-1008.2567750162123,6.644093928591133 -741090154.3964,-395740899.37509996,-103452695.25120644,11356106.38822462,195.56645454169998,-1007.37735097232,7.176472852966128 -741090557.8192,-395661781.6768,-103858917.24818558,11359108.636911679,196.66559794300002,-1006.5006927248364,7.707121251527781 -741090961.2419,-395582220.7676,-104264786.1338071,11362324.613866672,197.7637095929,-1005.6267641039797,8.236050493253003 -741091162.9533,-395542274.2387,-104467588.50250135,11364012.5341224,198.31238049270002,-1005.1908122412008,8.499873956767203 -741091263.809,-395522259.4782,-104568956.72773072,11364876.439615585,198.5866200552,-1004.9730874860946,8.6316260125991 -741091314.2368,-395512241.72679996,-104619632.6078035,11365313.373951625,198.72371590720002,-1004.8642876622238,8.697462197926711 -741091339.4507,-395507230.25869995,-104644968.49067377,11365533.086009473,198.79225785650002,-1004.8099033588403,8.730370338846683 -741091364.6646,-395502217.06240004,-104670303.00237481,11365753.627695229,198.8607958231,-1004.7555294496946,8.763271849419823 -741091389.8786,-395497202.138,-104695636.14328127,11365974.998898841,198.92932980860002,-1004.7011659263326,8.796166732302424 -741091415.0925,-395492185.48560005,-104720967.91358835,11366197.199421559,198.9978598145,-1004.6468127802083,8.82905499011082 -741091465.5203,-395482146.9975,-104771627.34349212,11366644.087675162,199.13490789320002,-1004.5381375855741,8.894811642533682 -741091566.376,-395462049.2902,-104872929.7678461,11367547.808795761,199.40895636209999,-1004.3209113489644,9.026245566437865 -741091768.0874,-395421770.9734,-105075468.93276004,11369394.99195259,199.9568628828,-1003.8869535901583,9.288796496931411 -741092171.5101,-395340882.9109,-105480284.99152784,11373248.02399211,201.0519169376,-1003.0210018620087,9.812635519674416 -741092574.9328,-395259553.2821,-105884752.22995326,11377312.046265729,202.14596407480002,-1002.15764007299,10.33479990442288 -741092978.3556,-395177782.4919,-106288871.6852367,11381586.385532033,203.2390103021,-1001.2968345057163,10.855300545738316 -741093785.201,-395012919.03470004,-107096071.32762642,11390763.344647944,205.42212367259998,-999.5827594819777,11.891353715844616 -741095398.892,-394677915.7389,-108706341.40627083,11411611.920766842,209.7765953402,-996.1838515235598,13.943964368753711 -741097012.5829,-394335898.1239,-110311157.07333063,11435752.16222936,214.11569014859998,-992.8222775505668,15.971132989015189 -741098626.2738,-393986890.7271,-111910577.03805698,11463143.534189481,218.4397485382,-989.4961430781967,17.973502846845065 -741100239.9647,-393630917.55,-113504657.03167702,11493746.522868901,222.7490942969,-986.2036525380511,19.95169573411323 -741103467.3466,-392898167.3413,-116677006.09316565,11564434.188806705,231.3248658681,-979.7128778029014,23.837934972636674 -741106694.7285,-392137829.7324,-119828596.13490003,11647518.212086357,239.8452993363,-973.3373346375074,27.63442396962853 -741109922.1103,-391350079.8999,-122959780.34319542,11742715.912920713,248.3124811036,-967.0656238793238,31.345439323896528 -741113149.4922,-390535086.59010005,-126070876.8825488,11849757.96489416,256.7283130564,-960.8874205954522,34.97498253443331 -741116376.874,-389693012.6813,-129162172.16097459,11968387.53930436,265.0945329369,-954.7933493318614,38.526800244814694 -741122831.6377,-387928248.1725,-135286362.6552542,12239439.751938738,281.68437072269995,-942.8242155390127,45.41108297211679 -741129286.4015,-386056989.7959,-141334109.92824078,12554039.203274213,298.0932316944,-931.0984572641817,52.023845523658736 -741135741.1652,-384080374.12619996,-147306818.47430575,12910507.565336913,314.330650151,-919.5659221140475,58.387636562731416 -741142195.9289,-381999480.82519996,-153205594.92343217,13307303.4966826,330.4047735018,-908.1841898527994,64.5224192632432 -741143330.8915,-381622889.0506,-154235223.28313488,13381133.555099241,333.21479515059997,-906.1957087782706,65.57879867976106 -741143330.8915,-381622888.6763,-154235221.2284241,13381134.12236096,333.2148003432,-906.1956965580438,65.57880581163829 -741148316.1787,-379931053.53139997,-158731166.45378736,13719491.961471006,345.5014120431,-897.498732875037,70.1438719622297 -741157753.0425,-376561766.8991,-167123557.48928273,14421029.984851927,368.51550431199996,-881.1643775969847,78.47029636086009 -741167189.9063,-372976753.6158,-175362338.18662328,15199336.110470653,391.2238391082,-864.9310251286776,86.42040277823637 -741176626.7701,-369178834.4497,-183448135.92378557,16051039.047485657,413.6396890271,-848.731834886144,94.03138996238275 -741186063.634,-365170715.9692,-191381004.29858127,16973093.584825113,435.774068619,-832.5115617048339,101.33533167476182 -741190782.0659,-363088651.34430003,-195289974.12885925,17459629.256989636,446.73864451099996,-824.378786883074,104.8810088732088 -741193141.2818,-362028257.8948,-197230056.73494077,17709131.022244975,452.19573403000004,-820.3044518110876,106.62868281815474 -741194320.8898,-361493238.1692,-198196491.70695195,17835423.244226083,454.9180315958,-818.2650328826082,107.49639404889709 -741194910.6938,-361224524.70180005,-198678806.81753957,17898952.594715297,456.2776248755,-817.2447287451994,107.92873828699123 -741195205.5958,-361089867.3344,-198919738.67556477,17930812.82044451,456.9570334108,-816.734424103121,108.14453503152549 -741195353.0468,-361022463.52559996,-199040148.16718346,17946766.78874632,457.29664074780004,-816.4792331551529,108.2523398665864 -741195426.7723,-360988742.84389997,-199100338.80195227,17954749.73286616,457.4664201945,-816.3516279669191,108.30621893327148 -741195500.4978,-360955009.6457,-199160520.02883807,17962736.648738645,457.6361834985,-816.2240162777587,108.36008245036595 -741195647.9488,-360887505.7051,-199280854.25643155,17978722.39051412,457.975661694,-815.9687733235459,108.46776288877291 -741195942.8508,-360752347.6784,-199521409.79441062,18010741.48392964,458.6544245209,-815.4582086532325,108.68293764817173 -741196532.6548,-360481431.3097,-200002069.09268713,18074969.85472563,460.01117667,-814.4367604580349,109.1125451173271 -741197712.2628,-359937199.437,-200961579.6877447,18204185.297829643,462.72159289530003,-812.3925584631126,109.96881107679522 -741200071.4787,-358839156.1136,-202873361.49147853,18465634.872345604,468.13011970360003,-808.2986948852958,111.66969860517554 -741204789.9106,-356604886.01900005,-206667904.33478948,19000482.611711137,478.89830970500003,-800.08729857695,115.02607373806984 -741214226.7744,-351984678.98700005,-214140339.56804717,20117002.76472725,500.24189453440005,-783.5561585944978,121.56613053760364 -741223663.6383,-347164251.00659996,-221456000.6704714,21294213.85832134,521.3329499414,-766.8569282106607,127.89159484313524 -741233100.5021,-342145962.2804,-228613179.85125652,22530172.779606164,542.1761988262001,-749.9643977806703,134.01953087615212 -741242537.3659,-336932131.8322,-235609945.97864848,23823089.242671065,562.7756674847,-732.8563314096368,139.96531778272546 -741251974.2297,-331525043.5278,-242444169.8644158,25171311.273018092,583.1347979640999,-715.5129066173371,145.742933204164 -741261411.0936,-325926951.1224,-249113544.81212857,26573313.163533628,603.2565437451,-697.9162627719043,151.36519589756688 -741270847.9574,-320140082.4795,-255615603.42829502,28027685.52112536,623.1434539624,-680.0501337561433,156.84397650726828 -741280284.8212,-314166642.9821,-261947730.94398728,29533127.313281074,642.7977501976,-661.8995449966003,162.19038399154815 -741289721.685,-308008818.32149994,-268107176.46471846,31088439.377925366,662.2213991682,-643.4505636297796,167.41493341427025 -741299158.5489,-301668776.55840003,-274091061.7205578,32692519.57754989,681.4161841923,-624.6900878103686,172.52770024719388 -741305694.9815,-297171670.16470003,-278131305.34920794,33831637.64643076,694.5781508386,-611.5064941984128,176.00867872183875 -741308960.516,-294892823.92509997,-280117361.2334326,34409213.93898299,701.1130682095,-604.8606334402709,177.73040749845302 -741323172.9909,-284727784.44409996,-288505931.90473527,36987805.6691173,729.2412146549,-575.460687274332,185.10070154774894 -741337385.4658,-274166573.872,-296471001.742698,39669859.57228175,756.8638952056001,-545.2585238068317,192.29530704776386 -741351597.9407,-263216327.6678,-304000895.3232248,42453118.85857603,783.9881926417,-514.2156761850327,199.34830088006188 -741358704.1781,-257597515.6785,-307598853.4182692,43882130.74822469,797.3662102981,-498.3670178338027,202.83293753353973 -741365810.4156,-251884066.8361,-311083392.0193141,45335825.93754573,810.6233223188,-482.29375264438204,206.29607210489152 -741372916.653,-246076834.4549,-314452897.58242893,46814069.709905595,823.7612334695999,-465.99095835136654,209.7428475053622 -741380022.8904,-240176658.59350002,-317705721.23802423,48316765.07496089,836.7819736563,-449.4536121953114,213.1787441435922 -741387129.1279,-234184363.5333,-320840177.98168176,49843855.364245296,849.6879687278999,-432.67656115549624,216.60964264451684 -741394235.3653,-228100754.6654,-323854545.6311145,51395327.32845712,862.4821238619,-415.6544893139079,220.04189459927304 -741401341.6028,-221926614.7455,-326747063.5427755,52971214.76220548,875.1679225445,-398.38188143307053,223.4824030853946 -741408447.8402,-215662699.381,-329515931.0528273,54571602.74212757,887.7495445782,-380.85298167897093,226.93871495724252 -741412000.959,-212497303.29549998,-330853421.80287564,55381026.245526314,894.0028201373001,-371.99054636554405,228.67535742273532 -741413777.5183,-210906284.0673,-331510329.32992977,55788054.943639144,897.1203773524,-367.534491940761,229.54627942153965 -741414665.798,-210108698.8299,-331835810.72765535,55992149.92529759,898.6769270799,-365.300211847666,229.98245338864334 -741415109.9378,-209709387.8805,-331997806.7126062,56094342.76268491,899.4546501067,-364.1815030436143,230.20072665346734 -741415332.0078,-209509602.89450002,-332078618.32328814,56145475.54237123,899.8433743482001,-363.62175575503585,230.3099108733044 -741415443.0427,-209409678.0325,-332118977.5077142,56171051.025548145,900.0377022378,-363.3417838017249,230.36451500803037 -741415498.5602,-209359707.5104,-332139145.44160384,56183841.04082042,900.1348576349,-363.20177323790296,230.3918200956242 -741415554.0777,-209309731.59449998,-332159305.6020631,56196632.572085515,900.2320073382,-363.0617462776177,230.4191272040917 -741415665.1126,-209209763.5832,-332199602.59859264,56222220.18299721,900.426289678,-362.781643153749,230.47374750642444 -741415887.1826,-209009762.8506,-332280103.2695923,56273413.60131468,900.8147861708001,-362.2212400121515,230.58301256482764 -741416331.3224,-208609502.6155,-332440731.1198904,56375873.249751285,901.5915071173999,-361.09964544977294,230.80164153122502 -741417219.6021,-207807947.6281,-332760491.2170545,56581084.00089769,903.143866579,-358.853297555676,231.23930318875887 -741418996.1614,-206200704.0442,-333394015.87769663,56992673.033155635,906.2443025644001,-354.34792113605533,232.11630884695387 -741422549.2802,-202969717.4508,-334636977.4597931,57820535.877239406,912.4284337296999,-345.2860757940868,233.8776028805428 -741429655.5176,-196442015.7028,-337025694.86022204,59495133.033890605,924.7331456748999,-326.95496021667793,237.43398222244502 -741436761.7551,-189827154.191,-339283147.0764625,61195189.71702658,936.9605151117,-308.3411655473053,241.04500823607418 -741443867.9925,-183125646.5833,-341407297.814349,62921138.6320803,949.1209841285,-289.43684417777087,244.7234195537319 -741450974.2299,-176337924.9775,-343396052.64031357,64673508.6148949,961.2271364182,-270.2334606829967,248.48357507439923 -741458080.4674,-169464323.0831,-345247253.6257495,66452937.121211365,973.2941647108,-250.7216554452362,252.34173717772342 -741465186.7048,-162505055.6861,-346958672.91624343,68260184.9233774,985.340455307,-230.89107696789569,256.3164123518453 -741472292.9423,-155460193.35779998,-348528004.9495054,70096153.51475066,997.3883245851,-210.730174021911,260.42876340930206 -741479399.1797,-148329631.5662,-349952857.1038166,71961905.59655248,1009.4649582819999,-190.22593551406538,264.70311227046 -741486505.4172,-141113051.7126,-351230738.1372191,73858689.76530841,1021.603615121,-169.363562890183,269.167556094893 -741493611.6546,-133809872.8317,-352359044.1053877,75787969.87953241,1033.8451937090001,-148.12605288802763,273.8547294556838 -741500717.8921,-126419190.2089,-353335040.84698296,77751460.58812675,1046.240290677,-126.49366199815886,278.8027527120264 -741507824.1295,-118939697.2858,-354155842.1674617,79751170.35413554,1058.851944235,-104.44321125835528,284.0564219395935 -741514930.367,-111369584.67359999,-354818382.3227297,81789454.04077807,1071.759342156,-81.94717431679425,289.66871249782207 -741522036.6044,-103706408.3335,-355319381.0390867,83869077.54931635,1085.062918063,-58.97246595450642,295.70269343603604 -741525166.0511,-100301376.05160001,-355487874.3643876,84798834.16351575,1091.079181643,-48.69296308926137,298.51266434372735 -741527336.1137,-97929088.05896999,-355585746.47118694,85448809.07005097,1095.317498466,-41.50371713479299,300.5214916624165 -741531051.9949,-93845329.55530001,-355716920.9173586,86572081.67925626,1102.716658459,-29.072460507951433,304.08469631323163 -741534767.8761,-89733708.67037,-355801608.6309062,87708902.52859381,1110.3187540870001,-16.48175300850606,307.8160797723991 -741538483.7573,-85593414.13923,-355839200.91537976,88859925.59467101,1118.1553462289999,-3.722696035585315,311.7315555926348 -741542199.6385,-81423508.12005,-355829053.89118224,90025867.21721676,1126.263158931,9.214776315483476,315.8488058462085 -741545915.5197,-77222905.08636,-355770483.79704744,91207513.08265823,1134.685151319,22.342100361723524,320.1875139741823 -741549631.4009,-72990346.29045,-355662761.4702171,92405726.11175904,1143.471867054,35.67232857229055,324.76962719691437 -741553347.2821,-68724368.42806,-355505105.75978285,93621455.4960987,1152.6831504279999,49.22042826555341,329.61964811874594 -741557063.1633,-64423265.29665,-355296675.8305813,94855746.62018096,1162.390351542,63.00364787307336,334.76495564531376 -741560779.0445,-60085039.82362,-355036561.79081786,96109752.5739353,1172.679188898,77.04196568570568,340.2361415772859 -741564494.9257,-55707344.04839,-354723773.62384754,97384746.54633272,1183.6535117239998,91.35864429387952,346.0673466587652 -741568210.8069,-51287403.01013,-354357227.7357285,98682135.66669145,1195.44031326,105.98091803926403,352.29655519545076 -741571926.6881,-46821916.582040004,-353935730.6435282,100003475.66047063,1208.1964943770001,120.94084227563981,358.96576117483704 -741573784.6287,-44570888.439380005,-353703967.6106914,100673657.68053424,1214.997529303,128.5590140521145,362.47956812930516 -741575642.5693,-42306932.25698,-353457959.21741945,101350485.62753794,1222.118152812,136.27634930625214,366.1208690424405 -741577500.5099,-40029424.446830004,-353197515.8472246,102034202.15754431,1229.5911214799999,144.0987202270826,369.8959062491612 -741579358.4505,-37737676.63646,-352922436.48027474,102725061.6300907,1237.453540957,152.03254310535505,373.8110312143948 -741581216.3911,-35430926.89595,-352632507.62308174,103423330.24591744,1245.747607091,160.0848337938182,377.8726120632407 -741583074.3317,-33108329.50236,-352327502.14827996,104129285.94635186,1254.5215037,168.26326714969287,382.08689888428273 -741584932.2723,-30768942.80737,-352007178.00716794,104843218.03123209,1263.8304945950001,176.5762390327998,386.4598297611121 -741586790.2129,-28411714.90233,-351671276.8334688,105565426.34117794,1273.738261504,185.03292880991245,390.9967537917886 -741588648.1535,-26035466.49431,-351319522.43426883,106296219.80739927,1284.318553235,193.64335874002782,395.7020380950949 -741590506.0941,-23638870.3594,-350951619.16802657,107035914.15861535,1295.657231117,202.41844319298156,400.57850908261014 -741592364.0347,-21220426.57925,-350567250.26959765,107784828.33410329,1307.854827053,211.37001802921617,405.62665981135035 -741594221.9753,-18778432.38312,-350166076.1218885,108543279.19927639,1321.029760041,220.51083114535638,410.8435180845701 -741596079.9159,-16310945.27389,-349747732.62940174,109311573.65967274,1335.32241818,229.85446713815872,416.22102535896545 -741597937.8565,-13815737.63167,-349311829.82158244,110089997.17821392,1350.9003731389998,239.41515894115096,421.743697527024 -741599795.7971,-11290240.098439999,-348857950.9356112,110878797.04349186,1367.965091275,249.2074089680708,427.3852170730848 -741601653.7377,-8731471.048337,-348385652.5396967,111678157.8323119,1386.760643219,259.24529782573643,433.1034291258588 -741603511.6783,-6135947.208245,-347894466.3047025,112488165.59436211,1407.585069273,269.54126653674007,438.83289291515575 -741604440.6486,-4823149.246473,-347641638.1865824,112897149.47230473,1418.869585912,274.7889819469791,441.6723751962369 -741605369.6189,-3499570.214733,-347383903.84441084,113308754.84582628,1430.8052996489998,280.1040239978921,444.4736661585873 -741606298.5892,-2164577.8830009997,-347121200.71563923,113722936.96026084,1443.452058352,285.486315681973,447.2160817145487 -741607227.5595,-817481.2084528999,-346853466.66544354,114139629.7070634,1456.8767951920001,290.9349749471761,449.8741625698221 -741608156.5298,542476.6966172,-346580640.85509324,114558740.67995581,1471.154504282,296.44804216484766,452.41654603636647 -741609085.5001,1916126.559625,-346302664.89959306,114980145.0621061,1486.369350818,302.02212274981775,454.80454478589394 -741610014.4704,3304382.019791,-346019484.41276705,115403678.01585336,1502.6159254810002,307.6519171807555,456.99034847111386 -741610943.4407,4708249.986429,-345731051.04704386,115829125.18832754,1520.000643607,313.3296010662835,458.91473939380455 -741611872.411,6128842.294968,-345437325.20657194,116256210.81688192,1538.643284431,319.044005012555,460.50417769546345 -741612801.3813,7567388.899854,-345138279.6327173,116684582.76357518,1558.678634684,324.77952614610626,461.66707015066623 -741613730.3516,9025252.59755,-344833904.1647682,117113793.60954957,1580.258169201,330.5146787482993,462.288976578383 -741614659.3219,10503945.25171,-344524212.0637346,117543276.68314672,1603.551637537,336.2201602102989,462.22643888341327 -741615588.2922,12005145.43964,-344209248.40966624,117972315.57071963,1628.748306663,341.85626204560526,461.2990235338338 -741616517.2625,13530716.83672,-343889101.3119074,118400005.19028997,1656.0574601110002,347.36940423693466,459.27907009008334 -741617446.2328,15082726.54032,-343563916.83112335,118825202.09247938,1685.707441798,352.68749506508505,455.8785244214922 -741618375.2031,16663461.42886,-343233918.9286126,119246460.8127735,1717.9421082879999,357.7137408554417,450.73215530970134 -741619304.1734,18275439.2218,-342899436.03443396,119661952.80093056,1753.012851984,362.3184488521358,443.37645819896795 -741619768.6585,19093994.63089,-342730652.3921097,119866835.26814876,1771.6888161910001,364.4106253415995,438.6921267325651 -741620233.1437,19921409.158210002,-342560936.3803266,120069363.4261859,1791.163267353,366.32831985049705,433.22378973205946 -741620697.6288,20758059.601910003,-342390376.0094966,120269150.82787725,1811.461007242,368.0408178293326,426.87360824001445 -741621162.114,21604333.23087,-342219074.60254616,120465762.89876898,1832.602022009,369.5128049651536,419.53202259480906 -741621626.5991,22460625.10431,-342047153.066327,120658711.25528817,1854.599503636,370.7037821383254,411.0767317568928 -741622091.0843,23327334.36459,-341874752.441255,120847447.56470665,1877.457365153,371.5674573426263,401.3717798718567 -741622555.5694,24204859.22731,-341702036.73212075,121031357.0356425,1901.167161261,372.05114049331144,390.2668558850229 -741623020.0546,25093590.39126,-341529196.01343,121209751.6544677,1925.7043230769998,372.0951829273856,377.5969592228704 -741623484.5397,25993902.55998,-341356449.7710643,121381863.38496897,1951.0236295450002,371.6325234601045,363.1826381395797 -741623949.0249,26906143.6112,-341184050.4175215,121546837.67129457,1977.053875902,370.58842746356174,346.8310658677033 -741624413.51,27830621.145379998,-341012286.8576856,121703727.6964297,2003.6917503290001,368.88053973261754,328.33830200697736 -741624877.9952,28767586.01754,-340841487.93031156,121851490.04174262,2030.7950410209999,366.41940691240694,307.49315017372294 -741625342.4803,29717212.603520002,-340672025.4597694,121988982.60219072,2058.1754471679997,363.10966294964066,284.08308050218835 -741625806.9655,30679575.725449998,-340504316.559932,122114965.82853079,2085.591487075,358.8521021701014,257.9027005215375 -741626271.4506,31654624.45255,-340338824.7218667,122228108.58110148,2112.742280215,353.5468765465178,228.7651951416772 -741626787.5452,32752634.285979997,-340158165.9169324,122337044.7963405,2142.153193274,346.3070192736207,192.73674368042325 -741627303.6399,33865496.39835,-339981633.42989653,122426364.99703568,2170.191994854,337.5387828475146,152.73377437207773 -741627561.6872,34427235.89912,-339895167.03583944,122463024.40423223,2183.486451546,332.55225264312753,131.2291508307687 -741627819.7345,34992329.93976,-339810040.4941776,122494006.317227,2196.175665004,327.1532297713761,108.73276041936855 -741628077.7818,35560610.013170004,-339726360.8851045,122519057.20272814,2208.16364654,321.337338596739,85.26492389095056 -741628335.8291,36131882.53822,-339644235.9618913,122537930.20150933,2219.352255414,315.1038045529342,60.85717721201172 -741628593.8764,36705928.491179995,-339563773.1656811,122550388.1232271,2229.6427227560002,308.4558992614474,35.5530417611333 -741628851.9237,37282503.46701,-339485078.52794373,122556206.61486953,2238.9374094769996,301.4013332268506,9.408561511864065 -741629109.971,37861338.21942,-339408255.48343295,122555177.43079723,2247.141762962,293.9525707726464,-17.50745437143668 -741629368.0183,38442139.72587,-339333403.6126589,122547111.72080371,2254.1664175120004,286.12704199017867,-45.113537972873004 -741629626.0656,39024592.80551,-339260617.3473289,122531843.24169292,2259.9293660450003,277.94722835467724,-73.31606104146184 -741629755.0893,39316334.657189995,-339225026.5983322,122521462.94511667,2262.3146177679996,273.7328598724638,-87.60862023770677 -741629884.1129,39608362.29783,-339189984.67063683,122509231.38591085,2264.358115361,269.44060274276484,-102.01015125080427 -741630013.1366,39900631.157180004,-339155501.3472496,122495135.4430703,2266.052618798,265.07463512061986,-116.5060077857257 -741630142.1602,40193095.78448,-339121585.85412914,122479163.91917193,2267.391726615,260.6394108411209,-131.08103028689715 -741630271.1839,40485709.95984,-339088246.82573575,122461307.60248661,2268.36992619,256.13964366812,-145.71960905729452 -741630400.2075,40778426.8118,-339055492.2722872,122441559.32063138,2268.9826383140003,251.58028913712508,-160.40575241231892 -741630529.2312,41071198.94073,-339023329.5503102,122419913.98536149,2269.226255375,246.96652411669174,-175.12315926775398 -741630593.743,41217590.80823,-339007472.2394676,122408378.91130465,2269.208799393,244.64091046302065,-182.48842652219525 -741630625.9989,41290785.56886,-338999599.9402978,122402433.17600983,2269.165144264,243.4737204896279,-186.1717912647306 -741630642.1269,41327382.32715,-338995677.9203478,122399415.75361356,2269.1345742800004,242.88906770254042,-188.01354224790532 -741630650.1908,41345680.50964,-338993720.4478128,122397895.90353078,2269.117102579,242.5964816416112,-188.9344206009136 -741630654.2228,41354829.54659,-338992742.5964131,122397133.19372818,2269.107819925,242.45012429381853,-189.39485870518513 -741630656.2388,41359404.05084,-338992253.8920543,122396751.14266452,2269.103041882,242.3769296156877,-189.62507726577672 -741630657.2468,41361691.299339995,-338992009.59527147,122396559.94310775,2269.100618679,242.34032828556468,-189.74018639348907 -741630658.2548,41363978.54538,-338991765.3352961,122396368.62748441,2269.098172689,242.30372429786897,-189.85529540999215 -741630660.2708,41368553.03,-338991276.9261346,122395985.64819716,2269.093212343,242.23050835936334,-190.08551308093462 -741630664.3028,41377701.96879,-338990300.5505334,122395218.29720612,2269.083018174,242.0840447101757,-190.54594673711358 -741630672.3668,41395999.71937,-338988349.571575,122393678.02594984,2269.0615358229998,241.79099092461874,-191.46680551754534 -741630688.4947,41432594.67142,-338984454.7064536,122390575.20632914,2269.014194244,241.20438222962323,-193.30847463660163 -741630720.7507,41505782.04959,-338976693.385121,122384280.46389553,2268.901997932,240.02919905750292,-196.99150454596497 -741630785.2625,41652144.065220006,-338961284.66705096,122371334.63335937,2268.6075205240004,237.67128101639153,-204.35541402114694 -741630914.2861,41944796.0305,-338930925.08758104,122344018.57259268,2267.7381860339997,232.92775601449375,-219.06729329267532 -741631172.3334,42529643.107370004,-338872052.158753,122283703.80366763,2264.881122082,223.3504402407473,-248.36876393526842 -741631430.3807,43113561.99832,-338815662.0683653,122215860.30036043,2260.54838168,213.6924622250228,-277.39706193445704 -741631688.4281,43696175.80798,-338761769.43636173,122140575.23144296,2254.7728335300003,204.00184529514394,-306.02380207462966 -741631946.4754,44277118.13538,-338710376.52276313,122057968.11012763,2247.60278136,194.32621371155903,-334.12707206044917 -741632204.5227,44856036.89342,-338661473.4470888,121968188.83771688,2239.100611232,184.71188624911915,-361.5936034485971 -741632223.8588,44899325.78841,-338657908.76332957,121961177.36909513,2238.411782595,183.99520506528506,-363.62303018138874 -741632223.8588,44899325.85763,-338657908.75843287,121961177.37661812,2238.411881822,183.99517582934473,-363.623161897127 -741632292.4067,45052679.10125,-338645383.2341013,121936006.03791308,2235.913786861,181.45947155945106,-370.78384167791364 -741632473.002,45455852.087699994,-338613212.8910868,121867358.72489741,2228.9211576489997,174.82147882756635,-389.38406443009984 -741632653.5974,45857710.07176,-338582234.9725361,121795388.76815827,2221.355955959,168.25624515356228,-407.5756033632513 -741632834.1927,46258152.48984,-338552435.1401187,121720172.48259643,2213.249927553,161.77689443321043,-425.33120655338496 -741633014.788,46657084.657929994,-338523796.7673644,121641790.81626818,2204.636376058,155.39563228739183,-442.62682921070325 -741633195.3833,47054418.01856,-338496301.11109954,121560328.76567921,2195.5497833,149.1236843185817,-459.44168260826757 -741633375.9786,47450070.31969,-338469927.4927655,121475874.78764592,2186.025437651,142.9712518077883,-475.75823504393117 -741633466.2763,47647242.12252,-338457154.5028895,121432554.27020486,2181.11026743,139.94275461328925,-483.7250504763847 -741633511.4251,47745660.488579996,-338450870.1863004,121410625.70106956,2178.6163944610003,138.44090351115673,-487.65990734496137 -741633533.9995,47794827.315069996,-338447753.40816814,121399594.97989501,2177.360631327,137.69313236580658,-489.61512240230167 -741633545.2867,47819400.081369996,-338446201.3433032,121394063.09065023,2176.730573742,137.32004206597878,-490.58966772383116 -741633550.9303,47831683.79564,-338445426.88933754,121391293.02396978,2176.415004775,137.1336965543115,-491.0761737648418 -741633553.7521,47837824.98466,-338445040.05666375,121389906.96139039,2176.2570857260002,137.04057380978193,-491.31923499906685 -741633555.163,47840895.41204,-338444846.7388106,121389213.67291246,2176.178092622,136.9940249541457,-491.4407176511925 -741633556.5739,47843965.72796,-338444653.48664784,121388520.21306342,2176.099077154,136.94748444687883,-491.562168321906 -741633559.3957,47850106.02525,-338444267.17930603,121387132.77945375,2175.940979186,136.85442849010352,-491.80497370550705 -741633565.0393,47862385.28083,-338443495.3520962,121384355.8576524,2175.6245156210002,136.66841691628397,-492.29020049452305 -741633576.3266,47886938.42899,-338441954.84507775,121378793.80599776,2174.99052181,136.2967959303064,-493.2591171434584 -741633598.901,47936023.217360005,-338438886.39967996,121367636.95151855,2173.718298048,135.55516896829258,-495.19079474135947 -741633644.0498,48034106.31999,-338432799.61194634,121345192.88732567,2171.157150523,134.07842512458632,-499.02946572709726 -741633734.3475,48229923.17211,-338420825.0647838,121299788.55292581,2165.9700078680003,131.15136475373345,-506.60761689166145 -741633914.9428,48620133.13319,-338397660.7608866,121206957.05977967,2155.351865448,125.4058332703519,-521.3641231682116 -741634095.5381,49008398.26519,-338375520.64013743,121111509.06111178,2144.437840153,119.80998046767473,-535.5834024847173 -741634276.1334,49394668.256680004,-338354377.2058926,121013541.85647032,2133.262384433,114.36879313261059,-549.2628029005783 -741634456.7287,49778898.93562,-338334202.1497412,120913152.99447569,2121.8590013030002,109.08628224028774,-562.4021840844612 -741634817.9194,50541095.191929996,-338296640.9044086,120705499.15958203,2098.496623942,99.00874090130847,-587.0716764103693 -741635179.11,51294748.52819,-338262600.507444,120489317.30733803,2074.593408888,89.59185138856819,-609.6332146241691 -741635540.3006,52039703.85932,-338231841.5670124,120265357.20207994,2050.368087755,80.8380198196939,-630.1550481229017 -741635901.4913,52775880.48847,-338204125.70226073,120034340.0770211,2026.0136187399999,72.73957884355289,-648.7258576654037 -741636262.6819,53503262.68527,-338179218.82055855,119796952.34373969,2001.696808217,65.28078396400181,-665.4488185175195 -741636623.8725,54221890.33609,-338156893.6921896,119553841.32051107,1977.55902693,58.43968513987639,-680.4364030709088 -741636985.0631,54931850.03557,-338136931.88632864,119305612.66758944,1953.717709237,52.18980752362654,-693.8060080802729 -741637346.2538,55633266.6914,-338119125.1196578,119052829.35242869,1930.268331044,46.50160281872701,-705.6764138301718 -741637707.4444,56326296.10442,-338103276.15314126,118796011.59545428,1907.2866913169998,41.34367037545013,-716.1650175167384 -741638068.635,57011118.27553,-338089199.2688329,118535637.78522323,1884.8312665419999,36.68374745544804,-725.3857631481133 -741638429.8257,57687931.53782,-338076720.43893975,118272146.00684552,1862.945532602,32.48949031662505,-733.4476686519263 -741638791.0163,58356947.551570006,-338065677.24050593,118005936.0118121,1841.66016713,28.729072865407147,-740.4538424935147 -741639513.3976,59672476.306379996,-338047304.3043252,117466782.38077134,1800.9612192060001,22.387561440795253,-751.6786654894171 -741640163.5407,60832044.98574,-338034274.6360803,116975555.42950782,1766.498721911,17.86841894654259,-759.0687512849369 -741640813.6839,61969870.54485,-338023860.40911466,116480234.93090513,1734.066105098,14.31814366010343,-764.337545365191 -741641463.827,63087253.32584,-338015476.0127052,115982077.89828128,1703.598331203,11.603370843694393,-767.8504782505805 -741642113.9701,64185442.302080005,-338008617.007685,115482122.98583758,1675.0046527,9.607591850334188,-769.9151082166802 -741642764.1133,65265622.2811,-338002849.5499435,114981225.65356776,1648.179972738,8.229898500771696,-770.7886827830924 -741643414.2564,66328907.288849995,-337997800.75725156,114480088.46204379,1623.012758497,7.383396658401807,-770.6854760794006 -741644064.3995,67376338.25869,-337993150.13755363,113979286.79700586,1599.390397103,6.993533933623837,-769.7834959052593 -741644714.5427,68408883.54371001,-337988622.0986963,113479290.47796181,1577.202695387,6.996482438080136,-768.230391913697 -741645364.6858,69427441.26095,-337983979.466354,112980481.80258818,1556.344061155,7.337649297184328,-766.1485384761775 -741646014.829,70432842.73503001,-337979017.9225947,112483170.5383355,1536.714764446,7.9703462818505955,-763.6393381296464 -741646664.9721,71425856.54133,-337973561.2540225,111987606.34893501,1518.2215679790002,8.854624938945733,-760.786826573796 -741647315.1152,72407192.81300001,-337967457.3041776,111493989.08448753,1500.7779351420002,9.956270430941345,-757.6606706740178 -741647965.2584,73377507.58811,-337960574.53455985,111002477.28619248,1484.30396244,11.245940081273602,-754.3186507481477 -741648615.4015,74337407.05059999,-337952799.1022512,110513195.22705954,1468.726138933,12.69843045815577,-750.8087094533327 -741649265.5447,75287451.5788,-337944032.37518835,110026238.74334984,1453.9770034790001,14.292056185684771,-747.1706405404736 -741649915.6878,76228159.55135001,-337934188.82094747,109541680.06400707,1439.994748271,16.0081247008402,-743.4374800576833 -741651215.9741,78083450.31586,-337910984.07969713,108579950.38017686,1414.109404464,19.745191277313268,-735.7909169070205 -741652516.2603,79906714.12703,-337882700.6167242,107628248.19666265,1390.672909633,23.804730912410434,-728.0369679246215 -741653816.5466,81700912.58494,-337848972.94247127,106686633.51271895,1369.352669075,28.10763187747716,-720.2908300840926 -741655116.8329,83468610.73384,-337809525.4590747,105755041.90853596,1349.869619055,32.593786998398144,-712.6308661393914 -741656417.1192,85212040.39845,-337764151.094324,104833324.8688108,1331.988852505,37.217208677379034,-705.1095854019618 -741657717.4055,86933152.36537,-337712695.3772688,103921278.11983399,1315.511851893,41.94248557328535,-697.7612753463098 -741659017.6917,88633659.44202,-337655044.4459042,103018661.66997278,1300.2701251540002,46.7421923721551,-690.6073441515894 -741660317.978,90315071.99538,-337591115.97436,102125213.9490861,1286.1200188560001,51.59498029126104,-683.6600884788136 -741661618.2643,91978727.42055,-337520852.23482656,101240661.8289857,1272.938497822,56.48415810225271,-676.9253672716555 -741662918.5506,93625814.63651,-337444214.7665619,100364727.68161967,1260.619709218,61.396628952021075,-670.4045107581899 -741664218.8368,95257394.54629,-337361180.2480242,99497134.32799354,1249.0721796290002,66.32208774492346,-664.095689505682 -741665519.1231,96874417.19432001,-337271737.28161496,98637608.47121227,1238.216521752,71.25241049434058,-657.9949005893183 -741666819.4094,98477736.21514,-337175883.8747487,97785883.0363192,1227.98355135,76.18118662288663,-652.0966792310807 -741668119.6957,100068121.0625,-337073625.4567217,96941698.71679012,1218.3127352870001,81.1033581435739,-646.3946135756383 -741669419.9819,101646267.3957,-336964973.3099234,96104804.94974448,1209.1509069410001,86.01493967973573,-640.8817164045065 -741670720.2682,103212805.9426,-336849943.3224191,95274960.48402691,1200.4511986310001,90.91279981568033,-635.5506932018021 -741673320.8408,106313302.4376,-336600830.64399016,93635502.37928452,1184.276964479,100.65810622444371,-625.4046519037956 -741674087.8576,107219933.0007,-336522526.94982016,93156909.82133004,1179.786314314,103.5179887836938,-622.5368364076811 -741674087.8576,107219951.3994,-336522522.3249592,93156910.83318463,1183.951093848,102.49897077313648,-621.0644512292763 -741674918.7626,108201726.3774,-336436071.033428,92642134.77595049,1179.2171163550001,105.58909591416756,-618.0193011544919 -741675400.8536,108769566.8055,-336384736.14559996,92344613.05120106,1176.529988729,107.37808243288865,-616.2813352603727 -741675641.899,109053003.7821,-336358745.4566935,92196165.13160637,1175.2022643149999,108.27148268975884,-615.4201430815023 -741675882.9445,109336121.9663,-336332539.50633824,92047924.17892253,1173.8848796650002,109.16414759131374,-614.5640842469941 -741676123.9899,109618923.8327,-336306118.4720791,91899888.96060151,1172.5776739960002,110.05607247914139,-613.7131138148425 -741676244.5127,109760206.90980001,-336292827.354412,91825948.1196234,1171.9278389150002,110.50175603848217,-613.289522800099 -741676304.774,109830819.1159,-336286161.6552682,91788996.8248109,1171.603854783,110.72452786405043,-613.0781984167946 -741676334.9047,109866117.9023,-336282823.77188456,91770525.9505618,1171.442095013,110.83589626010178,-612.9726537040314 -741676349.9701,109883765.4683,-336281153.571867,91761291.70574209,1171.3612730700002,110.89157607542245,-612.9199106806533 -741676365.0354,109901411.8169,-336279482.5330116,91752058.25535092,1171.280489705,110.94725296763772,-612.8671871975139 From 282cead6e273feec5402e7f00dd863c072968ef6 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 1 Oct 2024 13:12:49 +0900 Subject: [PATCH 445/456] Fix format --- src/dynamics/dynamics.cpp | 2 -- src/dynamics/dynamics.hpp | 11 ++++++++--- src/dynamics/orbit/orbit.hpp | 2 +- .../orbit/time_series_file_orbit_propagation.cpp | 1 - .../orbit/time_series_file_orbit_propagation.hpp | 1 - src/environment/local/local_environment.hpp | 4 ++++ src/setting_file_reader/wings_operation_file.hpp | 2 +- .../multiple_spacecraft/relative_information.hpp | 11 ++++++++--- src/utilities/com_port_interface.cpp | 2 +- src/utilities/quantization.cpp | 2 +- 10 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 49f226dde..1a9da635e 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -5,8 +5,6 @@ #include "dynamics.hpp" -#include "../simulation/multiple_spacecraft/relative_information.hpp" - namespace s2e::dynamics { Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 5267f7a64..be8534181 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -10,6 +10,7 @@ #include "../environment/global/simulation_time.hpp" #include "../environment/local/local_environment.hpp" #include "../math_physics/math/vector.hpp" +#include "../simulation/multiple_spacecraft/relative_information.hpp" #include "../simulation/simulation_configuration.hpp" #include "../simulation/spacecraft/structure/structure.hpp" #include "dynamics/attitude/initialize_attitude.hpp" @@ -17,8 +18,12 @@ #include "dynamics/thermal/node.hpp" #include "dynamics/thermal/temperature.hpp" -class s2e::simulation::RelativeInformation; -class s2e::environment::LocalEnvironment; +namespace s2e::simulation { +class RelativeInformation; +} +namespace s2e::environment { +class LocalEnvironment; +} namespace s2e::dynamics { @@ -53,7 +58,7 @@ class Dynamics { * @param [in] simulation_time: Simulation time * @param [in] local_celestial_information: Local celestial information */ - void Update(const simulation::SimulationTime* simulation_time, const environment::LocalCelestialInformation* local_celestial_information); + void Update(const environment::SimulationTime* simulation_time, const environment::LocalCelestialInformation* local_celestial_information); /** * @fn LogSetup diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index 9bdfc4851..c51f0dc61 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -27,7 +27,7 @@ enum class OrbitPropagateMode { kSgp4, //!< SGP4 propagation using TLE without thruster maneuver kRelativeOrbit, //!< Relative dynamics (for formation flying simulation) kKepler, //!< Kepler orbit propagation without disturbances and thruster maneuver - kEncke, //!< Encke orbit propagation with disturbances and thruster maneuver + kEncke, //!< Encke orbit propagation with disturbances and thruster maneuver kTimeSeriesFile //!< Orbit propagation using time series file }; diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 709b23335..8fe9893a0 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -152,4 +152,3 @@ bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { return true; } - diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 0db88a7de..0de5a7278 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -85,4 +85,3 @@ class TimeSeriesFileOrbitPropagation : public Orbit { }; #endif // S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ - diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index ef671a499..b486d4226 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -15,6 +15,10 @@ #include "simulation/simulation_configuration.hpp" #include "solar_radiation_pressure_environment.hpp" +namespace s2e::math { +class Dynamics; +} + namespace s2e::environment { /** diff --git a/src/setting_file_reader/wings_operation_file.hpp b/src/setting_file_reader/wings_operation_file.hpp index 848010aac..51ed0d1d5 100644 --- a/src/setting_file_reader/wings_operation_file.hpp +++ b/src/setting_file_reader/wings_operation_file.hpp @@ -37,6 +37,6 @@ class WingsOperationFile { size_t line_pointer_ = 0; //!< Line pointer }; -} // namespace s2e::setting_file_reader +} // namespace s2e::setting_file_reader #endif // S2E_LIBRARY_INITIALIZE_WINGS_OPERATION_FILE_HPP_ diff --git a/src/simulation/multiple_spacecraft/relative_information.hpp b/src/simulation/multiple_spacecraft/relative_information.hpp index 9e77403d0..d49f4c74a 100644 --- a/src/simulation/multiple_spacecraft/relative_information.hpp +++ b/src/simulation/multiple_spacecraft/relative_information.hpp @@ -6,12 +6,17 @@ #ifndef S2E_MULTIPLE_SPACECRAFT_RELATIVE_INFORMATION_HPP_ #define S2E_MULTIPLE_SPACECRAFT_RELATIVE_INFORMATION_HPP_ +#include #include #include "../../dynamics/dynamics.hpp" #include "../../logger/loggable.hpp" #include "../../logger/logger.hpp" +namespace s2e::dynamics { +class Dynamics; +} + namespace s2e::simulation { /** @@ -42,7 +47,7 @@ class RelativeInformation : public logger::ILoggable { * @param [in] spacecraft_id: ID of target spacecraft * @param [in] dynamics: Dynamics information of the target spacecraft */ - void RegisterDynamicsInfo(const size_t spacecraft_id, const dynamics::dynamics::Dynamics* dynamics); + void RegisterDynamicsInfo(const size_t spacecraft_id, const dynamics::Dynamics* dynamics); /** * @fn RegisterDynamicsInfo * @brief Remove dynamics information of target spacecraft @@ -129,12 +134,12 @@ class RelativeInformation : public logger::ILoggable { * @brief Return the dynamics information of a spacecraft * @param [in] target_spacecraft_id: ID of the spacecraft */ - inline const dynamics::dynamics::Dynamics* GetReferenceSatDynamics(const size_t reference_spacecraft_id) const { + inline const dynamics::Dynamics* GetReferenceSatDynamics(const size_t reference_spacecraft_id) const { return dynamics_database_.at(reference_spacecraft_id); }; private: - std::map dynamics_database_; //!< Dynamics database of all spacecraft + std::map dynamics_database_; //!< Dynamics database of all spacecraft std::vector>> relative_position_list_i_m_; //!< Relative position list in the inertial frame in unit [m] std::vector>> relative_velocity_list_i_m_s_; //!< Relative velocity list in the inertial frame in unit [m/s] diff --git a/src/utilities/com_port_interface.cpp b/src/utilities/com_port_interface.cpp index 70209cde8..4644fa5c9 100644 --- a/src/utilities/com_port_interface.cpp +++ b/src/utilities/com_port_interface.cpp @@ -117,4 +117,4 @@ int ComPortInterface::DiscardInBuffer() { return 0; } -} // namespace s2e::utilities +} // namespace s2e::utilities diff --git a/src/utilities/quantization.cpp b/src/utilities/quantization.cpp index 9b8aa00d5..1cfd3268e 100644 --- a/src/utilities/quantization.cpp +++ b/src/utilities/quantization.cpp @@ -14,4 +14,4 @@ double quantization(const double continuous_number, const double resolution) { float quantization_float(const double continuous_number, const double resolution) { return (float)quantization(continuous_number, resolution); } -} // namespace s2e::utilities +} // namespace s2e::utilities From e7539781844ca081986cbc9bcce107758e1bc4f7 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 1 Oct 2024 13:19:48 +0900 Subject: [PATCH 446/456] Fix format --- src/components/base/component.hpp | 4 ++-- src/components/base/interface_gpio_component.hpp | 2 +- .../numerical_integration/numerical_integrator.hpp | 2 +- src/math_physics/numerical_integration/runge_kutta.hpp | 2 +- src/simulation/spacecraft/structure/kinematics_parameters.hpp | 2 +- .../spacecraft/structure/residual_magnetic_moment.hpp | 2 +- src/simulation/spacecraft/structure/surface.hpp | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 2cfc64db5..2b541dffd 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -78,13 +78,13 @@ class Component : public ITickable { * @brief Pure virtual function used to calculate high-frequency disturbances(e.g. RW jitter) * @note Override only when high-frequency disturbances need to be calculated. */ - virtual void FastUpdate() {}; + virtual void FastUpdate(){}; /** * @fn PowerOffRoutine * @brief Pure virtual function executed when the power switch is off. */ - virtual void PowerOffRoutine() {}; + virtual void PowerOffRoutine(){}; environment::ClockGenerator* clock_generator_; //!< Clock generator PowerPort* power_port_; //!< Power port diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 6a5d3bb75..9df3db260 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -18,7 +18,7 @@ class IGPIOCompo { * @fn ~IGPIOCompo * @brief Destructor */ - virtual ~IGPIOCompo() {}; + virtual ~IGPIOCompo(){}; /** * @fn GpioStateChanged diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index ae708a753..461bfa225 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -32,7 +32,7 @@ class NumericalIntegrator { * @fn ~NumericalIntegrator * @brief Destructor */ - inline virtual ~NumericalIntegrator() {}; + inline virtual ~NumericalIntegrator(){}; /** * @fn Integrate diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index a24b4f53b..d2072d4cb 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -29,7 +29,7 @@ class RungeKutta : public NumericalIntegrator { * @fn ~RungeKutta * @brief Destructor */ - inline virtual ~RungeKutta() {}; + inline virtual ~RungeKutta(){}; /** * @fn Integrate diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index c4dfadeb2..b97209727 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -26,7 +26,7 @@ class KinematicsParameters { * @fn ~KinematicsParameters * @brief Destructor */ - ~KinematicsParameters() {}; + ~KinematicsParameters(){}; // Getter /** diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index ae06bb85d..1e00b7e89 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -26,7 +26,7 @@ class ResidualMagneticMoment { * @fn ~ResidualMagneticMoment * @brief Destructor */ - ~ResidualMagneticMoment() {}; + ~ResidualMagneticMoment(){}; // Getter /** diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 73a09d6e6..c98386bae 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -26,7 +26,7 @@ class Surface { * @fn ~Surface * @brief Destructor */ - ~Surface() {}; + ~Surface(){}; // Getter /** From 31b8fd5ccb81db7041b36bd9f637f247be14fabc Mon Sep 17 00:00:00 2001 From: fukudakazuya Date: Tue, 1 Oct 2024 13:41:44 +0900 Subject: [PATCH 447/456] delete space --- src/dynamics/orbit/orbit.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynamics/orbit/orbit.hpp b/src/dynamics/orbit/orbit.hpp index caf4ddf25..7f99ba3af 100644 --- a/src/dynamics/orbit/orbit.hpp +++ b/src/dynamics/orbit/orbit.hpp @@ -25,7 +25,7 @@ enum class OrbitPropagateMode { kSgp4, //!< SGP4 propagation using TLE without thruster maneuver kRelativeOrbit, //!< Relative dynamics (for formation flying simulation) kKepler, //!< Kepler orbit propagation without disturbances and thruster maneuver - kEncke, //!< Encke orbit propagation with disturbances and thruster maneuver + kEncke, //!< Encke orbit propagation with disturbances and thruster maneuver kTimeSeriesFile //!< Orbit propagation using time series file }; From af60184a44c5243c633122256baf29b73b4520b3 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 1 Oct 2024 14:39:20 +0900 Subject: [PATCH 448/456] Fix small --- src/environment/global/celestial_information.hpp | 4 ++-- src/math_physics/math/vector.hpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/environment/global/celestial_information.hpp b/src/environment/global/celestial_information.hpp index dbb9777d9..ea04e562d 100644 --- a/src/environment/global/celestial_information.hpp +++ b/src/environment/global/celestial_information.hpp @@ -15,10 +15,10 @@ #include "moon_rotation.hpp" #include "simulation_time.hpp" -class MoonRotation; - namespace s2e::environment { +class MoonRotation; + /** * @class CelestialInformation * @brief Class to manage the information related with the celestial bodies diff --git a/src/math_physics/math/vector.hpp b/src/math_physics/math/vector.hpp index 333c62056..b210759e6 100644 --- a/src/math_physics/math/vector.hpp +++ b/src/math_physics/math/vector.hpp @@ -9,10 +9,11 @@ #include // for size_t #include // for ostream, cout +namespace s2e::math { + #define dot InnerProduct #define cross OuterProduct -namespace s2e::math { /** * @class Vector * @brief Class for mathematical vector From 7875268dccc9b56538875a79d1803f230045491e Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 1 Oct 2024 23:09:35 +0900 Subject: [PATCH 449/456] Fix bugs --- src/components/base/component.hpp | 4 +- .../base/interface_gpio_component.hpp | 2 +- src/components/base/sensor.hpp | 10 ++-- src/components/ideal/force_generator.hpp | 8 ++-- src/components/ideal/orbit_observer.cpp | 5 +- src/components/ideal/orbit_observer.hpp | 6 +-- src/components/ideal/torque_generator.hpp | 2 +- src/components/ports/uart_port.cpp | 4 +- src/components/ports/uart_port.hpp | 4 +- src/components/real/aocs/gnss_receiver.cpp | 13 ++--- src/components/real/aocs/gnss_receiver.hpp | 24 +++++----- src/components/real/aocs/magnetometer.cpp | 9 ++-- src/components/real/aocs/magnetometer.hpp | 10 ++-- src/components/real/aocs/magnetorquer.cpp | 10 ++-- src/components/real/aocs/magnetorquer.hpp | 12 ++--- src/components/real/aocs/star_sensor.cpp | 16 ++++--- src/components/real/aocs/star_sensor.hpp | 18 +++---- src/components/real/aocs/sun_sensor.cpp | 12 +++-- src/components/real/aocs/sun_sensor.hpp | 17 ++++--- src/components/real/communication/antenna.cpp | 4 +- src/components/real/communication/antenna.hpp | 16 +++---- .../ground_station_calculator.cpp | 28 +++++------ .../ground_station_calculator.hpp | 10 ++-- src/components/real/mission/telescope.cpp | 35 +++++++------- src/components/real/mission/telescope.hpp | 19 ++++---- .../real/power/solar_array_panel.cpp | 16 +++---- .../real/power/solar_array_panel.hpp | 19 ++++---- .../real/propulsion/simple_thruster.cpp | 20 ++++---- .../real/propulsion/simple_thruster.hpp | 47 ++++++++++--------- src/disturbances/air_drag.cpp | 9 ++-- src/disturbances/air_drag.hpp | 7 +-- src/disturbances/disturbance.hpp | 4 +- src/disturbances/disturbances.cpp | 19 ++++---- src/disturbances/disturbances.hpp | 19 ++++---- src/disturbances/geopotential.cpp | 2 +- src/disturbances/geopotential.hpp | 10 ++-- src/disturbances/gravity_gradient.cpp | 2 +- src/disturbances/gravity_gradient.hpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 4 +- src/disturbances/lunar_gravity_field.hpp | 10 ++-- src/disturbances/magnetic_disturbance.cpp | 12 ++--- src/disturbances/magnetic_disturbance.hpp | 10 ++-- .../solar_radiation_pressure_disturbance.cpp | 9 ++-- .../solar_radiation_pressure_disturbance.hpp | 9 ++-- src/disturbances/surface_force.cpp | 3 +- src/disturbances/surface_force.hpp | 7 +-- src/disturbances/third_body_gravity.cpp | 2 +- src/disturbances/third_body_gravity.hpp | 2 +- src/dynamics/attitude/attitude.cpp | 2 +- src/dynamics/attitude/attitude_rk4.cpp | 2 +- .../attitude_with_cantilever_vibration.cpp | 2 +- src/dynamics/attitude/controlled_attitude.cpp | 5 +- src/dynamics/attitude/initialize_attitude.cpp | 2 +- src/dynamics/dynamics.cpp | 33 ++++++------- src/dynamics/dynamics.hpp | 2 +- .../orbit/encke_orbit_propagation.cpp | 2 +- .../orbit/encke_orbit_propagation.hpp | 6 +-- src/dynamics/orbit/initialize_orbit.cpp | 4 +- src/dynamics/orbit/initialize_orbit.hpp | 4 +- .../orbit/kepler_orbit_propagation.cpp | 2 +- .../orbit/kepler_orbit_propagation.hpp | 3 +- src/dynamics/orbit/relative_orbit.cpp | 4 +- src/dynamics/orbit/relative_orbit.hpp | 12 ++--- src/dynamics/orbit/rk4_orbit_propagation.cpp | 4 +- src/dynamics/orbit/rk4_orbit_propagation.hpp | 2 +- src/dynamics/orbit/sgp4_orbit_propagation.cpp | 4 +- src/dynamics/orbit/sgp4_orbit_propagation.hpp | 2 +- .../time_series_file_orbit_propagation.cpp | 17 ++++--- .../time_series_file_orbit_propagation.hpp | 9 ++-- src/dynamics/thermal/node.hpp | 1 - src/dynamics/thermal/temperature.cpp | 15 +++--- src/environment/local/local_environment.cpp | 8 ++-- src/environment/local/local_environment.hpp | 6 +-- .../numerical_integrator.hpp | 2 +- .../numerical_integration/runge_kutta.hpp | 2 +- src/simulation/spacecraft/spacecraft.cpp | 6 +-- src/simulation/spacecraft/spacecraft.hpp | 8 ++-- .../structure/initialize_structure.cpp | 8 ++-- .../structure/initialize_structure.hpp | 2 +- .../structure/kinematics_parameters.hpp | 2 +- .../structure/residual_magnetic_moment.hpp | 2 +- .../spacecraft/structure/structure.hpp | 6 +-- .../spacecraft/structure/surface.hpp | 2 +- .../ground_station/sample_ground_station.cpp | 2 +- .../ground_station/sample_ground_station.hpp | 2 +- .../sample_ground_station_components.hpp | 2 +- .../spacecraft/sample_components.cpp | 2 +- .../spacecraft/sample_components.hpp | 43 ++++++++--------- 88 files changed, 411 insertions(+), 375 deletions(-) diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 2b541dffd..2cfc64db5 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -78,13 +78,13 @@ class Component : public ITickable { * @brief Pure virtual function used to calculate high-frequency disturbances(e.g. RW jitter) * @note Override only when high-frequency disturbances need to be calculated. */ - virtual void FastUpdate(){}; + virtual void FastUpdate() {}; /** * @fn PowerOffRoutine * @brief Pure virtual function executed when the power switch is off. */ - virtual void PowerOffRoutine(){}; + virtual void PowerOffRoutine() {}; environment::ClockGenerator* clock_generator_; //!< Clock generator PowerPort* power_port_; //!< Power port diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 9df3db260..6a5d3bb75 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -18,7 +18,7 @@ class IGPIOCompo { * @fn ~IGPIOCompo * @brief Destructor */ - virtual ~IGPIOCompo(){}; + virtual ~IGPIOCompo() {}; /** * @fn GpioStateChanged diff --git a/src/components/base/sensor.hpp b/src/components/base/sensor.hpp index 351a1275d..3204a1783 100644 --- a/src/components/base/sensor.hpp +++ b/src/components/base/sensor.hpp @@ -54,11 +54,11 @@ class Sensor { math::Vector Measure(const math::Vector true_value_c); private: - math::Matrix scale_factor_; //!< Scale factor matrix - math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame - math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame - s2e::randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random - RandomWalk random_walk_noise_c_; //!< Random Walk + math::Matrix scale_factor_; //!< Scale factor matrix + math::Vector range_to_const_c_; //!< Output range limit to be constant output value at the component frame + math::Vector range_to_zero_c_; //!< Output range limit to be zero output value at the component frame + randomization::NormalRand normal_random_noise_c_[N]; //!< Normal random + randomization::RandomWalk random_walk_noise_c_; //!< Random Walk /** * @fn Clip diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index b5d254414..ac781993d 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -30,7 +30,7 @@ class ForceGenerator : public Component, public logger::ILoggable { * @param [in] dynamics: Dynamics information */ ForceGenerator(const int prescaler, environment::ClockGenerator* clock_generator, const double magnitude_error_standard_deviation_N, - const double direction_error_standard_deviation_rad, const Dynamics* dynamics); + const double direction_error_standard_deviation_rad, const dynamics::Dynamics* dynamics); /** * @fn ~ForceGenerator * @brief Destructor @@ -66,17 +66,17 @@ class ForceGenerator : public Component, public logger::ILoggable { * @fn GetGeneratedForce_b_N * @brief Return generated force in the body fixed frame [N] */ - inline const Vector<3> GetGeneratedForce_b_N() const { return generated_force_b_N_; }; + inline const math::Vector<3> GetGeneratedForce_b_N() const { return generated_force_b_N_; }; /** * @fn GetGeneratedForce_i_N * @brief Return generated force in the inertial frame [N] */ - inline const Vector<3> GetGeneratedForce_i_N() const { return generated_force_i_N_; }; + inline const math::Vector<3> GetGeneratedForce_i_N() const { return generated_force_i_N_; }; /** * @fn GetGeneratedForce_rtn_N * @brief Return generated force in the RTN frame [N] */ - inline const Vector<3> GetGeneratedForce_rtn_N() const { return generated_force_rtn_N_; }; + inline const math::Vector<3> GetGeneratedForce_rtn_N() const { return generated_force_rtn_N_; }; // Setter /** diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index 37e5c4dc3..ca3fa09bc 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -11,7 +11,7 @@ namespace s2e::components { OrbitObserver::OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, - const math::Vector<6> error_standard_deviation, const Orbit& orbit) + const math::Vector<6> error_standard_deviation, const dynamics::orbit::Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], s2e::randomization::global_randomization.MakeSeed()); @@ -85,7 +85,8 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame) { } } -OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit) { +OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, + const dynamics::orbit::Orbit& orbit) { // General setting_file_reader::IniAccess ini_file(file_name); diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index 6e56fdd59..a9216dde2 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -40,7 +40,7 @@ class OrbitObserver : public Component, public logger::ILoggable { * @param [in] orbit: Orbit information */ OrbitObserver(const int prescaler, environment::ClockGenerator* clock_generator, const NoiseFrame noise_frame, - const math::Vector<6> error_standard_deviation, const Orbit& orbit); + const math::Vector<6> error_standard_deviation, const dynamics::orbit::Orbit& orbit); /** * @fn ~AttitudeObserver @@ -87,7 +87,7 @@ class OrbitObserver : public Component, public logger::ILoggable { s2e::randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables - const Orbit& orbit_; //!< Orbit information + const dynamics::orbit::Orbit& orbit_; //!< Orbit information }; /** @@ -105,7 +105,7 @@ NoiseFrame SetNoiseFrame(const std::string noise_frame); * @param [in] file_name: Path to the initialize file * @param [in] orbit: Orbit information */ -OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const Orbit& orbit); +OrbitObserver InitializeOrbitObserver(environment::ClockGenerator* clock_generator, const std::string file_name, const dynamics::orbit::Orbit& orbit); } // namespace s2e::components diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index b94a54919..4ea760c30 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -66,7 +66,7 @@ class TorqueGenerator : public Component, public logger::ILoggable { * @fn GetGeneratedTorque_b_Nm * @brief Return generated torque in the body fixed frame [Nm] */ - inline const Vector<3> GetGeneratedTorque_b_Nm() const { return generated_torque_b_Nm_; }; + inline const math::Vector<3> GetGeneratedTorque_b_Nm() const { return generated_torque_b_Nm_; }; // Setter /** diff --git a/src/components/ports/uart_port.cpp b/src/components/ports/uart_port.cpp index 6969b9361..070bd59ad 100644 --- a/src/components/ports/uart_port.cpp +++ b/src/components/ports/uart_port.cpp @@ -14,8 +14,8 @@ UartPort::UartPort(const unsigned int rx_buffer_size, const unsigned int tx_buff unsigned int checked_tx_buffer_size = tx_buffer_size; if (rx_buffer_size <= 0) checked_rx_buffer_size = kDefaultBufferSize; if (tx_buffer_size <= 0) checked_tx_buffer_size = kDefaultBufferSize; - rx_buffer_ = new RingBuffer(checked_rx_buffer_size); - tx_buffer_ = new RingBuffer(checked_tx_buffer_size); + rx_buffer_ = new utilities::RingBuffer(checked_rx_buffer_size); + tx_buffer_ = new utilities::RingBuffer(checked_tx_buffer_size); } UartPort::~UartPort() { diff --git a/src/components/ports/uart_port.hpp b/src/components/ports/uart_port.hpp index 2d00a0101..c83ddc456 100644 --- a/src/components/ports/uart_port.hpp +++ b/src/components/ports/uart_port.hpp @@ -76,8 +76,8 @@ class UartPort { private: const static unsigned int kDefaultBufferSize = 1024; //!< Default buffer size - RingBuffer* rx_buffer_; //!< Receive buffer (Component -> OBC) - RingBuffer* tx_buffer_; //!< Transmit buffer (OBC-> Component) + utilities::RingBuffer* rx_buffer_; //!< Receive buffer (Component -> OBC) + utilities::RingBuffer* tx_buffer_; //!< Transmit buffer (OBC-> Component) }; } // namespace s2e::components diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index e6b528f94..330844dd9 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -17,7 +17,7 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) + const environment::GnssSatellites* gnss_satellites, const environment::SimulationTime* simulation_time) : Component(prescaler, clock_generator), component_id_(component_id), antenna_position_b_m_(antenna_position_b_m), @@ -39,7 +39,7 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) + const environment::GnssSatellites* gnss_satellites, const environment::SimulationTime* simulation_time) : Component(prescaler, clock_generator, power_port), component_id_(component_id), antenna_position_b_m_(antenna_position_b_m), @@ -265,7 +265,7 @@ typedef struct _gnss_receiver_param { math::Vector<3> velocity_noise_standard_deviation_ecef_m_s; } GnssReceiverParam; -GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSatellites* gnss_satellites, const size_t component_id) { +GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const environment::GnssSatellites* gnss_satellites, const size_t component_id) { GnssReceiverParam gnss_receiver_param; setting_file_reader::IniAccess gnssr_conf(file_name); @@ -296,7 +296,8 @@ GnssReceiverParam ReadGnssReceiverIni(const std::string file_name, const GnssSat } GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, - const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time) { + const dynamics::Dynamics* dynamics, const environment::GnssSatellites* gnss_satellites, + const environment::SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); GnssReceiver gnss_r(gr_param.prescaler, clock_generator, component_id, gr_param.antenna_model, gr_param.antenna_pos_b, gr_param.quaternion_b2c, @@ -306,8 +307,8 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, cons } GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string file_name, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, - const SimulationTime* simulation_time) { + const std::string file_name, const dynamics::Dynamics* dynamics, const environment::GnssSatellites* gnss_satellites, + const environment::SimulationTime* simulation_time) { GnssReceiverParam gr_param = ReadGnssReceiverIni(file_name, gnss_satellites, component_id); // PowerPort diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 2661d856b..604b11927 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -63,7 +63,8 @@ class GnssReceiver : public Component, public logger::ILoggable { GnssReceiver(const int prescaler, environment::ClockGenerator* clock_generator, const size_t component_id, const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, - const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const dynamics::Dynamics* dynamics, const environment::GnssSatellites* gnss_satellites, + const environment::SimulationTime* simulation_time); /** * @fn GnssReceiver * @brief Constructor with power port @@ -84,7 +85,7 @@ class GnssReceiver : public Component, public logger::ILoggable { const AntennaModel antenna_model, const math::Vector<3> antenna_position_b_m, const math::Quaternion quaternion_b2c, const double half_width_deg, const math::Vector<3> position_noise_standard_deviation_ecef_m, const math::Vector<3> velocity_noise_standard_deviation_ecef_m_s, const dynamics::Dynamics* dynamics, - const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const environment::GnssSatellites* gnss_satellites, const environment::SimulationTime* simulation_time); // Override functions for Component /** @@ -146,9 +147,9 @@ class GnssReceiver : public Component, public logger::ILoggable { s2e::geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation - UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] - unsigned int gps_time_week_ = 0; //!< Observed GPS time week part - double gps_time_s_ = 0.0; //!< Observed GPS time second part + environment::UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] + unsigned int gps_time_week_ = 0; //!< Observed GPS time week part + double gps_time_s_ = 0.0; //!< Observed GPS time second part // Satellite visibility bool is_gnss_visible_ = false; //!< Flag for GNSS satellite is visible or not @@ -156,9 +157,9 @@ class GnssReceiver : public Component, public logger::ILoggable { std::vector gnss_information_list_; //!< Information List of visible GNSS satellites // References - const dynamics::Dynamics* dynamics_; //!< Dynamics of spacecraft - const GnssSatellites* gnss_satellites_; //!< Information of GNSS satellites - const SimulationTime* simulation_time_; //!< Simulation time + const dynamics::Dynamics* dynamics_; //!< Dynamics of spacecraft + const environment::GnssSatellites* gnss_satellites_; //!< Information of GNSS satellites + const environment::SimulationTime* simulation_time_; //!< Simulation time // Internal Functions /** @@ -227,7 +228,8 @@ AntennaModel SetAntennaModel(const std::string antenna_model); * @param [in] simulation_time: Simulation time information */ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, const size_t component_id, const std::string file_name, - const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, const SimulationTime* simulation_time); + const dynamics::Dynamics* dynamics, const environment::GnssSatellites* gnss_satellites, + const environment::SimulationTime* simulation_time); /** * @fn InitGnssReceiver * @brief Initialize functions for GNSS Receiver with power port @@ -240,8 +242,8 @@ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, cons * @param [in] simulation_time: Simulation time information */ GnssReceiver InitGnssReceiver(environment::ClockGenerator* clock_generator, PowerPort* power_port, const size_t component_id, - const std::string file_name, const dynamics::Dynamics* dynamics, const GnssSatellites* gnss_satellites, - const SimulationTime* simulation_time); + const std::string file_name, const dynamics::Dynamics* dynamics, const environment::GnssSatellites* gnss_satellites, + const environment::SimulationTime* simulation_time); } // namespace s2e::components diff --git a/src/components/real/aocs/magnetometer.cpp b/src/components/real/aocs/magnetometer.cpp index a709c91b1..0958e312c 100644 --- a/src/components/real/aocs/magnetometer.cpp +++ b/src/components/real/aocs/magnetometer.cpp @@ -10,14 +10,15 @@ namespace s2e::components { Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const math::Quaternion& quaternion_b2c, const environment::GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), Sensor(sensor_base), sensor_id_(sensor_id), quaternion_b2c_(quaternion_b2c), geomagnetic_field_(geomagnetic_field) {} Magnetometer::Magnetometer(int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, - const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field) + const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, + const environment::GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), Sensor(sensor_base), sensor_id_(sensor_id), @@ -50,7 +51,7 @@ std::string Magnetometer::GetLogValue() const { } Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, - const GeomagneticField* geomagnetic_field) { + const environment::GeomagneticField* geomagnetic_field) { setting_file_reader::IniAccess magsensor_conf(file_name); const char* sensor_name = "MAGNETOMETER_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); @@ -71,7 +72,7 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int } Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - double component_step_time_s, const GeomagneticField* geomagnetic_field) { + double component_step_time_s, const environment::GeomagneticField* geomagnetic_field) { setting_file_reader::IniAccess magsensor_conf(file_name); const char* sensor_name = "MAGNETOMETER_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); diff --git a/src/components/real/aocs/magnetometer.hpp b/src/components/real/aocs/magnetometer.hpp index 7a52c30cd..2d788b366 100644 --- a/src/components/real/aocs/magnetometer.hpp +++ b/src/components/real/aocs/magnetometer.hpp @@ -34,7 +34,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, Sensor& sensor_base, const unsigned int sensor_id, - const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const math::Quaternion& quaternion_b2c, const environment::GeomagneticField* geomagnetic_field); /** * @fn Magnetometer * @brief Constructor with power port @@ -47,7 +47,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomagnetic environment */ Magnetometer(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, Sensor& sensor_base, - const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const GeomagneticField* geomagnetic_field); + const unsigned int sensor_id, const math::Quaternion& quaternion_b2c, const environment::GeomagneticField* geomagnetic_field); /** * @fn ~Magnetometer * @brief Destructor @@ -104,7 +104,7 @@ class Magnetometer : public Component, public Sensor, pu unsigned int sensor_id_ = 0; //!< Sensor ID math::Quaternion quaternion_b2c_{0.0, 0.0, 0.0, 1.0}; //!< Quaternion from body frame to component frame - const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment + const environment::GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment }; /** @@ -117,7 +117,7 @@ class Magnetometer : public Component, public Sensor, pu * @param [in] geomagnetic_field: Geomegnetic environment */ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, - const GeomagneticField* geomagnetic_field); + const environment::GeomagneticField* geomagnetic_field); /** * @fn InitMagnetometer * @brief Initialize functions for magnetometer with power port @@ -129,7 +129,7 @@ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, int * @param [in] geomagnetic_field: Geomegnetic environment */ Magnetometer InitMagnetometer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - double component_step_time_s, const GeomagneticField* geomagnetic_field); + double component_step_time_s, const environment::GeomagneticField* geomagnetic_field); } // namespace s2e::components diff --git a/src/components/real/aocs/magnetorquer.cpp b/src/components/real/aocs/magnetorquer.cpp index 2dcbe762a..0ee096e5e 100644 --- a/src/components/real/aocs/magnetorquer.cpp +++ b/src/components/real/aocs/magnetorquer.cpp @@ -19,7 +19,8 @@ Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clo const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) + const math::Vector& normal_random_standard_deviation_c_Am2, + const environment::GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -41,7 +42,8 @@ Magnetorquer::Magnetorquer(const int prescaler, environment::ClockGenerator* clo const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field) + const math::Vector& normal_random_standard_deviation_c_Am2, + const environment::GeomagneticField* geomagnetic_field) : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -114,7 +116,7 @@ std::string Magnetorquer::GetLogValue() const { } Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, - double component_step_time_s, const GeomagneticField* geomagnetic_field) { + double component_step_time_s, const environment::GeomagneticField* geomagnetic_field) { setting_file_reader::IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; const std::string section_name = sensor_name + std::to_string(static_cast(actuator_id)); @@ -159,7 +161,7 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int } Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, - double component_step_time_s, const GeomagneticField* geomagnetic_field) { + double component_step_time_s, const environment::GeomagneticField* geomagnetic_field) { setting_file_reader::IniAccess magtorquer_conf(file_name); const char* sensor_name = "MAGNETORQUER_"; const std::string section_name = sensor_name + std::to_string(static_cast(actuator_id)); diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index f18dec450..b3f0b6ff1 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -48,7 +48,7 @@ class Magnetorquer : public Component, public logger::ILoggable { const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, const math::Vector& normal_random_standard_deviation_c_Am2, - const GeomagneticField* geomagnetic_field); + const environment::GeomagneticField* geomagnetic_field); /** * @fn Magnetorquer * @brief Constructor with power port @@ -72,7 +72,7 @@ class Magnetorquer : public Component, public logger::ILoggable { const math::Vector& max_magnetic_moment_c_Am2, const math::Vector& min_magnetic_moment_c_Am2, const math::Vector& bias_noise_c_Am2_, double random_walk_step_width_s, const math::Vector& random_walk_standard_deviation_c_Am2, const math::Vector& random_walk_limit_c_Am2, - const math::Vector& normal_random_standard_deviation_c_Am2, const GeomagneticField* geomagnetic_field); + const math::Vector& normal_random_standard_deviation_c_Am2, const environment::GeomagneticField* geomagnetic_field); // Override functions for Component /** @@ -135,10 +135,10 @@ class Magnetorquer : public Component, public logger::ILoggable { math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] - RandomWalk random_walk_c_Am2_; //!< Random walk noise + randomization::RandomWalk random_walk_c_Am2_; //!< Random walk noise s2e::randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise - const GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment + const environment::GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment /** * @fn CalcOutputTorque @@ -158,7 +158,7 @@ class Magnetorquer : public Component, public logger::ILoggable { * @param [in] geomagnetic_field: Geomegnetic environment */ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int actuator_id, const std::string file_name, - double component_step_time_s, const GeomagneticField* geomagnetic_field); + double component_step_time_s, const environment::GeomagneticField* geomagnetic_field); /** * @fn InitMagnetorquer * @brief Initialize functions for magnetometer with power port @@ -170,7 +170,7 @@ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, int * @param [in] geomagnetic_field: Geomegnetic environment */ Magnetorquer InitMagnetorquer(environment::ClockGenerator* clock_generator, PowerPort* power_port, int actuator_id, const std::string file_name, - double component_step_time_s, const GeomagneticField* geomagnetic_field); + double component_step_time_s, const environment::GeomagneticField* geomagnetic_field); } // namespace s2e::components diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index be7ddd363..1e57e269b 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -23,7 +23,7 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, - const LocalEnvironment* local_environment) + const environment::LocalEnvironment* local_environment) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -48,7 +48,7 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, - const LocalEnvironment* local_environment) + const environment::LocalEnvironment* local_environment) : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -91,7 +91,8 @@ void StarSensor::Initialize() { error_flag_ = true; } -Quaternion StarSensor::Measure(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { +Quaternion StarSensor::Measure(const environment::LocalCelestialInformation* local_celestial_information, + const dynamics::attitude::Attitude* attitude) { update(local_celestial_information, attitude); // update delay buffer if (update_count_ == 0) { int hist = buffer_position_ - output_delay_ - 1; @@ -107,7 +108,7 @@ Quaternion StarSensor::Measure(const LocalCelestialInformation* local_celestial_ return measured_quaternion_i2c_; } -void StarSensor::update(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { +void StarSensor::update(const environment::LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { Quaternion quaternion_i2b = attitude->GetQuaternion_i2b(); // Read true value Quaternion q_stt_temp = quaternion_i2b * quaternion_b2c_; // Convert to component frame // Add noise on sight direction @@ -128,7 +129,8 @@ void StarSensor::update(const LocalCelestialInformation* local_celestial_informa buffer_position_ %= max_delay_; } -void StarSensor::AllJudgement(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude) { +void StarSensor::AllJudgement(const environment::LocalCelestialInformation* local_celestial_information, + const dynamics::attitude::Attitude* attitude) { int judgement = 0; judgement = SunJudgement(local_celestial_information->GetPositionFromSpacecraft_b_m("SUN")); judgement += EarthJudgement(local_celestial_information->GetPositionFromSpacecraft_b_m("EARTH")); @@ -217,7 +219,7 @@ void StarSensor::MainRoutine(const int time_count) { } StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, double component_step_time_s, - const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) { + const dynamics::Dynamics* dynamics, const environment::LocalEnvironment* local_environment) { setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); @@ -250,7 +252,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens } StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const string file_name, - double component_step_time_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment) { + double component_step_time_s, const dynamics::Dynamics* dynamics, const environment::LocalEnvironment* local_environment) { setting_file_reader::IniAccess STT_conf(file_name); const char* sensor_name = "STAR_SENSOR_"; const std::string section_name = sensor_name + std::to_string(static_cast(sensor_id)); diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 8ad44ae86..99bc47819 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -49,7 +49,7 @@ class StarSensor : public Component, public logger::ILoggable { const double standard_deviation_orthogonal_direction, const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, - const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); + const dynamics::Dynamics* dynamics, const environment::LocalEnvironment* local_environment); /** * @fn StarSensor * @brief Constructor with power port @@ -75,7 +75,7 @@ class StarSensor : public Component, public logger::ILoggable { const double standard_deviation_sight_direction, const double step_time_s, const unsigned int output_delay, const unsigned int output_interval, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const double capture_rate_limit_rad_s, const dynamics::Dynamics* dynamics, - const LocalEnvironment* local_environment); + const environment::LocalEnvironment* local_environment); // Override functions for Component /** @@ -138,8 +138,8 @@ class StarSensor : public Component, public logger::ILoggable { double capture_rate_limit_rad_s_; //!< Angular rate limit to get correct attitude [rad/s] // Observed variables - const dynamics::Dynamics* dynamics_; //!< Dynamics information - const LocalEnvironment* local_environment_; //!< Local environment information + const dynamics::Dynamics* dynamics_; //!< Dynamics information + const environment::LocalEnvironment* local_environment_; //!< Local environment information // Internal functions /** @@ -148,14 +148,14 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] attitude: dynamics::attitude::Attitude information */ - void update(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); + void update(const environment::LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn Measure * @brief Calculate measured quaternion * @param [in] local_celestial_information: Local celestial information * @param [in] attitude: dynamics::attitude::Attitude information */ - math::Quaternion Measure(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); + math::Quaternion Measure(const environment::LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn AllJudgement @@ -163,7 +163,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information * @param [in] attitude: dynamics::attitude::Attitude information */ - void AllJudgement(const LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); + void AllJudgement(const environment::LocalCelestialInformation* local_celestial_information, const dynamics::attitude::Attitude* attitude); /** * @fn SunJudgement * @brief Judge violation of sun forbidden angle @@ -219,7 +219,7 @@ class StarSensor : public Component, public logger::ILoggable { * @param [in] local_environment: Local environment information */ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, double component_step_time_s, - const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); + const dynamics::Dynamics* dynamics, const environment::LocalEnvironment* local_environment); /** * @fn InitStarSensor * @brief Initialize functions for StarSensor with power port @@ -232,7 +232,7 @@ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, int sens * @param [in] local_environment: Local environment information */ StarSensor InitStarSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - double component_step_time_s, const dynamics::Dynamics* dynamics, const LocalEnvironment* local_environment); + double component_step_time_s, const dynamics::Dynamics* dynamics, const environment::LocalEnvironment* local_environment); } // namespace s2e::components diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 63a5ea09d..0ef97c8db 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -19,7 +19,8 @@ namespace s2e::components { SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information) : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -33,7 +34,8 @@ SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_gen SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information) : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), @@ -154,7 +156,8 @@ string SunSensor::GetLogValue() const { } SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information) { setting_file_reader::IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; const std::string section_tmp = sensor_name + std::to_string(static_cast(ss_id)); @@ -187,7 +190,8 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int ss_id, } SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int ss_id, std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information) { + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information) { setting_file_reader::IniAccess ss_conf(file_name); const char* sensor_name = "SUN_SENSOR_"; const std::string section_tmp = sensor_name + std::to_string(static_cast(ss_id)); diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index 4d988d7ac..e235bc618 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -39,8 +39,8 @@ class SunSensor : public Component, public logger::ILoggable { */ SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, - const double intensity_lower_threshold_percent, const SolarRadiationPressureEnvironment* srp_environment, - const LocalCelestialInformation* local_celestial_information); + const double intensity_lower_threshold_percent, const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information); /** * @fn SunSensor * @brief Constructor with power port @@ -59,7 +59,8 @@ class SunSensor : public Component, public logger::ILoggable { SunSensor(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const math::Quaternion& quaternion_b2c, const double detectable_angle_rad, const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad, const double intensity_lower_threshold_percent, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information); // Override functions for Component /** @@ -108,8 +109,8 @@ class SunSensor : public Component, public logger::ILoggable { double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) // Measured variables - const SolarRadiationPressureEnvironment* srp_environment_; //!< Solar Radiation Pressure environment - const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information + const environment::SolarRadiationPressureEnvironment* srp_environment_; //!< Solar Radiation Pressure environment + const environment::LocalCelestialInformation* local_celestial_information_; //!< Local celestial information // functions /** @@ -153,7 +154,8 @@ class SunSensor : public Component, public logger::ILoggable { * @param [in] local_environment: Local environment information */ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information); /** * @fn InitSunSensor * @brief Initialize functions for sun sensor with power port @@ -165,7 +167,8 @@ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, int sensor * @param [in] local_environment: Local environment information */ SunSensor InitSunSensor(environment::ClockGenerator* clock_generator, PowerPort* power_port, int sensor_id, const std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information); } // namespace s2e::components diff --git a/src/components/real/communication/antenna.cpp b/src/components/real/communication/antenna.cpp index 9bb535a61..9d9fec92d 100644 --- a/src/components/real/communication/antenna.cpp +++ b/src/components/real/communication/antenna.cpp @@ -14,7 +14,7 @@ namespace s2e::components { Antenna::Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, - const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters) + const double frequency_MHz, const math::Vector<5> tx_parameters, const math::Vector<4> rx_parameters) : component_id_(component_id), is_transmitter_(is_transmitter), is_receiver_(is_receiver), frequency_MHz_(frequency_MHz) { quaternion_b2c_ = quaternion_b2c; @@ -112,7 +112,7 @@ Antenna InitAntenna(const int antenna_id, const std::string file_name) { const std::string section_name = "ANTENNA_" + std::to_string(static_cast(antenna_id)); - Quaternion quaternion_b2c; + math::Quaternion quaternion_b2c; antenna_conf.ReadQuaternion(section_name.c_str(), "quaternion_b2c", quaternion_b2c); bool is_transmitter = antenna_conf.ReadBoolean(section_name.c_str(), "is_transmitter"); diff --git a/src/components/real/communication/antenna.hpp b/src/components/real/communication/antenna.hpp index 841fb55d0..1d317140e 100644 --- a/src/components/real/communication/antenna.hpp +++ b/src/components/real/communication/antenna.hpp @@ -8,8 +8,6 @@ #include #include -using math::Quaternion; -using math::Vector; #include #include "./antenna_radiation_pattern.hpp" @@ -57,7 +55,7 @@ class Antenna { * @param [in] rx_parameters: gain, loss_feeder, loss_pointing, system_temperature for RX */ Antenna(const int component_id, const math::Quaternion& quaternion_b2c, const bool is_transmitter, const bool is_receiver, - const double frequency_MHz, const Vector<5> tx_parameters, const Vector<4> rx_parameters); + const double frequency_MHz, const math::Vector<5> tx_parameters, const math::Vector<4> rx_parameters); /** * @fn Antenna @@ -115,7 +113,7 @@ class Antenna { * @fn GetQuaternion_b2c * @brief Return quaternion from body to component */ - inline Quaternion GetQuaternion_b2c() const { return quaternion_b2c_; } + inline math::Quaternion GetQuaternion_b2c() const { return quaternion_b2c_; } /** * @fn IsTransmitter @@ -130,11 +128,11 @@ class Antenna { protected: // General info - int component_id_; //!< Antenna ID - Quaternion quaternion_b2c_; //!< Coordinate transform from body to component - bool is_transmitter_; //!< Antenna for transmitter or not - bool is_receiver_; //!< Antenna for receiver or not - double frequency_MHz_; //!< Center Frequency [MHz] + int component_id_; //!< Antenna ID + math::Quaternion quaternion_b2c_; //!< Coordinate transform from body to component + bool is_transmitter_; //!< Antenna for transmitter or not + bool is_receiver_; //!< Antenna for receiver or not + double frequency_MHz_; //!< Center Frequency [MHz] // Tx info double tx_bitrate_bps_; //!< Transmit bitrate [bps] diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 8e00eeb82..9c83ae730 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -29,8 +29,8 @@ GroundStationCalculator::GroundStationCalculator(const double loss_polarization_ GroundStationCalculator::~GroundStationCalculator() {} -void GroundStationCalculator::Update(const Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, - const Antenna& ground_station_rx_antenna) { +void GroundStationCalculator::Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, + const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { bool is_visible = ground_station.IsVisible(spacecraft.GetSpacecraftId()); if (is_visible) { max_bitrate_Mbps_ = CalcMaxBitrate(spacecraft.GetDynamics(), spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); @@ -43,7 +43,7 @@ void GroundStationCalculator::Update(const Spacecraft& spacecraft, const Antenna // Private functions double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dBHz = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); double margin_for_bitrate_dB = cn0_dBHz - (ebn0_dB_ + hardware_deterioration_dB_ + coding_gain_dB_) - margin_requirement_dB_; @@ -56,39 +56,39 @@ double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamic } double GroundStationCalculator::CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dB = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); double cn0_requirement_dB = ebn0_dB_ + hardware_deterioration_dB_ + coding_gain_dB_ + 10.0 * log10(spacecraft_tx_antenna.GetBitrate_bps()); return cn0_dB - cn0_requirement_dB; } double GroundStationCalculator::CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { if (!spacecraft_tx_antenna.IsTransmitter() || !ground_station_rx_antenna.IsReceiver()) { // Check compatibility of transmitter and receiver return 0.0f; } // Free space path loss - Vector<3> sc_pos_i = dynamics.GetOrbit().GetPosition_i_m(); - Vector<3> gs_pos_i = ground_station.GetPosition_i_m(); - Vector<3> pos_gs2sc_i = sc_pos_i - gs_pos_i; + math::Vector<3> sc_pos_i = dynamics.GetOrbit().GetPosition_i_m(); + math::Vector<3> gs_pos_i = ground_station.GetPosition_i_m(); + math::Vector<3> pos_gs2sc_i = sc_pos_i - gs_pos_i; double dist_sc_gs_km = pos_gs2sc_i.CalcNorm() / 1000.0; double loss_space_dB = -20.0 * log10(4.0 * math::pi * dist_sc_gs_km / (300.0 / spacecraft_tx_antenna.GetFrequency_MHz() / 1000.0)); // GS direction on SC TX antenna frame - Vector<3> sc_to_gs_i = gs_pos_i - sc_pos_i; + math::Vector<3> sc_to_gs_i = gs_pos_i - sc_pos_i; sc_to_gs_i = sc_to_gs_i.CalcNormalizedVector(); - Quaternion q_i_to_sc_ant = spacecraft_tx_antenna.GetQuaternion_b2c() * dynamics.GetAttitude().GetQuaternion_i2b(); - Vector<3> gs_direction_on_sc_frame = q_i_to_sc_ant.FrameConversion(sc_to_gs_i); + math::Quaternion q_i_to_sc_ant = spacecraft_tx_antenna.GetQuaternion_b2c() * dynamics.GetAttitude().GetQuaternion_i2b(); + math::Vector<3> gs_direction_on_sc_frame = q_i_to_sc_ant.FrameConversion(sc_to_gs_i); double theta_on_sc_antenna_rad = acos(gs_direction_on_sc_frame[2]); double phi_on_sc_antenna_rad = atan2(gs_direction_on_sc_frame[1], gs_direction_on_sc_frame[0]); // SC direction on GS RX antenna frame - Vector<3> gs_to_sc_ecef = dynamics.GetOrbit().GetPosition_ecef_m() - ground_station.GetPosition_ecef_m(); + math::Vector<3> gs_to_sc_ecef = dynamics.GetOrbit().GetPosition_ecef_m() - ground_station.GetPosition_ecef_m(); gs_to_sc_ecef = gs_to_sc_ecef.CalcNormalizedVector(); - Quaternion q_ecef_to_gs_ant = ground_station_rx_antenna.GetQuaternion_b2c() * ground_station.GetGeodeticPosition().GetQuaternionXcxfToLtc(); - Vector<3> sc_direction_on_gs_frame = q_ecef_to_gs_ant.FrameConversion(gs_to_sc_ecef); + math::Quaternion q_ecef_to_gs_ant = ground_station_rx_antenna.GetQuaternion_b2c() * ground_station.GetGeodeticPosition().GetQuaternionXcxfToLtc(); + math::Vector<3> sc_direction_on_gs_frame = q_ecef_to_gs_ant.FrameConversion(gs_to_sc_ecef); double theta_on_gs_antenna_rad = acos(sc_direction_on_gs_frame[2]); double phi_on_gs_antenna_rad = atan2(sc_direction_on_gs_frame[1], sc_direction_on_gs_frame[0]); diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index dbda8d681..bc5f8c0f4 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -51,7 +51,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station: Ground station information * @param [in] ground_station_rx_antenna: Antenna mounted on ground station */ - void Update(const Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, + void Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); // Override logger::ILoggable TODO: Maybe we don't need logabble, and this class should be used as library. @@ -111,7 +111,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return Max bitrate [Mbps] */ - double CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, + double CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); /** * @fn CalcReceiveMarginOnGs @@ -122,8 +122,8 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return Receive margin [dB] */ - double CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, - const Antenna& ground_station_rx_antenna); + double CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, + const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); /** * @fn CalcCn0 @@ -134,7 +134,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return CN0 [dB] */ - double CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const GroundStation& ground_station, + double CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); }; diff --git a/src/components/real/mission/telescope.cpp b/src/components/real/mission/telescope.cpp index 7b704ba75..cf17359e4 100644 --- a/src/components/real/mission/telescope.cpp +++ b/src/components/real/mission/telescope.cpp @@ -10,16 +10,13 @@ #include #include -using namespace std; -using namespace s2e::math; - namespace s2e::components { Telescope::Telescope(environment::ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, - const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, - const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) + const dynamics::attitude::Attitude* attitude, const environment::HipparcosCatalogue* hipparcos, + const environment::LocalCelestialInformation* local_celestial_information, const dynamics::orbit::Orbit* orbit) : Component(1, clock_generator), quaternion_b2c_(quaternion_b2c), sun_forbidden_angle_rad_(sun_forbidden_angle_rad), @@ -43,7 +40,7 @@ Telescope::Telescope(environment::ClockGenerator* clock_generator, const math::Q assert(x_field_of_view_rad < math::pi_2); // Avoid the case that the field of view is over 90 degrees assert(y_field_of_view_rad < math::pi_2); - sight_direction_c_ = Vector<3>(0); + sight_direction_c_ = math::Vector<3>(0); sight_direction_c_[0] = 1; // (1,0,0) at component frame, Sight direction vector // Set 0 when t=0 @@ -118,7 +115,7 @@ void Telescope::Observe(math::Vector<2>& position_image_sensor, const math::Vect } void Telescope::ObserveStars() { - Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); + math::Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); star_list_in_sight.clear(); // Clear first size_t count = 0; // Counter for while loop @@ -175,7 +172,7 @@ void Telescope::ObserveGroundPositionDeviation() { return; } - Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); + math::Quaternion quaternion_i2b = attitude_->GetQuaternion_i2b(); math::Vector<3> spacecraft_position_ecef_m = orbit_->GetPosition_ecef_m(); math::Vector<3> direction_ecef = (initial_ground_position_ecef_m_ - spacecraft_position_ecef_m).CalcNormalizedVector(); math::Matrix<3, 3> dcm_ecef_to_i = local_celestial_information_->GetGlobalInformation().GetEarthRotation().GetDcmJ2000ToEcef().Transpose(); @@ -190,8 +187,8 @@ void Telescope::ObserveGroundPositionDeviation() { ground_position_y_image_sensor_ = ground_angle_y_rad / y_fov_per_pix_; } -string Telescope::GetLogHeader() const { - string str_tmp = ""; +std::string Telescope::GetLogHeader() const { + std::string str_tmp = ""; std::string component_name = "telescope_"; @@ -206,9 +203,9 @@ string Telescope::GetLogHeader() const { // When Hipparcos Catalogue was not read, no output of ObserveStars if (hipparcos_->IsCalcEnabled) { for (size_t i = 0; i < number_of_logged_stars_; i++) { - str_tmp += logger::WriteScalar(component_name + "hipparcos_id (" + to_string(i) + ")", " "); - str_tmp += logger::WriteScalar(component_name + "visible_magnitude (" + to_string(i) + ")", " "); - str_tmp += logger::WriteVector(component_name + "star_position (" + to_string(i) + ")", "img", "pix", 2); + str_tmp += logger::WriteScalar(component_name + "hipparcos_id (" + std::to_string(i) + ")", " "); + str_tmp += logger::WriteScalar(component_name + "visible_magnitude (" + std::to_string(i) + ")", " "); + str_tmp += logger::WriteVector(component_name + "star_position (" + std::to_string(i) + ")", "img", "pix", 2); } } @@ -220,8 +217,8 @@ string Telescope::GetLogHeader() const { return str_tmp; } -string Telescope::GetLogValue() const { - string str_tmp = ""; +std::string Telescope::GetLogValue() const { + std::string str_tmp = ""; str_tmp += logger::WriteScalar(is_sun_in_forbidden_angle); str_tmp += logger::WriteScalar(is_earth_in_forbidden_angle); str_tmp += logger::WriteScalar(is_moon_in_forbidden_angle); @@ -247,13 +244,13 @@ string Telescope::GetLogValue() const { return str_tmp; } -Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const string file_name, - const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, - const LocalCelestialInformation* local_celestial_information, const Orbit* orbit) { +Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, + const dynamics::attitude::Attitude* attitude, const environment::HipparcosCatalogue* hipparcos, + const environment::LocalCelestialInformation* local_celestial_information, const dynamics::orbit::Orbit* orbit) { using math::pi; setting_file_reader::IniAccess Telescope_conf(file_name); - const string st_sensor_id = std::to_string(static_cast(sensor_id)); + const std::string st_sensor_id = std::to_string(static_cast(sensor_id)); const char* cs = st_sensor_id.data(); char TelescopeSection[30] = "TELESCOPE_"; diff --git a/src/components/real/mission/telescope.hpp b/src/components/real/mission/telescope.hpp index c39a46854..dc663de90 100644 --- a/src/components/real/mission/telescope.hpp +++ b/src/components/real/mission/telescope.hpp @@ -24,8 +24,8 @@ namespace s2e::components { * @brief Information of stars in the telescope's field of view */ struct Star { - HipparcosData hipparcos_data; //!< Hipparcos data - math::Vector<2> position_image_sensor; //!< Position of image sensor + environment::HipparcosData hipparcos_data; //!< Hipparcos data + math::Vector<2> position_image_sensor; //!< Position of image sensor }; /* @@ -55,7 +55,8 @@ class Telescope : public Component, public logger::ILoggable { Telescope(environment::ClockGenerator* clock_generator, const math::Quaternion& quaternion_b2c, const double sun_forbidden_angle_rad, const double earth_forbidden_angle_rad, const double moon_forbidden_angle_rad, const int x_number_of_pix, const int y_number_of_pix, const double x_fov_per_pix, const double y_fov_per_pix, size_t number_of_logged_stars, const dynamics::attitude::Attitude* attitude, - const HipparcosCatalogue* hipparcos, const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); + const environment::HipparcosCatalogue* hipparcos, const environment::LocalCelestialInformation* local_celestial_information, + const dynamics::orbit::Orbit* orbit = nullptr); /** * @fn ~Telescope * @brief Destructor @@ -126,16 +127,16 @@ class Telescope : public Component, public logger::ILoggable { */ void ObserveStars(); - const dynamics::attitude::Attitude* attitude_; //!< dynamics::attitude::Attitude information - const HipparcosCatalogue* hipparcos_; //!< Star information - const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information + const dynamics::attitude::Attitude* attitude_; //!< dynamics::attitude::Attitude information + const environment::HipparcosCatalogue* hipparcos_; //!< Star information + const environment::LocalCelestialInformation* local_celestial_information_; //!< Local celestial information /** * @fn ObserveGroundPositionDeviation * @brief Calculate the deviation of the ground position from its initial value in the image sensor */ void ObserveGroundPositionDeviation(); - const Orbit* orbit_; //!< Orbit information + const dynamics::orbit::Orbit* orbit_; //!< Orbit information // Override logger::ILoggable /** * @fn GetLogHeader @@ -169,8 +170,8 @@ class Telescope : public Component, public logger::ILoggable { * @param [in] local_celestial_information: Local celestial information */ Telescope InitTelescope(environment::ClockGenerator* clock_generator, int sensor_id, const std::string file_name, - const dynamics::attitude::Attitude* attitude, const HipparcosCatalogue* hipparcos, - const LocalCelestialInformation* local_celestial_information, const Orbit* orbit = nullptr); + const dynamics::attitude::Attitude* attitude, const environment::HipparcosCatalogue* hipparcos, + const environment::LocalCelestialInformation* local_celestial_information, const dynamics::orbit::Orbit* orbit = nullptr); } // namespace s2e::components diff --git a/src/components/real/power/solar_array_panel.cpp b/src/components/real/power/solar_array_panel.cpp index f50959a07..2bd8632b4 100644 --- a/src/components/real/power/solar_array_panel.cpp +++ b/src/components/real/power/solar_array_panel.cpp @@ -13,8 +13,8 @@ namespace s2e::components { SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, - double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, - const LocalCelestialInformation* local_celestial_information, double component_step_time_s) + double transmission_efficiency, const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information, double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), number_of_series_(number_of_series), @@ -32,7 +32,7 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerato SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, - double transmission_efficiency, const SolarRadiationPressureEnvironment* srp_environment, + double transmission_efficiency, const environment::SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) : Component(prescaler, clock_generator), component_id_(component_id), @@ -50,8 +50,8 @@ SolarArrayPanel::SolarArrayPanel(const int prescaler, environment::ClockGenerato SolarArrayPanel::SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, - const SolarRadiationPressureEnvironment* srp_environment, - const LocalCelestialInformation* local_celestial_information) + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information) : Component(10, clock_generator), component_id_(component_id), number_of_series_(number_of_series), @@ -118,8 +118,8 @@ void SolarArrayPanel::MainRoutine(const int time_count) { } SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, - double component_step_time_s) { + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information, double component_step_time_s) { setting_file_reader::IniAccess sap_conf(file_name); const std::string section_name = "SOLAR_ARRAY_PANEL_" + std::to_string(static_cast(sap_id)); @@ -152,7 +152,7 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id } SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) { + const environment::SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s) { setting_file_reader::IniAccess sap_conf(file_name); const std::string section_name = "SOLAR_ARRAY_PANEL_" + std::to_string(static_cast(sap_id)); diff --git a/src/components/real/power/solar_array_panel.hpp b/src/components/real/power/solar_array_panel.hpp index e684062cf..63e7d796f 100644 --- a/src/components/real/power/solar_array_panel.hpp +++ b/src/components/real/power/solar_array_panel.hpp @@ -35,8 +35,8 @@ class SolarArrayPanel : public Component, public logger::ILoggable { */ SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, - double component_step_time_s); + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information, double component_step_time_s); /** * @fn SolarArrayPanel * @brief Constructor with prescaler @@ -54,7 +54,7 @@ class SolarArrayPanel : public Component, public logger::ILoggable { */ SolarArrayPanel(const int prescaler, environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, - const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); + const environment::SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); /** * @fn SolarArrayPanel * @brief Constructor without prescaler @@ -72,7 +72,8 @@ class SolarArrayPanel : public Component, public logger::ILoggable { */ SolarArrayPanel(environment::ClockGenerator* clock_generator, int component_id, int number_of_series, int number_of_parallel, double cell_area_m2, math::Vector<3> normal_vector, double cell_efficiency, double transmission_efficiency, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information); + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information); /** * @fn SolarArrayPanel * @brief Copy constructor @@ -117,8 +118,8 @@ class SolarArrayPanel : public Component, public logger::ILoggable { const double cell_efficiency_; //!< Power generation efficiency of solar cell const double transmission_efficiency_; //!< Efficiency of transmission to PCU - const SolarRadiationPressureEnvironment* const srp_environment_; //!< Solar Radiation Pressure environment - const LocalCelestialInformation* local_celestial_information_; //!< Local celestial information + const environment::SolarRadiationPressureEnvironment* const srp_environment_; //!< Solar Radiation Pressure environment + const environment::LocalCelestialInformation* local_celestial_information_; //!< Local celestial information double voltage_V_; //!< Voltage [V] double power_generation_W_; //!< Generated power [W] @@ -144,8 +145,8 @@ class SolarArrayPanel : public Component, public logger::ILoggable { * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, const LocalCelestialInformation* local_celestial_information, - double component_step_time_s); + const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::LocalCelestialInformation* local_celestial_information, double component_step_time_s); /* * @fn InitSAP @@ -157,7 +158,7 @@ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id * @param [in] component_step_time_s: Component step time [sec] */ SolarArrayPanel InitSAP(environment::ClockGenerator* clock_generator, int sap_id, const std::string file_name, - const SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); + const environment::SolarRadiationPressureEnvironment* srp_environment, double component_step_time_s); } // namespace s2e::components diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index dc07d7007..9bde027e3 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -14,8 +14,8 @@ namespace s2e::components { // Constructor SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, - const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, - const dynamics::Dynamics* dynamics) + const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, + const simulation::Structure* structure, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), component_id_(component_id), thruster_position_b_m_(thruster_position_b_m), @@ -29,8 +29,8 @@ SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, - const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, - const dynamics::Dynamics* dynamics) + const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, + const simulation::Structure* structure, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), component_id_(component_id), thruster_position_b_m_(thruster_position_b_m), @@ -123,7 +123,7 @@ math::Vector<3> SimpleThruster::CalcThrustDirection() { } SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, - const Structure* structure, const dynamics::Dynamics* dynamics) { + const simulation::Structure* structure, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); @@ -131,10 +131,10 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int prescaler = thruster_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - Vector<3> thruster_pos; + math::Vector<3> thruster_pos; thruster_conf.ReadVector(Section, "thruster_position_b_m", thruster_pos); - Vector<3> thruster_dir; + math::Vector<3> thruster_dir; thruster_conf.ReadVector(Section, "thruster_direction_b", thruster_dir); double max_magnitude_N = thruster_conf.ReadDouble(Section, "thrust_magnitude_N"); @@ -151,7 +151,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, } SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, - const Structure* structure, const dynamics::Dynamics* dynamics) { + const simulation::Structure* structure, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); @@ -159,10 +159,10 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int prescaler = thruster_conf.ReadInt(Section, "prescaler"); if (prescaler <= 1) prescaler = 1; - Vector<3> thruster_pos; + math::Vector<3> thruster_pos; thruster_conf.ReadVector(Section, "thruster_position_b_m", thruster_pos); - Vector<3> thruster_dir; + math::Vector<3> thruster_dir; thruster_conf.ReadVector(Section, "thruster_direction_b", thruster_dir); double max_magnitude_N = thruster_conf.ReadDouble(Section, "thrust_magnitude_N"); diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index ca0476e04..c1e30b2e4 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -37,9 +37,10 @@ class SimpleThruster : public Component, public logger::ILoggable { * @param [in] structure: Spacecraft structure information * @param [in] dynamics: Spacecraft dynamics information */ - SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const Vector<3> thruster_position_b_m, - const Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, - const double direction_standard_deviation_rad, const Structure* structure, const dynamics::Dynamics* dynamics); + SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, + const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, + const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const simulation::Structure* structure, + const dynamics::Dynamics* dynamics); /** * @fn SimpleThruster * @brief Constructor with power port @@ -56,8 +57,8 @@ class SimpleThruster : public Component, public logger::ILoggable { * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, - const Vector<3> thruster_position_b_m, const Vector<3> thrust_direction_b, const double max_magnitude_N, - const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const Structure* structure, + const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, + const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const simulation::Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn ~SimpleThruster @@ -94,12 +95,12 @@ class SimpleThruster : public Component, public logger::ILoggable { * @fn GetOutputThrust_b_N * @brief Return generated thrust on the body fixed frame [N] */ - inline const Vector<3> GetOutputThrust_b_N() const { return output_thrust_b_N_; }; + inline const math::Vector<3> GetOutputThrust_b_N() const { return output_thrust_b_N_; }; /** * @fn GetOutputTorque_b_Nm * @brief Return generated torque on the body fixed frame [Nm] */ - inline const Vector<3> GetOutputTorque_b_Nm() const { return output_torque_b_Nm_; }; + inline const math::Vector<3> GetOutputTorque_b_Nm() const { return output_torque_b_Nm_; }; // Setter /** @@ -110,17 +111,17 @@ class SimpleThruster : public Component, public logger::ILoggable { protected: // parameters - const int component_id_; //!< Thruster ID - Vector<3> thruster_position_b_m_{0.0}; //!< Thruster position @ body frame [m] - Vector<3> thrust_direction_b_{0.0}; //!< Thrust direction @ body frame - double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] - double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] - double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] - s2e::randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error - s2e::randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error + const int component_id_; //!< Thruster ID + math::Vector<3> thruster_position_b_m_{0.0}; //!< Thruster position @ body frame [m] + math::Vector<3> thrust_direction_b_{0.0}; //!< Thrust direction @ body frame + double duty_ = 0.0; //!< PWM Duty [0.0 : 1.0] + double thrust_magnitude_max_N_ = 0.0; //!< Maximum thrust magnitude [N] + double direction_noise_standard_deviation_rad_ = 0.0; //!< Standard deviation of thrust direction error [rad] + randomization::NormalRand magnitude_random_noise_; //!< Normal random for thrust magnitude error + randomization::NormalRand direction_random_noise_; //!< Normal random for thrust direction error // outputs - Vector<3> output_thrust_b_N_{0.0}; //!< Generated thrust on the body fixed frame [N] - Vector<3> output_torque_b_Nm_{0.0}; //!< Generated torque on the body fixed frame [Nm] + math::Vector<3> output_thrust_b_N_{0.0}; //!< Generated thrust on the body fixed frame [N] + math::Vector<3> output_torque_b_Nm_{0.0}; //!< Generated torque on the body fixed frame [Nm] /** * @fn CalcThrust @@ -132,7 +133,7 @@ class SimpleThruster : public Component, public logger::ILoggable { * @brief Calculate generated torque * @param [in] center_of_mass_b_m: Center of mass_kg position at body frame [m] */ - void CalcTorque(const Vector<3> center_of_mass_b_m); + void CalcTorque(const math::Vector<3> center_of_mass_b_m); /** * @fn CalcThrustMagnitude * @brief Calculate thrust magnitude @@ -144,7 +145,7 @@ class SimpleThruster : public Component, public logger::ILoggable { * @brief Calculate thrust direction * @return Thrust direction */ - Vector<3> CalcThrustDirection(); + math::Vector<3> CalcThrustDirection(); /** * @fn Initialize * @brief Initialize function @@ -153,8 +154,8 @@ class SimpleThruster : public Component, public logger::ILoggable { */ void Initialize(const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad); - const Structure* structure_; //!< Spacecraft structure information - const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information + const simulation::Structure* structure_; //!< Spacecraft structure information + const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; /** @@ -167,7 +168,7 @@ class SimpleThruster : public Component, public logger::ILoggable { * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, - const Structure* structure, const dynamics::Dynamics* dynamics); + const simulation::Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn InitSimpleThruster * @brief Initialize function os SimpleThruster @@ -179,7 +180,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, - const Structure* structure, const dynamics::Dynamics* dynamics); + const simulation::Structure* structure, const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 8b7503776..001422dbc 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -14,7 +14,7 @@ namespace s2e::disturbances { -AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, +AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled), wall_temperature_K_(wall_temperature_K), @@ -25,7 +25,7 @@ AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& ce cn_.assign(num, 0.0); } -void AirDrag::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { +void AirDrag::Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { double air_density_kg_m3 = local_environment.GetAtmosphere().GetAirDensity_kg_m3(); math::Matrix<3, 3> dcm_ecef2eci = @@ -60,7 +60,7 @@ double AirDrag::CalcFunctionChi(const double s) { return x; } -void AirDrag::CalcCnCt(const Vector<3>& velocity_b_m_s) { +void AirDrag::CalcCnCt(const math::Vector<3>& velocity_b_m_s) { double velocity_norm_m_s = velocity_b_m_s.CalcNorm(); // Re-emitting speed @@ -95,7 +95,8 @@ std::string AirDrag::GetLogValue() const { return str_tmp; } -AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m) { +AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, + const math::Vector<3>& center_of_gravity_b_m) { auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "AIR_DRAG"; diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 483c388f3..73d5cbd9b 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -32,7 +32,7 @@ class AirDrag : public SurfaceForce { * @param [in] molecular_weight_g_mol: Molecular weight [g/mol] * @param [in] is_calculation_enabled: Calculation flag */ - AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, + AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled = true); /** @@ -41,7 +41,7 @@ class AirDrag : public SurfaceForce { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); + virtual void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** @@ -98,7 +98,8 @@ class AirDrag : public SurfaceForce { * @param [in] surfaces: surface information of the spacecraft * @param [in] center_of_gravity_b_m: Center of gravity position vector at body frame [m] */ -AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const Vector<3>& center_of_gravity_b_m); +AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, + const math::Vector<3>& center_of_gravity_b_m); } // namespace s2e::disturbances diff --git a/src/disturbances/disturbance.hpp b/src/disturbances/disturbance.hpp index 274517736..d9de38dd9 100644 --- a/src/disturbances/disturbance.hpp +++ b/src/disturbances/disturbance.hpp @@ -41,7 +41,7 @@ class Disturbance : public logger::ILoggable { * @fn UpdateIfEnabled * @brief Update calculated disturbance when the calculation flag is true */ - virtual inline void UpdateIfEnabled(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { + virtual inline void UpdateIfEnabled(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { if (is_calculation_enabled_) { Update(local_environment, dynamics); } else { @@ -56,7 +56,7 @@ class Disturbance : public logger::ILoggable { * @fn Update * @brief Pure virtual function to define the disturbance calculation */ - virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) = 0; + virtual void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) = 0; /** * @fn GetTorque_b_Nm diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index e3351d989..86e7da768 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -17,8 +17,8 @@ namespace s2e::disturbances { -Disturbances::Disturbances(const SimulationConfiguration* simulation_configuration, const int spacecraft_id, const Structure* structure, - const GlobalEnvironment* global_environment) { +Disturbances::Disturbances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, + const simulation::Structure* structure, const environment::GlobalEnvironment* global_environment) { InitializeInstances(simulation_configuration, spacecraft_id, structure, global_environment); InitializeForceAndTorque(); InitializeAcceleration(); @@ -30,7 +30,8 @@ Disturbances::~Disturbances() { } } -void Disturbances::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics, const SimulationTime* simulation_time) { +void Disturbances::Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics, + const environment::SimulationTime* simulation_time) { InitializeForceAndTorque(); InitializeAcceleration(); @@ -50,15 +51,15 @@ void Disturbances::Update(const LocalEnvironment& local_environment, const dynam } } -void Disturbances::LogSetup(Logger& logger) { +void Disturbances::LogSetup(logger::Logger& logger) { for (auto disturbance : disturbances_list_) { logger.AddLogList(disturbance); } logger.CopyFileToLogDirectory(initialize_file_name_); } -void Disturbances::InitializeInstances(const SimulationConfiguration* simulation_configuration, const int spacecraft_id, const Structure* structure, - const GlobalEnvironment* global_environment) { +void Disturbances::InitializeInstances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, + const simulation::Structure* structure, const environment::GlobalEnvironment* global_environment) { setting_file_reader::IniAccess ini_access = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); initialize_file_name_ = ini_access.ReadString("SETTING_FILES", "disturbance_file"); @@ -93,10 +94,10 @@ void Disturbances::InitializeInstances(const SimulationConfiguration* simulation } void Disturbances::InitializeForceAndTorque() { - total_torque_b_Nm_ = Vector<3>(0.0); - total_force_b_N_ = Vector<3>(0.0); + total_torque_b_Nm_ = math::Vector<3>(0.0); + total_force_b_N_ = math::Vector<3>(0.0); } -void Disturbances::InitializeAcceleration() { total_acceleration_i_m_s2_ = Vector<3>(0.0); } +void Disturbances::InitializeAcceleration() { total_acceleration_i_m_s2_ = math::Vector<3>(0.0); } } // namespace s2e::disturbances diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index 67d1f473d..243f446b1 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -30,8 +30,8 @@ class Disturbances { * @param [in] structure: Structure information of spacecraft * @param [in] global_environment: Global environment information */ - Disturbances(const SimulationConfiguration* simulation_configuration, const int spacecraft_id, const Structure* structure, - const GlobalEnvironment* global_environment); + Disturbances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, const simulation::Structure* structure, + const environment::GlobalEnvironment* global_environment); /** * @fn ~Disturbances * @brief Destructor @@ -45,13 +45,14 @@ class Disturbances { * @param [in] dynamics: dynamics::Dynamics information * @param [in] simulation_time: Simulation time */ - void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics, const SimulationTime* simulation_time); + void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics, + const environment::SimulationTime* simulation_time); /** * @fn LogSetup * @brief log setup for all disturbances * @param [in] logger: Logger */ - void LogSetup(Logger& logger); + void LogSetup(logger::Logger& logger); /** * @fn GetTorque @@ -75,9 +76,9 @@ class Disturbances { std::string initialize_file_name_; //!< Initialization file name std::vector disturbances_list_; //!< List of disturbances - Vector<3> total_torque_b_Nm_; //!< Total disturbance torque in the body frame [Nm] - Vector<3> total_force_b_N_; //!< Total disturbance force in the body frame [N] - Vector<3> total_acceleration_i_m_s2_; //!< Total disturbance acceleration in the inertial frame [m/s2] + math::Vector<3> total_torque_b_Nm_; //!< Total disturbance torque in the body frame [Nm] + math::Vector<3> total_force_b_N_; //!< Total disturbance force in the body frame [N] + math::Vector<3> total_acceleration_i_m_s2_; //!< Total disturbance acceleration in the inertial frame [m/s2] /** * @fn InitializeInstances @@ -87,8 +88,8 @@ class Disturbances { * @param [in] structure: Structure information of spacecraft * @param [in] global_environment: Global environment information */ - void InitializeInstances(const SimulationConfiguration* simulation_configuration, const int spacecraft_id, const Structure* structure, - const GlobalEnvironment* global_environment); + void InitializeInstances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, + const simulation::Structure* structure, const environment::GlobalEnvironment* global_environment); /** * @fn InitializeForceAndTorque * @brief Initialize disturbance force and torque diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 382a10dc4..966a5497f 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -70,7 +70,7 @@ bool Geopotential::ReadCoefficientsEgm96(std::string file_name) { return true; } -void Geopotential::Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { +void Geopotential::Update(const environment::LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { #ifdef DEBUG_GEOPOTENTIAL chrono::system_clock::time_point start, end; start = chrono::system_clock::now(); diff --git a/src/disturbances/geopotential.hpp b/src/disturbances/geopotential.hpp index 235c1fef8..13be1f20c 100644 --- a/src/disturbances/geopotential.hpp +++ b/src/disturbances/geopotential.hpp @@ -48,7 +48,7 @@ class Geopotential : public Disturbance { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics); + virtual void Update(const environment::LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics); // Override logger::ILoggable /** @@ -64,10 +64,10 @@ class Geopotential : public Disturbance { private: s2e::gravity::GravityPotential geopotential_; - size_t degree_; //!< Maximum degree setting to calculate the geo-potential - std::vector> c_; //!< Cosine coefficients - std::vector> s_; //!< Sine coefficients - Vector<3> acceleration_ecef_m_s2_; //!< Calculated acceleration in the ECEF frame [m/s2] + size_t degree_; //!< Maximum degree setting to calculate the geo-potential + std::vector> c_; //!< Cosine coefficients + std::vector> s_; //!< Sine coefficients + math::Vector<3> acceleration_ecef_m_s2_; //!< Calculated acceleration in the ECEF frame [m/s2] // debug math::Vector<3> debug_pos_ecef_m_; //!< Spacecraft position in ECEF frame [m] diff --git a/src/disturbances/gravity_gradient.cpp b/src/disturbances/gravity_gradient.cpp index 4bb880cc1..bf1b0ff1a 100644 --- a/src/disturbances/gravity_gradient.cpp +++ b/src/disturbances/gravity_gradient.cpp @@ -19,7 +19,7 @@ GravityGradient::GravityGradient(const bool is_calculation_enabled) GravityGradient::GravityGradient(const double gravity_constant_m3_s2, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), gravity_constant_m3_s2_(gravity_constant_m3_s2) {} -void GravityGradient::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { +void GravityGradient::Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { // TODO: use structure information to get inertia tensor CalcTorque_b_Nm(local_environment.GetCelestialInformation().GetCenterBodyPositionFromSpacecraft_b_m(), dynamics.GetAttitude().GetInertiaTensor_b_kgm2()); diff --git a/src/disturbances/gravity_gradient.hpp b/src/disturbances/gravity_gradient.hpp index ad5e6fcea..4a5f99e65 100644 --- a/src/disturbances/gravity_gradient.hpp +++ b/src/disturbances/gravity_gradient.hpp @@ -43,7 +43,7 @@ class GravityGradient : public Disturbance { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); + virtual void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index 7d37794e4..dd94cc74c 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -88,8 +88,8 @@ bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { return true; } -void LunarGravityField::Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { - const CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); +void LunarGravityField::Update(const environment::LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics) { + const environment::CelestialInformation global_celestial_information = local_environment.GetCelestialInformation().GetGlobalInformation(); math::Matrix<3, 3> dcm_mci2mcmf_ = global_celestial_information.GetMoonRotation().GetDcmJ2000ToMcmf(); math::Vector<3> spacecraft_position_mci_m = dynamics.GetOrbit().GetPosition_i_m(); diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index a117464f5..2faf53420 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -50,7 +50,7 @@ class LunarGravityField : public Disturbance { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics); + virtual void Update(const environment::LocalEnvironment &local_environment, const dynamics::Dynamics &dynamics); // Override logger::ILoggable /** @@ -68,10 +68,10 @@ class LunarGravityField : public Disturbance { s2e::gravity::GravityPotential lunar_potential_; double reference_radius_km_; double gravity_constants_km3_s2_; - size_t degree_; //!< Maximum degree setting to calculate the geo-potential - std::vector> c_; //!< Cosine coefficients - std::vector> s_; //!< Sine coefficients - Vector<3> acceleration_mcmf_m_s2_; //!< Calculated acceleration in the MCMF(Moon Centered Moon Fixed) frame [m/s2] + size_t degree_; //!< Maximum degree setting to calculate the geo-potential + std::vector> c_; //!< Cosine coefficients + std::vector> s_; //!< Sine coefficients + math::Vector<3> acceleration_mcmf_m_s2_; //!< Calculated acceleration in the MCMF(Moon Centered Moon Fixed) frame [m/s2] // debug math::Vector<3> debug_pos_mcmf_m_; //!< Spacecraft position in MCMF frame [m] diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index 6165965f0..f39f3539b 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -15,18 +15,18 @@ namespace s2e::disturbances { -MagneticDisturbance::MagneticDisturbance(const ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) +MagneticDisturbance::MagneticDisturbance(const simulation::ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), residual_magnetic_moment_(rmm_params) { rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); } -Vector<3> MagneticDisturbance::CalcTorque_b_Nm(const Vector<3>& magnetic_field_b_nT) { +math::Vector<3> MagneticDisturbance::CalcTorque_b_Nm(const math::Vector<3>& magnetic_field_b_nT) { CalcRMM(); - torque_b_Nm_ = kMagUnit_ * OuterProduct(rmm_b_Am2_, magnetic_field_b_nT); + torque_b_Nm_ = kMagUnit_ * math::OuterProduct(rmm_b_Am2_, magnetic_field_b_nT); return torque_b_Nm_; } -void MagneticDisturbance::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { +void MagneticDisturbance::Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { UNUSED(dynamics); CalcTorque_b_Nm(local_environment.GetGeomagneticField().GetGeomagneticField_b_nT()); @@ -35,7 +35,7 @@ void MagneticDisturbance::Update(const LocalEnvironment& local_environment, cons void MagneticDisturbance::CalcRMM() { static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); - static RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant + static randomization::RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant static s2e::randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), s2e::randomization::global_randomization.MakeSeed()); @@ -64,7 +64,7 @@ std::string MagneticDisturbance::GetLogValue() const { return str_tmp; } -MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const ResidualMagneticMoment& rmm_params) { +MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const simulation::ResidualMagneticMoment& rmm_params) { auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "MAGNETIC_DISTURBANCE"; diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index f618f9de3..166060674 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -27,7 +27,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] rmm_parameters: RMM parameters of the spacecraft * @param [in] is_calculation_enabled: Calculation flag */ - MagneticDisturbance(const ResidualMagneticMoment& rmm_parameters, const bool is_calculation_enabled = true); + MagneticDisturbance(const simulation::ResidualMagneticMoment& rmm_parameters, const bool is_calculation_enabled = true); /** * @fn Update @@ -35,7 +35,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); + virtual void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** @@ -52,8 +52,8 @@ class MagneticDisturbance : public Disturbance { private: const double kMagUnit_ = 1.0e-9; //!< Constant value to change the unit [nT] -> [T] - math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] - const ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters + math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] + const simulation::ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters /** * @fn CalcRMM @@ -75,7 +75,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] initialize_file_path: Initialize file path * @param [in] rmm_params: RMM parameters */ -MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const ResidualMagneticMoment& rmm_params); +MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const simulation::ResidualMagneticMoment& rmm_params); } // namespace s2e::disturbances diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index bd26dec2a..c5f6b7af1 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -12,11 +12,11 @@ namespace s2e::disturbances { -SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, +SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} -void SolarRadiationPressureDisturbance::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { +void SolarRadiationPressureDisturbance::Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { UNUSED(dynamics); math::Vector<3> sun_position_from_sc_b_m = local_environment.GetCelestialInformation().GetPositionFromSpacecraft_b_m("SUN"); @@ -54,8 +54,9 @@ std::string SolarRadiationPressureDisturbance::GetLogValue() const { return str_tmp; } -SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, const std::vector& surfaces, - const Vector<3>& center_of_gravity_b_m) { +SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, + const std::vector& surfaces, + const math::Vector<3>& center_of_gravity_b_m) { auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "SOLAR_RADIATION_PRESSURE_DISTURBANCE"; diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 8cfcc3df1..73daceccd 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -27,7 +27,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, + SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** @@ -36,7 +36,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); + virtual void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); // Override logger::ILoggable /** @@ -67,8 +67,9 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] surfaces: surface information of the spacecraft * @param [in] center_of_gravity_b_m: Center of gravity position vector at body frame [m] */ -SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, const std::vector& surfaces, - const Vector<3>& center_of_gravity_b_m); +SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, + const std::vector& surfaces, + const math::Vector<3>& center_of_gravity_b_m); } // namespace s2e::disturbances diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 80ec260cf..4825640b7 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -9,7 +9,8 @@ namespace s2e::disturbances { -SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) +SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, + const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { // Initialize vectors size_t num = surfaces_.size(); diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index 61eb8edba..53d145557 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -30,7 +30,8 @@ class SurfaceForce : public Disturbance { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); + SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, + const bool is_calculation_enabled = true); /** * @fn ~SurfaceForce * @brief Destructor @@ -39,8 +40,8 @@ class SurfaceForce : public Disturbance { protected: // Spacecraft Structure parameters - const std::vector& surfaces_; //!< List of surfaces - const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] + const std::vector& surfaces_; //!< List of surfaces + const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] // Internal calculated variables std::vector normal_coefficients_; //!< coefficients for out-plane force for each surface diff --git a/src/disturbances/third_body_gravity.cpp b/src/disturbances/third_body_gravity.cpp index 205c129fa..9e2d6881c 100644 --- a/src/disturbances/third_body_gravity.cpp +++ b/src/disturbances/third_body_gravity.cpp @@ -16,7 +16,7 @@ ThirdBodyGravity::ThirdBodyGravity(std::set third_body_list, const ThirdBodyGravity::~ThirdBodyGravity() {} -void ThirdBodyGravity::Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { +void ThirdBodyGravity::Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics) { acceleration_i_m_s2_ = math::Vector<3>(0.0); // initialize math::Vector<3> sc_position_i_m = dynamics.GetOrbit().GetPosition_i_m(); diff --git a/src/disturbances/third_body_gravity.hpp b/src/disturbances/third_body_gravity.hpp index c55d5f2e3..bb45bec30 100644 --- a/src/disturbances/third_body_gravity.hpp +++ b/src/disturbances/third_body_gravity.hpp @@ -41,7 +41,7 @@ class ThirdBodyGravity : public Disturbance { * @param [in] local_environment: Local environment information * @param [in] dynamics: dynamics::Dynamics information */ - virtual void Update(const LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); + virtual void Update(const environment::LocalEnvironment& local_environment, const dynamics::Dynamics& dynamics); private: std::set third_body_list_; //!< List of celestial bodies to calculate the third body disturbances diff --git a/src/dynamics/attitude/attitude.cpp b/src/dynamics/attitude/attitude.cpp index b079c68b8..86a6b2443 100644 --- a/src/dynamics/attitude/attitude.cpp +++ b/src/dynamics/attitude/attitude.cpp @@ -45,7 +45,7 @@ std::string Attitude::GetLogValue() const { return str_tmp; } -void Attitude::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { +void Attitude::SetParameters(const simulation::MonteCarloSimulationExecutor& mc_simulator) { GetInitializedMonteCarloParameterQuaternion(mc_simulator, "quaternion_i2b", quaternion_i2b_); } diff --git a/src/dynamics/attitude/attitude_rk4.cpp b/src/dynamics/attitude/attitude_rk4.cpp index f7cca9b68..e432e665c 100644 --- a/src/dynamics/attitude/attitude_rk4.cpp +++ b/src/dynamics/attitude/attitude_rk4.cpp @@ -28,7 +28,7 @@ AttitudeRk4::AttitudeRk4(const math::Vector<3>& angular_velocity_b_rad_s, const AttitudeRk4::~AttitudeRk4() {} -void AttitudeRk4::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { +void AttitudeRk4::SetParameters(const simulation::MonteCarloSimulationExecutor& mc_simulator) { Attitude::SetParameters(mc_simulator); GetInitializedMonteCarloParameterVector(mc_simulator, "angular_velocity_b_rad_s", angular_velocity_b_rad_s_); diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index a43ba941d..dbfd569d4 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -61,7 +61,7 @@ std::string AttitudeWithCantileverVibration::GetLogValue() const { return str_tmp; } -void AttitudeWithCantileverVibration::SetParameters(const MonteCarloSimulationExecutor& mc_simulator) { +void AttitudeWithCantileverVibration::SetParameters(const simulation::MonteCarloSimulationExecutor& mc_simulator) { Attitude::SetParameters(mc_simulator); GetInitializedMonteCarloParameterVector(mc_simulator, "angular_velocity_b_rad_s", angular_velocity_b_rad_s_); diff --git a/src/dynamics/attitude/controlled_attitude.cpp b/src/dynamics/attitude/controlled_attitude.cpp index f564ebd21..d852dc9e3 100644 --- a/src/dynamics/attitude/controlled_attitude.cpp +++ b/src/dynamics/attitude/controlled_attitude.cpp @@ -11,8 +11,9 @@ namespace s2e::dynamics::attitude { ControlledAttitude::ControlledAttitude(const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b, const math::Vector<3> main_target_direction_b, const math::Vector<3> sub_target_direction_b, - const math::Matrix<3, 3>& inertia_tensor_kgm2, const LocalCelestialInformation* local_celestial_information, - const Orbit* orbit, const std::string& simulation_object_name) + const math::Matrix<3, 3>& inertia_tensor_kgm2, + const environment::LocalCelestialInformation* local_celestial_information, const orbit::Orbit* orbit, + const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), main_mode_(main_mode), sub_mode_(sub_mode), diff --git a/src/dynamics/attitude/initialize_attitude.cpp b/src/dynamics/attitude/initialize_attitude.cpp index 0aea27194..f5dbb7b82 100644 --- a/src/dynamics/attitude/initialize_attitude.cpp +++ b/src/dynamics/attitude/initialize_attitude.cpp @@ -8,7 +8,7 @@ namespace s2e::dynamics::attitude { -Attitude* InitAttitude(std::string file_name, const Orbit* orbit, const LocalCelestialInformation* local_celestial_information, +Attitude* InitAttitude(std::string file_name, const orbit::Orbit* orbit, const environment::LocalCelestialInformation* local_celestial_information, const double step_width_s, const math::Matrix<3, 3>& inertia_tensor_kgm2, const int spacecraft_id) { setting_file_reader::IniAccess ini_file(file_name); const char* section_ = "ATTITUDE"; diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 1a9da635e..30f5379ba 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -7,36 +7,37 @@ namespace s2e::dynamics { -Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, - const environment::LocalEnvironment* local_environment, const int spacecraft_id, simulation::Structure* structure, - simulation::RelativeInformation* relative_information) +Dynamics::Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, + const environment::LocalEnvironment* local_environment, const int spacecraft_id, simulation::Structure* structure, + simulation::RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); } -Dynamics::~dynamics::Dynamics() { +Dynamics::~Dynamics() { delete attitude_; delete orbit_; delete temperature_; } -void Dynamics::Initialize(const SimulationConfiguration* simulation_configuration, const SimulationTime* simulation_time, const int spacecraft_id, - Structure* structure, RelativeInformation* relative_information) { - const LocalCelestialInformation& local_celestial_information = local_environment_->GetCelestialInformation(); +void Dynamics::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, + const int spacecraft_id, simulation::Structure* structure, simulation::RelativeInformation* relative_information) { + const environment::LocalCelestialInformation& local_celestial_information = local_environment_->GetCelestialInformation(); // Initialize - orbit_ = InitOrbit(&(local_celestial_information.GetGlobalInformation()), simulation_configuration->spacecraft_file_list_[spacecraft_id], - simulation_time->GetOrbitRkStepTime_s(), simulation_time->GetCurrentTime_jd(), - local_celestial_information.GetGlobalInformation().GetCenterBodyGravityConstant_m3_s2(), "ORBIT", relative_information); - attitude_ = InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, - simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), spacecraft_id); - temperature_ = InitTemperature(simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetThermalRkStepTime_s(), - &(local_environment_->GetSolarRadiationPressure()), &(local_environment_->GetEarthAlbedo())); + orbit_ = orbit::InitOrbit(&(local_celestial_information.GetGlobalInformation()), simulation_configuration->spacecraft_file_list_[spacecraft_id], + simulation_time->GetOrbitRkStepTime_s(), simulation_time->GetCurrentTime_jd(), + local_celestial_information.GetGlobalInformation().GetCenterBodyGravityConstant_m3_s2(), "ORBIT", relative_information); + attitude_ = attitude::InitAttitude(simulation_configuration->spacecraft_file_list_[spacecraft_id], orbit_, &local_celestial_information, + simulation_time->GetAttitudeRkStepTime_s(), structure->GetKinematicsParameters().GetInertiaTensor_b_kgm2(), + spacecraft_id); + temperature_ = thermal::InitTemperature(simulation_configuration->spacecraft_file_list_[spacecraft_id], simulation_time->GetThermalRkStepTime_s(), + &(local_environment_->GetSolarRadiationPressure()), &(local_environment_->GetEarthAlbedo())); // To get initial value orbit_->UpdateByAttitude(attitude_->GetQuaternion_i2b()); } -void Dynamics::Update(const SimulationTime* simulation_time, const LocalCelestialInformation* local_celestial_information) { +void Dynamics::Update(const environment::SimulationTime* simulation_time, const environment::LocalCelestialInformation* local_celestial_information) { // Attitude propagation if (simulation_time->GetAttitudePropagateFlag()) { attitude_->Propagate(simulation_time->GetElapsedTime_s()); @@ -60,7 +61,7 @@ void Dynamics::ClearForceTorque(void) { orbit_->SetAcceleration_i_m_s2(zero); } -void Dynamics::LogSetup(Logger& logger) { +void Dynamics::LogSetup(logger::Logger& logger) { logger.AddLogList(attitude_); logger.AddLogList(orbit_); logger.AddLogList(temperature_); diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index be8534181..05f986807 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -40,7 +40,7 @@ class Dynamics { * @param [in] simulation_time: Simulation time * @param [in] local_celestial_information: Local celestial information * @param [in] spacecraft_id: Spacecraft ID of the spacecraft - * @param [in] structure: Structure of the spacecraft + * @param [in] structure: simulation::Structure of the spacecraft * @param [in] relative_information: Relative information */ Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, diff --git a/src/dynamics/orbit/encke_orbit_propagation.cpp b/src/dynamics/orbit/encke_orbit_propagation.cpp index adf102ceb..5a1ae0d0b 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.cpp +++ b/src/dynamics/orbit/encke_orbit_propagation.cpp @@ -11,7 +11,7 @@ namespace s2e::dynamics::orbit { -EnckeOrbitPropagation::EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, +EnckeOrbitPropagation::EnckeOrbitPropagation(const environment::CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, const double current_time_jd, const math::Vector<3> position_i_m, const math::Vector<3> velocity_i_m_s, const double error_tolerance) : Orbit(celestial_information), diff --git a/src/dynamics/orbit/encke_orbit_propagation.hpp b/src/dynamics/orbit/encke_orbit_propagation.hpp index 4101b6b71..68542f198 100644 --- a/src/dynamics/orbit/encke_orbit_propagation.hpp +++ b/src/dynamics/orbit/encke_orbit_propagation.hpp @@ -29,9 +29,9 @@ class EnckeOrbitPropagation : public Orbit, public math::OrdinaryDifferentialEqu * @param [in] velocity_i_m_s: Initial value of velocity in the inertial frame [m/s] * @param [in] error_tolerance: Error tolerance threshold */ - EnckeOrbitPropagation(const CelestialInformation* celestial_information, const double gravity_constant_m3_s2, const double propagation_step_s, - const double current_time_jd, const math::Vector<3> position_i_m, const math::Vector<3> velocity_i_m_s, - const double error_tolerance); + EnckeOrbitPropagation(const environment::CelestialInformation* celestial_information, const double gravity_constant_m3_s2, + const double propagation_step_s, const double current_time_jd, const math::Vector<3> position_i_m, + const math::Vector<3> velocity_i_m_s, const double error_tolerance); /** * @fn ~EnckeOrbitPropagation * @brief Destructor diff --git a/src/dynamics/orbit/initialize_orbit.cpp b/src/dynamics/orbit/initialize_orbit.cpp index 7daf57ec6..e039adb98 100644 --- a/src/dynamics/orbit/initialize_orbit.cpp +++ b/src/dynamics/orbit/initialize_orbit.cpp @@ -15,8 +15,8 @@ namespace s2e::dynamics::orbit { -Orbit* InitOrbit(const CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, - double gravity_constant_m3_s2, std::string section, RelativeInformation* relative_information) { +Orbit* InitOrbit(const environment::CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, + double current_time_jd, double gravity_constant_m3_s2, std::string section, simulation::RelativeInformation* relative_information) { auto conf = setting_file_reader::IniAccess(initialize_file); const char* section_ = section.c_str(); Orbit* orbit; diff --git a/src/dynamics/orbit/initialize_orbit.hpp b/src/dynamics/orbit/initialize_orbit.hpp index a006fe204..dd38c127c 100644 --- a/src/dynamics/orbit/initialize_orbit.hpp +++ b/src/dynamics/orbit/initialize_orbit.hpp @@ -10,7 +10,9 @@ #include "orbit.hpp" +namespace s2e::simulation { class RelativeInformation; +} namespace s2e::dynamics::orbit { @@ -27,7 +29,7 @@ namespace s2e::dynamics::orbit { */ Orbit* InitOrbit(const environment::CelestialInformation* celestial_information, std::string initialize_file, double step_width_s, double current_time_jd, double gravity_constant_m3_s2, std::string section = "ORBIT", - RelativeInformation* relative_information = (RelativeInformation*)nullptr); + simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); /** * @fn InitializePosVel diff --git a/src/dynamics/orbit/kepler_orbit_propagation.cpp b/src/dynamics/orbit/kepler_orbit_propagation.cpp index dadb5ef50..4e9050844 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.cpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.cpp @@ -10,7 +10,7 @@ namespace s2e::dynamics::orbit { -KeplerOrbitPropagation::KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, +KeplerOrbitPropagation::KeplerOrbitPropagation(const environment::CelestialInformation* celestial_information, const double current_time_jd, KeplerOrbit kepler_orbit) : Orbit(celestial_information), KeplerOrbit(kepler_orbit) { UpdateState(current_time_jd); diff --git a/src/dynamics/orbit/kepler_orbit_propagation.hpp b/src/dynamics/orbit/kepler_orbit_propagation.hpp index cd18bab8c..a43aff5c4 100644 --- a/src/dynamics/orbit/kepler_orbit_propagation.hpp +++ b/src/dynamics/orbit/kepler_orbit_propagation.hpp @@ -25,7 +25,8 @@ class KeplerOrbitPropagation : public Orbit, public s2e::orbit::KeplerOrbit { * @param [in] current_time_jd: Current Julian day [day] * @param [in] kepler_orbit: Kepler orbit */ - KeplerOrbitPropagation(const CelestialInformation* celestial_information, const double current_time_jd, s2e::orbit::KeplerOrbit kepler_orbit); + KeplerOrbitPropagation(const environment::CelestialInformation* celestial_information, const double current_time_jd, + s2e::orbit::KeplerOrbit kepler_orbit); /** * @fn ~KeplerOrbitPropagation * @brief Destructor diff --git a/src/dynamics/orbit/relative_orbit.cpp b/src/dynamics/orbit/relative_orbit.cpp index af1ee1d88..6f4b2608d 100644 --- a/src/dynamics/orbit/relative_orbit.cpp +++ b/src/dynamics/orbit/relative_orbit.cpp @@ -10,10 +10,10 @@ namespace s2e::dynamics::orbit { -RelativeOrbit::RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, +RelativeOrbit::RelativeOrbit(const environment::CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, - s2e::orbit::StmModel stm_model_type, RelativeInformation* relative_information) + s2e::orbit::StmModel stm_model_type, simulation::RelativeInformation* relative_information) : Orbit(celestial_information), math::OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2), diff --git a/src/dynamics/orbit/relative_orbit.hpp b/src/dynamics/orbit/relative_orbit.hpp index 5abf101cb..313ac9429 100644 --- a/src/dynamics/orbit/relative_orbit.hpp +++ b/src/dynamics/orbit/relative_orbit.hpp @@ -41,10 +41,10 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] stm_model_type: State transition matrix type * @param [in] relative_information: Relative information */ - RelativeOrbit(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, int reference_spacecraft_id, - math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, RelativeOrbitUpdateMethod update_method, - s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, s2e::orbit::StmModel stm_model_type, - RelativeInformation* relative_information); + RelativeOrbit(const environment::CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, + int reference_spacecraft_id, math::Vector<3> relative_position_lvlh_m, math::Vector<3> relative_velocity_lvlh_m_s, + RelativeOrbitUpdateMethod update_method, s2e::orbit::RelativeOrbitModel relative_dynamics_model_type, + s2e::orbit::StmModel stm_model_type, simulation::RelativeInformation* relative_information); /** * @fn ~RelativeOrbit * @brief Destructor @@ -68,7 +68,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> * @param [in] state: Position and velocity as state vector * @param [out] rhs: Output of the function */ - virtual void DerivativeFunction(double t, const Vector<6>& state, Vector<6>& rhs); + virtual void DerivativeFunction(double t, const math::Vector<6>& state, math::Vector<6>& rhs); private: double gravity_constant_m3_s2_; //!< Gravity constant of the center body [m3/s2] @@ -86,7 +86,7 @@ class RelativeOrbit : public Orbit, public math::OrdinaryDifferentialEquation<6> RelativeOrbitUpdateMethod update_method_; //!< Update method s2e::orbit::RelativeOrbitModel relative_dynamics_model_type_; //!< Relative dynamics model type s2e::orbit::StmModel stm_model_type_; //!< State Transition Matrix model type - RelativeInformation* relative_information_; //!< Relative information + simulation::RelativeInformation* relative_information_; //!< Relative information /** * @fn InitializeState diff --git a/src/dynamics/orbit/rk4_orbit_propagation.cpp b/src/dynamics/orbit/rk4_orbit_propagation.cpp index b9fea10c7..930677292 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.cpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.cpp @@ -10,8 +10,8 @@ namespace s2e::dynamics::orbit { -Rk4OrbitPropagation::Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, - math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) +Rk4OrbitPropagation::Rk4OrbitPropagation(const environment::CelestialInformation* celestial_information, double gravity_constant_m3_s2, + double time_step_s, math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s) : Orbit(celestial_information), OrdinaryDifferentialEquation<6>(time_step_s), gravity_constant_m3_s2_(gravity_constant_m3_s2) { propagate_mode_ = OrbitPropagateMode::kRk4; diff --git a/src/dynamics/orbit/rk4_orbit_propagation.hpp b/src/dynamics/orbit/rk4_orbit_propagation.hpp index dbda96d86..30be7b161 100644 --- a/src/dynamics/orbit/rk4_orbit_propagation.hpp +++ b/src/dynamics/orbit/rk4_orbit_propagation.hpp @@ -29,7 +29,7 @@ class Rk4OrbitPropagation : public Orbit, public math::OrdinaryDifferentialEquat * @param [in] velocity_i_m_s: Initial value of velocity in the inertial frame [m/s] * @param [in] initial_time_s: Initial time [sec] */ - Rk4OrbitPropagation(const CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, + Rk4OrbitPropagation(const environment::CelestialInformation* celestial_information, double gravity_constant_m3_s2, double time_step_s, math::Vector<3> position_i_m, math::Vector<3> velocity_i_m_s, double initial_time_s = 0); /** * @fn ~Rk4OrbitPropagation diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.cpp b/src/dynamics/orbit/sgp4_orbit_propagation.cpp index 1322cbeb6..691644184 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.cpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.cpp @@ -11,8 +11,8 @@ namespace s2e::dynamics::orbit { -Sgp4OrbitPropagation::Sgp4OrbitPropagation(const CelestialInformation* celestial_information, char* tle1, char* tle2, const int wgs_setting, - const double current_time_jd) +Sgp4OrbitPropagation::Sgp4OrbitPropagation(const environment::CelestialInformation* celestial_information, char* tle1, char* tle2, + const int wgs_setting, const double current_time_jd) : Orbit(celestial_information) { propagate_mode_ = OrbitPropagateMode::kSgp4; diff --git a/src/dynamics/orbit/sgp4_orbit_propagation.hpp b/src/dynamics/orbit/sgp4_orbit_propagation.hpp index 0bd59bfd3..5ccfea6ed 100644 --- a/src/dynamics/orbit/sgp4_orbit_propagation.hpp +++ b/src/dynamics/orbit/sgp4_orbit_propagation.hpp @@ -30,7 +30,7 @@ class Sgp4OrbitPropagation : public Orbit { * @param [in] wgs_setting: Wold Geodetic System * @param [in] current_time_jd: Current Julian day [day] */ - Sgp4OrbitPropagation(const CelestialInformation* celestial_information, char* tle1, char* tle2, const int wgs_setting, + Sgp4OrbitPropagation(const environment::CelestialInformation* celestial_information, char* tle1, char* tle2, const int wgs_setting, const double current_time_jd); // Override Orbit diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp index 8fe9893a0..5230a18c2 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.cpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.cpp @@ -14,9 +14,12 @@ #include "math_physics/math/constants.hpp" #include "setting_file_reader/initialize_file_access.hpp" -TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, std::string time_series_file_path, - int number_of_interpolation, int interpolation_method, - double orbital_period_correction_s, const double current_time_jd) +namespace s2e::dynamics::orbit { + +TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const environment::CelestialInformation* celestial_information, + std::string time_series_file_path, int number_of_interpolation, + int interpolation_method, double orbital_period_correction_s, + const double current_time_jd) : Orbit(celestial_information), is_time_range_warning_displayed_(false), is_interpolation_method_error_displayed_(false), @@ -27,7 +30,7 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn propagate_mode_ = OrbitPropagateMode::kTimeSeriesFile; // Read time series file - IniAccess time_series_file(time_series_file_path); + setting_file_reader::IniAccess time_series_file(time_series_file_path); time_series_file.ReadCsvDoubleWithHeader(time_series_data_, 7, 1, 0); // Get general info @@ -41,8 +44,8 @@ TimeSeriesFileOrbitPropagation::TimeSeriesFileOrbitPropagation(const CelestialIn reference_time_ = CalcEphemerisTimeData(reference_interpolation_id_); // Initialize orbit - orbit_position_i_m_.assign(1, orbit::InterpolationOrbit(number_of_interpolation)); - orbit_velocity_i_m_s_.assign(1, orbit::InterpolationOrbit(number_of_interpolation)); + orbit_position_i_m_.assign(1, s2e::orbit::InterpolationOrbit(number_of_interpolation)); + orbit_velocity_i_m_s_.assign(1, s2e::orbit::InterpolationOrbit(number_of_interpolation)); // Initialize interpolation for (int i = 0; i < number_of_interpolation; i++) { @@ -152,3 +155,5 @@ bool TimeSeriesFileOrbitPropagation::UpdateInterpolationInformation() { return true; } + +} // namespace s2e::dynamics::orbit diff --git a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp index 0de5a7278..722796b00 100644 --- a/src/dynamics/orbit/time_series_file_orbit_propagation.hpp +++ b/src/dynamics/orbit/time_series_file_orbit_propagation.hpp @@ -12,6 +12,7 @@ #include "orbit.hpp" +namespace s2e::dynamics::orbit { /** * @class TimeSeriesFileOrbitPropagation * @brief Class to calculate satellite orbit using interpolation with orbit time series input @@ -28,7 +29,7 @@ class TimeSeriesFileOrbitPropagation : public Orbit { * @param [in] orbital_period_correction_s: Orbital period correction [s] * @param [in] current_time_jd: Current Julian day [day] */ - TimeSeriesFileOrbitPropagation(const CelestialInformation* celestial_information, const std::string time_series_file_path, + TimeSeriesFileOrbitPropagation(const environment::CelestialInformation* celestial_information, const std::string time_series_file_path, const int number_of_interpolation, const int interpolation_method, const double orbital_period_correction_s, const double current_time_jd); @@ -73,8 +74,8 @@ class TimeSeriesFileOrbitPropagation : public Orbit { double reference_time_; //!< Reference start time of the time series data handling size_t reference_interpolation_id_; //!< Reference EphemerisTime ID of the interpolation - std::vector orbit_position_i_m_; //!< Position with interpolation - std::vector orbit_velocity_i_m_s_; //!< Velocity with interpolation + std::vector orbit_position_i_m_; //!< Position with interpolation + std::vector orbit_velocity_i_m_s_; //!< Velocity with interpolation /** * @fn UpdateInterpolationInformation @@ -84,4 +85,6 @@ class TimeSeriesFileOrbitPropagation : public Orbit { bool UpdateInterpolationInformation(); }; +} // namespace s2e::dynamics::orbit + #endif // S2E_DYNAMICS_ORBIT_TIME_SERIES_FILE_ORBIT_PROPAGATION_HPP_ diff --git a/src/dynamics/thermal/node.hpp b/src/dynamics/thermal/node.hpp index 6d9cb0434..6c9da2660 100644 --- a/src/dynamics/thermal/node.hpp +++ b/src/dynamics/thermal/node.hpp @@ -173,6 +173,5 @@ class Node { Node InitNode(const std::vector& node_str); } // namespace s2e::dynamics::thermal -namespace s2e::dynamics::thermal #endif // S2E_DYNAMICS_THERMAL_NODE_HPP_ diff --git a/src/dynamics/thermal/temperature.cpp b/src/dynamics/thermal/temperature.cpp index fecd97cd4..4fd6cc251 100644 --- a/src/dynamics/thermal/temperature.cpp +++ b/src/dynamics/thermal/temperature.cpp @@ -18,8 +18,9 @@ namespace s2e::dynamics::thermal { Temperature::Temperature(const vector> conductance_matrix_W_K, const vector> radiation_matrix_m2, vector nodes, vector heatloads, vector heaters, vector heater_controllers, const size_t node_num, - const double propagation_step_s, const SolarRadiationPressureEnvironment* srp_environment, const EarthAlbedo* earth_albedo, - const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, const bool debug) + const double propagation_step_s, const environment::SolarRadiationPressureEnvironment* srp_environment, + const environment::EarthAlbedo* earth_albedo, const bool is_calc_enabled, const SolarCalcSetting solar_calc_setting, + const bool debug) : conductance_matrix_W_K_(conductance_matrix_W_K), radiation_matrix_m2_(radiation_matrix_m2), nodes_(nodes), @@ -50,7 +51,7 @@ Temperature::Temperature() { Temperature::~Temperature() {} -void Temperature::Propagate(const LocalCelestialInformation* local_celestial_information, const double time_end_s) { +void Temperature::Propagate(const environment::LocalCelestialInformation* local_celestial_information, const double time_end_s) { if (!is_calc_enabled_) return; while (time_end_s - propagation_time_s_ - propagation_step_s_ > 1.0e-6) { CalcRungeOneStep(propagation_time_s_, propagation_step_s_, local_celestial_information, node_num_); @@ -93,7 +94,7 @@ void Temperature::Propagate(const LocalCelestialInformation* local_celestial_inf } } -void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const LocalCelestialInformation* local_celestial_information, +void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const environment::LocalCelestialInformation* local_celestial_information, size_t node_num) { vector temperatures_now_K(node_num); for (size_t i = 0; i < node_num; i++) { @@ -131,7 +132,7 @@ void Temperature::CalcRungeOneStep(double time_now_s, double time_step_s, const } vector Temperature::CalcTemperatureDifferentials(vector temperatures_K, double t, - const LocalCelestialInformation* local_celestial_information, size_t node_num) { + const environment::LocalCelestialInformation* local_celestial_information, size_t node_num) { // TODO: consider the following unused arguments are really needed UNUSED(temperatures_K); @@ -291,8 +292,8 @@ First row is time data using std::string; using std::vector; -Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, const SolarRadiationPressureEnvironment* srp_environment, - const EarthAlbedo* earth_albedo) { +Temperature* InitTemperature(const std::string file_name, const double rk_prop_step_s, + const environment::SolarRadiationPressureEnvironment* srp_environment, const environment::EarthAlbedo* earth_albedo) { auto mainIni = setting_file_reader::IniAccess(file_name); vector node_list; diff --git a/src/environment/local/local_environment.cpp b/src/environment/local/local_environment.cpp index 3f53239d1..7be568bce 100644 --- a/src/environment/local/local_environment.cpp +++ b/src/environment/local/local_environment.cpp @@ -10,8 +10,8 @@ namespace s2e::environment { -LocalEnvironment::LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, - const int spacecraft_id) { +LocalEnvironment::LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, + const environment::GlobalEnvironment* global_environment, const int spacecraft_id) { Initialize(simulation_configuration, global_environment, spacecraft_id); } @@ -23,8 +23,8 @@ LocalEnvironment::~LocalEnvironment() { delete celestial_information_; } -void LocalEnvironment::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, - const int spacecraft_id) { +void LocalEnvironment::Initialize(const simulation::SimulationConfiguration* simulation_configuration, + const environment::GlobalEnvironment* global_environment, const int spacecraft_id) { // Read file name setting_file_reader::IniAccess iniAccess = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); std::string ini_fname = iniAccess.ReadString("SETTING_FILES", "local_environment_file"); diff --git a/src/environment/local/local_environment.hpp b/src/environment/local/local_environment.hpp index b486d4226..e35b4973d 100644 --- a/src/environment/local/local_environment.hpp +++ b/src/environment/local/local_environment.hpp @@ -15,7 +15,7 @@ #include "simulation/simulation_configuration.hpp" #include "solar_radiation_pressure_environment.hpp" -namespace s2e::math { +namespace s2e::dynamics { class Dynamics; } @@ -34,7 +34,7 @@ class LocalEnvironment { * @param [in] global_environment: Global environment * @param [in] spacecraft_id: Satellite ID */ - LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, + LocalEnvironment(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id); /** * @fn ~LocalEnvironment @@ -96,7 +96,7 @@ class LocalEnvironment { * @param [in] global_environment: Global environment * @param [in] spacecraft_id: Satellite ID */ - void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const GlobalEnvironment* global_environment, + void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id); }; diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index 461bfa225..ae708a753 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -32,7 +32,7 @@ class NumericalIntegrator { * @fn ~NumericalIntegrator * @brief Destructor */ - inline virtual ~NumericalIntegrator(){}; + inline virtual ~NumericalIntegrator() {}; /** * @fn Integrate diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index d2072d4cb..a24b4f53b 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -29,7 +29,7 @@ class RungeKutta : public NumericalIntegrator { * @fn ~RungeKutta * @brief Destructor */ - inline virtual ~RungeKutta(){}; + inline virtual ~RungeKutta() {}; /** * @fn Integrate diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index 36a6f91a8..19f4db5c5 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -30,10 +30,10 @@ Spacecraft::~Spacecraft() { void Spacecraft::Initialize(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const int spacecraft_id, RelativeInformation* relative_information) { clock_generator_.ClearTimerCount(); - structure_ = new Structure(simulation_configuration, spacecraft_id); + structure_ = new simulation::Structure(simulation_configuration, spacecraft_id); local_environment_ = new environment::LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); - dynamics_ = new dynamics::dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, - spacecraft_id, structure_, relative_information); + dynamics_ = new dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, + structure_, relative_information); disturbances_ = new disturbances::Disturbances(simulation_configuration, spacecraft_id, structure_, global_environment); simulation_configuration->main_logger_->CopyFileToLogDirectory(simulation_configuration->spacecraft_file_list_[spacecraft_id]); diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index d1e99a444..dc673105b 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -71,7 +71,7 @@ class Spacecraft { * @fn GetDynamics * @brief Get dynamics of the spacecraft */ - inline const dynamics::dynamics::Dynamics& GetDynamics() const { return *dynamics_; } + inline const dynamics::Dynamics& GetDynamics() const { return *dynamics_; } /** * @fn GetLocalEnvironment * @brief Get local environment around the spacecraft @@ -86,7 +86,7 @@ class Spacecraft { * @fn GetStructure * @brief Get structure of the spacecraft */ - inline const Structure& GetStructure() const { return *structure_; } + inline const simulation::Structure& GetStructure() const { return *structure_; } /** * @fn GetInstalledComponents * @brief Get components installed on the spacecraft @@ -100,11 +100,11 @@ class Spacecraft { protected: environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft - dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft - Structure* structure_; //!< Structure information of the spacecraft + simulation::Structure* structure_; //!< Structure information of the spacecraft InstalledComponents* components_; //!< Components information installed on the spacecraft const unsigned int spacecraft_id_; //!< ID of the spacecraft }; diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index 44ed97d14..bfdea9145 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -31,14 +31,14 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { return kinematics_params; } -std::vector InitSurfaces(std::string file_name) { +std::vector InitSurfaces(std::string file_name) { using std::cout; auto conf = setting_file_reader::IniAccess(file_name); const char* section = "SURFACES"; const int num_surface = conf.ReadInt(section, "number_of_surfaces"); - std::vector surfaces; + std::vector surfaces; for (int i = 0; i < num_surface; i++) { std::string idx = std::to_string(i); @@ -89,7 +89,7 @@ std::vector InitSurfaces(std::string file_name) { break; } - Vector<3> position, normal; + math::Vector<3> position, normal; keyword = "position" + idx + "_b_m"; conf.ReadVector(section, keyword.c_str(), position); @@ -103,7 +103,7 @@ std::vector InitSurfaces(std::string file_name) { } // Add a surface - surfaces.push_back(Surface(position, normal, area, ref, spe, air_spe)); + surfaces.push_back(simulation::Surface(position, normal, area, ref, spe, air_spe)); } return surfaces; } diff --git a/src/simulation/spacecraft/structure/initialize_structure.hpp b/src/simulation/spacecraft/structure/initialize_structure.hpp index 0ab741839..34a58888e 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.hpp +++ b/src/simulation/spacecraft/structure/initialize_structure.hpp @@ -21,7 +21,7 @@ KinematicsParameters InitKinematicsParameters(std::string file_name); * @fn InitSurfaces * @brief Initialize the multiple surfaces with an ini file */ -std::vector InitSurfaces(std::string file_name); +std::vector InitSurfaces(std::string file_name); /** * @fn InitResidualMagneticMoment * @brief Initialize the RMM(Residual Magnetic Moment) parameters with an ini file diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index b97209727..c4dfadeb2 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -26,7 +26,7 @@ class KinematicsParameters { * @fn ~KinematicsParameters * @brief Destructor */ - ~KinematicsParameters(){}; + ~KinematicsParameters() {}; // Getter /** diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 1e00b7e89..ae06bb85d 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -26,7 +26,7 @@ class ResidualMagneticMoment { * @fn ~ResidualMagneticMoment * @brief Destructor */ - ~ResidualMagneticMoment(){}; + ~ResidualMagneticMoment() {}; // Getter /** diff --git a/src/simulation/spacecraft/structure/structure.hpp b/src/simulation/spacecraft/structure/structure.hpp index fe099cd04..6a1b87ae0 100644 --- a/src/simulation/spacecraft/structure/structure.hpp +++ b/src/simulation/spacecraft/structure/structure.hpp @@ -42,7 +42,7 @@ class Structure { * @fn GetSurfaces * @brief Return surface information */ - inline const std::vector& GetSurfaces() const { return surfaces_; } + inline const std::vector& GetSurfaces() const { return surfaces_; } /** * @fn GetKinematicsParameters * @brief Return kinematics information @@ -58,7 +58,7 @@ class Structure { * @fn GetToSetSurfaces * @brief Return surface information */ - inline std::vector& GetToSetSurfaces() { return surfaces_; } + inline std::vector& GetToSetSurfaces() { return surfaces_; } /** * @fn GetToSetKinematicsParameters * @brief Return kinematics information @@ -72,7 +72,7 @@ class Structure { private: KinematicsParameters* kinematics_parameters_; //!< Kinematics parameters - std::vector surfaces_; //!< Surface information + std::vector surfaces_; //!< Surface information ResidualMagneticMoment* residual_magnetic_moment_; //!< Residual Magnetic Moment }; diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index c98386bae..73a09d6e6 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -26,7 +26,7 @@ class Surface { * @fn ~Surface * @brief Destructor */ - ~Surface(){}; + ~Surface() {}; // Getter /** diff --git a/src/simulation_sample/ground_station/sample_ground_station.cpp b/src/simulation_sample/ground_station/sample_ground_station.cpp index 4ec523260..d75acb258 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station.cpp @@ -16,7 +16,7 @@ SampleGroundStation::SampleGroundStation(const simulation::SimulationConfigurati SampleGroundStation::~SampleGroundStation() { delete components_; } -void SampleGroundStation::LogSetup(Logger& logger) { +void SampleGroundStation::LogSetup(logger::Logger& logger) { simulation::GroundStation::LogSetup(logger); components_->CompoLogSetUp(logger); } diff --git a/src/simulation_sample/ground_station/sample_ground_station.hpp b/src/simulation_sample/ground_station/sample_ground_station.hpp index aafafada0..bee3024f9 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station.hpp @@ -39,7 +39,7 @@ class SampleGroundStation : public simulation::GroundStation { * @fn LogSetup * @brief Override function of LogSetup in GroundStation class */ - virtual void LogSetup(Logger& logger); + virtual void LogSetup(logger::Logger& logger); /** * @fn Update * @brief Override function of Update in GroundStation class diff --git a/src/simulation_sample/ground_station/sample_ground_station_components.hpp b/src/simulation_sample/ground_station/sample_ground_station_components.hpp index 35d5571da..35df9ce22 100644 --- a/src/simulation_sample/ground_station/sample_ground_station_components.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station_components.hpp @@ -31,7 +31,7 @@ class SampleGsComponents { * @fn CompoLogSetUp * @brief Log setup for ground station components */ - void CompoLogSetUp(Logger& logger); + void CompoLogSetUp(logger::Logger& logger); // Getter /** diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 1554f6ccb..2226ce032 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -13,7 +13,7 @@ namespace s2e::sample { using namespace components; -SampleComponents::SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, +SampleComponents::SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id) diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index 428ec9645..b15bc5b2c 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -34,23 +34,25 @@ #include #include -namespace s2e::sample { +namespace s2e::components { +class OnBoardComputer; +class PowerControlUnit; +class GyroSensor; +class Magnetometer; +class StarSensor; +class SunSensor; +class GnssReceiver; +class Magnetorquer; +class ReactionWheel; +class SimpleThruster; +class ForceGenerator; +class TorqueGenerator; +class AngularVelocityObserver; +class AttitudeObserver; +class Telescope; +} // namespace s2e::components -class components::OnBoardComputer; -class components::PowerControlUnit; -class components::GyroSensor; -class components::Magnetometer; -class components::StarSensor; -class components::SunSensor; -class components::GnssReceiver; -class components::Magnetorquer; -class components::ReactionWheel; -class components::SimpleThruster; -class components::ForceGenerator; -class components::TorqueGenerator; -class components::AngularVelocityObserver; -class components::AttitudeObserver; -class components::Telescope; +namespace s2e::sample { /** * @class SampleComponents @@ -62,10 +64,9 @@ class SampleComponents : public simulation::InstalledComponents { * @fn SampleComponents * @brief Constructor */ - SampleComponents(const dynamics::dynamics::Dynamics* dynamics, simulation::Structure* structure, - const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, - const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, - const unsigned int spacecraft_id); + SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, + const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, + environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id); /** * @fn ~SampleComponents * @brief Destructor @@ -140,7 +141,7 @@ class SampleComponents : public simulation::InstalledComponents { // States const simulation::SimulationConfiguration* configuration_; //!< Simulation settings - const dynamics::dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + const dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft simulation::Structure* structure_; //!< Structure information of the spacecraft const environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft const environment::GlobalEnvironment* global_environment_; //!< Global environment information From b50e583508222a56d0bcd234413c8b45cdbe8465 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 1 Oct 2024 23:35:54 +0900 Subject: [PATCH 450/456] Fix bug --- .../base/sensor_template_functions.hpp | 2 +- src/components/ideal/attitude_observer.hpp | 4 +-- src/components/ideal/force_generator.hpp | 6 ++-- src/components/ideal/orbit_observer.cpp | 2 +- src/components/ideal/orbit_observer.hpp | 4 +-- src/components/ideal/torque_generator.hpp | 6 ++-- src/components/real/aocs/gnss_receiver.cpp | 10 +++--- src/components/real/aocs/gnss_receiver.hpp | 12 +++---- src/components/real/aocs/magnetorquer.hpp | 6 ++-- src/components/real/aocs/reaction_wheel.hpp | 8 ++--- src/components/real/aocs/star_sensor.cpp | 12 +++---- src/components/real/aocs/star_sensor.hpp | 6 ++-- src/components/real/aocs/sun_sensor.cpp | 7 ++-- src/components/real/aocs/sun_sensor.hpp | 8 ++--- src/disturbances/geopotential.cpp | 2 +- src/disturbances/lunar_gravity_field.cpp | 2 +- src/disturbances/lunar_gravity_field.hpp | 2 +- src/disturbances/magnetic_disturbance.cpp | 4 +-- .../attitude_with_cantilever_vibration.cpp | 2 +- .../attitude_with_cantilever_vibration.hpp | 2 +- src/environment/global/gnss_satellites.cpp | 34 +++++++++---------- src/environment/global/gnss_satellites.hpp | 25 +++++++------- src/environment/global/moon_rotation.cpp | 2 +- src/environment/local/atmosphere.cpp | 6 ++-- src/environment/local/geomagnetic_field.cpp | 4 +-- src/environment/local/geomagnetic_field.hpp | 2 +- .../atmosphere/harris_priester_model.cpp | 2 +- .../atmosphere/harris_priester_model.hpp | 2 +- src/math_physics/gnss/antex_file_reader.cpp | 4 +-- src/math_physics/gnss/antex_file_reader.hpp | 14 ++++---- src/math_physics/gnss/sp3_file_reader.cpp | 18 +++++----- src/math_physics/gnss/sp3_file_reader.hpp | 28 +++++++-------- .../randomization/global_randomization.hpp | 6 ++-- src/s2e.cpp | 6 +--- .../ground_station/ground_station.cpp | 2 +- .../initialize_monte_carlo_parameters.hpp | 2 +- 36 files changed, 128 insertions(+), 136 deletions(-) diff --git a/src/components/base/sensor_template_functions.hpp b/src/components/base/sensor_template_functions.hpp index 89bcd73ab..469a3e2b1 100644 --- a/src/components/base/sensor_template_functions.hpp +++ b/src/components/base/sensor_template_functions.hpp @@ -22,7 +22,7 @@ Sensor::Sensor(const math::Matrix& scale_factor, const math::Vector& range_to_zero_c_(range_to_zero_c), random_walk_noise_c_(random_walk_step_width_s, random_walk_standard_deviation_c, random_walk_limit_c) { for (size_t i = 0; i < N; i++) { - normal_random_noise_c_[i].SetParameters(0.0, normal_random_standard_deviation_c[i], s2e::randomization::global_randomization.MakeSeed()); + normal_random_noise_c_[i].SetParameters(0.0, normal_random_standard_deviation_c[i], randomization::global_randomization.MakeSeed()); } RangeCheck(); } diff --git a/src/components/ideal/attitude_observer.hpp b/src/components/ideal/attitude_observer.hpp index 0dfd29fe7..410913884 100644 --- a/src/components/ideal/attitude_observer.hpp +++ b/src/components/ideal/attitude_observer.hpp @@ -65,8 +65,8 @@ class AttitudeObserver : public Component, public logger::ILoggable { protected: math::Quaternion observed_quaternion_i2b_ = {0.0, 0.0, 0.0, 1.0}; //!< Observed quaternion - s2e::randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise - s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise + randomization::NormalRand angle_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise const dynamics::attitude::Attitude& attitude_; //!< dynamics::attitude::Attitude information }; diff --git a/src/components/ideal/force_generator.hpp b/src/components/ideal/force_generator.hpp index ac781993d..66fdcadea 100644 --- a/src/components/ideal/force_generator.hpp +++ b/src/components/ideal/force_generator.hpp @@ -102,9 +102,9 @@ class ForceGenerator : public Component, public logger::ILoggable { math::Vector<3> generated_force_rtn_N_{0.0}; //!< Generated force in the RTN frame [N] // Noise - s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise - double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] + randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise + double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** * @fn GenerateDirectionNoiseQuaternion diff --git a/src/components/ideal/orbit_observer.cpp b/src/components/ideal/orbit_observer.cpp index ca3fa09bc..ce68afc76 100644 --- a/src/components/ideal/orbit_observer.cpp +++ b/src/components/ideal/orbit_observer.cpp @@ -14,7 +14,7 @@ OrbitObserver::OrbitObserver(const int prescaler, environment::ClockGenerator* c const math::Vector<6> error_standard_deviation, const dynamics::orbit::Orbit& orbit) : Component(prescaler, clock_generator), noise_frame_(noise_frame), orbit_(orbit) { for (size_t i = 0; i < 6; i++) { - normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], s2e::randomization::global_randomization.MakeSeed()); + normal_random_noise_[i].SetParameters(0.0, error_standard_deviation[i], randomization::global_randomization.MakeSeed()); } } diff --git a/src/components/ideal/orbit_observer.hpp b/src/components/ideal/orbit_observer.hpp index a9216dde2..17997925b 100644 --- a/src/components/ideal/orbit_observer.hpp +++ b/src/components/ideal/orbit_observer.hpp @@ -83,8 +83,8 @@ class OrbitObserver : public Component, public logger::ILoggable { math::Vector<3> observed_position_i_m_{0.0}; //!< Observed position @ inertial frame [m] math::Vector<3> observed_velocity_i_m_s_{0.0}; //!< Observed velocity @ inertial frame [m/s] - NoiseFrame noise_frame_; //!< Noise definition frame - s2e::randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] + NoiseFrame noise_frame_; //!< Noise definition frame + randomization::NormalRand normal_random_noise_[6]; //!< Position and Velocity noise [m, m/s] // Observed variables const dynamics::orbit::Orbit& orbit_; //!< Orbit information diff --git a/src/components/ideal/torque_generator.hpp b/src/components/ideal/torque_generator.hpp index 4ea760c30..726f7aed8 100644 --- a/src/components/ideal/torque_generator.hpp +++ b/src/components/ideal/torque_generator.hpp @@ -80,9 +80,9 @@ class TorqueGenerator : public Component, public logger::ILoggable { math::Vector<3> generated_torque_b_Nm_{0.0}; //!< Generated torque in the body fixed frame [Nm] // Noise - s2e::randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise - s2e::randomization::NormalRand direction_noise_; //!< Normal random for direction noise - double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] + randomization::NormalRand magnitude_noise_; //!< Normal random for magnitude noise + randomization::NormalRand direction_noise_; //!< Normal random for direction noise + double direction_error_standard_deviation_rad_; //!< Standard deviation of direction error [rad] /** * @fn GenerateDirectionNoiseQuaternion diff --git a/src/components/real/aocs/gnss_receiver.cpp b/src/components/real/aocs/gnss_receiver.cpp index 330844dd9..8acf57890 100644 --- a/src/components/real/aocs/gnss_receiver.cpp +++ b/src/components/real/aocs/gnss_receiver.cpp @@ -28,10 +28,9 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) { for (size_t i = 0; i < 3; i++) { - position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], - s2e::randomization::global_randomization.MakeSeed()); + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], randomization::global_randomization.MakeSeed()); velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], - s2e::randomization::global_randomization.MakeSeed()); + randomization::global_randomization.MakeSeed()); } } @@ -50,10 +49,9 @@ GnssReceiver::GnssReceiver(const int prescaler, environment::ClockGenerator* clo gnss_satellites_(gnss_satellites), simulation_time_(simulation_time) { for (size_t i = 0; i < 3; i++) { - position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], - s2e::randomization::global_randomization.MakeSeed()); + position_random_noise_ecef_m_[i].SetParameters(0.0, position_noise_standard_deviation_ecef_m[i], randomization::global_randomization.MakeSeed()); velocity_random_noise_ecef_m_s_[i].SetParameters(0.0, velocity_noise_standard_deviation_ecef_m_s[i], - s2e::randomization::global_randomization.MakeSeed()); + randomization::global_randomization.MakeSeed()); } } diff --git a/src/components/real/aocs/gnss_receiver.hpp b/src/components/real/aocs/gnss_receiver.hpp index 604b11927..7c1b586d0 100644 --- a/src/components/real/aocs/gnss_receiver.hpp +++ b/src/components/real/aocs/gnss_receiver.hpp @@ -110,7 +110,7 @@ class GnssReceiver : public Component, public logger::ILoggable { * @fn GetMeasuredGeodeticPosition * @brief Return Observed position in the LLH frame [m] */ - inline const s2e::geodesy::GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } + inline const geodesy::GeodeticPosition GetMeasuredGeodeticPosition(void) const { return geodetic_position_; } /** * @fn GetMeasuredVelocity_ecef_m_s * @brief Return Observed velocity in the ECEF frame [m/s] @@ -140,11 +140,11 @@ class GnssReceiver : public Component, public logger::ILoggable { AntennaModel antenna_model_; //!< Antenna model // Simple position observation - s2e::randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] - s2e::randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] - math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] - math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] - s2e::geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame + randomization::NormalRand position_random_noise_ecef_m_[3]; //!< Random noise for position at the ECEF frame [m] + randomization::NormalRand velocity_random_noise_ecef_m_s_[3]; //!< Random noise for velocity at the ECEF frame [m] + math::Vector<3> position_ecef_m_{0.0}; //!< Observed position in the ECEF frame [m] + math::Vector<3> velocity_ecef_m_s_{0.0}; //!< Observed velocity in the ECEF frame [m/s] + geodesy::GeodeticPosition geodetic_position_; //!< Observed position in the geodetic frame // Time observation environment::UTC utc_ = {2000, 1, 1, 0, 0, 0.0}; //!< Observed time in UTC [year, month, day, hour, min, sec] diff --git a/src/components/real/aocs/magnetorquer.hpp b/src/components/real/aocs/magnetorquer.hpp index b3f0b6ff1..0ef0a5e4b 100644 --- a/src/components/real/aocs/magnetorquer.hpp +++ b/src/components/real/aocs/magnetorquer.hpp @@ -134,9 +134,9 @@ class Magnetorquer : public Component, public logger::ILoggable { math::Vector max_magnetic_moment_c_Am2_{100.0}; //!< Maximum magnetic moment in the component frame [Am2] math::Vector min_magnetic_moment_c_Am2_{-100.0}; //!< Minimum magnetic moment in the component frame [Am2] - math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] - randomization::RandomWalk random_walk_c_Am2_; //!< Random walk noise - s2e::randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise + math::Vector bias_noise_c_Am2_{0.0}; //!< Constant bias noise in the component frame [Am2] + randomization::RandomWalk random_walk_c_Am2_; //!< Random walk noise + randomization::NormalRand random_noise_c_Am2_[kMtqDimension]; //!< Normal random noise const environment::GeomagneticField* geomagnetic_field_; //!< Geomagnetic environment diff --git a/src/components/real/aocs/reaction_wheel.hpp b/src/components/real/aocs/reaction_wheel.hpp index e59f704b2..39965a692 100644 --- a/src/components/real/aocs/reaction_wheel.hpp +++ b/src/components/real/aocs/reaction_wheel.hpp @@ -182,10 +182,10 @@ class ReactionWheel : public Component, public logger::ILoggable { math::Vector<3> rotation_axis_b_; //!< Wheel rotation vector in the body fixed frame. // Parameters for control delay - const double step_width_s_; //!< step width for ReactionWheelOde [sec] - const double dead_time_s_; //!< dead time [sec] - std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration - s2e::control_utilities::FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] + const double step_width_s_; //!< step width for ReactionWheelOde [sec] + const double dead_time_s_; //!< dead time [sec] + std::vector acceleration_delay_buffer_; //!< Delay buffer for acceleration + control_utilities::FirstOrderLag delayed_acceleration_rad_s2_; //!< Delayed acceleration [rad/s2] // Coasting friction // f_rad_s2 = v_rad_s * coefficients(0) + (v_rad_s)^2 * coefficients(1) + ... diff --git a/src/components/real/aocs/star_sensor.cpp b/src/components/real/aocs/star_sensor.cpp index 1e57e269b..1ce9315a3 100644 --- a/src/components/real/aocs/star_sensor.cpp +++ b/src/components/real/aocs/star_sensor.cpp @@ -27,9 +27,9 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g : Component(prescaler, clock_generator), component_id_(component_id), quaternion_b2c_(quaternion_b2c), - rotation_noise_(s2e::randomization::global_randomization.MakeSeed()), - orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, s2e::randomization::global_randomization.MakeSeed()), - sight_direction_noise_(0.0, standard_deviation_sight_direction, s2e::randomization::global_randomization.MakeSeed()), + rotation_noise_(randomization::global_randomization.MakeSeed()), + orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, randomization::global_randomization.MakeSeed()), + sight_direction_noise_(0.0, standard_deviation_sight_direction, randomization::global_randomization.MakeSeed()), buffer_position_(0), step_time_s_(step_time_s), output_delay_(output_delay), @@ -52,9 +52,9 @@ StarSensor::StarSensor(const int prescaler, environment::ClockGenerator* clock_g : Component(prescaler, clock_generator, power_port), component_id_(component_id), quaternion_b2c_(quaternion_b2c), - rotation_noise_(s2e::randomization::global_randomization.MakeSeed()), - orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, s2e::randomization::global_randomization.MakeSeed()), - sight_direction_noise_(0.0, standard_deviation_sight_direction, s2e::randomization::global_randomization.MakeSeed()), + rotation_noise_(randomization::global_randomization.MakeSeed()), + orthogonal_direction_noise_(0.0, standard_deviation_orthogonal_direction, randomization::global_randomization.MakeSeed()), + sight_direction_noise_(0.0, standard_deviation_sight_direction, randomization::global_randomization.MakeSeed()), buffer_position_(0), step_time_s_(step_time_s), output_delay_(output_delay), diff --git a/src/components/real/aocs/star_sensor.hpp b/src/components/real/aocs/star_sensor.hpp index 99bc47819..0f3f7e321 100644 --- a/src/components/real/aocs/star_sensor.hpp +++ b/src/components/real/aocs/star_sensor.hpp @@ -117,9 +117,9 @@ class StarSensor : public Component, public logger::ILoggable { math::Vector<3> second_orthogonal_direction_c; //!< The second orthogonal direction of sight at component frame // Noise parameters - s2e::randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction - s2e::randomization::NormalRand orthogonal_direction_noise_; //!< Random noise for orthogonal direction of sight - s2e::randomization::NormalRand sight_direction_noise_; //!< Random noise for sight direction + randomization::MinimalStandardLcgWithShuffle rotation_noise_; //!< Randomize object for orthogonal direction + randomization::NormalRand orthogonal_direction_noise_; //!< Random noise for orthogonal direction of sight + randomization::NormalRand sight_direction_noise_; //!< Random noise for sight direction // Delay emulation parameters int max_delay_; //!< Max delay diff --git a/src/components/real/aocs/sun_sensor.cpp b/src/components/real/aocs/sun_sensor.cpp index 0ef97c8db..3745d99b7 100644 --- a/src/components/real/aocs/sun_sensor.cpp +++ b/src/components/real/aocs/sun_sensor.cpp @@ -5,11 +5,10 @@ #include "sun_sensor.hpp" -#include -#include -using s2e::randomization::NormalRand; #include +#include #include +#include #include using namespace std; @@ -48,7 +47,7 @@ SunSensor::SunSensor(const int prescaler, environment::ClockGenerator* clock_gen void SunSensor::Initialize(const double random_noise_standard_deviation_rad, const double bias_noise_standard_deviation_rad) { // Bias - NormalRand nr(0.0, bias_noise_standard_deviation_rad, s2e::randomization::global_randomization.MakeSeed()); + randomization::NormalRand nr(0.0, bias_noise_standard_deviation_rad, randomization::global_randomization.MakeSeed()); bias_noise_alpha_rad_ += nr; bias_noise_beta_rad_ += nr; diff --git a/src/components/real/aocs/sun_sensor.hpp b/src/components/real/aocs/sun_sensor.hpp index e235bc618..33dd9c5fd 100644 --- a/src/components/real/aocs/sun_sensor.hpp +++ b/src/components/real/aocs/sun_sensor.hpp @@ -103,10 +103,10 @@ class SunSensor : public Component, public logger::ILoggable { double detectable_angle_rad_; //!< half angle (>0) [rad] bool sun_detected_flag_ = false; //!< Sun detected flag // Noise parameters - s2e::randomization::NormalRand random_noise_alpha_; //!< Normal random for alpha angle - s2e::randomization::NormalRand random_noise_beta_; //!< Normal random for beta angle - double bias_noise_alpha_rad_ = 0.0; //!< Constant bias for alpha angle (Value is calculated by random number generator) - double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) + randomization::NormalRand random_noise_alpha_; //!< Normal random for alpha angle + randomization::NormalRand random_noise_beta_; //!< Normal random for beta angle + double bias_noise_alpha_rad_ = 0.0; //!< Constant bias for alpha angle (Value is calculated by random number generator) + double bias_noise_beta_rad_ = 0.0; //!< Constant bias for beta angle (Value is calculated by random number generator) // Measured variables const environment::SolarRadiationPressureEnvironment* srp_environment_; //!< Solar Radiation Pressure environment diff --git a/src/disturbances/geopotential.cpp b/src/disturbances/geopotential.cpp index 966a5497f..cb6ba222c 100644 --- a/src/disturbances/geopotential.cpp +++ b/src/disturbances/geopotential.cpp @@ -45,7 +45,7 @@ Geopotential::Geopotential(const int degree, const std::string file_path, const } } // Initialize GravityPotential - geopotential_ = s2e::gravity::GravityPotential(degree, c_, s_); + geopotential_ = gravity::GravityPotential(degree, c_, s_); } bool Geopotential::ReadCoefficientsEgm96(std::string file_name) { diff --git a/src/disturbances/lunar_gravity_field.cpp b/src/disturbances/lunar_gravity_field.cpp index dd94cc74c..182b4472d 100644 --- a/src/disturbances/lunar_gravity_field.cpp +++ b/src/disturbances/lunar_gravity_field.cpp @@ -48,7 +48,7 @@ LunarGravityField::LunarGravityField(const int degree, const std::string file_pa } } // Initialize GravityPotential - lunar_potential_ = s2e::gravity::GravityPotential(degree, c_, s_, gravity_constants_km3_s2_ * 1e9, reference_radius_km_ * 1e3); + lunar_potential_ = gravity::GravityPotential(degree, c_, s_, gravity_constants_km3_s2_ * 1e9, reference_radius_km_ * 1e3); } bool LunarGravityField::ReadCoefficientsGrgm1200a(std::string file_name) { diff --git a/src/disturbances/lunar_gravity_field.hpp b/src/disturbances/lunar_gravity_field.hpp index 2faf53420..04727d670 100644 --- a/src/disturbances/lunar_gravity_field.hpp +++ b/src/disturbances/lunar_gravity_field.hpp @@ -65,7 +65,7 @@ class LunarGravityField : public Disturbance { virtual std::string GetLogValue() const; private: - s2e::gravity::GravityPotential lunar_potential_; + gravity::GravityPotential lunar_potential_; double reference_radius_km_; double gravity_constants_km3_s2_; size_t degree_; //!< Maximum degree setting to calculate the geo-potential diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index f39f3539b..ad48b6bed 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -36,8 +36,8 @@ void MagneticDisturbance::CalcRMM() { static math::Vector<3> random_walk_std_dev(residual_magnetic_moment_.GetRandomWalkStandardDeviation_Am2()); static math::Vector<3> random_walk_limit(residual_magnetic_moment_.GetRandomWalkLimit_Am2()); static randomization::RandomWalk<3> random_walk(0.1, random_walk_std_dev, random_walk_limit); // [FIXME] step width is constant - static s2e::randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), - s2e::randomization::global_randomization.MakeSeed()); + static randomization::NormalRand normal_random(0.0, residual_magnetic_moment_.GetRandomNoiseStandardDeviation_Am2(), + randomization::global_randomization.MakeSeed()); rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); for (int i = 0; i < 3; ++i) { diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp index dbfd569d4..bcda0d5c2 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.cpp @@ -17,7 +17,7 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration( const std::string& simulation_object_name) : Attitude(inertia_tensor_kgm2, simulation_object_name), numerical_integrator_(propagation_step_s, attitude_ode_, - s2e::numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file + numerical_integration::NumericalIntegrationMethod::kRk4) { //!< TODO: Set NumericalIntegrationMethod in *.ini file angular_velocity_b_rad_s_ = angular_velocity_b_rad_s; quaternion_i2b_ = quaternion_i2b; torque_b_Nm_ = torque_b_Nm; diff --git a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp index 0484e7c54..f5f7747fa 100644 --- a/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp +++ b/src/dynamics/attitude/attitude_with_cantilever_vibration.hpp @@ -76,7 +76,7 @@ class AttitudeWithCantileverVibration : public Attitude { math::Vector<3> euler_angular_cantilever_rad_{0.0}; //!< Euler angle of the cantilever with respect to the body frame [rad/s] AttitudeWithCantileverVibrationOde attitude_ode_; - s2e::numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; + numerical_integration::NumericalIntegratorManager<13> numerical_integrator_; }; } // namespace s2e::dynamics::attitude diff --git a/src/environment/global/gnss_satellites.cpp b/src/environment/global/gnss_satellites.cpp index 17219887c..25724b5e2 100644 --- a/src/environment/global/gnss_satellites.cpp +++ b/src/environment/global/gnss_satellites.cpp @@ -21,7 +21,7 @@ namespace s2e::environment { const size_t kNumberOfInterpolation = 9; -void GnssSatellites::Initialize(const std::vector& sp3_files, const s2e::time_system::EpochTime start_time) { +void GnssSatellites::Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time) { sp3_files_ = sp3_files; current_epoch_time_ = start_time; @@ -39,10 +39,10 @@ void GnssSatellites::Initialize(const std::vector& sp3_files, con if (nearest_epoch_id >= half_interpolation_number) { reference_interpolation_id_ = nearest_epoch_id - half_interpolation_number; } - reference_time_ = s2e::time_system::EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); + reference_time_ = time_system::EpochTime(initial_sp3_file.GetEpochData(reference_interpolation_id_)); // Initialize orbit - orbit_.assign(number_of_calculated_gnss_satellites_, s2e::orbit::InterpolationOrbit(kNumberOfInterpolation)); + orbit_.assign(number_of_calculated_gnss_satellites_, orbit::InterpolationOrbit(kNumberOfInterpolation)); // Initialize clock std::vector temp; @@ -62,9 +62,9 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { // Get time UTC current_utc = simulation_time.GetCurrentUtc(); - s2e::time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, - (size_t)current_utc.minute, current_utc.second); - current_epoch_time_ = s2e::time_system::EpochTime(current_date_time); + time_system::DateTime current_date_time((size_t)current_utc.year, (size_t)current_utc.month, (size_t)current_utc.day, (size_t)current_utc.hour, + (size_t)current_utc.minute, current_utc.second); + current_epoch_time_ = time_system::EpochTime(current_date_time); // Check interpolation update double diff_s = current_epoch_time_.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); @@ -76,10 +76,10 @@ void GnssSatellites::Update(const SimulationTime& simulation_time) { return; } -math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { +math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time) const { if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return math::Vector<3>(0.0); - s2e::time_system::EpochTime target_time; + time_system::EpochTime target_time; if (time.GetTime_s() == 0) { target_time = current_epoch_time_; @@ -94,10 +94,10 @@ math::Vector<3> GnssSatellites::GetPosition_ecef_m(const size_t gnss_satellite_i return orbit_[gnss_satellite_id].CalcPositionWithTrigonometric(diff_s, math::tau / kOrbitalPeriodCorrection_s); } -double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time) const { +double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time) const { if (gnss_satellite_id > number_of_calculated_gnss_satellites_) return 0.0; - s2e::time_system::EpochTime target_time; + time_system::EpochTime target_time; if (time.GetTime_s() == 0) { target_time = current_epoch_time_; @@ -111,9 +111,9 @@ double GnssSatellites::GetClock_s(const size_t gnss_satellite_id, const s2e::tim return clock_[gnss_satellite_id].CalcPolynomial(diff_s) * 1e-6; } -bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const s2e::time_system::EpochTime current_time) { +bool GnssSatellites::GetCurrentSp3File(Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time) { for (size_t i = 0; i < sp3_files_.size(); i++) { - s2e::time_system::EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); + time_system::EpochTime sp3_start_time(sp3_files_[i].GetStartEpochDateTime()); double diff_s = current_time.GetTimeWithFraction_s() - sp3_start_time.GetTimeWithFraction_s(); if (diff_s < 0.0) { // Error @@ -131,7 +131,7 @@ bool GnssSatellites::UpdateInterpolationInformation() { Sp3FileReader sp3_file = sp3_files_[sp3_file_id_]; for (size_t gnss_id = 0; gnss_id < number_of_calculated_gnss_satellites_; gnss_id++) { - s2e::time_system::EpochTime sp3_time = s2e::time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); + time_system::EpochTime sp3_time = time_system::EpochTime(sp3_file.GetEpochData(reference_interpolation_id_)); double time_diff_s = sp3_time.GetTimeWithFraction_s() - reference_time_.GetTimeWithFraction_s(); math::Vector<3> sp3_position_m = 1000.0 * sp3_file.GetSatellitePosition_km(reference_interpolation_id_, gnss_id); @@ -228,10 +228,10 @@ GnssSatellites* InitGnssSatellites(const std::string file_name, const EarthRotat } // - s2e::time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), - (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), - (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); - s2e::time_system::EpochTime start_epoch_time(start_date_time); + time_system::DateTime start_date_time((size_t)simulation_time.GetStartYear(), (size_t)simulation_time.GetStartMonth(), + (size_t)simulation_time.GetStartDay(), (size_t)simulation_time.GetStartHour(), + (size_t)simulation_time.GetStartMinute(), simulation_time.GetStartSecond()); + time_system::EpochTime start_epoch_time(start_date_time); gnss_satellites->Initialize(sp3_file_readers, start_epoch_time); return gnss_satellites; diff --git a/src/environment/global/gnss_satellites.hpp b/src/environment/global/gnss_satellites.hpp index c88f86a69..065dc5840 100644 --- a/src/environment/global/gnss_satellites.hpp +++ b/src/environment/global/gnss_satellites.hpp @@ -56,7 +56,7 @@ class GnssSatellites : public logger::ILoggable { * @param [in] sp3_files: List of SP3 files * @param [in] start_time: The simulation start time */ - void Initialize(const std::vector& sp3_files, const s2e::time_system::EpochTime start_time); + void Initialize(const std::vector& sp3_files, const time_system::EpochTime start_time); /** * @fn IsCalcEnabled @@ -89,8 +89,7 @@ class GnssSatellites : public logger::ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite position at ECEF frame at the time. Or return zero vector when the arguments are out of range. */ - math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, - const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; + math::Vector<3> GetPosition_ecef_m(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; /** * @fn GetGetClock_s @@ -99,7 +98,7 @@ class GnssSatellites : public logger::ILoggable { * @param [in] time: Target time to get the GNSS satellite. When the argument is not set, the last updated time is used for the calculation. * @return GNSS satellite clock offset at the time. Or return zero when the arguments are out of range. */ - double GetClock_s(const size_t gnss_satellite_id, const s2e::time_system::EpochTime time = s2e::time_system::EpochTime(0, 0.0)) const; + double GetClock_s(const size_t gnss_satellite_id, const time_system::EpochTime time = time_system::EpochTime(0, 0.0)) const; // Override logger::ILoggable /** @@ -116,15 +115,15 @@ class GnssSatellites : public logger::ILoggable { private: bool is_calc_enabled_ = false; //!< Flag to manage the GNSS satellite position calculation - std::vector sp3_files_; //!< List of SP3 files - size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites - size_t sp3_file_id_; //!< Current SP3 file ID - s2e::time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling - size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation - s2e::time_system::EpochTime current_epoch_time_; //!< The last updated time + std::vector sp3_files_; //!< List of SP3 files + size_t number_of_calculated_gnss_satellites_; //!< Number of calculated GNSS satellites + size_t sp3_file_id_; //!< Current SP3 file ID + time_system::EpochTime reference_time_; //!< Reference start time of the SP3 handling + size_t reference_interpolation_id_ = 0; //!< Reference epoch ID of the interpolation + time_system::EpochTime current_epoch_time_; //!< The last updated time - std::vector orbit_; //!< GNSS satellite orbit with interpolation - std::vector clock_; //!< GNSS satellite clock offset with interpolation + std::vector orbit_; //!< GNSS satellite orbit with interpolation + std::vector clock_; //!< GNSS satellite clock offset with interpolation // References const EarthRotation& earth_rotation_; //!< Earth rotation @@ -136,7 +135,7 @@ class GnssSatellites : public logger::ILoggable { * @param [in] current_time: Target time * @return true means no error, false means the time argument is out of range */ - bool GetCurrentSp3File(s2e::gnss::Sp3FileReader& current_sp3_file, const s2e::time_system::EpochTime current_time); + bool GetCurrentSp3File(gnss::Sp3FileReader& current_sp3_file, const time_system::EpochTime current_time); /** * @fn UpdateInterpolationInformation diff --git a/src/environment/global/moon_rotation.cpp b/src/environment/global/moon_rotation.cpp index d2f93c659..c2b107b63 100644 --- a/src/environment/global/moon_rotation.cpp +++ b/src/environment/global/moon_rotation.cpp @@ -21,7 +21,7 @@ void MoonRotation::Update(const SimulationTime& simulation_time) { if (mode_ == MoonRotationMode::kSimple) { math::Vector<3> moon_position_eci_m = celestial_information_.GetPositionFromSelectedBody_i_m("MOON", "EARTH"); math::Vector<3> moon_velocity_eci_m_s = celestial_information_.GetVelocityFromSelectedBody_i_m_s("MOON", "EARTH"); - dcm_j2000_to_mcmf_ = s2e::planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); + dcm_j2000_to_mcmf_ = planet_rotation::CalcDcmEciToPrincipalAxis(moon_position_eci_m, moon_velocity_eci_m_s); } else if (mode_ == MoonRotationMode::kIauMoon) { ConstSpiceChar from[] = "J2000"; ConstSpiceChar to[] = "IAU_MOON"; diff --git a/src/environment/local/atmosphere.cpp b/src/environment/local/atmosphere.cpp index 0e31d6b17..74b232364 100644 --- a/src/environment/local/atmosphere.cpp +++ b/src/environment/local/atmosphere.cpp @@ -58,7 +58,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const dynamic if (model_ == "STANDARD") { // Standard model double altitude_m = orbit.GetGeodeticPosition().GetAltitude_m(); - air_density_kg_m3_ = s2e::atmosphere::CalcAirDensityWithSimpleModel(altitude_m); + air_density_kg_m3_ = atmosphere::CalcAirDensityWithSimpleModel(altitude_m); } else if (model_ == "NRLMSISE00") { // NRLMSISE00 model double lat_rad = orbit.GetGeodeticPosition().GetLatitude_rad(); @@ -69,7 +69,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const dynamic } else if (model_ == "HARRIS_PRIESTER") { // Harris-Priester math::Vector<3> sun_direction_eci = local_celestial_information_->GetGlobalInformation().GetPositionFromCenter_i_m("SUN").CalcNormalizedVector(); - air_density_kg_m3_ = s2e::atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); + air_density_kg_m3_ = atmosphere::CalcAirDensityWithHarrisPriester_kg_m3(orbit.GetGeodeticPosition(), sun_direction_eci); } else { // No suitable model return air_density_kg_m3_ = 0.0; @@ -80,7 +80,7 @@ double Atmosphere::CalcAirDensity_kg_m3(const double decimal_year, const dynamic double Atmosphere::AddNoise(const double rho_kg_m3) { // RandomWalk rw(rho_kg_m3*rw_stepwidth_,rho_kg_m3*rw_stddev_,rho_kg_m3*rw_limit_); - s2e::randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, s2e::randomization::global_randomization.MakeSeed()); + randomization::NormalRand nr(0.0, rho_kg_m3 * gauss_standard_deviation_rate_, randomization::global_randomization.MakeSeed()); double nrd = nr; return rho_kg_m3 + nrd; diff --git a/src/environment/local/geomagnetic_field.cpp b/src/environment/local/geomagnetic_field.cpp index ba49d575d..8fff876a9 100644 --- a/src/environment/local/geomagnetic_field.cpp +++ b/src/environment/local/geomagnetic_field.cpp @@ -24,7 +24,7 @@ GeomagneticField::GeomagneticField(const std::string igrf_file_name, const doubl set_file_path(igrf_file_name_.c_str()); } -void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const s2e::geodesy::GeodeticPosition position, +void GeomagneticField::CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, const math::Quaternion quaternion_i2b) { if (!IsCalcEnabled) return; @@ -46,7 +46,7 @@ void GeomagneticField::AddNoise(double* magnetic_field_array_i_nT) { static math::Vector<3> limit(random_walk_limit_nT_); static randomization::RandomWalk<3> random_walk(0.1, standard_deviation, limit); - static s2e::randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, s2e::randomization::global_randomization.MakeSeed()); + static randomization::NormalRand white_noise(0.0, white_noise_standard_deviation_nT_, randomization::global_randomization.MakeSeed()); for (int i = 0; i < 3; ++i) { magnetic_field_array_i_nT[i] += random_walk[i] + white_noise; diff --git a/src/environment/local/geomagnetic_field.hpp b/src/environment/local/geomagnetic_field.hpp index 0317952f3..1f38c03c6 100644 --- a/src/environment/local/geomagnetic_field.hpp +++ b/src/environment/local/geomagnetic_field.hpp @@ -45,7 +45,7 @@ class GeomagneticField : public logger::ILoggable { * @param [in] position: Position of target point to calculate the magnetic field * @param [in] quaternion_i2b: Spacecraft attitude quaternion from the inertial frame to the body fixed frame */ - void CalcMagneticField(const double decimal_year, const double sidereal_day, const s2e::geodesy::GeodeticPosition position, + void CalcMagneticField(const double decimal_year, const double sidereal_day, const geodesy::GeodeticPosition position, const math::Quaternion quaternion_i2b); /** diff --git a/src/math_physics/atmosphere/harris_priester_model.cpp b/src/math_physics/atmosphere/harris_priester_model.cpp index 09d7a2143..6973caf98 100644 --- a/src/math_physics/atmosphere/harris_priester_model.cpp +++ b/src/math_physics/atmosphere/harris_priester_model.cpp @@ -28,7 +28,7 @@ double CalcScaleHeight_km(const std::map::const_iterator density */ double CalcApexDensity_g_km3(const std::map::const_iterator density_itr, const double altitude_km); -double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7, const double exponent_parameter) { // Altitude double altitude_km = geodetic_position.GetAltitude_m() / 1000.0; diff --git a/src/math_physics/atmosphere/harris_priester_model.hpp b/src/math_physics/atmosphere/harris_priester_model.hpp index 266682c88..8b64550ad 100644 --- a/src/math_physics/atmosphere/harris_priester_model.hpp +++ b/src/math_physics/atmosphere/harris_priester_model.hpp @@ -20,7 +20,7 @@ namespace s2e::atmosphere { * @param [in] exponent_parameter: n in the equation. n=2 for low inclination orbit and n=6 for polar orbit. * @return Atmospheric density [kg/m^3] */ -double CalcAirDensityWithHarrisPriester_kg_m3(const s2e::geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, +double CalcAirDensityWithHarrisPriester_kg_m3(const geodesy::GeodeticPosition geodetic_position, const math::Vector<3> sun_direction_eci, const double f10_7 = 100.0, const double exponent_parameter = 4); } // namespace s2e::atmosphere diff --git a/src/math_physics/gnss/antex_file_reader.cpp b/src/math_physics/gnss/antex_file_reader.cpp index e3008d6b0..4a3c74f23 100644 --- a/src/math_physics/gnss/antex_file_reader.cpp +++ b/src/math_physics/gnss/antex_file_reader.cpp @@ -192,11 +192,11 @@ AntexPhaseCenterData AntexFileReader::ReadPhaseCenterData(std::ifstream& antex_f return phase_center_data; } -s2e::time_system::DateTime AntexFileReader::ReadDateTime(std::string line) { +time_system::DateTime AntexFileReader::ReadDateTime(std::string line) { size_t year, month, day, hour, minute; double second; sscanf(line.c_str(), "%zu %2zu %2zu %2zu %2zu %10lf", &year, &month, &day, &hour, &minute, &second); - return s2e::time_system::DateTime(year, month, day, hour, minute, second); + return time_system::DateTime(year, month, day, hour, minute, second); } } // namespace s2e::gnss diff --git a/src/math_physics/gnss/antex_file_reader.hpp b/src/math_physics/gnss/antex_file_reader.hpp index 67efe3133..b463c5f4d 100644 --- a/src/math_physics/gnss/antex_file_reader.hpp +++ b/src/math_physics/gnss/antex_file_reader.hpp @@ -203,12 +203,12 @@ class AntexSatelliteData { * @fn SetValidStartTime * @param[in] valid_start_time: Valid start time */ - inline void SetValidStartTime(const s2e::time_system::DateTime valid_start_time) { valid_start_time_ = valid_start_time; }; + inline void SetValidStartTime(const time_system::DateTime valid_start_time) { valid_start_time_ = valid_start_time; }; /** * @fn SetValidEndTime * @param[in] valid_end_time: Valid end time */ - inline void SetValidEndTime(const s2e::time_system::DateTime valid_end_time) { valid_end_time_ = valid_end_time; }; + inline void SetValidEndTime(const time_system::DateTime valid_end_time) { valid_end_time_ = valid_end_time; }; /** * @fn SetNumberOfFrequency * @param[in] number_of_frequency: Number of frequency @@ -235,12 +235,12 @@ class AntexSatelliteData { * @fn GetValidStartTime * @return Valid start time */ - inline s2e::time_system::DateTime GetValidStartTime() const { return valid_start_time_; }; + inline time_system::DateTime GetValidStartTime() const { return valid_start_time_; }; /** * @fn GetValidEndTime * @return Valid end time */ - inline s2e::time_system::DateTime GetValidEndTime() const { return valid_end_time_; }; + inline time_system::DateTime GetValidEndTime() const { return valid_end_time_; }; /** * @fn GetNumberOfFrequency * @return Number of frequency @@ -256,8 +256,8 @@ class AntexSatelliteData { private: std::string antenna_type_; //!< Antenna type std::string serial_number_; //!< Serial number or satellite code - s2e::time_system::DateTime valid_start_time_; //!< Valid start time - s2e::time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) + time_system::DateTime valid_start_time_; //!< Valid start time + time_system::DateTime valid_end_time_; //!< Valid end time (The latest data does not have the end time) size_t number_of_frequency_ = 1; //!< Number of frequency std::vector phase_center_data_; //!< Phase center data for each frequency }; @@ -342,7 +342,7 @@ class AntexFileReader { * @param[in] line: A single line in ANTEX file * @return Read date time */ - s2e::time_system::DateTime ReadDateTime(std::string line); + time_system::DateTime ReadDateTime(std::string line); }; } // namespace s2e::gnss diff --git a/src/math_physics/gnss/sp3_file_reader.cpp b/src/math_physics/gnss/sp3_file_reader.cpp index aa857965a..2ae136626 100644 --- a/src/math_physics/gnss/sp3_file_reader.cpp +++ b/src/math_physics/gnss/sp3_file_reader.cpp @@ -15,9 +15,9 @@ namespace s2e::gnss { Sp3FileReader::Sp3FileReader(const std::string file_name) { ReadFile(file_name); } -s2e::time_system::DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { +time_system::DateTime Sp3FileReader::GetEpochData(const size_t epoch_id) const { if (epoch_id > epoch_.size()) { - s2e::time_system::DateTime zero; + time_system::DateTime zero; return zero; } return epoch_[epoch_id]; @@ -69,7 +69,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { size_t year, month, day, hour, minute; double second; sscanf(line.substr(3, 28).c_str(), "%zu %2zu %2zu %2zu %2zu %12lf", &year, &month, &day, &hour, &minute, &second); - epoch_.push_back(s2e::time_system::DateTime(year, month, day, hour, minute, second)); + epoch_.push_back(time_system::DateTime(year, month, day, hour, minute, second)); // Orbit and Clock information for (size_t satellite_id = 0; satellite_id < header_.number_of_satellites_; satellite_id++) { @@ -117,7 +117,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { } // Test - s2e::time_system::DateTime test = epoch_[0]; + time_system::DateTime test = epoch_[0]; test = epoch_[1]; std::vector test_p = position_clock_[0]; test_p = position_clock_[1]; @@ -126,7 +126,7 @@ bool Sp3FileReader::ReadFile(const std::string file_name) { return true; } -size_t Sp3FileReader::SearchNearestEpochId(const s2e::time_system::EpochTime time) { +size_t Sp3FileReader::SearchNearestEpochId(const time_system::EpochTime time) { size_t nearest_epoch_id = 0; // Get header info @@ -134,10 +134,10 @@ size_t Sp3FileReader::SearchNearestEpochId(const s2e::time_system::EpochTime tim const double interval_s = header_.epoch_interval_s_; // Check range - s2e::time_system::EpochTime start_epoch(epoch_[0]); + time_system::EpochTime start_epoch(epoch_[0]); if (start_epoch > time) { nearest_epoch_id = 0; - } else if ((s2e::time_system::EpochTime)(epoch_[num_epoch - 1]) < time) { + } else if ((time_system::EpochTime)(epoch_[num_epoch - 1]) < time) { nearest_epoch_id = num_epoch - 1; } else { // Calc nearest point double diff_s = time.GetTimeWithFraction_s() - start_epoch.GetTimeWithFraction_s(); @@ -171,7 +171,7 @@ size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { size_t year, month, day, hour, minute; double second; sscanf(line.substr(3, 28).c_str(), "%zu %2zu %2zu %2zu %2zu %12lf", &year, &month, &day, &hour, &minute, &second); - header_.start_epoch_ = s2e::time_system::DateTime(year, month, day, hour, minute, second); + header_.start_epoch_ = time_system::DateTime(year, month, day, hour, minute, second); header_.number_of_epoch_ = std::stoi(line.substr(32, 7)); header_.used_data_ = line.substr(40, 5); header_.coordinate_system_ = line.substr(46, 5); @@ -199,7 +199,7 @@ size_t Sp3FileReader::ReadHeader(std::ifstream& sp3_file) { return 0; } // Read contents - header_.start_gps_time_ = s2e::time_system::GpsTime(std::stoi(line.substr(3, 4)), std::stod(line.substr(8, 15))); + header_.start_gps_time_ = time_system::GpsTime(std::stoi(line.substr(3, 4)), std::stod(line.substr(8, 15))); header_.epoch_interval_s_ = std::stod(line.substr(24, 14)); header_.start_time_mjday_ = std::stoi(line.substr(39, 5)); header_.start_time_mjday_fractional_day_ = std::stod(line.substr(45, 15)); diff --git a/src/math_physics/gnss/sp3_file_reader.hpp b/src/math_physics/gnss/sp3_file_reader.hpp index e551e186d..4e98933aa 100644 --- a/src/math_physics/gnss/sp3_file_reader.hpp +++ b/src/math_physics/gnss/sp3_file_reader.hpp @@ -51,16 +51,16 @@ enum class Sp3OrbitType { struct Sp3Header { // 1st line information // version -> not implemented yet - Sp3Mode mode_; //!< position or velocity - s2e::time_system::DateTime start_epoch_; //!< Time of start epoch - size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file - std::string used_data_; //!< Used data to generate the SP3 file - std::string coordinate_system_; //!< Coordinate system for the position and velocity data - Sp3OrbitType orbit_type_; //!< Orbit type - std::string agency_name_; //!< Agency name who generates the SP3 file + Sp3Mode mode_; //!< position or velocity + time_system::DateTime start_epoch_; //!< Time of start epoch + size_t number_of_epoch_ = 0; //!< Number of epoch in the SP3 file + std::string used_data_; //!< Used data to generate the SP3 file + std::string coordinate_system_; //!< Coordinate system for the position and velocity data + Sp3OrbitType orbit_type_; //!< Orbit type + std::string agency_name_; //!< Agency name who generates the SP3 file // 2nd line information - s2e::time_system::GpsTime start_gps_time_; //!< Start time of orbit + time_system::GpsTime start_gps_time_; //!< Start time of orbit double epoch_interval_s_ = 1.0; //!< Epoch interval (0.0, 100000.0) size_t start_time_mjday_; //!< Start time of the orbit data (44244 = 6th Jan. 1980) [Modified Julian day] double start_time_mjday_fractional_day_ = 0.0; //!< Fractional part of the start time [0.0, 1.0) [day] @@ -172,19 +172,19 @@ class Sp3FileReader { inline Sp3Header GetHeader() const { return header_; } inline size_t GetNumberOfEpoch() const { return header_.number_of_epoch_; } inline size_t GetNumberOfSatellites() const { return header_.number_of_satellites_; } - inline s2e::time_system::DateTime GetStartEpochDateTime() const { return header_.start_epoch_; } - inline s2e::time_system::GpsTime GetStartEpochGpsTime() const { return header_.start_gps_time_; } + inline time_system::DateTime GetStartEpochDateTime() const { return header_.start_epoch_; } + inline time_system::GpsTime GetStartEpochGpsTime() const { return header_.start_gps_time_; } // Data - s2e::time_system::DateTime GetEpochData(const size_t epoch_id) const; + time_system::DateTime GetEpochData(const size_t epoch_id) const; Sp3PositionClock GetPositionClock(const size_t epoch_id, const size_t satellite_id); double GetSatelliteClockOffset(const size_t epoch_id, const size_t satellite_id); math::Vector<3> GetSatellitePosition_km(const size_t epoch_id, const size_t satellite_id); - size_t SearchNearestEpochId(const s2e::time_system::EpochTime time); + size_t SearchNearestEpochId(const time_system::EpochTime time); private: - Sp3Header header_; //!< SP3 header information - std::vector epoch_; //!< Epoch data list + Sp3Header header_; //!< SP3 header information + std::vector epoch_; //!< Epoch data list // Orbit and clock data (Use as position_clock_[satellite_id][epoch_id]) std::map> position_clock_; //!< Position and Clock data diff --git a/src/math_physics/randomization/global_randomization.hpp b/src/math_physics/randomization/global_randomization.hpp index df464b974..5220420cf 100644 --- a/src/math_physics/randomization/global_randomization.hpp +++ b/src/math_physics/randomization/global_randomization.hpp @@ -34,9 +34,9 @@ class GlobalRandomization { long MakeSeed(); private: - static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed - s2e::randomization::MinimalStandardLcg base_randomizer_; //!< Base of global randomization - long seed_; //!< Seed of global randomization + static const unsigned int kMaxSeed = 0xffffffff; //!< Maximum value of seed + MinimalStandardLcg base_randomizer_; //!< Base of global randomization + long seed_; //!< Seed of global randomization }; extern GlobalRandomization global_randomization; //!< Global randomization diff --git a/src/s2e.cpp b/src/s2e.cpp index 3c9da8fa6..f0d19356e 100644 --- a/src/s2e.cpp +++ b/src/s2e.cpp @@ -23,8 +23,6 @@ // #include "interface/hils/COSMOSWrapper.h" // #include "interface/hils/HardwareMessage.h" -namespace s2e { - void print_path(std::string path) { #ifdef WIN32 std::cout << path << std::endl; @@ -71,7 +69,7 @@ int main(int argc, char *argv[]) std::cout << "\tIni file: "; print_path(ini_file); - auto simulation_case = sample::SampleCase(ini_file); + auto simulation_case = s2e::sample::SampleCase(ini_file); simulation_case.Initialize(); simulation_case.Main(); @@ -81,5 +79,3 @@ int main(int argc, char *argv[]) return EXIT_SUCCESS; } - -} // namespace s2e diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index f0d233936..f03e018eb 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -37,7 +37,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con double latitude_deg = conf.ReadDouble(Section, "latitude_deg"); double longitude_deg = conf.ReadDouble(Section, "longitude_deg"); double height_m = conf.ReadDouble(Section, "height_m"); - geodetic_position_ = s2e::geodesy::GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); + geodetic_position_ = geodesy::GeodeticPosition(latitude_deg * math::deg_to_rad, longitude_deg * math::deg_to_rad, height_m); position_ecef_m_ = geodetic_position_.CalcEcefPosition(); elevation_limit_angle_deg_ = conf.ReadDouble(Section, "elevation_limit_angle_deg"); diff --git a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp index c44529766..e4bc3469f 100644 --- a/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp +++ b/src/simulation/monte_carlo_simulation/initialize_monte_carlo_parameters.hpp @@ -33,7 +33,7 @@ class InitializedMonteCarloParameters { kCircularNormalNormal, //!< r and θ follow normal distribution in Circular frame kSphericalNormalUniformUniform, //!< r follows normal distribution, and θ and φ follow uniform distribution in Spherical frame kSphericalNormalNormal, //!< r and θ follow normal distribution, and mean vector angle φ follows uniform distribution [0,2*pi] - kQuaternionUniform, //!< Perfectly Randomized s2e::math::Quaternion + kQuaternionUniform, //!< Perfectly Randomized Quaternion kQuaternionNormal, //!< Angle from the default quaternion θ follows normal distribution }; From 30b06647f7bfeb5b67db4bbb1d0c38ae494fd80d Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Tue, 1 Oct 2024 23:51:43 +0900 Subject: [PATCH 451/456] Fix namespace in test --- .../gravity/test_gravity_potential.cpp | 48 +++---- src/math_physics/math/test_interpolation.cpp | 30 ++-- src/math_physics/math/test_matrix.cpp | 60 ++++---- src/math_physics/math/test_matrix_vector.cpp | 10 +- src/math_physics/math/test_quaternion.cpp | 134 +++++++++--------- src/math_physics/math/test_s2e_math.cpp | 14 +- src/math_physics/math/test_vector.cpp | 94 ++++++------ .../test_runge_kutta.cpp | 86 +++++------ .../orbit/test_interpolation_orbit.cpp | 4 +- 9 files changed, 239 insertions(+), 241 deletions(-) diff --git a/src/math_physics/gravity/test_gravity_potential.cpp b/src/math_physics/gravity/test_gravity_potential.cpp index 0ac2fa038..0dd54376e 100644 --- a/src/math_physics/gravity/test_gravity_potential.cpp +++ b/src/math_physics/gravity/test_gravity_potential.cpp @@ -6,8 +6,6 @@ #include "gravity_potential.hpp" -using namespace s2e::gravity; - /** * @brief Test for Acceleration calculation */ @@ -22,11 +20,11 @@ TEST(GravityPotential, Acceleration) { s_.assign(degree + 1, std::vector(degree + 1, 1.0)); // Initialize GravityPotential - GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); + s2e::gravity::GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Acceleration Calculation check - math::Vector<3> position_xcxf_m; - math::Vector<3> acceleration_xcxf_m_s2; + s2e::math::Vector<3> position_xcxf_m; + s2e::math::Vector<3> acceleration_xcxf_m_s2; const double accuracy = 1.0e-3; // Calc Acceleration @@ -64,11 +62,11 @@ TEST(GravityPotential, PartialDerivative1) { s_.assign(degree + 1, std::vector(degree + 1, 1.0)); // Initialize GravityPotential - GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); + s2e::gravity::GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - math::Vector<3> position_xcxf_m; - math::Matrix<3, 3> partial_derivative_xcxf_s2; + s2e::math::Vector<3> position_xcxf_m; + s2e::math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -79,22 +77,22 @@ TEST(GravityPotential, PartialDerivative1) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + s2e::math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - math::Vector<3> position_1_xcxf_m = position_xcxf_m; - math::Vector<3> position_2_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_1_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + s2e::math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + s2e::math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + s2e::math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } } // Compare numerical and analytical calculation - math::Matrix<3, 3> diff; + s2e::math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); @@ -117,11 +115,11 @@ TEST(GravityPotential, PartialDerivative2) { s_.assign(degree + 1, std::vector(degree + 1, 1.0)); // Initialize GravityPotential - GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); + s2e::gravity::GravityPotential gravity_potential_(degree, c_, s_, 1.0, 1.0); // Calculation check - math::Vector<3> position_xcxf_m; - math::Matrix<3, 3> partial_derivative_xcxf_s2; + s2e::math::Vector<3> position_xcxf_m; + s2e::math::Matrix<3, 3> partial_derivative_xcxf_s2; const double accuracy = 1.0e-3; // Calc Partial Derivative @@ -132,22 +130,22 @@ TEST(GravityPotential, PartialDerivative2) { // Calc Acceleration and numerical partial derivatives double d_r = 1e-9; - math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; + s2e::math::Matrix<3, 3> numerical_partial_derivative_xcxf_s2; for (size_t i = 0; i < 3; i++) { - math::Vector<3> position_1_xcxf_m = position_xcxf_m; - math::Vector<3> position_2_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_1_xcxf_m = position_xcxf_m; + s2e::math::Vector<3> position_2_xcxf_m = position_xcxf_m; position_1_xcxf_m[i] = position_xcxf_m[i] - d_r / 2.0; position_2_xcxf_m[i] = position_xcxf_m[i] + d_r / 2.0; - math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); - math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); - math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; + s2e::math::Vector<3> acceleration_1_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_1_xcxf_m); + s2e::math::Vector<3> acceleration_2_xcxf_m_s2 = gravity_potential_.CalcAcceleration_xcxf_m_s2(position_2_xcxf_m); + s2e::math::Vector<3> diff_acceleration_xcxf_m_s2 = acceleration_2_xcxf_m_s2 - acceleration_1_xcxf_m_s2; for (size_t j = 0; j < 3; j++) { numerical_partial_derivative_xcxf_s2[i][j] = diff_acceleration_xcxf_m_s2[j] / d_r; } } // Compare numerical and analytical calculation - math::Matrix<3, 3> diff; + s2e::math::Matrix<3, 3> diff; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 3; j++) { EXPECT_NEAR(numerical_partial_derivative_xcxf_s2[i][j], partial_derivative_xcxf_s2[i][j], accuracy); diff --git a/src/math_physics/math/test_interpolation.cpp b/src/math_physics/math/test_interpolation.cpp index 674b12419..a29f3b330 100644 --- a/src/math_physics/math/test_interpolation.cpp +++ b/src/math_physics/math/test_interpolation.cpp @@ -15,7 +15,7 @@ TEST(Interpolation, PolynomialLinearFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(2.0 * xx, interpolation.CalcPolynomial(xx)); @@ -31,7 +31,7 @@ TEST(Interpolation, PolynomialLinearFunction) { TEST(Interpolation, PolynomialQuadraticFunction) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 1.0, 4.0, 9.0, 16.0}; - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); double xx = 0.4; EXPECT_DOUBLE_EQ(pow(xx, 2.0), interpolation.CalcPolynomial(xx)); @@ -45,16 +45,16 @@ TEST(Interpolation, PolynomialQuadraticFunction) { * @brief Test for sin function with trigonometric interpolation */ TEST(Interpolation, TrigonometricSinFunction) { - std::vector x{0.0, math::pi_2, math::pi, math::pi * 3.0 / 2.0, math::tau}; + std::vector x{0.0, s2e::math::pi_2, s2e::math::pi, s2e::math::pi * 3.0 / 2.0, s2e::math::tau}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(sin(x[i])); } - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); - double xx = 0.4 * math::pi; + double xx = 0.4 * s2e::math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); - xx = 1.4 * math::pi; + xx = 1.4 * s2e::math::pi; EXPECT_DOUBLE_EQ(sin(xx), interpolation.CalcTrigonometric(xx)); } @@ -62,16 +62,16 @@ TEST(Interpolation, TrigonometricSinFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosFunction) { - std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2}; + std::vector x{0.0, 0.3 * s2e::math::pi_2, 0.6 * s2e::math::pi_2, 0.9 * s2e::math::pi_2, 1.2 * s2e::math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i])); } - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); - double xx = 0.1 * math::pi_2; + double xx = 0.1 * s2e::math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * math::pi_2; + xx = 0.8 * s2e::math::pi_2; EXPECT_NEAR(cos(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -79,16 +79,16 @@ TEST(Interpolation, TrigonometricCosFunction) { * @brief Test for cos function with trigonometric interpolation */ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { - std::vector x{0.0, 0.3 * math::pi_2, 0.6 * math::pi_2, 0.9 * math::pi_2, 1.2 * math::pi_2, 1.5 * math::pi_2}; + std::vector x{0.0, 0.3 * s2e::math::pi_2, 0.6 * s2e::math::pi_2, 0.9 * s2e::math::pi_2, 1.2 * s2e::math::pi_2, 1.5 * s2e::math::pi_2}; std::vector y; for (size_t i = 0; i < x.size(); i++) { y.push_back(cos(x[i]) + sin(x[i])); } - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); - double xx = 0.1 * math::pi_2; + double xx = 0.1 * s2e::math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); - xx = 0.8 * math::pi_2; + xx = 0.8 * s2e::math::pi_2; EXPECT_NEAR(cos(xx) + sin(xx), interpolation.CalcTrigonometric(xx), 1e-6); } @@ -98,7 +98,7 @@ TEST(Interpolation, TrigonometricCosSinFunctionOddDegree) { TEST(Interpolation, PushAndPop) { std::vector x{0.0, 1.0, 2.0, 3.0, 4.0}; std::vector y{0.0, 2.0, 4.0, 6.0, 8.0}; - math::Interpolation interpolation(x, y); + s2e::math::Interpolation interpolation(x, y); EXPECT_EQ(x.size(), interpolation.GetDegree()); for (size_t i = 0; i < x.size(); i++) { diff --git a/src/math_physics/math/test_matrix.cpp b/src/math_physics/math/test_matrix.cpp index 53dee0b75..9b23c15d5 100644 --- a/src/math_physics/math/test_matrix.cpp +++ b/src/math_physics/math/test_matrix.cpp @@ -14,7 +14,7 @@ TEST(Matrix, ConstructorWithNumber) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - math::Matrix m(initialize_value); + s2e::math::Matrix m(initialize_value); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -30,7 +30,7 @@ TEST(Matrix, ConstructorWithNumber) { TEST(Matrix, GetLength) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; EXPECT_EQ(R, m.GetRowLength()); EXPECT_EQ(C, m.GetColumnLength()); @@ -43,8 +43,8 @@ TEST(Matrix, OperatorPlusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - math::Matrix m(initialize_value); - math::Matrix adding; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -71,8 +71,8 @@ TEST(Matrix, OperatorMinusEqual) { const size_t R = 6; const size_t C = 3; double initialize_value = 2.0; - math::Matrix m(initialize_value); - math::Matrix subtracting; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -99,7 +99,7 @@ TEST(Matrix, OperatorMultiplyEqual) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; double multiplying = 2.0; for (size_t r = 0; r < R; r++) { @@ -125,7 +125,7 @@ TEST(Matrix, OperatorDivideEqual) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; double dividing = 2.0; for (size_t r = 0; r < R; r++) { @@ -152,7 +152,7 @@ TEST(Matrix, FillUp) { const size_t C = 3; double value = 3.0; - math::Matrix m; + s2e::math::Matrix m; m.FillUp(value); @@ -169,7 +169,7 @@ TEST(Matrix, FillUp) { */ TEST(Matrix, CalcTrace) { const size_t N = 6; - math::Matrix m; + s2e::math::Matrix m; for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -201,8 +201,8 @@ TEST(Matrix, OperatorPlus) { const size_t R = 6; const size_t C = 3; double initialize_value = -2.0; - math::Matrix m(initialize_value); - math::Matrix adding; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -210,7 +210,7 @@ TEST(Matrix, OperatorPlus) { } } - math::Matrix added = m + adding; + s2e::math::Matrix added = m + adding; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -230,8 +230,8 @@ TEST(Matrix, OperatorMinus) { const size_t R = 6; const size_t C = 3; double initialize_value = 0.6; - math::Matrix m(initialize_value); - math::Matrix subtracting; + s2e::math::Matrix m(initialize_value); + s2e::math::Matrix subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -239,7 +239,7 @@ TEST(Matrix, OperatorMinus) { } } - math::Matrix subtracted = m - subtracting; + s2e::math::Matrix subtracted = m - subtracting; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -259,7 +259,7 @@ TEST(Matrix, OperatorMultiplyScalar) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; double multiplying = 0.3; for (size_t r = 0; r < R; r++) { @@ -268,7 +268,7 @@ TEST(Matrix, OperatorMultiplyScalar) { } } - math::Matrix subtracted = multiplying * m; + s2e::math::Matrix subtracted = multiplying * m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -287,8 +287,8 @@ TEST(Matrix, OperatorMultiplyMatrix) { const size_t R = 2; const size_t C = 3; - math::Matrix a; - math::Matrix b; + s2e::math::Matrix a; + s2e::math::Matrix b; a[0][0] = 1.0; a[0][1] = 2.0; @@ -304,7 +304,7 @@ TEST(Matrix, OperatorMultiplyMatrix) { b[2][0] = 5.0; b[2][1] = 6.0; - math::Matrix result = a * b; + s2e::math::Matrix result = a * b; EXPECT_DOUBLE_EQ(22.0, result[0][0]); EXPECT_DOUBLE_EQ(28.0, result[0][1]); @@ -319,14 +319,14 @@ TEST(Matrix, Transpose) { const size_t R = 6; const size_t C = 3; - math::Matrix m; + s2e::math::Matrix m; for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { m[r][c] = r * c; } } - math::Matrix transposed = m.Transpose(); + s2e::math::Matrix transposed = m.Transpose(); for (size_t r = 0; r < R; r++) { for (size_t c = 0; c < C; c++) { @@ -344,7 +344,7 @@ TEST(Matrix, Transpose) { TEST(Matrix, MakeIdentityMatrix) { const size_t N = 6; - math::Matrix m = math::MakeIdentityMatrix(); + s2e::math::Matrix m = s2e::math::MakeIdentityMatrix(); for (size_t r = 0; r < N; r++) { for (size_t c = 0; c < N; c++) { @@ -362,9 +362,9 @@ TEST(Matrix, MakeIdentityMatrix) { */ TEST(Matrix, MakeRotationMatrixX) { const size_t N = 3; - double theta_rad = -45.0 * math::deg_to_rad; + double theta_rad = -45.0 * s2e::math::deg_to_rad; - math::Matrix m = math::MakeRotationMatrixX(theta_rad); + s2e::math::Matrix m = s2e::math::MakeRotationMatrixX(theta_rad); EXPECT_DOUBLE_EQ(1.0, m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -382,9 +382,9 @@ TEST(Matrix, MakeRotationMatrixX) { */ TEST(Matrix, MakeRotationMatrixY) { const size_t N = 3; - double theta_rad = 120.0 * math::deg_to_rad; + double theta_rad = 120.0 * s2e::math::deg_to_rad; - math::Matrix m = math::MakeRotationMatrixY(theta_rad); + s2e::math::Matrix m = s2e::math::MakeRotationMatrixY(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(0.0, m[0][1]); @@ -402,9 +402,9 @@ TEST(Matrix, MakeRotationMatrixY) { */ TEST(Matrix, MakeRotationMatrixZ) { const size_t N = 3; - double theta_rad = 30.0 * math::deg_to_rad; + double theta_rad = 30.0 * s2e::math::deg_to_rad; - math::Matrix m = math::MakeRotationMatrixZ(theta_rad); + s2e::math::Matrix m = s2e::math::MakeRotationMatrixZ(theta_rad); EXPECT_DOUBLE_EQ(cos(theta_rad), m[0][0]); EXPECT_DOUBLE_EQ(sin(theta_rad), m[0][1]); diff --git a/src/math_physics/math/test_matrix_vector.cpp b/src/math_physics/math/test_matrix_vector.cpp index 78fc9babf..958a409b6 100644 --- a/src/math_physics/math/test_matrix_vector.cpp +++ b/src/math_physics/math/test_matrix_vector.cpp @@ -14,8 +14,8 @@ TEST(MatrixVector, MultiplyMatrixVector) { const size_t R = 3; const size_t C = 2; - math::Matrix m; - math::Vector v; + s2e::math::Matrix m; + s2e::math::Vector v; m[0][0] = 1.0; m[0][1] = 2.0; @@ -27,7 +27,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { v[0] = 7.0; v[1] = 1.0; - math::Vector result = m * v; + s2e::math::Vector result = m * v; EXPECT_DOUBLE_EQ(9.0, result[0]); EXPECT_DOUBLE_EQ(-7.0, result[1]); @@ -40,7 +40,7 @@ TEST(MatrixVector, MultiplyMatrixVector) { TEST(MatrixVector, CalcInverseMatrix) { const size_t N = 3; - math::Matrix m; + s2e::math::Matrix m; m[0][0] = 1.0; m[0][1] = 1.0; @@ -52,7 +52,7 @@ TEST(MatrixVector, CalcInverseMatrix) { m[2][1] = -2.0; m[2][2] = 1.0; - math::Matrix inverse = math::CalcInverseMatrix(m); + s2e::math::Matrix inverse = s2e::math::CalcInverseMatrix(m); EXPECT_NEAR(-1.0, inverse[0][0], 1e-10); EXPECT_NEAR(-1.0, inverse[0][1], 1e-10); diff --git a/src/math_physics/math/test_quaternion.cpp b/src/math_physics/math/test_quaternion.cpp index 4995afccc..2821eccee 100644 --- a/src/math_physics/math/test_quaternion.cpp +++ b/src/math_physics/math/test_quaternion.cpp @@ -11,7 +11,7 @@ * @brief Test for constructor from four numbers */ TEST(Quaternion, ConstructorFourNumber) { - math::Quaternion q(0.5, 0.5, 0.5, 0.5); + s2e::math::Quaternion q(0.5, 0.5, 0.5, 0.5); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -23,8 +23,8 @@ TEST(Quaternion, ConstructorFourNumber) { * @brief Test for constructor from Vector */ TEST(Quaternion, ConstructorVector) { - math::Vector<4> v(0.5); - math::Quaternion q(v); + s2e::math::Vector<4> v(0.5); + s2e::math::Quaternion q(v); EXPECT_DOUBLE_EQ(0.5, q[0]); EXPECT_DOUBLE_EQ(0.5, q[1]); @@ -36,12 +36,12 @@ TEST(Quaternion, ConstructorVector) { * @brief Test for constructor from axis and rotation angle X rotation */ TEST(Quaternion, ConstructorAxisAndAngleX) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 1.0; axis[1] = 0.0; axis[2] = 0.0; - double theta_rad = 90 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = 90 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -53,12 +53,12 @@ TEST(Quaternion, ConstructorAxisAndAngleX) { * @brief Test for constructor from axis and rotation angle Y rotation */ TEST(Quaternion, ConstructorAxisAndAngleY) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 0.0; axis[1] = 1.0; axis[2] = 0.0; - double theta_rad = 45 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = 45 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -70,12 +70,12 @@ TEST(Quaternion, ConstructorAxisAndAngleY) { * @brief Test for constructor from axis and rotation angle Z rotation */ TEST(Quaternion, ConstructorAxisAndAngleZ) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; - double theta_rad = -60 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = -60 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -87,12 +87,12 @@ TEST(Quaternion, ConstructorAxisAndAngleZ) { * @brief Test for constructor from axis and rotation angle All axes rotation */ TEST(Quaternion, ConstructorAxisAndAngleAll) { - math::Vector<3> axis; + s2e::math::Vector<3> axis; axis[0] = 1.0; axis[1] = 1.0; axis[2] = 1.0; - double theta_rad = 180 * math::deg_to_rad; - math::Quaternion q(axis, theta_rad); + double theta_rad = 180 * s2e::math::deg_to_rad; + s2e::math::Quaternion q(axis, theta_rad); EXPECT_NEAR(axis[0] * sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(axis[1] * sin(theta_rad / 2.0), q[1], 1e-5); @@ -104,16 +104,16 @@ TEST(Quaternion, ConstructorAxisAndAngleAll) { * @brief Test for constructor from two vectors: No rotation */ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 2.0; // To check normalization - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 0.0; after[1] = 0.0; after[2] = 1.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); @@ -125,18 +125,18 @@ TEST(Quaternion, ConstructorTwoVectorsNoRotation) { * @brief Test for constructor from two vectors: X rotation */ TEST(Quaternion, ConstructorTwoVectorsX) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); - double theta_rad = -90 * math::deg_to_rad; + double theta_rad = -90 * s2e::math::deg_to_rad; EXPECT_NEAR(sin(theta_rad / 2.0), q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -147,18 +147,18 @@ TEST(Quaternion, ConstructorTwoVectorsX) { * @brief Test for constructor from two vectors: Y rotation */ TEST(Quaternion, ConstructorTwoVectorsY) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 0.0; before[1] = 0.0; before[2] = 1.0; - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 1.0; after[1] = 0.0; after[2] = 0.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); - double theta_rad = 90 * math::deg_to_rad; + double theta_rad = 90 * s2e::math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[1], 1e-5); EXPECT_NEAR(0.0, q[2], 1e-5); @@ -169,18 +169,18 @@ TEST(Quaternion, ConstructorTwoVectorsY) { * @brief Test for constructor from two vectors: Z rotation */ TEST(Quaternion, ConstructorTwoVectorsZ) { - math::Vector<3> before; + s2e::math::Vector<3> before; before[0] = 1.0; before[1] = 0.0; before[2] = 0.0; - math::Vector<3> after; + s2e::math::Vector<3> after; after[0] = 0.0; after[1] = 1.0; after[2] = 0.0; - math::Quaternion q(before, after); + s2e::math::Quaternion q(before, after); - double theta_rad = 90 * math::deg_to_rad; + double theta_rad = 90 * s2e::math::deg_to_rad; EXPECT_NEAR(0.0, q[0], 1e-5); EXPECT_NEAR(0.0, q[1], 1e-5); EXPECT_NEAR(sin(theta_rad / 2.0), q[2], 1e-5); @@ -192,7 +192,7 @@ TEST(Quaternion, ConstructorTwoVectorsZ) { * @note TODO: Fix to nondestructive function */ TEST(Quaternion, Normalize) { - math::Quaternion q(1.0, 1.0, 1.0, 1.0); + s2e::math::Quaternion q(1.0, 1.0, 1.0, 1.0); EXPECT_DOUBLE_EQ(1.0, q[0]); EXPECT_DOUBLE_EQ(1.0, q[1]); EXPECT_DOUBLE_EQ(1.0, q[2]); @@ -209,9 +209,9 @@ TEST(Quaternion, Normalize) { * @brief Test for Conjugate */ TEST(Quaternion, Conjugate) { - math::Quaternion q(0.5, 0.5, 0.5, 0.5); + s2e::math::Quaternion q(0.5, 0.5, 0.5, 0.5); - math::Quaternion q_conjugate = q.Conjugate(); + s2e::math::Quaternion q_conjugate = q.Conjugate(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.5, q[0]); @@ -229,10 +229,10 @@ TEST(Quaternion, Conjugate) { * @brief Test for ConvertToDcm Y rotation */ TEST(Quaternion, ConvertToDcmY) { - math::Quaternion q(0.0, 1.0, 0.0, 1.0); + s2e::math::Quaternion q(0.0, 1.0, 0.0, 1.0); q.Normalize(); - math::Matrix<3, 3> dcm = q.ConvertToDcm(); + s2e::math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function EXPECT_DOUBLE_EQ(0.0, q[0]); @@ -253,7 +253,7 @@ TEST(Quaternion, ConvertToDcmY) { EXPECT_NEAR(0.0, dcm[2][2], accuracy); // Inverse Conversion - math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); + s2e::math::Quaternion q_from_dcm = s2e::math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -263,10 +263,10 @@ TEST(Quaternion, ConvertToDcmY) { * @brief Test for ConvertToDcm */ TEST(Quaternion, ConvertToDcm) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - math::Matrix<3, 3> dcm = q.ConvertToDcm(); + s2e::math::Matrix<3, 3> dcm = q.ConvertToDcm(); // Check nondestructive function const double accuracy = 1.0e-5; @@ -281,7 +281,7 @@ TEST(Quaternion, ConvertToDcm) { EXPECT_NEAR(0.4962963, dcm[2][2], accuracy); // Inverse Conversion - math::Quaternion q_from_dcm = math::Quaternion::ConvertFromDcm(dcm); + s2e::math::Quaternion q_from_dcm = s2e::math::Quaternion::ConvertFromDcm(dcm); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_dcm[i], accuracy); } @@ -291,10 +291,10 @@ TEST(Quaternion, ConvertToDcm) { * @brief Test for ConvertToEuler X rotation */ TEST(Quaternion, ConvertToEulerX) { - math::Quaternion q(1.0, 0.0, 0.0, 1.0); + s2e::math::Quaternion q(1.0, 0.0, 0.0, 1.0); q.Normalize(); - math::Vector<3> euler = q.ConvertToEuler(); + s2e::math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function EXPECT_DOUBLE_EQ(1.0 / sqrt(2.0), q[0]); @@ -304,12 +304,12 @@ TEST(Quaternion, ConvertToEulerX) { // Check nondestructive function const double accuracy = 1.0e-7; - EXPECT_NEAR(90 * math::deg_to_rad, euler[0], accuracy); + EXPECT_NEAR(90 * s2e::math::deg_to_rad, euler[0], accuracy); EXPECT_NEAR(0.0, euler[1], accuracy); EXPECT_NEAR(0.0, euler[2], accuracy); // Inverse Conversion - math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); + s2e::math::Quaternion q_from_euler = s2e::math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -319,10 +319,10 @@ TEST(Quaternion, ConvertToEulerX) { * @brief Test for ConvertToEuler */ TEST(Quaternion, ConvertToEuler) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - math::Vector<3> euler = q.ConvertToEuler(); + s2e::math::Vector<3> euler = q.ConvertToEuler(); // Check nondestructive function const double accuracy = 1.0e-7; @@ -331,7 +331,7 @@ TEST(Quaternion, ConvertToEuler) { EXPECT_NEAR(0.41012734, euler[2], accuracy); // Inverse Conversion - math::Quaternion q_from_euler = math::Quaternion::ConvertFromEuler(euler); + s2e::math::Quaternion q_from_euler = s2e::math::Quaternion::ConvertFromEuler(euler); for (size_t i = 0; i < 4; i++) { EXPECT_NEAR(q[i], q_from_euler[i], accuracy); } @@ -341,22 +341,22 @@ TEST(Quaternion, ConvertToEuler) { * @brief Test for FrameConversion Z rotation */ TEST(Quaternion, FrameConversionZ) { - math::Quaternion q(0.0, 0.0, 1.0, 1.0); + s2e::math::Quaternion q(0.0, 0.0, 1.0, 1.0); q.Normalize(); - math::Vector<3> v; + s2e::math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - math::Vector<3> v_frame_conv = q.FrameConversion(v); + s2e::math::Vector<3> v_frame_conv = q.FrameConversion(v); const double accuracy = 1.0e-7; EXPECT_NEAR(0.0, v_frame_conv[0], accuracy); EXPECT_NEAR(-1.0, v_frame_conv[1], accuracy); EXPECT_NEAR(0.0, v_frame_conv[2], accuracy); - math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + s2e::math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); for (size_t i = 0; i < 3; i++) { EXPECT_NEAR(v[i], v_frame_conv_inv[i], accuracy); @@ -367,15 +367,15 @@ TEST(Quaternion, FrameConversionZ) { * @brief Test for FrameConversion */ TEST(Quaternion, FrameConversion) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); q.Normalize(); - math::Vector<3> v; + s2e::math::Vector<3> v; v[0] = 1.0; v[1] = 0.0; v[2] = 0.0; - math::Vector<3> v_frame_conv = q.FrameConversion(v); - math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); + s2e::math::Vector<3> v_frame_conv = q.FrameConversion(v); + s2e::math::Vector<3> v_frame_conv_inv = q.InverseFrameConversion(v_frame_conv); const double accuracy = 1.0e-7; for (size_t i = 0; i < 3; i++) { @@ -387,9 +387,9 @@ TEST(Quaternion, FrameConversion) { * @brief Test for ConvertToVector */ TEST(Quaternion, ConvertToVector) { - math::Quaternion q(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q(0.5, 0.3, 0.1, 1.0); - math::Vector<4> v = q.ConvertToVector(); + s2e::math::Vector<4> v = q.ConvertToVector(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(q[i], v[i]); @@ -400,10 +400,10 @@ TEST(Quaternion, ConvertToVector) { * @brief Test for operator+ */ TEST(Quaternion, OperatorPlus) { - math::Quaternion q1(0.5, 0.3, 0.1, 1.0); - math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + s2e::math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - math::Quaternion result = q1 + q2; + s2e::math::Quaternion result = q1 + q2; EXPECT_DOUBLE_EQ(0.2, result[0]); EXPECT_DOUBLE_EQ(0.4, result[1]); @@ -415,10 +415,10 @@ TEST(Quaternion, OperatorPlus) { * @brief Test for operator- */ TEST(Quaternion, OperatorMinus) { - math::Quaternion q1(0.5, 0.3, 0.1, 1.0); - math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); + s2e::math::Quaternion q1(0.5, 0.3, 0.1, 1.0); + s2e::math::Quaternion q2(-0.3, 0.1, -1.0, 0.4); - math::Quaternion result = q1 - q2; + s2e::math::Quaternion result = q1 - q2; EXPECT_DOUBLE_EQ(0.8, result[0]); EXPECT_DOUBLE_EQ(0.2, result[1]); @@ -430,10 +430,10 @@ TEST(Quaternion, OperatorMinus) { * @brief Test for operator* quaternion */ TEST(Quaternion, OperatorQuaternionMultiply) { - math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); - math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); + s2e::math::Quaternion q1(0.289271, -0.576012, -0.420972, 0.638212); + s2e::math::Quaternion q2(-0.0821846, 0.501761, 0.721995, -0.469259); - math::Quaternion result = q1 * q2; + s2e::math::Quaternion result = q1 * q2; const double accuracy = 1.0e-7; EXPECT_NEAR(-0.3928446703722, result[0], accuracy); @@ -446,10 +446,10 @@ TEST(Quaternion, OperatorQuaternionMultiply) { * @brief Test for operator* scalar */ TEST(Quaternion, OperatorScalarMultiply) { - math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); + s2e::math::Quaternion q(0.289271, -0.576012, -0.420972, 0.638212); double scalar = 2.3; - math::Quaternion result = scalar * q; + s2e::math::Quaternion result = scalar * q; const double accuracy = 1.0e-7; EXPECT_NEAR(q[0] * 2.3, result[0], accuracy); diff --git a/src/math_physics/math/test_s2e_math.cpp b/src/math_physics/math/test_s2e_math.cpp index 949751a3b..7a293b967 100644 --- a/src/math_physics/math/test_s2e_math.cpp +++ b/src/math_physics/math/test_s2e_math.cpp @@ -14,18 +14,18 @@ TEST(S2eMath, WrapTo2Pi) { const double accuracy = 1.0e-7; double input_angle_rad = 0.0; - double wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + double wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(0.0, wrapped_angle_rad, accuracy); input_angle_rad = -1.0e-5; - wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); - EXPECT_NEAR(math::tau + input_angle_rad, wrapped_angle_rad, accuracy); + wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); + EXPECT_NEAR(s2e::math::tau + input_angle_rad, wrapped_angle_rad, accuracy); - input_angle_rad = math::tau + 1.0e-5; - wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + input_angle_rad = s2e::math::tau + 1.0e-5; + wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); - input_angle_rad = 10 * math::tau + 1.0e-5; - wrapped_angle_rad = math::WrapTo2Pi(input_angle_rad); + input_angle_rad = 10 * s2e::math::tau + 1.0e-5; + wrapped_angle_rad = s2e::math::WrapTo2Pi(input_angle_rad); EXPECT_NEAR(1.0e-5, wrapped_angle_rad, accuracy); } diff --git a/src/math_physics/math/test_vector.cpp b/src/math_physics/math/test_vector.cpp index 5f636960d..e920dc0b8 100644 --- a/src/math_physics/math/test_vector.cpp +++ b/src/math_physics/math/test_vector.cpp @@ -13,7 +13,7 @@ TEST(Vector, ConstructorWithNumber) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); + s2e::math::Vector v(initialize_value); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(initialize_value, v[i]); @@ -26,7 +26,7 @@ TEST(Vector, ConstructorWithNumber) { */ TEST(Vector, GetLength) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; EXPECT_EQ(N, v.GetLength()); } @@ -37,8 +37,8 @@ TEST(Vector, GetLength) { TEST(Vector, OperatorPlusEqual) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector adding; + s2e::math::Vector v(initialize_value); + s2e::math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); @@ -60,8 +60,8 @@ TEST(Vector, OperatorPlusEqual) { TEST(Vector, OperatorMinusEqual) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector subtracting; + s2e::math::Vector v(initialize_value); + s2e::math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); @@ -82,7 +82,7 @@ TEST(Vector, OperatorMinusEqual) { */ TEST(Vector, OperatorMultiplyEqual) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; double multiplying = 2.0; for (size_t i = 0; i < N; i++) { @@ -104,7 +104,7 @@ TEST(Vector, OperatorMultiplyEqual) { */ TEST(Vector, OperatorDivideEqual) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; double dividing = 3.0; for (size_t i = 0; i < N; i++) { @@ -126,13 +126,13 @@ TEST(Vector, OperatorDivideEqual) { */ TEST(Vector, OperatorNegative) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); } - math::Vector v_negative = -v; + s2e::math::Vector v_negative = -v; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -147,7 +147,7 @@ TEST(Vector, OperatorNegative) { */ TEST(Vector, FillUp) { const size_t N = 6; - math::Vector v; + s2e::math::Vector v; for (size_t i = 0; i < N; i++) { v[i] = double(i); @@ -171,14 +171,14 @@ TEST(Vector, FillUp) { TEST(Vector, OperatorPlus) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector adding; + s2e::math::Vector v(initialize_value); + s2e::math::Vector adding; for (size_t i = 0; i < N; i++) { adding[i] = double(i); } - math::Vector added = v + adding; + s2e::math::Vector added = v + adding; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -195,14 +195,14 @@ TEST(Vector, OperatorPlus) { TEST(Vector, OperatorMinus) { const size_t N = 6; double initialize_value = 2.0; - math::Vector v(initialize_value); - math::Vector subtracting; + s2e::math::Vector v(initialize_value); + s2e::math::Vector subtracting; for (size_t i = 0; i < N; i++) { subtracting[i] = double(i); } - math::Vector subtracted = v - subtracting; + s2e::math::Vector subtracted = v - subtracting; for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -218,8 +218,8 @@ TEST(Vector, OperatorMinus) { */ TEST(Vector, InnerProduct) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; for (size_t i = 0; i < N; i++) { a[i] = double(i + 1); @@ -235,8 +235,8 @@ TEST(Vector, InnerProduct) { */ TEST(Vector, InnerProductZero) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -255,8 +255,8 @@ TEST(Vector, InnerProductZero) { */ TEST(Vector, OuterProductZero) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -266,7 +266,7 @@ TEST(Vector, OuterProductZero) { b[1] = 0.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); for (size_t i = 0; i < N; i++) { EXPECT_DOUBLE_EQ(0.0, result[i]); @@ -278,8 +278,8 @@ TEST(Vector, OuterProductZero) { */ TEST(Vector, OuterProductX) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -289,7 +289,7 @@ TEST(Vector, OuterProductX) { b[1] = 1.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(-1.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -301,8 +301,8 @@ TEST(Vector, OuterProductX) { */ TEST(Vector, OuterProductY) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 0.0; a[1] = 0.0; @@ -312,7 +312,7 @@ TEST(Vector, OuterProductY) { b[1] = 0.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(1.0, result[1]); @@ -324,8 +324,8 @@ TEST(Vector, OuterProductY) { */ TEST(Vector, OuterProductZ) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -335,7 +335,7 @@ TEST(Vector, OuterProductZ) { b[1] = 1.0; b[2] = 0.0; - math::Vector<3> result = OuterProduct(a, b); + s2e::math::Vector<3> result = OuterProduct(a, b); EXPECT_DOUBLE_EQ(0.0, result[0]); EXPECT_DOUBLE_EQ(0.0, result[1]); @@ -347,7 +347,7 @@ TEST(Vector, OuterProductZ) { */ TEST(Vector, CalcNorm) { const size_t N = 10; - math::Vector v(1.0); + s2e::math::Vector v(1.0); double norm = v.CalcNorm(); @@ -364,9 +364,9 @@ TEST(Vector, CalcNorm) { */ TEST(Vector, Normalize) { const size_t N = 5; - math::Vector v(1.0); + s2e::math::Vector v(1.0); - math::Vector normalized = v.CalcNormalizedVector(); + s2e::math::Vector normalized = v.CalcNormalizedVector(); for (size_t i = 0; i < N; i++) { // Check nondestructive @@ -381,8 +381,8 @@ TEST(Vector, Normalize) { */ TEST(Vector, CalcAngleTwoVectors90deg) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 1.0; a[1] = 0.0; @@ -394,7 +394,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * s2e::math::deg_to_rad, angle_rad); } /** @@ -402,7 +402,7 @@ TEST(Vector, CalcAngleTwoVectors90deg) { */ TEST(Vector, CalcAngleTwoVectors0deg) { const size_t N = 3; - math::Vector a; + s2e::math::Vector a; a[0] = 1.0; a[1] = 0.0; @@ -410,7 +410,7 @@ TEST(Vector, CalcAngleTwoVectors0deg) { double angle_rad = CalcAngleTwoVectors_rad(a, a); - EXPECT_DOUBLE_EQ(0.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(0.0 * s2e::math::deg_to_rad, angle_rad); } /** @@ -418,8 +418,8 @@ TEST(Vector, CalcAngleTwoVectors0deg) { */ TEST(Vector, CalcAngleTwoVectors45deg) { const size_t N = 3; - math::Vector a; - math::Vector b; + s2e::math::Vector a; + s2e::math::Vector b; a[0] = 0.0; a[1] = 1.0; @@ -431,7 +431,7 @@ TEST(Vector, CalcAngleTwoVectors45deg) { double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(45.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(45.0 * s2e::math::deg_to_rad, angle_rad); } /** @@ -439,11 +439,11 @@ TEST(Vector, CalcAngleTwoVectors45deg) { */ TEST(Vector, GenerateOrthogonalUnitVector) { const size_t N = 3; - math::Vector a(1.0); + s2e::math::Vector a(1.0); - math::Vector b = GenerateOrthogonalUnitVector(a); + s2e::math::Vector b = GenerateOrthogonalUnitVector(a); double angle_rad = CalcAngleTwoVectors_rad(a, b); - EXPECT_DOUBLE_EQ(90.0 * math::deg_to_rad, angle_rad); + EXPECT_DOUBLE_EQ(90.0 * s2e::math::deg_to_rad, angle_rad); } diff --git a/src/math_physics/numerical_integration/test_runge_kutta.cpp b/src/math_physics/numerical_integration/test_runge_kutta.cpp index 60293ab18..d544caae3 100644 --- a/src/math_physics/numerical_integration/test_runge_kutta.cpp +++ b/src/math_physics/numerical_integration/test_runge_kutta.cpp @@ -18,7 +18,7 @@ TEST(NUMERICAL_INTEGRATION, Constructor) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::RungeKutta4<1> linear_ode(0.1, ode); - math::Vector<1> state = linear_ode.GetState(); + s2e::math::Vector<1> state = linear_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); } @@ -30,7 +30,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRk4) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - math::Vector<1> state = rk4_ode.GetState(); + s2e::math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -51,7 +51,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearRkf) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - math::Vector<1> state = rkf_ode.GetState(); + s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -72,7 +72,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearDp5) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - math::Vector<1> state = dp5_ode.GetState(); + s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -93,7 +93,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRk4) { s2e::numerical_integration::ExampleLinearOde ode; s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode); - math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -115,7 +115,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerRkf) { s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, s2e::numerical_integration::NumericalIntegrationMethod::kRkf); - math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -141,7 +141,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateLinearNumericalIntegratorManagerDp5) { s2e::numerical_integration::NumericalIntegratorManager<1> numerical_integrator(step_width_s, ode, s2e::numerical_integration::NumericalIntegrationMethod::kDp5); - math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); + s2e::math::Vector<1> state = numerical_integrator.GetIntegrator()->GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -166,7 +166,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRk4) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::RungeKutta4<1> rk4_ode(step_width_s, ode); - math::Vector<1> state = rk4_ode.GetState(); + s2e::math::Vector<1> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -187,7 +187,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticRkf) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - math::Vector<1> state = rkf_ode.GetState(); + s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -208,7 +208,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticRkf) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::RungeKuttaFehlberg<1> rkf_ode(step_width_s, ode); - math::Vector<1> state = rkf_ode.GetState(); + s2e::math::Vector<1> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); rkf_ode.Integrate(); @@ -237,7 +237,7 @@ TEST(NUMERICAL_INTEGRATION, IntegrateQuadraticDp5) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - math::Vector<1> state = dp5_ode.GetState(); + s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); size_t step_num = 10000; @@ -258,7 +258,7 @@ TEST(NUMERICAL_INTEGRATION, InterpolationQuadraticDp5) { s2e::numerical_integration::ExampleQuadraticOde ode; s2e::numerical_integration::DormandPrince5<1> dp5_ode(step_width_s, ode); - math::Vector<1> state = dp5_ode.GetState(); + s2e::math::Vector<1> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(0.0, state[0]); dp5_ode.Integrate(); @@ -287,12 +287,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { s2e::numerical_integration::Example1dPositionVelocityOde ode; s2e::numerical_integration::RungeKutta4<2> rk4_ode(step_width_s, ode); - math::Vector<2> initial_state(0.0); + s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rk4_ode.SetState(0.0, initial_state); - math::Vector<2> state = rk4_ode.GetState(); + s2e::math::Vector<2> state = rk4_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -301,7 +301,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRk4) { rk4_ode.Integrate(); } state = rk4_ode.GetState(); - math::Vector<2> estimated_result(0.0); + s2e::math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -317,12 +317,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { s2e::numerical_integration::Example1dPositionVelocityOde ode; s2e::numerical_integration::RungeKuttaFehlberg<2> rkf_ode(step_width_s, ode); - math::Vector<2> initial_state(0.0); + s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; rkf_ode.SetState(0.0, initial_state); - math::Vector<2> state = rkf_ode.GetState(); + s2e::math::Vector<2> state = rkf_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -331,7 +331,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityRkf) { rkf_ode.Integrate(); } state = rkf_ode.GetState(); - math::Vector<2> estimated_result(0.0); + s2e::math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -347,12 +347,12 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { s2e::numerical_integration::Example1dPositionVelocityOde ode; s2e::numerical_integration::DormandPrince5<2> dp5_ode(step_width_s, ode); - math::Vector<2> initial_state(0.0); + s2e::math::Vector<2> initial_state(0.0); initial_state[0] = 0.0; initial_state[1] = 0.1; dp5_ode.SetState(0.0, initial_state); - math::Vector<2> state = dp5_ode.GetState(); + s2e::math::Vector<2> state = dp5_ode.GetState(); EXPECT_DOUBLE_EQ(initial_state[0], state[0]); EXPECT_DOUBLE_EQ(initial_state[1], state[1]); @@ -361,7 +361,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate1dPositionVelocityDp5) { dp5_ode.Integrate(); } state = dp5_ode.GetState(); - math::Vector<2> estimated_result(0.0); + s2e::math::Vector<2> estimated_result(0.0); estimated_result[0] = (step_width_s * step_num) * initial_state[1] + initial_state[0]; estimated_result[1] = initial_state[1]; @@ -379,7 +379,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -389,9 +389,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rk4 = rk4_ode.GetState(); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rk4 = rk4_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -409,8 +409,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -449,7 +449,7 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.9; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -459,9 +459,9 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rk4 = rk4_ode.GetState(); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rk4 = rk4_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rk4[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); @@ -479,8 +479,8 @@ TEST(NUMERICAL_INTEGRATION, Integrate2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); initial_position[0] = initial_state[0]; initial_position[1] = initial_state[1]; @@ -518,7 +518,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.1; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -527,8 +527,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -543,8 +543,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitSmallEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; @@ -613,7 +613,7 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { s2e::numerical_integration::RungeKuttaFehlberg<4> rkf_ode(step_width_s, ode); s2e::numerical_integration::DormandPrince5<4> dp5_ode(step_width_s, ode); - math::Vector<4> initial_state(0.0); + s2e::math::Vector<4> initial_state(0.0); const double eccentricity = 0.8; initial_state[0] = 1.0 - eccentricity; initial_state[1] = 0.0; @@ -622,8 +622,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { rkf_ode.SetState(0.0, initial_state); dp5_ode.SetState(0.0, initial_state); - math::Vector<4> state_rkf = rkf_ode.GetState(); - math::Vector<4> state_dp5 = dp5_ode.GetState(); + s2e::math::Vector<4> state_rkf = rkf_ode.GetState(); + s2e::math::Vector<4> state_dp5 = dp5_ode.GetState(); for (size_t i = 0; i < 4; i++) { EXPECT_DOUBLE_EQ(initial_state[i], state_rkf[i]); EXPECT_DOUBLE_EQ(initial_state[i], state_dp5[i]); @@ -638,8 +638,8 @@ TEST(NUMERICAL_INTEGRATION, Interpolation2dTwoBodyOrbitLargeEccentricity) { state_dp5 = dp5_ode.GetState(); // Estimation by Kepler Orbit calculation - math::Vector<3> initial_position(0.0); - math::Vector<3> initial_velocity(0.0); + s2e::math::Vector<3> initial_position(0.0); + s2e::math::Vector<3> initial_velocity(0.0); // Final value initial_position[0] = initial_state[0]; diff --git a/src/math_physics/orbit/test_interpolation_orbit.cpp b/src/math_physics/orbit/test_interpolation_orbit.cpp index 1e05a13fb..f83a3f0cf 100644 --- a/src/math_physics/orbit/test_interpolation_orbit.cpp +++ b/src/math_physics/orbit/test_interpolation_orbit.cpp @@ -33,7 +33,7 @@ TEST(InterpolationOrbit, PushAndPop) { EXPECT_EQ(degree, interpolation_orbit.GetDegree()); for (size_t i = 0; i < degree; i++) { double time = (double)i; - math::Vector<3> position{i * 2.0}; + s2e::math::Vector<3> position{i * 2.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_TRUE(ret); } @@ -46,7 +46,7 @@ TEST(InterpolationOrbit, PushAndPop) { // False test double time = 2.0; - math::Vector<3> position{-100.0}; + s2e::math::Vector<3> position{-100.0}; bool ret = interpolation_orbit.PushAndPopData(time, position); EXPECT_FALSE(ret); } From 2fb5f5270015d90f343d21db25f7dc8f792b2292 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 2 Oct 2024 00:01:38 +0900 Subject: [PATCH 452/456] Rename namespace ground_station --- .../real/communication/ground_station_calculator.cpp | 8 ++++---- .../real/communication/ground_station_calculator.hpp | 8 ++++---- src/simulation/ground_station/ground_station.cpp | 10 +++++----- src/simulation/ground_station/ground_station.hpp | 10 +++++----- .../ground_station/sample_ground_station.cpp | 6 +++--- .../ground_station/sample_ground_station.hpp | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 9c83ae730..864cbd10f 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -30,7 +30,7 @@ GroundStationCalculator::GroundStationCalculator(const double loss_polarization_ GroundStationCalculator::~GroundStationCalculator() {} void GroundStationCalculator::Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, - const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { bool is_visible = ground_station.IsVisible(spacecraft.GetSpacecraftId()); if (is_visible) { max_bitrate_Mbps_ = CalcMaxBitrate(spacecraft.GetDynamics(), spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); @@ -43,7 +43,7 @@ void GroundStationCalculator::Update(const simulation::Spacecraft& spacecraft, c // Private functions double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dBHz = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); double margin_for_bitrate_dB = cn0_dBHz - (ebn0_dB_ + hardware_deterioration_dB_ + coding_gain_dB_) - margin_requirement_dB_; @@ -56,14 +56,14 @@ double GroundStationCalculator::CalcMaxBitrate(const dynamics::Dynamics& dynamic } double GroundStationCalculator::CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { double cn0_dB = CalcCn0OnGs(dynamics, spacecraft_tx_antenna, ground_station, ground_station_rx_antenna); double cn0_requirement_dB = ebn0_dB_ + hardware_deterioration_dB_ + coding_gain_dB_ + 10.0 * log10(spacecraft_tx_antenna.GetBitrate_bps()); return cn0_dB - cn0_requirement_dB; } double GroundStationCalculator::CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { + const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { if (!spacecraft_tx_antenna.IsTransmitter() || !ground_station_rx_antenna.IsReceiver()) { // Check compatibility of transmitter and receiver return 0.0f; diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index bc5f8c0f4..2c91ffeb5 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -51,7 +51,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station: Ground station information * @param [in] ground_station_rx_antenna: Antenna mounted on ground station */ - void Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const simulation::GroundStation& ground_station, + void Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); // Override logger::ILoggable TODO: Maybe we don't need logabble, and this class should be used as library. @@ -111,7 +111,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return Max bitrate [Mbps] */ - double CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const simulation::GroundStation& ground_station, + double CalcMaxBitrate(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); /** * @fn CalcReceiveMarginOnGs @@ -123,7 +123,7 @@ class GroundStationCalculator : public logger::ILoggable { * @return Receive margin [dB] */ double CalcReceiveMarginOnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, - const simulation::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); + const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); /** * @fn CalcCn0 @@ -134,7 +134,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station_rx_antenna: Rx Antenna mounted on ground station * @return CN0 [dB] */ - double CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const simulation::GroundStation& ground_station, + double CalcCn0OnGs(const dynamics::Dynamics& dynamics, const Antenna& spacecraft_tx_antenna, const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); }; diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index f03e018eb..d848115fd 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -13,9 +13,9 @@ #include #include -namespace s2e::simulation { +namespace s2e::ground_station { -GroundStation::GroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id) +GroundStation::GroundStation(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id) : ground_station_id_(ground_station_id) { Initialize(configuration, ground_station_id_); number_of_spacecraft_ = configuration->number_of_simulated_spacecraft_; @@ -26,7 +26,7 @@ GroundStation::GroundStation(const SimulationConfiguration* configuration, const GroundStation::~GroundStation() {} -void GroundStation::Initialize(const SimulationConfiguration* configuration, const unsigned int ground_station_id) { +void GroundStation::Initialize(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id) { std::string gs_ini_path = configuration->ground_station_file_list_[0]; auto conf = setting_file_reader::IniAccess(gs_ini_path); @@ -47,7 +47,7 @@ void GroundStation::Initialize(const SimulationConfiguration* configuration, con void GroundStation::LogSetup(logger::Logger& logger) { logger.AddLogList(this); } -void GroundStation::Update(const environment::EarthRotation& celestial_rotation, const Spacecraft& spacecraft) { +void GroundStation::Update(const environment::EarthRotation& celestial_rotation, const simulation::Spacecraft& spacecraft) { math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); position_i_m_ = dcm_ecef2eci * position_ecef_m_; @@ -93,4 +93,4 @@ std::string GroundStation::GetLogValue() const { return str_tmp; } -} // namespace s2e::simulation +} // namespace s2e::ground_station diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index c88f96666..b5179ddd3 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -12,7 +12,7 @@ #include "../simulation_configuration.hpp" -namespace s2e::simulation { +namespace s2e::ground_station { /** * @class GroundStation @@ -24,7 +24,7 @@ class GroundStation : public logger::ILoggable { * @fn GroundStation * @brief Constructor */ - GroundStation(const SimulationConfiguration* configuration, const unsigned int ground_station_id_); + GroundStation(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id_); /** * @fn ~GroundStation * @brief Destructor @@ -35,7 +35,7 @@ class GroundStation : public logger::ILoggable { * @fn Initialize * @brief Virtual function to initialize the ground station */ - virtual void Initialize(const SimulationConfiguration* configuration, const unsigned int ground_station_id); + virtual void Initialize(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id); /** * @fn LogSetup * @brief Virtual function to log output setting for ground station related components @@ -45,7 +45,7 @@ class GroundStation : public logger::ILoggable { * @fn Update * @brief Virtual function of main routine */ - virtual void Update(const environment::EarthRotation& celestial_rotation, const Spacecraft& spacecraft); + virtual void Update(const environment::EarthRotation& celestial_rotation, const simulation::Spacecraft& spacecraft); // Override functions for ILoggable /** @@ -111,6 +111,6 @@ class GroundStation : public logger::ILoggable { bool CalcIsVisible(const math::Vector<3> spacecraft_position_ecef_m); }; -} // namespace s2e::simulation +} // namespace s2e::ground_station #endif // S2E_SIMULATION_GROUND_STATION_GROUND_STATION_HPP_ diff --git a/src/simulation_sample/ground_station/sample_ground_station.cpp b/src/simulation_sample/ground_station/sample_ground_station.cpp index d75acb258..5ca22e707 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.cpp +++ b/src/simulation_sample/ground_station/sample_ground_station.cpp @@ -10,19 +10,19 @@ namespace s2e::sample { SampleGroundStation::SampleGroundStation(const simulation::SimulationConfiguration* configuration, const unsigned int ground_station_id) - : simulation::GroundStation(configuration, ground_station_id) { + : ground_station::GroundStation(configuration, ground_station_id) { components_ = new SampleGsComponents(configuration); } SampleGroundStation::~SampleGroundStation() { delete components_; } void SampleGroundStation::LogSetup(logger::Logger& logger) { - simulation::GroundStation::LogSetup(logger); + ground_station::GroundStation::LogSetup(logger); components_->CompoLogSetUp(logger); } void SampleGroundStation::Update(const environment::EarthRotation& celestial_rotation, const SampleSpacecraft& spacecraft) { - simulation::GroundStation::Update(celestial_rotation, spacecraft); + ground_station::GroundStation::Update(celestial_rotation, spacecraft); components_->GetGsCalculator()->Update(spacecraft, spacecraft.GetInstalledComponents().GetAntenna(), *this, *(components_->GetAntenna())); } diff --git a/src/simulation_sample/ground_station/sample_ground_station.hpp b/src/simulation_sample/ground_station/sample_ground_station.hpp index bee3024f9..0d45f86f4 100644 --- a/src/simulation_sample/ground_station/sample_ground_station.hpp +++ b/src/simulation_sample/ground_station/sample_ground_station.hpp @@ -22,7 +22,7 @@ class SampleGsComponents; * @class SampleGroundStation * @brief An example of user defined ground station class */ -class SampleGroundStation : public simulation::GroundStation { +class SampleGroundStation : public ground_station::GroundStation { public: /** * @fn SampleGroundStation From 5993e4a9daa1f948479727d962ecd9c25f9db970 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 2 Oct 2024 00:16:18 +0900 Subject: [PATCH 453/456] Rename spacecraft namespace --- .../examples/example_change_structure.cpp | 2 +- .../examples/example_change_structure.hpp | 4 ++-- .../ground_station_calculator.cpp | 2 +- .../ground_station_calculator.hpp | 2 +- .../real/propulsion/simple_thruster.cpp | 8 ++++---- .../real/propulsion/simple_thruster.hpp | 10 +++++----- src/disturbances/air_drag.cpp | 4 ++-- src/disturbances/air_drag.hpp | 4 ++-- src/disturbances/disturbances.cpp | 4 ++-- src/disturbances/disturbances.hpp | 4 ++-- src/disturbances/magnetic_disturbance.cpp | 4 ++-- src/disturbances/magnetic_disturbance.hpp | 6 +++--- .../solar_radiation_pressure_disturbance.cpp | 4 ++-- .../solar_radiation_pressure_disturbance.hpp | 4 ++-- src/disturbances/surface_force.cpp | 2 +- src/disturbances/surface_force.hpp | 4 ++-- src/dynamics/dynamics.cpp | 4 ++-- src/dynamics/dynamics.hpp | 8 ++++---- .../ground_station/ground_station.cpp | 2 +- .../ground_station/ground_station.hpp | 2 +- .../spacecraft/installed_components.cpp | 4 ++-- .../spacecraft/installed_components.hpp | 4 ++-- src/simulation/spacecraft/spacecraft.cpp | 14 +++++++------- src/simulation/spacecraft/spacecraft.hpp | 18 +++++++++--------- .../structure/initialize_structure.cpp | 10 +++++----- .../structure/initialize_structure.hpp | 8 +++----- .../structure/kinematics_parameters.cpp | 4 ++-- .../structure/kinematics_parameters.hpp | 4 ++-- .../structure/residual_magnetic_moment.cpp | 4 ++-- .../structure/residual_magnetic_moment.hpp | 4 ++-- .../spacecraft/structure/structure.cpp | 8 ++++---- .../spacecraft/structure/structure.hpp | 14 +++++++------- .../spacecraft/structure/surface.cpp | 4 ++-- .../spacecraft/structure/surface.hpp | 4 ++-- .../spacecraft/sample_components.cpp | 2 +- .../spacecraft/sample_components.hpp | 6 +++--- .../spacecraft/sample_spacecraft.cpp | 2 +- .../spacecraft/sample_spacecraft.hpp | 2 +- 38 files changed, 99 insertions(+), 101 deletions(-) diff --git a/src/components/examples/example_change_structure.cpp b/src/components/examples/example_change_structure.cpp index 62e2a0cc6..e16ca7ac4 100644 --- a/src/components/examples/example_change_structure.cpp +++ b/src/components/examples/example_change_structure.cpp @@ -9,7 +9,7 @@ namespace s2e::components { -ExampleChangeStructure::ExampleChangeStructure(environment::ClockGenerator* clock_generator, simulation::Structure* structure) +ExampleChangeStructure::ExampleChangeStructure(environment::ClockGenerator* clock_generator, spacecraft::Structure* structure) : Component(1, clock_generator), structure_(structure) {} ExampleChangeStructure::~ExampleChangeStructure() {} diff --git a/src/components/examples/example_change_structure.hpp b/src/components/examples/example_change_structure.hpp index bdc4f74c5..7207ebc73 100644 --- a/src/components/examples/example_change_structure.hpp +++ b/src/components/examples/example_change_structure.hpp @@ -25,7 +25,7 @@ class ExampleChangeStructure : public Component, public logger::ILoggable { * @param [in] clock_generator: Clock generator * @param [in] structure: Structure information */ - ExampleChangeStructure(environment::ClockGenerator* clock_generator, simulation::Structure* structure); + ExampleChangeStructure(environment::ClockGenerator* clock_generator, spacecraft::Structure* structure); /** * @fn ~ChangeStructure * @brief Destructor @@ -52,7 +52,7 @@ class ExampleChangeStructure : public Component, public logger::ILoggable { virtual std::string GetLogValue() const override; protected: - simulation::Structure* structure_; //!< Structure information + spacecraft::Structure* structure_; //!< Structure information }; } // namespace s2e::components diff --git a/src/components/real/communication/ground_station_calculator.cpp b/src/components/real/communication/ground_station_calculator.cpp index 864cbd10f..bec0c2fd7 100644 --- a/src/components/real/communication/ground_station_calculator.cpp +++ b/src/components/real/communication/ground_station_calculator.cpp @@ -29,7 +29,7 @@ GroundStationCalculator::GroundStationCalculator(const double loss_polarization_ GroundStationCalculator::~GroundStationCalculator() {} -void GroundStationCalculator::Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, +void GroundStationCalculator::Update(const spacecraft::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna) { bool is_visible = ground_station.IsVisible(spacecraft.GetSpacecraftId()); if (is_visible) { diff --git a/src/components/real/communication/ground_station_calculator.hpp b/src/components/real/communication/ground_station_calculator.hpp index 2c91ffeb5..f0192f2b1 100644 --- a/src/components/real/communication/ground_station_calculator.hpp +++ b/src/components/real/communication/ground_station_calculator.hpp @@ -51,7 +51,7 @@ class GroundStationCalculator : public logger::ILoggable { * @param [in] ground_station: Ground station information * @param [in] ground_station_rx_antenna: Antenna mounted on ground station */ - void Update(const simulation::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const ground_station::GroundStation& ground_station, + void Update(const spacecraft::Spacecraft& spacecraft, const Antenna& spacecraft_tx_antenna, const ground_station::GroundStation& ground_station, const Antenna& ground_station_rx_antenna); // Override logger::ILoggable TODO: Maybe we don't need logabble, and this class should be used as library. diff --git a/src/components/real/propulsion/simple_thruster.cpp b/src/components/real/propulsion/simple_thruster.cpp index 9bde027e3..e30d4b0ce 100644 --- a/src/components/real/propulsion/simple_thruster.cpp +++ b/src/components/real/propulsion/simple_thruster.cpp @@ -15,7 +15,7 @@ namespace s2e::components { SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, - const simulation::Structure* structure, const dynamics::Dynamics* dynamics) + const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator), component_id_(component_id), thruster_position_b_m_(thruster_position_b_m), @@ -30,7 +30,7 @@ SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* SimpleThruster::SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, - const simulation::Structure* structure, const dynamics::Dynamics* dynamics) + const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics) : Component(prescaler, clock_generator, power_port), component_id_(component_id), thruster_position_b_m_(thruster_position_b_m), @@ -123,7 +123,7 @@ math::Vector<3> SimpleThruster::CalcThrustDirection() { } SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, - const simulation::Structure* structure, const dynamics::Dynamics* dynamics) { + const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); @@ -151,7 +151,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, } SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, - const simulation::Structure* structure, const dynamics::Dynamics* dynamics) { + const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics) { setting_file_reader::IniAccess thruster_conf(file_name); std::string section_str = "THRUSTER_" + std::to_string(thruster_id); auto* Section = section_str.c_str(); diff --git a/src/components/real/propulsion/simple_thruster.hpp b/src/components/real/propulsion/simple_thruster.hpp index c1e30b2e4..c6d1901b7 100644 --- a/src/components/real/propulsion/simple_thruster.hpp +++ b/src/components/real/propulsion/simple_thruster.hpp @@ -39,7 +39,7 @@ class SimpleThruster : public Component, public logger::ILoggable { */ SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, const int component_id, const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, - const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const simulation::Structure* structure, + const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn SimpleThruster @@ -58,7 +58,7 @@ class SimpleThruster : public Component, public logger::ILoggable { */ SimpleThruster(const int prescaler, environment::ClockGenerator* clock_generator, PowerPort* power_port, const int component_id, const math::Vector<3> thruster_position_b_m, const math::Vector<3> thrust_direction_b, const double max_magnitude_N, - const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const simulation::Structure* structure, + const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad, const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn ~SimpleThruster @@ -154,7 +154,7 @@ class SimpleThruster : public Component, public logger::ILoggable { */ void Initialize(const double magnitude_standard_deviation_N, const double direction_standard_deviation_rad); - const simulation::Structure* structure_; //!< Spacecraft structure information + const spacecraft::Structure* structure_; //!< Spacecraft structure information const dynamics::Dynamics* dynamics_; //!< Spacecraft dynamics information }; @@ -168,7 +168,7 @@ class SimpleThruster : public Component, public logger::ILoggable { * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, int thruster_id, const std::string file_name, - const simulation::Structure* structure, const dynamics::Dynamics* dynamics); + const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics); /** * @fn InitSimpleThruster * @brief Initialize function os SimpleThruster @@ -180,7 +180,7 @@ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, * @param [in] dynamics: Spacecraft dynamics information */ SimpleThruster InitSimpleThruster(environment::ClockGenerator* clock_generator, PowerPort* power_port, int thruster_id, const std::string file_name, - const simulation::Structure* structure, const dynamics::Dynamics* dynamics); + const spacecraft::Structure* structure, const dynamics::Dynamics* dynamics); } // namespace s2e::components diff --git a/src/disturbances/air_drag.cpp b/src/disturbances/air_drag.cpp index 001422dbc..2c9254070 100644 --- a/src/disturbances/air_drag.cpp +++ b/src/disturbances/air_drag.cpp @@ -14,7 +14,7 @@ namespace s2e::disturbances { -AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, +AirDrag::AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled), wall_temperature_K_(wall_temperature_K), @@ -95,7 +95,7 @@ std::string AirDrag::GetLogValue() const { return str_tmp; } -AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, +AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m) { auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "AIR_DRAG"; diff --git a/src/disturbances/air_drag.hpp b/src/disturbances/air_drag.hpp index 73d5cbd9b..54e5d3896 100644 --- a/src/disturbances/air_drag.hpp +++ b/src/disturbances/air_drag.hpp @@ -32,7 +32,7 @@ class AirDrag : public SurfaceForce { * @param [in] molecular_weight_g_mol: Molecular weight [g/mol] * @param [in] is_calculation_enabled: Calculation flag */ - AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, + AirDrag(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const double wall_temperature_K, const double molecular_temperature_K, const double molecular_weight_g_mol, const bool is_calculation_enabled = true); /** @@ -98,7 +98,7 @@ class AirDrag : public SurfaceForce { * @param [in] surfaces: surface information of the spacecraft * @param [in] center_of_gravity_b_m: Center of gravity position vector at body frame [m] */ -AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, +AirDrag InitAirDrag(const std::string initialize_file_path, const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m); } // namespace s2e::disturbances diff --git a/src/disturbances/disturbances.cpp b/src/disturbances/disturbances.cpp index 86e7da768..c3e3fd018 100644 --- a/src/disturbances/disturbances.cpp +++ b/src/disturbances/disturbances.cpp @@ -18,7 +18,7 @@ namespace s2e::disturbances { Disturbances::Disturbances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, - const simulation::Structure* structure, const environment::GlobalEnvironment* global_environment) { + const spacecraft::Structure* structure, const environment::GlobalEnvironment* global_environment) { InitializeInstances(simulation_configuration, spacecraft_id, structure, global_environment); InitializeForceAndTorque(); InitializeAcceleration(); @@ -59,7 +59,7 @@ void Disturbances::LogSetup(logger::Logger& logger) { } void Disturbances::InitializeInstances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, - const simulation::Structure* structure, const environment::GlobalEnvironment* global_environment) { + const spacecraft::Structure* structure, const environment::GlobalEnvironment* global_environment) { setting_file_reader::IniAccess ini_access = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); initialize_file_name_ = ini_access.ReadString("SETTING_FILES", "disturbance_file"); diff --git a/src/disturbances/disturbances.hpp b/src/disturbances/disturbances.hpp index 243f446b1..6e242e058 100644 --- a/src/disturbances/disturbances.hpp +++ b/src/disturbances/disturbances.hpp @@ -30,7 +30,7 @@ class Disturbances { * @param [in] structure: Structure information of spacecraft * @param [in] global_environment: Global environment information */ - Disturbances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, const simulation::Structure* structure, + Disturbances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, const spacecraft::Structure* structure, const environment::GlobalEnvironment* global_environment); /** * @fn ~Disturbances @@ -89,7 +89,7 @@ class Disturbances { * @param [in] global_environment: Global environment information */ void InitializeInstances(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id, - const simulation::Structure* structure, const environment::GlobalEnvironment* global_environment); + const spacecraft::Structure* structure, const environment::GlobalEnvironment* global_environment); /** * @fn InitializeForceAndTorque * @brief Initialize disturbance force and torque diff --git a/src/disturbances/magnetic_disturbance.cpp b/src/disturbances/magnetic_disturbance.cpp index ad48b6bed..ea0029218 100644 --- a/src/disturbances/magnetic_disturbance.cpp +++ b/src/disturbances/magnetic_disturbance.cpp @@ -15,7 +15,7 @@ namespace s2e::disturbances { -MagneticDisturbance::MagneticDisturbance(const simulation::ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) +MagneticDisturbance::MagneticDisturbance(const spacecraft::ResidualMagneticMoment& rmm_params, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), residual_magnetic_moment_(rmm_params) { rmm_b_Am2_ = residual_magnetic_moment_.GetConstantValue_b_Am2(); } @@ -64,7 +64,7 @@ std::string MagneticDisturbance::GetLogValue() const { return str_tmp; } -MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const simulation::ResidualMagneticMoment& rmm_params) { +MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const spacecraft::ResidualMagneticMoment& rmm_params) { auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "MAGNETIC_DISTURBANCE"; diff --git a/src/disturbances/magnetic_disturbance.hpp b/src/disturbances/magnetic_disturbance.hpp index 166060674..f51b3924b 100644 --- a/src/disturbances/magnetic_disturbance.hpp +++ b/src/disturbances/magnetic_disturbance.hpp @@ -27,7 +27,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] rmm_parameters: RMM parameters of the spacecraft * @param [in] is_calculation_enabled: Calculation flag */ - MagneticDisturbance(const simulation::ResidualMagneticMoment& rmm_parameters, const bool is_calculation_enabled = true); + MagneticDisturbance(const spacecraft::ResidualMagneticMoment& rmm_parameters, const bool is_calculation_enabled = true); /** * @fn Update @@ -53,7 +53,7 @@ class MagneticDisturbance : public Disturbance { const double kMagUnit_ = 1.0e-9; //!< Constant value to change the unit [nT] -> [T] math::Vector<3> rmm_b_Am2_; //!< True RMM of the spacecraft in the body frame [Am2] - const simulation::ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters + const spacecraft::ResidualMagneticMoment& residual_magnetic_moment_; //!< RMM parameters /** * @fn CalcRMM @@ -75,7 +75,7 @@ class MagneticDisturbance : public Disturbance { * @param [in] initialize_file_path: Initialize file path * @param [in] rmm_params: RMM parameters */ -MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const simulation::ResidualMagneticMoment& rmm_params); +MagneticDisturbance InitMagneticDisturbance(const std::string initialize_file_path, const spacecraft::ResidualMagneticMoment& rmm_params); } // namespace s2e::disturbances diff --git a/src/disturbances/solar_radiation_pressure_disturbance.cpp b/src/disturbances/solar_radiation_pressure_disturbance.cpp index c5f6b7af1..369048683 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.cpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.cpp @@ -12,7 +12,7 @@ namespace s2e::disturbances { -SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, +SolarRadiationPressureDisturbance::SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : SurfaceForce(surfaces, center_of_gravity_b_m, is_calculation_enabled) {} @@ -55,7 +55,7 @@ std::string SolarRadiationPressureDisturbance::GetLogValue() const { } SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, - const std::vector& surfaces, + const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m) { auto conf = setting_file_reader::IniAccess(initialize_file_path); const char* section = "SOLAR_RADIATION_PRESSURE_DISTURBANCE"; diff --git a/src/disturbances/solar_radiation_pressure_disturbance.hpp b/src/disturbances/solar_radiation_pressure_disturbance.hpp index 73daceccd..8f2d22f82 100644 --- a/src/disturbances/solar_radiation_pressure_disturbance.hpp +++ b/src/disturbances/solar_radiation_pressure_disturbance.hpp @@ -27,7 +27,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, + SolarRadiationPressureDisturbance(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** @@ -68,7 +68,7 @@ class SolarRadiationPressureDisturbance : public SurfaceForce { * @param [in] center_of_gravity_b_m: Center of gravity position vector at body frame [m] */ SolarRadiationPressureDisturbance InitSolarRadiationPressureDisturbance(const std::string initialize_file_path, - const std::vector& surfaces, + const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m); } // namespace s2e::disturbances diff --git a/src/disturbances/surface_force.cpp b/src/disturbances/surface_force.cpp index 4825640b7..391a78274 100644 --- a/src/disturbances/surface_force.cpp +++ b/src/disturbances/surface_force.cpp @@ -9,7 +9,7 @@ namespace s2e::disturbances { -SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, +SurfaceForce::SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled) : Disturbance(is_calculation_enabled, true), surfaces_(surfaces), center_of_gravity_b_m_(center_of_gravity_b_m) { // Initialize vectors diff --git a/src/disturbances/surface_force.hpp b/src/disturbances/surface_force.hpp index 53d145557..36af265a5 100644 --- a/src/disturbances/surface_force.hpp +++ b/src/disturbances/surface_force.hpp @@ -30,7 +30,7 @@ class SurfaceForce : public Disturbance { * @param [in] center_of_gravity_b_m: Center of gravity position at the body frame [m] * @param [in] is_calculation_enabled: Calculation flag */ - SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, + SurfaceForce(const std::vector& surfaces, const math::Vector<3>& center_of_gravity_b_m, const bool is_calculation_enabled = true); /** * @fn ~SurfaceForce @@ -40,7 +40,7 @@ class SurfaceForce : public Disturbance { protected: // Spacecraft Structure parameters - const std::vector& surfaces_; //!< List of surfaces + const std::vector& surfaces_; //!< List of surfaces const math::Vector<3>& center_of_gravity_b_m_; //!< Position vector of the center of mass_kg at body frame [m] // Internal calculated variables diff --git a/src/dynamics/dynamics.cpp b/src/dynamics/dynamics.cpp index 30f5379ba..a096eedad 100644 --- a/src/dynamics/dynamics.cpp +++ b/src/dynamics/dynamics.cpp @@ -8,7 +8,7 @@ namespace s2e::dynamics { Dynamics::Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, - const environment::LocalEnvironment* local_environment, const int spacecraft_id, simulation::Structure* structure, + const environment::LocalEnvironment* local_environment, const int spacecraft_id, spacecraft::Structure* structure, simulation::RelativeInformation* relative_information) : structure_(structure), local_environment_(local_environment) { Initialize(simulation_configuration, simulation_time, spacecraft_id, structure, relative_information); @@ -21,7 +21,7 @@ Dynamics::~Dynamics() { } void Dynamics::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, - const int spacecraft_id, simulation::Structure* structure, simulation::RelativeInformation* relative_information) { + const int spacecraft_id, spacecraft::Structure* structure, simulation::RelativeInformation* relative_information) { const environment::LocalCelestialInformation& local_celestial_information = local_environment_->GetCelestialInformation(); // Initialize orbit_ = orbit::InitOrbit(&(local_celestial_information.GetGlobalInformation()), simulation_configuration->spacecraft_file_list_[spacecraft_id], diff --git a/src/dynamics/dynamics.hpp b/src/dynamics/dynamics.hpp index 05f986807..4bfd91673 100644 --- a/src/dynamics/dynamics.hpp +++ b/src/dynamics/dynamics.hpp @@ -40,11 +40,11 @@ class Dynamics { * @param [in] simulation_time: Simulation time * @param [in] local_celestial_information: Local celestial information * @param [in] spacecraft_id: Spacecraft ID of the spacecraft - * @param [in] structure: simulation::Structure of the spacecraft + * @param [in] structure: spacecraft::Structure of the spacecraft * @param [in] relative_information: Relative information */ Dynamics(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, - const environment::LocalEnvironment* local_environment, const int spacecraft_id, simulation::Structure* structure, + const environment::LocalEnvironment* local_environment, const int spacecraft_id, spacecraft::Structure* structure, simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); /** * @fn ~Dynamics @@ -118,7 +118,7 @@ class Dynamics { attitude::Attitude* attitude_; //!< Attitude dynamics orbit::Orbit* orbit_; //!< Orbit dynamics thermal::Temperature* temperature_; //!< Thermal dynamics - const simulation::Structure* structure_; //!< Structure information + const spacecraft::Structure* structure_; //!< Structure information const environment::LocalEnvironment* local_environment_; //!< Local environment /** @@ -132,7 +132,7 @@ class Dynamics { * @param [in] relative_information: Relative information */ void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::SimulationTime* simulation_time, - const int spacecraft_id, simulation::Structure* structure, + const int spacecraft_id, spacecraft::Structure* structure, simulation::RelativeInformation* relative_information = (simulation::RelativeInformation*)nullptr); }; diff --git a/src/simulation/ground_station/ground_station.cpp b/src/simulation/ground_station/ground_station.cpp index d848115fd..2c06c7b4c 100644 --- a/src/simulation/ground_station/ground_station.cpp +++ b/src/simulation/ground_station/ground_station.cpp @@ -47,7 +47,7 @@ void GroundStation::Initialize(const simulation::SimulationConfiguration* config void GroundStation::LogSetup(logger::Logger& logger) { logger.AddLogList(this); } -void GroundStation::Update(const environment::EarthRotation& celestial_rotation, const simulation::Spacecraft& spacecraft) { +void GroundStation::Update(const environment::EarthRotation& celestial_rotation, const spacecraft::Spacecraft& spacecraft) { math::Matrix<3, 3> dcm_ecef2eci = celestial_rotation.GetDcmJ2000ToEcef().Transpose(); position_i_m_ = dcm_ecef2eci * position_ecef_m_; diff --git a/src/simulation/ground_station/ground_station.hpp b/src/simulation/ground_station/ground_station.hpp index b5179ddd3..866b31edf 100644 --- a/src/simulation/ground_station/ground_station.hpp +++ b/src/simulation/ground_station/ground_station.hpp @@ -45,7 +45,7 @@ class GroundStation : public logger::ILoggable { * @fn Update * @brief Virtual function of main routine */ - virtual void Update(const environment::EarthRotation& celestial_rotation, const simulation::Spacecraft& spacecraft); + virtual void Update(const environment::EarthRotation& celestial_rotation, const spacecraft::Spacecraft& spacecraft); // Override functions for ILoggable /** diff --git a/src/simulation/spacecraft/installed_components.cpp b/src/simulation/spacecraft/installed_components.cpp index 7302e2ed5..c6a482fce 100644 --- a/src/simulation/spacecraft/installed_components.cpp +++ b/src/simulation/spacecraft/installed_components.cpp @@ -7,7 +7,7 @@ #include -namespace s2e::simulation { +namespace s2e::spacecraft { math::Vector<3> InstalledComponents::GenerateForce_b_N() { math::Vector<3> force_b_N_(0.0); @@ -21,4 +21,4 @@ math::Vector<3> InstalledComponents::GenerateTorque_b_Nm() { void InstalledComponents::LogSetup(logger::Logger& logger) { UNUSED(logger); } -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/installed_components.hpp b/src/simulation/spacecraft/installed_components.hpp index 5b9f44b8c..096bba236 100644 --- a/src/simulation/spacecraft/installed_components.hpp +++ b/src/simulation/spacecraft/installed_components.hpp @@ -9,7 +9,7 @@ #include #include -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @class InstalledComponents @@ -51,6 +51,6 @@ class InstalledComponents { virtual void LogSetup(logger::Logger& logger); }; -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_INSTALLED_COMPONENTS_HPP_ diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index 19f4db5c5..24dd7a067 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -8,10 +8,10 @@ #include #include -namespace s2e::simulation { +namespace s2e::spacecraft { -Spacecraft::Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const int spacecraft_id, RelativeInformation* relative_information) +Spacecraft::Spacecraft(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, + const int spacecraft_id, simulation::RelativeInformation* relative_information) : spacecraft_id_(spacecraft_id) { Initialize(simulation_configuration, global_environment, spacecraft_id, relative_information); } @@ -27,10 +27,10 @@ Spacecraft::~Spacecraft() { delete components_; } -void Spacecraft::Initialize(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const int spacecraft_id, RelativeInformation* relative_information) { +void Spacecraft::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, + const int spacecraft_id, simulation::RelativeInformation* relative_information) { clock_generator_.ClearTimerCount(); - structure_ = new simulation::Structure(simulation_configuration, spacecraft_id); + structure_ = new spacecraft::Structure(simulation_configuration, spacecraft_id); local_environment_ = new environment::LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); dynamics_ = new dynamics::Dynamics(simulation_configuration, &(global_environment->GetSimulationTime()), local_environment_, spacecraft_id, structure_, relative_information); @@ -77,4 +77,4 @@ void Spacecraft::Update(const environment::SimulationTime* simulation_time) { void Spacecraft::Clear(void) { dynamics_->ClearForceTorque(); } -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index dc673105b..05afc0b96 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -15,7 +15,7 @@ #include "installed_components.hpp" #include "structure/structure.hpp" -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @class Spacecraft @@ -27,8 +27,8 @@ class Spacecraft { * @fn Spacecraft * @brief Constructor for single satellite simulation */ - Spacecraft(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const int spacecraft_id, RelativeInformation* relative_information = nullptr); + Spacecraft(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, + const int spacecraft_id, simulation::RelativeInformation* relative_information = nullptr); /** * @fn ~Spacecraft @@ -45,8 +45,8 @@ class Spacecraft { * @fn Initialize * @brief Initialize function for multiple spacecraft simulation */ - virtual void Initialize(const SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const int spacecraft_id, RelativeInformation* relative_information = nullptr); + virtual void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, + const int spacecraft_id, simulation::RelativeInformation* relative_information = nullptr); /** * @fn Update @@ -86,7 +86,7 @@ class Spacecraft { * @fn GetStructure * @brief Get structure of the spacecraft */ - inline const simulation::Structure& GetStructure() const { return *structure_; } + inline const spacecraft::Structure& GetStructure() const { return *structure_; } /** * @fn GetInstalledComponents * @brief Get components installed on the spacecraft @@ -101,14 +101,14 @@ class Spacecraft { protected: environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft - RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft + simulation::RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft - simulation::Structure* structure_; //!< Structure information of the spacecraft + spacecraft::Structure* structure_; //!< Structure information of the spacecraft InstalledComponents* components_; //!< Components information installed on the spacecraft const unsigned int spacecraft_id_; //!< ID of the spacecraft }; -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_SPACECRAFT_HPP_ diff --git a/src/simulation/spacecraft/structure/initialize_structure.cpp b/src/simulation/spacecraft/structure/initialize_structure.cpp index bfdea9145..4fa2b131c 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.cpp +++ b/src/simulation/spacecraft/structure/initialize_structure.cpp @@ -8,7 +8,7 @@ #include #include -namespace s2e::simulation { +namespace s2e::spacecraft { #define MIN_VAL 1e-6 KinematicsParameters InitKinematicsParameters(std::string file_name) { @@ -31,14 +31,14 @@ KinematicsParameters InitKinematicsParameters(std::string file_name) { return kinematics_params; } -std::vector InitSurfaces(std::string file_name) { +std::vector InitSurfaces(std::string file_name) { using std::cout; auto conf = setting_file_reader::IniAccess(file_name); const char* section = "SURFACES"; const int num_surface = conf.ReadInt(section, "number_of_surfaces"); - std::vector surfaces; + std::vector surfaces; for (int i = 0; i < num_surface; i++) { std::string idx = std::to_string(i); @@ -103,7 +103,7 @@ std::vector InitSurfaces(std::string file_name) { } // Add a surface - surfaces.push_back(simulation::Surface(position, normal, area, ref, spe, air_spe)); + surfaces.push_back(spacecraft::Surface(position, normal, area, ref, spe, air_spe)); } return surfaces; } @@ -122,4 +122,4 @@ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name) { return rmm_params; } -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/structure/initialize_structure.hpp b/src/simulation/spacecraft/structure/initialize_structure.hpp index 34a58888e..8995a9689 100644 --- a/src/simulation/spacecraft/structure/initialize_structure.hpp +++ b/src/simulation/spacecraft/structure/initialize_structure.hpp @@ -6,11 +6,9 @@ #ifndef S2E_SIMULATION_SPACECRAFT_STRUCTURE_INITIALIZE_STRUCTURE_HPP_ #define S2E_SIMULATION_SPACECRAFT_STRUCTURE_INITIALIZE_STRUCTURE_HPP_ -#pragma once - #include -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @fn InitKinematicsParameters @@ -21,13 +19,13 @@ KinematicsParameters InitKinematicsParameters(std::string file_name); * @fn InitSurfaces * @brief Initialize the multiple surfaces with an ini file */ -std::vector InitSurfaces(std::string file_name); +std::vector InitSurfaces(std::string file_name); /** * @fn InitResidualMagneticMoment * @brief Initialize the RMM(Residual Magnetic Moment) parameters with an ini file */ ResidualMagneticMoment InitResidualMagneticMoment(std::string file_name); -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_INITIALIZE_STRUCTURE_HPP_ diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.cpp b/src/simulation/spacecraft/structure/kinematics_parameters.cpp index 0734e849d..5768c73e7 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.cpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.cpp @@ -5,9 +5,9 @@ #include "kinematics_parameters.hpp" -namespace s2e::simulation { +namespace s2e::spacecraft { KinematicsParameters::KinematicsParameters(math::Vector<3> center_of_gravity_b_m, double mass_kg, math::Matrix<3, 3> inertia_tensor_b_kgm2) : center_of_gravity_b_m_(center_of_gravity_b_m), mass_kg_(mass_kg), inertia_tensor_b_kgm2_(inertia_tensor_b_kgm2) {} -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index c4dfadeb2..33cc7cb9b 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -9,7 +9,7 @@ #include #include -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @class KinematicsParameters @@ -88,6 +88,6 @@ class KinematicsParameters { math::Matrix<3, 3> inertia_tensor_b_kgm2_; //!< Inertia tensor at body frame [kgm2] }; -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_KINEMATICS_PARAMETERS_HPP_ diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp index 7f7108f61..7e10c5014 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.cpp @@ -5,7 +5,7 @@ #include "residual_magnetic_moment.hpp" -namespace s2e::simulation { +namespace s2e::spacecraft { ResidualMagneticMoment::ResidualMagneticMoment(const math::Vector<3> constant_value_b_Am2_, const double random_walk_standard_deviation_Am2, const double random_walk_limit_Am2, const double random_noise_standard_deviation_Am2) @@ -14,4 +14,4 @@ ResidualMagneticMoment::ResidualMagneticMoment(const math::Vector<3> constant_va random_walk_limit_Am2_(random_walk_limit_Am2), random_noise_standard_deviation_Am2_(random_noise_standard_deviation_Am2) {} -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index ae06bb85d..7fbb338d6 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -8,7 +8,7 @@ #include -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @class ResidualMagneticMoment @@ -71,6 +71,6 @@ class ResidualMagneticMoment { double random_noise_standard_deviation_Am2_; //!< Standard deviation of white noise of RMM [Am2] }; -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_RESIDUAL_MAGNETIC_MOMENT_HPP_ \ No newline at end of file diff --git a/src/simulation/spacecraft/structure/structure.cpp b/src/simulation/spacecraft/structure/structure.cpp index 72260265d..af7e345d7 100644 --- a/src/simulation/spacecraft/structure/structure.cpp +++ b/src/simulation/spacecraft/structure/structure.cpp @@ -8,9 +8,9 @@ #include #include -namespace s2e::simulation { +namespace s2e::spacecraft { -Structure::Structure(const SimulationConfiguration* simulation_configuration, const int spacecraft_id) { +Structure::Structure(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id) { Initialize(simulation_configuration, spacecraft_id); } @@ -19,7 +19,7 @@ Structure::~Structure() { delete residual_magnetic_moment_; } -void Structure::Initialize(const SimulationConfiguration* simulation_configuration, const int spacecraft_id) { +void Structure::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id) { // Read file name setting_file_reader::IniAccess conf = setting_file_reader::IniAccess(simulation_configuration->spacecraft_file_list_[spacecraft_id]); std::string ini_fname = conf.ReadString("SETTING_FILES", "structure_file"); @@ -31,4 +31,4 @@ void Structure::Initialize(const SimulationConfiguration* simulation_configurati residual_magnetic_moment_ = new ResidualMagneticMoment(InitResidualMagneticMoment(ini_fname)); } -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/structure/structure.hpp b/src/simulation/spacecraft/structure/structure.hpp index 6a1b87ae0..f1bea3580 100644 --- a/src/simulation/spacecraft/structure/structure.hpp +++ b/src/simulation/spacecraft/structure/structure.hpp @@ -13,7 +13,7 @@ #include "residual_magnetic_moment.hpp" #include "surface.hpp" -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @class Structure @@ -25,7 +25,7 @@ class Structure { * @fn Structure * @brief Constructor */ - Structure(const SimulationConfiguration* simulation_configuration, const int spacecraft_id); + Structure(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id); /** * @fn ~Structure * @brief Destructor @@ -35,14 +35,14 @@ class Structure { * @fn Initialize * @brief Initialize function */ - void Initialize(const SimulationConfiguration* simulation_configuration, const int spacecraft_id); + void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const int spacecraft_id); // Getter /** * @fn GetSurfaces * @brief Return surface information */ - inline const std::vector& GetSurfaces() const { return surfaces_; } + inline const std::vector& GetSurfaces() const { return surfaces_; } /** * @fn GetKinematicsParameters * @brief Return kinematics information @@ -58,7 +58,7 @@ class Structure { * @fn GetToSetSurfaces * @brief Return surface information */ - inline std::vector& GetToSetSurfaces() { return surfaces_; } + inline std::vector& GetToSetSurfaces() { return surfaces_; } /** * @fn GetToSetKinematicsParameters * @brief Return kinematics information @@ -72,10 +72,10 @@ class Structure { private: KinematicsParameters* kinematics_parameters_; //!< Kinematics parameters - std::vector surfaces_; //!< Surface information + std::vector surfaces_; //!< Surface information ResidualMagneticMoment* residual_magnetic_moment_; //!< Residual Magnetic Moment }; -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_STRUCTURE_HPP_ diff --git a/src/simulation/spacecraft/structure/surface.cpp b/src/simulation/spacecraft/structure/surface.cpp index 16b8b5f24..316d6165e 100644 --- a/src/simulation/spacecraft/structure/surface.cpp +++ b/src/simulation/spacecraft/structure/surface.cpp @@ -5,7 +5,7 @@ #include "surface.hpp" -namespace s2e::simulation { +namespace s2e::spacecraft { Surface::Surface(const math::Vector<3> position_b_m, const math::Vector<3> normal_b, const double area_m2, const double reflectivity, const double specularity, const double air_specularity) @@ -16,4 +16,4 @@ Surface::Surface(const math::Vector<3> position_b_m, const math::Vector<3> norma specularity_(specularity), air_specularity_(air_specularity) {} -} // namespace s2e::simulation +} // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 73a09d6e6..9f5375a29 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -8,7 +8,7 @@ #include -namespace s2e::simulation { +namespace s2e::spacecraft { /** * @class Surface @@ -115,6 +115,6 @@ class Surface { double air_specularity_; //!< Specularity for air drag }; -} // namespace s2e::simulation +} // namespace s2e::spacecraft #endif // S2E_SIMULATION_SPACECRAFT_STRUCTURE_SURFACE_HPP_ diff --git a/src/simulation_sample/spacecraft/sample_components.cpp b/src/simulation_sample/spacecraft/sample_components.cpp index 2226ce032..12cd92b38 100644 --- a/src/simulation_sample/spacecraft/sample_components.cpp +++ b/src/simulation_sample/spacecraft/sample_components.cpp @@ -13,7 +13,7 @@ namespace s2e::sample { using namespace components; -SampleComponents::SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, +SampleComponents::SampleComponents(const dynamics::Dynamics* dynamics, spacecraft::Structure* structure, const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id) diff --git a/src/simulation_sample/spacecraft/sample_components.hpp b/src/simulation_sample/spacecraft/sample_components.hpp index b15bc5b2c..11a534e95 100644 --- a/src/simulation_sample/spacecraft/sample_components.hpp +++ b/src/simulation_sample/spacecraft/sample_components.hpp @@ -58,13 +58,13 @@ namespace s2e::sample { * @class SampleComponents * @brief An example of user side components management class */ -class SampleComponents : public simulation::InstalledComponents { +class SampleComponents : public spacecraft::InstalledComponents { public: /** * @fn SampleComponents * @brief Constructor */ - SampleComponents(const dynamics::Dynamics* dynamics, simulation::Structure* structure, const environment::LocalEnvironment* local_environment, + SampleComponents(const dynamics::Dynamics* dynamics, spacecraft::Structure* structure, const environment::LocalEnvironment* local_environment, const environment::GlobalEnvironment* global_environment, const simulation::SimulationConfiguration* configuration, environment::ClockGenerator* clock_generator, const unsigned int spacecraft_id); /** @@ -142,7 +142,7 @@ class SampleComponents : public simulation::InstalledComponents { // States const simulation::SimulationConfiguration* configuration_; //!< Simulation settings const dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft - simulation::Structure* structure_; //!< Structure information of the spacecraft + spacecraft::Structure* structure_; //!< Structure information of the spacecraft const environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft const environment::GlobalEnvironment* global_environment_; //!< Global environment information }; diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.cpp b/src/simulation_sample/spacecraft/sample_spacecraft.cpp index 13ab3289d..4a4970ab6 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.cpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.cpp @@ -14,7 +14,7 @@ namespace s2e::sample { SampleSpacecraft::SampleSpacecraft(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, const unsigned int spacecraft_id) - : simulation::Spacecraft(simulation_configuration, global_environment, spacecraft_id) { + : spacecraft::Spacecraft(simulation_configuration, global_environment, spacecraft_id) { sample_components_ = new SampleComponents(dynamics_, structure_, local_environment_, global_environment, simulation_configuration, &clock_generator_, spacecraft_id); components_ = sample_components_; diff --git a/src/simulation_sample/spacecraft/sample_spacecraft.hpp b/src/simulation_sample/spacecraft/sample_spacecraft.hpp index 4a3767acc..d745e1774 100644 --- a/src/simulation_sample/spacecraft/sample_spacecraft.hpp +++ b/src/simulation_sample/spacecraft/sample_spacecraft.hpp @@ -18,7 +18,7 @@ namespace s2e::sample { * @class SampleSpacecraft * @brief An example of user side spacecraft class */ -class SampleSpacecraft : public simulation::Spacecraft { +class SampleSpacecraft : public spacecraft::Spacecraft { public: /** * @fn SampleSpacecraft From a4b50bc1f816687a15ebeb6a2d579b94f7bc281c Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 2 Oct 2024 00:18:01 +0900 Subject: [PATCH 454/456] Fix format --- src/simulation/spacecraft/spacecraft.cpp | 5 +++-- src/simulation/spacecraft/spacecraft.hpp | 21 ++++++++++--------- .../spacecraft/structure/structure.hpp | 2 +- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/simulation/spacecraft/spacecraft.cpp b/src/simulation/spacecraft/spacecraft.cpp index 24dd7a067..59e060a3a 100644 --- a/src/simulation/spacecraft/spacecraft.cpp +++ b/src/simulation/spacecraft/spacecraft.cpp @@ -27,8 +27,9 @@ Spacecraft::~Spacecraft() { delete components_; } -void Spacecraft::Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const int spacecraft_id, simulation::RelativeInformation* relative_information) { +void Spacecraft::Initialize(const simulation::SimulationConfiguration* simulation_configuration, + const environment::GlobalEnvironment* global_environment, const int spacecraft_id, + simulation::RelativeInformation* relative_information) { clock_generator_.ClearTimerCount(); structure_ = new spacecraft::Structure(simulation_configuration, spacecraft_id); local_environment_ = new environment::LocalEnvironment(simulation_configuration, global_environment, spacecraft_id); diff --git a/src/simulation/spacecraft/spacecraft.hpp b/src/simulation/spacecraft/spacecraft.hpp index 05afc0b96..b7de8189c 100644 --- a/src/simulation/spacecraft/spacecraft.hpp +++ b/src/simulation/spacecraft/spacecraft.hpp @@ -45,8 +45,9 @@ class Spacecraft { * @fn Initialize * @brief Initialize function for multiple spacecraft simulation */ - virtual void Initialize(const simulation::SimulationConfiguration* simulation_configuration, const environment::GlobalEnvironment* global_environment, - const int spacecraft_id, simulation::RelativeInformation* relative_information = nullptr); + virtual void Initialize(const simulation::SimulationConfiguration* simulation_configuration, + const environment::GlobalEnvironment* global_environment, const int spacecraft_id, + simulation::RelativeInformation* relative_information = nullptr); /** * @fn Update @@ -99,14 +100,14 @@ class Spacecraft { inline unsigned int GetSpacecraftId() const { return spacecraft_id_; } protected: - environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft - dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft - simulation::RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft - environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft - disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft - spacecraft::Structure* structure_; //!< Structure information of the spacecraft - InstalledComponents* components_; //!< Components information installed on the spacecraft - const unsigned int spacecraft_id_; //!< ID of the spacecraft + environment::ClockGenerator clock_generator_; //!< Origin of clock for the spacecraft + dynamics::Dynamics* dynamics_; //!< Dynamics information of the spacecraft + simulation::RelativeInformation* relative_information_; //!< Relative information with respect to the other spacecraft + environment::LocalEnvironment* local_environment_; //!< Local environment information around the spacecraft + disturbances::Disturbances* disturbances_; //!< Disturbance information acting on the spacecraft + spacecraft::Structure* structure_; //!< Structure information of the spacecraft + InstalledComponents* components_; //!< Components information installed on the spacecraft + const unsigned int spacecraft_id_; //!< ID of the spacecraft }; } // namespace s2e::spacecraft diff --git a/src/simulation/spacecraft/structure/structure.hpp b/src/simulation/spacecraft/structure/structure.hpp index f1bea3580..09001aaeb 100644 --- a/src/simulation/spacecraft/structure/structure.hpp +++ b/src/simulation/spacecraft/structure/structure.hpp @@ -72,7 +72,7 @@ class Structure { private: KinematicsParameters* kinematics_parameters_; //!< Kinematics parameters - std::vector surfaces_; //!< Surface information + std::vector surfaces_; //!< Surface information ResidualMagneticMoment* residual_magnetic_moment_; //!< Residual Magnetic Moment }; From 02309c65dde7b9673a97e70f24906819323f99a8 Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 2 Oct 2024 09:27:37 +0900 Subject: [PATCH 455/456] Major version update to v8 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 33e7abacd..19144b325 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.13) project(S2E LANGUAGES CXX DESCRIPTION "S2E: Spacecraft Simulation Environment" - VERSION 7.2.9 + VERSION 8.0.0 ) # build config From 0babc02114fe163eab5d24a9e8d72f865742a8fa Mon Sep 17 00:00:00 2001 From: Satoshi Ikari Date: Wed, 2 Oct 2024 22:48:36 +0900 Subject: [PATCH 456/456] Fix format --- src/components/base/component.hpp | 4 ++-- src/components/base/interface_gpio_component.hpp | 2 +- .../numerical_integration/numerical_integrator.hpp | 2 +- src/math_physics/numerical_integration/runge_kutta.hpp | 2 +- src/simulation/spacecraft/structure/kinematics_parameters.hpp | 2 +- .../spacecraft/structure/residual_magnetic_moment.hpp | 2 +- src/simulation/spacecraft/structure/surface.hpp | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/base/component.hpp b/src/components/base/component.hpp index 2cfc64db5..2b541dffd 100644 --- a/src/components/base/component.hpp +++ b/src/components/base/component.hpp @@ -78,13 +78,13 @@ class Component : public ITickable { * @brief Pure virtual function used to calculate high-frequency disturbances(e.g. RW jitter) * @note Override only when high-frequency disturbances need to be calculated. */ - virtual void FastUpdate() {}; + virtual void FastUpdate(){}; /** * @fn PowerOffRoutine * @brief Pure virtual function executed when the power switch is off. */ - virtual void PowerOffRoutine() {}; + virtual void PowerOffRoutine(){}; environment::ClockGenerator* clock_generator_; //!< Clock generator PowerPort* power_port_; //!< Power port diff --git a/src/components/base/interface_gpio_component.hpp b/src/components/base/interface_gpio_component.hpp index 6a5d3bb75..9df3db260 100644 --- a/src/components/base/interface_gpio_component.hpp +++ b/src/components/base/interface_gpio_component.hpp @@ -18,7 +18,7 @@ class IGPIOCompo { * @fn ~IGPIOCompo * @brief Destructor */ - virtual ~IGPIOCompo() {}; + virtual ~IGPIOCompo(){}; /** * @fn GpioStateChanged diff --git a/src/math_physics/numerical_integration/numerical_integrator.hpp b/src/math_physics/numerical_integration/numerical_integrator.hpp index ae708a753..461bfa225 100644 --- a/src/math_physics/numerical_integration/numerical_integrator.hpp +++ b/src/math_physics/numerical_integration/numerical_integrator.hpp @@ -32,7 +32,7 @@ class NumericalIntegrator { * @fn ~NumericalIntegrator * @brief Destructor */ - inline virtual ~NumericalIntegrator() {}; + inline virtual ~NumericalIntegrator(){}; /** * @fn Integrate diff --git a/src/math_physics/numerical_integration/runge_kutta.hpp b/src/math_physics/numerical_integration/runge_kutta.hpp index a24b4f53b..d2072d4cb 100644 --- a/src/math_physics/numerical_integration/runge_kutta.hpp +++ b/src/math_physics/numerical_integration/runge_kutta.hpp @@ -29,7 +29,7 @@ class RungeKutta : public NumericalIntegrator { * @fn ~RungeKutta * @brief Destructor */ - inline virtual ~RungeKutta() {}; + inline virtual ~RungeKutta(){}; /** * @fn Integrate diff --git a/src/simulation/spacecraft/structure/kinematics_parameters.hpp b/src/simulation/spacecraft/structure/kinematics_parameters.hpp index 33cc7cb9b..4559b3f01 100644 --- a/src/simulation/spacecraft/structure/kinematics_parameters.hpp +++ b/src/simulation/spacecraft/structure/kinematics_parameters.hpp @@ -26,7 +26,7 @@ class KinematicsParameters { * @fn ~KinematicsParameters * @brief Destructor */ - ~KinematicsParameters() {}; + ~KinematicsParameters(){}; // Getter /** diff --git a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp index 7fbb338d6..14037ad30 100644 --- a/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp +++ b/src/simulation/spacecraft/structure/residual_magnetic_moment.hpp @@ -26,7 +26,7 @@ class ResidualMagneticMoment { * @fn ~ResidualMagneticMoment * @brief Destructor */ - ~ResidualMagneticMoment() {}; + ~ResidualMagneticMoment(){}; // Getter /** diff --git a/src/simulation/spacecraft/structure/surface.hpp b/src/simulation/spacecraft/structure/surface.hpp index 9f5375a29..3c286ce94 100644 --- a/src/simulation/spacecraft/structure/surface.hpp +++ b/src/simulation/spacecraft/structure/surface.hpp @@ -26,7 +26,7 @@ class Surface { * @fn ~Surface * @brief Destructor */ - ~Surface() {}; + ~Surface(){}; // Getter /**