InFScenario#

class sionna.phy.channel.tr38901.InFScenario(carrier_frequency: float, factory_scenario: str, ut_array: sionna.phy.channel.tr38901.antenna.PanelArray | sionna.phy.channel.tr38901.antenna.HandheldUTArray, bs_array: sionna.phy.channel.tr38901.antenna.PanelArray | sionna.phy.channel.tr38901.antenna.HandheldUTArray, direction: str, hall_dimensions: tuple[float, float, float] | None = None, clutter_density: float | None = None, clutter_size: float | None = None, clutter_height: float | None = None, enable_pathloss: bool = True, enable_shadow_fading: bool = True, precision: str | None = None, device: str | None = None, spec_version: str = '19.2')[source]#

Bases: sionna.phy.channel.tr38901.system_level_scenario.SystemLevelScenario

3GPP TR 38.901 indoor factory (InF) channel model scenario.

The model implements the InF scenarios from Section 7 of [TR38901V1920]. The factory_scenario parameter selects the InF sub-scenario from Table 7.2-4:

  • "SL": sparse clutter, low BS;

  • "DL": dense clutter, low BS;

  • "SH": sparse clutter, high BS;

  • "DH": dense clutter, high BS;

  • "HH": high Tx and high Rx, which is LOS-only.

For InF-SL, InF-DL, InF-SH, and InF-DH, the default hall dimensions and clutter parameters follow the calibration assumptions from Table 7.8-7 of [TR38901V1920]. That table does not include InF-HH. For InF-HH only, the defaults (300, 150, 10) m, 0.0, 1.0 m, and 0.0 m for hall dimensions, clutter density, clutter size, and clutter height, respectively, are implementation assumptions rather than standardized calibration values. Pass explicit values for a particular InF-HH layout.

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

  • factory_scenario (str) – Indoor-factory sub-scenario. Must be "SL", "DL", "SH", "DH", or "HH". Defaults to "SH".

  • ut_array (sionna.phy.channel.tr38901.antenna.PanelArray | sionna.phy.channel.tr38901.antenna.HandheldUTArray) – Antenna array used by UTs. This can be a PanelArray or HandheldUTArray.

  • bs_array (sionna.phy.channel.tr38901.antenna.PanelArray | sionna.phy.channel.tr38901.antenna.HandheldUTArray) – Antenna array used by base stations. This can be a PanelArray or HandheldUTArray.

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

  • hall_dimensions (tuple[float, float, float] | None) – Optional hall dimensions (length, width, height) [m]. If None, the sub-scenario default described above is used.

  • clutter_density (float | None) – Surface fraction occupied by clutter. If None, the sub-scenario default described above is used.

  • clutter_size (float | None) – Typical clutter size \(d_\mathrm{clutter}\) [m]. If None, the sub-scenario default described above is used.

  • clutter_height (float | None) – Effective clutter height \(h_c\) [m]. If None, the sub-scenario default described above is used.

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

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

  • 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.

  • spec_version (str) – Version of the TR 38.901 parameter tables to use. InF is implemented for "16.1" and "19.2". Defaults to "19.2".

Methods

clip_carrier_frequency_lsp(fc: torch.Tensor) torch.Tensor[source]#

Return fc unchanged for InF LSP calculation.

Parameters:

fc (torch.Tensor) – Carrier frequency [GHz].

Outputs:

fc – Unmodified carrier frequency [GHz].

Attributes

property clutter_density: torch.Tensor#

Surface fraction occupied by clutter.

property clutter_height: torch.Tensor#

Effective clutter height \(h_c\) [m].

property clutter_size: torch.Tensor#

Typical clutter size \(d_\mathrm{clutter}\) [m].

property factory_scenario: str#

Canonical InF sub-scenario.

property hall_dimensions: torch.Tensor#

Hall dimensions (length, width, height) [m].

Allow indoor-factory links to be LoS or NLoS.

Use ordinary InF LoS/NLoS zenith-angle generation.

property los_parameter_filepath: str#

Path of the configuration file for LoS scenario.

property los_probability: torch.Tensor#

Probability of each BS-UT link to be LoS.

Computed from the InF formulas in Table 7.4.2-1 of [TR38901V1920]. For "HH", the LOS probability is one. If the clutter density is zero, the formula is evaluated with the limiting behavior of an unobstructed hall, i.e., LOS probability close to one.

Shape [batch size, num_bs, num_ut].

property max_2d_in: torch.Tensor#

Maximum indoor 2D distance for indoor UTs [m].

property min_2d_in: torch.Tensor#

Minimum indoor 2D distance for indoor UTs [m].

property nlos_parameter_filepath: str#

Path of the configuration file for NLoS scenario.

property o2i_parameter_filepath: str#

Path of the unused O2I configuration file.

property o2i_pathloss_enabled: bool#

Disable outdoor-to-indoor penetration loss for InF links.

property rays_per_cluster: int#

Number of rays per cluster.

set_topology(ut_loc: torch.Tensor | None = None, bs_loc: torch.Tensor | None = None, ut_orientations: torch.Tensor | None = None, bs_orientations: torch.Tensor | None = None, ut_velocities: torch.Tensor | None = None, in_state: torch.Tensor | None = None, los: bool | str | torch.Tensor | None = None, bs_virtual_loc: torch.Tensor | None = None, bs_site_ids: torch.Tensor | None = None, spatial_consistency_track_ids: torch.Tensor | None = None, distance_2d_in: torch.Tensor | None = None, ut_spatial_region_ids: torch.Tensor | None = None) bool[source]#

Set the network topology.

The arguments are identical to set_topology(). The "HH" sub-scenario is LOS-only and rejects forced NLOS links.

Parameters:
property use_indoor_lsp_params: bool#

Do not switch indoor InF links to O2I LSP parameters.