5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
cttc-nr-3gpp-calibration.h
1// Copyright (c) 2020 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#include "ns3/nstime.h"
6
7#include <ostream>
8#include <string>
9
10#ifndef NR_3GPP_CALIBRATION_H
11#define NR_3GPP_CALIBRATION_H
12
13namespace ns3
14{
15
17{
18 friend std::ostream& operator<<(std::ostream& os, const Parameters& parameters);
19
20 bool Validate() const;
21
22 std::string confType = "customConf"; // calibrationConf
23 std::string nrConfigurationScenario = "DenseA"; // DenseA, DenseB, RuralA, RuralB
24 uint16_t numOuterRings = 3;
25 uint16_t ueNumPergNb = 10;
26 double uesWithRandomUtHeight = 0;
27 bool logging = false;
28 bool basicTraces = false;
29 bool extendedTraces = false;
30 std::string simulator = "5GLENA";
31 std::string scenario = "UMa";
32 std::string radioNetwork = ""; // It must be set to NR
33 std::string operationMode = "TDD"; // TDD or FDD
34 std::string baseStationFile = ""; // path to file of tower/site coordinates
35 bool useSiteFile = false; // whether to use baseStationFile parameter,
36 // or to use numOuterRings parameter to create a scenario
37
38 // Simulation parameters. Please don't use double to indicate seconds, use
39 // milliseconds and integers to avoid representation errors.
40 Time appGenerationTime = MilliSeconds(1000);
41 Time udpAppStartTime = MilliSeconds(400);
42 std::string direction = "DL";
43
44 // Spectrum parameters. We will take the input from the command line, and then
45 // we will pass them inside the NR module.
46 uint16_t numerologyBwp = 0;
47 std::string pattern =
48 "F|F|F|F|F|F|F|F|F|F|"; // Pattern can be e.g. "DL|S|UL|UL|DL|DL|S|UL|UL|DL|"
49 uint32_t bandwidthMHz = 20;
50 double startingFreq = 2110e6;
51
52 double gnbTxPower = 40;
53 double ueTxPower = 23;
54
55 double isd = 1732;
56 double bsHeight = 30.0;
57 double utHeight = 1.5;
58 // uint32_t sectorization = 3;
59 double minBsUtDistance = 10.0;
60 double antennaOffset = 1.0;
61
62 double o2iThreshold = 0;
63 double o2iLowLossThreshold =
64 1.0; // shows the percentage of low losses. Default value is 100% low
65 bool linkO2iConditionToAntennaHeight = false;
66
67 double speed = 0;
68
69 double maxUeClosestSiteDistance = 1000;
70
71 // Where we will store the output files.
72 std::string simTag = "default";
73 std::string outputDir = "./";
74
75 // Error models
76 std::string errorModel = "ns3::NrEesmIrT1";
77
78 bool lenaCalibration = true;
79 bool enableFading = true;
80 bool enableShadowing = true;
81 std::string bfMethod = "CellScan";
82
83 uint16_t bfConfSector = 1;
84 double bfConfElevation = 30;
85
86 bool enableRealBF = false;
87
88 bool enableUlPc = false;
89 std::string powerAllocation = "UniformPowerAllocUsed";
90
91 uint32_t trafficScenario = UINT32_MAX;
92
93 std::string scheduler = "PF";
94 uint32_t freqScenario = 0;
95 bool attachToClosest = false;
96
97 double gnbNoiseFigure = 5.0;
98 double ueNoiseFigure = 7.0;
99
100 double xMinRem = -2000.0;
101 double xMaxRem = 2000.0;
102 uint16_t xResRem = 100;
103 double yMinRem = -2000.0;
104 double yMaxRem = 2000.0;
105 uint16_t yResRem = 100;
106 double zRem = 1.5;
107 bool dlRem = false;
108 bool ulRem = false;
109 uint32_t remSector = 0;
110 bool useLastUeForRem = false;
111
112 Time progressInterval = Seconds(1);
113
114 // Antenna Parameters
115 uint32_t gnbNumRows = 4;
116 uint32_t gnbNumColumns = 4;
117 uint32_t ueNumRows = 4;
118 uint32_t ueNumColumns = 4;
119
120 double gnbHSpacing = 0.5;
121 double gnbVSpacing = 0.5;
122 double ueHSpacing = 0.5;
123 double ueVSpacing = 0.5;
124
125 double downtiltAngle = 0.0;
126 bool ueBearingAngle = false;
127
128 // Whether gNB and UE antenna arrays support
129 bool crossPolarizedGnb = false;
130 bool crossPolarizedUe = false;
131 // The polarization slant angle in degrees
132 double polSlantAngleGnb1 = 0.0; // we can set to 45
133 double polSlantAngleGnb2 = -45;
134 // The polarization slant angle in degrees
135 double polSlantAngleUe1 = 0.0;
136 double polSlantAngleUe2 = 90;
137
138 bool gnbEnable3gppElement = true;
139 bool ueEnable3gppElement = false;
140
141 bool checkUeMobility = false;
142};
143
144extern void Nr3gppCalibration(Parameters& params);
145extern void ChooseCalibrationScenario(Parameters& params);
146
147} // namespace ns3
148
149#endif // NR_3GPP_CALIBRATION_H