5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
lena-lte-comparison-user.cc
Go to the documentation of this file.
1// Copyright (c) 2022 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#include "lena-lte-comparison.h"
6
7#include "ns3/command-line.h"
8#include "ns3/show-progress.h"
9
10using namespace ns3;
11
39int
40main(int argc, char* argv[])
41{
42 Parameters params;
43 /*
44 * From here, we instruct the ns3::CommandLine class of all the input parameters
45 * that we may accept as input, as well as their description, and the storage
46 * variable.
47 */
48 CommandLine cmd(__FILE__);
49
50 cmd.AddValue("scenario", "The urban scenario string (UMa,UMi,RMa)", params.scenario);
51 cmd.AddValue("numRings", "The number of rings around the central site", params.numOuterRings);
52 cmd.AddValue("ueNumPergNb",
53 "The number of UE per cell or gNB in multiple-ue topology",
54 params.ueNumPergNb);
55 cmd.AddValue("siteFile",
56 "Path to file of tower coordinates (instead of hexagonal grid)",
57 params.baseStationFile);
58 cmd.AddValue("useSiteFile",
59 "If true, it will be used site file, otherwise it will be used "
60 "numRings parameter to create scenario.",
61 params.useSiteFile);
62 cmd.AddValue("appGenerationTime",
63 "Duration applications will generate traffic.",
64 params.appGenerationTime);
65 cmd.AddValue("numerologyBwp", "The numerology to be used (NR only)", params.numerologyBwp);
66 cmd.AddValue("pattern", "The TDD pattern to use", params.pattern);
67 cmd.AddValue("direction", "The flow direction (DL or UL)", params.direction);
68 cmd.AddValue("simulator",
69 "The cellular network simulator to use: LENA or 5GLENA",
70 params.simulator);
71 cmd.AddValue("technology",
72 "The radio access network technology (LTE or NR)",
73 params.radioNetwork);
74 cmd.AddValue("operationMode",
75 "The network operation mode can be TDD or FDD",
76 params.operationMode);
77 cmd.AddValue("simTag",
78 "tag to be appended to output filenames to distinguish simulation campaigns",
79 params.simTag);
80 cmd.AddValue("outputDir", "directory where to store simulation results", params.outputDir);
81 cmd.AddValue("errorModelType",
82 "Error model type: ns3::NrEesmCcT1, ns3::NrEesmCcT2, ns3::NrEesmIrT1, "
83 "ns3::NrEesmIrT2, ns3::NrLteMiErrorModel",
84 params.errorModel);
85 cmd.AddValue("calibration",
86 "disable a bunch of things to make LENA and NR_LTE comparable",
87 params.calibration);
88 cmd.AddValue("trafficScenario",
89 "0: saturation (80 Mbps/20 MHz), 1: latency (1 pkt of 12 bytes), 2: low-load (1 "
90 "Mbps), 3: medium-load (20Mbps)",
91 params.trafficScenario);
92 cmd.AddValue("scheduler", "PF: Proportional Fair, RR: Round-Robin", params.scheduler);
93 cmd.AddValue("bandwidth",
94 "BW in MHz for each BWP (integer value): valid values are 20, 10, 5",
95 params.bandwidthMHz);
96 cmd.AddValue("freqScenario",
97 "0: NON_OVERLAPPING (each sector in different freq), 1: OVERLAPPING (same freq "
98 "for all sectors)",
99 params.freqScenario);
100 cmd.AddValue("downtiltAngle",
101 "Base station antenna downtilt angle (deg)",
102 params.downtiltAngle);
103 cmd.AddValue("enableUlPc", "Whether to enable or disable UL power control", params.enableUlPc);
104 cmd.AddValue("powerAllocation",
105 "Power allocation can be a)UniformPowerAllocBw or b)UniformPowerAllocUsed.",
106 params.powerAllocation);
107 cmd.AddValue("xMin", "The min x coordinate of the rem map", params.xMinRem);
108 cmd.AddValue("xMax", "The max x coordinate of the rem map", params.xMaxRem);
109 cmd.AddValue("xRes", "The resolution on the x axis of the rem map", params.xResRem);
110 cmd.AddValue("yMin", "The min y coordinate of the rem map", params.yMinRem);
111 cmd.AddValue("yMax", "The max y coordinate of the rem map", params.yMaxRem);
112 cmd.AddValue("yRes", "The resolution on the y axis of the rem map", params.yResRem);
113 cmd.AddValue("z", "The z coordinate of the rem map", params.zRem);
114 cmd.AddValue("dlRem", "Generates DL REM without executing simulation", params.dlRem);
115 cmd.AddValue("ulRem", "Generates UL REM without executing simulation", params.ulRem);
116 cmd.AddValue("remSector", "For which sector to generate the rem", params.remSector);
117 cmd.AddValue("progressInterval", "Progress reporting interval", params.progressInterval);
118
119 // Parse the command line
120 cmd.Parse(argc, argv);
121 params.Validate();
122
123 std::cout << params;
124
125 ShowProgress spinner(params.progressInterval);
126
127 LenaLteComparison(params);
128
129 return 0;
130}