From d145337d6ccb3fde55bd0a0c357e0d9d9933f34c Mon Sep 17 00:00:00 2001
From: Tim Schubert <tim.schubert@tu-bs.de>
Date: Mon, 17 Aug 2020 11:52:27 +0200
Subject: [PATCH] Fix wrong velocity and latitude

---
 model/leo-circular-orbit-mobility-model.cc     | 4 ++--
 model/leo-circular-orbit-mobility-model.h      | 2 +-
 model/leo-circular-orbit-position-allocator.cc | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/model/leo-circular-orbit-mobility-model.cc b/model/leo-circular-orbit-mobility-model.cc
index 9e8730f..d9b0981 100644
--- a/model/leo-circular-orbit-mobility-model.cc
+++ b/model/leo-circular-orbit-mobility-model.cc
@@ -21,7 +21,7 @@ LeoCircularOrbitMobilityModel::GetTypeId ()
     .SetGroupName ("Leo")
     .AddConstructor<LeoCircularOrbitMobilityModel> ()
     .AddAttribute ("Altitude",
-                   "A height from the earth's surface in meters",
+                   "A height from the earth's surface in kilometers",
                    DoubleValue (1000.0),
                    MakeDoubleAccessor (&LeoCircularOrbitMobilityModel::SetAltitude,
                    		       &LeoCircularOrbitMobilityModel::GetAltitude),
@@ -76,7 +76,7 @@ DotProduct (const Vector3D &l, const Vector3D &r)
 double
 LeoCircularOrbitMobilityModel::GetSpeed () const
 {
-   return sqrt (LEO_EARTH_GM / m_orbitHeight);
+   return sqrt (LEO_EARTH_GM_KM_E10 / m_orbitHeight) * 1e5;
 }
 
 Vector
diff --git a/model/leo-circular-orbit-mobility-model.h b/model/leo-circular-orbit-mobility-model.h
index f8df411..dc045d7 100644
--- a/model/leo-circular-orbit-mobility-model.h
+++ b/model/leo-circular-orbit-mobility-model.h
@@ -10,7 +10,7 @@
 #include "ns3/nstime.h"
 
 #define LEO_EARTH_RAD_M 6371009.0
-#define LEO_EARTH_GM 3.98600436e14
+#define LEO_EARTH_GM_KM_E10 39.8600436
 
 namespace ns3 {
 
diff --git a/model/leo-circular-orbit-position-allocator.cc b/model/leo-circular-orbit-position-allocator.cc
index 529ff66..472df78 100644
--- a/model/leo-circular-orbit-position-allocator.cc
+++ b/model/leo-circular-orbit-position-allocator.cc
@@ -50,11 +50,11 @@ LeoCircularOrbitAllocator::GetNext () const
 	  	 2 * M_PI * (m_lastSatellite / (double) m_numSatellites),
 	  	 0);
 
-  m_lastSatellite = (m_lastSatellite + 1) % m_numSatellites;
-  if (m_lastSatellite >= m_numSatellites)
+  if (m_lastSatellite + 1 == m_numSatellites)
     {
       m_lastOrbit = (m_lastOrbit + 1) % m_numOrbits;
     }
+  m_lastSatellite = (m_lastSatellite + 1) % m_numSatellites;
 
   return next;
 }