NetSim Source Code Help v14.4
All 13 Components
 
Loading...
Searching...
No Matches
LTENR_PropagationModel.h
1#pragma once
2/************************************************************************************
3* Copyright (C) 2023 *
4* TETCOS, Bangalore. India *
5* *
6* Tetcos owns the intellectual property rights in the Product and its content. *
7* The copying, redistribution, reselling or publication of any or all of the *
8* Product or its content without express prior written consent of Tetcos is *
9* prohibited. Ownership and / or any other right relating to the software and all *
10* intellectual property rights therein shall remain at all times with Tetcos. *
11* *
12* This source code is licensed per the NetSim license agreement. *
13* *
14* No portion of this source code may be used as the basis for a derivative work, *
15* or used, for any purpose other than its intended use per the NetSim license *
16* agreement. *
17* *
18* This source code and the algorithms contained within it are confidential trade *
19* secrets of TETCOS and may not be used as the basis for any other software, *
20* hardware, product or service. *
21* *
22* Author: Dilip Kumar Kundrapu *
23* Standard: TR 38.901(Release 15) *
24* Updated: 27th June, 2019 *
25* ----------------------------------------------------------------------------------*/
26
27#ifndef _NETSIM_LTENR_PROPAGATIONMODEL_H_
28#define _NETSIM_LTENR_PROPAGATIONMODEL_H_
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#pragma region LTENR_LOCATION
34 typedef enum
35 {
36 LTENR_SCENARIO_RMA,
37 LTENR_SCENARIO_UMA,
38 LTENR_SCENARIO_UMI,
39 LTENR_SCENARIO_INH,
40 }LTENR_SCENARIO;
41 static const char* strLTENR_SCENARIO[] =
42 { "RURAL_MACRO","URBAN_MACRO","URBAN_MICRO","INDOOR_OFFICE" };
43
44 typedef enum
45 {
46 LTENR_LOCATION_OUTDOOR,
47 LTENR_LOCATION_INDOOR,
48 }LTENR_LOCATION;
49
50 typedef enum
51 {
52 LTENR_INH_MIXED_OFFICE,
53 LTENR_INH_OPEN_OFFICE,
54 }LTENR_INH_TYPE;
55 static const char* strLTENR_INH_TYPE[] =
56 { "MIXED_OFFICE","OPEN_OFFICE" };
57
58 typedef enum
59 {
60 LTENR_STATE_LOS,
61 LTENR_STATE_NLOS,
62 }LTENR_LOS_NLOS_STATE;
63 static const char* strLTENR_STATE[] =
64 { "LOS","NLOS" };
65
66 typedef enum
67 {
68 LTENR_LOS_MODE_TR38_901,
69 LTENR_LOS_MODE_USER_DEFINED,
70 }LTENR_LOS_MODE;
71 static const char* strLTENR_LOS_MODE[] =
72 { "3GPPTR38.901-Table7.4.2-1", "USER_DEFINED" };
73#pragma endregion
74
75#pragma region LTENR_PROPAGATION_MODEL_ENUM
76 typedef enum
77 {
78 LTENR_PATHLOSS_MODEL_NONE,
79 LTENR_PATHLOSS_MODEL_3GPP38_901_7_4_1,
80 LTENR_PATHLOSS_MODEL_LOG_DISTANCE,
81 LTENR_PATHLOSS_MODEL_MATLAB,
82 LTENR_PATHLOSS_MODEL_FILEBASED,
83 }LTENR_PATHLOSS_MODEL;
84 static const char* strLTENR_PATHLOSS_MODEL[] =
85 {"NONE","3GPPTR38.901-7.4.1","LOG_DISTANCE","Matlab","File"};
86
87 typedef enum
88 {
89 LTENR_SHADOWFADING_MODEL_NONE,
90 LTENR_SHADOWFADING_MODEL_3GPP38_901_7_4_1,
91 LTENR_SHADOWFADING_MODEL_LOGNORMAL,
92 LTENR_SHADOWFADING_MODEL_MATLAB,
93 LTENR_SHADOWFADING_MODEL_FILEBASED,
94 }LTENR_SHADOWFADING_MODEL;
95 static const char* strLTENR_SHADOWFADING_MODEL[] =
96 { "NONE","3GPPTR38.901-7.4.1","LOGNORMAL","Matlab","File" };
97
98 typedef enum
99 {
100 LTENR_FASTFADING_MODEL_NONE,
101 LTENR_FASTFADING_MODEL_NO_FADING_MIMO_UNIT_GAIN,
102 LTENR_FASTFADING_MODEL_NO_FADING_MIMO_ARRAY_GAIN,
103 LTENR_FASTFADING_MODEL_AWGN_WITH_RAYLEIGH_FADING,
104 LTENR_FASTFADING_MODEL_AWGN_WITH_RICIAN_FADING,
105 LTENR_FASTFADING_MODEL_MATLAB,
106 LTENR_FASTFADING_MODEL_FILEBASED,
107 }LTENR_FASTFADING_MODEL;
108 static const char* strLTENR_FASTFADING_MODEL[] =
109 { "NO_FADING","NO_FADING_MIMO_UNIT_GAIN","NO_FADING_MIMO_ARRAY_GAIN","RAYLEIGH_WITH_EIGEN_BEAMFORMING","RICIAN_WITH_EIGEN_BEAMFORMING","Matlab","File" };
110
111 typedef enum
112 {
113 LTENR_CHANNEL_RANK_MAX_RANK,
114 LTENR_CHANNEL_RANK_MAX_RATE
115 }LTENR_CHANNEL_RANK;
116 static const char* strLTENR_CHANNEL_RANK[] =
117 { "MAX RATE","MAX RANK"};
118
119
120 typedef enum
121 {
122 LTENR_O2IBUILDINGPENETRATION_MODEL_NONE,
123 LTENR_O2IBUILDINGPENETRATION_MODEL_LOW_LOSS,
124 LTENR_O2IBUILDINGPENETRATION_MODEL_HIGH_LOSS,
125 LTENR_O2IBUILDINGPENETRATION_MODEL_MATLAB,
126 LTENR_O2IBUILDINGPENETRATION_MODEL_FILEBASED,
127 }LTENR_O2IBUILDINGPENETRATION_MODEL;
128 static const char* strLTENR_O2IBUILDINGPENETRATION_MODEL[] =
129 { "NONE","LOW_LOSS_MODEL","HIGH_LOSS_MODEL","MATLAB","FILEBAED" };
130
131 typedef enum
132 {
133 LTENR_ADDITIONAL_LOSS_NONE,
134 LTENR_ADDITIONAL_LOSS_MATLAB,
135 }LTENR_ADDITIONAL_LOSS;
136 static const char* strLTENR_ADDITIONAL_LOSS[] =
137 { "NONE","MATLAB" };
138
139 typedef enum
140 {
141 MATLAB_LOSSMODEL_NONE,
142 MATLAB_LOSSMODEL_RAIN,
143 MATLAB_LOSSMODEL_FOG,
144 MATLAB_LOSSMODEL_GAS,
145 }MATLAB_LOSSMODEL;
146 static const char* strMATLAB_LOSSMODEL[] =
147 {"none","rain","fog","gas"};
148#pragma endregion
149
150#pragma region NTN_PROPAGATION_MODEL_ENUM
151
152 typedef enum
153 {
154 NTN_STATE_LOS,
155 NTN_STATE_NLOS,
156 }NTN_LOS_NLOS_STATE;
157 static const char* strNTN_STATE[] =
158 { "LOS","NLOS" };
159
160 typedef enum
161 {
162 NTN_LOS_MODE_TR38_811,
163 NTN_LOS_MODE_USER_DEFINED,
164 }NTN_LOS_MODE;
165 static const char* strNTN_LOS_MODE[] =
166 { "3GPPTR38.811","User_defined" };
167
168 typedef enum
169 {
170 NTN_PATHLOSS_MODEL_NONE,
171 NTN_PATHLOSS_MODEL_FREE_SPACE,
172 }NTN_PATHLOSS_MODEL;
173 static const char* strNTN_PATHLOSS_MODEL[] =
174 { "None","Free_space" };
175
176 typedef enum
177 {
178 NTN_SHADOWFADING_MODEL_NONE,
179 NTN_SHADOWFADING_MODEL_LOGNORMAL,
180 }NTN_SHADOWFADING_MODEL;
181 static const char* strNTN_SHADOWFADING_MODEL[] =
182 { "None","Log_normal" };
183
184 typedef enum
185 {
186 NTN_CLUTTERLOSS_MODEL_NONE,
187 NTN_CLUTTERLOSS_MODEL_TR38_811,
188 }NTN_CLUTTERLOSS_MODEL;
189 static const char* strNTN_CLUTTERLOSS_MODEL[] =
190 { "None","TR38_811" };
191
192
193 typedef enum // Log Normal Shadowing Standard deviation mode selection
194 {
195 NTN_SD_SELECTION_TR38_811,
196 NTN_SD_SELECTION_USER_DEFINED,
197 }NTN_SD_SELECTION;
198 static const char* strNTN_SD_SELECTION[] =
199 { "3GPPTR_38.811","USER_DEFINED" };
200
201 typedef enum
202 {
203 NTN_FREQUENCY_REUSE_FACTOR_1,
204 NTN_FREQUENCY_REUSE_FACTOR_3,
205 NTN_USER_DEFINED
206 }NTN_FREQUENCY_REUSE_FACTOR;
207 static const char* strNTN_FREQUENCY_REUSE_FACTOR[] =
208 { "FR1","FR3",""};
209
210 typedef enum {
211 NTN_NONE,
212 NTN_EXACT_GEOMETRIC_MODEL,
213 NTN_CIR
214 }NTN_CELL_INTERFERENCEACE_TYPE;
215 static const char* strNTN_CELL_INTERFERENCEACE_TYPE[] = { "None","Exact Geometric Model","CIR Based" };
216
217 typedef struct stru_BeamNode {
218 UINT beamId;
219 NetSim_COORDINATES* beamCoord;
220 UINT beamChannelId;
221 struct stru_BeamNode* next; // Pointer to the next node
222 } BeamNode, * ptrBeamNode;
223
224 typedef enum
225 {
226 NTN_SCENARIO_DENSE_URBAN,
227 NTN_SCENARIO_URBAN,
228 NTN_SCENARIO_RURAL,
229 }NTN_SCENARIO;
230 static const char* strNTN_SCENARIO[] =
231 { "Dense_urban","Urban","Rural" };
232
233 typedef enum
234 {
235 NTN_BAND_S,
236 NTN_BAND_KA,
237 }NTN_CARRIER_BAND;
238 static const char* strNTN_CARRIER_BAND[] =
239 { "S","KA" };
240
241#pragma endregion
242
243#pragma region PROPAGATION_CONFIG
245 {
246 bool isPathLossEnabled;
247 bool isShadowFadingEnabled;
248 bool isFastFadingEnabled;
249 bool isO2IBuildingPenetrationLossEnabled;
250
251 LTENR_PATHLOSS_MODEL pathLossModel;
252 double pathLossExponent;
253 double d0;
254 LTENR_SHADOWFADING_MODEL shadowFadingModel;
255 double standardDeviation;
256 bool iSet;
257 double Gset;
258 LTENR_FASTFADING_MODEL fastFadingModel;
259 LTENR_CHANNEL_RANK channelRank;
260 LTENR_O2IBUILDINGPENETRATION_MODEL o2iBuildingPenetrationModel;
261
262 LTENR_ADDITIONAL_LOSS additionalLossModel;
263 LTENR_CELL_INTERFERENCEACE_TYPE DownlinkInterferenceModel;
264 LTENR_CELL_INTERFERENCEACE_TYPE UplinkInterferenceModel;
265 double Uplink_IoT_dB;
266 double Downlink_IoT_dB;
267 /// In Case of Matlab model
268 MATLAB_LOSSMODEL matlabLossModel;
269 //for Rain model
270 double rainRate; // mm/hr
271 double tiltAngle; //tau. [-90,90] degree
272 double elevationAngle; //elev [-90,90] degree
273 double exceedancePercentageOfRainfall; //pct [0.001,1]
274 //For Gas and fog Model
275 double temperature; // in celcius
276 double airPressure; //in pascals(pa)
277 double waterDensity; //in grams per cubic meter(g/m3)
278
279 /// For 3GPP TR38.901-7.4.1 Based Path loss
280 LTENR_SCENARIO outScenario;
281 LTENR_SCENARIO inScenario;
282 LTENR_INH_TYPE indoor_type;
283 LTENR_LOS_MODE los_mode;
284 LTENR_LOS_NLOS_STATE state;
285 double los_probability;
286 double gNB_height;
287 double UE_height;
288 double buildings_height;
289 double street_width;
290
291 /// For Log normal shadowfading model
293
294 /// For AWGN-RAYLEIGH/Rician Fading
296 double K_factor; // Rician K factor
297
298 /// Transmitter power
300 double txPower_mw;
301 }LTENR_PROPAGATIONCONFIG, * ptrLTENR_PROPAGATIONCONFIG;
302
304 {
305 UINT ntnId;
306 UINT ntnIf;
307
308 bool isPathLossEnabled;
309 bool isShadowFadingEnabled;
310
311 NTN_PATHLOSS_MODEL pathLossModel;
312
313 NTN_CLUTTERLOSS_MODEL clutterlossModel;
314 double additionalLoss;
315 NTN_SHADOWFADING_MODEL shadowFadingModel;
316 NTN_SD_SELECTION standardDeviationSelection;
317 double standardDeviation;
318 struct {
319 bool isConstructiveShadow;
320 double Gset;
321 double Iset;
322 }SHADOWVAR;
323
324 NTN_SCENARIO outScenario;
325 NTN_LOS_MODE los_mode;
326 NTN_LOS_NLOS_STATE state;
327 NTN_CARRIER_BAND carrierBand;
328 double los_probability;
329
330 double noiseFigure; //dB
331 double eirpDensity;
332 double eirp_dBW;
333
334 /// Transmitter power
335 double txPower_dbm;
336 double txPower_mw;
337
338 NTN_CELL_INTERFERENCEACE_TYPE interferenceModel;
339 double carrier_InterferenceRatio;
340 UINT beamCount;
341 double thermalNoise_dB;
342
343 UINT channelCount;
344 NTN_FREQUENCY_REUSE_FACTOR ntnFR_factor;
345 double guardBand_MHz;
346 double channelBandwidth;
347
348 double beamRadius;
349 double maxAntennaGain;
350 double theta3db;
351 double antennaAperture;
352 ptrBeamNode beamList;
353
354 }NTN_PROPAGATIONCONFIG, * ptrNTN_PROPAGATIONCONFIG;
355#pragma endregion
356
357#ifdef __cplusplus
358}
359#endif
360#endif /* _NETSIM_LTENR_PROPAGATIONMODEL_H_ */
MATLAB_LOSSMODEL matlabLossModel
In Case of Matlab model.
char * shadowFadingStdDeviationModel
For Log normal shadowfading model.
LTENR_SCENARIO outScenario
For 3GPP TR38.901-7.4.1 Based Path loss.
double txPower_dbm
Transmitter power.
double coherenceTime
For AWGN-RAYLEIGH/Rician Fading.
double txPower_dbm
Transmitter power.