Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 05a0579ff2be
Choose a base ref
...
head repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 2bd9be1cc2b8
Choose a head ref
  • 5 commits
  • 76 files changed
  • 1 contributor

Commits on Mar 29, 2020

  1. Make si::Unit a constant.

    pleroy committed Mar 29, 2020
    Copy the full SHA
    7afc080 View commit details
  2. Infinity and NaN.

    pleroy committed Mar 29, 2020
    Copy the full SHA
    bb8609b View commit details
  3. Clients of SIUnit.

    pleroy committed Mar 29, 2020
    Copy the full SHA
    fb00608 View commit details
  4. Fix all the clients.

    pleroy committed Mar 29, 2020
    Copy the full SHA
    745f2c4 View commit details
  5. Merge pull request #2512 from pleroy/1075

    Change SIUnit, NaN and Infinity to be constants
    pleroy authored Mar 29, 2020
    Copy the full SHA
    2bd9be1 View commit details
Showing with 724 additions and 755 deletions.
  1. +2 −2 astronomy/epoch.hpp
  2. +3 −3 astronomy/ksp_resonance_test.cpp
  3. +4 −4 astronomy/lunar_orbit_test.cpp
  4. +1 −1 astronomy/standard_product_3.cpp
  5. +5 −5 benchmarks/dynamic_frame.cpp
  6. +0 −1 benchmarks/embedded_explicit_runge_kutta_nyström_integrator.cpp
  7. +3 −3 benchmarks/geopotential.cpp
  8. +4 −4 benchmarks/planetarium_plot_methods.cpp
  9. +2 −2 benchmarks/polynomial.cpp
  10. +1 −1 benchmarks/quantities_body.hpp
  11. +0 −1 benchmarks/symplectic_runge_kutta_nyström_integrator.cpp
  12. +14 −13 geometry/barycentre_calculator_test.cpp
  13. +2 −2 geometry/interval.hpp
  14. +1 −1 geometry/interval_body.hpp
  15. +259 −258 geometry/pair_test.cpp
  16. +0 −1 geometry/point_body.hpp
  17. +0 −1 geometry/r3_element_body.hpp
  18. +0 −1 geometry/r3x3_matrix_body.hpp
  19. +2 −2 geometry/rp2_point_body.hpp
  20. +8 −8 geometry/rp2_point_test.cpp
  21. +3 −2 geometry/sign_body.hpp
  22. +4 −3 integrators/symmetric_linear_multistep_integrator_test.cpp
  23. +4 −3 integrators/symplectic_runge_kutta_nyström_integrator_test.cpp
  24. +2 −2 ksp_plugin/interface.cpp
  25. +10 −9 ksp_plugin/interface_body.hpp
  26. +4 −4 ksp_plugin/interface_monitor.cpp
  27. +0 −1 ksp_plugin/part.cpp
  28. +1 −2 ksp_plugin/plugin.cpp
  29. +24 −24 ksp_plugin_test/interface_test.cpp
  30. +2 −2 ksp_plugin_test/manœuvre_test.cpp
  31. +0 −1 ksp_plugin_test/part_test.cpp
  32. +0 −1 ksp_plugin_test/pile_up_test.cpp
  33. +0 −1 ksp_plugin_test/plugin_integration_test.cpp
  34. +0 −1 ksp_plugin_test/plugin_test.cpp
  35. +0 −1 ksp_plugin_test/vessel_test.cpp
  36. +4 −3 mathematica/integrator_plots.cpp
  37. +2 −2 mathematica/mathematica_body.hpp
  38. +2 −2 numerics/double_precision_body.hpp
  39. +1 −1 numerics/finite_difference_test.cpp
  40. +4 −4 numerics/root_finders_test.cpp
  41. +7 −7 numerics/чебышёв_series_body.hpp
  42. +0 −1 physics/body_centred_body_direction_dynamic_frame_test.cpp
  43. +4 −4 physics/body_centred_non_rotating_dynamic_frame_test.cpp
  44. +8 −8 physics/body_test.cpp
  45. +1 −1 physics/checkpointer_body.hpp
  46. +3 −3 physics/continuous_trajectory_body.hpp
  47. +41 −41 physics/degrees_of_freedom_test.cpp
  48. +0 −1 physics/discrete_trajectory_test.cpp
  49. +2 −2 physics/dynamic_frame_test.cpp
  50. +21 −21 physics/ephemeris_test.cpp
  51. +18 −18 physics/euler_solver.hpp
  52. +0 −1 physics/euler_solver_body.hpp
  53. +119 −119 physics/euler_solver_test.cpp
  54. +2 −2 physics/geopotential.hpp
  55. +3 −5 physics/geopotential_body.hpp
  56. +16 −16 physics/geopotential_test.cpp
  57. +2 −2 physics/hierarchical_system_test.cpp
  58. +2 −2 physics/kepler_orbit_body.hpp
  59. +16 −16 physics/kepler_orbit_test.cpp
  60. +2 −2 physics/oblate_body_body.hpp
  61. +1 −2 physics/rotating_body_body.hpp
  62. +1 −0 quantities/astronomy.hpp
  63. +13 −13 quantities/elementary_functions_body.hpp
  64. +2 −2 quantities/parser_body.hpp
  65. +9 −16 quantities/quantities.hpp
  66. +1 −22 quantities/quantities_body.hpp
  67. +3 −3 quantities/quantities_test.cpp
  68. +15 −8 quantities/si.hpp
  69. +3 −2 testing_utilities/almost_equals_test.cpp
  70. +2 −2 testing_utilities/approximate_quantity_body.hpp
  71. +19 −19 testing_utilities/componentwise_test.cpp
  72. +4 −4 testing_utilities/integration_body.hpp
  73. +1 −1 testing_utilities/numerics_body.hpp
  74. +1 −2 testing_utilities/statistics_body.hpp
  75. +2 −2 testing_utilities/vanishes_before_test.cpp
  76. +2 −2 tools/generate_kopernicus.cpp
4 changes: 2 additions & 2 deletions astronomy/epoch.hpp
Original file line number Diff line number Diff line change
@@ -31,8 +31,8 @@ using quantities::si::Second;
// "2000-01-01T11:58:55,816"_UTC
constexpr Instant J2000;

CONSTEXPR_INFINITY Instant InfinitePast = J2000 - Infinity<Time>();
CONSTEXPR_INFINITY Instant InfiniteFuture = J2000 + Infinity<Time>();
CONSTEXPR_INFINITY Instant InfinitePast = J2000 - Infinity<Time>;
CONSTEXPR_INFINITY Instant InfiniteFuture = J2000 + Infinity<Time>;

} // namespace internal_epoch

6 changes: 3 additions & 3 deletions astronomy/ksp_resonance_test.cpp
Original file line number Diff line number Diff line change
@@ -213,7 +213,7 @@ class KSPResonanceTest : public ::testing::Test {
LOG(INFO) << " " << moon->name();
if (t1 > ephemeris.t_max() || t2 > ephemeris.t_max()) {
LOG(INFO) << " Aperiodic";
actual_periods[moon] = Infinity<Time>();
actual_periods[moon] = Infinity<Time>;
} else {
actual_periods[moon] =
Bisect(moon_y, t2 - Δt, t2) - Bisect(moon_y, t1 - Δt, t1);
@@ -288,8 +288,8 @@ TEST_F(KSPResonanceTest, MSVC_ONLY_TEST(Stock)) {
EXPECT_THAT(RelativeError(periods_at_mid_term.at(laythe_),
expected_periods_.at(laythe_)),
IsNear(0.874_⑴));
EXPECT_THAT(periods_at_mid_term.at(vall_), Eq(Infinity<Time>()));
EXPECT_THAT(periods_at_mid_term.at(tylo_), Eq(Infinity<Time>()));
EXPECT_THAT(periods_at_mid_term.at(vall_), Eq(Infinity<Time>));
EXPECT_THAT(periods_at_mid_term.at(tylo_), Eq(Infinity<Time>));
EXPECT_THAT(RelativeError(periods_at_mid_term.at(bop_),
expected_periods_.at(bop_)), IsNear(0.38_⑴));
EXPECT_THAT(RelativeError(periods_at_mid_term.at(pol_),
8 changes: 4 additions & 4 deletions astronomy/lunar_orbit_test.cpp
Original file line number Diff line number Diff line change
@@ -104,10 +104,10 @@ namespace astronomy {

// A minimum bounding rectangle for a set of values of the eccentricity vector.
struct EccentricityVectorRange {
double min_e_cos_ω = +Infinity<double>();
double max_e_cos_ω = -Infinity<double>();
double min_e_sin_ω = +Infinity<double>();
double max_e_sin_ω = -Infinity<double>();
double min_e_cos_ω = +Infinity<double>;
double max_e_cos_ω = -Infinity<double>;
double min_e_sin_ω = +Infinity<double>;
double max_e_sin_ω = -Infinity<double>;
};

struct GeopotentialTruncation {
2 changes: 1 addition & 1 deletion astronomy/standard_product_3.cpp
Original file line number Diff line number Diff line change
@@ -342,7 +342,7 @@ StandardProduct3::StandardProduct3(
// If the file does not provide velocities, fill the trajectory with NaN
// velocities; we then replace it with another trajectory whose velocities
// are computed using a finite difference formula.
Velocity<ITRS> velocity({NaN<Speed>(), NaN<Speed>(), NaN<Speed>()});
Velocity<ITRS> velocity({NaN<Speed>, NaN<Speed>, NaN<Speed>});

read_line();
if (version_ >= Version::C && line.has_value() && columns(1, 2) == "EP") {
10 changes: 5 additions & 5 deletions benchmarks/dynamic_frame.cpp
Original file line number Diff line number Diff line change
@@ -46,7 +46,6 @@ using integrators::methods::McLachlanAtela1992Order5Optimal;
using ksp_plugin::Barycentric;
using quantities::AngularFrequency;
using quantities::Length;
using quantities::SIUnit;
using quantities::Speed;
using quantities::Time;
using quantities::astronomy::AstronomicalUnit;
@@ -57,6 +56,7 @@ using quantities::si::Milli;
using quantities::si::Minute;
using quantities::si::Radian;
using quantities::si::Second;
namespace si = quantities::si;

namespace physics {

@@ -150,9 +150,9 @@ void BM_BodyCentredNonRotatingDynamicFrame(benchmark::State& state) {
-1 * AstronomicalUnit,
0 * AstronomicalUnit});
Velocity<Barycentric> probe_velocity =
Velocity<Barycentric>({0 * SIUnit<Speed>(),
Velocity<Barycentric>({0 * si::Unit<Speed>,
100 * Kilo(Metre) / Second,
0 * SIUnit<Speed>()});
0 * si::Unit<Speed>});
DiscreteTrajectory<Barycentric> probe_trajectory;
FillLinearTrajectory<Barycentric, DiscreteTrajectory>(probe_initial_position,
probe_velocity,
@@ -200,9 +200,9 @@ void BM_BarycentricRotatingDynamicFrame(benchmark::State& state) {
-1 * AstronomicalUnit,
0 * AstronomicalUnit});
Velocity<Barycentric> probe_velocity =
Velocity<Barycentric>({0 * SIUnit<Speed>(),
Velocity<Barycentric>({0 * si::Unit<Speed>,
100 * Kilo(Metre) / Second,
0 * SIUnit<Speed>()});
0 * si::Unit<Speed>});
DiscreteTrajectory<Barycentric> probe_trajectory;
FillLinearTrajectory<Barycentric, DiscreteTrajectory>(probe_initial_position,
probe_velocity,
Original file line number Diff line number Diff line change
@@ -41,7 +41,6 @@ using quantities::Cos;
using quantities::Length;
using quantities::Mass;
using quantities::Sin;
using quantities::SIUnit;
using quantities::Speed;
using quantities::Stiffness;
using quantities::Time;
6 changes: 3 additions & 3 deletions benchmarks/geopotential.cpp
Original file line number Diff line number Diff line change
@@ -44,13 +44,13 @@ using quantities::Length;
using quantities::ParseQuantity;
using quantities::Pow;
using quantities::Quotient;
using quantities::SIUnit;
using quantities::Sqrt;
using quantities::si::Degree;
using quantities::si::Kilo;
using quantities::si::Metre;
using quantities::si::Radian;
using quantities::si::Second;
namespace si = quantities::si;

template<typename Frame>
Vector<Quotient<Acceleration, GravitationalParameter>, Frame>
@@ -85,7 +85,7 @@ GeneralSphericalHarmonicsAccelerationF90(
Displacement<SurfaceFrame> const r_surface = to_surface_frame(r);
auto const acceleration_surface =
Vector<Quotient<Acceleration, GravitationalParameter>, SurfaceFrame>(
SIUnit<Quotient<Acceleration, GravitationalParameter>>() *
si::Unit<Quotient<Acceleration, GravitationalParameter>> *
astronomy::fortran_astrodynamics_toolkit::
ComputeGravityAccelerationLear<degree, order>(
r_surface.coordinates() / Metre, mu, rbar, cnm, snm));
@@ -220,7 +220,7 @@ void BM_ComputeGeopotentialF90(benchmark::State& state) {
auto const earth = MakeEarthBody(solar_system_2000, max_degree);

double mu =
earth.gravitational_parameter() / SIUnit<GravitationalParameter>();
earth.gravitational_parameter() / si::Unit<GravitationalParameter>;
double rbar = earth.reference_radius() / Metre;

std::mt19937_64 random(42);
8 changes: 4 additions & 4 deletions benchmarks/planetarium_plot_methods.cpp
Original file line number Diff line number Diff line change
@@ -213,10 +213,10 @@ void RunBenchmark(benchmark::State& state,
total_lines += lines.size();
++iterations;
}
Length min_x = Infinity<Length>();
Length min_y = Infinity<Length>();
Length max_x = -Infinity<Length>();
Length max_y = -Infinity<Length>();
Length min_x = Infinity<Length>;
Length min_y = Infinity<Length>;
Length max_x = -Infinity<Length>;
Length max_y = -Infinity<Length>;
int points = 0;
for (auto const& line : lines) {
points += line.size();
4 changes: 2 additions & 2 deletions benchmarks/polynomial.cpp
Original file line number Diff line number Diff line change
@@ -20,8 +20,8 @@ using geometry::Multivector;
using geometry::R3Element;
using quantities::Length;
using quantities::Quantity;
using quantities::SIUnit;
using quantities::Time;
namespace si = quantities::si;

namespace numerics {

@@ -42,7 +42,7 @@ struct ValueGenerator<double> {
template<typename D>
struct ValueGenerator<Quantity<D>> {
static Quantity<D> Get(std::mt19937_64& random) {
return static_cast<double>(random()) * SIUnit<Quantity<D>>();
return static_cast<double>(random()) * si::Unit<Quantity<D>>;
}
};

2 changes: 1 addition & 1 deletion benchmarks/quantities_body.hpp
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@ constexpr std::size_t dimension = 100;
inline void DimensionfulDiscreteCosineTransform(std::vector<Momentum>& result) {
std::vector<Momentum> input(dimension);
for (std::size_t i = 0; i < dimension; ++i) {
input[i] = i * SIUnit<Momentum>();
input[i] = i * si::Unit<Momentum>;
}
result.resize(dimension);
double sign = 1;
1 change: 0 additions & 1 deletion benchmarks/symplectic_runge_kutta_nyström_integrator.cpp
Original file line number Diff line number Diff line change
@@ -41,7 +41,6 @@ using quantities::Cos;
using quantities::Length;
using quantities::Mass;
using quantities::Sin;
using quantities::SIUnit;
using quantities::Speed;
using quantities::Stiffness;
using quantities::Time;
27 changes: 14 additions & 13 deletions geometry/barycentre_calculator_test.cpp
Original file line number Diff line number Diff line change
@@ -8,15 +8,16 @@
#include "gtest/gtest.h"
#include "quantities/named_quantities.hpp"
#include "quantities/quantities.hpp"
#include "quantities/si.hpp"
#include "testing_utilities/almost_equals.hpp"

namespace principia {

using geometry::Frame;
using quantities::Entropy;
using quantities::KinematicViscosity;
using quantities::SIUnit;
using testing_utilities::AlmostEquals;
namespace si = quantities::si;

namespace geometry {

@@ -25,14 +26,14 @@ class BarycentreCalculatorTest : public testing::Test {
using World = Frame<enum class WorldTag>;

BarycentreCalculatorTest()
: b1_({1 * SIUnit<Entropy>(),
-2 * SIUnit<Entropy>(),
3 * SIUnit<Entropy>()}),
b2_({-9 * SIUnit<Entropy>(),
8 * SIUnit<Entropy>(),
7 * SIUnit<Entropy>()}),
k1_(4 * SIUnit<KinematicViscosity>()),
k2_(5 * SIUnit<KinematicViscosity>()) {}
: b1_({1 * si::Unit<Entropy>,
-2 * si::Unit<Entropy>,
3 * si::Unit<Entropy>}),
b2_({-9 * si::Unit<Entropy>,
8 * si::Unit<Entropy>,
7 * si::Unit<Entropy>}),
k1_(4 * si::Unit<KinematicViscosity>),
k2_(5 * si::Unit<KinematicViscosity>) {}

Bivector<Entropy, World> b1_;
Bivector<Entropy, World> b2_;
@@ -57,9 +58,9 @@ TEST_F(BarycentreCalculatorTest, Bivector) {
barycentre_calculator.Add(b2_, k2_);
EXPECT_THAT(barycentre_calculator.Get(),
AlmostEquals(
Bivector<Entropy, World>({(-41.0 / 9.0) * SIUnit<Entropy>(),
(32.0 / 9.0) * SIUnit<Entropy>(),
(47.0 / 9.0) * SIUnit<Entropy>()}),
Bivector<Entropy, World>({(-41.0 / 9.0) * si::Unit<Entropy>,
(32.0 / 9.0) * si::Unit<Entropy>,
(47.0 / 9.0) * si::Unit<Entropy>}),
0));
}

@@ -68,7 +69,7 @@ TEST_F(BarycentreCalculatorTest, Scalar) {
barycentre_calculator.Add(k1_, -3);
barycentre_calculator.Add(k2_, 7);
EXPECT_THAT(barycentre_calculator.Get(),
AlmostEquals((23.0 / 4.0) * SIUnit<KinematicViscosity>(), 0));
AlmostEquals((23.0 / 4.0) * si::Unit<KinematicViscosity>, 0));
}

} // namespace geometry
4 changes: 2 additions & 2 deletions geometry/interval.hpp
Original file line number Diff line number Diff line change
@@ -12,8 +12,8 @@ using quantities::Infinity;
// Represents the interval [min, max]; T must be an ordered affine space.
template<typename T>
struct Interval {
T min = T{} + Infinity<Difference<T>>(); // NOLINT(whitespace/braces)
T max = T{} - Infinity<Difference<T>>(); // NOLINT(whitespace/braces)
T min = T{} + Infinity<Difference<T>>; // NOLINT(whitespace/braces)
T max = T{} - Infinity<Difference<T>>; // NOLINT(whitespace/braces)

// The Lebesgue measure of this interval.
Difference<T> measure() const;
2 changes: 1 addition & 1 deletion geometry/interval_body.hpp
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ Difference<T> Interval<T>::measure() const {

template<typename T>
T Interval<T>::midpoint() const {
return max >= min ? min + measure() / 2 : NaN<T>();
return max >= min ? min + measure() / 2 : NaN<T>;
}

template<typename T>
Loading