UMa#

class sionna.phy.channel.tr38901.UMa(carrier_frequency: float, o2i_model: str, ut_array: sionna.phy.channel.tr38901.antenna.PanelArray, bs_array: sionna.phy.channel.tr38901.antenna.PanelArray, direction: str, enable_pathloss: bool = True, enable_shadow_fading: bool = True, always_generate_lsp: bool = False, precision: str | None = None, device: str | None = None)[source]#

Bases: sionna.phy.channel.tr38901.system_level_channel.SystemLevelChannel

Urban macrocell (UMa) channel model from 3GPP [TR38901] specification.

Setting up a UMa model requires configuring the network topology, i.e., the UTs and BSs locations, UTs velocities, etc. This is achieved using the set_topology() method. Setting a different topology for each batch example is possible. The batch size used when setting up the network topology is used for the link simulations.

Parameters:
  • carrier_frequency (float) – Carrier frequency [Hz]

  • o2i_model (str) – Outdoor-to-indoor loss model for UTs located indoor. Set this parameter to "low" to use the low-loss model, or to "high" to use the high-loss model. See section 7.4.3 of [TR38901] for details.

  • ut_array (sionna.phy.channel.tr38901.antenna.PanelArray) – Panel array used by the UTs. All UTs share the same antenna array configuration.

  • bs_array (sionna.phy.channel.tr38901.antenna.PanelArray) – Panel array used by the BSs. All BSs share the same antenna array configuration.

  • direction (str) – Link direction. Either "uplink" or "downlink".

  • enable_pathloss (bool) – If True, apply pathloss. Otherwise don’t. Defaults to True.

  • enable_shadow_fading (bool) – If True, apply shadow fading. Otherwise don’t. Defaults to True.

  • always_generate_lsp (bool) – If True, new large scale parameters (LSPs) are generated for every new generation of channel impulse responses. Otherwise, always reuse the same LSPs, except if the topology is changed. Defaults to False.

  • precision (str | None) – Precision used for internal calculations and outputs. If set to None, precision is used.

  • device (str | None) – Device for computation (e.g., ‘cpu’, ‘cuda:0’). If None, device is used.

Inputs:
  • num_time_samplesint. Number of time samples.

  • sampling_frequencyfloat. Sampling frequency [Hz].

Outputs:
  • a – [batch size, num_rx, num_rx_ant, num_tx, num_tx_ant, num_paths, num_time_samples], torch.complex. Path coefficients.

  • tau – [batch size, num_rx, num_tx, num_paths], torch.float. Path delays [s].

Examples

import torch
from sionna.phy.channel.tr38901 import PanelArray, UMa

# UT and BS panel arrays
bs_array = PanelArray(num_rows_per_panel=4, num_cols_per_panel=4,
                      polarization='dual', polarization_type='cross',
                      antenna_pattern='38.901', carrier_frequency=3.5e9)
ut_array = PanelArray(num_rows_per_panel=1, num_cols_per_panel=1,
                      polarization='single', polarization_type='V',
                      antenna_pattern='omni', carrier_frequency=3.5e9)

# Instantiating UMa channel model
channel_model = UMa(carrier_frequency=3.5e9,
                    o2i_model='low',
                    ut_array=ut_array,
                    bs_array=bs_array,
                    direction='uplink')

# Setting up network topology
channel_model.set_topology(ut_loc, bs_loc, ut_orientations,
                           bs_orientations, ut_velocities, in_state)

# Generate channel
h, delays = channel_model(num_time_samples=100, sampling_frequency=1e6)