A Discrete-Event Network Simulator
API
lena-dual-stripe.cc File Reference
#include <ns3/core-module.h>
#include <ns3/network-module.h>
#include <ns3/mobility-module.h>
#include <ns3/internet-module.h>
#include <ns3/lte-module.h>
#include <ns3/config-store-module.h>
#include <ns3/buildings-module.h>
#include <ns3/point-to-point-helper.h>
#include <ns3/applications-module.h>
#include <ns3/log.h>
#include <iomanip>
#include <ios>
#include <string>
#include <vector>
+ Include dependency graph for lena-dual-stripe.cc:

Go to the source code of this file.

Classes

class  FemtocellBlockAllocator
 Class that takes care of installing blocks of the buildings in a given area. More...
 

Functions

bool AreOverlapping (Box a, Box b)
 
void PrintGnuplottableBuildingListToFile (std::string filename)
 
void PrintGnuplottableEnbListToFile (std::string filename)
 
void PrintGnuplottableUeListToFile (std::string filename)
 

Variables

static ns3::GlobalValue g_areaMarginFactor ("areaMarginFactor", "how much the UE area extends outside the macrocell grid, " "expressed as fraction of the interSiteDistance", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_epc ("epc", "If true, will setup the EPC to simulate an end-to-end topology, " "with real IP applications over PDCP and RLC UM (or RLC AM by changing " "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). " "If false, only the LTE radio access will be simulated with RLC SM. ", ns3::BooleanValue(false), ns3::MakeBooleanChecker())
 
static ns3::GlobalValue g_epcDl ("epcDl", "if true, will activate data flows in the downlink when EPC is being used. " "If false, downlink flows won't be activated. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker())
 
static ns3::GlobalValue g_epcUl ("epcUl", "if true, will activate data flows in the uplink when EPC is being used. " "If false, uplink flows won't be activated. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker())
 
static ns3::GlobalValue g_fadingTrace ("fadingTrace", "The path of the fading trace (by default no fading trace " "is loaded, i.e., fading is not considered)", ns3::StringValue(""), ns3::MakeStringChecker())
 
static ns3::GlobalValue g_generateRem ("generateRem", "if true, will generate a REM and then abort the simulation;" "if false, will run the simulation normally (without generating any REM)", ns3::BooleanValue(false), ns3::MakeBooleanChecker())
 
static ns3::GlobalValue g_homeEnbActivationRatio ("homeEnbActivationRatio", "The HeNB activation ratio as per 3GPP R4-092042", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_homeEnbBandwidth ("homeEnbBandwidth", "bandwidth [num RBs] used by HeNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_homeEnbDeploymentRatio ("homeEnbDeploymentRatio", "The HeNB deployment ratio as per 3GPP R4-092042", ns3::DoubleValue(0.2), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_homeEnbDlEarfcn ("homeEnbDlEarfcn", "DL EARFCN used by HeNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_homeEnbTxPowerDbm ("homeEnbTxPowerDbm", "TX power [dBm] used by HeNBs", ns3::DoubleValue(20.0), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_homeUesHomeEnbRatio ("homeUesHomeEnbRatio", "How many (on average) home UEs per HeNB there are in the simulation", ns3::DoubleValue(1.0), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_interSiteDistance ("interSiteDistance", "min distance between two nearby macro cell sites", ns3::DoubleValue(500), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_macroEnbBandwidth ("macroEnbBandwidth", "bandwidth [num RBs] used by macro eNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_macroEnbDlEarfcn ("macroEnbDlEarfcn", "DL EARFCN used by macro eNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_macroEnbTxPowerDbm ("macroEnbTxPowerDbm", "TX power [dBm] used by macro eNBs", ns3::DoubleValue(46.0), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_macroUeDensity ("macroUeDensity", "How many macrocell UEs there are per square meter", ns3::DoubleValue(0.00002), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_nApartmentsX ("nApartmentsX", "Number of apartments along the X axis in a femtocell block", ns3::UintegerValue(10), ns3::MakeUintegerChecker< uint32_t >())
 
static ns3::GlobalValue g_nBlocks ("nBlocks", "Number of femtocell blocks", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
 
static ns3::GlobalValue g_nFloors ("nFloors", "Number of floors", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
 
static ns3::GlobalValue g_nMacroEnbSites ("nMacroEnbSites", "How many macro sites there are", ns3::UintegerValue(3), ns3::MakeUintegerChecker< uint32_t >())
 
static ns3::GlobalValue g_nMacroEnbSitesX ("nMacroEnbSitesX", "(minimum) number of sites along the X-axis of the hex grid", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
 
static ns3::GlobalValue g_numBearersPerUe ("numBearersPerUe", "How many bearers per UE there are in the simulation", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_outdoorUeMaxSpeed ("outdoorUeMaxSpeed", "Maximum speed value of macro UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_outdoorUeMinSpeed ("outdoorUeMinSpeed", "Minimum speed value of macro UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_remRbId ("remRbId", "Resource Block Id of Data Channel, for which REM will be generated;" "default value is -1, what means REM will be averaged from all RBs of " "Control Channel", ns3::IntegerValue(-1), MakeIntegerChecker< int32_t >())
 
static ns3::GlobalValue g_simTime ("simTime", "Total duration of the simulation [s]", ns3::DoubleValue(0.25), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_srsPeriodicity ("srsPeriodicity", "SRS Periodicity (has to be at least " "greater than the number of UEs per eNB)", ns3::UintegerValue(80), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_useUdp ("useUdp", "if true, the UdpClient application will be used. " "Otherwise, the BulkSend application will be used over a TCP connection. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker())
 

Detailed Description

Usage

$ ./ns3 run "lena-dual-stripe"

Definition in file lena-dual-stripe.cc.

Function Documentation

◆ AreOverlapping()

bool AreOverlapping ( Box  a,
Box  b 
)

Definition at line 45 of file lena-dual-stripe.cc.

References ns3::Box::xMax, ns3::Box::xMin, ns3::Box::yMax, and ns3::Box::yMin.

Referenced by FemtocellBlockAllocator::OverlapsWithAnyPrevious().

+ Here is the caller graph for this function:

◆ PrintGnuplottableBuildingListToFile()

void PrintGnuplottableBuildingListToFile ( std::string  filename)

◆ PrintGnuplottableEnbListToFile()

void PrintGnuplottableEnbListToFile ( std::string  filename)

Definition at line 214 of file lena-dual-stripe.cc.

References ns3::LteEnbNetDevice::GetCellId(), ns3::Node::GetDevice(), ns3::Node::GetNDevices(), ns3::Object::GetObject(), GetPosition(), and NS_LOG_ERROR.

+ Here is the call graph for this function:

◆ PrintGnuplottableUeListToFile()

void PrintGnuplottableUeListToFile ( std::string  filename)

Definition at line 186 of file lena-dual-stripe.cc.

References ns3::Node::GetDevice(), ns3::Node::GetNDevices(), ns3::Object::GetObject(), GetPosition(), and NS_LOG_ERROR.

+ Here is the call graph for this function:

Variable Documentation

◆ g_areaMarginFactor

ns3::GlobalValue g_areaMarginFactor("areaMarginFactor", "how much the UE area extends outside the macrocell grid, " "expressed as fraction of the interSiteDistance", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >()) ( "areaMarginFactor"  ,
"how much the UE area extends outside the macrocell  grid,
" "expressed as fraction of the interSiteDistance"  ,
ns3::DoubleValue(0.5)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_epc

ns3::GlobalValue g_epc("epc", "If true, will setup the EPC to simulate an end-to-end topology, " "with real IP applications over PDCP and RLC UM (or RLC AM by changing " "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). " "If false, only the LTE radio access will be simulated with RLC SM. ", ns3::BooleanValue(false), ns3::MakeBooleanChecker()) ( "epc"  ,
"If  true,
will setup the EPC to simulate an end-to-end  topology,
" "with real IP applications over PDCP and RLC UM(or RLC AM by changing " "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). " "If  false,
only the LTE radio access will be simulated with RLC SM. "  ,
ns3::BooleanValue(false)  ,
ns3::MakeBooleanChecker()   
)
static

◆ g_epcDl

ns3::GlobalValue g_epcDl("epcDl", "if true, will activate data flows in the downlink when EPC is being used. " "If false, downlink flows won't be activated. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker()) ( "epcDl"  ,
"if  true,
will activate data flows in the downlink when EPC is being used. " "If  false,
downlink flows won 't be activated. " "If EPC is not  used,
this parameter will be ignored."  ,
ns3::BooleanValue(true)  ,
ns3::MakeBooleanChecker()   
)
static

◆ g_epcUl

ns3::GlobalValue g_epcUl("epcUl", "if true, will activate data flows in the uplink when EPC is being used. " "If false, uplink flows won't be activated. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker()) ( "epcUl"  ,
"if  true,
will activate data flows in the uplink when EPC is being used. " "If  false,
uplink flows won 't be activated. " "If EPC is not  used,
this parameter will be ignored."  ,
ns3::BooleanValue(true)  ,
ns3::MakeBooleanChecker()   
)
static

◆ g_fadingTrace

ns3::GlobalValue g_fadingTrace("fadingTrace", "The path of the fading trace (by default no fading trace " "is loaded, i.e., fading is not considered)", ns3::StringValue(""), ns3::MakeStringChecker()) ( "fadingTrace"  ,
"The path of the fading trace (by default no fading trace " "is loaded, i.e., fading is not considered)"  ,
ns3::StringValue("")  ,
ns3::MakeStringChecker()   
)
static

◆ g_generateRem

ns3::GlobalValue g_generateRem("generateRem", "if true, will generate a REM and then abort the simulation;" "if false, will run the simulation normally (without generating any REM)", ns3::BooleanValue(false), ns3::MakeBooleanChecker()) ( "generateRem"  ,
"if  true,
will generate a REM and then abort the simulation;" "if  false,
will run the simulation normally(without generating any REM)"  ,
ns3::BooleanValue(false)  ,
ns3::MakeBooleanChecker()   
)
static

◆ g_homeEnbActivationRatio

ns3::GlobalValue g_homeEnbActivationRatio("homeEnbActivationRatio", "The HeNB activation ratio as per 3GPP R4-092042", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >()) ( "homeEnbActivationRatio"  ,
"The HeNB activation ratio as per 3GPP R4-092042"  ,
ns3::DoubleValue(0.5)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_homeEnbBandwidth

ns3::GlobalValue g_homeEnbBandwidth("homeEnbBandwidth", "bandwidth [num RBs] used by HeNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >()) ( "homeEnbBandwidth"  ,
"bandwidth used by HeNBs"  [num RBs],
ns3::UintegerValue(25)  ,
ns3::MakeUintegerChecker< uint16_t >  () 
)
static

◆ g_homeEnbDeploymentRatio

ns3::GlobalValue g_homeEnbDeploymentRatio("homeEnbDeploymentRatio", "The HeNB deployment ratio as per 3GPP R4-092042", ns3::DoubleValue(0.2), ns3::MakeDoubleChecker< double >()) ( "homeEnbDeploymentRatio"  ,
"The HeNB deployment ratio as per 3GPP R4-092042"  ,
ns3::DoubleValue(0.2)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_homeEnbDlEarfcn

ns3::GlobalValue g_homeEnbDlEarfcn("homeEnbDlEarfcn", "DL EARFCN used by HeNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >()) ( "homeEnbDlEarfcn"  ,
"DL EARFCN used by HeNBs"  ,
ns3::UintegerValue(100)  ,
ns3::MakeUintegerChecker< uint16_t >  () 
)
static

◆ g_homeEnbTxPowerDbm

ns3::GlobalValue g_homeEnbTxPowerDbm("homeEnbTxPowerDbm", "TX power [dBm] used by HeNBs", ns3::DoubleValue(20.0), ns3::MakeDoubleChecker< double >()) ( "homeEnbTxPowerDbm"  ,
"TX power used by HeNBs"  [dBm],
ns3::DoubleValue(20.0)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_homeUesHomeEnbRatio

ns3::GlobalValue g_homeUesHomeEnbRatio("homeUesHomeEnbRatio", "How many (on average) home UEs per HeNB there are in the simulation", ns3::DoubleValue(1.0), ns3::MakeDoubleChecker< double >()) ( "homeUesHomeEnbRatio"  ,
"How many (on average) home UEs per HeNB there are in the simulation"  ,
ns3::DoubleValue(1.0)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_interSiteDistance

ns3::GlobalValue g_interSiteDistance("interSiteDistance", "min distance between two nearby macro cell sites", ns3::DoubleValue(500), ns3::MakeDoubleChecker< double >()) ( "interSiteDistance"  ,
"min distance between two nearby macro cell sites"  ,
ns3::DoubleValue(500)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_macroEnbBandwidth

ns3::GlobalValue g_macroEnbBandwidth("macroEnbBandwidth", "bandwidth [num RBs] used by macro eNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >()) ( "macroEnbBandwidth"  ,
"bandwidth used by macro eNBs"  [num RBs],
ns3::UintegerValue(25)  ,
ns3::MakeUintegerChecker< uint16_t >  () 
)
static

◆ g_macroEnbDlEarfcn

ns3::GlobalValue g_macroEnbDlEarfcn("macroEnbDlEarfcn", "DL EARFCN used by macro eNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >()) ( "macroEnbDlEarfcn"  ,
"DL EARFCN used by macro eNBs"  ,
ns3::UintegerValue(100)  ,
ns3::MakeUintegerChecker< uint16_t >  () 
)
static

◆ g_macroEnbTxPowerDbm

ns3::GlobalValue g_macroEnbTxPowerDbm("macroEnbTxPowerDbm", "TX power [dBm] used by macro eNBs", ns3::DoubleValue(46.0), ns3::MakeDoubleChecker< double >()) ( "macroEnbTxPowerDbm"  ,
"TX power used by macro eNBs"  [dBm],
ns3::DoubleValue(46.0)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_macroUeDensity

ns3::GlobalValue g_macroUeDensity("macroUeDensity", "How many macrocell UEs there are per square meter", ns3::DoubleValue(0.00002), ns3::MakeDoubleChecker< double >()) ( "macroUeDensity"  ,
"How many macrocell UEs there are per square meter"  ,
ns3::DoubleValue(0.00002)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_nApartmentsX

ns3::GlobalValue g_nApartmentsX("nApartmentsX", "Number of apartments along the X axis in a femtocell block", ns3::UintegerValue(10), ns3::MakeUintegerChecker< uint32_t >()) ( "nApartmentsX"  ,
"Number of apartments along the X axis in a femtocell block"  ,
ns3::UintegerValue(10)  ,
ns3::MakeUintegerChecker< uint32_t >  () 
)
static

◆ g_nBlocks

ns3::GlobalValue g_nBlocks("nBlocks", "Number of femtocell blocks", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >()) ( "nBlocks"  ,
"Number of femtocell blocks"  ,
ns3::UintegerValue(1)  ,
ns3::MakeUintegerChecker< uint32_t >  () 
)
static

◆ g_nFloors

ns3::GlobalValue g_nFloors("nFloors", "Number of floors", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >()) ( "nFloors"  ,
"Number of floors"  ,
ns3::UintegerValue(1)  ,
ns3::MakeUintegerChecker< uint32_t >  () 
)
static

◆ g_nMacroEnbSites

ns3::GlobalValue g_nMacroEnbSites("nMacroEnbSites", "How many macro sites there are", ns3::UintegerValue(3), ns3::MakeUintegerChecker< uint32_t >()) ( "nMacroEnbSites"  ,
"How many macro sites there are"  ,
ns3::UintegerValue(3)  ,
ns3::MakeUintegerChecker< uint32_t >  () 
)
static

◆ g_nMacroEnbSitesX

ns3::GlobalValue g_nMacroEnbSitesX("nMacroEnbSitesX", "(minimum) number of sites along the X-axis of the hex grid", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >()) ( "nMacroEnbSitesX"  ,
"(minimum) number of sites along the X-axis of the hex grid"  ,
ns3::UintegerValue(1)  ,
ns3::MakeUintegerChecker< uint32_t >  () 
)
static

◆ g_numBearersPerUe

ns3::GlobalValue g_numBearersPerUe("numBearersPerUe", "How many bearers per UE there are in the simulation", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint16_t >()) ( "numBearersPerUe"  ,
"How many bearers per UE there are in the simulation"  ,
ns3::UintegerValue(1)  ,
ns3::MakeUintegerChecker< uint16_t >  () 
)
static

◆ g_outdoorUeMaxSpeed

ns3::GlobalValue g_outdoorUeMaxSpeed("outdoorUeMaxSpeed", "Maximum speed value of macro UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >()) ( "outdoorUeMaxSpeed"  ,
"Maximum speed value of macro UE with random waypoint model ."  [m/s],
ns3::DoubleValue(0.0)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_outdoorUeMinSpeed

ns3::GlobalValue g_outdoorUeMinSpeed("outdoorUeMinSpeed", "Minimum speed value of macro UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >()) ( "outdoorUeMinSpeed"  ,
"Minimum speed value of macro UE with random waypoint model ."  [m/s],
ns3::DoubleValue(0.0)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_remRbId

ns3::GlobalValue g_remRbId("remRbId", "Resource Block Id of Data Channel, for which REM will be generated;" "default value is -1, what means REM will be averaged from all RBs of " "Control Channel", ns3::IntegerValue(-1), MakeIntegerChecker< int32_t >()) ( "remRbId"  ,
"Resource Block Id of Data  Channel,
for which REM will be generated;" "default value is -  1,
what means REM will be averaged from all RBs of " "Control Channel ,
ns3::IntegerValue(-1)  ,
MakeIntegerChecker< int32_t >  () 
)
static

◆ g_simTime

ns3::GlobalValue g_simTime("simTime", "Total duration of the simulation [s]", ns3::DoubleValue(0.25), ns3::MakeDoubleChecker< double >()) ( "simTime"  ,
"Total duration of the simulation "  [s],
ns3::DoubleValue(0.25)  ,
ns3::MakeDoubleChecker< double >  () 
)
static

◆ g_srsPeriodicity

ns3::GlobalValue g_srsPeriodicity("srsPeriodicity", "SRS Periodicity (has to be at least " "greater than the number of UEs per eNB)", ns3::UintegerValue(80), ns3::MakeUintegerChecker< uint16_t >()) ( "srsPeriodicity"  ,
"SRS Periodicity (has to be at least " "greater than the number of UEs per eNB)"  ,
ns3::UintegerValue(80)  ,
ns3::MakeUintegerChecker< uint16_t >  () 
)
static

◆ g_useUdp

ns3::GlobalValue g_useUdp("useUdp", "if true, the UdpClient application will be used. " "Otherwise, the BulkSend application will be used over a TCP connection. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker()) ( "useUdp"  ,
"if  true,
the UdpClient application will be used. " "  Otherwise,
the BulkSend application will be used over a TCP connection. " "If EPC is not  used,
this parameter will be ignored."  ,
ns3::BooleanValue(true)  ,
ns3::MakeBooleanChecker()   
)
static