Test that Earth rotation causes the orbital plane to drift westward in the ECEF frame. More...
Public Member Functions | |
| LeoEarthRotationTestCase () | |
| Public Member Functions inherited from ns3::TestCase | |
| TestCase (const TestCase &)=delete | |
| Caller graph was not generated because of its size. | |
| virtual | ~TestCase () |
| Destructor. | |
| std::string | GetName () const |
| TestCase & | operator= (const TestCase &)=delete |
Private Member Functions | |
| void | CheckPosition (Ptr< LeoCircularOrbitMobilityModel > mob, Time orbitalPeriod) |
| Check satellite position at the scheduled time. | |
| void | DoRun () override |
| Implementation to actually run this TestCase. | |
Additional Inherited Members | |
| Public Types inherited from ns3::TestCase | |
| enum class | Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
| How long the test takes to execute. More... | |
| Protected Member Functions inherited from ns3::TestCase | |
| TestCase (std::string name) | |
| Constructor. | |
| void | AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK) |
| Add an individual child TestCase to this test suite. | |
| TestCase * | GetParent () const |
| Get the parent of this TestCase. | |
| bool | IsStatusFailure () const |
| Check if any tests failed. | |
| bool | IsStatusSuccess () const |
| Check if all tests passed. | |
| void | SetDataDir (std::string directory) |
| Set the data directory where reference trace files can be found. | |
| void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
| Log the failure of this TestCase. | |
| bool | MustAssertOnFailure () const |
| Check if this run should assert on failure. | |
| bool | MustContinueOnFailure () const |
| Check if this run should continue on failure. | |
| std::string | CreateDataDirFilename (std::string filename) |
| Construct the full path to a file in the data directory. | |
| std::string | CreateTempDirFilename (std::string filename) |
| Construct the full path to a file in a temporary directory. | |
Test that Earth rotation causes the orbital plane to drift westward in the ECEF frame.
After exactly one orbital period T, the satellite returns to its starting position on the orbit (orbital offset = 0 again), but the Earth has rotated eastward by angle delta = (T / 24h) * 2 * pi. In the ECEF frame, the ascending node longitude has drifted westward by delta.
Expected ECEF position at time T (with longitude = 0 degrees at time zero): lon_T = -delta x = r * cos(45 deg) * cos(lon_T) y = r * cos(45 deg) * sin(lon_T) [negative = westward drift] z = r * sin(45 deg)
Definition at line 119 of file leo-mobility-test-suite.cc.
| LeoEarthRotationTestCase::LeoEarthRotationTestCase | ( | ) |
Definition at line 135 of file leo-mobility-test-suite.cc.
References ns3::TestCase::TestCase().
|
private |
Check satellite position at the scheduled time.
| mob | the mobility model to query |
| orbitalPeriod | the orbital period used for expected value computation |
Definition at line 141 of file leo-mobility-test-suite.cc.
References ns3::Time::GetDouble(), ns3::Hours(), NS_TEST_ASSERT_MSG_EQ_TOL, NS_TEST_ASSERT_MSG_LT, ORBIT_RADIUS_M, and ns3::TOLERANCE.
Referenced by DoRun().
|
overrideprivatevirtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 172 of file leo-mobility-test-suite.cc.
References CheckPosition(), ns3::CreateObject(), ns3::Simulator::Destroy(), GM_KM3_S2, ORBIT_HEIGHT_KM, ns3::Simulator::Run(), ns3::Simulator::Schedule(), and ns3::Seconds().