gen_tr38901_indoor_factory_topology#
- sionna.sys.gen_tr38901_indoor_factory_topology(factory_scenario: str, batch_size: int, num_ut: int, hall_length: float | None = None, hall_width: float | None = None, hall_height: float | None = None, bs_spacing: float | None = None, bs_height: float | None = None, ut_height: float | None = None, min_bs_ut_dist: float = 1.0, return_site_positions: bool = False, precision: Literal['single', 'double'] | None = None, device: str | None = None) sionna.sys.topology.IndoorFactoryTopology | Tuple[sionna.sys.topology.IndoorFactoryTopology, torch.Tensor][source]#
Generates a TR 38.901 indoor-factory topology using Tables 7.2-4 and 7.8-7 of [TR38901V1920].
The supported factory sub-scenarios are
"SL"(sparse clutter, low BS height),"DL"(dense clutter, low BS height),"SH"(sparse clutter, high BS height), and"DH"(dense clutter, high BS height). These are the sub-scenarios included in the large-scale calibration assumptions."HH"is a validInFsub-scenario, but it is not part of the Table 7.8-7 calibration topology. With default parameters, 18 base stations are placed on a rectangular lattice with spacing \(D\) and offset \(D/2\) from the hall walls. UTs are dropped uniformly inside the hall, marked as indoor, and constrained bymin_bs_ut_dist.The default calibration deployments use \(L\times W = 120\,\mathrm{m}\times 60\,\mathrm{m}\) and \(D=20\,\mathrm{m}\) for
"SL"and"DH", and \(L\times W = 300\,\mathrm{m}\times 150\,\mathrm{m}\) and \(D=50\,\mathrm{m}\) for"DL"and"SH". The BS height is \(1.5\,\mathrm{m}\) for the low-BS cases and \(8\,\mathrm{m}\) for the high-BS cases.The returned
IndoorFactoryTopologyremains tuple-compatible and can be passed directly toset_topology(). It also records the resolvedfactory_scenarioandhall_dimensions. For custom hall dimensions, constructInFwithtopology.hall_dimensionsand calltopology.set_topology(channel_model)to validate the channel’s statistics configuration before applying the deployment. Directly unpacking a topology with non-default hall dimensions remains supported but emits a warning because it bypasses this validation.
Fig. 26 Example InF-SH indoor-factory topology with a rectangular BS lattice and indoor UT drops.#
The topology shown in the figure was generated with:
from sionna.phy import config from sionna.sys import gen_tr38901_indoor_factory_topology config.seed = 42 topology, site_positions = gen_tr38901_indoor_factory_topology( "SH", batch_size=1, num_ut=80, return_site_positions=True, precision="single", device="cpu")
- Parameters:
factory_scenario (str) – Indoor-factory sub-scenario. Must be
"SL","DL","SH", or"DH".batch_size (int) – Batch size.
num_ut (int) – Number of UTs to drop per batch.
hall_length (float | None) – Hall length along the x-axis [m]. If None, the Table 7.8-7 default for
factory_scenariois used.hall_width (float | None) – Hall width along the y-axis [m]. If None, the Table 7.8-7 default for
factory_scenariois used.hall_height (float | None) – Hall height [m]. If None, the Table 7.8-7 default is used. Hall height does not alter the generated coordinates, but it is included in
topology.hall_dimensionsbecause it affects InF channel statistics.bs_spacing (float | None) – BS lattice spacing [m]. If None, the Table 7.8-7 default for
factory_scenariois used.bs_height (float | None) – BS height [m]. If None, the Table 7.8-7 default for
factory_scenariois used.ut_height (float | None) – UT height [m]. If None, the Table 7.8-7 default is used.
min_bs_ut_dist (float) – Minimum 2D distance between each UT and BS [m].
return_site_positions (bool) – If True, return
(topology, site_positions)instead of onlytopology. Thetopologyobject still provides the metadata and validation API described above.precision (Literal['single', 'double'] | None) – Precision used for internal calculations and outputs. If set to None,
precisionis used.device (str | None) – Device for computation. If None,
deviceis used.
- Outputs:
ut_loc – [batch_size, num_ut, 3], torch.float. UT locations [m].
bs_loc – [batch_size, num_bs, 3], torch.float. BS locations [m].
ut_orientations – [batch_size, num_ut, 3], torch.float. UT orientations [radian].
bs_orientations – [batch_size, num_bs, 3], torch.float. BS orientations [radian].
ut_velocities – [batch_size, num_ut, 3], torch.float. UT velocity vectors [m/s].
in_state – [batch_size, num_ut], torch.bool. Indoor state of UTs. Always True.
los – None. Placeholder for stochastic LoS/NLoS sampling by the channel model.
bs_virtual_loc – [batch_size, num_bs, num_ut, 3], torch.float. Virtual BS locations [m]. No wraparound is applied.
bs_site_ids – [num_bs], torch.int64. Site identifier of each BS.
site_positions – [num_bs, 2], torch.float. BS site center positions [m]. Returned separately from
topologyonly ifreturn_site_positionsis True.
Examples
from sionna.phy.channel.tr38901 import InF from sionna.sys import gen_tr38901_indoor_factory_topology topology = gen_tr38901_indoor_factory_topology( "SH", 1, 20, hall_length=200.0, hall_width=100.0) channel_model = InF(carrier_frequency, ut_array, bs_array, "downlink", factory_scenario=topology.factory_scenario, hall_dimensions=topology.hall_dimensions) topology.set_topology(channel_model)