diff --git a/tests/orbit_test.cpp b/tests/orbit_test.cpp index eef579c..9935f2c 100644 --- a/tests/orbit_test.cpp +++ b/tests/orbit_test.cpp @@ -1,6 +1,5 @@ #include - #include #include "../src/orbits.cpp" @@ -11,18 +10,25 @@ using Catch::Matchers::WithinAbs; +// NOTE: all examples from the book "Space Flight Dynamics" by Craig A. Kluever + +const double MOLNIYA_SEMI_MAJOR_AXIS = 26564.5; // km +const double MOLNIYA_ECCENTRICITY = 0.7411; +const double EARTH_GRAVITATIONAL_PARAMETER = 398601.68; // km^3 / s^2 +const double EARTH_RADIUS = 6378; // km + + TEST_CASE("orbit construction", "[orbits]") { } -// NOTE: example 4.6 in "Space Flight Dynamics" by Craig A. Kluever -TEST_CASE("orbit propagation", "[orbits]") +TEST_CASE("orbit propagation, example 4.6", "[orbits]") { - double a = 26564.5; // semi-major axis in km - double e = 0.7411; // eccentricity - double mu = 398601.68; // gravitational parameter - double r = 6378; // body radius in km + double a = MOLNIYA_SEMI_MAJOR_AXIS; + double e = MOLNIYA_ECCENTRICITY; + double mu = EARTH_GRAVITATIONAL_PARAMETER; + double r = EARTH_RADIUS; double initial_anom = 260 * M_PI / 180; // NOTE: radians double time_step = 60 * 50; // NOTE: seconds TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e)); @@ -57,23 +63,21 @@ TEST_CASE("orbit propagation", "[orbits]") REQUIRE_THAT(pos.y, WithinAbs(8259.9, 0.1)); } -// NOTE: example 2.5 - c -TEST_CASE("orbital period", "[orbits]") +TEST_CASE("orbital period, example 2.5c", "[orbits]") { double a = 24371; // semi-major axis in km - double mu = 398601.68; // gravitational parameter + double mu = EARTH_GRAVITATIONAL_PARAMETER; double T = orbitGetPeriod(a, mu); REQUIRE_THAT(T, WithinAbs(37863.5, 50e-3)); } -// NOTE: example 4.1 in "Space Flight Dynamics" by Craig A. Kluever -TEST_CASE("time of flight example 4.1 a", "[orbits]") +TEST_CASE("time of flight example 4.1a", "[orbits]") { - double a = 26564.5; // semi-major axis in km - double e = 0.7411; // eccentricity - double mu = 398601.68; // gravitational parameter - double r = 6378; // body radius in km + double a = MOLNIYA_SEMI_MAJOR_AXIS; + double e = MOLNIYA_ECCENTRICITY; + double mu = EARTH_GRAVITATIONAL_PARAMETER; + double r = EARTH_RADIUS; TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e)); // NOTE: get ToF from periapsis to true anomaly at 154.85 degrees @@ -95,10 +99,10 @@ TEST_CASE("time of flight example 4.1 a", "[orbits]") TEST_CASE("time of flight example 4.2", "[orbits]") { - double a = 26564.5; // semi-major axis in km - double e = 0.7411; // eccentricity - double mu = 398601.68; // gravitational parameter - double r = 6378; // body radius in km + double a = MOLNIYA_SEMI_MAJOR_AXIS; + double e = MOLNIYA_ECCENTRICITY; + double mu = EARTH_GRAVITATIONAL_PARAMETER; + double r = EARTH_RADIUS; TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e)); // NOTE: get ToF from true anom 230 degrees to true anom at 120 degrees