src/lte/examples/lena-rem-sector-antenna.cc
author Vedran Mileti? <rivanvx@gmail.com>
Sat, 01 Sep 2012 20:57:21 +0200
changeset 9063 32755d0516f4
parent 8996 d0e0a162a990
child 9653 382d27da8905
permissions -rw-r--r--
Bug 1237 - code cleanups related to includes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     2
/*
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     4
 *
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     7
 * published by the Free Software Foundation;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     8
 *
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    12
 * GNU General Public License for more details.
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    13
 *
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    17
 *
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    18
 * Author: Jaume Nin <jnin@cttc.es>
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    19
 */
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    20
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    21
#include "ns3/core-module.h"
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    22
#include "ns3/network-module.h"
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    23
#include "ns3/mobility-module.h"
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    24
#include "ns3/lte-module.h"
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    25
#include "ns3/config-store.h"
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    26
#include <ns3/buildings-propagation-loss-model.h>
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    27
#include <ns3/buildings-helper.h>
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    28
#include <ns3/radio-environment-map-helper.h>
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    29
#include <iomanip>
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    30
#include <string>
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    31
#include <vector>
8686
973a1a38e6a3 Remove unused include
Jaume Nin
parents: 8679
diff changeset
    32
//#include "ns3/gtk-config-store.h"
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    33
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    34
using namespace ns3;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    35
using std::vector;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    36
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    37
int
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    38
main (int argc, char *argv[])
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    39
{
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    40
  CommandLine cmd;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    41
  cmd.Parse (argc, argv);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    42
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    43
  ConfigStore inputConfig;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    44
  inputConfig.ConfigureDefaults ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    45
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    46
  cmd.Parse (argc, argv);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    47
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    48
  // Geometry of the scenario (in meters)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    49
  // Assume squared building
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    50
  double nodeHeight = 1.5;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    51
  double roomHeight = 3;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    52
  double roomLength = 500;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    53
  uint32_t nRooms = 2;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    54
  // Create one eNodeB per room + one 3 sector eNodeB (i.e. 3 eNodeB) + one regular eNodeB
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    55
  uint32_t nEnb = nRooms*nRooms + 4;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    56
  uint32_t nUe = 1;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    57
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    58
  Ptr < LteHelper > lteHelper = CreateObject<LteHelper> ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    59
  //lteHelper->EnableLogComponents ();
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
    60
  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisPropagationLossModel"));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    61
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    62
  // Create Nodes: eNodeB and UE
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    63
  NodeContainer enbNodes;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    64
  NodeContainer oneSectorNodes;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    65
  NodeContainer threeSectorNodes;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    66
  vector < NodeContainer > ueNodes;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    67
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    68
  oneSectorNodes.Create (nEnb-3);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    69
  threeSectorNodes.Create (3);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    70
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    71
  enbNodes.Add (oneSectorNodes);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    72
  enbNodes.Add (threeSectorNodes);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    73
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    74
  for (uint32_t i = 0; i < nEnb; i++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    75
    {
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    76
      NodeContainer ueNode;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    77
      ueNode.Create (nUe);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    78
      ueNodes.push_back (ueNode);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    79
    }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    80
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    81
  MobilityHelper mobility;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    82
  vector<Vector> enbPosition;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    83
  Ptr < ListPositionAllocator > positionAlloc = CreateObject<ListPositionAllocator> ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    84
  Ptr < Building > building;
8659
01b04e9fbee5 fixed bug in lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8652
diff changeset
    85
  building = Create<Building> ();
01b04e9fbee5 fixed bug in lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8652
diff changeset
    86
  building->SetBoundaries (Box (0.0, nRooms * roomLength,
01b04e9fbee5 fixed bug in lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8652
diff changeset
    87
                                0.0, nRooms * roomLength,
01b04e9fbee5 fixed bug in lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8652
diff changeset
    88
                                0.0, roomHeight));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    89
  building->SetBuildingType (Building::Residential);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    90
  building->SetExtWallsType (Building::ConcreteWithWindows);
8567
00942b9ba28a fixed rem with buildings
Nicola Baldo <nbaldo@cttc.es>
parents: 8564
diff changeset
    91
  building->SetNFloors (1);
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    92
  building->SetNRoomsX (nRooms);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    93
  building->SetNRoomsY (nRooms);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    94
  mobility.SetMobilityModel ("ns3::BuildingsMobilityModel");
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    95
  mobility.Install (enbNodes);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    96
  uint32_t plantedEnb = 0;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    97
  for (uint32_t row = 0; row < nRooms; row++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    98
    {
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
    99
      for (uint32_t column = 0; column < nRooms; column++, plantedEnb++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   100
        {
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   101
          Vector v (roomLength * (column + 0.5),
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   102
                    roomLength * (row + 0.5),
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   103
                    nodeHeight );
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   104
          positionAlloc->Add (v);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   105
          enbPosition.push_back (v);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   106
          Ptr<BuildingsMobilityModel> mmEnb = enbNodes.Get (plantedEnb)->GetObject<BuildingsMobilityModel> ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   107
          mmEnb->SetPosition (v);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   108
        }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   109
    }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   110
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   111
  // Add a 1-sector site
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   112
  Vector v (500, 3000, nodeHeight);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   113
  positionAlloc->Add (v);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   114
  enbPosition.push_back (v);
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   115
  mobility.Install (ueNodes.at(plantedEnb));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   116
  plantedEnb++;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   117
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   118
  // Add the 3-sector site
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   119
  for (uint32_t index = 0; index < 3; index++, plantedEnb++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   120
    {
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   121
      Vector v (500, 2000, nodeHeight);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   122
      positionAlloc->Add (v);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   123
      enbPosition.push_back (v);
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   124
      mobility.Install (ueNodes.at(plantedEnb));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   125
    }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   126
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   127
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   128
  mobility.SetPositionAllocator (positionAlloc);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   129
  mobility.Install (enbNodes);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   130
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   131
  // Position of UEs attached to eNB
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   132
  for (uint32_t i = 0; i < nEnb; i++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   133
    {
8996
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   134
      Ptr<UniformRandomVariable> posX = CreateObject<UniformRandomVariable> ();
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   135
      posX->SetAttribute ("Min", DoubleValue (enbPosition.at(i).x - roomLength * 0));
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   136
      posX->SetAttribute ("Max", DoubleValue (enbPosition.at(i).x + roomLength * 0));
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   137
      Ptr<UniformRandomVariable> posY = CreateObject<UniformRandomVariable> ();
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   138
      posY->SetAttribute ("Min", DoubleValue (enbPosition.at(i).y - roomLength * 0));
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   139
      posY->SetAttribute ("Max", DoubleValue (enbPosition.at(i).y + roomLength * 0));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   140
      positionAlloc = CreateObject<ListPositionAllocator> ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   141
      for (uint32_t j = 0; j < nUe; j++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   142
        {
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   143
          if ( i == nEnb - 3 )
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   144
            {
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   145
              positionAlloc->Add (Vector (enbPosition.at(i).x + 10, enbPosition.at(i).y, nodeHeight));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   146
            }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   147
          else if ( i == nEnb - 2 )
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   148
            {
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents: 8996
diff changeset
   149
              positionAlloc->Add (Vector (enbPosition.at(i).x - std::sqrt (10), enbPosition.at(i).y + std::sqrt (10), nodeHeight));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   150
            }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   151
          else if ( i == nEnb - 1 )
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   152
            {
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents: 8996
diff changeset
   153
              positionAlloc->Add (Vector (enbPosition.at(i).x - std::sqrt (10), enbPosition.at(i).y - std::sqrt (10), nodeHeight));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   154
            }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   155
          else
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   156
            {
8996
d0e0a162a990 Replace various instances of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8787
diff changeset
   157
              positionAlloc->Add (Vector (posX->GetValue (), posY->GetValue (), nodeHeight));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   158
            }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   159
          mobility.SetPositionAllocator (positionAlloc);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   160
        }
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   161
      mobility.Install (ueNodes.at(i));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   162
    }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   163
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   164
  // Create Devices and install them in the Nodes (eNB and UE)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   165
  NetDeviceContainer enbDevs;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   166
  vector < NetDeviceContainer > ueDevs;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   167
8608
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   168
  // power setting in dBm for small cells
8787
e939e081efd5 lena-rem-sector-antenna: more realistic TxPower values
Jonathan McCrohan <jmccroha@tcd.ie>
parents: 8686
diff changeset
   169
  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (20.0));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   170
  enbDevs = lteHelper->InstallEnbDevice (oneSectorNodes);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   171
8608
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   172
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   173
  // power setting for three-sector macrocell
8787
e939e081efd5 lena-rem-sector-antenna: more realistic TxPower values
Jonathan McCrohan <jmccroha@tcd.ie>
parents: 8686
diff changeset
   174
  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (43.0));
8608
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   175
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   176
  // Beam width is made quite narrow so sectors can be noticed in the REM
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   177
  lteHelper->SetEnbAntennaModelType ("ns3::CosineAntennaModel");
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   178
  lteHelper->SetEnbAntennaModelAttribute ("Orientation", DoubleValue (0));
8608
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   179
  lteHelper->SetEnbAntennaModelAttribute ("Beamwidth",   DoubleValue (100));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   180
  lteHelper->SetEnbAntennaModelAttribute ("MaxGain",     DoubleValue (0.0));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   181
  enbDevs.Add ( lteHelper->InstallEnbDevice (threeSectorNodes.Get (0)));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   182
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   183
  lteHelper->SetEnbAntennaModelType ("ns3::CosineAntennaModel");
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   184
  lteHelper->SetEnbAntennaModelAttribute ("Orientation", DoubleValue (360/3));
8608
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   185
  lteHelper->SetEnbAntennaModelAttribute ("Beamwidth",   DoubleValue (100));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   186
  lteHelper->SetEnbAntennaModelAttribute ("MaxGain",     DoubleValue (0.0));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   187
  enbDevs.Add ( lteHelper->InstallEnbDevice (threeSectorNodes.Get (1)));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   188
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   189
  lteHelper->SetEnbAntennaModelType ("ns3::CosineAntennaModel");
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   190
  lteHelper->SetEnbAntennaModelAttribute ("Orientation", DoubleValue (2*360/3));
8608
f746bc78007c more appropriate scenario parameters for lena-rem-sector-antenna
Nicola Baldo <nbaldo@cttc.es>
parents: 8605
diff changeset
   191
  lteHelper->SetEnbAntennaModelAttribute ("Beamwidth",   DoubleValue (100));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   192
  lteHelper->SetEnbAntennaModelAttribute ("MaxGain",     DoubleValue (0.0));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   193
  enbDevs.Add ( lteHelper->InstallEnbDevice (threeSectorNodes.Get (2)));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   194
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   195
  for (uint32_t i = 0; i < nEnb; i++)
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   196
    {
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   197
      NetDeviceContainer ueDev = lteHelper->InstallUeDevice (ueNodes.at(i));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   198
      ueDevs.push_back (ueDev);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   199
      lteHelper->Attach (ueDev, enbDevs.Get (i));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   200
      enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   201
      EpsBearer bearer (q);
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   202
      lteHelper->ActivateEpsBearer (ueDev, bearer, EpcTft::Default ());
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   203
    }
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   204
8609
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8608
diff changeset
   205
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8608
diff changeset
   206
  BuildingsHelper::MakeMobilityModelConsistent ();
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8608
diff changeset
   207
8605
55a01da4a323 REM examples: allow setting resolution via cmd line
Nicola Baldo <nbaldo@cttc.es>
parents: 8601
diff changeset
   208
  // by default, simulation will anyway stop right after the REM has been generated
55a01da4a323 REM examples: allow setting resolution via cmd line
Nicola Baldo <nbaldo@cttc.es>
parents: 8601
diff changeset
   209
  Simulator::Stop (Seconds (0.0069));  
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   210
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   211
  Ptr<RadioEnvironmentMapHelper> remHelper = CreateObject<RadioEnvironmentMapHelper> ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   212
  remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/0"));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   213
  remHelper->SetAttribute ("OutputFile", StringValue ("rem.out"));
8601
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   214
  remHelper->SetAttribute ("XMin", DoubleValue (-2000.0));
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   215
  remHelper->SetAttribute ("XMax", DoubleValue (+2000.0));
105d17d0138b Replaced access to vector, using .at() instead of []
Jaume Nin
parents: 8581
diff changeset
   216
  remHelper->SetAttribute ("YMin", DoubleValue (-500.0));
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   217
  remHelper->SetAttribute ("YMax", DoubleValue (+3500.0));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   218
  remHelper->SetAttribute ("Z", DoubleValue (1.5));
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   219
  remHelper->Install ();
8605
55a01da4a323 REM examples: allow setting resolution via cmd line
Nicola Baldo <nbaldo@cttc.es>
parents: 8601
diff changeset
   220
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   221
  Simulator::Run ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   222
8679
b222f43aba94 Fixed duplicated position set on the rem-sector-antenna simulation script
jaumenin
parents: 8659
diff changeset
   223
//  GtkConfigStore config;
b222f43aba94 Fixed duplicated position set on the rem-sector-antenna simulation script
jaumenin
parents: 8659
diff changeset
   224
//  config.ConfigureAttributes ();
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   225
8605
55a01da4a323 REM examples: allow setting resolution via cmd line
Nicola Baldo <nbaldo@cttc.es>
parents: 8601
diff changeset
   226
  lteHelper = 0;
8564
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   227
  Simulator::Destroy ();
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   228
  return 0;
0b7f3a07acb8 Antenna model + REM example script
Jaume Nin
parents:
diff changeset
   229
}