23 #include <ns3/assert.h>
24 #include <ns3/double.h>
26 #include <ns3/lte-amc.h>
27 #include <ns3/lte-mi-error-model.h>
29 #include <ns3/spectrum-value.h>
75 static const int ModulationSchemeForMcs[32] = {
76 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
95 0.15, 0.19, 0.23, 0.31, 0.38, 0.49, 0.6, 0.74, 0.88, 1.03, 1.18, 1.33, 1.48, 1.7, 1.91, 2.16,
96 2.41, 2.57, 2.73, 3.03, 3.32, 3.61, 3.9, 4.21, 4.52, 4.82, 5.12, 5.33, 5.55, 0, 0, 0,
105 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13,
106 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
115 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13,
116 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 23, 24, 25, 26,
128 {16, 24, 32, 40, 56, 72, 88, 104, 120, 136, 144, 176, 208, 224,
129 256, 280, 328, 336, 376, 408, 440, 488, 520, 552, 584, 616, 712},
130 {32, 56, 72, 104, 120, 144, 176, 224, 256, 296, 328, 376, 440, 488,
131 552, 600, 632, 696, 776, 840, 904, 1000, 1064, 1128, 1192, 1256, 1480},
132 {56, 88, 144, 176, 208, 224, 256, 328, 392, 456, 504, 584, 680, 744,
133 840, 904, 968, 1064, 1160, 1288, 1384, 1480, 1608, 1736, 1800, 1864, 2216},
134 {88, 144, 176, 208, 256, 328, 392, 472, 536,
135 616, 680, 776, 904, 1000, 1128, 1224, 1288, 1416,
136 1544, 1736, 1864, 1992, 2152, 2280, 2408, 2536, 2984},
137 {120, 176, 208, 256, 328, 424, 504, 584, 680,
138 776, 872, 1000, 1128, 1256, 1416, 1544, 1608, 1800,
139 1992, 2152, 2344, 2472, 2664, 2856, 2984, 3112, 3752},
140 {152, 208, 256, 328, 408, 504, 600, 712, 808,
141 936, 1032, 1192, 1352, 1544, 1736, 1800, 1928, 2152,
142 2344, 2600, 2792, 2984, 3240, 3496, 3624, 3752, 4392},
143 {176, 224, 296, 392, 488, 600, 712, 840, 968,
144 1096, 1224, 1384, 1608, 1800, 1992, 2152, 2280, 2536,
145 2792, 2984, 3240, 3496, 3752, 4008, 4264, 4392, 5160},
146 {208, 256, 328, 440, 552, 680, 808, 968, 1096,
147 1256, 1384, 1608, 1800, 2024, 2280, 2472, 2600, 2856,
148 3112, 3496, 3752, 4008, 4264, 4584, 4968, 5160, 5992},
149 {224, 328, 376, 504, 632, 776, 936, 1096, 1256,
150 1416, 1544, 1800, 2024, 2280, 2600, 2728, 2984, 3240,
151 3624, 3880, 4136, 4584, 4776, 5160, 5544, 5736, 6712},
152 {256, 344, 424, 568, 696, 872, 1032, 1224, 1384,
153 1544, 1736, 2024, 2280, 2536, 2856, 3112, 3240, 3624,
154 4008, 4264, 4584, 4968, 5352, 5736, 5992, 6200, 7480},
155 {288, 376, 472, 616, 776, 968, 1128, 1320, 1544,
156 1736, 1928, 2216, 2472, 2856, 3112, 3368, 3624, 4008,
157 4392, 4776, 5160, 5544, 5992, 6200, 6712, 6968, 8248},
158 {328, 424, 520, 680, 840, 1032, 1224, 1480, 1672,
159 1864, 2088, 2408, 2728, 3112, 3496, 3624, 3880, 4392,
160 4776, 5160, 5544, 5992, 6456, 6968, 7224, 7480, 8760},
161 {344, 456, 568, 744, 904, 1128, 1352, 1608, 1800,
162 2024, 2280, 2600, 2984, 3368, 3752, 4008, 4264, 4776,
163 5160, 5544, 5992, 6456, 6968, 7480, 7992, 8248, 9528},
164 {376, 488, 616, 808, 1000, 1224, 1480, 1672, 1928,
165 2216, 2472, 2792, 3240, 3624, 4008, 4264, 4584, 5160,
166 5544, 5992, 6456, 6968, 7480, 7992, 8504, 8760, 10296},
167 {392, 520, 648, 872, 1064, 1320, 1544, 1800, 2088,
168 2344, 2664, 2984, 3368, 3880, 4264, 4584, 4968, 5352,
169 5992, 6456, 6968, 7480, 7992, 8504, 9144, 9528, 11064},
170 {424, 568, 696, 904, 1128, 1384, 1672, 1928, 2216,
171 2536, 2792, 3240, 3624, 4136, 4584, 4968, 5160, 5736,
172 6200, 6968, 7480, 7992, 8504, 9144, 9912, 10296, 11832},
173 {456, 600, 744, 968, 1192, 1480, 1736, 2088, 2344,
174 2664, 2984, 3496, 3880, 4392, 4968, 5160, 5544, 6200,
175 6712, 7224, 7992, 8504, 9144, 9912, 10296, 10680, 12576},
176 {488, 632, 776, 1032, 1288, 1544, 1864, 2216, 2536,
177 2856, 3112, 3624, 4136, 4584, 5160, 5544, 5992, 6456,
178 7224, 7736, 8248, 9144, 9528, 10296, 11064, 11448, 13536},
179 {504, 680, 840, 1096, 1352, 1672, 1992, 2344, 2664,
180 2984, 3368, 3880, 4392, 4968, 5544, 5736, 6200, 6712,
181 7480, 8248, 8760, 9528, 10296, 11064, 11448, 12216, 14112},
182 {536, 712, 872, 1160, 1416, 1736, 2088, 2472, 2792,
183 3112, 3496, 4008, 4584, 5160, 5736, 6200, 6456, 7224,
184 7992, 8504, 9144, 9912, 10680, 11448, 12216, 12576, 14688},
185 {568, 744, 936, 1224, 1480, 1864, 2216, 2536, 2984,
186 3368, 3752, 4264, 4776, 5352, 5992, 6456, 6712, 7480,
187 8248, 9144, 9912, 10680, 11448, 12216, 12960, 13536, 15264},
188 {600, 776, 968, 1256, 1544, 1928, 2280, 2664, 3112,
189 3496, 3880, 4392, 4968, 5736, 6200, 6712, 7224, 7992,
190 8760, 9528, 10296, 11064, 11832, 12576, 13536, 14112, 16416},
191 {616, 808, 1000, 1320, 1608, 2024, 2408, 2792, 3240,
192 3624, 4008, 4584, 5352, 5992, 6456, 6968, 7480, 8248,
193 9144, 9912, 10680, 11448, 12576, 12960, 14112, 14688, 16992},
194 {648, 872, 1064, 1384, 1736, 2088, 2472, 2984, 3368,
195 3752, 4264, 4776, 5544, 6200, 6968, 7224, 7736, 8760,
196 9528, 10296, 11064, 12216, 12960, 13536, 14688, 15264, 17568},
197 {680, 904, 1096, 1416, 1800, 2216, 2600, 3112, 3496,
198 4008, 4392, 4968, 5736, 6456, 7224, 7736, 7992, 9144,
199 9912, 10680, 11448, 12576, 13536, 14112, 15264, 15840, 18336},
200 {712, 936, 1160, 1480, 1864, 2280, 2728, 3240, 3624,
201 4136, 4584, 5352, 5992, 6712, 7480, 7992, 8504, 9528,
202 10296, 11064, 12216, 12960, 14112, 14688, 15840, 16416, 19080},
203 {744, 968, 1192, 1544, 1928, 2344, 2792, 3368, 3752,
204 4264, 4776, 5544, 6200, 6968, 7736, 8248, 8760, 9912,
205 10680, 11448, 12576, 13536, 14688, 15264, 16416, 16992, 19848},
206 {776, 1000, 1256, 1608, 1992, 2472, 2984, 3368, 3880,
207 4392, 4968, 5736, 6456, 7224, 7992, 8504, 9144, 10296,
208 11064, 12216, 12960, 14112, 15264, 15840, 16992, 17568, 20616},
209 {776, 1032, 1288, 1672, 2088, 2536, 2984, 3496, 4008,
210 4584, 5160, 5992, 6712, 7480, 8248, 8760, 9528, 10296,
211 11448, 12576, 13536, 14688, 15840, 16416, 17568, 18336, 21384},
212 {808, 1064, 1320, 1736, 2152, 2664, 3112, 3624, 4264,
213 4776, 5352, 5992, 6712, 7736, 8504, 9144, 9912, 10680,
214 11832, 12960, 14112, 15264, 16416, 16992, 18336, 19080, 22152},
215 {840, 1128, 1384, 1800, 2216, 2728, 3240, 3752, 4392,
216 4968, 5544, 6200, 6968, 7992, 8760, 9528, 9912, 11064,
217 12216, 13536, 14688, 15840, 16992, 17568, 19080, 19848, 22920},
218 {872, 1160, 1416, 1864, 2280, 2792, 3368, 3880, 4584,
219 5160, 5736, 6456, 7224, 8248, 9144, 9912, 10296, 11448,
220 12576, 13536, 14688, 15840, 16992, 18336, 19848, 20616, 23688},
221 {904, 1192, 1480, 1928, 2344, 2856, 3496, 4008, 4584,
222 5160, 5736, 6712, 7480, 8504, 9528, 10296, 10680, 11832,
223 12960, 14112, 15264, 16416, 17568, 19080, 19848, 20616, 24496},
224 {936, 1224, 1544, 1992, 2408, 2984, 3496, 4136, 4776,
225 5352, 5992, 6968, 7736, 8760, 9912, 10296, 11064, 12216,
226 13536, 14688, 15840, 16992, 18336, 19848, 20616, 21384, 25456},
227 {968, 1256, 1544, 2024, 2472, 3112, 3624, 4264, 4968,
228 5544, 6200, 6968, 7992, 9144, 9912, 10680, 11448, 12576,
229 14112, 15264, 16416, 17568, 19080, 19848, 21384, 22152, 25456},
230 {1000, 1288, 1608, 2088, 2600, 3112, 3752, 4392, 4968,
231 5736, 6200, 7224, 8248, 9144, 10296, 11064, 11832, 12960,
232 14112, 15264, 16992, 18336, 19080, 20616, 22152, 22920, 26416},
233 {1032, 1352, 1672, 2152, 2664, 3240, 3880, 4584, 5160,
234 5736, 6456, 7480, 8504, 9528, 10680, 11448, 12216, 13536,
235 14688, 15840, 16992, 18336, 19848, 21384, 22920, 23688, 27376},
236 {1032, 1384, 1672, 2216, 2728, 3368, 4008, 4584, 5352,
237 5992, 6712, 7736, 8760, 9912, 11064, 11832, 12216, 13536,
238 15264, 16416, 17568, 19080, 20616, 22152, 22920, 24496, 28336},
239 {1064, 1416, 1736, 2280, 2792, 3496, 4136, 4776, 5544,
240 6200, 6712, 7736, 8760, 9912, 11064, 11832, 12576, 14112,
241 15264, 16992, 18336, 19848, 21384, 22152, 23688, 24496, 29296},
242 {1096, 1416, 1800, 2344, 2856, 3496, 4136, 4968, 5544,
243 6200, 6968, 7992, 9144, 10296, 11448, 12216, 12960, 14688,
244 15840, 16992, 18336, 19848, 21384, 22920, 24496, 25456, 29296},
245 {1128, 1480, 1800, 2408, 2984, 3624, 4264, 4968, 5736,
246 6456, 7224, 8248, 9528, 10680, 11832, 12576, 13536, 14688,
247 16416, 17568, 19080, 20616, 22152, 23688, 25456, 26416, 30576},
248 {1160, 1544, 1864, 2472, 2984, 3752, 4392, 5160, 5992,
249 6712, 7480, 8504, 9528, 10680, 12216, 12960, 13536, 15264,
250 16416, 18336, 19848, 21384, 22920, 24496, 25456, 26416, 30576},
251 {1192, 1544, 1928, 2536, 3112, 3752, 4584, 5352, 5992,
252 6712, 7480, 8760, 9912, 11064, 12216, 12960, 14112, 15264,
253 16992, 18336, 19848, 21384, 22920, 24496, 26416, 27376, 31704},
254 {1224, 1608, 1992, 2536, 3112, 3880, 4584, 5352, 6200,
255 6968, 7736, 8760, 9912, 11448, 12576, 13536, 14112, 15840,
256 17568, 19080, 20616, 22152, 23688, 25456, 26416, 28336, 32856},
257 {1256, 1608, 2024, 2600, 3240, 4008, 4776, 5544, 6200,
258 6968, 7992, 9144, 10296, 11448, 12960, 13536, 14688, 16416,
259 17568, 19080, 20616, 22920, 24496, 25456, 27376, 28336, 32856},
260 {1256, 1672, 2088, 2664, 3240, 4008, 4776, 5736, 6456,
261 7224, 7992, 9144, 10680, 11832, 12960, 14112, 14688, 16416,
262 18336, 19848, 21384, 22920, 24496, 26416, 28336, 29296, 34008},
263 {1288, 1736, 2088, 2728, 3368, 4136, 4968, 5736, 6456,
264 7480, 8248, 9528, 10680, 12216, 13536, 14688, 15264, 16992,
265 18336, 20616, 22152, 23688, 25456, 27376, 28336, 29296, 35160},
266 {1320, 1736, 2152, 2792, 3496, 4264, 4968, 5992, 6712,
267 7480, 8504, 9528, 11064, 12216, 13536, 14688, 15840, 17568,
268 19080, 20616, 22152, 24496, 25456, 27376, 29296, 30576, 35160},
269 {1352, 1800, 2216, 2856, 3496, 4392, 5160, 5992, 6968,
270 7736, 8504, 9912, 11064, 12576, 14112, 15264, 15840, 17568,
271 19080, 21384, 22920, 24496, 26416, 28336, 29296, 31704, 36696},
272 {1384, 1800, 2216, 2856, 3624, 4392, 5160, 6200, 6968,
273 7992, 8760, 9912, 11448, 12960, 14112, 15264, 16416, 18336,
274 19848, 21384, 22920, 25456, 27376, 28336, 30576, 31704, 36696},
275 {1416, 1864, 2280, 2984, 3624, 4584, 5352, 6200, 7224,
276 7992, 9144, 10296, 11832, 12960, 14688, 15840, 16416, 18336,
277 19848, 22152, 23688, 25456, 27376, 29296, 31704, 32856, 37888},
278 {1416, 1864, 2344, 2984, 3752, 4584, 5352, 6456, 7224,
279 8248, 9144, 10680, 11832, 13536, 14688, 15840, 16992, 19080,
280 20616, 22152, 24496, 26416, 28336, 29296, 31704, 32856, 37888},
281 {1480, 1928, 2344, 3112, 3752, 4776, 5544, 6456, 7480,
282 8248, 9144, 10680, 12216, 13536, 15264, 16416, 16992, 19080,
283 21384, 22920, 24496, 26416, 28336, 30576, 32856, 34008, 39232},
284 {1480, 1992, 2408, 3112, 3880, 4776, 5736, 6712, 7480,
285 8504, 9528, 11064, 12216, 14112, 15264, 16416, 17568, 19848,
286 21384, 22920, 25456, 27376, 29296, 30576, 32856, 34008, 40576},
287 {1544, 1992, 2472, 3240, 4008, 4776, 5736, 6712, 7736,
288 8760, 9528, 11064, 12576, 14112, 15840, 16992, 17568, 19848,
289 22152, 23688, 25456, 27376, 29296, 31704, 34008, 35160, 40576},
290 {1544, 2024, 2536, 3240, 4008, 4968, 5992, 6712, 7736,
291 8760, 9912, 11448, 12576, 14688, 15840, 16992, 18336, 20616,
292 22152, 24496, 26416, 28336, 30576, 31704, 34008, 35160, 40576},
293 {1608, 2088, 2536, 3368, 4136, 4968, 5992, 6968, 7992,
294 9144, 9912, 11448, 12960, 14688, 16416, 17568, 18336, 20616,
295 22920, 24496, 26416, 28336, 30576, 32856, 35160, 36696, 42368},
296 {1608, 2088, 2600, 3368, 4136, 5160, 5992, 6968, 7992,
297 9144, 10296, 11832, 12960, 14688, 16416, 17568, 19080, 20616,
298 22920, 25456, 27376, 29296, 31704, 32856, 35160, 36696, 42368},
299 {1608, 2152, 2664, 3496, 4264, 5160, 6200, 7224, 8248,
300 9144, 10296, 11832, 13536, 15264, 16992, 18336, 19080, 21384,
301 23688, 25456, 27376, 29296, 31704, 34008, 36696, 37888, 43816},
302 {1672, 2152, 2664, 3496, 4264, 5352, 6200, 7224, 8504,
303 9528, 10680, 12216, 13536, 15264, 16992, 18336, 19848, 21384,
304 23688, 25456, 28336, 30576, 32856, 34008, 36696, 37888, 43816},
305 {1672, 2216, 2728, 3624, 4392, 5352, 6456, 7480, 8504,
306 9528, 10680, 12216, 14112, 15840, 17568, 18336, 19848, 22152,
307 24496, 26416, 28336, 30576, 32856, 35160, 36696, 39232, 45352},
308 {1736, 2280, 2792, 3624, 4392, 5544, 6456, 7480, 8760,
309 9912, 11064, 12576, 14112, 15840, 17568, 19080, 19848, 22152,
310 24496, 26416, 29296, 31704, 34008, 35160, 37888, 39232, 45352},
311 {1736, 2280, 2856, 3624, 4584, 5544, 6456, 7736, 8760,
312 9912, 11064, 12576, 14112, 16416, 18336, 19080, 20616, 22920,
313 24496, 27376, 29296, 31704, 34008, 36696, 37888, 40576, 46888},
314 {1800, 2344, 2856, 3752, 4584, 5736, 6712, 7736, 9144,
315 10296, 11448, 12960, 14688, 16416, 18336, 19848, 20616, 22920,
316 25456, 27376, 29296, 31704, 34008, 36696, 39232, 40576, 46888},
317 {1800, 2344, 2856, 3752, 4584, 5736, 6712, 7992, 9144,
318 10296, 11448, 12960, 14688, 16992, 18336, 19848, 21384, 23688,
319 25456, 28336, 30576, 32856, 35160, 37888, 39232, 40576, 48936},
320 {1800, 2408, 2984, 3880, 4776, 5736, 6968, 7992, 9144,
321 10296, 11448, 13536, 15264, 16992, 19080, 20616, 21384, 23688,
322 26416, 28336, 30576, 32856, 35160, 37888, 40576, 42368, 48936},
323 {1864, 2472, 2984, 3880, 4776, 5992, 6968, 8248, 9528,
324 10680, 11832, 13536, 15264, 16992, 19080, 20616, 22152, 24496,
325 26416, 29296, 31704, 34008, 36696, 37888, 40576, 42368, 48936},
326 {1864, 2472, 3112, 4008, 4968, 5992, 6968, 8248, 9528,
327 10680, 11832, 13536, 15264, 17568, 19848, 20616, 22152, 24496,
328 27376, 29296, 31704, 34008, 36696, 39232, 42368, 43816, 51024},
329 {1928, 2536, 3112, 4008, 4968, 5992, 7224, 8504, 9528,
330 11064, 12216, 14112, 15840, 17568, 19848, 21384, 22152, 24496,
331 27376, 29296, 31704, 35160, 36696, 39232, 42368, 43816, 51024},
332 {1928, 2536, 3112, 4136, 4968, 6200, 7224, 8504, 9912,
333 11064, 12216, 14112, 15840, 18336, 19848, 21384, 22920, 25456,
334 27376, 30576, 32856, 35160, 37888, 40576, 42368, 43816, 52752},
335 {1992, 2600, 3240, 4136, 5160, 6200, 7480, 8760, 9912,
336 11064, 12576, 14112, 16416, 18336, 20616, 22152, 22920, 25456,
337 28336, 30576, 32856, 35160, 37888, 40576, 43816, 45352, 52752},
338 {1992, 2600, 3240, 4264, 5160, 6200, 7480, 8760, 9912,
339 11448, 12576, 14688, 16416, 18336, 20616, 22152, 23688, 26416,
340 28336, 30576, 34008, 36696, 39232, 40576, 43816, 45352, 52752},
341 {2024, 2664, 3240, 4264, 5160, 6456, 7736, 8760, 10296,
342 11448, 12960, 14688, 16416, 19080, 20616, 22152, 23688, 26416,
343 29296, 31704, 34008, 36696, 39232, 42368, 45352, 46888, 55056},
344 {2088, 2728, 3368, 4392, 5352, 6456, 7736, 9144, 10296,
345 11832, 12960, 14688, 16992, 19080, 21384, 22920, 24496, 26416,
346 29296, 31704, 34008, 36696, 40576, 42368, 45352, 46888, 55056},
347 {2088, 2728, 3368, 4392, 5352, 6712, 7736, 9144, 10680,
348 11832, 12960, 15264, 16992, 19080, 21384, 22920, 24496, 27376,
349 29296, 32856, 35160, 37888, 40576, 43816, 45352, 46888, 55056},
350 {2088, 2792, 3368, 4392, 5544, 6712, 7992, 9144, 10680,
351 11832, 13536, 15264, 17568, 19848, 22152, 23688, 24496, 27376,
352 30576, 32856, 35160, 37888, 40576, 43816, 46888, 48936, 55056},
353 {2152, 2792, 3496, 4584, 5544, 6712, 7992, 9528, 10680,
354 12216, 13536, 15840, 17568, 19848, 22152, 23688, 25456, 27376,
355 30576, 32856, 35160, 39232, 42368, 43816, 46888, 48936, 57336},
356 {2152, 2856, 3496, 4584, 5544, 6968, 8248, 9528, 11064,
357 12216, 13536, 15840, 17568, 19848, 22152, 23688, 25456, 28336,
358 30576, 34008, 36696, 39232, 42368, 45352, 46888, 48936, 57336},
359 {2216, 2856, 3496, 4584, 5736, 6968, 8248, 9528, 11064,
360 12576, 14112, 15840, 18336, 20616, 22920, 24496, 25456, 28336,
361 31704, 34008, 36696, 39232, 42368, 45352, 48936, 51024, 57336},
362 {2216, 2856, 3624, 4776, 5736, 6968, 8248, 9912, 11064,
363 12576, 14112, 16416, 18336, 20616, 22920, 24496, 26416, 29296,
364 31704, 34008, 36696, 40576, 43816, 45352, 48936, 51024, 59256},
365 {2280, 2984, 3624, 4776, 5736, 7224, 8504, 9912, 11448,
366 12960, 14112, 16416, 18336, 20616, 22920, 24496, 26416, 29296,
367 31704, 35160, 37888, 40576, 43816, 46888, 48936, 51024, 59256},
368 {2280, 2984, 3624, 4776, 5992, 7224, 8504, 9912, 11448,
369 12960, 14688, 16416, 19080, 21384, 23688, 25456, 26416, 29296,
370 32856, 35160, 37888, 40576, 43816, 46888, 51024, 52752, 59256},
371 {2280, 2984, 3752, 4776, 5992, 7224, 8760, 10296, 11448,
372 12960, 14688, 16992, 19080, 21384, 23688, 25456, 27376, 30576,
373 32856, 35160, 39232, 42368, 45352, 46888, 51024, 52752, 61664},
374 {2344, 3112, 3752, 4968, 5992, 7480, 8760, 10296, 11832,
375 13536, 14688, 16992, 19080, 21384, 24496, 25456, 27376, 30576,
376 32856, 36696, 39232, 42368, 45352, 48936, 51024, 52752, 61664},
377 {2344, 3112, 3880, 4968, 5992, 7480, 8760, 10296, 11832,
378 13536, 14688, 16992, 19080, 22152, 24496, 26416, 27376, 30576,
379 34008, 36696, 39232, 42368, 45352, 48936, 52752, 55056, 61664},
380 {2408, 3112, 3880, 4968, 6200, 7480, 9144, 10680, 12216,
381 13536, 15264, 17568, 19848, 22152, 24496, 26416, 28336, 30576,
382 34008, 36696, 40576, 43816, 46888, 48936, 52752, 55056, 63776},
383 {2408, 3240, 3880, 5160, 6200, 7736, 9144, 10680, 12216,
384 13536, 15264, 17568, 19848, 22152, 25456, 26416, 28336, 31704,
385 34008, 37888, 40576, 43816, 46888, 51024, 52752, 55056, 63776},
386 {2472, 3240, 4008, 5160, 6200, 7736, 9144, 10680, 12216,
387 14112, 15264, 17568, 19848, 22920, 25456, 27376, 28336, 31704,
388 35160, 37888, 40576, 43816, 46888, 51024, 52752, 55056, 63776},
389 {2472, 3240, 4008, 5160, 6456, 7736, 9144, 11064, 12576,
390 14112, 15840, 18336, 20616, 22920, 25456, 27376, 29296, 31704,
391 35160, 37888, 42368, 45352, 48936, 51024, 55056, 57336, 66592},
392 {2536, 3240, 4008, 5352, 6456, 7992, 9528, 11064, 12576,
393 14112, 15840, 18336, 20616, 22920, 25456, 27376, 29296, 32856,
394 35160, 39232, 42368, 45352, 48936, 51024, 55056, 57336, 66592},
395 {2536, 3368, 4136, 5352, 6456, 7992, 9528, 11064, 12576,
396 14112, 15840, 18336, 20616, 23688, 26416, 28336, 29296, 32856,
397 36696, 39232, 42368, 45352, 48936, 52752, 55056, 57336, 66592},
398 {2536, 3368, 4136, 5352, 6456, 7992, 9528, 11448, 12960,
399 14688, 16416, 18336, 21384, 23688, 26416, 28336, 30576, 32856,
400 36696, 39232, 42368, 46888, 48936, 52752, 57336, 59256, 68808},
401 {2600, 3368, 4136, 5352, 6712, 8248, 9528, 11448, 12960,
402 14688, 16416, 19080, 21384, 23688, 26416, 28336, 30576, 34008,
403 36696, 40576, 43816, 46888, 51024, 52752, 57336, 59256, 68808},
404 {2600, 3496, 4264, 5544, 6712, 8248, 9912, 11448, 12960,
405 14688, 16416, 19080, 21384, 24496, 27376, 29296, 30576, 34008,
406 37888, 40576, 43816, 46888, 51024, 55056, 57336, 59256, 68808},
407 {2664, 3496, 4264, 5544, 6712, 8248, 9912, 11448, 13536,
408 15264, 16992, 19080, 21384, 24496, 27376, 29296, 30576, 34008,
409 37888, 40576, 43816, 46888, 51024, 55056, 57336, 61664, 71112},
410 {2664, 3496, 4264, 5544, 6968, 8504, 9912, 11832, 13536,
411 15264, 16992, 19080, 22152, 24496, 27376, 29296, 31704, 35160,
412 37888, 40576, 45352, 48936, 51024, 55056, 59256, 61664, 71112},
413 {2728, 3496, 4392, 5736, 6968, 8504, 10296, 11832, 13536,
414 15264, 16992, 19848, 22152, 25456, 28336, 29296, 31704, 35160,
415 37888, 42368, 45352, 48936, 52752, 55056, 59256, 61664, 71112},
416 {2728, 3624, 4392, 5736, 6968, 8760, 10296, 11832, 13536,
417 15264, 16992, 19848, 22152, 25456, 28336, 30576, 31704, 35160,
418 39232, 42368, 45352, 48936, 52752, 57336, 59256, 61664, 73712},
419 {2728, 3624, 4392, 5736, 6968, 8760, 10296, 12216, 14112,
420 15840, 17568, 19848, 22920, 25456, 28336, 30576, 31704, 35160,
421 39232, 42368, 46888, 48936, 52752, 57336, 61664, 63776, 73712},
422 {2792, 3624, 4584, 5736, 7224, 8760, 10296, 12216, 14112,
423 15840, 17568, 19848, 22920, 25456, 28336, 30576, 32856, 36696,
424 39232, 43816, 46888, 51024, 55056, 57336, 61664, 63776, 75376},
425 {2792, 3752, 4584, 5992, 7224, 8760, 10680, 12216, 14112,
426 15840, 17568, 20616, 22920, 26416, 29296, 30576, 32856, 36696,
427 40576, 43816, 46888, 51024, 55056, 57336, 61664, 63776, 75376},
428 {2856, 3752, 4584, 5992, 7224, 9144, 10680, 12576, 14112,
429 16416, 18336, 20616, 23688, 26416, 29296, 31704, 32856, 36696,
430 40576, 43816, 46888, 51024, 55056, 59256, 61664, 63776, 75376},
431 {2856, 3752, 4584, 5992, 7480, 9144, 10680, 12576, 14688,
432 16416, 18336, 20616, 23688, 26416, 29296, 31704, 34008, 36696,
433 40576, 43816, 48936, 51024, 55056, 59256, 63776, 66592, 75376},
434 {2856, 3752, 4584, 5992, 7480, 9144, 10680, 12576, 14688,
435 16416, 18336, 21384, 23688, 26416, 29296, 31704, 34008, 37888,
436 40576, 45352, 48936, 52752, 57336, 59256, 63776, 66592, 75376},
437 {2984, 3880, 4776, 6200, 7480, 9144, 11064, 12960, 14688,
438 16416, 18336, 21384, 23688, 27376, 30576, 31704, 34008, 37888,
439 42368, 45352, 48936, 52752, 57336, 59256, 63776, 66592, 75376},
440 {2984, 3880, 4776, 6200, 7480, 9528, 11064, 12960, 14688,
441 16992, 18336, 21384, 24496, 27376, 30576, 32856, 34008, 37888,
442 42368, 45352, 48936, 52752, 57336, 61664, 63776, 66592, 75376},
443 {2984, 3880, 4776, 6200, 7736, 9528, 11064, 12960, 15264,
444 16992, 19080, 21384, 24496, 27376, 30576, 32856, 35160, 39232,
445 42368, 46888, 48936, 52752, 57336, 61664, 66592, 68808, 75376},
446 {2984, 4008, 4776, 6200, 7736, 9528, 11448, 12960, 15264,
447 16992, 19080, 22152, 24496, 27376, 30576, 32856, 35160, 39232,
448 42368, 46888, 51024, 55056, 59256, 61664, 66592, 68808, 75376},
449 {2984, 4008, 4968, 6456, 7736, 9528, 11448, 13536, 15264,
450 16992, 19080, 22152, 24496, 28336, 31704, 34008, 35160, 39232,
451 43816, 46888, 51024, 55056, 59256, 61664, 66592, 68808, 75376},
452 {3112, 4008, 4968, 6456, 7992, 9528, 11448, 13536, 15264,
453 17568, 19080, 22152, 25456, 28336, 31704, 34008, 35160, 39232,
454 43816, 46888, 51024, 55056, 59256, 63776, 66592, 71112, 75376},
474 "The requested BER in assigning MCS (default is 0.00005).",
477 MakeDoubleChecker<double>())
480 "AMC model used to assign CQI",
483 MakeEnumChecker(LteAmc::MiErrorModel,
"Vienna", LteAmc::PiroEW2010,
"PiroEW2010"));
488 LteAmc::GetCqiFromSpectralEfficiency(
double s)
491 NS_ASSERT_MSG(s >= 0.0,
"negative spectral efficiency = " << s);
502 LteAmc::GetMcsFromCqi(
int cqi)
505 NS_ASSERT_MSG(cqi >= 0 && cqi <= 15,
"CQI must be in [0..15] = " << cqi);
517 LteAmc::GetDlTbSizeFromMcs(
int mcs,
int nprb)
529 LteAmc::GetUlTbSizeFromMcs(
int mcs,
int nprb)
541 LteAmc::GetSpectralEfficiencyFromCqi(
int cqi)
544 NS_ASSERT_MSG(cqi >= 0 && cqi <= 15,
"CQI must be in [0..15] = " << cqi);
554 std::vector<int> cqi;
555 Values::const_iterator it;
557 if (m_amcModel == PiroEW2010)
561 double sinr_ = (*it);
576 double s = log2(1 + (sinr_ / ((-std::log(5.0 * m_ber)) / 1.5)));
578 int cqi_ = GetCqiFromSpectralEfficiency(s);
580 NS_LOG_LOGIC(
" PRB =" << cqi.size() <<
", sinr = " << sinr_
581 <<
" (=" << 10 * std::log10(sinr_) <<
" dB)"
582 <<
", spectral efficiency =" << s <<
", CQI = " << cqi_
583 <<
", BER = " << m_ber);
589 else if (m_amcModel == MiErrorModel)
591 NS_LOG_DEBUG(
this <<
" AMC-VIENNA RBG size " << (uint16_t)rbgSize);
592 NS_ASSERT_MSG(rbgSize > 0,
" LteAmc-Vienna: RBG size must be greater than 0");
593 std::vector<int> rbgMap;
597 rbgMap.push_back(rbId++);
605 tbStats = LteMiErrorModel::GetTbDecodificationStats(
608 (uint16_t)GetDlTbSizeFromMcs(mcs, rbgSize) / 8,
611 if (tbStats.
tbler > 0.1)
621 NS_LOG_DEBUG(
this <<
"\t RBG " << rbId <<
" MCS " << (uint16_t)mcs <<
" TBLER "
624 if ((tbStats.
tbler > 0.1) && (mcs == 0))
641 NS_LOG_DEBUG(
this <<
"\t MCS " << (uint16_t)mcs <<
"-> CQI " << rbgCqi);
643 for (uint8_t j = 0; j < rbgSize; j++)
645 cqi.push_back(rbgCqi);
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Hold variables of type enum.
Implements the Adaptive Modulation And Coding Scheme.
A base class which provides memory management and object aggregation.
Set of values corresponding to a given SpectrumModel.
Values::const_iterator ConstValuesBegin() const
Values::const_iterator ConstValuesEnd() const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static const int TransportBlockSizeTable[110][27]
Table of number of physical resource blocks (NPRB), TBS index (ITBS), and their associated transport ...
static const int McsToItbsUl[29]
Table of MCS index (IMCS) and its TBS index (ITBS).
Ptr< const AttributeChecker > MakeEnumChecker(int v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name.
std::vector< HarqProcessInfoElement_t > HarqProcessInfoList_t
HarqProcessInfoList_t typedef.
static const double SpectralEfficiencyForCqi[16]
Table of CQI index and its spectral efficiency.
static const double SpectralEfficiencyForMcs[32]
Table of MCS index and its spectral efficiency.
static const int McsToItbsDl[29]
Table of MCS index (IMCS) and its TBS index (ITBS).
double tbler
Transport block BLER.