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 their
thickness.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\).
If synthetic arrays are used (
synthetic_arrayisTrue), 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 returnedPathsobject.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.)

- __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 pathsmax_depth (
int) – Maximum depthmax_num_paths_per_src (
int) – Maximum number of paths per sourcesamples_per_src (
int) – Number of samples per sourcesynthetic_array (
bool) – If set toTrue (default), then the antenna arrays are applied syntheticallylos (
bool) – Enable line-of-sight pathsspecular_reflection (
bool) – Enables specular reflectiondiffuse_reflection (
bool) – Enables diffuse reflectionrefraction (
bool) – Enables refractiondiffraction (
bool) – Enables diffractionedge_diffraction (
bool) – Enables diffraction on free floating edgesdiffraction_lit_region (
bool) – Enables diffraction in the lit regionseed (
int) – Seed
- Return type:
- 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”