Path Solvers

A path solver computes the propagationPathsfor a givenScene.This includes tracing the paths and computing the corresponding channelcoefficients, delays, and angles of departure and arrival.Sionna provides a path solver (PathSolver) which currentlysupports specular reflections and diffuse reflections,as well as refractions (or transmissions).

classsionna.rt.PathSolver[source]

Class implementing a path solver

A path solver computes propagation paths between the antennas ofall transmitters and receivers in the a scene.For each propagation path\(i\), the corresponding channel coefficient\(a_i\) and delay\(\tau_i\), theangles of departure\((\theta_{\text{T},i}, \varphi_{\text{T},i})\)and arrival\((\theta_{\text{R},i}, \varphi_{\text{R},i})\), aswell as the Doppler shifts\(f_{\Delta, i}\) are computed.For more detail, see(26).This path solver currently supports line-of-sigth, specular and diffusereflection, as well as refraction. Paths can consist of any of these interactiontypes, in any order.Different propagation phenomena can be individually enabled/disabled.

This solver assumes that materials are thin enough that their effect ontransmitted rays (i.e., rays that traverse the materials through doublerefraction) is negligible. Rays are traced without angular deflection, andobjects like walls should be modeled as single flat surfaces having anattached radio material that accounts for theirthickness.This approach may be inaccurate for very thick objects.The figure below illustrates this model, where\(E_i\) is theincident electric field,\(E_r\) is the reflected field and\(E_t\) isthe transmitted field. The Jones matrices,\(\mathbf{R}(d)\) and\(\mathbf{T}(d)\), represent the effects of reflection and transmission,respectively, and depend on the slab thickness,\(d\).

../../_images/transmission_model.png

If synthetic arrays are used (synthetic_array isTrue), transmittersand receivers are modelled as if they had a single antenna located at theirposition. The channel responses for eachindividual antenna of the arrays are then computed “synthetically” by applyingappropriate phase shifts. This reduces the complexity significantlyfor large arrays. Time evolution of the channel coefficients can be simulated withusingcir() andcfr() methods of the returnedPaths object.

Example

importsionnafromsionna.rtimportload_scene,Transmitter,Receiver,PlanarArray,PathSolverimportmitsubaasmi# Load example scenescene=load_scene(sionna.rt.scene.munich)# Configure antenna array for all transmittersscene.tx_array=PlanarArray(num_rows=8,num_cols=2,vertical_spacing=0.7,horizontal_spacing=0.5,pattern="tr38901",polarization="VH")# Configure antenna array for all receiversscene.rx_array=PlanarArray(num_rows=1,num_cols=1,vertical_spacing=0.5,horizontal_spacing=0.5,pattern="dipole",polarization="cross")# Create transmittertx=Transmitter(name="tx",position=mi.Point3f(8.5,21,27),orientation=mi.Point3f(0,0,0))scene.add(tx)# Create a receiverrx=Receiver(name="rx",position=mi.Point3f(45,90,1.5),orientation=mi.Point3f(0,0,0))scene.add(rx)# TX points towards RXtx.look_at(rx)# Compute pathssolver=PathSolver()paths=solver(scene)# Open preview showing pathsscene.preview(paths=paths,resolution=[1000,600],clip_at=15.)
../../_images/paths_preview.png
__call__(scene,max_depth=3,max_num_paths_per_src=1000000,samples_per_src=1000000,synthetic_array=True,los=True,specular_reflection=True,diffuse_reflection=False,refraction=True,diffraction=False,edge_diffraction=False,diffraction_lit_region=True,seed=42)[source]

Executes the solver

Parameters:
  • scene (sionna.rt.scene.Scene) – Scene for which to compute paths

  • max_depth (int) – Maximum depth

  • max_num_paths_per_src (int) – Maximum number of paths per source

  • samples_per_src (int) – Number of samples per source

  • synthetic_array (bool) – If set toTrue (default), then the antenna arrays are applied synthetically

  • los (bool) – Enable line-of-sight paths

  • specular_reflection (bool) – Enables specular reflection

  • diffuse_reflection (bool) – Enables diffuse reflection

  • refraction (bool) – Enables refraction

  • diffraction (bool) – Enables diffraction

  • edge_diffraction (bool) – Enables diffraction on free floating edges

  • diffraction_lit_region (bool) – Enables diffraction in the lit region

  • seed (int) – Seed

Return type:

sionna.rt.path_solvers.paths.Paths

Returns:

Computed paths

propertyloop_mode

Get/set the Dr.Jit mode used to evaluate the loops that implementthe solver. Should be one of “evaluated” or “symbolic”. Symbolic mode(default) is the fastest one but does not support automaticdifferentiation.For more details, see thecorresponding Dr.Jit documentation.

Type:

“evaluated” | “symbolic”