src/lte/test/lte-test-shadowing.cc
author Marco Miozzo <marco.miozzo@cttc.es>
Wed, 07 Sep 2011 16:55:46 +0200
changeset 8223 eedea1c39ddd
parent 8221 2cf1345bb23f
child 8228 d8694ee58788
permissions -rw-r--r--
Shadowing test updated -> passed.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     2
/*
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     3
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     4
*
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     5
* This program is free software; you can redistribute it and/or modify
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     6
* it under the terms of the GNU General Public License version 2 as
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     7
* published by the Free Software Foundation;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     8
*
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     9
* This program is distributed in the hope that it will be useful,
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    12
* GNU General Public License for more details.
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    13
*
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    14
* You should have received a copy of the GNU General Public License
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    15
* along with this program; if not, write to the Free Software
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    17
*
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    18
* Author: Marco Miozzo <marco.miozzo@cttc.es>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    19
*/
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    20
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    21
#include "ns3/simulator.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    22
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    23
#include "ns3/log.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    24
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    25
#include "ns3/spectrum-test.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    26
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    27
#include "ns3/lte-phy-tag.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    28
#include "ns3/lte-test-ue-phy.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    29
#include "ns3/lte-sinr-chunk-processor.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    30
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    31
#include "ns3/lte-test-shadowing.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    32
#include <ns3/buildings-propagation-loss-model.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    33
#include <ns3/node-container.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    34
#include <ns3/mobility-helper.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    35
#include <ns3/lena-helper.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    36
#include <ns3/single-model-spectrum-channel.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    37
#include "ns3/string.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    38
#include "ns3/double.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    39
#include <ns3/building.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    40
#include <ns3/enum.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    41
#include <ns3/net-device-container.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    42
#include <ns3/lte-ue-net-device.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    43
#include <ns3/lte-enb-net-device.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    44
#include <ns3/lte-ue-rrc.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    45
#include <ns3/lena-helper.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    46
#include <ns3/lte-enb-phy.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    47
#include <ns3/lte-ue-phy.h>
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    48
#include "lte-test-sinr-chunk-processor.h"
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    49
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    50
NS_LOG_COMPONENT_DEFINE ("LteShadowingTest");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    51
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    52
using namespace ns3;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    53
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    54
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    55
/**
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    56
* Test 1.1 Shadowing compound test
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    57
*/
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    58
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    59
/**
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    60
* This TestSuite tests the shadowing model of BuildingPathlossModel 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    61
* by reproducing several communication scenarios 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    62
*/
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    63
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    64
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    65
void
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    66
LteTestShadowingDlSchedCallback (LteShadowingSystemTestCase *testcase, std::string path, uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,                                uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    67
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    68
  testcase->DlScheduling (frameNo, subframeNo, rnti, mcsTb1, sizeTb1, mcsTb2, sizeTb2);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    69
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    70
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    71
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    72
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    73
LteShadowingTestSuite::LteShadowingTestSuite ()
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    74
: TestSuite ("lte-shadowing-model", SYSTEM)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    75
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    76
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    77
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
    78
  // -------------- UNIT TESTS ----------------------------------
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    79
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    80
  LogComponentEnable ("LteShadowingTest", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    81
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    82
  // NS_LOG_INFO ("Creating LteDownlinkSinrTestSuite");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    83
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    84
  Ptr<LenaHelper> lena = CreateObject<LenaHelper> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    85
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    86
  lena->SetAttribute ("PropagationModel", StringValue ("ns3::BuildingsPropagationLossModel"));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    87
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    88
  // Create Nodes: eNodeB, home eNB, UE and home UE (UE attached to HeNB)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    89
  NodeContainer enbNodes;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    90
  NodeContainer henbNodes;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    91
  NodeContainer ueNodes;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    92
  NodeContainer hueNodes;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    93
  enbNodes.Create (1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    94
  henbNodes.Create (2);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    95
  ueNodes.Create (5);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    96
  hueNodes.Create (3);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    97
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    98
  // Install Mobility Model
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    99
  MobilityHelper mobility;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   100
  mobility.SetMobilityModel ("ns3::BuildingsMobilityModel");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   101
  mobility.Install (enbNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   102
  mobility.Install (henbNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   103
  mobility.Install (ueNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   104
  mobility.Install (hueNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   105
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   106
  NetDeviceContainer enbDevs;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   107
  NetDeviceContainer henbDevs;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   108
  NetDeviceContainer ueDevs;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   109
  NetDeviceContainer hueDevs;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   110
  enbDevs = lena->InstallEnbDevice (enbNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   111
  ueDevs = lena->InstallUeDevice (ueNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   112
  henbDevs = lena->InstallEnbDevice (henbNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   113
  hueDevs = lena->InstallUeDevice (hueNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   114
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   115
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   116
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   117
  lena->Attach (ueDevs, enbDevs.Get (0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   118
  lena->Attach (hueDevs, henbDevs.Get (0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   119
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   120
  // Test #1 Outdoor Model
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   121
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   122
  double distance = 2000;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   123
  double hm = 1;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   124
  double hb = 30;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   125
  double freq = 869e6; // E_UTRA BAND #5 see table 5.5-1 of 36.101
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   126
  Ptr<BuildingsMobilityModel> mm1 = enbNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   127
  mm1->SetPosition (Vector (0.0, 0.0, hb));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   128
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   129
  Ptr<BuildingsMobilityModel> mm2 = ueNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   130
  mm2->SetPosition (Vector (distance, 0.0, hm));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   131
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   132
  AddTestCase (new LteShadowingTestCase (mm1, mm2, 148.86, 7.0, "Outdoor Shadowing"));
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   133
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   134
  // Test #2 Indoor model
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   135
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   136
  distance = 30;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   137
  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   138
  double henbHeight = 10.0;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   139
  Ptr<BuildingsMobilityModel> mm5 = henbNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   140
  mm5->SetPosition (Vector (0.0, 0.0, henbHeight));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   141
  Ptr<Building> building1 = Create<Building> (0.0, 10.0, 0.0, 10.0, 0.0, 20.0/*, 1, 1, 1*/);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   142
  building1->SetBuildingType (Building::Residential);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   143
  building1->SetExtWallsType (Building::ConcreteWithWindows);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   144
  mm5->SetIndoor (building1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   145
  Ptr<BuildingsMobilityModel> mm6 = hueNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   146
  mm6->SetPosition (Vector (distance, 0.0, hm));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   147
  mm6->SetIndoor (building1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   148
  mm6->SetFloorNumber (2);
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   149
  AddTestCase (new LteShadowingTestCase (mm5, mm6, 88.5724, 8.0, "Indoor Shadowing"));
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   150
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   151
  // Test #3 Indoor -> Outdoor
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   152
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   153
  distance = 100;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   154
  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   155
  Ptr<BuildingsMobilityModel> mm9 = henbNodes.Get (1)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   156
  mm9->SetPosition (Vector (0.0, 0.0, henbHeight));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   157
  mm9->SetIndoor (building1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   158
  mm9->SetFloorNumber (2);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   159
  Ptr<BuildingsMobilityModel> mm10 = hueNodes.Get (1)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   160
  mm10->SetPosition (Vector (distance, 0.0, hm));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   161
  // The loss is similar of test #4 plus the building penetration loss
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   162
  // which for ConcreteWithWindows is equal to 7 dB and the height gain
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   163
  // (2 floors x 2 dB/floor = 4) -> 81.838 + 7 - 4 = 84.838
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   164
  AddTestCase (new LteShadowingTestCase (mm9, mm10, 85.0012, 8.6, "Indoor -> Outdoor Shadowing"));
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   165
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   166
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   167
  //------------------- SYSTEM TEST ------------------------------
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   168
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   169
/*//   LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   170
  // 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   171
  //   LogComponentEnable ("LenaHelper", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   172
  LogComponentEnable ("LteShadowingTest", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   173
  //   LogComponentEnable ("BuildingsPropagationLossModel", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   174
  //   LogComponentEnable ("LteInterference", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   175
  //   LogComponentEnable ("LteSpectrumValueHelper", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   176
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   177
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   178
  struct SnrEfficiencyMcs
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   179
  {
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   180
    double  snrDb;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   181
    double  efficiency;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   182
    int  mcsIndex;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   183
  };
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   184
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   185
 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   186
  SnrEfficiencyMcs snrEfficiencyMcs[] = {
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   187
    { -5.00000,  0.08024,        -1},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   188
    { -4.00000,  0.10030,        -1},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   189
    { -3.00000,  0.12518,        -1},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   190
    { -2.00000,  0.15589,        0},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   191
    { -1.00000,  0.19365,        0},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   192
    { 0.00000,   0.23983,        2},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   193
    { 1.00000,   0.29593,        2},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   194
    { 2.00000,   0.36360,        2},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   195
    { 3.00000,   0.44451,        4},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   196
    { 4.00000,   0.54031,        4},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   197
    { 5.00000,   0.65251,        6},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   198
    { 6.00000,   0.78240,        6},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   199
    { 7.00000,   0.93086,        8},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   200
    { 8.00000,   1.09835,        8},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   201
    { 9.00000,   1.28485,        10},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   202
    { 10.00000,  1.48981,        12},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   203
    { 11.00000,  1.71229,        12},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   204
    { 12.00000,  1.95096,        14},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   205
    { 13.00000,  2.20429,        14},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   206
    { 14.00000,  2.47062,        16},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   207
    { 15.00000,  2.74826,        18},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   208
    { 16.00000,  3.03560,        18},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   209
    { 17.00000,  3.33115,        20},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   210
    { 18.00000,  3.63355,        20},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   211
    { 19.00000,  3.94163,        22},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   212
    { 20.00000,  4.25439,        22},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   213
    { 21.00000,  4.57095,        24},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   214
    { 22.00000,  4.89060,        24},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   215
    { 23.00000,  5.21276,        26},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   216
    { 24.00000,  5.53693,        26},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   217
    { 25.00000,  5.86271,        28},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   218
    { 26.00000,  6.18980,        28},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   219
    { 27.00000,  6.51792,        28},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   220
    { 28.00000,  6.84687,        28},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   221
    { 29.00000,  7.17649,        28},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   222
    { 30.00000,  7.50663,        28},
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   223
  };
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   224
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   225
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   226
  double txPowerDbm = 30; // default eNB TX power over whole bandwdith
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   227
  double txPowerLin = pow (10, (txPowerDbm - 30)/10);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   228
  double ktDbm = -174;    // reference LTE noise PSD
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   229
  double noisePowerDbm = ktDbm + 10 * log10 (25 * 180000); // corresponds to kT*bandwidth in linear units
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   230
  double receiverNoiseFigureDb = 9.0; // default UE noise figure
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   231
  double noiseLin = pow (10, (noisePowerDbm-30+receiverNoiseFigureDb)/10);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   232
  double loss[] = {81.0000, 134.0125, 144.1489};
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   233
  double dist[] = {100.0, 500.0, 1500};
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   234
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   235
  int numOfTests = sizeof (loss) / sizeof (double);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   236
  for ( int i = 0 ; i < numOfTests; i++ )
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   237
  {
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   238
    //     double lossDb = txPowerDbm - snrEfficiencyMcs[i].snrDb - noisePowerDbm - receiverNoiseFigureDb;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   239
    double sinrLin = (txPowerLin*(pow(10, loss[i]/10))) / noiseLin;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   240
    //     double sinrDb = txPowerDbm- noisePowerDbm - receiverNoiseFigureDb - loss[i];
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   241
    double sinrDb = 10*log10(sinrLin);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   242
    NS_LOG_INFO (" Ptx " << txPowerDbm << " Pn " << noisePowerDbm << " Fn " << receiverNoiseFigureDb << " Pl " << loss[i] << " dist " << dist[i]);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   243
    std::ostringstream name;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   244
    name << " snr= " << sinrDb << " dB, "
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   245
    << " mcs= " << snrEfficiencyMcs[i].mcsIndex;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   246
    AddTestCase (new LteShadowingSystemTestCase (name.str (),  sinrDb, dist[i], snrEfficiencyMcs[i].mcsIndex));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   247
  }
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   248
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   249
  */
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   250
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   251
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   252
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   253
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   254
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   255
static LteShadowingTestSuite lteShadowingTestSuite;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   256
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   257
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   258
/**
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   259
* TestCase
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   260
*/
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   261
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   262
LteShadowingTestCase::LteShadowingTestCase (Ptr<BuildingsMobilityModel> m1, Ptr<BuildingsMobilityModel> m2, double refValue, double sigmaRef, std::string name)
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   263
: TestCase ("SHADOWING calculation: " + name),
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   264
m_node1 (m1),
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   265
m_node2 (m2),
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   266
m_lossRef (refValue),
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   267
m_sigmaRef (sigmaRef)
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   268
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   269
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   270
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   271
LteShadowingTestCase::~LteShadowingTestCase ()
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   272
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   273
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   274
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   275
void
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   276
LteShadowingTestCase::DoRun (void)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   277
{
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   278
//     LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   279
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   280
  //   LogComponentEnable ("LteEnbRrc", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   281
  //   LogComponentEnable ("LteUeRrc", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   282
  //   LogComponentEnable ("LteEnbMac", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   283
  //   LogComponentEnable ("LteUeMac", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   284
  //   LogComponentEnable ("LteRlc", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   285
  //   LogComponentEnable ("RrPacketScheduler", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   286
  // 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   287
  //   LogComponentEnable ("LtePhy", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   288
  //   LogComponentEnable ("LteEnbPhy", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   289
  //   LogComponentEnable ("LteUePhy", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   290
  // 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   291
  //   LogComponentEnable ("LteSpectrumPhy", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   292
  //   LogComponentEnable ("LteInterference", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   293
  //   LogComponentEnable ("LteSinrChunkProcessor", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   294
  // 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   295
  //   LogComponentEnable ("LtePropagationLossModel", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   296
  //   LogComponentEnable ("LossModel", logLevel);
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   297
//     LogComponentEnable ("ShadowingLossModel", logLevel);
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   298
  //   LogComponentEnable ("PenetrationLossModel", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   299
  //   LogComponentEnable ("MultipathLossModel", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   300
  //   LogComponentEnable ("PathLossModel", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   301
  // 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   302
  //   LogComponentEnable ("LteNetDevice", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   303
  //   LogComponentEnable ("LteUeNetDevice", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   304
  //   LogComponentEnable ("LteEnbNetDevice", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   305
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   306
//   LogComponentEnable ("BuildingsPropagationLossModel", LOG_LEVEL_ALL);
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   307
  NS_LOG_INFO ("Testing " << GetName());
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   308
  std::vector<double> loss;
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   309
  double sum = 0.0;
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   310
  double sumSquared = 0.0;
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   311
  int samples = 10000;
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   312
  for (int i = 0; i < samples; i++)
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   313
  {
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   314
  Ptr<SpectrumChannel> m_downlinkChannel = CreateObject<SingleModelSpectrumChannel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   315
  Ptr<SpectrumChannel> m_uplinkChannel = CreateObject<SingleModelSpectrumChannel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   316
  Ptr<BuildingsPropagationLossModel> m_downlinkPropagationLossModel = CreateObject<BuildingsPropagationLossModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   317
  /*m_downlinkPropagationLossModel->SetAttribute ("Frequency", DoubleValue (m_freq));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   318
  m_downlinkPropagationLossModel->SetAttribute ("Lambda", DoubleValue (300000000.0 /m_freq));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   319
  m_downlinkPropagationLossModel->SetAttribute ("Environment", EnumValue (m_env));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   320
  m_downlinkPropagationLossModel->SetAttribute ("CitySize", EnumValue (m_city));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   321
  */Ptr<BuildingsPropagationLossModel>  m_uplinkPropagationLossModel = CreateObject<BuildingsPropagationLossModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   322
//   m_uplinkPropagationLossModel->SetAttribute ("Frequency", DoubleValue (m_freq));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   323
//   m_uplinkPropagationLossModel->SetAttribute ("Lambda", DoubleValue (300000000.0 /m_freq));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   324
  m_downlinkChannel->AddPropagationLossModel (m_downlinkPropagationLossModel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   325
  m_uplinkChannel->AddPropagationLossModel (m_uplinkPropagationLossModel);
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   326
  loss.push_back (m_downlinkPropagationLossModel->GetLoss (m_node1, m_node2) - m_lossRef);
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   327
//   NS_LOG_INFO (loss.at (loss.size()-1));
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   328
  sum += loss.at (loss.size()-1);
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   329
  sumSquared += (loss.at (loss.size()-1)*loss.at (loss.size()-1));
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   330
  }
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   331
  double mean = sum/samples;
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   332
  double sigma = sumSquared/samples - (mean*mean);
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   333
  NS_LOG_INFO ("Sigma from simulation " << sigma << ", reference value " << m_sigmaRef);
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   334
  
8223
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   335
  NS_TEST_ASSERT_MSG_EQ_TOL(mean, 0.0, 0.1, "Wrong mean !");
eedea1c39ddd Shadowing test updated -> passed.
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8221
diff changeset
   336
  NS_TEST_ASSERT_MSG_EQ_TOL(sigma, m_sigmaRef, 0.2, "Wrong sigma !");
8221
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   337
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   338
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   339
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   340
//-------------------- SYSTEM TEST ---------------------------------
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   341
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   342
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   343
LteShadowingSystemTestCase::LteShadowingSystemTestCase (std::string name, double snrDb, double dist, uint16_t mcsIndex)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   344
: TestCase (name),
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   345
m_snrDb (snrDb),
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   346
m_distance (dist),
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   347
m_mcsIndex (mcsIndex)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   348
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   349
  std::ostringstream sstream1, sstream2;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   350
  sstream1 << " snr=" << snrDb 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   351
  << " mcs=" << mcsIndex << " distance=" << dist;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   352
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   353
  NS_LOG_INFO ("Creating LteShadowingSystemTestCase: " + sstream1.str ());
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   354
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   355
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   356
LteShadowingSystemTestCase::~LteShadowingSystemTestCase ()
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   357
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   358
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   359
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   360
void
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   361
LteShadowingSystemTestCase::DoRun (void)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   362
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   363
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   364
//     LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   365
//     LogComponentEnable ("LteAmc", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   366
//     LogComponentEnable ("LtePhy", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   367
//     LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   368
//     LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   369
//     LogComponentEnable ("SingleModelSpectrumChannel", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   370
//     LogComponentEnable ("BuildingsPropagationLossModel", logLevel);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   371
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   372
  LogComponentEnable ("BuildingsPropagationLossModel", LOG_LEVEL_ALL);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   373
    
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   374
  Ptr<LenaHelper> lena = CreateObject<LenaHelper> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   375
    lena->EnableLogComponents ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   376
  lena->EnableMacTraces ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   377
  lena->EnableRlcTraces ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   378
  lena->SetAttribute ("PropagationModel", StringValue ("ns3::BuildingsPropagationLossModel"));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   379
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   380
  //Create Nodes: eNodeB and UE
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   381
  NodeContainer enbNodes;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   382
  NodeContainer ueNodes;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   383
  enbNodes.Create (1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   384
  ueNodes.Create (1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   385
  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes );
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   386
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   387
//   Install Mobility Model
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   388
  MobilityHelper mobility;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   389
  mobility.SetMobilityModel ("ns3::BuildingsMobilityModel");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   390
  mobility.Install (allNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   391
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   392
//   Create Devices and install them in the Nodes (eNB and UE)
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   393
  NetDeviceContainer enbDevs;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   394
  NetDeviceContainer ueDevs;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   395
  lena->SetSchedulerType ("ns3::RrFfMacScheduler");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   396
  enbDevs = lena->InstallEnbDevice (enbNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   397
  ueDevs = lena->InstallUeDevice (ueNodes);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   398
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   399
  Ptr<BuildingsMobilityModel> mm_enb = enbNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   400
  mm_enb->SetPosition (Vector (0.0, 0.0, 30.0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   401
  Ptr<BuildingsMobilityModel> mm_ue = ueNodes.Get (0)->GetObject<BuildingsMobilityModel> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   402
  mm_ue->SetPosition (Vector (m_distance, 0.0, 1.0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   403
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   404
  NS_LOG_INFO (" DISTANCE " << mm_ue->GetDistanceFrom (mm_enb));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   405
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   406
  Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   407
  Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   408
  enbPhy->SetAttribute ("TxPower", DoubleValue (30.0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   409
  enbPhy->SetAttribute ("NoiseFigure", DoubleValue (5.0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   410
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   411
  Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get (0)->GetObject<LteUeNetDevice> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   412
  Ptr<LteUePhy> uePhy = lteUeDev->GetPhy ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   413
  uePhy->SetAttribute ("TxPower", DoubleValue (23.0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   414
  uePhy->SetAttribute ("NoiseFigure", DoubleValue (9.0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   415
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   416
//   Attach a UE to a eNB
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   417
  lena->Attach (ueDevs, enbDevs.Get (0));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   418
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   419
//   Activate an EPS bearer
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   420
  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   421
  EpsBearer bearer (q);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   422
  lena->ActivateEpsBearer (ueDevs, bearer);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   423
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   424
//   Use testing chunk processor in the PHY layer
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   425
//   It will be used to test that the SNR is as intended
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   426
//   Ptr<LtePhy> uePhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   427
  Ptr<LteTestSinrChunkProcessor> testSinr = Create<LteTestSinrChunkProcessor> (uePhy);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   428
  uePhy->GetDownlinkSpectrumPhy ()->AddSinrChunkProcessor (testSinr);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   429
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   430
//     Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling",
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   431
//                      MakeBoundCallback (&LteTestShadowingDlSchedCallback, this));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   432
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   433
  Simulator::Stop (Seconds (0.005));
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   434
  Simulator::Run ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   435
  
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   436
  double calculatedSinrDb = 10.0 * log10 (testSinr->GetSinr ()[0]);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   437
  NS_LOG_INFO ("Distance " << m_distance << " Calculated SINR " << calculatedSinrDb << " ref " << m_snrDb);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   438
  Simulator::Destroy ();
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   439
  NS_TEST_ASSERT_MSG_EQ_TOL (calculatedSinrDb, m_snrDb, 0.001, "Wrong SINR !");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   440
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   441
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   442
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   443
void
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   444
LteShadowingSystemTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   445
                                              uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2) 
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   446
{
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   447
  static bool firstTime = true;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   448
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   449
  if ( firstTime )
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   450
    {
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   451
      firstTime = false;
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   452
      NS_LOG_INFO ("SNR\tRef_MCS\tCalc_MCS");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   453
    }
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   454
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   455
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   456
  if ( (frameNo > 1) || (subframeNo > 4) )
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   457
    {
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   458
      NS_LOG_INFO (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1);
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   459
      
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   460
      NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_mcsIndex, "Wrong MCS index");
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   461
    }
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   462
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   463
}
2cf1345bb23f add test on shadowing (draft version)
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   464