A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
LeoEarthRotationTestCase Class Reference

Test that Earth rotation causes the orbital plane to drift westward in the ECEF frame. More...

Inheritance diagram for LeoEarthRotationTestCase:
Collaboration diagram for LeoEarthRotationTestCase:

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
TestCaseoperator= (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.
TestCaseGetParent () 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.

Detailed Description

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.

Constructor & Destructor Documentation

◆ LeoEarthRotationTestCase()

LeoEarthRotationTestCase::LeoEarthRotationTestCase ( )

Definition at line 135 of file leo-mobility-test-suite.cc.

References ns3::TestCase::TestCase().

Here is the call graph for this function:

Member Function Documentation

◆ CheckPosition()

void LeoEarthRotationTestCase::CheckPosition ( Ptr< LeoCircularOrbitMobilityModel > mob,
Time orbitalPeriod )
private

Check satellite position at the scheduled time.

Parameters
mobthe mobility model to query
orbitalPeriodthe 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoRun()

void LeoEarthRotationTestCase::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().

Here is the call graph for this function:

The documentation for this class was generated from the following file: