From 3ab3cb3c22217c032ce487c0599ba6cc32665f09 Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Thu, 12 May 2011 11:08:06 +0200 Subject: [PATCH 01/15] LenaTestPfFfMacSchedulerSuite update Test2 --- src/lte/test/lte-test-pf-ff-mac-scheduler.cc | 287 ++++++++++++++----- src/lte/test/lte-test-pf-ff-mac-scheduler.h | 21 +- 2 files changed, 240 insertions(+), 68 deletions(-) diff --git a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc index 08e7b77ee..05674eddd 100644 --- a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc +++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc @@ -49,68 +49,74 @@ LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite () : TestSuite ("lte-test-pf-ff-mac-scheduler", SYSTEM) { SetVerbose (true); - NS_LOG_INFO ("creating LenaPfFfMacSchedulerTestCase"); + NS_LOG_INFO ("creating LenaTestPfFfMacSchedulerSuite"); + std::vector dist; + dist.push_back (0); // User 0 distance + std::vector estThrPf; + estThrPf.push_back (0); // User 0 estimated TTI throughput from PF + + AddTestCase (new LenaPfFfMacSchedulerTestCase2 (1,dist,estThrPf)); - // DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 26 -> 2196 -> 2196000 bytes/sec - // 3 users -> 2196000 among 3 users -> 732000 bytes/sec - // 6 users -> 2196000 among 6 users -> 366000 bytes/sec - // 12 users -> 2196000 among 12 users -> 183000 bytes/sec - // 15 users -> 2196000 among 15 users -> 146400 bytes/sec - AddTestCase (new LenaPfFfMacSchedulerTestCase (1,0,0,2196000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (3,0,0,732000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (6,0,0,366000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (12,0,0,183000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (15,0,0,146400)); - - // DISTANCE 6000 -> MCS 24 -> Itbs 22 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 22 -> 1572 -> 1572000 bytes/sec - // 3 users -> 1572000 among 3 users -> 524000 bytes/sec - // 6 users -> 1572000 among 6 users -> 262000 bytes/sec - // 12 users -> 1572000 among 12 users -> 131000 bytes/sec - // 15 users -> 1572000 among 15 users -> 104800 bytes/sec - AddTestCase (new LenaPfFfMacSchedulerTestCase (1,0,6000,1572000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (3,0,6000,524000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (6,0,6000,262000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (12,0,6000,131000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (15,0,6000,104800)); - - // DISTANCE 9000 -> MCS 10 -> Itbs 9 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 9 -> 469 -> 469000 bytes/sec - // 3 users -> 469000 among 3 users -> 156333 bytes/sec - // 6 users -> 469000 among 6 users -> 78166 bytes/sec - // 12 users -> 469000 among 12 users -> 39083 bytes/sec - // 15 users -> 469000 among 15 users -> 31266 bytes/sec - AddTestCase (new LenaPfFfMacSchedulerTestCase (1,0,9000,469000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (3,0,9000,156333)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (6,0,9000,78166)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (12,0,9000,39083)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (15,0,9000,31266)); - - // DISTANCE 15000 -> MCS 4 -> Itbs 4 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 4 -> 217 -> 217000 bytes/sec - // 3 users -> 217000 among 3 users -> 72333 bytes/sec - // 6 users -> 217000 among 6 users -> 36166 bytes/sec - // 12 users -> 217000 among 12 users -> 18083 bytes/sec - // 15 users -> 217000 among 15 users -> 14466 bytes/sec - AddTestCase (new LenaPfFfMacSchedulerTestCase (1,0,15000,217000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (3,0,15000,72333)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (6,0,15000,36166)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (12,0,15000,18083)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (15,0,15000,14466)); - - // DISTANCE 20000 -> MCS 2 -> Itbs 2 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 2 -> 133 -> 133000 bytes/sec - // 3 users -> 217000 among 3 users -> 44333 bytes/sec - // 6 users -> 217000 among 6 users -> 22166 bytes/sec - // 12 users -> 217000 among 12 users -> 11083 bytes/sec - // 15 users -> 217000 among 15 users -> 8866 bytes/sec - AddTestCase (new LenaPfFfMacSchedulerTestCase (1,0,20000,133000)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (3,0,20000,44333)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (6,0,20000,22166)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (12,0,20000,11083)); - AddTestCase (new LenaPfFfMacSchedulerTestCase (15,0,20000,8866)); +// // DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 26 -> 2196 -> 2196000 bytes/sec +// // 3 users -> 2196000 among 3 users -> 732000 bytes/sec +// // 6 users -> 2196000 among 6 users -> 366000 bytes/sec +// // 12 users -> 2196000 among 12 users -> 183000 bytes/sec +// // 15 users -> 2196000 among 15 users -> 146400 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,0,2196000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,0,732000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,0,366000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,0,183000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,0,146400)); +// +// // DISTANCE 6000 -> MCS 24 -> Itbs 22 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 22 -> 1572 -> 1572000 bytes/sec +// // 3 users -> 1572000 among 3 users -> 524000 bytes/sec +// // 6 users -> 1572000 among 6 users -> 262000 bytes/sec +// // 12 users -> 1572000 among 12 users -> 131000 bytes/sec +// // 15 users -> 1572000 among 15 users -> 104800 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,6000,1572000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,6000,524000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,6000,262000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,6000,131000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,6000,104800)); +// +// // DISTANCE 9000 -> MCS 10 -> Itbs 9 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 9 -> 469 -> 469000 bytes/sec +// // 3 users -> 469000 among 3 users -> 156333 bytes/sec +// // 6 users -> 469000 among 6 users -> 78166 bytes/sec +// // 12 users -> 469000 among 12 users -> 39083 bytes/sec +// // 15 users -> 469000 among 15 users -> 31266 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,9000,469000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,9000,156333)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,9000,78166)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,9000,39083)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,9000,31266)); +// +// // DISTANCE 15000 -> MCS 4 -> Itbs 4 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 4 -> 217 -> 217000 bytes/sec +// // 3 users -> 217000 among 3 users -> 72333 bytes/sec +// // 6 users -> 217000 among 6 users -> 36166 bytes/sec +// // 12 users -> 217000 among 12 users -> 18083 bytes/sec +// // 15 users -> 217000 among 15 users -> 14466 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,15000,217000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,15000,72333)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,15000,36166)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,15000,18083)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,15000,14466)); +// +// // DISTANCE 20000 -> MCS 2 -> Itbs 2 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 2 -> 133 -> 133000 bytes/sec +// // 3 users -> 217000 among 3 users -> 44333 bytes/sec +// // 6 users -> 217000 among 6 users -> 22166 bytes/sec +// // 12 users -> 217000 among 12 users -> 11083 bytes/sec +// // 15 users -> 217000 among 15 users -> 8866 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,20000,133000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,20000,44333)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,20000,22166)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,20000,11083)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,20000,8866)); @@ -119,21 +125,28 @@ LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite () static LenaTestPfFfMacSchedulerSuite lenaTestPfFfMacSchedulerSuite; -LenaPfFfMacSchedulerTestCase::LenaPfFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRef) + +// --------------- T E S T - C A S E # 1 ------------------------------ + +LenaPfFfMacSchedulerTestCase1::LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRef) : TestCase ("Proportional Fair (PF) Mac Scheduler Test Case"), m_nUser (nUser), m_nLc (nLc), m_dist (dist), m_thrRef (thrRef) { + + // 0 mt -> mcs 28 + // 6000 mt -> mcs 24 + // 12000 mt -> mcs 6 } -LenaPfFfMacSchedulerTestCase::~LenaPfFfMacSchedulerTestCase () +LenaPfFfMacSchedulerTestCase1::~LenaPfFfMacSchedulerTestCase1 () { } void -LenaPfFfMacSchedulerTestCase::DoRun (void) +LenaPfFfMacSchedulerTestCase1::DoRun (void) { // LogComponentEnable ("LteEnbRrc", LOG_LEVEL_ALL); // LogComponentEnable ("LteUeRrc", LOG_LEVEL_ALL); @@ -160,7 +173,7 @@ LenaPfFfMacSchedulerTestCase::DoRun (void) // LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); // LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); - // LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); + LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); LogComponentEnable ("LenaTestPfFfMacCheduler", LOG_LEVEL_ALL); // LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); // LogComponentEnable ("RlcStatsCalculator", LOG_LEVEL_ALL); @@ -232,7 +245,12 @@ LenaPfFfMacSchedulerTestCase::DoRun (void) dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId)); NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / simulationTime << " ref " << m_thrRef); } - + /** + * Check that the assignation is done in a "proportional fair" manner among users + * with equal SINRs: the bandwidht should be distributed according to the + * ratio of the estimated throughput per TTI of each user; therefore equally + * partitioning the whole bandwidth achievable from a single users in a TTI + */ for (int i = 0; i < m_nUser; i++) { NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataRxed.at (i) / simulationTime, m_thrRef, m_thrRef * tolerance, " Unfair Throughput!"); @@ -243,3 +261,142 @@ LenaPfFfMacSchedulerTestCase::DoRun (void) } + +// --------------- T E S T - C A S E # 2 ------------------------------ + + +LenaPfFfMacSchedulerTestCase2::LenaPfFfMacSchedulerTestCase2 (uint16_t nUser, std::vector dist, std::vector estThrPf) + : TestCase ("Proportional Fair (PF) Mac Scheduler Test Case"), + m_nUser (nUser), + m_dist (dist), + m_estThrPf (estThrPf) + + +{ +} + +LenaPfFfMacSchedulerTestCase2::~LenaPfFfMacSchedulerTestCase2 () +{ +} + +void +LenaPfFfMacSchedulerTestCase2::DoRun (void) +{ + // LogComponentEnable ("LteEnbRrc", LOG_LEVEL_ALL); + // LogComponentEnable ("LteUeRrc", LOG_LEVEL_ALL); + // LogComponentEnable ("LteEnbMac", LOG_LEVEL_ALL); + // LogComponentEnable ("LteUeMac", LOG_LEVEL_ALL); + // LogComponentEnable ("LteRlc", LOG_LEVEL_ALL); + // + // LogComponentEnable ("LtePhy", LOG_LEVEL_ALL); + // LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL); + // LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL); + + // LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL); + // LogComponentEnable ("LteInterference", LOG_LEVEL_ALL); + // LogComponentEnable ("LteSinrChunkProcessor", LOG_LEVEL_ALL); + // + // LogComponentEnable ("LtePropagationLossModel", LOG_LEVEL_ALL); + // LogComponentEnable ("LossModel", LOG_LEVEL_ALL); + // LogComponentEnable ("ShadowingLossModel", LOG_LEVEL_ALL); + // LogComponentEnable ("PenetrationLossModel", LOG_LEVEL_ALL); + // LogComponentEnable ("MultipathLossModel", LOG_LEVEL_ALL); + // LogComponentEnable ("PathLossModel", LOG_LEVEL_ALL); + // + // LogComponentEnable ("LteNetDevice", LOG_LEVEL_ALL); + // LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); + // LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); + +// LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); + LogComponentEnable ("LenaTestPfFfMacCheduler", LOG_LEVEL_ALL); + // LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); + // LogComponentEnable ("RlcStatsCalculator", LOG_LEVEL_ALL); + + /** + * Initialize Simulation Scenario: 1 eNB and m_nUser UEs + */ + + SetVerbose (true); + Ptr lena = CreateObject (); + + // Create Nodes: eNodeB and UE + NodeContainer enbNodes; + NodeContainer ueNodes; + enbNodes.Create (1); + ueNodes.Create (m_nUser); + + // Install Mobility Model + MobilityHelper mobility; + mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); + mobility.Install (enbNodes); + mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); + mobility.Install (ueNodes); + + // Create Devices and install them in the Nodes (eNB and UE) + NetDeviceContainer enbDevs; + NetDeviceContainer ueDevs; + lena->SetSchedulerType ("ns3::PfFfMacScheduler"); + enbDevs = lena->InstallEnbDevice (enbNodes); + ueDevs = lena->InstallUeDevice (ueNodes); + + // Attach a UE to a eNB + lena->Attach (ueDevs, enbDevs.Get (0)); + + // Activate an EPS bearer + enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; + EpsBearer bearer (q); + lena->ActivateEpsBearer (ueDevs, bearer); + + // position nodes + for (int i = 0; i < m_nUser; i++) + { + Ptr mm = ueNodes.Get (i)->GetObject (); + mm->SetPosition (Vector (m_dist.at (i), 0.0, 0.0)); + } + + lena->EnableDlRlcTraces(); + + double simulationTime = 2.0; + double tolerance = 0.1; + Simulator::Stop (Seconds (simulationTime)); + + Ptr rlcStats = lena->GetRlcStats (); + rlcStats->SetAttribute("EpochDuration", TimeValue(Seconds(simulationTime))); + + Simulator::Run (); + + NS_LOG_INFO("Test with " << m_nUser << " user(s)"); + std::vector dlDataRxed; + double totalData = 0; + double totalEstThrPf = 0; + for (int i = 0; i < m_nUser; i++) + { + // get the imsi + uint64_t imsi = ueDevs.Get (i)-> GetObject ()->GetImsi (); + // get the lcId + uint8_t lcId = ueDevs.Get (i)-> GetObject ()->GetRrc ()->GetLcIdVector ().at(0); + dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId)); + totalData += (double)dlDataRxed.at (i); + NS_LOG_INFO ("\tUser " << i << "dist" << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / simulationTime << " ref " << m_nUser); + totalEstThrPf += m_estThrPf.at (i); + } + + /** + * Check that the assignation is done in a "proportional fair" manner among users + * with different SINRs: the bandwidht should be distributed according to the + * ratio of the estimated throughput per TTI of each user. + */ + for (int i = 0; i < m_nUser; i++) + { + double thrRatio = (double)dlDataRxed.at (i) / totalData; + double estThrRatio = (double)m_estThrPf.at (i) / totalEstThrPf; + NS_TEST_ASSERT_MSG_EQ_TOL (estThrRatio, thrRatio, tolerance, " Unfair Throughput!"); + } + + Simulator::Destroy (); + +} + + + + diff --git a/src/lte/test/lte-test-pf-ff-mac-scheduler.h b/src/lte/test/lte-test-pf-ff-mac-scheduler.h index 5478d1a8f..da5972e6b 100644 --- a/src/lte/test/lte-test-pf-ff-mac-scheduler.h +++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.h @@ -37,11 +37,11 @@ using namespace ns3; * is equal among users is consistent with the definition of proportional * fair scheduling */ -class LenaPfFfMacSchedulerTestCase : public TestCase +class LenaPfFfMacSchedulerTestCase1 : public TestCase { public: - LenaPfFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRef); - virtual ~LenaPfFfMacSchedulerTestCase (); + LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRef); + virtual ~LenaPfFfMacSchedulerTestCase1 (); private: virtual void DoRun (void); @@ -52,6 +52,21 @@ class LenaPfFfMacSchedulerTestCase : public TestCase }; +class LenaPfFfMacSchedulerTestCase2 : public TestCase +{ + public: + LenaPfFfMacSchedulerTestCase2 (uint16_t nUser, std::vector dist, std::vector estThrPf); + virtual ~LenaPfFfMacSchedulerTestCase2 (); + + private: + virtual void DoRun (void); + uint16_t m_nUser; + std::vector m_dist; + std::vector m_estThrPf; +}; + + + class LenaTestPfFfMacSchedulerSuite : public TestSuite { From 1c1a38923d72c4830688a707b380231fc40c258c Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Thu, 12 May 2011 12:35:28 +0200 Subject: [PATCH 02/15] RR and PF Test description updated in manual --- doc/manual/source/lte-testing.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/manual/source/lte-testing.rst b/doc/manual/source/lte-testing.rst index 68cd25e5c..3b3ab9cae 100644 --- a/doc/manual/source/lte-testing.rst +++ b/doc/manual/source/lte-testing.rst @@ -48,5 +48,13 @@ Adaptive Modulation and Coding Round Robin scheduler performance --------------------------------- +This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. In each test case, the UEs see the same SINR from the eNB; different test cases are implemented by using different distance among UEs and the eNB (i.e., therefore having different SINR values) and different numbers of UEs. The test consists on checking that the obtained throughput performance is equal among users and matches a reference throughput value obtained according to the SINR perceived within a given tolerance. +The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of 36.213, considering an equal distribution of the physical resource block among the users. The tolerance has been introduced in order to overcome the process of initialization and quantization of the resource allocation. + + Proportional Fair scheduler performance --------------------------------------- + +This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. The tests are grouped in two categories in order to evaluate both the performance in terms of adaptation to channel condition and from fairness perspective. +Regarding the former, the UEs are placed in order to have the same SINR from the eNB in each specific test. Different test cases are implemented by using different SINR values and different numbers of UEs. The test consists on checking that the obtained throughput performance is equal among users is consistent with the definition of proportional fair scheduling, which implies that the bandwidht assigned is proportional to the ratio of the estimated throughput per TTI of each user. In detail, each TTI the PFS estimates the throughput of each UE for the next TTI according to the CQIs received; the ratio of this value respect to the global of all users represent the long term trend for the bandwidht allocated by the scheduler. In this specific case, this results in allocating proportionally the maximum bandwidht achievable (i.e., all PRB allocated to a single users) among the users in a time division fashion. +The second category of tests is aimed at verify the fairness behavior in presence of UEs with different SINRs (and therefore different estimated throughput from PFS). The test consists of checking whether the throughput obtained is fairly distributed among the users, that is the ratio of the estimated throughput per TTI (function of the SINR). From 8a69ba3c6db10679a27bf047e6eca9d0eea8d7dc Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 15:29:43 +0200 Subject: [PATCH 03/15] fixed TX and noise PSD calculations --- src/lte/model/lte-spectrum-value-helper.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lte/model/lte-spectrum-value-helper.cc b/src/lte/model/lte-spectrum-value-helper.cc index 8d834c3bb..7e2b3b8da 100644 --- a/src/lte/model/lte-spectrum-value-helper.cc +++ b/src/lte/model/lte-spectrum-value-helper.cc @@ -237,7 +237,7 @@ LteSpectrumValueHelper::CreateTxPowerSpectralDensity (uint16_t earfcn, uint8_t t // powerTx is expressed in dBm. We must convert it into natural unit. double powerTxW = pow (10., (powerTx - 30) / 10); - double txPowerDensity = (powerTxW / GetChannelBandwidth (txBandwidthConfiguration)); + double txPowerDensity = (powerTxW / (txBandwidthConfiguration * 180000)); for (std::vector ::iterator it = activeRbs.begin (); it != activeRbs.end (); it++) { @@ -263,10 +263,14 @@ Ptr LteSpectrumValueHelper::CreateNoisePowerSpectralDensity (double noiseFigureDb, Ptr spectrumModel) { NS_LOG_FUNCTION (noiseFigureDb << spectrumModel); - double noiseFigureLinear = pow (10.0, noiseFigureDb / 10.0); - static const double BOLTZMANN = 1.3803e-23; - static const double ROOM_TEMPERATURE = 290.0; - double noisePowerSpectralDensity = noiseFigureLinear * BOLTZMANN * ROOM_TEMPERATURE; // W/Hz + + + // see "LTE - From theory to practice" + // Section 22.4.4.2 Thermal Noise and Receiver Noise Figure + const double kT_dBm_Hz = -174.0; // dBm/Hz + double kT_W_Hz = pow (10.0, (kT_dBm_Hz - 30)/10.0); + double noiseFigureLinear = pow (10.0, noiseFigureDb / 10.0); + double noisePowerSpectralDensity = kT_W_Hz * noiseFigureLinear; Ptr noisePsd = Create (spectrumModel); (*noisePsd) = noisePowerSpectralDensity; From 449b29dab8de1eee6ecf934ea786658ffd5e2304 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 15:35:11 +0200 Subject: [PATCH 04/15] updated lte link budget reference --- src/lte/test/reference/lte_link_budget.m | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/lte/test/reference/lte_link_budget.m b/src/lte/test/reference/lte_link_budget.m index 77fffa848..efa6a0aa6 100644 --- a/src/lte/test/reference/lte_link_budget.m +++ b/src/lte/test/reference/lte_link_budget.m @@ -1,18 +1,27 @@ +clear all; +close all; + ## LTE from theory to practice ## Table 22.7 Reference sensitivity. - f = 2160e6; # carrier freq Hz, EARFCN = 500 (downlink) -n = -107.5 # noise power dBm, corresponds to 5 MHz BW +nrbs = 25; # tx bandwdith configuration in number of RBs +bw = nrbs * 180000; # bandwidth in Hz, note that this is smaller than + # the nominal Channel Bandwdith, see TS 36.101 fig 5.6-1 +kT = -174; # noise PSD in dBm / Hz +n = kT + 10*log10(bw); # noise power dBm p = 30; # tx power dBm -nf = 5; # receiver noise figure in dB +txPsd = p - 10*log10(bw); # power / bandwidth in linear units +nf = 9; # receiver noise figure in dB d = logspace (0,5,100); g = 10.*log10 (gain_freespace(d,f)); # propagation gain in dB -snr = p + g - n - nf ; #dB + +snr = p + g - n - nf; # dB +##snr = txPsd + g - kT - nf ; # dB -semilogx (d, snr); +semilogx (d, snr, ";friis;"); xlabel ("distance (m)"); ylabel ("SNR (dB)"); title ("LTE link budget"); From e6e8ad4153a8a3c9230047f53833cae5982c11e6 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 15:42:20 +0200 Subject: [PATCH 05/15] added reference scripts for lte-spectrum-value-helper test --- .../generate_test_data_lte_spectrum_model.m | 36 ++++++++++++ ...erate_test_data_lte_spectrum_value_noise.m | 38 +++++++++++++ ...erate_test_data_lte_spectrum_value_txpsd.m | 55 +++++++++++++++++++ src/lte/test/reference/print_C_vector.m | 20 +++++++ 4 files changed, 149 insertions(+) create mode 100644 src/lte/test/reference/generate_test_data_lte_spectrum_model.m create mode 100644 src/lte/test/reference/generate_test_data_lte_spectrum_value_noise.m create mode 100644 src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m create mode 100644 src/lte/test/reference/print_C_vector.m diff --git a/src/lte/test/reference/generate_test_data_lte_spectrum_model.m b/src/lte/test/reference/generate_test_data_lte_spectrum_model.m new file mode 100644 index 000000000..d3fb4deec --- /dev/null +++ b/src/lte/test/reference/generate_test_data_lte_spectrum_model.m @@ -0,0 +1,36 @@ + +clear all; +close all; + +for nrbs = [6 15 25 50 75 100] + +## earfcn = 500; +## fcMHz = 2160; + + earfcn = 19400; + fcMHz = 1730; + + fc = fcMHz * 1e6; + + rbbw = 180e3; + bw = rbbw * nrbs; + + fcv = linspace (fc - bw/2 + rbbw/2, fc + bw/2 - rbbw/2, nrbs); + name = ["fc" num2str(fcMHz, "%d") "nrb" num2str(nrbs, "%d")]; + printf("std::vector %s (%s);\n", name, num2str (length(fcv))); + print_C_vector (fcv, name); + printf("AddTestCase (new LteSpectrumModelTestCase (\"%s\", %d, %d, %s));\n\n", name, earfcn, nrbs, name); + + +endfor + + + + + + + + + + + \ No newline at end of file diff --git a/src/lte/test/reference/generate_test_data_lte_spectrum_value_noise.m b/src/lte/test/reference/generate_test_data_lte_spectrum_value_noise.m new file mode 100644 index 000000000..2387b45d2 --- /dev/null +++ b/src/lte/test/reference/generate_test_data_lte_spectrum_value_noise.m @@ -0,0 +1,38 @@ + +clear all; +close all; + + +earfcn = 500; + +noise_psd = 1.38e-23 * 290; + +for nrbs = [6 15] + + for noise_figure_dB = [0 5 10 ] + + name = ["nfdB" num2str(noise_figure_dB, "%d") "earfcn" num2str(earfcn,"%d") "nrb" num2str(nrbs, "%d")]; + + npsdv = ones (1,nrbs) * (noise_psd * 10.^(noise_figure_dB/10)); + + printf("SpectrumValue %s (LteSpectrumValueHelper::GetSpectrumModel (%d, %d));\n", + name, earfcn, nrbs); + + print_C_vector (npsdv, name); + printf("AddTestCase (new LteNoisePsdTestCase (\"%s\", %d, %d, %f, %s));\n\n", name, earfcn, nrbs, noise_figure_dB, name); + + endfor + +endfor + + + + + + + + + + + + \ No newline at end of file diff --git a/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m b/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m new file mode 100644 index 000000000..6d9b68447 --- /dev/null +++ b/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m @@ -0,0 +1,55 @@ + +clear all; +close all; + + +earfcn = 500; + + + +for run = 1:2 + + for nrbs = [6 25 100] + + if (nrbs == 6) + chbw = 1.4e6; + else + chbw = (nrbs / 5) * 1e6; + endif + + for txpowdBm = [10 30] + + basename = ["txpowdB" num2str(txpowdBm, "%d") "nrb" num2str(nrbs, "%d") "run" num2str(run, "%d") "earfcn" num2str(earfcn,"%d")]; + svname = [ "spectrumValue_" basename]; + arname = [ "activeRbs_" basename]; + + activeRbsMask = round (rand (1,nrbs)); + activeRbs = find (activeRbsMask) - 1; + txpowW = (10.^(txpowdBm/10))/1000; + txpsd = txpowW.*activeRbsMask./chbw; + + printf("std::vector %s (%d);\n", arname, length(activeRbs)); + print_C_vector (activeRbs, arname); + + printf("SpectrumValue %s (LteSpectrumValueHelper::GetSpectrumModel (%d, %d));\n", + svname, earfcn, nrbs); + print_C_vector (txpsd, svname); + + printf("AddTestCase (new LteTxPsdTestCase (\"%s\", %d, %d, %f, %s, %s));\n\n", + basename, earfcn, nrbs, txpowdBm, arname, svname); + + endfor + + endfor + +endfor + + + + + + + + + + \ No newline at end of file diff --git a/src/lte/test/reference/print_C_vector.m b/src/lte/test/reference/print_C_vector.m new file mode 100644 index 000000000..3efbc7304 --- /dev/null +++ b/src/lte/test/reference/print_C_vector.m @@ -0,0 +1,20 @@ +function print_C_vector (x, name) + ## + ## print_C_vector (x) + ## + ## prints to screen the C code that is needed to initialize vector x + ## x is the data + ## name is the name of the C variable + + + assert (isvector(x)); + for jj = 1:length(x) + printf("%s[%d] = %15.12e;\n", name, jj-1, x(jj)); + endfor + +endfunction + + + + + \ No newline at end of file From 4649d2fe02a859f216f7bd6012a1bdc5642b8f69 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 15:53:04 +0200 Subject: [PATCH 06/15] updated lte-spectrum-value-helper test according to new tx psd calculation --- .../test/lte-test-spectrum-value-helper.cc | 1259 +++++++++-------- ...erate_test_data_lte_spectrum_value_txpsd.m | 8 +- 2 files changed, 639 insertions(+), 628 deletions(-) diff --git a/src/lte/test/lte-test-spectrum-value-helper.cc b/src/lte/test/lte-test-spectrum-value-helper.cc index cda356424..f0580566e 100644 --- a/src/lte/test/lte-test-spectrum-value-helper.cc +++ b/src/lte/test/lte-test-spectrum-value-helper.cc @@ -820,818 +820,833 @@ LteSpectrumValueHelperTestSuite::LteSpectrumValueHelperTestSuite () nfdB10earfcn500nrb15[14] = 4.002000000000e-20; - std::vector activeRbs_txpowdB10nrb6run1earfcn500 (2); activeRbs_txpowdB10nrb6run1earfcn500[0] = 0.000000000000e+00; - activeRbs_txpowdB10nrb6run1earfcn500[1] = 2.000000000000e+00; + activeRbs_txpowdB10nrb6run1earfcn500[1] = 1.000000000000e+00; SpectrumValue spectrumValue_txpowdB10nrb6run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6)); - spectrumValue_txpowdB10nrb6run1earfcn500[0] = 7.142857142857e-09; - spectrumValue_txpowdB10nrb6run1earfcn500[1] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb6run1earfcn500[2] = 7.142857142857e-09; + spectrumValue_txpowdB10nrb6run1earfcn500[0] = 9.259259259259e-09; + spectrumValue_txpowdB10nrb6run1earfcn500[1] = 9.259259259259e-09; + spectrumValue_txpowdB10nrb6run1earfcn500[2] = 0.000000000000e+00; spectrumValue_txpowdB10nrb6run1earfcn500[3] = 0.000000000000e+00; spectrumValue_txpowdB10nrb6run1earfcn500[4] = 0.000000000000e+00; spectrumValue_txpowdB10nrb6run1earfcn500[5] = 0.000000000000e+00; AddTestCase (new LteTxPsdTestCase ("txpowdB10nrb6run1earfcn500", 500, 6, 10.000000, activeRbs_txpowdB10nrb6run1earfcn500, spectrumValue_txpowdB10nrb6run1earfcn500)); - std::vector activeRbs_txpowdB30nrb6run1earfcn500 (3); - activeRbs_txpowdB30nrb6run1earfcn500[0] = 0.000000000000e+00; - activeRbs_txpowdB30nrb6run1earfcn500[1] = 2.000000000000e+00; - activeRbs_txpowdB30nrb6run1earfcn500[2] = 4.000000000000e+00; + std::vector activeRbs_txpowdB30nrb6run1earfcn500 (1); + activeRbs_txpowdB30nrb6run1earfcn500[0] = 5.000000000000e+00; SpectrumValue spectrumValue_txpowdB30nrb6run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6)); - spectrumValue_txpowdB30nrb6run1earfcn500[0] = 7.142857142857e-07; + spectrumValue_txpowdB30nrb6run1earfcn500[0] = 0.000000000000e+00; spectrumValue_txpowdB30nrb6run1earfcn500[1] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb6run1earfcn500[2] = 7.142857142857e-07; + spectrumValue_txpowdB30nrb6run1earfcn500[2] = 0.000000000000e+00; spectrumValue_txpowdB30nrb6run1earfcn500[3] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb6run1earfcn500[4] = 7.142857142857e-07; - spectrumValue_txpowdB30nrb6run1earfcn500[5] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb6run1earfcn500[4] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb6run1earfcn500[5] = 9.259259259259e-07; AddTestCase (new LteTxPsdTestCase ("txpowdB30nrb6run1earfcn500", 500, 6, 30.000000, activeRbs_txpowdB30nrb6run1earfcn500, spectrumValue_txpowdB30nrb6run1earfcn500)); - std::vector activeRbs_txpowdB10nrb25run1earfcn500 (12); - activeRbs_txpowdB10nrb25run1earfcn500[0] = 3.000000000000e+00; - activeRbs_txpowdB10nrb25run1earfcn500[1] = 4.000000000000e+00; - activeRbs_txpowdB10nrb25run1earfcn500[2] = 6.000000000000e+00; - activeRbs_txpowdB10nrb25run1earfcn500[3] = 7.000000000000e+00; - activeRbs_txpowdB10nrb25run1earfcn500[4] = 9.000000000000e+00; - activeRbs_txpowdB10nrb25run1earfcn500[5] = 1.000000000000e+01; - activeRbs_txpowdB10nrb25run1earfcn500[6] = 1.200000000000e+01; - activeRbs_txpowdB10nrb25run1earfcn500[7] = 1.600000000000e+01; - activeRbs_txpowdB10nrb25run1earfcn500[8] = 1.700000000000e+01; - activeRbs_txpowdB10nrb25run1earfcn500[9] = 1.900000000000e+01; - activeRbs_txpowdB10nrb25run1earfcn500[10] = 2.000000000000e+01; - activeRbs_txpowdB10nrb25run1earfcn500[11] = 2.100000000000e+01; + std::vector activeRbs_txpowdB10nrb25run1earfcn500 (8); + activeRbs_txpowdB10nrb25run1earfcn500[0] = 1.000000000000e+00; + activeRbs_txpowdB10nrb25run1earfcn500[1] = 2.000000000000e+00; + activeRbs_txpowdB10nrb25run1earfcn500[2] = 5.000000000000e+00; + activeRbs_txpowdB10nrb25run1earfcn500[3] = 1.000000000000e+01; + activeRbs_txpowdB10nrb25run1earfcn500[4] = 1.500000000000e+01; + activeRbs_txpowdB10nrb25run1earfcn500[5] = 1.700000000000e+01; + activeRbs_txpowdB10nrb25run1earfcn500[6] = 1.800000000000e+01; + activeRbs_txpowdB10nrb25run1earfcn500[7] = 2.400000000000e+01; SpectrumValue spectrumValue_txpowdB10nrb25run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 25)); spectrumValue_txpowdB10nrb25run1earfcn500[0] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[1] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[2] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[3] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[4] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[5] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[6] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[7] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[1] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[2] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[3] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[4] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[5] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[6] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[7] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run1earfcn500[8] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[9] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[10] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[9] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[10] = 2.222222222222e-09; spectrumValue_txpowdB10nrb25run1earfcn500[11] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[12] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[12] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run1earfcn500[13] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run1earfcn500[14] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[15] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[16] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[17] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[18] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[19] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[20] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run1earfcn500[21] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[15] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[16] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[17] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[18] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run1earfcn500[19] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[20] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[21] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run1earfcn500[22] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run1earfcn500[23] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run1earfcn500[24] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run1earfcn500[24] = 2.222222222222e-09; AddTestCase (new LteTxPsdTestCase ("txpowdB10nrb25run1earfcn500", 500, 25, 10.000000, activeRbs_txpowdB10nrb25run1earfcn500, spectrumValue_txpowdB10nrb25run1earfcn500)); - std::vector activeRbs_txpowdB30nrb25run1earfcn500 (16); + std::vector activeRbs_txpowdB30nrb25run1earfcn500 (13); activeRbs_txpowdB30nrb25run1earfcn500[0] = 0.000000000000e+00; activeRbs_txpowdB30nrb25run1earfcn500[1] = 1.000000000000e+00; activeRbs_txpowdB30nrb25run1earfcn500[2] = 2.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[3] = 3.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[4] = 5.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[5] = 6.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[6] = 7.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[7] = 8.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[8] = 9.000000000000e+00; - activeRbs_txpowdB30nrb25run1earfcn500[9] = 1.000000000000e+01; - activeRbs_txpowdB30nrb25run1earfcn500[10] = 1.200000000000e+01; - activeRbs_txpowdB30nrb25run1earfcn500[11] = 1.400000000000e+01; - activeRbs_txpowdB30nrb25run1earfcn500[12] = 1.500000000000e+01; - activeRbs_txpowdB30nrb25run1earfcn500[13] = 1.900000000000e+01; - activeRbs_txpowdB30nrb25run1earfcn500[14] = 2.000000000000e+01; - activeRbs_txpowdB30nrb25run1earfcn500[15] = 2.200000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[3] = 5.000000000000e+00; + activeRbs_txpowdB30nrb25run1earfcn500[4] = 6.000000000000e+00; + activeRbs_txpowdB30nrb25run1earfcn500[5] = 1.000000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[6] = 1.100000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[7] = 1.300000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[8] = 1.400000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[9] = 1.500000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[10] = 1.600000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[11] = 1.800000000000e+01; + activeRbs_txpowdB30nrb25run1earfcn500[12] = 2.400000000000e+01; SpectrumValue spectrumValue_txpowdB30nrb25run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 25)); - spectrumValue_txpowdB30nrb25run1earfcn500[0] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[1] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[2] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[3] = 2.000000000000e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[0] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[1] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[2] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[3] = 0.000000000000e+00; spectrumValue_txpowdB30nrb25run1earfcn500[4] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[5] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[6] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[7] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[8] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[9] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[10] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[11] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[12] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[13] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[14] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[15] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[16] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[5] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[6] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[7] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[8] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[9] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[10] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[11] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[12] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[13] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[14] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[15] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[16] = 2.222222222222e-07; spectrumValue_txpowdB30nrb25run1earfcn500[17] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[18] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[19] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run1earfcn500[20] = 2.000000000000e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[18] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[19] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[20] = 0.000000000000e+00; spectrumValue_txpowdB30nrb25run1earfcn500[21] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[22] = 2.000000000000e-07; + spectrumValue_txpowdB30nrb25run1earfcn500[22] = 0.000000000000e+00; spectrumValue_txpowdB30nrb25run1earfcn500[23] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run1earfcn500[24] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run1earfcn500[24] = 2.222222222222e-07; AddTestCase (new LteTxPsdTestCase ("txpowdB30nrb25run1earfcn500", 500, 25, 30.000000, activeRbs_txpowdB30nrb25run1earfcn500, spectrumValue_txpowdB30nrb25run1earfcn500)); - std::vector activeRbs_txpowdB10nrb100run1earfcn500 (47); + std::vector activeRbs_txpowdB10nrb100run1earfcn500 (60); activeRbs_txpowdB10nrb100run1earfcn500[0] = 0.000000000000e+00; - activeRbs_txpowdB10nrb100run1earfcn500[1] = 2.000000000000e+00; - activeRbs_txpowdB10nrb100run1earfcn500[2] = 3.000000000000e+00; - activeRbs_txpowdB10nrb100run1earfcn500[3] = 4.000000000000e+00; + activeRbs_txpowdB10nrb100run1earfcn500[1] = 1.000000000000e+00; + activeRbs_txpowdB10nrb100run1earfcn500[2] = 4.000000000000e+00; + activeRbs_txpowdB10nrb100run1earfcn500[3] = 5.000000000000e+00; activeRbs_txpowdB10nrb100run1earfcn500[4] = 6.000000000000e+00; - activeRbs_txpowdB10nrb100run1earfcn500[5] = 9.000000000000e+00; - activeRbs_txpowdB10nrb100run1earfcn500[6] = 1.600000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[7] = 1.700000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[8] = 1.800000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[9] = 2.200000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[10] = 2.300000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[11] = 2.900000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[12] = 3.200000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[13] = 3.300000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[14] = 3.500000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[15] = 3.800000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[16] = 3.900000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[17] = 4.000000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[18] = 4.100000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[19] = 4.500000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[20] = 4.600000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[21] = 4.800000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[22] = 5.000000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[23] = 5.300000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[24] = 5.400000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[25] = 5.800000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[26] = 5.900000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[27] = 6.000000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[28] = 6.200000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[29] = 6.600000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[30] = 6.800000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[31] = 7.100000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[32] = 7.200000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[33] = 7.400000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[34] = 7.600000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[35] = 7.700000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[36] = 8.100000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[37] = 8.200000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[38] = 8.300000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[39] = 8.400000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[40] = 8.800000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[41] = 9.200000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[42] = 9.300000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[43] = 9.500000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[44] = 9.600000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[45] = 9.700000000000e+01; - activeRbs_txpowdB10nrb100run1earfcn500[46] = 9.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[5] = 8.000000000000e+00; + activeRbs_txpowdB10nrb100run1earfcn500[6] = 1.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[7] = 1.200000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[8] = 1.300000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[9] = 1.400000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[10] = 1.500000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[11] = 1.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[12] = 1.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[13] = 2.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[14] = 2.400000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[15] = 2.500000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[16] = 2.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[17] = 2.700000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[18] = 2.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[19] = 2.900000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[20] = 3.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[21] = 3.100000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[22] = 3.300000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[23] = 3.500000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[24] = 3.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[25] = 3.700000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[26] = 3.900000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[27] = 4.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[28] = 4.500000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[29] = 4.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[30] = 4.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[31] = 4.900000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[32] = 5.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[33] = 5.300000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[34] = 5.700000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[35] = 5.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[36] = 6.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[37] = 6.300000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[38] = 6.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[39] = 6.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[40] = 6.900000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[41] = 7.100000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[42] = 7.300000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[43] = 7.700000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[44] = 7.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[45] = 7.900000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[46] = 8.200000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[47] = 8.500000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[48] = 8.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[49] = 8.700000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[50] = 8.800000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[51] = 9.000000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[52] = 9.100000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[53] = 9.200000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[54] = 9.300000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[55] = 9.400000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[56] = 9.500000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[57] = 9.600000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[58] = 9.700000000000e+01; + activeRbs_txpowdB10nrb100run1earfcn500[59] = 9.800000000000e+01; SpectrumValue spectrumValue_txpowdB10nrb100run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 100)); - spectrumValue_txpowdB10nrb100run1earfcn500[0] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[1] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[2] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[3] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[4] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[5] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[6] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[0] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[1] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[2] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[3] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[4] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[5] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[6] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[7] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[8] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[9] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[10] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[8] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[9] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[10] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[11] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[12] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[13] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[14] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[15] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[16] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[17] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[18] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[12] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[13] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[14] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[15] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[16] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[17] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[18] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[19] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[20] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[20] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[21] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[22] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[23] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[24] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[25] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[26] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[27] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[28] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[29] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[30] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[31] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[32] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[33] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[22] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[23] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[24] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[25] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[26] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[27] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[28] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[29] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[30] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[31] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[32] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[33] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[34] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[35] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[36] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[37] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[38] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[39] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[40] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[41] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[35] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[36] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[37] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[38] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[39] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[40] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[41] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[42] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[43] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[44] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[45] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[46] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[45] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[46] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[47] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[48] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[49] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[50] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[48] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[49] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[50] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[51] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[52] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[53] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[54] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[53] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[54] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[55] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[56] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[57] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[58] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[59] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[60] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[57] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[58] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[59] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[60] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[61] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[62] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[63] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[62] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[63] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[64] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[65] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[66] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[66] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[67] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[68] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[69] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[68] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[69] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[70] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[71] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[72] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[73] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[74] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[71] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[72] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[73] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[74] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run1earfcn500[75] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[76] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[77] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[78] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[79] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[76] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[77] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[78] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[79] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[80] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[81] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[82] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[83] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[84] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[85] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[86] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[87] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[88] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[81] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[82] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[83] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[84] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run1earfcn500[85] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[86] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[87] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[88] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[89] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[90] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[91] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[92] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[93] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[94] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run1earfcn500[95] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[96] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[97] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run1earfcn500[98] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[90] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[91] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[92] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[93] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[94] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[95] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[96] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[97] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run1earfcn500[98] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run1earfcn500[99] = 0.000000000000e+00; AddTestCase (new LteTxPsdTestCase ("txpowdB10nrb100run1earfcn500", 500, 100, 10.000000, activeRbs_txpowdB10nrb100run1earfcn500, spectrumValue_txpowdB10nrb100run1earfcn500)); - std::vector activeRbs_txpowdB30nrb100run1earfcn500 (45); + std::vector activeRbs_txpowdB30nrb100run1earfcn500 (39); activeRbs_txpowdB30nrb100run1earfcn500[0] = 0.000000000000e+00; - activeRbs_txpowdB30nrb100run1earfcn500[1] = 1.000000000000e+00; + activeRbs_txpowdB30nrb100run1earfcn500[1] = 5.000000000000e+00; activeRbs_txpowdB30nrb100run1earfcn500[2] = 6.000000000000e+00; - activeRbs_txpowdB30nrb100run1earfcn500[3] = 9.000000000000e+00; - activeRbs_txpowdB30nrb100run1earfcn500[4] = 1.100000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[5] = 1.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[6] = 1.400000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[7] = 1.600000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[8] = 1.700000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[9] = 2.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[10] = 2.500000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[11] = 2.700000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[12] = 3.000000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[13] = 3.100000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[14] = 3.400000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[15] = 3.900000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[16] = 4.100000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[17] = 4.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[18] = 4.600000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[19] = 4.700000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[20] = 4.800000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[21] = 5.000000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[3] = 8.000000000000e+00; + activeRbs_txpowdB30nrb100run1earfcn500[4] = 1.000000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[5] = 1.100000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[6] = 1.300000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[7] = 1.700000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[8] = 1.800000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[9] = 1.900000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[10] = 2.200000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[11] = 2.400000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[12] = 2.500000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[13] = 2.800000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[14] = 2.900000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[15] = 3.300000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[16] = 3.600000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[17] = 3.800000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[18] = 4.000000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[19] = 4.500000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[20] = 4.600000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[21] = 4.800000000000e+01; activeRbs_txpowdB30nrb100run1earfcn500[22] = 5.200000000000e+01; activeRbs_txpowdB30nrb100run1earfcn500[23] = 5.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[24] = 5.500000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[24] = 5.400000000000e+01; activeRbs_txpowdB30nrb100run1earfcn500[25] = 5.600000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[26] = 5.700000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[27] = 5.800000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[28] = 5.900000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[29] = 6.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[30] = 6.400000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[31] = 6.500000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[32] = 6.700000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[33] = 7.000000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[34] = 7.200000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[35] = 7.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[36] = 8.400000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[37] = 8.900000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[38] = 9.000000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[39] = 9.100000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[40] = 9.200000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[41] = 9.300000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[42] = 9.400000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[43] = 9.500000000000e+01; - activeRbs_txpowdB30nrb100run1earfcn500[44] = 9.900000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[26] = 6.600000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[27] = 6.700000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[28] = 7.000000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[29] = 7.300000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[30] = 7.700000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[31] = 8.200000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[32] = 8.800000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[33] = 9.000000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[34] = 9.100000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[35] = 9.200000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[36] = 9.600000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[37] = 9.800000000000e+01; + activeRbs_txpowdB30nrb100run1earfcn500[38] = 9.900000000000e+01; SpectrumValue spectrumValue_txpowdB30nrb100run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 100)); - spectrumValue_txpowdB30nrb100run1earfcn500[0] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[1] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[0] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[1] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[2] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[3] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[4] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[5] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[6] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[5] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[6] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[7] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[8] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[9] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[10] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[11] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[8] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[9] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[10] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[11] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[12] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[13] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[14] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[13] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[14] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[15] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[16] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[17] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[18] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[19] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[16] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[17] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[18] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[19] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[20] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[21] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[22] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[23] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[24] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[25] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[22] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[23] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[24] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[25] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[26] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[27] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[28] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[29] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[30] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[31] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[27] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[28] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[29] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[30] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[31] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[32] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[33] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[34] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[33] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[34] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[35] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[36] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[36] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[37] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[38] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[39] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[40] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[41] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[38] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[39] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[40] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[41] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[42] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[43] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[43] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[44] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[45] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[46] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[47] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[48] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[45] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[46] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[47] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[48] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[49] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[50] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[50] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[51] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[52] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[53] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[54] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[55] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[56] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[57] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[58] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[59] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[52] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[53] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[54] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[55] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[56] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[57] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[58] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[59] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[60] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[61] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[62] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[63] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[64] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[65] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[66] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[67] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[63] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[64] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[65] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[66] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[67] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[68] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[69] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[70] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[70] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[71] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[72] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[73] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[72] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[73] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[74] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[75] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[76] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[77] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[77] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[78] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[79] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[80] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[81] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[82] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[82] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[83] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[84] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[84] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[85] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[86] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run1earfcn500[87] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[88] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[89] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[90] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[91] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[92] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[93] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[94] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[95] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run1earfcn500[96] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[88] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[89] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[90] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[91] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[92] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[93] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[94] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[95] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run1earfcn500[96] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run1earfcn500[97] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[98] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run1earfcn500[99] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[98] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run1earfcn500[99] = 5.555555555556e-08; AddTestCase (new LteTxPsdTestCase ("txpowdB30nrb100run1earfcn500", 500, 100, 30.000000, activeRbs_txpowdB30nrb100run1earfcn500, spectrumValue_txpowdB30nrb100run1earfcn500)); - std::vector activeRbs_txpowdB10nrb6run2earfcn500 (2); - activeRbs_txpowdB10nrb6run2earfcn500[0] = 0.000000000000e+00; - activeRbs_txpowdB10nrb6run2earfcn500[1] = 3.000000000000e+00; + std::vector activeRbs_txpowdB10nrb6run2earfcn500 (3); + activeRbs_txpowdB10nrb6run2earfcn500[0] = 1.000000000000e+00; + activeRbs_txpowdB10nrb6run2earfcn500[1] = 4.000000000000e+00; + activeRbs_txpowdB10nrb6run2earfcn500[2] = 5.000000000000e+00; SpectrumValue spectrumValue_txpowdB10nrb6run2earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6)); - spectrumValue_txpowdB10nrb6run2earfcn500[0] = 7.142857142857e-09; - spectrumValue_txpowdB10nrb6run2earfcn500[1] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb6run2earfcn500[0] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb6run2earfcn500[1] = 9.259259259259e-09; spectrumValue_txpowdB10nrb6run2earfcn500[2] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb6run2earfcn500[3] = 7.142857142857e-09; - spectrumValue_txpowdB10nrb6run2earfcn500[4] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb6run2earfcn500[5] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb6run2earfcn500[3] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb6run2earfcn500[4] = 9.259259259259e-09; + spectrumValue_txpowdB10nrb6run2earfcn500[5] = 9.259259259259e-09; AddTestCase (new LteTxPsdTestCase ("txpowdB10nrb6run2earfcn500", 500, 6, 10.000000, activeRbs_txpowdB10nrb6run2earfcn500, spectrumValue_txpowdB10nrb6run2earfcn500)); - std::vector activeRbs_txpowdB30nrb6run2earfcn500 (4); - activeRbs_txpowdB30nrb6run2earfcn500[0] = 0.000000000000e+00; - activeRbs_txpowdB30nrb6run2earfcn500[1] = 1.000000000000e+00; - activeRbs_txpowdB30nrb6run2earfcn500[2] = 2.000000000000e+00; - activeRbs_txpowdB30nrb6run2earfcn500[3] = 4.000000000000e+00; + std::vector activeRbs_txpowdB30nrb6run2earfcn500 (3); + activeRbs_txpowdB30nrb6run2earfcn500[0] = 3.000000000000e+00; + activeRbs_txpowdB30nrb6run2earfcn500[1] = 4.000000000000e+00; + activeRbs_txpowdB30nrb6run2earfcn500[2] = 5.000000000000e+00; SpectrumValue spectrumValue_txpowdB30nrb6run2earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6)); - spectrumValue_txpowdB30nrb6run2earfcn500[0] = 7.142857142857e-07; - spectrumValue_txpowdB30nrb6run2earfcn500[1] = 7.142857142857e-07; - spectrumValue_txpowdB30nrb6run2earfcn500[2] = 7.142857142857e-07; - spectrumValue_txpowdB30nrb6run2earfcn500[3] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb6run2earfcn500[4] = 7.142857142857e-07; - spectrumValue_txpowdB30nrb6run2earfcn500[5] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb6run2earfcn500[0] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb6run2earfcn500[1] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb6run2earfcn500[2] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb6run2earfcn500[3] = 9.259259259259e-07; + spectrumValue_txpowdB30nrb6run2earfcn500[4] = 9.259259259259e-07; + spectrumValue_txpowdB30nrb6run2earfcn500[5] = 9.259259259259e-07; AddTestCase (new LteTxPsdTestCase ("txpowdB30nrb6run2earfcn500", 500, 6, 30.000000, activeRbs_txpowdB30nrb6run2earfcn500, spectrumValue_txpowdB30nrb6run2earfcn500)); - std::vector activeRbs_txpowdB10nrb25run2earfcn500 (8); - activeRbs_txpowdB10nrb25run2earfcn500[0] = 3.000000000000e+00; - activeRbs_txpowdB10nrb25run2earfcn500[1] = 5.000000000000e+00; - activeRbs_txpowdB10nrb25run2earfcn500[2] = 7.000000000000e+00; - activeRbs_txpowdB10nrb25run2earfcn500[3] = 1.200000000000e+01; - activeRbs_txpowdB10nrb25run2earfcn500[4] = 1.400000000000e+01; - activeRbs_txpowdB10nrb25run2earfcn500[5] = 1.500000000000e+01; - activeRbs_txpowdB10nrb25run2earfcn500[6] = 1.600000000000e+01; - activeRbs_txpowdB10nrb25run2earfcn500[7] = 2.200000000000e+01; + std::vector activeRbs_txpowdB10nrb25run2earfcn500 (15); + activeRbs_txpowdB10nrb25run2earfcn500[0] = 0.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[1] = 1.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[2] = 2.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[3] = 4.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[4] = 5.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[5] = 6.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[6] = 8.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[7] = 9.000000000000e+00; + activeRbs_txpowdB10nrb25run2earfcn500[8] = 1.100000000000e+01; + activeRbs_txpowdB10nrb25run2earfcn500[9] = 1.200000000000e+01; + activeRbs_txpowdB10nrb25run2earfcn500[10] = 1.400000000000e+01; + activeRbs_txpowdB10nrb25run2earfcn500[11] = 1.600000000000e+01; + activeRbs_txpowdB10nrb25run2earfcn500[12] = 1.800000000000e+01; + activeRbs_txpowdB10nrb25run2earfcn500[13] = 1.900000000000e+01; + activeRbs_txpowdB10nrb25run2earfcn500[14] = 2.400000000000e+01; SpectrumValue spectrumValue_txpowdB10nrb25run2earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 25)); - spectrumValue_txpowdB10nrb25run2earfcn500[0] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[1] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[2] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[3] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run2earfcn500[4] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[5] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run2earfcn500[6] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[7] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run2earfcn500[8] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[9] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run2earfcn500[0] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[1] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[2] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[3] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run2earfcn500[4] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[5] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[6] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[7] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run2earfcn500[8] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[9] = 2.222222222222e-09; spectrumValue_txpowdB10nrb25run2earfcn500[10] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[11] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[12] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[11] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[12] = 2.222222222222e-09; spectrumValue_txpowdB10nrb25run2earfcn500[13] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[14] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run2earfcn500[15] = 2.000000000000e-09; - spectrumValue_txpowdB10nrb25run2earfcn500[16] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[14] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[15] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run2earfcn500[16] = 2.222222222222e-09; spectrumValue_txpowdB10nrb25run2earfcn500[17] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[18] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[19] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run2earfcn500[18] = 2.222222222222e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[19] = 2.222222222222e-09; spectrumValue_txpowdB10nrb25run2earfcn500[20] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run2earfcn500[21] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[22] = 2.000000000000e-09; + spectrumValue_txpowdB10nrb25run2earfcn500[22] = 0.000000000000e+00; spectrumValue_txpowdB10nrb25run2earfcn500[23] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb25run2earfcn500[24] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb25run2earfcn500[24] = 2.222222222222e-09; AddTestCase (new LteTxPsdTestCase ("txpowdB10nrb25run2earfcn500", 500, 25, 10.000000, activeRbs_txpowdB10nrb25run2earfcn500, spectrumValue_txpowdB10nrb25run2earfcn500)); - std::vector activeRbs_txpowdB30nrb25run2earfcn500 (11); - activeRbs_txpowdB30nrb25run2earfcn500[0] = 4.000000000000e+00; - activeRbs_txpowdB30nrb25run2earfcn500[1] = 6.000000000000e+00; - activeRbs_txpowdB30nrb25run2earfcn500[2] = 8.000000000000e+00; - activeRbs_txpowdB30nrb25run2earfcn500[3] = 9.000000000000e+00; - activeRbs_txpowdB30nrb25run2earfcn500[4] = 1.000000000000e+01; - activeRbs_txpowdB30nrb25run2earfcn500[5] = 1.100000000000e+01; - activeRbs_txpowdB30nrb25run2earfcn500[6] = 1.400000000000e+01; - activeRbs_txpowdB30nrb25run2earfcn500[7] = 1.500000000000e+01; - activeRbs_txpowdB30nrb25run2earfcn500[8] = 1.600000000000e+01; - activeRbs_txpowdB30nrb25run2earfcn500[9] = 2.200000000000e+01; - activeRbs_txpowdB30nrb25run2earfcn500[10] = 2.400000000000e+01; + std::vector activeRbs_txpowdB30nrb25run2earfcn500 (13); + activeRbs_txpowdB30nrb25run2earfcn500[0] = 0.000000000000e+00; + activeRbs_txpowdB30nrb25run2earfcn500[1] = 1.000000000000e+00; + activeRbs_txpowdB30nrb25run2earfcn500[2] = 2.000000000000e+00; + activeRbs_txpowdB30nrb25run2earfcn500[3] = 5.000000000000e+00; + activeRbs_txpowdB30nrb25run2earfcn500[4] = 6.000000000000e+00; + activeRbs_txpowdB30nrb25run2earfcn500[5] = 8.000000000000e+00; + activeRbs_txpowdB30nrb25run2earfcn500[6] = 1.000000000000e+01; + activeRbs_txpowdB30nrb25run2earfcn500[7] = 1.200000000000e+01; + activeRbs_txpowdB30nrb25run2earfcn500[8] = 1.300000000000e+01; + activeRbs_txpowdB30nrb25run2earfcn500[9] = 1.600000000000e+01; + activeRbs_txpowdB30nrb25run2earfcn500[10] = 1.900000000000e+01; + activeRbs_txpowdB30nrb25run2earfcn500[11] = 2.300000000000e+01; + activeRbs_txpowdB30nrb25run2earfcn500[12] = 2.400000000000e+01; SpectrumValue spectrumValue_txpowdB30nrb25run2earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 25)); - spectrumValue_txpowdB30nrb25run2earfcn500[0] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[1] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[2] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[0] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[1] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[2] = 2.222222222222e-07; spectrumValue_txpowdB30nrb25run2earfcn500[3] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[4] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[5] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[6] = 2.000000000000e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[4] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[5] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[6] = 2.222222222222e-07; spectrumValue_txpowdB30nrb25run2earfcn500[7] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[8] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[9] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[10] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[11] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[12] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[13] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[14] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[15] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[16] = 2.000000000000e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[8] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[9] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[10] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[11] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[12] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[13] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[14] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[15] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[16] = 2.222222222222e-07; spectrumValue_txpowdB30nrb25run2earfcn500[17] = 0.000000000000e+00; spectrumValue_txpowdB30nrb25run2earfcn500[18] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[19] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[19] = 2.222222222222e-07; spectrumValue_txpowdB30nrb25run2earfcn500[20] = 0.000000000000e+00; spectrumValue_txpowdB30nrb25run2earfcn500[21] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[22] = 2.000000000000e-07; - spectrumValue_txpowdB30nrb25run2earfcn500[23] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb25run2earfcn500[24] = 2.000000000000e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[22] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb25run2earfcn500[23] = 2.222222222222e-07; + spectrumValue_txpowdB30nrb25run2earfcn500[24] = 2.222222222222e-07; AddTestCase (new LteTxPsdTestCase ("txpowdB30nrb25run2earfcn500", 500, 25, 30.000000, activeRbs_txpowdB30nrb25run2earfcn500, spectrumValue_txpowdB30nrb25run2earfcn500)); - std::vector activeRbs_txpowdB10nrb100run2earfcn500 (42); - activeRbs_txpowdB10nrb100run2earfcn500[0] = 1.000000000000e+00; - activeRbs_txpowdB10nrb100run2earfcn500[1] = 2.000000000000e+00; - activeRbs_txpowdB10nrb100run2earfcn500[2] = 5.000000000000e+00; - activeRbs_txpowdB10nrb100run2earfcn500[3] = 6.000000000000e+00; - activeRbs_txpowdB10nrb100run2earfcn500[4] = 1.100000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[5] = 1.300000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[6] = 1.500000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[7] = 1.600000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[8] = 1.700000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[9] = 1.800000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[10] = 2.300000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[11] = 2.400000000000e+01; + std::vector activeRbs_txpowdB10nrb100run2earfcn500 (48); + activeRbs_txpowdB10nrb100run2earfcn500[0] = 2.000000000000e+00; + activeRbs_txpowdB10nrb100run2earfcn500[1] = 4.000000000000e+00; + activeRbs_txpowdB10nrb100run2earfcn500[2] = 8.000000000000e+00; + activeRbs_txpowdB10nrb100run2earfcn500[3] = 9.000000000000e+00; + activeRbs_txpowdB10nrb100run2earfcn500[4] = 1.000000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[5] = 1.100000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[6] = 1.300000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[7] = 1.400000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[8] = 1.800000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[9] = 1.900000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[10] = 2.100000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[11] = 2.200000000000e+01; activeRbs_txpowdB10nrb100run2earfcn500[12] = 2.500000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[13] = 3.300000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[14] = 3.400000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[15] = 3.500000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[16] = 3.600000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[17] = 3.800000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[18] = 3.900000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[19] = 4.400000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[20] = 4.900000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[21] = 5.000000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[13] = 2.900000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[14] = 3.200000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[15] = 3.700000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[16] = 3.900000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[17] = 4.000000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[18] = 4.100000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[19] = 4.300000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[20] = 4.600000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[21] = 4.800000000000e+01; activeRbs_txpowdB10nrb100run2earfcn500[22] = 5.100000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[23] = 5.600000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[24] = 5.700000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[25] = 5.900000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[26] = 6.100000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[27] = 6.200000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[28] = 6.400000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[29] = 6.500000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[30] = 6.800000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[31] = 6.900000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[32] = 7.700000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[33] = 8.000000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[34] = 8.100000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[35] = 8.200000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[36] = 8.300000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[37] = 8.400000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[38] = 8.700000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[39] = 9.100000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[40] = 9.600000000000e+01; - activeRbs_txpowdB10nrb100run2earfcn500[41] = 9.900000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[23] = 5.300000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[24] = 5.400000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[25] = 5.500000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[26] = 5.700000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[27] = 5.900000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[28] = 6.000000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[29] = 6.100000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[30] = 6.300000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[31] = 6.500000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[32] = 6.600000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[33] = 6.800000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[34] = 7.000000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[35] = 7.200000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[36] = 7.300000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[37] = 7.600000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[38] = 7.800000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[39] = 8.000000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[40] = 8.100000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[41] = 8.300000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[42] = 8.400000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[43] = 8.600000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[44] = 8.700000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[45] = 9.100000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[46] = 9.200000000000e+01; + activeRbs_txpowdB10nrb100run2earfcn500[47] = 9.700000000000e+01; SpectrumValue spectrumValue_txpowdB10nrb100run2earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 100)); spectrumValue_txpowdB10nrb100run2earfcn500[0] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[1] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[2] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[1] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[2] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[3] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[4] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[5] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[6] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[4] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[5] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[6] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[7] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[8] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[9] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[10] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[11] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[8] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[9] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[10] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[11] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[12] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[13] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[14] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[15] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[16] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[17] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[18] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[19] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[13] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[14] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[15] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[16] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[17] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[18] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[19] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[20] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[21] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[22] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[23] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[24] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[25] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[21] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[22] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[23] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[24] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[25] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[26] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[27] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[28] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[29] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[29] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[30] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[31] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[32] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[33] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[34] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[35] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[36] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[37] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[38] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[39] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[40] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[41] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[32] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[33] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[34] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[35] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[36] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[37] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[38] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[39] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[40] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[41] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[42] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[43] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[44] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[43] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[44] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[45] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[46] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[46] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[47] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[48] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[49] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[50] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[51] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[48] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[49] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[50] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[51] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[52] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[53] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[54] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[55] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[56] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[57] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[53] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[54] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[55] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[56] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[57] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[58] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[59] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[60] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[61] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[62] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[63] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[64] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[65] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[66] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[59] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[60] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[61] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[62] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[63] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[64] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[65] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[66] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[67] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[68] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[69] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[70] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[68] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[69] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[70] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[71] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[72] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[73] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[72] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[73] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[74] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[75] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[76] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[77] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[78] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[76] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[77] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[78] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[79] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[80] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[81] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[82] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[83] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[84] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[80] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[81] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[82] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[83] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[84] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[85] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[86] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[87] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[86] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[87] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[88] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[89] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[90] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[91] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[92] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[91] = 5.555555555556e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[92] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[93] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[94] = 0.000000000000e+00; spectrumValue_txpowdB10nrb100run2earfcn500[95] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[96] = 5.000000000000e-10; - spectrumValue_txpowdB10nrb100run2earfcn500[97] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[96] = 0.000000000000e+00; + spectrumValue_txpowdB10nrb100run2earfcn500[97] = 5.555555555556e-10; spectrumValue_txpowdB10nrb100run2earfcn500[98] = 0.000000000000e+00; - spectrumValue_txpowdB10nrb100run2earfcn500[99] = 5.000000000000e-10; + spectrumValue_txpowdB10nrb100run2earfcn500[99] = 0.000000000000e+00; AddTestCase (new LteTxPsdTestCase ("txpowdB10nrb100run2earfcn500", 500, 100, 10.000000, activeRbs_txpowdB10nrb100run2earfcn500, spectrumValue_txpowdB10nrb100run2earfcn500)); - std::vector activeRbs_txpowdB30nrb100run2earfcn500 (49); - activeRbs_txpowdB30nrb100run2earfcn500[0] = 1.000000000000e+00; + std::vector activeRbs_txpowdB30nrb100run2earfcn500 (52); + activeRbs_txpowdB30nrb100run2earfcn500[0] = 0.000000000000e+00; activeRbs_txpowdB30nrb100run2earfcn500[1] = 2.000000000000e+00; - activeRbs_txpowdB30nrb100run2earfcn500[2] = 4.000000000000e+00; - activeRbs_txpowdB30nrb100run2earfcn500[3] = 5.000000000000e+00; - activeRbs_txpowdB30nrb100run2earfcn500[4] = 6.000000000000e+00; - activeRbs_txpowdB30nrb100run2earfcn500[5] = 9.000000000000e+00; - activeRbs_txpowdB30nrb100run2earfcn500[6] = 1.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[7] = 1.600000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[8] = 2.000000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[9] = 2.100000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[10] = 2.200000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[11] = 2.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[12] = 2.500000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[13] = 2.700000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[14] = 3.200000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[15] = 3.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[16] = 3.700000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[17] = 3.800000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[18] = 3.900000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[19] = 4.000000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[20] = 4.100000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[21] = 4.500000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[22] = 4.800000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[23] = 5.000000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[2] = 3.000000000000e+00; + activeRbs_txpowdB30nrb100run2earfcn500[3] = 4.000000000000e+00; + activeRbs_txpowdB30nrb100run2earfcn500[4] = 7.000000000000e+00; + activeRbs_txpowdB30nrb100run2earfcn500[5] = 8.000000000000e+00; + activeRbs_txpowdB30nrb100run2earfcn500[6] = 9.000000000000e+00; + activeRbs_txpowdB30nrb100run2earfcn500[7] = 1.300000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[8] = 1.400000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[9] = 1.900000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[10] = 2.000000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[11] = 2.100000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[12] = 2.300000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[13] = 2.500000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[14] = 2.700000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[15] = 2.800000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[16] = 3.100000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[17] = 3.200000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[18] = 3.600000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[19] = 3.800000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[20] = 3.900000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[21] = 4.000000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[22] = 4.300000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[23] = 4.600000000000e+01; activeRbs_txpowdB30nrb100run2earfcn500[24] = 5.100000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[25] = 5.600000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[26] = 5.700000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[27] = 5.900000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[28] = 6.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[29] = 6.700000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[30] = 6.800000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[31] = 7.200000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[32] = 7.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[33] = 7.800000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[34] = 7.900000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[35] = 8.200000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[36] = 8.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[37] = 8.400000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[38] = 8.500000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[39] = 8.700000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[40] = 8.800000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[41] = 8.900000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[42] = 9.000000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[43] = 9.100000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[44] = 9.200000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[45] = 9.300000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[46] = 9.400000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[47] = 9.700000000000e+01; - activeRbs_txpowdB30nrb100run2earfcn500[48] = 9.900000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[25] = 5.200000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[26] = 5.300000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[27] = 5.400000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[28] = 5.500000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[29] = 5.800000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[30] = 5.900000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[31] = 6.200000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[32] = 6.600000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[33] = 6.700000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[34] = 6.800000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[35] = 7.000000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[36] = 7.100000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[37] = 7.200000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[38] = 7.300000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[39] = 7.400000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[40] = 7.600000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[41] = 7.800000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[42] = 8.200000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[43] = 8.300000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[44] = 8.500000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[45] = 8.900000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[46] = 9.000000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[47] = 9.100000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[48] = 9.400000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[49] = 9.500000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[50] = 9.800000000000e+01; + activeRbs_txpowdB30nrb100run2earfcn500[51] = 9.900000000000e+01; SpectrumValue spectrumValue_txpowdB30nrb100run2earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 100)); - spectrumValue_txpowdB30nrb100run2earfcn500[0] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[1] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[2] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[3] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[4] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[5] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[6] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[7] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[8] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[9] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[0] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[1] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[2] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[3] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[4] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[5] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[6] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[7] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[8] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[9] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[10] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[11] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[12] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[13] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[14] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[13] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[14] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[15] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[16] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[16] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[17] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[18] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[19] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[20] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[21] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[22] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[23] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[19] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[20] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[21] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[22] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[23] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[24] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[25] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[25] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[26] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[27] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[28] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[27] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[28] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[29] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[30] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[31] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[32] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[33] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[31] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[32] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[33] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[34] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[35] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[36] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[37] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[38] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[39] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[40] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[41] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[36] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[37] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[38] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[39] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[40] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[41] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[42] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[43] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[43] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[44] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[45] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[46] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[45] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[46] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[47] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[48] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[48] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[49] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[50] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[51] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[52] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[53] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[54] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[55] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[56] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[57] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[58] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[59] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[50] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[51] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[52] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[53] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[54] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[55] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[56] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[57] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[58] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[59] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[60] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[61] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[62] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[63] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[62] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[63] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[64] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[65] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[66] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[67] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[68] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[66] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[67] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[68] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[69] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[70] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[71] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[72] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[73] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[74] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[70] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[71] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[72] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[73] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[74] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[75] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[76] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[76] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[77] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[78] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[79] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[78] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[79] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[80] = 0.000000000000e+00; spectrumValue_txpowdB30nrb100run2earfcn500[81] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[82] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[83] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[84] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[85] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[82] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[83] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[84] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[85] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[86] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[87] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[88] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[89] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[90] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[91] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[92] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[93] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[94] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[95] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[87] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[88] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[89] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[90] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[91] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[92] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[93] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[94] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[95] = 5.555555555556e-08; spectrumValue_txpowdB30nrb100run2earfcn500[96] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[97] = 5.000000000000e-08; - spectrumValue_txpowdB30nrb100run2earfcn500[98] = 0.000000000000e+00; - spectrumValue_txpowdB30nrb100run2earfcn500[99] = 5.000000000000e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[97] = 0.000000000000e+00; + spectrumValue_txpowdB30nrb100run2earfcn500[98] = 5.555555555556e-08; + spectrumValue_txpowdB30nrb100run2earfcn500[99] = 5.555555555556e-08; AddTestCase (new LteTxPsdTestCase ("txpowdB30nrb100run2earfcn500", 500, 100, 30.000000, activeRbs_txpowdB30nrb100run2earfcn500, spectrumValue_txpowdB30nrb100run2earfcn500)); diff --git a/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m b/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m index 6d9b68447..49db7de61 100644 --- a/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m +++ b/src/lte/test/reference/generate_test_data_lte_spectrum_value_txpsd.m @@ -11,11 +11,7 @@ for run = 1:2 for nrbs = [6 25 100] - if (nrbs == 6) - chbw = 1.4e6; - else - chbw = (nrbs / 5) * 1e6; - endif + bw = nrbs * 180000; for txpowdBm = [10 30] @@ -26,7 +22,7 @@ for run = 1:2 activeRbsMask = round (rand (1,nrbs)); activeRbs = find (activeRbsMask) - 1; txpowW = (10.^(txpowdBm/10))/1000; - txpsd = txpowW.*activeRbsMask./chbw; + txpsd = txpowW.*activeRbsMask./bw; printf("std::vector %s (%d);\n", arname, length(activeRbs)); print_C_vector (activeRbs, arname); From b5f9c3f2140c7e3d83bf7e6448af4227d82f36c6 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 15:54:32 +0200 Subject: [PATCH 07/15] added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values --- src/lte/model/lte-interference.cc | 4 +- src/lte/model/lte-phy.cc | 12 ++ src/lte/model/lte-phy.h | 13 ++ src/lte/test/lte-test-link-adaptation.cc | 124 ++++++++++-------- src/lte/test/lte-test-link-adaptation.h | 4 +- src/lte/test/lte-test-sinr-chunk-processor.cc | 5 +- src/lte/test/lte-test-sinr-chunk-processor.h | 1 + 7 files changed, 100 insertions(+), 63 deletions(-) diff --git a/src/lte/model/lte-interference.cc b/src/lte/model/lte-interference.cc index 5a6c4bd35..e6f621322 100644 --- a/src/lte/model/lte-interference.cc +++ b/src/lte/model/lte-interference.cc @@ -145,6 +145,8 @@ LteInterference::ConditionallyEvaluateChunk () NS_LOG_DEBUG (this << " now " << Now () << " last " << m_lastChangeTime); if (m_receiving && (Now () > m_lastChangeTime)) { + NS_LOG_LOGIC (this << " signal = " << *m_rxSignal << " allSignals = " << *m_allSignals << " noise = " << *m_noise); + SpectrumValue sinr = (*m_rxSignal) / ((*m_allSignals) - (*m_rxSignal) + (*m_noise)); Time duration = Now () - m_lastChangeTime; for (std::list >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it) @@ -161,7 +163,7 @@ LteInterference::ConditionallyEvaluateChunk () void LteInterference::SetNoisePowerSpectralDensity (Ptr noisePsd) { - NS_LOG_FUNCTION (this << noisePsd); + NS_LOG_FUNCTION (this << *noisePsd); m_noise = noisePsd; // we can initialize m_allSignal only now, because earlier we // didn't know what spectrum model was going to be used. diff --git a/src/lte/model/lte-phy.cc b/src/lte/model/lte-phy.cc index 25d18cb5b..6f52f3ad8 100644 --- a/src/lte/model/lte-phy.cc +++ b/src/lte/model/lte-phy.cc @@ -107,6 +107,18 @@ LtePhy::GetDevice () NS_LOG_FUNCTION (this); return m_netDevice; } + +Ptr +LtePhy::GetDownlinkSpectrumPhy () +{ + return m_downlinkSpectrumPhy; +} + +Ptr +LtePhy::GetUplinkSpectrumPhy () +{ + return m_uplinkSpectrumPhy; +} void diff --git a/src/lte/model/lte-phy.h b/src/lte/model/lte-phy.h index e3faa6872..e83e45ab8 100644 --- a/src/lte/model/lte-phy.h +++ b/src/lte/model/lte-phy.h @@ -75,6 +75,19 @@ public: */ Ptr GetDevice (); + /** + * + * \return a pointer to the LteSpectrumPhy instance that manages the downlink + */ + Ptr GetDownlinkSpectrumPhy (); + + + /** + * + * \return a pointer to the LteSpectrumPhy instance that manages the uplink + */ + Ptr GetUplinkSpectrumPhy (); + /** * \brief Queue the MAC PDU to be sent (according to m_macChTtiDelay) * \param p the MAC PDU to sent diff --git a/src/lte/test/lte-test-link-adaptation.cc b/src/lte/test/lte-test-link-adaptation.cc index 65faee970..5f12d14a2 100644 --- a/src/lte/test/lte-test-link-adaptation.cc +++ b/src/lte/test/lte-test-link-adaptation.cc @@ -26,8 +26,13 @@ #include "ns3/mobility-helper.h" #include "ns3/lena-helper.h" +#include "ns3/lte-ue-phy.h" +#include "ns3/lte-ue-net-device.h" + #include "ns3/lte-test-link-adaptation.h" +#include "lte-test-sinr-chunk-processor.h" + NS_LOG_COMPONENT_DEFINE ("LteLinkAdaptationTest"); using namespace ns3; @@ -89,13 +94,13 @@ LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite () struct SnrEfficiencyMcs { - double snr; + double snrDb; double efficiency; int mcsIndex; }; /** - * Test vectors: SNR, Spectral Efficiency, MCS index + * Test vectors: SNRDB, Spectral Efficiency, MCS index * From XXX */ SnrEfficiencyMcs snrEfficiencyMcs[] = { @@ -139,30 +144,22 @@ LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite () int numOfTests = sizeof (snrEfficiencyMcs) / sizeof (SnrEfficiencyMcs); + double txPowerDbm = 30; // default eNB TX power over whole bandwdith + double ktDbm = -174; // reference LTE noise PSD + double noisePowerDbm = ktDbm + 10*log10(25*180000); // corresponds to kT*bandwidth in linear units + double receiverNoiseFigureDb = 9.0; // default UE noise figure + for ( int i = 0 ; i < numOfTests; i++ ) - { - /** - * SNR (in dB) - * - * SNR = P_tx - loss - noise - receiverNoiseFigure - * - * loss = P_tx - SNR - noise - receiverNoiseFigure - * - * where: P_tx is transmission power - * loss in (dB) - * noise - */ - double noiseDb = -107.5; - double receiverNoiseFigureDb = 5.0; - double lossDb = 30.0 - snrEfficiencyMcs[i].snr - noiseDb - receiverNoiseFigureDb; + { + double lossDb = txPowerDbm - snrEfficiencyMcs[i].snrDb - noisePowerDbm - receiverNoiseFigureDb; double lossLinear = pow (10, lossDb / 10); double distance = ( ( 3e8 * sqrt ( lossLinear ) ) / ( 4.0 * M_PI * 2.160e9 ) ); std::ostringstream name; name << "link adaptation" - << " snr= " << snrEfficiencyMcs[i].snr + << " snr= " << snrEfficiencyMcs[i].snrDb << " mcs= " << snrEfficiencyMcs[i].mcsIndex; - AddTestCase (new LteLinkAdaptationTestCase (name.str (), snrEfficiencyMcs[i].snr, lossDb, distance, snrEfficiencyMcs[i].mcsIndex)); + AddTestCase (new LteLinkAdaptationTestCase (name.str (), snrEfficiencyMcs[i].snrDb, lossDb, distance, snrEfficiencyMcs[i].mcsIndex)); } } @@ -174,15 +171,15 @@ static LteLinkAdaptationTestSuite lteLinkAdaptationTestSuite; * TestCase */ -LteLinkAdaptationTestCase::LteLinkAdaptationTestCase (std::string name, double snr, double loss, double distance, uint16_t mcsIndex) +LteLinkAdaptationTestCase::LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, double distance, uint16_t mcsIndex) : TestCase (name), - m_snr (snr), + m_snrDb (snrDb), m_loss (loss), m_distance (distance), m_mcsIndex (mcsIndex) { std::ostringstream sstream1, sstream2; - sstream1 << " snr=" << snr + sstream1 << " snr=" << snrDb << " mcs=" << mcsIndex; NS_LOG_UNCOND ("Creating LteLinkAdaptationTestCase: " + sstream1.str ()); @@ -195,44 +192,46 @@ LteLinkAdaptationTestCase::~LteLinkAdaptationTestCase () void LteLinkAdaptationTestCase::DoRun (void) { - LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); - LogComponentEnable ("LteAmc", logLevel); - LogComponentEnable ("LteLinkAdaptationTest", logLevel); -// LogComponentEnable ("LteEnbRrc", logLevel); -// LogComponentEnable ("LteUeRrc", logLevel); -// LogComponentEnable ("LteEnbMac", logLevel); -// LogComponentEnable ("LteUeMac", logLevel); -// LogComponentEnable ("LteRlc", logLevel); -// LogComponentEnable ("RrPacketScheduler", logLevel); + // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); + // LogComponentEnable ("LteAmc", logLevel); + // LogComponentEnable ("LteLinkAdaptationTest", logLevel); + // LogComponentEnable ("LteEnbRrc", logLevel); + // LogComponentEnable ("LteUeRrc", logLevel); + // LogComponentEnable ("LteEnbMac", logLevel); + // LogComponentEnable ("LteUeMac", logLevel); + // LogComponentEnable ("LteRlc", logLevel); + // LogComponentEnable ("RrPacketScheduler", logLevel); -// LogComponentEnable ("RrFfMacScheduler", logLevel); + // LogComponentEnable ("RrFfMacScheduler", logLevel); -// LogComponentEnable ("LtePhy", logLevel); -// LogComponentEnable ("LteEnbPhy", logLevel); -// LogComponentEnable ("LteUePhy", logLevel); + // LogComponentEnable ("LtePhy", logLevel); + // LogComponentEnable ("LteEnbPhy", logLevel); + // LogComponentEnable ("LteUePhy", logLevel); -// LogComponentEnable ("LteSpectrumValueHelper", logLevel); -// LogComponentEnable ("LteSpectrumPhy", logLevel); -// LogComponentEnable ("LteInterference", logLevel); -// LogComponentEnable ("LteSinrChunkProcessor", logLevel); + // LogComponentEnable ("LteSpectrumValueHelper", logLevel); + // LogComponentEnable ("LteSpectrumPhy", logLevel); + // LogComponentEnable ("LteInterference", logLevel); + // LogComponentEnable ("LteSinrChunkProcessor", logLevel); + // LogComponentEnable ("LteTestSinrChunkProcessor", logLevel); -// LogComponentEnable ("LtePropagationLossModel", logLevel); -// LogComponentEnable ("LossModel", logLevel); -// LogComponentEnable ("ShadowingLossModel", logLevel); -// LogComponentEnable ("PenetrationLossModel", logLevel); -// LogComponentEnable ("MultipathLossModel", logLevel); -// LogComponentEnable ("PathLossModel", logLevel); -// LogComponentEnable ("FriisSpectrumPropagationLossModel", logLevel); -// LogComponentEnable ("ConstantSpectrumPropagationLossModel", logLevel); + // LogComponentEnable ("LtePropagationLossModel", logLevel); + // LogComponentEnable ("LossModel", logLevel); + // LogComponentEnable ("ShadowingLossModel", logLevel); + // LogComponentEnable ("PenetrationLossModel", logLevel); + // LogComponentEnable ("MultipathLossModel", logLevel); + // LogComponentEnable ("PathLossModel", logLevel); + // LogComponentEnable ("FriisSpectrumPropagationLossModel", logLevel); + // LogComponentEnable ("ConstantSpectrumPropagationLossModel", logLevel); -// LogComponentEnable ("LteNetDevice", logLevel); -// LogComponentEnable ("LteUeNetDevice", logLevel); -// LogComponentEnable ("LteEnbNetDevice", logLevel); + // LogComponentEnable ("LteNetDevice", logLevel); + // LogComponentEnable ("LteUeNetDevice", logLevel); + // LogComponentEnable ("LteEnbNetDevice", logLevel); -// LogComponentEnable ("MobilityModel", logLevel); -// LogComponentEnable ("ConstantPositionMobilityModel", logLevel); -// LogComponentEnable ("MultiModelSpectrumChannel", logLevel); -// LogComponentEnable ("SingleModelSpectrumChannel", logLevel); + // LogComponentEnable ("MobilityModel", logLevel); + // LogComponentEnable ("ConstantPositionMobilityModel", logLevel); + // LogComponentEnable ("MultiModelSpectrumChannel", logLevel); + // LogComponentEnable ("SingleModelSpectrumChannel", logLevel); + /** * Simulation Topology @@ -243,7 +242,7 @@ LteLinkAdaptationTestCase::DoRun (void) lena->EnableMacTraces (); lena->EnableRlcTraces (); lena->SetAttribute ("PropagationModel", StringValue ("ns3::ConstantSpectrumPropagationLossModel")); - NS_LOG_INFO ("SNR = " << m_snr << " LOSS = " << m_loss); + NS_LOG_INFO ("SNR = " << m_snrDb << " LOSS = " << m_loss); lena->SetPropagationModelAttribute ("Loss", DoubleValue (m_loss)); // Create Nodes: eNodeB and UE @@ -280,15 +279,24 @@ LteLinkAdaptationTestCase::DoRun (void) lena->ActivateEpsBearer (ueDevs, bearer); + // this is to test that the SNR is as intended + Ptr uePhy = ueDevs.Get (0)->GetObject ()->GetPhy ()->GetObject (); + Ptr testSinr = Create (uePhy); + uePhy->GetDownlinkSpectrumPhy ()->AddSinrChunkProcessor (testSinr); + + Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling", MakeBoundCallback(&LteTestDlSchedulingCallback, this)); - Simulator::Stop (Seconds (0.005)); - //Simulator::Stop (Seconds (0.01)); + Simulator::Stop (Seconds (0.005)); + //Simulator::Stop (Seconds (0.01)); // Simulator::Stop (Seconds (0.1)); /* Simulator::Stop (Seconds (2.0));*/ // Simulator::Stop (Seconds (10.0)); Simulator::Run (); + + double calculatedSinrDb = 10.0 * log10 (testSinr->GetSinr ()[0]); + NS_TEST_ASSERT_MSG_EQ_TOL (calculatedSinrDb, m_snrDb, 0.0000001, "Wrong SINR !"); Simulator::Destroy (); } @@ -318,7 +326,7 @@ LteLinkAdaptationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, // << (uint16_t)mcsTb1 << "\t" << sizeTb1 << "\t" // << (uint16_t)mcsTb2 << "\t" << sizeTb2); - NS_LOG_UNCOND (m_snr << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1); + NS_LOG_UNCOND (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1); NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_mcsIndex, "Wrong MCS index"); } diff --git a/src/lte/test/lte-test-link-adaptation.h b/src/lte/test/lte-test-link-adaptation.h index 3d012b68f..f6e17ca38 100644 --- a/src/lte/test/lte-test-link-adaptation.h +++ b/src/lte/test/lte-test-link-adaptation.h @@ -40,7 +40,7 @@ public: class LteLinkAdaptationTestCase : public TestCase { public: - LteLinkAdaptationTestCase (std::string name, double snr, double loss, double distance, uint16_t mcsIndex); + LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, double distance, uint16_t mcsIndex); LteLinkAdaptationTestCase (); virtual ~LteLinkAdaptationTestCase (); @@ -50,7 +50,7 @@ class LteLinkAdaptationTestCase : public TestCase private: virtual void DoRun (void); - double m_snr; + double m_snrDb; double m_loss; double m_distance; uint16_t m_mcsIndex; diff --git a/src/lte/test/lte-test-sinr-chunk-processor.cc b/src/lte/test/lte-test-sinr-chunk-processor.cc index fb11d9b64..d24530d1e 100644 --- a/src/lte/test/lte-test-sinr-chunk-processor.cc +++ b/src/lte/test/lte-test-sinr-chunk-processor.cc @@ -70,7 +70,8 @@ LteTestSinrChunkProcessor::End () { NS_LOG_LOGIC (this << " m_sumSinr = " << *m_sumSinr); NS_LOG_LOGIC (this << " m_totDuration = " << m_totDuration); - NS_LOG_LOGIC (this << " m_sumSinr / m_totDuration = " << (*m_sumSinr) / m_totDuration.GetSeconds ()); + m_sinr = Create ((*m_sumSinr) / m_totDuration.GetSeconds ()); + NS_LOG_LOGIC (this << " m_sumSinr / m_totDuration = " << *m_sinr); } else { @@ -83,7 +84,7 @@ LteTestSinrChunkProcessor::GetSinr () { NS_LOG_FUNCTION (this); - return (*m_sumSinr) / m_totDuration.GetSeconds (); + return *m_sinr; } } // namespace ns3 diff --git a/src/lte/test/lte-test-sinr-chunk-processor.h b/src/lte/test/lte-test-sinr-chunk-processor.h index 8076d1ef5..a0be36edc 100644 --- a/src/lte/test/lte-test-sinr-chunk-processor.h +++ b/src/lte/test/lte-test-sinr-chunk-processor.h @@ -46,6 +46,7 @@ public: private: Ptr m_sumSinr; + Ptr m_sinr; Time m_totDuration; Ptr m_phy; }; From 10c4b0bc4756b0d2a00b4b48418f13f771ed4e69 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 16:01:07 +0200 Subject: [PATCH 08/15] added out-of-range test cases to link adaptation test --- src/lte/test/lte-test-link-adaptation.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lte/test/lte-test-link-adaptation.cc b/src/lte/test/lte-test-link-adaptation.cc index 5f12d14a2..3f0fd0822 100644 --- a/src/lte/test/lte-test-link-adaptation.cc +++ b/src/lte/test/lte-test-link-adaptation.cc @@ -104,9 +104,9 @@ LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite () * From XXX */ SnrEfficiencyMcs snrEfficiencyMcs[] = { - // {-5.00000, 0.08024, -1}, - // {-4.00000, 0.10030, -1}, - // {-3.00000, 0.12518, -1}, + {-5.00000, 0.08024, -1}, + {-4.00000, 0.10030, -1}, + {-3.00000, 0.12518, -1}, {-2.00000, 0.15589, 0}, {-1.00000, 0.19365, 0}, {0.00000, 0.23983, 2}, @@ -156,8 +156,7 @@ LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite () double distance = ( ( 3e8 * sqrt ( lossLinear ) ) / ( 4.0 * M_PI * 2.160e9 ) ); std::ostringstream name; - name << "link adaptation" - << " snr= " << snrEfficiencyMcs[i].snrDb + name << " snr= " << snrEfficiencyMcs[i].snrDb << " dB, " << " mcs= " << snrEfficiencyMcs[i].mcsIndex; AddTestCase (new LteLinkAdaptationTestCase (name.str (), snrEfficiencyMcs[i].snrDb, lossDb, distance, snrEfficiencyMcs[i].mcsIndex)); } From 965f73de2d8a58012c998a5e8ea93ec2ede659bf Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Thu, 12 May 2011 17:14:45 +0200 Subject: [PATCH 09/15] LenaTestRrFfMacSchedulerSuite updatded to new AMC --- src/lte/model/rr-ff-mac-scheduler.cc | 2 +- src/lte/test/lte-test-pf-ff-mac-scheduler.cc | 25 +++-- src/lte/test/lte-test-pf-ff-mac-scheduler.h | 4 +- src/lte/test/lte-test-rr-ff-mac-scheduler.cc | 104 +++++++++---------- 4 files changed, 70 insertions(+), 65 deletions(-) diff --git a/src/lte/model/rr-ff-mac-scheduler.cc b/src/lte/model/rr-ff-mac-scheduler.cc index 56f83ae56..0f064ad76 100644 --- a/src/lte/model/rr-ff-mac-scheduler.cc +++ b/src/lte/model/rr-ff-mac-scheduler.cc @@ -480,7 +480,7 @@ RrFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sched std::vector newRlcPduLe; int totRbg = lcNum * rbgPerFlow; int tbSize = (LteAmc::GetTbSizeFromMcs (newDci.m_mcs.at (0), totRbg * rbgSize) / 8); - //NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " LCs " << (uint16_t)(*itLcRnti).second << " bytes " << tbSize << " PRBs " << totRbg * rbgSize << " mcs " << (uint16_t) newDci.m_mcs.at (0)); + NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " LCs " << (uint16_t)(*itLcRnti).second << " bytes " << tbSize << " PRBs " << totRbg * rbgSize << " mcs " << (uint16_t) newDci.m_mcs.at (0)); uint16_t rlcPduSize = tbSize / lcNum; for (int i = 0; i < lcNum ; i++) { diff --git a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc index 05674eddd..1d664b095 100644 --- a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc +++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc @@ -53,10 +53,17 @@ LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite () std::vector dist; dist.push_back (0); // User 0 distance - std::vector estThrPf; - estThrPf.push_back (0); // User 0 estimated TTI throughput from PF + dist.push_back (6000); // User 1 distance + std::vector estThrPf; + estThrPf.push_back (89000); // User 0 estimated TTI throughput from PF + estThrPf.push_back (28000); // User 1 estimated TTI throughput from PF - AddTestCase (new LenaPfFfMacSchedulerTestCase2 (1,dist,estThrPf)); + + // 0 mt -> mcs 28 + // 6000 mt -> mcs 24 + // 12000 mt -> mcs 6 + + AddTestCase (new LenaPfFfMacSchedulerTestCase2 (2,dist,estThrPf)); // // DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.213) // // 1 user -> 24 PRB at Itbs 26 -> 2196 -> 2196000 bytes/sec @@ -136,9 +143,6 @@ LenaPfFfMacSchedulerTestCase1::LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, ui m_thrRef (thrRef) { - // 0 mt -> mcs 28 - // 6000 mt -> mcs 24 - // 12000 mt -> mcs 6 } LenaPfFfMacSchedulerTestCase1::~LenaPfFfMacSchedulerTestCase1 () @@ -265,7 +269,7 @@ LenaPfFfMacSchedulerTestCase1::DoRun (void) // --------------- T E S T - C A S E # 2 ------------------------------ -LenaPfFfMacSchedulerTestCase2::LenaPfFfMacSchedulerTestCase2 (uint16_t nUser, std::vector dist, std::vector estThrPf) +LenaPfFfMacSchedulerTestCase2::LenaPfFfMacSchedulerTestCase2 (uint16_t nUser, std::vector dist, std::vector estThrPf) : TestCase ("Proportional Fair (PF) Mac Scheduler Test Case"), m_nUser (nUser), m_dist (dist), @@ -307,7 +311,7 @@ LenaPfFfMacSchedulerTestCase2::DoRun (void) // LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); // LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); -// LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); + LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); LogComponentEnable ("LenaTestPfFfMacCheduler", LOG_LEVEL_ALL); // LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); // LogComponentEnable ("RlcStatsCalculator", LOG_LEVEL_ALL); @@ -356,7 +360,7 @@ LenaPfFfMacSchedulerTestCase2::DoRun (void) lena->EnableDlRlcTraces(); - double simulationTime = 2.0; + double simulationTime = 0.4; double tolerance = 0.1; Simulator::Stop (Seconds (simulationTime)); @@ -377,7 +381,7 @@ LenaPfFfMacSchedulerTestCase2::DoRun (void) uint8_t lcId = ueDevs.Get (i)-> GetObject ()->GetRrc ()->GetLcIdVector ().at(0); dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId)); totalData += (double)dlDataRxed.at (i); - NS_LOG_INFO ("\tUser " << i << "dist" << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / simulationTime << " ref " << m_nUser); + NS_LOG_INFO ("\tUser " << i << " dist " << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / simulationTime << " ref " << m_nUser); totalEstThrPf += m_estThrPf.at (i); } @@ -390,6 +394,7 @@ LenaPfFfMacSchedulerTestCase2::DoRun (void) { double thrRatio = (double)dlDataRxed.at (i) / totalData; double estThrRatio = (double)m_estThrPf.at (i) / totalEstThrPf; + NS_LOG_INFO ("User " << i << " thrRatio " << thrRatio << " estThrRatio " << estThrRatio); NS_TEST_ASSERT_MSG_EQ_TOL (estThrRatio, thrRatio, tolerance, " Unfair Throughput!"); } diff --git a/src/lte/test/lte-test-pf-ff-mac-scheduler.h b/src/lte/test/lte-test-pf-ff-mac-scheduler.h index da5972e6b..7ca394bec 100644 --- a/src/lte/test/lte-test-pf-ff-mac-scheduler.h +++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.h @@ -55,14 +55,14 @@ class LenaPfFfMacSchedulerTestCase1 : public TestCase class LenaPfFfMacSchedulerTestCase2 : public TestCase { public: - LenaPfFfMacSchedulerTestCase2 (uint16_t nUser, std::vector dist, std::vector estThrPf); + LenaPfFfMacSchedulerTestCase2 (uint16_t nUser, std::vector dist, std::vector estThrPf); virtual ~LenaPfFfMacSchedulerTestCase2 (); private: virtual void DoRun (void); uint16_t m_nUser; std::vector m_dist; - std::vector m_estThrPf; + std::vector m_estThrPf; }; diff --git a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc index 1fba064e7..624506a52 100644 --- a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc +++ b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc @@ -66,61 +66,61 @@ LenaTestRrFfMacSchedulerSuite::LenaTestRrFfMacSchedulerSuite () AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,0,185000)); AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,0,148000)); - // DISTANCE 6000 -> MCS 24 -> Itbs 22 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 22 -> 1572 -> 1572000 bytes/sec - // 3 users -> 8 PRB at Itbs 22 -> 533 -> 533000 bytes/sec - // 6 users -> 4 PRB at Itbs 22 -> 269 -> 269000 bytes/sec - // 9 user -> 2 PRB at Itbs 22 -> 133 -> 133000 bytes/sec - // 12 users -> 2 PRB at Itbs 22 -> 133 -> 133000 bytes/sec - // 15 users -> 2 PRB at Itbs 22 * 0.8 -> 106.4 -> 106400 bytes/sec - AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,6000,1572000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,6000,533000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,6000,269000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,6000,133000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,6000,133000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,6000,106400)); + // DISTANCE 3000 -> MCS 24 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec + // 3 users -> 8 PRB at Itbs 20 -> 469 -> 469000 bytes/sec + // 6 users -> 4 PRB at Itbs 20 -> 233 -> 233000 bytes/sec + // 9 user -> 2 PRB at Itbs 20 -> 113 -> 113000 bytes/sec + // 12 users -> 2 PRB at Itbs 20 -> 113 -> 113000 bytes/sec + // 15 users -> 2 PRB at Itbs 20 * 0.8 -> 90.4 -> 90400 bytes/sec + AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,3000,1383000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,3000,469000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,3000,233000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,3000,113000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,3000,113000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,3000,90400)); - // DISTANCE 9000 -> MCS 10 -> Itbs 9 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 9 -> 469 -> 469000 bytes/sec - // 3 users -> 8 PRB at Itbs 9 -> 157 -> 157000 bytes/sec - // 6 users -> 4 PRB at Itbs 9 -> 77 -> 77000 bytes/sec - // 9 user -> 2 PRB at Itbs 9 -> 37 -> 37000 bytes/sec - // 12 users -> 2 PRB at Itbs 9 -> 37 -> 37000 bytes/sec - // 15 users -> 2 PRB at Itbs 9 * 0.8 -> 29.6 -> 29600 bytes/sec - AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,9000,469000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,9000,157000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,9000,77000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,9000,37000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,9000,37000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,9000,29600)); + // DISTANCE 6000 -> MCS 16 -> Itbs 15 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 15 -> 903 -> 903000 bytes/sec + // 3 users -> 8 PRB at Itbs 15 -> 309 -> 309000 bytes/sec + // 6 users -> 4 PRB at Itbs 15 -> 153 -> 153000 bytes/sec + // 9 user -> 2 PRB at Itbs 15 -> 75 -> 75000 bytes/sec + // 12 users -> 2 PRB at Itbs 15 -> 75 -> 75000 bytes/sec + // 15 users -> 2 PRB at Itbs 15 * 0.8 -> 60 -> 60000 bytes/sec + AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,6000,903000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,6000,309000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,6000,153000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,6000,75000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,6000,75000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,6000,60000)); - // DISTANCE 15000 -> MCS 4 -> Itbs 4 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 4 -> 217 -> 217000 bytes/sec - // 3 users -> 8 PRB at Itbs 4 -> 69 -> 69000 bytes/sec - // 6 users -> 4 PRB at Itbs 4 -> 32 -> 32000 bytes/sec - // 9 user -> 2 PRB at Itbs 4 -> 15 -> 15000 bytes/sec - // 12 users -> 2 PRB at Itbs 4 -> 15 -> 15000 bytes/sec - // 15 users -> 2 PRB at Itbs 4 * 0.8 -> 12 -> 12000 bytes/sec - AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,15000,217000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,15000,69000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,15000,32000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,15000,15000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,15000,15000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,15000,12000)); + // DISTANCE 9000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 11 -> 597 -> 597000 bytes/sec + // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 bytes/sec + // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec + // 9 user -> 2 PRB at Itbs 11 -> 47 -> 47000 bytes/sec + // 12 users -> 2 PRB at Itbs 11 -> 47 -> 47000 bytes/sec + // 15 users -> 2 PRB at Itbs 11 * 0.8 -> 37.6 -> 37600 bytes/sec + AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,9000,597000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,9000,201000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,9000,97000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,9000,47000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,9000,47000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,9000,37600)); - // DISTANCE 20000 -> MCS 2 -> Itbs 2 (from table 7.1.7.2.1-1 of 36.213) - // 1 user -> 24 PRB at Itbs 2 -> 133 -> 133000 bytes/sec - // 3 users -> 8 PRB at Itbs 2 -> 41 -> 41000 bytes/sec - // 6 users -> 4 PRB at Itbs 2 -> 22 -> 22000 bytes/sec - // 9 user -> 2 PRB at Itbs 2 -> 9 -> 9000 bytes/sec - // 12 users -> 2 PRB at Itbs 2 -> 9 -> 9000 bytes/sec - // 15 users -> 2 PRB at Itbs 2 * 0.8 -> 7.2 -> 7200 bytes/sec - AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,20000,133000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,20000,41000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,20000,22000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,20000,9000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,20000,9000)); - AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,20000,7200)); + // DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 6 -> 309 -> 309000 bytes/sec + // 3 users -> 8 PRB at Itbs 6 -> 101 -> 101000 bytes/sec + // 6 users -> 4 PRB at Itbs 6 -> 49 -> 49000 bytes/sec + // 9 user -> 2 PRB at Itbs 6 -> 22 -> 22000 bytes/sec + // 12 users -> 2 PRB at Itbs 6 -> 22 -> 22000 bytes/sec + // 15 users -> 2 PRB at Itbs 6 * 0.8 -> 17.6 -> 17600 bytes/sec + AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,15000,309000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,15000,101000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,15000,49000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,15000,22000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,15000,22000)); + AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,15000,17600)); } From f5a840b918375db2f4991761bb5093af8890c3ab Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 17:17:06 +0200 Subject: [PATCH 10/15] updated rr & pf sched test documentation --- doc/manual/source/lte-testing.rst | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/doc/manual/source/lte-testing.rst b/doc/manual/source/lte-testing.rst index 3b3ab9cae..2c350529d 100644 --- a/doc/manual/source/lte-testing.rst +++ b/doc/manual/source/lte-testing.rst @@ -49,12 +49,30 @@ Round Robin scheduler performance --------------------------------- This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. In each test case, the UEs see the same SINR from the eNB; different test cases are implemented by using different distance among UEs and the eNB (i.e., therefore having different SINR values) and different numbers of UEs. The test consists on checking that the obtained throughput performance is equal among users and matches a reference throughput value obtained according to the SINR perceived within a given tolerance. -The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of 36.213, considering an equal distribution of the physical resource block among the users. The tolerance has been introduced in order to overcome the process of initialization and quantization of the resource allocation. +The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of [TS36.213]_, considering an equal distribution of the physical resource block among the users. The tolerance has been introduced in order to overcome the process of initialization and quantization of the resource allocation. Proportional Fair scheduler performance --------------------------------------- -This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. The tests are grouped in two categories in order to evaluate both the performance in terms of adaptation to channel condition and from fairness perspective. -Regarding the former, the UEs are placed in order to have the same SINR from the eNB in each specific test. Different test cases are implemented by using different SINR values and different numbers of UEs. The test consists on checking that the obtained throughput performance is equal among users is consistent with the definition of proportional fair scheduling, which implies that the bandwidht assigned is proportional to the ratio of the estimated throughput per TTI of each user. In detail, each TTI the PFS estimates the throughput of each UE for the next TTI according to the CQIs received; the ratio of this value respect to the global of all users represent the long term trend for the bandwidht allocated by the scheduler. In this specific case, this results in allocating proportionally the maximum bandwidht achievable (i.e., all PRB allocated to a single users) among the users in a time division fashion. -The second category of tests is aimed at verify the fairness behavior in presence of UEs with different SINRs (and therefore different estimated throughput from PFS). The test consists of checking whether the throughput obtained is fairly distributed among the users, that is the ratio of the estimated throughput per TTI (function of the SINR). +This system test program creates different test cases with a single eNB, using the Proportional Fair (PF) scheduler, and several UEs, all having the same Radio Bearer specification. The test cases are grouped in two categories in order to evaluate both the performance in terms of adaptation to channel condition and from fairness perspective. + +In the first category of test cases, the UEs are all placed at the same distance from the eNB, and hence all placed in order to have the same SINR. Different test cases are implemented by using a different SINR value and a different number of UEs. The test consists on checking that the obtained throughput performance matches with the known reference throughput up to a given tolerance. The expected behavior of the PF scheduler when all UEs have the same SNR is that each UE should get an equal fraction of the throughput obtainable by a single UE when using all the resources. We calculate the reference throughput value by dividing the throughput achievable by a single UE at the given SNR by the total number of UEs. Let :math:`\tau` be the TTI duration, :math:`B` the transmission bandwidth configuration in number of RBs, :math:`M` the modulation and coding scheme in use at the given SINR and :math:`S(M, B)` be the transport block size as defined in [TS36.213]_. The reference throughput :math:`T` achieved by each UE is calculated as + +.. math:: + + T = \frac{S(M,B)}{\tau N} + + + +The second category of tests is aimed at verify the fairness behavior in presence of UEs with different SINRs (and therefore different estimated throughput from PFS). The test consists of checking whether the throughput obtained by each UE over the whole simulation matches with the steady-state throughput expected by the PF scheduler according to the theory (see for instance [Kushner2004cpfsa]_). +In detail, each TTI the PFS estimates the throughput of each UE for the next TTI according to the CQIs received; the ratio of this value respect to the global of all users represent the long term trend for the bandwidht allocated by the scheduler. In this specific case, this results in allocating proportionally the maximum bandwidht achievable (i.e., all PRB allocated to a single users) among the users in a time division fashion. + + + +References +********** + +.. [TS36.213] 3GPP TS 36.213 "LTE Physical layer procedures" + +.. [Kushner2004cpfsa] H.J. Kushner and P.A. Whiting, "Convergence of proportional-fair sharing algorithms under general conditions", IEEE Trans. on Wireless Communications, July 2004 From ee40b48f3379d9c18f257440902e8dfbc03431a7 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 12 May 2011 17:36:10 +0200 Subject: [PATCH 11/15] added draft formula for reference rr throughput in documentation --- doc/manual/source/lte-testing.rst | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/manual/source/lte-testing.rst b/doc/manual/source/lte-testing.rst index 2c350529d..500f8af35 100644 --- a/doc/manual/source/lte-testing.rst +++ b/doc/manual/source/lte-testing.rst @@ -49,7 +49,19 @@ Round Robin scheduler performance --------------------------------- This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. In each test case, the UEs see the same SINR from the eNB; different test cases are implemented by using different distance among UEs and the eNB (i.e., therefore having different SINR values) and different numbers of UEs. The test consists on checking that the obtained throughput performance is equal among users and matches a reference throughput value obtained according to the SINR perceived within a given tolerance. -The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of [TS36.213]_, considering an equal distribution of the physical resource block among the users. The tolerance has been introduced in order to overcome the process of initialization and quantization of the resource allocation. +The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of [TS36.213]_, considering an equal distribution of the physical resource block among the users using Resource Allocation Type 0 as defined in Section 7.1.6.1 of [TS36.213]_. Let :math:`\tau` be the TTI duration, :math:`N` be the number of UEs, :math:`B` the transmission bandwidth configuration in number of RBs, :math:`G` the RBG size, :math:`M` the modulation and coding scheme in use at the given SINR and :math:`S(M, B)` be the transport block size in bytes as defined by 3GPP TS 36.213. We first calculate the number :math:`L` of RBGs allocated to each user as + +.. math:: + + L = \left\lfloor \frac{B}{NG} \right\rfloor + +The reference throughput :math:`T` in bps achieved by each UE is then calculated as + +.. math:: + + T = \frac{8 \; S(M, L G)}{\tau} + + Proportional Fair scheduler performance From 7026a775b10389c77efe182cf382ea001be6acce Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Thu, 12 May 2011 18:02:45 +0200 Subject: [PATCH 12/15] Solved bug in Table 7.1.7.2.1-1 of LteAmc for NPRB=1 and Itbs=6, coming from the standard --- src/lte/model/lte-amc.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lte/model/lte-amc.cc b/src/lte/model/lte-amc.cc index 27cafc6ab..4f25c7f81 100644 --- a/src/lte/model/lte-amc.cc +++ b/src/lte/model/lte-amc.cc @@ -80,9 +80,11 @@ int McsToItbs[29] = { // 3GPP TS 36.213 v8.8.0 Table 7.1.7.2.1-1: Transport block size table (dimension 27×110) + // for NPRB = 1 and Itbs = 6 the stadard returns 328, but it not consisent with the + // other values, therefore we used 88 obtained following the sequence of NPRB = 1 values int TransportBlockSizeTable [110][27] = { - /* NPRB 001*/ { 16, 24, 32, 40, 56, 72, 328, 104, 120, 136, 144, 176, 208, 224, 256, 280, 328, 336, 376, 408, 440, 488, 520, 552, 584, 616, 712}, + /* NPRB 001*/ { 16, 24, 32, 40, 56, 72, 88, 104, 120, 136, 144, 176, 208, 224, 256, 280, 328, 336, 376, 408, 440, 488, 520, 552, 584, 616, 712}, /* NPRB 002*/ { 32, 56, 72, 104, 120, 144, 176, 224, 256, 296, 328, 376, 440, 488, 552, 600, 632, 696, 776, 840, 904, 1000, 1064, 1128, 1192, 1256, 1480}, /* NPRB 003*/ { 56, 88, 144, 176, 208, 224, 256, 328, 392, 456, 504, 584, 680, 744, 840, 904, 968, 1064, 1160, 1288, 1384, 1480, 1608, 1736, 1800, 1864, 2216}, /* NPRB 004*/ { 88, 144, 176, 208, 256, 328, 392, 472, 536, 616, 680, 776, 904, 1000, 1128, 1224, 1288, 1416, 1544, 1736, 1864, 1992, 2152, 2280, 2408, 2536, 2984}, From 3f282d2d01568cd7b3fe5d060022b75767e9ff7e Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Thu, 12 May 2011 18:05:18 +0200 Subject: [PATCH 13/15] LenaPfFfMacSchedulerTestCase2 (fairness of PF) finalized --- src/lte/test/lte-test-pf-ff-mac-scheduler.cc | 125 ++++++++++--------- src/lte/test/lte-test-rr-ff-mac-scheduler.cc | 2 +- 2 files changed, 68 insertions(+), 59 deletions(-) diff --git a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc index 1d664b095..21250f67e 100644 --- a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc +++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc @@ -51,19 +51,13 @@ LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite () SetVerbose (true); NS_LOG_INFO ("creating LenaTestPfFfMacSchedulerSuite"); - std::vector dist; - dist.push_back (0); // User 0 distance - dist.push_back (6000); // User 1 distance - std::vector estThrPf; - estThrPf.push_back (89000); // User 0 estimated TTI throughput from PF - estThrPf.push_back (28000); // User 1 estimated TTI throughput from PF - - // 0 mt -> mcs 28 - // 6000 mt -> mcs 24 - // 12000 mt -> mcs 6 - - AddTestCase (new LenaPfFfMacSchedulerTestCase2 (2,dist,estThrPf)); + // 3000 mt -> mcs 22 + // 6000 mt -> mcs 16 + // 9000 mt -> mcs 12 + // 15000 mt -> mcs 6 + + // Test Case 1: AMC works in PF // // DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.213) // // 1 user -> 24 PRB at Itbs 26 -> 2196 -> 2196000 bytes/sec @@ -77,55 +71,70 @@ LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite () // AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,0,183000)); // AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,0,146400)); // -// // DISTANCE 6000 -> MCS 24 -> Itbs 22 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 22 -> 1572 -> 1572000 bytes/sec -// // 3 users -> 1572000 among 3 users -> 524000 bytes/sec -// // 6 users -> 1572000 among 6 users -> 262000 bytes/sec -// // 12 users -> 1572000 among 12 users -> 131000 bytes/sec -// // 15 users -> 1572000 among 15 users -> 104800 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,6000,1572000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,6000,524000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,6000,262000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,6000,131000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,6000,104800)); +// // DISTANCE 3000 -> MCS 24 -> Itbs 30 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec +// // 3 users -> 1383000 among 3 users -> 461000 bytes/sec +// // 6 users -> 1383000 among 6 users -> 230500 bytes/sec +// // 12 users -> 1383000 among 12 users -> 115250 bytes/sec +// // 15 users -> 1383000 among 15 users -> 92200 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,3000,1383000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,3000,461000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,3000,230500)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,3000,115250)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,3000,92200)); // -// // DISTANCE 9000 -> MCS 10 -> Itbs 9 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 9 -> 469 -> 469000 bytes/sec -// // 3 users -> 469000 among 3 users -> 156333 bytes/sec -// // 6 users -> 469000 among 6 users -> 78166 bytes/sec -// // 12 users -> 469000 among 12 users -> 39083 bytes/sec -// // 15 users -> 469000 among 15 users -> 31266 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,9000,469000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,9000,156333)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,9000,78166)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,9000,39083)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,9000,31266)); +// // DISTANCE 6000 -> MCS 16 -> Itbs 15 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 15 -> 903 -> 903000 bytes/sec +// // 3 users -> 903000 among 3 users -> 301000 bytes/sec +// // 6 users -> 903000 among 6 users -> 150500 bytes/sec +// // 12 users -> 903000 among 12 users -> 75250 bytes/sec +// // 15 users -> 903000 among 15 users -> 60200 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,6000,903000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,6000,301000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,6000,150500)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,6000,75250)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,6000,60200)); // -// // DISTANCE 15000 -> MCS 4 -> Itbs 4 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 4 -> 217 -> 217000 bytes/sec -// // 3 users -> 217000 among 3 users -> 72333 bytes/sec -// // 6 users -> 217000 among 6 users -> 36166 bytes/sec -// // 12 users -> 217000 among 12 users -> 18083 bytes/sec -// // 15 users -> 217000 among 15 users -> 14466 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,15000,217000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,15000,72333)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,15000,36166)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,15000,18083)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,15000,14466)); +// // DISTANCE 9000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 11 -> 597 -> 597000 bytes/sec +// // 3 users -> 597000 among 3 users -> 199000 bytes/sec +// // 6 users -> 597000 among 6 users -> 99500 bytes/sec +// // 12 users -> 597000 among 12 users -> 49750 bytes/sec +// // 15 users -> 597000 among 15 users -> 39800 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,9000,597000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,9000,199000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,9000,99500)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,9000,49750)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,9000,39800)); // -// // DISTANCE 20000 -> MCS 2 -> Itbs 2 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 2 -> 133 -> 133000 bytes/sec -// // 3 users -> 217000 among 3 users -> 44333 bytes/sec -// // 6 users -> 217000 among 6 users -> 22166 bytes/sec -// // 12 users -> 217000 among 12 users -> 11083 bytes/sec -// // 15 users -> 217000 among 15 users -> 8866 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,20000,133000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,20000,44333)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,20000,22166)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,20000,11083)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,20000,8866)); +// // DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213) +// // 1 user -> 24 PRB at Itbs 6 -> 309 -> 309000 bytes/sec +// // 3 users -> 309000 among 3 users -> 103000 bytes/sec +// // 6 users -> 309000 among 6 users -> 51500 bytes/sec +// // 12 users -> 309000 among 12 users -> 25750 bytes/sec +// // 15 users -> 309000 among 15 users -> 20600 bytes/sec +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,15000,309000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,15000,103000)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,15000,51500)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,15000,25750)); +// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,15000,20600)); + // Test Case 2: fairness check + + std::vector dist; + dist.push_back (0); // User 0 distance + dist.push_back (3000); // User 1 distance + dist.push_back (6000); // User 2 distance + dist.push_back (9000); // User 3 distance + dist.push_back (15000); // User 4 distance + std::vector estThrPf; + estThrPf.push_back (89000); // User 0 estimated TTI throughput from PF + estThrPf.push_back (55000); // User 1 estimated TTI throughput from PF + estThrPf.push_back (35000); // User 2 estimated TTI throughput from PF + estThrPf.push_back (22000); // User 3 estimated TTI throughput from PF + estThrPf.push_back (11000); // User 4 estimated TTI throughput from PF + AddTestCase (new LenaPfFfMacSchedulerTestCase2 (5,dist,estThrPf)); } @@ -177,7 +186,7 @@ LenaPfFfMacSchedulerTestCase1::DoRun (void) // LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); // LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); - LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); +// LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); LogComponentEnable ("LenaTestPfFfMacCheduler", LOG_LEVEL_ALL); // LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); // LogComponentEnable ("RlcStatsCalculator", LOG_LEVEL_ALL); @@ -311,7 +320,7 @@ LenaPfFfMacSchedulerTestCase2::DoRun (void) // LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); // LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); - LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); +// LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); LogComponentEnable ("LenaTestPfFfMacCheduler", LOG_LEVEL_ALL); // LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); // LogComponentEnable ("RlcStatsCalculator", LOG_LEVEL_ALL); diff --git a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc index 624506a52..753afbbdb 100644 --- a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc +++ b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc @@ -66,7 +66,7 @@ LenaTestRrFfMacSchedulerSuite::LenaTestRrFfMacSchedulerSuite () AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,0,185000)); AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,0,148000)); - // DISTANCE 3000 -> MCS 24 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213) + // DISTANCE 3000 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213) // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec // 3 users -> 8 PRB at Itbs 20 -> 469 -> 469000 bytes/sec // 6 users -> 4 PRB at Itbs 20 -> 233 -> 233000 bytes/sec From 26f6643887e75ad978a741518f71670c6c01bcfb Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Fri, 13 May 2011 14:42:45 +0200 Subject: [PATCH 14/15] LenaTestPfFfMacSchedulerSuite finzalized testCase 1 and 2 --- src/lte/test/lte-test-pf-ff-mac-scheduler.cc | 120 +++++++++---------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc index 21250f67e..04af7afcf 100644 --- a/src/lte/test/lte-test-pf-ff-mac-scheduler.cc +++ b/src/lte/test/lte-test-pf-ff-mac-scheduler.cc @@ -57,67 +57,67 @@ LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite () // 9000 mt -> mcs 12 // 15000 mt -> mcs 6 - // Test Case 1: AMC works in PF + //Test Case 1: AMC works in PF -// // DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 26 -> 2196 -> 2196000 bytes/sec -// // 3 users -> 2196000 among 3 users -> 732000 bytes/sec -// // 6 users -> 2196000 among 6 users -> 366000 bytes/sec -// // 12 users -> 2196000 among 12 users -> 183000 bytes/sec -// // 15 users -> 2196000 among 15 users -> 146400 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,0,2196000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,0,732000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,0,366000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,0,183000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,0,146400)); -// -// // DISTANCE 3000 -> MCS 24 -> Itbs 30 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec -// // 3 users -> 1383000 among 3 users -> 461000 bytes/sec -// // 6 users -> 1383000 among 6 users -> 230500 bytes/sec -// // 12 users -> 1383000 among 12 users -> 115250 bytes/sec -// // 15 users -> 1383000 among 15 users -> 92200 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,3000,1383000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,3000,461000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,3000,230500)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,3000,115250)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,3000,92200)); -// -// // DISTANCE 6000 -> MCS 16 -> Itbs 15 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 15 -> 903 -> 903000 bytes/sec -// // 3 users -> 903000 among 3 users -> 301000 bytes/sec -// // 6 users -> 903000 among 6 users -> 150500 bytes/sec -// // 12 users -> 903000 among 12 users -> 75250 bytes/sec -// // 15 users -> 903000 among 15 users -> 60200 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,6000,903000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,6000,301000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,6000,150500)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,6000,75250)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,6000,60200)); -// -// // DISTANCE 9000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 11 -> 597 -> 597000 bytes/sec -// // 3 users -> 597000 among 3 users -> 199000 bytes/sec -// // 6 users -> 597000 among 6 users -> 99500 bytes/sec -// // 12 users -> 597000 among 12 users -> 49750 bytes/sec -// // 15 users -> 597000 among 15 users -> 39800 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,9000,597000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,9000,199000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,9000,99500)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,9000,49750)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,9000,39800)); -// -// // DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213) -// // 1 user -> 24 PRB at Itbs 6 -> 309 -> 309000 bytes/sec -// // 3 users -> 309000 among 3 users -> 103000 bytes/sec -// // 6 users -> 309000 among 6 users -> 51500 bytes/sec -// // 12 users -> 309000 among 12 users -> 25750 bytes/sec -// // 15 users -> 309000 among 15 users -> 20600 bytes/sec -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,15000,309000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,15000,103000)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,15000,51500)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,15000,25750)); -// AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,15000,20600)); + // DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 26 -> 2196 -> 2196000 bytes/sec + // 3 users -> 2196000 among 3 users -> 732000 bytes/sec + // 6 users -> 2196000 among 6 users -> 366000 bytes/sec + // 12 users -> 2196000 among 12 users -> 183000 bytes/sec + // 15 users -> 2196000 among 15 users -> 146400 bytes/sec + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,0,2196000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,0,732000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,0,366000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,0,183000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,0,146400)); + + // DISTANCE 3000 -> MCS 24 -> Itbs 30 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec + // 3 users -> 1383000 among 3 users -> 461000 bytes/sec + // 6 users -> 1383000 among 6 users -> 230500 bytes/sec + // 12 users -> 1383000 among 12 users -> 115250 bytes/sec + // 15 users -> 1383000 among 15 users -> 92200 bytes/sec + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,3000,1383000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,3000,461000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,3000,230500)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,3000,115250)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,3000,92200)); + + // DISTANCE 6000 -> MCS 16 -> Itbs 15 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 15 -> 903 -> 903000 bytes/sec + // 3 users -> 903000 among 3 users -> 301000 bytes/sec + // 6 users -> 903000 among 6 users -> 150500 bytes/sec + // 12 users -> 903000 among 12 users -> 75250 bytes/sec + // 15 users -> 903000 among 15 users -> 60200 bytes/sec + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,6000,903000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,6000,301000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,6000,150500)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,6000,75250)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,6000,60200)); + + // DISTANCE 9000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 11 -> 597 -> 597000 bytes/sec + // 3 users -> 597000 among 3 users -> 199000 bytes/sec + // 6 users -> 597000 among 6 users -> 99500 bytes/sec + // 12 users -> 597000 among 12 users -> 49750 bytes/sec + // 15 users -> 597000 among 15 users -> 39800 bytes/sec + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,9000,597000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,9000,199000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,9000,99500)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,9000,49750)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,9000,39800)); + + // DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213) + // 1 user -> 24 PRB at Itbs 6 -> 309 -> 309000 bytes/sec + // 3 users -> 309000 among 3 users -> 103000 bytes/sec + // 6 users -> 309000 among 6 users -> 51500 bytes/sec + // 12 users -> 309000 among 12 users -> 25750 bytes/sec + // 15 users -> 309000 among 15 users -> 20600 bytes/sec + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,15000,309000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,15000,103000)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,15000,51500)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,15000,25750)); + AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,15000,20600)); // Test Case 2: fairness check From a41353bf4c699388aedf61d2ca5ebf0158e83b41 Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Fri, 13 May 2011 15:50:47 +0200 Subject: [PATCH 15/15] Updates on RR and PF test documentation --- doc/manual/source/lte-testing.rst | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/manual/source/lte-testing.rst b/doc/manual/source/lte-testing.rst index 500f8af35..16b06c8a1 100644 --- a/doc/manual/source/lte-testing.rst +++ b/doc/manual/source/lte-testing.rst @@ -49,17 +49,17 @@ Round Robin scheduler performance --------------------------------- This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. In each test case, the UEs see the same SINR from the eNB; different test cases are implemented by using different distance among UEs and the eNB (i.e., therefore having different SINR values) and different numbers of UEs. The test consists on checking that the obtained throughput performance is equal among users and matches a reference throughput value obtained according to the SINR perceived within a given tolerance. -The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of [TS36.213]_, considering an equal distribution of the physical resource block among the users using Resource Allocation Type 0 as defined in Section 7.1.6.1 of [TS36.213]_. Let :math:`\tau` be the TTI duration, :math:`N` be the number of UEs, :math:`B` the transmission bandwidth configuration in number of RBs, :math:`G` the RBG size, :math:`M` the modulation and coding scheme in use at the given SINR and :math:`S(M, B)` be the transport block size in bytes as defined by 3GPP TS 36.213. We first calculate the number :math:`L` of RBGs allocated to each user as +The test vector is obtained according to the values of transport block size reported in table 7.1.7.2.1-1 of [TS36.213]_, considering an equal distribution of the physical resource block among the users using Resource Allocation Type 0 as defined in Section 7.1.6.1 of [TS36.213]_. Let :math:`\tau` be the TTI duration, :math:`N` be the number of UEs, :math:`B` the transmission bandwidth configuration in number of RBs, :math:`G` the RBG size, :math:`M` the modulation and coding scheme in use at the given SINR and :math:`S(M, B)` be the transport block size in bits as defined by 3GPP TS 36.213. We first calculate the number :math:`L` of RBGs allocated to each user as .. math:: L = \left\lfloor \frac{B}{NG} \right\rfloor -The reference throughput :math:`T` in bps achieved by each UE is then calculated as +The reference throughput (in bytes per second) :math:`T` in bps achieved by each UE is then calculated as .. math:: - T = \frac{8 \; S(M, L G)}{\tau} + T = \frac{S(M, L G)}{8 \; \tau} @@ -75,10 +75,12 @@ In the first category of test cases, the UEs are all placed at the same distance T = \frac{S(M,B)}{\tau N} - - The second category of tests is aimed at verify the fairness behavior in presence of UEs with different SINRs (and therefore different estimated throughput from PFS). The test consists of checking whether the throughput obtained by each UE over the whole simulation matches with the steady-state throughput expected by the PF scheduler according to the theory (see for instance [Kushner2004cpfsa]_). -In detail, each TTI the PFS estimates the throughput of each UE for the next TTI according to the CQIs received; the ratio of this value respect to the global of all users represent the long term trend for the bandwidht allocated by the scheduler. In this specific case, this results in allocating proportionally the maximum bandwidht achievable (i.e., all PRB allocated to a single users) among the users in a time division fashion. +Let :math:`Ri` the estimation done by PFS of the throughput of the :math:`i` UE for the next TTI according to the CQIs received and :math:`Ti` the throughput preceived by the :math:`i` UE . The test verifies that the ratio of the obtained throughput value respect to the global one (i.e. the sum of the ones of all users) is equal to the steady-state throughput of the PFS, that is + +.. math:: + + K = \frac{Ri}{\sum_{k=1}^N Ri} = \frac{Ti}{\sum_{k=1}^N Ti}