3GPP Cluster Delay Line Model

Within this module, HermesPy implements the 3GPP standard for cluster delay line models as defined in Study on channel model for frequencies from 0.5 to 100 GHz1. For a comprehensive description of all the parameters involved, please refer to the standard document.

The abstract base class ClusterDelayLineBase defines all required parameters as abstrat properties and is required to be implemented by each specific cluster delay line model. HermesPy features the full customizable model ClusterDelayLine as well as implementations describing standard-compliant benchmark scenarios

Model

Line Of Sight

No Line Of Sight

Outside To Inside

Indoor Factory

IndoorFactoryLineOfSight

IndoorFactoryNoLineOfSight

Undefined

Indoor Office

IndoorOfficeLineOfSight

IndoorOfficeNoLineOfSight

Undefined

Rural Macrocells

RuralMacrocellsLineOfSight

RuralMacrocellsNoLineOfSight

RuralMacrocellsOutsideToInside

Street Canyhon

StreetCanyonLineOfSight

StreetCanyonNoLineOfSight

StreetCanyonOutsideToInside

Urban Macrocells

UrbanMacrocellsLineOfSight

UrbanMacrocellsNoLineOfSight

UrbanMacrocellsOutsideToInside

with pre-defined parameters. In general, the HermesPy cluster delay line implementation mixes deterministic with statistical information: Devices linked by cluster delay line models are required to specify their assumed positions and orientations, since the specular line of sight ray components are deterministic.

class DelayNormalization(value)

Bases: enum.Enum

Normalization routine applied to a set of sampled delays.

Configuration option to :class:.ClusterDelayLineBase models.

ZERO = 0

Normalize the delays, so that the minimal delay is zero

TOF = 1

The minimal delay is the time of flight between two devices

NONE = 2

No delay normalization is applied.

Only relevant for debugging purposes.

class ClusterDelayLineBase(delay_normalization=DelayNormalization.ZERO, **kwargs)

Bases: hermespy.channel.channel.Channel

Parameters

delay_normalization (DelayNormalization, optional) – The delay normalization routine applied during channel sampling.

delay_normalization: DelayNormalization

The delay normalization routine applied during channel sampling.

abstract property line_of_sight: bool

Does this model assume direct line of sight between the two devices?

Referred to as \(LOS\) within the standard.

Returns

Line of sight indicator.

Return type

bool

abstract property delay_spread_mean: float

Mean of the cluster delay spread.

The spread realization and its mean are referred to as \(\mathrm{DS}\) and \(\mu_{\mathrm{lgDS}}\) within the the standard, respectively.

Returns

Mean delay spread in seconds.

Return type

float

abstract property delay_spread_std: float

Standard deviation of the cluster delay spread.

The spread realization and its standard deviation are referred to as \(\mathrm{DS}\) and \(\sigma_{\mathrm{lgDS}}\) within the the standard, respectively.

Returns

Delay spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property aod_spread_mean: float

Mean of the Azimuth Angle-of-Departure spread.

The spread realization and its mean are referred to as \(\mathrm{ASD}\) and \(\mu_{\mathrm{lgASD}}\) within the the standard, respectively.

Returns

Mean angle spread in seconds

Return type

float

abstract property aod_spread_std: float

Standard deviation of the Azimuth Angle-of-Departure spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ASD}\) and \(\sigma_{\mathrm{lgASD}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property aoa_spread_mean: float

Mean of the Azimuth Angle-of-Arriaval spread.

The spread realization and its mean are referred to as \(\mathrm{ASA}\) and \(\mu_{\mathrm{lgASA}}\) within the the standard, respectively.

Returns

Mean angle spread in seconds

Return type

float

abstract property aoa_spread_std: float

Standard deviation of the Azimuth Angle-of-Arrival spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ASA}\) and \(\sigma_{\mathrm{lgASA}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property zoa_spread_mean: float

Mean of the Zenith Angle-of-Arriaval spread.

The spread realization and its mean are referred to as \(\mathrm{ZSA}\) and \(\mu_{\mathrm{lgZSA}}\) within the the standard, respectively.

Returns

Mean angle spread in seconds

Return type

float

abstract property zoa_spread_std: float

Standard deviation of the Zenith Angle-of-Arrival spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ZSA}\) and \(\sigma_{\mathrm{lgZSA}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property zod_spread_mean: float

Mean of the Zenith Angle-of-Departure spread.

The spread realization and its mean are referred to as \(\mathrm{ZOD}\) and \(\mu_{\mathrm{lgZSD}}\) within the the standard, respectively.

Returns

Mean angle spread in degrees

Return type

float

abstract property zod_spread_std: float

Standard deviation of the Zenith Angle-of-Departure spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ZOD}\) and \(\sigma_{\mathrm{lgZOD}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in degrees.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property zod_offset: float

Offset between Zenith Angle-of-Arrival and Angle-of-Departure.

The offset is referred to as \(\mu_{\mathrm{offset,ZOD}}\) within the standard.

Returns

The offset in degrees.

Return type

float

abstract property rice_factor_mean: float

Mean of the rice factor distribution.

The rice factor realization and its mean are referred to as \(K\) and \(\mu_K\) within the the standard, respectively.

Returns

Rice factor mean in dB.

Return type

float

abstract property rice_factor_std: float

Standard deviation of the rice factor distribution.

The rice factor realization and its standard deviation are referred to as \(K\) and \(\sigma_K\) within the the standard, respectively.

Returns

Rice factor standard deviation in dB.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property delay_scaling: float

Delay scaling proportionality factor

Referred to as \(r_{\tau}\) within the standard.

Returns

Scaling factor.

Return type

float

Raises

ValueError – If scaling factor is smaller than one.

abstract property cross_polarization_power_mean: float

Mean of the cross-polarization power.

The cross-polarization power and its mean are referred to as \(\mathrm{XPR}\) and \(\mu_{\mathrm{XPR}}\) within the the standard, respectively.

Returns

Mean power in dB.

Return type

float

abstract property cross_polarization_power_std: float

Standard deviation of the cross-polarization power.

The cross-polarization power and its standard deviation are referred to as \(\mathrm{XPR}\) and \(\sigma_{\mathrm{XPR}}\) within the the standard, respectively.

Returns

Power standard deviation in dB.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

abstract property num_clusters: int

Number of clusters.

Referred to as \(M\) within the standard.

Returns

Number of clusters.

Return type

int

Raises

ValueError – If the number of clusters is smaller than one.

abstract property num_rays: int

Number of rays per cluster.

Referred to as \(N\) within the standard.

Returns

Number of rays.

Return type

int

Raises

ValueError – If the number of clusters is smaller than one.

abstract property cluster_delay_spread: float

Delay spread within an individual cluster.

Referred to as \(c_{DS}\) within the standard.

Returns

Delay spread in seconds.

Return type

float

Raises

ValueError – If spread is smaller than zero.

abstract property cluster_aod_spread: float

Azimuth Angle-of-Departure spread within an individual cluster.

Referred to as \(c_{ASD}\) within the standard.

Returns

Angle spread in degrees.

Return type

float

Raises

ValueError – If spread is smaller than zero.

abstract property cluster_aoa_spread: float

Azimuth Angle-of-Arrival spread within an individual cluster.

Referred to as \(c_{ASA}\) within the standard.

Returns

Angle spread in degrees.

Return type

float

Raises

ValueError – If spread is smaller than zero.

abstract property cluster_zoa_spread: float

Zenith Angle-of-Arrival spread within an individual cluster.

Referred to as \(c_{ZSA}\) within the standard.

Returns

Angle spread in degrees.

Return type

float

Raises

ValueError – If spread is smaller than zero.

abstract property cluster_shadowing_std: float

Standard deviation of the cluster shadowing.

Referred to as \(\zeta\) within the the standard.

Returns

Cluster shadowing standard deviation.

Return type

float

Raises

ValueError – If the deviation is smaller than zero.

impulse_response(num_samples, sampling_rate)

Sample a new channel impulse response.

Note that this is the core routine from which propagate will create the channel state.

Parameters
  • num_samples (int) – Number of samples within the impulse response.

  • sampling_rate (float) – The rate at which the delay taps will be sampled, i.e. the delay resolution.

Returns

Impulse response in all number_rx_antennas x number_tx_antennas. 4-dimensional array of size T x number_rx_antennas x number_tx_antennas x (L+1) where L is the maximum path delay (in samples). For the ideal channel in the base class, L = 0.

Return type

np.ndarray

class ClusterDelayLine(line_of_sight=True, delay_spread_mean=7.14, delay_spread_std=0.38, aod_spread_mean=1.21, aod_spread_std=0.41, aoa_spread_mean=1.73, aoa_spread_std=0.28, zoa_spread_mean=0.73, zoa_spread_std=0.34, zod_spread_mean=0.1, zod_spread_std=0.0, zod_offset=0.0, rice_factor_mean=9.0, rice_factor_std=5.0, delay_scaling=1.0, cross_polarization_power_mean=9.0, cross_polarization_power_std=3.0, num_clusters=12, num_rays=20, cluster_delay_spread=5e-09, cluster_aod_spread=5.0, cluster_aoa_spread=17.0, cluster_zoa_spread=7.0, cluster_shadowing_std=3.0, **kwargs)

Bases: hermespy.channel.cluster_delay_lines.ClusterDelayLineBase, hermespy.core.factory.Serializable

3GPP Cluster Delay Line Channel Model.

Parameters
  • num_clusters (int, optional) – Number of generated clusters per channel sample.

  • delay_spread (float, optional) – Root-Mean-Square spread of the cluster delay in seconds.

  • delay_scaling (float, optional) – Delay distribution proportionality factor.

  • rice_factor_mean (float, optional) – Mean of the rice factor K.

  • rice_factor_std (float, optional) – Standard deviation of the rice factor K.

  • cluster_shadowing_std (float, optional) – Cluster shadowing standard deviation in dB.

  • line_of_sight (bool, optional) – Is this model a line-of-sight model?

yaml_tag: str = 'ClusterDelayLine'

YAML serialization tag.

property line_of_sight: bool

Does this model assume direct line of sight between the two devices?

Referred to as \(LOS\) within the standard.

Returns

Line of sight indicator.

Return type

bool

property delay_spread_mean: float

Mean of the cluster delay spread.

The spread realization and its mean are referred to as \(\mathrm{DS}\) and \(\mu_{\mathrm{lgDS}}\) within the the standard, respectively.

Returns

Mean delay spread in seconds.

Return type

float

property delay_spread_std: float

Standard deviation of the cluster delay spread.

The spread realization and its standard deviation are referred to as \(\mathrm{DS}\) and \(\sigma_{\mathrm{lgDS}}\) within the the standard, respectively.

Returns

Delay spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property aod_spread_mean: float

Mean of the Azimuth Angle-of-Departure spread.

The spread realization and its mean are referred to as \(\mathrm{ASD}\) and \(\mu_{\mathrm{lgASD}}\) within the the standard, respectively.

Returns

Mean angle spread in seconds

Return type

float

property aod_spread_std: float

Standard deviation of the Azimuth Angle-of-Departure spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ASD}\) and \(\sigma_{\mathrm{lgASD}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property aoa_spread_mean: float

Mean of the Azimuth Angle-of-Arriaval spread.

The spread realization and its mean are referred to as \(\mathrm{ASA}\) and \(\mu_{\mathrm{lgASA}}\) within the the standard, respectively.

Returns

Mean angle spread in seconds

Return type

float

property aoa_spread_std: float

Standard deviation of the Azimuth Angle-of-Arrival spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ASA}\) and \(\sigma_{\mathrm{lgASA}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property zoa_spread_mean: float

Mean of the Zenith Angle-of-Arriaval spread.

The spread realization and its mean are referred to as \(\mathrm{ZSA}\) and \(\mu_{\mathrm{lgZSA}}\) within the the standard, respectively.

Returns

Mean angle spread in seconds

Return type

float

property zoa_spread_std: float

Standard deviation of the Zenith Angle-of-Arrival spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ZSA}\) and \(\sigma_{\mathrm{lgZSA}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in seconds.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property zod_spread_mean: float

Mean of the Zenith Angle-of-Departure spread.

The spread realization and its mean are referred to as \(\mathrm{ZOD}\) and \(\mu_{\mathrm{lgZSD}}\) within the the standard, respectively.

Returns

Mean angle spread in degrees

Return type

float

property zod_spread_std: float

Standard deviation of the Zenith Angle-of-Departure spread.

The spread realization and its standard deviation are referred to as \(\mathrm{ZOD}\) and \(\sigma_{\mathrm{lgZOD}}\) within the the standard, respectively.

Returns

Angle spread standard deviation in degrees.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property zod_offset: float

Offset between Zenith Angle-of-Arrival and Angle-of-Departure.

The offset is referred to as \(\mu_{\mathrm{offset,ZOD}}\) within the standard.

Returns

The offset in degrees.

Return type

float

property rice_factor_mean: float

Mean of the rice factor distribution.

The rice factor realization and its mean are referred to as \(K\) and \(\mu_K\) within the the standard, respectively.

Returns

Rice factor mean in dB.

Return type

float

property rice_factor_std: float

Standard deviation of the rice factor distribution.

The rice factor realization and its standard deviation are referred to as \(K\) and \(\sigma_K\) within the the standard, respectively.

Returns

Rice factor standard deviation in dB.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property delay_scaling: float

Delay scaling proportionality factor

Referred to as \(r_{\tau}\) within the standard.

Returns

Scaling factor.

Return type

float

Raises

ValueError – If scaling factor is smaller than one.

property cross_polarization_power_mean: float

Mean of the cross-polarization power.

The cross-polarization power and its mean are referred to as \(\mathrm{XPR}\) and \(\mu_{\mathrm{XPR}}\) within the the standard, respectively.

Returns

Mean power in dB.

Return type

float

property cross_polarization_power_std: float

Standard deviation of the cross-polarization power.

The cross-polarization power and its standard deviation are referred to as \(\mathrm{XPR}\) and \(\sigma_{\mathrm{XPR}}\) within the the standard, respectively.

Returns

Power standard deviation in dB.

Return type

float

Raises

ValueError – If the standard deviation is smaller than zero.

property num_clusters: int

Number of clusters.

Referred to as \(M\) within the standard.

Returns

Number of clusters.

Return type

int

Raises

ValueError – If the number of clusters is smaller than one.

property num_rays: int

Number of rays per cluster.

Referred to as \(N\) within the standard.

Returns

Number of rays.

Return type

int

Raises

ValueError – If the number of clusters is smaller than one.

property cluster_delay_spread: float

Delay spread within an individual cluster.

Referred to as \(c_{DS}\) within the standard.

Returns

Delay spread in seconds.

Return type

float

Raises

ValueError – If spread is smaller than zero.

property cluster_aod_spread: float

Azimuth Angle-of-Departure spread within an individual cluster.

Referred to as \(c_{ASD}\) within the standard.

Returns

Angle spread in degrees.

Return type

float

Raises

ValueError – If spread is smaller than zero.

property cluster_aoa_spread: float

Azimuth Angle-of-Arrival spread within an individual cluster.

Referred to as \(c_{ASA}\) within the standard.

Returns

Angle spread in degrees.

Return type

float

Raises

ValueError – If spread is smaller than zero.

property cluster_zoa_spread: float

Zenith Angle-of-Arrival spread within an individual cluster.

Referred to as \(c_{ZSA}\) within the standard.

Returns

Angle spread in degrees.

Return type

float

Raises

ValueError – If spread is smaller than zero.

property cluster_shadowing_std: float

Standard deviation of the cluster shadowing.

Referred to as \(\zeta\) within the the standard.

Returns

Cluster shadowing standard deviation.

Return type

float

Raises

ValueError – If the deviation is smaller than zero.

1

Study on channel model for frequencies from 0.5 to 100 GHz. 3GPP TSG-RAN, 2020. version 16.1.0 Release 16. URL: https://www.etsi.org/deliver/etsi_tr/138900_138999/138901/16.01.00_60/tr_138901v160100p.pdf.