Sionna RT#
The Sionna RT solve loads the compiled scene with Sionna’s own load_scene, adds transmitters
at their terrain-relative positions, builds a terrain-following measurement surface, and
calls RadioMapSolver. Nothing between the compiled XML and the solver is OWRT-specific,
which is why the same scene can be driven directly from Python.
Native use#
from openworld_radio_twin import rt as owrt
from sionna.rt import PlanarArray, RadioMapSolver, Transmitter
scene = owrt.load_scene(latitude=52.3762, longitude=4.8993, radius_m=250)
scene.frequency = 3.5e9
scene.tx_array = PlanarArray(num_rows=8, num_cols=2, pattern="tr38901", polarization="V")
scene.rx_array = PlanarArray(num_rows=1, num_cols=1, pattern="iso", polarization="V")
scene.add(Transmitter(
name="tx",
position=owrt.position(scene, latitude=52.3770, longitude=4.9003, height_agl=25.0),
power_dbm=30.0,
))
radio_map = RadioMapSolver()(
scene,
measurement_surface=owrt.measurement_surface(scene, cell_size=(5.0, 5.0), height=1.5),
max_depth=3,
samples_per_tx=1_000_000,
refraction=True,
diffraction=False,
)
Propagation controls keep the native RadioMapSolver keyword names. PathSolver, channel
impulse responses, scene.render and scene.preview work unchanged on the same scene.

Beyond coverage maps: PathSolver on OWRT scenes in Bergen and Murray Hill yields
power-delay profiles, RMS delay spread and channel frequency responses at outdoor receivers.
The service and dataset request#
Through the HTTP API and datasets, the same solve is configured by a request. Its
engine_config accepts exactly the following keys:
Key |
Default |
Meaning |
|---|---|---|
|
|
|
|
|
Keep the ground mesh in the ray-traced scene |
|
|
Keep the corresponding semantic surface meshes (ITU profile) |
|
|
Keep roof or wall triangles of every building |
|
Sionna RT 2.0.1 defaults: |
Forwarded verbatim to |
Request-level fields set the rest: max_depth (0 to 8), samples_per_tx (10,000 to
100,000,000), seed, resolution_m as the cell size, receiver_height_m, and
association_metric (path_gain, rss or sinr). Sionna cases need one shared frequency
between 1 and 10 GHz and one shared antenna pattern across transmitters; the default ITU
ground material model is valid in that band.
sionna_cases = {
"engine": "sionna",
"engine_config": {
"device": "cuda",
"include_water": False, # drop the water mesh, keep it in the dataset
"diffraction": True,
},
"max_depths": [3],
"samples_per_tx": [1_000_000],
}
Geometry masks edit a temporary copy of the scene XML; the source meshes and provenance stay in place, and the completed case records which geometry classes were excluded.
Antenna presets#
Preset |
Transmit array |
Receive array |
|---|---|---|
|
8 × 2 |
1 × 1 isotropic |
|
1 × 1 isotropic, vertical polarisation |
1 × 1 isotropic |
Azimuth and downtilt become a look_at point for each transmitter. Custom arrays and
precoding vectors are available through the native API (scene.tx_array,
RadioMapSolver()(scene, precoding_vec=...)).
Measurement surface and cell reduction#
The measurement surface is a triangulated grid that follows the compiled terrain at the receiver height. Each exported cell covers two triangles; the solver’s per-triangle values are reduced to one cell value by a surface-area-weighted mean for path gain and received power. Cell SINR is then the desired transmitter’s received power divided by the sum of all other transmitters’ received power plus the scene’s thermal noise power. Bandwidth, temperature, the effective noise power and the radio-map contract version are recorded in the result metadata. The reported cell coordinate is the planimetric centre of the regular cell.
Version 0.2.1 introduced radio-map contract version 2, which changed SINR and therefore SINR-based association; path gain and received power were unchanged. Resuming a Sionna dataset with an older or absent contract version is rejected (Resume and extend).
Recorded solver details#
Every Sionna result carries, among other fields: the sionna-rt version, the Mitsuba variant
and resolved device, the device policy, whether geometry was masked and which classes were
excluded, the ground geometry kind (flat, terrain-following or excluded), building and
triangle counts, frequency, noise bandwidth, temperature and thermal noise power, the array
preset, cell size, receiver-cell count, the total initial ray samples, the diagnostic
samples_per_tx / receiver_cells ratio, the served-cell fraction, the association metric
and the reflection depth.