From 616e097500730110de2f39ab5737289d41125d23 Mon Sep 17 00:00:00 2001 From: Dario Izzo Date: Thu, 22 Aug 2024 14:10:53 +0200 Subject: [PATCH] cmake policy behaviour update. As well as progressin hf sf --- CMakeLists.txt | 3 ++ src/leg/sims_flanagan_hf.cpp | 87 ++++++++++++++++++------------------ 2 files changed, 47 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dbec63b..abba340 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ # NOTE: current minimum kep3 requirement. cmake_minimum_required(VERSION 3.18.0) +# This effectively requests behavior preferred as of a given CMake version and tells newer CMake versions to warn about their new policies. +cmake_policy(VERSION 3.30) # Set default build type to "Release". # NOTE: this should be done before the project command since the latter can set @@ -170,6 +172,7 @@ target_include_directories(kep3 PUBLIC # Boost. # NOTE: need 1.69 for safe numerics. set(_kep3_MIN_BOOST_VERSION "1.69") + find_package(Boost ${_kep3_MIN_BOOST_VERSION} REQUIRED) target_link_libraries(kep3 PUBLIC Boost::boost) # NOTE: quench warnings from Boost when building the library. diff --git a/src/leg/sims_flanagan_hf.cpp b/src/leg/sims_flanagan_hf.cpp index 6fcd5e4..358eb12 100644 --- a/src/leg/sims_flanagan_hf.cpp +++ b/src/leg/sims_flanagan_hf.cpp @@ -111,30 +111,31 @@ sims_flanagan_hf::sims_flanagan_hf( m_nseg(static_cast(m_throttles.size()) / 3u), m_nseg_fwd(static_cast(static_cast(m_nseg) * m_cut)), m_nseg_bck(m_nseg - m_nseg_fwd) { + // We perform some sanity checks on the user provided inputs _sanity_checks(rvs, ms, m_throttles, rvf, mf, tof, max_thrust, isp, mu, cut); + // If the user provides the taylor integrators we use those, else we provide default ones (Keplerian) if (tas) { m_tas.value() = tas.value(); } else { tas = _build_default_taylors(); - } } // Setters -void sims_flanagan::set_tof(double tof) +void sims_flanagan_hf::set_tof(double tof) { _check_tof(tof); m_tof = tof; } -void sims_flanagan::set_rvs(std::array, 2> rv) +void sims_flanagan_hf::set_rvs(std::array, 2> rv) { m_rvs = rv; } -void sims_flanagan::set_ms(double mass) +void sims_flanagan_hf::set_ms(double mass) { m_ms = mass; } -void sims_flanagan::set_throttles(std::vector throttles) +void sims_flanagan_hf::set_throttles(std::vector throttles) { _check_throttles(throttles); m_throttles = std::move(throttles); @@ -142,7 +143,7 @@ void sims_flanagan::set_throttles(std::vector throttles) m_nseg_fwd = static_cast(static_cast(m_nseg) * m_cut); m_nseg_bck = m_nseg - m_nseg_fwd; } -void sims_flanagan::set_throttles(std::vector::const_iterator it1, std::vector::const_iterator it2) +void sims_flanagan_hf::set_throttles(std::vector::const_iterator it1, std::vector::const_iterator it2) { if (((std::distance(it1, it2) % 3) != 0) || std::distance(it1, it2) <= 0) { throw std::logic_error( @@ -154,41 +155,41 @@ void sims_flanagan::set_throttles(std::vector::const_iterator it1, std:: m_nseg_fwd = static_cast(static_cast(m_nseg) * m_cut); m_nseg_bck = m_nseg - m_nseg_fwd; } -void sims_flanagan::set_rvf(std::array, 2> rv) +void sims_flanagan_hf::set_rvf(std::array, 2> rv) { m_rvf = rv; } -void sims_flanagan::set_mf(double mass) +void sims_flanagan_hf::set_mf(double mass) { m_mf = mass; } -void sims_flanagan::set_max_thrust(double max_thrust) +void sims_flanagan_hf::set_max_thrust(double max_thrust) { _check_max_thrust(max_thrust); m_max_thrust = max_thrust; } -void sims_flanagan::set_isp(double isp) +void sims_flanagan_hf::set_isp(double isp) { _check_isp(isp); m_isp = isp; } -void sims_flanagan::set_mu(double mu) +void sims_flanagan_hf::set_mu(double mu) { _check_mu(mu); m_mu = mu; } -void sims_flanagan::set_cut(double cut) +void sims_flanagan_hf::set_cut(double cut) { _check_cut(cut); m_cut = cut; m_nseg_fwd = static_cast(static_cast(m_nseg) * m_cut); m_nseg_bck = m_nseg - m_nseg_fwd; } -void sims_flanagan::set(const std::array, 2> &rvs, double ms, - const std::vector &throttles, - // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) - const std::array, 2> &rvf, double mf, double tof, double max_thrust, - double isp, double mu, double cut) +void sims_flanagan_hf::set(const std::array, 2> &rvs, double ms, + const std::vector &throttles, + // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) + const std::array, 2> &rvf, double mf, double tof, double max_thrust, + double isp, double mu, double cut) { _sanity_checks(rvs, ms, throttles, rvf, mf, tof, max_thrust, isp, mu, cut); m_rvs = rvs; @@ -207,61 +208,61 @@ void sims_flanagan::set(const std::array, 2> &rvs, double } // Getters -double sims_flanagan::get_tof() const +double sims_flanagan_hf::get_tof() const { return m_tof; } -const std::array, 2> &sims_flanagan::get_rvs() const +const std::array, 2> &sims_flanagan_hf::get_rvs() const { return m_rvs; } -double sims_flanagan::get_ms() const +double sims_flanagan_hf::get_ms() const { return m_ms; } -const std::vector &sims_flanagan::get_throttles() const +const std::vector &sims_flanagan_hf::get_throttles() const { return m_throttles; } -const std::array, 2> &sims_flanagan::get_rvf() const +const std::array, 2> &sims_flanagan_hf::get_rvf() const { return m_rvf; } -double sims_flanagan::get_mf() const +double sims_flanagan_hf::get_mf() const { return m_mf; } -double sims_flanagan::get_max_thrust() const +double sims_flanagan_hf::get_max_thrust() const { return m_max_thrust; } -double sims_flanagan::get_isp() const +double sims_flanagan_hf::get_isp() const { return m_isp; } -double sims_flanagan::get_mu() const +double sims_flanagan_hf::get_mu() const { return m_mu; } -double sims_flanagan::get_cut() const +double sims_flanagan_hf::get_cut() const { return m_cut; } -unsigned sims_flanagan::get_nseg() const +unsigned sims_flanagan_hf::get_nseg() const { return m_nseg; } -unsigned sims_flanagan::get_nseg_fwd() const +unsigned sims_flanagan_hf::get_nseg_fwd() const { return m_nseg_fwd; } -unsigned sims_flanagan::get_nseg_bck() const +unsigned sims_flanagan_hf::get_nseg_bck() const { return m_nseg_bck; } // The core routines -std::array sims_flanagan::compute_mismatch_constraints() const +std::array sims_flanagan_hf::compute_mismatch_constraints() const { // We introduce some convenience variables std::array dv{}; @@ -327,7 +328,7 @@ std::array sims_flanagan::compute_mismatch_constraints() const mass_fwd - mass_bck}; } -std::vector sims_flanagan::compute_throttle_constraints() const +std::vector sims_flanagan_hf::compute_throttle_constraints() const { std::vector retval(m_nseg); for (decltype(m_throttles.size()) i = 0u; i < m_nseg; ++i) { @@ -351,7 +352,7 @@ mat61 _dyn(std::array, 2> rv, double mu) } // Performs the state updates for nseg sarting from rvs, ms. Computes all gradient information -std::pair, std::vector> sims_flanagan::gradients_multiple_impulses( +std::pair, std::vector> sims_flanagan_hf::gradients_multiple_impulses( std::vector::const_iterator th1, std::vector::const_iterator th2, // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) const std::array, 2> &rvs, double ms, double c, double a, double dt) const @@ -486,19 +487,19 @@ std::pair, std::vector> sims_flanagan::gradients_ } std::pair, std::vector> -sims_flanagan::gradients_fwd(std::vector::const_iterator th1, std::vector::const_iterator th2, - // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) - const std::array, 2> &rvs, double ms, double c, double a, - double dt) const +sims_flanagan_hf::gradients_fwd(std::vector::const_iterator th1, std::vector::const_iterator th2, + // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) + const std::array, 2> &rvs, double ms, double c, double a, + double dt) const { return gradients_multiple_impulses(th1, th2, rvs, ms, c, a, dt); } std::pair, std::vector> -sims_flanagan::gradients_bck(std::vector::const_iterator th1, std::vector::const_iterator th2, - // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) - const std::array, 2> &rvf_orig, double mf, double c, double a, - double dt) const +sims_flanagan_hf::gradients_bck(std::vector::const_iterator th1, std::vector::const_iterator th2, + // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) + const std::array, 2> &rvf_orig, double mf, double c, double a, + double dt) const { // 1) we invert the starting velocity. auto rvf = rvf_orig; @@ -585,7 +586,7 @@ std::tuple, std::array, std::vector> return {grad_rvm, grad_rvm_bck, std::move(grad_final)}; } -std::vector sims_flanagan::compute_tc_grad() const +std::vector sims_flanagan_hf::compute_tc_grad() const { std::vector retval(static_cast(m_nseg) * m_nseg * 3u, 0); for (decltype(m_throttles.size()) i = 0u; i < m_nseg; ++i) { @@ -596,7 +597,7 @@ std::vector sims_flanagan::compute_tc_grad() const return retval; } -std::ostream &operator<<(std::ostream &s, const sims_flanagan &sf) +std::ostream &operator<<(std::ostream &s, const sims_flanagan_hf &sf) { s << fmt::format("Number of segments: {}\n", sf.get_nseg()); s << fmt::format("Number of fwd segments: {}\n", sf.get_nseg_fwd());