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: e27713ccfce5
Choose a base ref
...
head repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 2f63502a4322
Choose a head ref
  • 4 commits
  • 17 files changed
  • 1 contributor

Commits on Nov 21, 2021

  1. Copy the full SHA
    c53bec9 View commit details

Commits on Nov 22, 2021

  1. Copy the full SHA
    433a8d1 View commit details
  2. Readying.

    pleroy committed Nov 22, 2021
    Copy the full SHA
    8cb7803 View commit details

Commits on Nov 23, 2021

  1. Merge pull request #3216 from pleroy/PastFuture

    Move InfinitePast and InfiniteFuture to geometry
    pleroy authored Nov 23, 2021
    Copy the full SHA
    2f63502 View commit details
13 changes: 0 additions & 13 deletions astronomy/epoch.hpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@

#pragma once

#include "base/macros.hpp"
#include <limits>

#include "geometry/named_quantities.hpp"
#include "quantities/quantities.hpp"
#include "quantities/si.hpp"

// |geometry::Instant| represents instants of Terrestrial Time (TT). The
// utilities in this file provide its standard epoch and two ways of specifying
@@ -17,9 +12,6 @@ namespace astronomy {
namespace internal_epoch {

using geometry::Instant;
using quantities::Infinity;
using quantities::Time;
using quantities::si::Second;

// |J2000| represents to the standard epoch J2000.0.
// According to Resolution B1 (On the Use of Julian Dates) of the XXIIIrd IAU
@@ -31,13 +23,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>;

} // namespace internal_epoch

using internal_epoch::InfiniteFuture;
using internal_epoch::InfinitePast;
using internal_epoch::J2000;

} // namespace astronomy
2 changes: 1 addition & 1 deletion benchmarks/apsides.cpp
Original file line number Diff line number Diff line change
@@ -27,11 +27,11 @@ namespace principia {

using astronomy::GCRS;
using astronomy::ICRS;
using astronomy::InfiniteFuture;
using astronomy::ITRS;
using astronomy::StandardProduct3;
using base::dynamic_cast_not_null;
using base::not_null;
using geometry::InfiniteFuture;
using geometry::Position;
using geometry::Vector;
using integrators::EmbeddedExplicitRungeKuttaNyströmIntegrator;
2 changes: 1 addition & 1 deletion benchmarks/discrete_trajectory.cpp
Original file line number Diff line number Diff line change
@@ -20,14 +20,14 @@
namespace principia {
namespace physics {

using astronomy::InfiniteFuture;
using base::make_not_null_unique;
using base::not_null;
using geometry::Barycentre;
using geometry::Displacement;
using geometry::Frame;
using geometry::Handedness;
using geometry::Inertial;
using geometry::InfiniteFuture;
using geometry::Instant;
using geometry::Velocity;
using ksp_plugin::World;
4 changes: 2 additions & 2 deletions geometry/instant_output_test.cpp
Original file line number Diff line number Diff line change
@@ -10,12 +10,12 @@
namespace principia {
namespace geometry {

using astronomy::InfiniteFuture;
using astronomy::InfinitePast;
using astronomy::J2000;
using astronomy::operator""_TT;
using astronomy::operator""_UT1;
using astronomy::operator""_UTC;
using geometry::InfiniteFuture;
using geometry::InfinitePast;
using quantities::Time;
using quantities::si::Second;
using ::testing::Eq;
44 changes: 37 additions & 7 deletions geometry/named_quantities.hpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@

#pragma once

#include <limits>
#include <type_traits>

#include "base/macros.hpp"
#include "geometry/affine_map.hpp"
#include "geometry/grassmann.hpp"
#include "geometry/point.hpp"
@@ -12,27 +14,40 @@

namespace principia {
namespace geometry {
namespace internal_named_quantities {

using quantities::AngularFrequency;
using quantities::Infinity;
using quantities::Length;
using quantities::MomentOfInertia;
using quantities::Speed;
using quantities::Time;

using Instant = Point<Time>;

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

using Instant = Point<quantities::Time>;
template<typename Frame>
using Displacement = Vector<quantities::Length, Frame>;
using Displacement = Vector<Length, Frame>;

template<typename Frame>
using Position = Point<Displacement<Frame>>;

template<typename Frame>
using Velocity = Vector<quantities::Speed, Frame>;
using Velocity = Vector<Speed, Frame>;

template<typename Frame>
using AngularVelocity = Bivector<quantities::AngularFrequency, Frame>;
using AngularVelocity = Bivector<AngularFrequency, Frame>;

// An arbitrary rigid transformation. Simultaneous positions between two frames
// are always related by such a transformation.
template<typename FromFrame, typename ToFrame>
using RigidTransformation =
AffineMap<FromFrame, ToFrame, quantities::Length, OrthogonalMap>;
AffineMap<FromFrame, ToFrame, Length, OrthogonalMap>;

template<typename Frame>
using InertiaTensor =
SymmetricBilinearForm<quantities::MomentOfInertia, Frame, Bivector>;
using InertiaTensor = SymmetricBilinearForm<MomentOfInertia, Frame, Bivector>;

// IEEE 754:2008 nextUp and nextDown for Instants.
// We would like to avoid the terms “up” and “down” when referring to the
@@ -43,10 +58,25 @@ using InertiaTensor =
constexpr Instant JustAfter(Instant const t) { return NextUp(t); }
constexpr Instant JustBefore(Instant const t) { return NextDown(t); }

} // namespace internal_named_quantities

using internal_named_quantities::AngularVelocity;
using internal_named_quantities::Displacement;
using internal_named_quantities::InertiaTensor;
using internal_named_quantities::InfiniteFuture;
using internal_named_quantities::InfinitePast;
using internal_named_quantities::Instant;
using internal_named_quantities::JustAfter;
using internal_named_quantities::JustBefore;
using internal_named_quantities::Position;
using internal_named_quantities::RigidTransformation;
using internal_named_quantities::Velocity;

namespace internal_point {
// We must declare this in the internal namespace where Point is defined so that
// it is found by ADL.
std::ostream& operator<<(std::ostream& os, const Instant& t);
} // namespace internal_point

} // namespace geometry
} // namespace principia
6 changes: 3 additions & 3 deletions ksp_plugin/vessel.cpp
Original file line number Diff line number Diff line change
@@ -8,8 +8,8 @@
#include <string>
#include <vector>

#include "astronomy/epoch.hpp"
#include "base/map_util.hpp"
#include "geometry/named_quantities.hpp"
#include "ksp_plugin/integrators.hpp"
#include "ksp_plugin/pile_up.hpp"
#include "quantities/si.hpp"
@@ -19,14 +19,14 @@ namespace principia {
namespace ksp_plugin {
namespace internal_vessel {

using astronomy::InfiniteFuture;
using astronomy::InfinitePast;
using base::Contains;
using base::FindOrDie;
using base::jthread;
using base::make_not_null_unique;
using base::MakeStoppableThread;
using geometry::BarycentreCalculator;
using geometry::InfiniteFuture;
using geometry::InfinitePast;
using geometry::Position;
using quantities::IsFinite;
using quantities::Length;
4 changes: 2 additions & 2 deletions ksp_plugin_test/planetarium_test.cpp
Original file line number Diff line number Diff line change
@@ -33,8 +33,6 @@
namespace principia {
namespace ksp_plugin {

using astronomy::InfinitePast;
using astronomy::InfiniteFuture;
using base::not_null;
using base::make_not_null_unique;
using base::ParseFromBytes;
@@ -45,6 +43,8 @@ using geometry::DeduceSignReversingOrientation;
using geometry::Displacement;
using geometry::Frame;
using geometry::Handedness;
using geometry::InfinitePast;
using geometry::InfiniteFuture;
using geometry::Instant;
using geometry::LinearMap;
using geometry::OrthogonalMap;
14 changes: 7 additions & 7 deletions ksp_plugin_test/vessel_test.cpp
Original file line number Diff line number Diff line change
@@ -6,7 +6,6 @@
#include <vector>

#include "absl/status/status.h"
#include "astronomy/epoch.hpp"
#include "base/not_null.hpp"
#include "geometry/barycentre_calculator.hpp"
#include "geometry/named_quantities.hpp"
@@ -38,6 +37,7 @@ using base::make_not_null_unique;
using geometry::Barycentre;
using geometry::Displacement;
using geometry::InertiaTensor;
using geometry::InfiniteFuture;
using geometry::Instant;
using geometry::Position;
using geometry::R3x3Matrix;
@@ -166,7 +166,7 @@ TEST_F(VesselTest, PrepareHistory) {
EXPECT_CALL(ephemeris_, t_max())
.WillRepeatedly(Return(t0_ + 2 * Second));
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, astronomy::InfiniteFuture, _, _))
FlowWithAdaptiveStep(_, _, InfiniteFuture, _, _))
.Times(AnyNumber());
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, t0_ + 2 * Second, _, _))
@@ -190,7 +190,7 @@ TEST_F(VesselTest, AdvanceTime) {
EXPECT_CALL(ephemeris_, t_max())
.WillRepeatedly(Return(t0_ + 2 * Second));
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, astronomy::InfiniteFuture, _, _))
FlowWithAdaptiveStep(_, _, InfiniteFuture, _, _))
.Times(AnyNumber());
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, t0_ + 2 * Second, _, _))
@@ -267,7 +267,7 @@ TEST_F(VesselTest, Prediction) {
// these points.
EXPECT_CALL(
ephemeris_,
FlowWithAdaptiveStep(_, _, astronomy::InfiniteFuture, _, _))
FlowWithAdaptiveStep(_, _, InfiniteFuture, _, _))
.WillRepeatedly(Return(absl::OkStatus()));

vessel_.PrepareHistory(t0_,
@@ -322,7 +322,7 @@ TEST_F(VesselTest, PredictBeyondTheInfinite) {
/*t1=*/t0_ + 5.5 * Second,
/*t2=*/t0_ + FlightPlan::max_ephemeris_steps_per_frame * Second);
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, astronomy::InfiniteFuture, _, _))
FlowWithAdaptiveStep(_, _, InfiniteFuture, _, _))
.WillOnce(DoAll(
AppendPointsToDiscreteTrajectory(&expected_vessel_prediction2),
Return(absl::OkStatus())))
@@ -358,7 +358,7 @@ TEST_F(VesselTest, FlightPlan) {
EXPECT_CALL(ephemeris_, t_max())
.WillRepeatedly(Return(t0_ + 2 * Second));
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, astronomy::InfiniteFuture, _, _))
FlowWithAdaptiveStep(_, _, InfiniteFuture, _, _))
.Times(AnyNumber());
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, t0_ + 2 * Second, _, _))
@@ -392,7 +392,7 @@ TEST_F(VesselTest, SerializationSuccess) {
EXPECT_CALL(ephemeris_, t_max())
.WillRepeatedly(Return(t0_ + 2 * Second));
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, astronomy::InfiniteFuture, _, _))
FlowWithAdaptiveStep(_, _, InfiniteFuture, _, _))
.Times(AnyNumber());
EXPECT_CALL(ephemeris_,
FlowWithAdaptiveStep(_, _, t0_ + 2 * Second, _, _))
6 changes: 3 additions & 3 deletions physics/checkpointer_body.hpp
Original file line number Diff line number Diff line change
@@ -8,15 +8,15 @@
#include <vector>
#include <utility>

#include "astronomy/epoch.hpp"
#include "base/status_utilities.hpp"
#include "geometry/named_quantities.hpp"

namespace principia {
namespace physics {
namespace internal_checkpointer {

using astronomy::InfiniteFuture;
using astronomy::InfinitePast;
using geometry::InfiniteFuture;
using geometry::InfinitePast;

template<typename Message>
Checkpointer<Message>::Checkpointer(Writer writer, Reader reader)
4 changes: 2 additions & 2 deletions physics/checkpointer_test.cpp
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
#include "physics/checkpointer.hpp"

#include "astronomy/epoch.hpp"
#include "base/status_utilities.hpp"
#include "geometry/named_quantities.hpp"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "testing_utilities/matchers.hpp"

namespace principia {
namespace physics {

using astronomy::InfinitePast;
using base::not_null;
using geometry::InfinitePast;
using geometry::Instant;
using quantities::si::Second;
using testing_utilities::StatusIs;
9 changes: 5 additions & 4 deletions physics/continuous_trajectory_body.hpp
Original file line number Diff line number Diff line change
@@ -10,9 +10,9 @@
#include <utility>
#include <vector>

#include "astronomy/epoch.hpp"
#include "base/status_utilities.hpp"
#include "geometry/interval.hpp"
#include "geometry/named_quantities.hpp"
#include "glog/stl_logging.h"
#include "numerics/newhall.hpp"
#include "numerics/ulp_distance.hpp"
@@ -23,9 +23,10 @@ namespace principia {
namespace physics {
namespace internal_continuous_trajectory {

using astronomy::InfiniteFuture;
using base::dynamic_cast_not_null;
using base::make_not_null_unique;
using geometry::InfiniteFuture;
using geometry::InfinitePast;
using geometry::Interval;
using numerics::EstrinEvaluator;
using numerics::PoissonSeries;
@@ -622,7 +623,7 @@ Instant ContinuousTrajectory<Frame>::t_min_locked() const {
lock_.AssertReaderHeld();
#endif
if (polynomials_.empty()) {
return astronomy::InfiniteFuture;
return InfiniteFuture;
}
return *first_time_;
}
@@ -633,7 +634,7 @@ Instant ContinuousTrajectory<Frame>::t_max_locked() const {
lock_.AssertReaderHeld();
#endif
if (polynomials_.empty()) {
return astronomy::InfinitePast;
return InfinitePast;
}
return polynomials_.crbegin()->t_max;
}
6 changes: 3 additions & 3 deletions physics/discrete_trajectory_body.hpp
Original file line number Diff line number Diff line change
@@ -8,18 +8,18 @@
#include "absl/container/flat_hash_map.h"
#include "absl/container/flat_hash_set.h"
#include "absl/strings/str_cat.h"
#include "astronomy/epoch.hpp"
#include "base/status_utilities.hpp"
#include "geometry/named_quantities.hpp"
#include "quantities/quantities.hpp"

namespace principia {
namespace physics {
namespace internal_discrete_trajectory {

using astronomy::InfiniteFuture;
using astronomy::InfinitePast;
using base::make_not_null_unique;
using base::uninitialized;
using geometry::InfiniteFuture;
using geometry::InfinitePast;
using quantities::Length;

template<typename Frame>
2 changes: 1 addition & 1 deletion physics/discrete_trajectory_iterator_body.hpp
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ namespace principia {
namespace physics {
namespace internal_discrete_trajectory_iterator {

using astronomy::InfiniteFuture;
using geometry::InfiniteFuture;
using geometry::Instant;

template<typename Frame>
Loading