StochasticChannelModel

Package: simu5g.stack.phy.channelmodel

StochasticChannelModel

simple module

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.

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