Package: simu5g.stack.phy.channelmodel
StochasticChannelModel
simple moduleThe full PHY link model: everything between a transmitted air frame and the decision on whether it was received. The channel impairments are modeled statistically -- drawn from the distributions of a 3GPP propagation study, rather than computed from the geometry of an actual environment -- which is what sets this model apart from IdealChannelModel, where there are no impairments at all, only a configured packet error rate.
It covers:
- path loss per deployment scenario, LOS/NLOS state and log-normal shadowing, with the formulas of the 3GPP propagation study selected by pathLossType (TR 36.814, TR 36.873 or TR 38.901);
- multipath fading, Jakes or Rayleigh;
- the antenna pattern attenuation and the link budget (antenna gains, cable loss, noise figures, thermal noise);
- interference from other cells: downlink, uplink, external cells and background cells;
- the assembly of all of the above into a per-band SINR, and the mapping of that SINR onto a block error probability that decides reception.
Only the path loss, LOS probability, shadowing and angular attenuation come from the selected propagation study; everything else is the same whichever study is selected. The Tr36873ChannelModel and Tr38901ChannelModel presets differ from this type only in their pathLossType default.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Known subclasses
| Name | Type | Description |
|---|---|---|
| D2dChannelModel | simple module |
D2D-capable channel model: StochasticChannelModel plus the device-to-device channel math (RSRP/SINR, D2D interference, D2D reception decision). It is the channel model of the D2D NICs on all propagation studies; the pathLossType parameter (inherited from StochasticChannelModel) selects TR 36.814, 36.873 or 38.901. |
| Tr36873ChannelModel | simple module |
StochasticChannelModel preset with the propagation formulas of 3GPP TR 36.873, "Study on 3D channel model for LTE", v12.7.0, December 2017. It differs from its base type only in the pathLossType default; there is no C++ class of its own behind the name. Note that the study supplies the path loss, LOS probability, shadowing and angular attenuation only; the rest of the link model is the same for every propagation study. |
| Tr38901ChannelModel | simple module |
StochasticChannelModel preset with the propagation formulas of 3GPP TR 38.901, "Study on channel model for frequencies from 0.5 to 100 GHz", v16.1.0, December 2019. It differs from its base type only in the pathLossType default; there is no C++ class of its own behind the name. Note that the study supplies the path loss, LOS probability, shadowing and angular attenuation only; the rest of the link model is the same for every propagation study. |
Extends
| Name | Type | Description |
|---|---|---|
| ChannelModelBase | simple module |
This is the base module for developing more realistic models of the radio channel. It primarily provides the initialization of parameters such as the reference to the Component Carrier (CC) and its associated parameters related to the channel model itself. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| binderModule | string | "binder" | |
| cellInfoModule | string | "^.^.cellInfo" |
Optional |
| componentCarrierModule | string | "carrierAggregation.componentCarrier[0]" |
Component carrier for this channel model |
| pathLossType | string | "Tr36814" |
Which 3GPP propagation study supplies the path loss formulas |
| shadowing | bool | true |
Enable/disable shadowing |
| scenario | string | "URBAN_MACROCELL" |
Path loss scenario, in ITU terminology |
| nodebHeight | double | 25m |
eNodeB height |
| buildingHeight | double | 20m |
Building height |
| insideBuilding | bool | false |
Determines if the UE is inside a building |
| useBuildingPenetrationHighLossModel | bool | false |
Enable the high-loss building penetration model (table 7.4.3-2 in TR 38.901); only used with pathLossType="Tr38901" |
| streetWidth | double | 20m | |
| ueHeight | double | 1.5m | |
| tolerateMaxDistViolation | bool | false | |
| useTorus | bool | false | |
| correlationDistance | double | 50m | |
| targetBler | double | 0.01 |
Target BLER used to compute feedback |
| harqReduction | double | 0.2 |
Factor the error probability is multiplied by for each HARQ retransmission |
| antennaGainUe | double | 0dBi |
Antenna gain of the UE |
| antennGainEnB | double | 18dBi |
Antenna gain of the eNodeB |
| antennGainMicro | double | 5dBi |
Antenna gain of the micro node |
| thermalNoise | double | -104.5dBm |
Thermal noise for 10 MHz of bandwidth |
| ueNoiseFigure | double | 7dBm |
UE noise figure |
| bsNoiseFigure | double | 5dBm |
eNodeB noise figure |
| cableLoss | double | 2dB |
Cable loss |
| dynamicLos | bool | false |
Whether LOS/NLOS is drawn per link from the scenario's LOS probability; when false, it is fixed to fixedLos |
| fixedLos | bool | false |
LOS state of every link when dynamicLos is false: true = LOS, false = NLOS |
| fading | bool | true |
Enable/disable fading |
| fadingType | string | "JAKES" |
Fading type (JAKES or RAYLEIGH) |
| numFadingPaths | int | 6 |
If Jakes fading, this parameter specifies the number of paths (tap channel) |
| delayRms | double | 363ns | |
| bgCellInterference | bool | true |
Whether interference from background cells is included in the SINR, in both UL and DL |
| extCellInterference | bool | true |
Whether interference from external cells is included in the DL SINR (TODO possibly obsolete) |
| downlinkInterference | bool | false |
Whether interference from other base stations is included in the DL SINR |
| uplinkInterference | bool | false |
Whether interference from the UEs of other cells is included in the UL SINR |
| enableExtCellLos | bool | true | |
| collectSinrStatistics | bool | true |
Collection of SINR statistics can be disabled because it might be quite time-consuming |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=block/classifier2 | |
| class | StochasticChannelModel |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| rcvdSinrDl |
Statistics |
||
| rcvdSinrUl | |||
| measuredSinrDl | |||
| measuredSinrUl |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| rcvdSinrDl | SINR measured at packet reception, DL | rcvdSinrDl | mean, vector | dB | ||
| rcvdSinrUl | SINR measured at packet reception, UL | rcvdSinrUl | mean, vector | dB | ||
| measuredSinrDl | SINR measured at feedback computation, DL | measuredSinrDl | mean, vector | dB | ||
| measuredSinrUl | SINR measured at feedback computation, UL | measuredSinrUl | mean, vector | dB |
Source code
// // The full PHY link model: everything between a transmitted air frame and the // decision on whether it was received. The channel impairments are modeled // statistically -- drawn from the distributions of a 3GPP propagation study, // rather than computed from the geometry of an actual environment -- which is // what sets this model apart from ~IdealChannelModel, where there are no // impairments at all, only a configured packet error rate. // // It covers: // - path loss per deployment scenario, LOS/NLOS state and log-normal shadowing, // with the formulas of the 3GPP propagation study selected by pathLossType // (TR 36.814, TR 36.873 or TR 38.901); // - multipath fading, Jakes or Rayleigh; // - the antenna pattern attenuation and the link budget (antenna gains, cable // loss, noise figures, thermal noise); // - interference from other cells: downlink, uplink, external cells and // background cells; // - the assembly of all of the above into a per-band SINR, and the mapping of // that SINR onto a block error probability that decides reception. // // Only the path loss, LOS probability, shadowing and angular attenuation come // from the selected propagation study; everything else is the same whichever // study is selected. The ~Tr36873ChannelModel and ~Tr38901ChannelModel presets // differ from this type only in their pathLossType default. // simple StochasticChannelModel extends ChannelModelBase { parameters: @class("StochasticChannelModel"); string pathLossType @enum("Tr36814","Tr36873","Tr38901") = default("Tr36814"); // Which 3GPP propagation study supplies the path loss formulas // Enable/disable shadowing bool shadowing = default(true); // Path loss scenario, in ITU terminology string scenario @enum(INDOOR_HOTSPOT,URBAN_MICROCELL,URBAN_MACROCELL,RURAL_MACROCELL,SUBURBAN_MACROCELL,UNKNOWN_SCENARIO) = default("URBAN_MACROCELL"); // eNodeB height double nodebHeight @unit(m) = default(25m); // Building height double buildingHeight @unit(m) = default(20m); // Determines if the UE is inside a building bool insideBuilding = default(false); // Enable the high-loss building penetration model (table 7.4.3-2 in TR 38.901); only used with pathLossType="Tr38901" bool useBuildingPenetrationHighLossModel = default(false); double streetWidth @unit(m) = default(20m); double ueHeight @unit(m) = default(1.5m); bool tolerateMaxDistViolation = default(false); bool useTorus = default(false); double correlationDistance @unit(m) = default(50m); // Target BLER used to compute feedback double targetBler = default(0.01); // Factor the error probability is multiplied by for each HARQ retransmission double harqReduction = default(0.2); // Antenna gain of the UE double antennaGainUe @unit(dBi) = default(0dBi); // Antenna gain of the eNodeB double antennGainEnB @unit(dBi) = default(18dBi); // Antenna gain of the micro node double antennGainMicro @unit(dBi) = default(5dBi); // Thermal noise for 10 MHz of bandwidth double thermalNoise @unit(dBm) = default(-104.5dBm); // UE noise figure double ueNoiseFigure @unit(dBm) = default(7dBm); // eNodeB noise figure double bsNoiseFigure @unit(dBm) = default(5dBm); // Cable loss double cableLoss @unit(dB) = default(2dB); // Whether LOS/NLOS is drawn per link from the scenario's LOS probability; when false, it is fixed to fixedLos bool dynamicLos = default(false); // LOS state of every link when dynamicLos is false: true = LOS, false = NLOS bool fixedLos = default(false); // Enable/disable fading bool fading = default(true); // Fading type (JAKES or RAYLEIGH) string fadingType @enum(RAYLEIGH,JAKES) = default("JAKES"); // If Jakes fading, this parameter specifies the number of paths (tap channel) int numFadingPaths = default(6); double delayRms @unit(s) = default(363ns); // Whether interference from background cells is included in the SINR, in both UL and DL bool bgCellInterference = default(true); // Whether interference from external cells is included in the DL SINR (TODO possibly obsolete) bool extCellInterference = default(true); // Whether interference from other base stations is included in the DL SINR bool downlinkInterference = default(false); // Whether interference from the UEs of other cells is included in the UL SINR bool uplinkInterference = default(false); bool enableExtCellLos = default(true); // Collection of SINR statistics can be disabled because it might be quite time-consuming bool collectSinrStatistics = default(true); // Statistics @signal[rcvdSinrDl]; @statistic[rcvdSinrDl](title="SINR measured at packet reception, DL"; unit="dB"; source="rcvdSinrDl"; record=mean,vector); @signal[rcvdSinrUl]; @statistic[rcvdSinrUl](title="SINR measured at packet reception, UL"; unit="dB"; source="rcvdSinrUl"; record=mean,vector); @signal[measuredSinrDl]; @statistic[measuredSinrDl](title="SINR measured at feedback computation, DL"; unit="dB"; source="measuredSinrDl"; record=mean,vector); @signal[measuredSinrUl]; @statistic[measuredSinrUl](title="SINR measured at feedback computation, UL"; unit="dB"; source="measuredSinrUl"; record=mean,vector); }File: src/simu5g/stack/phy/channelmodel/StochasticChannelModel.ned