4 Radio Map Solver

In the previous sections, we have detailed the path solver, which computes propagation paths and the related electric fields from a source to a target. Now, we turn our attention to the radio map solver, which computes a radio map (also known as coverage map or power map) for a given scene and source. While we describe the algorithm for a single source, Sionna RT can compute radio maps for multiple sources in parallel.

Refer to caption
(a) Scene with a measurement plane.
Refer to caption
(b) Radio map for the measurement plane in (a).
Figure 22: (a) A measurement plane is placed in the scene to capture paths without affecting their propagation, (b) the resulting radio map showing the spatial distribution of channel gains.

A radio map estimates the channel gain (5) from a source to each point on a measurement plane, as illustrated in Figure 22. The measurement plane is partitioned into measurement cells of identical size. For each cell, the solver estimates the average channel gain that would be observed by a target placed within that cell. Note that the measurement plane does not interact with the electromagnetic waves, but only serves to capture the paths that intersect it.

In Section 4.1, we present a definition of radio maps that allows for their efficient computation using Monte Carlo integration. This approach, detailed in Section 4.2, makes the computation of radio maps both fast and scalable.

4.1 Definition of a Radio Map

Consider a point source 𝐬. The measurement plane, denoted as , is partitioned into NM cells, each with an equal area |C|. The radio map value for the i-th cell, where i{1,,NM}, is defined as:

Ci=1|C|Cie¯(𝐭)𝑑𝐭. (33)

Here, e¯(𝐭) denotes the channel gain at the position 𝐭 on the measurement plane, considering all paths originating from the source 𝐬. Assuming a discrete set of paths impacts the measurement plane at 𝐭, e¯(𝐭) can be expressed as

e¯(𝐭)==0p𝒫(𝐬,,𝐭)e(p) (34)

where 𝒫(𝐬,,𝐭) represents the set of all paths with depth that originate from 𝐬 and intersect the measurement plane at 𝐭. The term e(p) is defined as:

e(p)=λ4π(=1𝐓())𝐂T(θT,φT)22. (35)

In this context, λ is the wavelength, is the number of scatterers along the path p, 𝐂T is a complex-valued vector of dimension 2 representing the transmit antenna pattern evaluated at the angles of departure of p, (θT,φT), and 𝐓() is a 2×2 complex-valued matrix modeling the interaction with the -th scatterer. Unlike in (4), the receive antenna pattern is not applied here. Instead, the squared norm of the electric field is used. This is equivalent to assuming that a receiver positioned on the measurement plane uses a dual-polarized isotropic antenna, and that both components are combined non-coherently.

While the definition (33) is comprehensive, it is not directly practical for computation. A straightforward but inefficient method to compute a radio map is to calculate the paths for each measurement cell using the path solver (Section 3) by placing one or more targets within each cell. However, this approach becomes computationally prohibitive as the number of cells increases. Therefore, we reformulate the radio map definition (33) to enable efficient computation via Monte Carlo integration.

Refer to caption
Figure 23: Three specular chains, each indexed by a subscript. The sequence of interaction types and the departure direction uniquely determine the directions of the scattered rays, and therefore the paths. Shown in 2D for clarity.

To build intuition, let’s first consider the scenario where all paths from the source 𝐬 to the measurement cells are specular chains, meaning they contain no diffuse reflections. In this case, for a given scene and source 𝐬, a path of depth is fully characterized by its sequence of interaction types 𝝌()=(χ(1),,χ()) and its departure direction 𝐤^(0). This is because, in specular chains, the direction of the scattered wave at each interaction point is uniquely determined by the interaction type and the direction of incidence, as illustrated in Figure 23. In this case, the definition (33) can be reformulated over the unit sphere Ω centered on 𝐬, which represents all possible ray departure directions. To achieve this, we define p(𝐬,𝐤^(0),𝝌(),𝐭) as the path of depth from 𝐬 to 𝐭, characterized by the departure direction 𝐤^(0) and the sequence of interaction types 𝝌(). The length of the corresponding ray tube is denoted by r, and the angle between the plane normal and the path’s incident direction is denoted by θ. By applying the change of variables d𝐭=r2cosθd𝐤^(0), we can reformulate the definition (33) as:

Ci=1|C|=0𝝌(){,𝒯}Ωe(p(𝐬,𝐤^(0),𝝌(),𝐭))𝕀(𝐭Ci)r2cosθ𝑑𝐤^(0). (36)

In this context, 𝐭 denotes the position on the measurement plane where the path intersects. The double summation is over all path depths =0,1, (with =0 corresponding to LoS) and all possible sequences of interaction types 𝝌(), excluding diffuse reflections. The indicator function 𝕀(𝐭Ci) equals 1 if 𝐭 is within Ci and 0 otherwise. If the path does not intersect the measurement plane, then 𝕀(𝐭Ci)=0. The integration is carried out over the unit sphere, where d𝐤^(0) represents the infinitesimal solid angle element corresponding to the ray tube in the direction 𝐤^(0).

To extend the definition to include diffuse reflections, we first modify the definition (36) to explicitly include the sequence of propagation directions of the scattered rays at the interaction points, denoted as 𝐤¯()=(𝐤^(1),,𝐤^()). For this purpose, we introduce 𝐧¯()=(𝐧^(1),,𝐧^()), representing the sequence of normals at these interaction points. We then define the function f¯(), which ensures that the direction of the scattered rays aligns with the interaction type, as follows:

f¯(𝐤^(0),𝐤¯(),𝝌(),𝐧¯())==1f(χ(),𝐤^(1),𝐤^(),𝐧^()) (37)

where

f(χ,𝐤^i,𝐤^s,𝐧^)={δ(𝐤^s(𝐤^i2(𝐧^𝖳𝐤^i)𝐧^))if χ=δ(𝐤^s𝐤^i)if χ=𝒯 (38)

and, δ() is the Dirac delta distribution. The definition in (36) can be then be reformulated as

Ci=1|C|=0𝝌(){,𝒯}ΩΩe(p(𝐬,𝐤^(0),𝝌(),𝐭))𝕀(𝐭Ci)f¯(𝐤^(0),𝐤¯(),𝝌(),𝐧¯())r2cosθ𝑑𝐤¯()𝑑𝐤^(0) (39)

Compared to (36), the definition in (39) integrates over all propagation directions of the scattered rays at the interaction points. The integral over Ω combined with the function f¯() merely filters out invalid directions and, strictly speaking, does not perform any other function. However, while the definition in (39) is equivalent to (36), it facilitates the extension to paths with diffuse reflections:

Ci=1|C|=0𝝌()ΩΩe(p(𝐬,𝐤^(0),𝐤¯(),𝝌(),𝐭))𝕀(𝐭Ci)f¯(𝐤^(0),𝐤¯(),𝝌(),𝐧¯())r2cosθ𝑑𝐤¯()𝑑𝐤^(0) (40)

where the inner sum covers all possible sequences of interaction types of depth , including diffuse reflections. The path p(𝐬,𝐤^(0),𝐤¯(),𝝌(),𝐭) represents a path of depth from the source 𝐬 to the target 𝐭. This path is defined by the initial propagation direction 𝐤^(0), the sequence of scattered ray directions 𝐤¯(), and the sequence of interaction types 𝝌(). Compared to (39), the paths depend on the directions of propagation of the scattered waves, which are not solely determined by the initial propagation directions and interaction types when diffuse reflection occurs. In (40), f() in (37) is extended to include diffuse reflections as follows:

f(χ,𝐤^i,𝐤^s,𝐧^)={δ(𝐤^s(𝐤^i2(𝐧^𝖳𝐤^i)𝐧^))if χ=δ(𝐤^s𝐤^i)if χ=𝒯𝕀(𝐤^i𝖳𝐧^>0)if χ=𝒮 (41)

where 𝕀() is the indicator function, which equals 1 if the condition is true and 0 otherwise. Note that in (40), r is the length of the ray tube impinging on the measurement plane, which, in the case of paths including diffuse reflections, corresponds to the distance from the intersection with the measurement plane to the last diffuse reflection point.

In practice, we estimate Ci using Monte Carlo integration. Similar to the path solver, we employ random sampling of interaction types (see Section 3.1.2) and limit the integration to paths with a maximum depth of L<:

Ci=1|C|=0LPr(𝝌())𝝌()ΩΩe(p(𝐬,𝐤^(0),𝐤¯(),𝝌(),𝐭))𝕀(𝐭Ci)f¯(𝐤^(0),𝐤¯(),𝝌(),𝐧¯())r2Pr(𝝌())cosθ𝑑𝐤¯()𝑑𝐤^(0) (42)

Assuming NS samples for Monte Carlo integration, we sample the unit sphere around the source 𝐬 using NS samples, resulting in initial ray tubes with a solid angle of approximately 4π/NS. For diffuse reflection points, we emit a single ray on the hemisphere, leading to ray tubes with a solid angle of 2π. This results in the following estimator

C^i=1|C|4πNSn=1NS=0Le(p(𝐬,𝐤^n(0),𝐤¯n(),𝝌n(),𝐭n))𝕀(𝐭nCi)rn2(=1ωn())Pr(𝝌n)cosθn. (43)

Here, the subscript n denotes the n-th path, and ωn() represents the solid angles of the ray tubes corresponding to sampling the -th integral:

ωn()={2πif χn()=𝒮1otherwise. (44)

In the case of diffuse reflections, the multiplication by the ray tube solid angle is already applied through the computation of the scattered electric field (123). It has been included here for the sake of clarity. As we will see in the next section, this estimator can be efficiently computed using a single SBR loop.

4.1.1 Non-Coherent vs. Coherent Radio Maps

The proposed definition of radio maps involves a non-coherent summation of path gains (35). As a result, it does not capture fast fading effects, which result from the constructive and destructive interference of multiple paths. Figure 24 demonstrates this by comparing three scenarios: a radio map generated using the radio map solver (Section 4.2), a radio map created by non-coherently summing the path coefficients (4) calculated with the path solver (Section 3) by placing a single target at the center of each measurement cell, and a radio map produced by coherently summing the path coefficients (4) calculated with the path solver, also by placing a single target at the center of each measurement cell. The radio map obtained using the radio map solver aligns with the non-coherent summation of path coefficients calculated using the path solver, as anticipated. However, it does not account for fast fading effects, which requires the coherent summation of path coefficients.

Refer to caption
Figure 24: Comparison of radio maps: one computed using the radio map solver, one by non-coherently summing path coefficients from the path solver, and one by coherently summing path coefficients from the path solver. The transmitter is depicted as a red ball. All radio maps are computed with a maximum depth of L=3, cell sizes of 10×10 cm, using isotropic antenna patterns on both the transmitter and receiver, and for the “box” scene built in Sionna RT. The “non-coherent sum” and “coherent sum” radio maps are generated by placing a single target point at the center of each measurement cell.

4.1.2 Handling Multiple Transmit Antennas

The Sionna RT radio map solver supports antenna arrays of any size at the transmitter and allows for user-defined precoding vectors. However, it only supports synthetic arrays. In this setup, paths are generated from a single source located at the center of the array, and the channel response for each individual antenna is calculated by applying the appropriate phase shifts synthetically. This approximation holds true as long as the array size is small compared to the distance from the transmitter to the measurement plane and scatterers.

Using synthetic arrays enables efficient scaling with respect to the number of antennas. To see this, let NAtx denote the number of antennas at the transmitter, and let 𝐮PNAtx be the precoding vector. For a given path connecting the source to the measurement plane, let 𝐄2 represent the electric field observed at the measurement plane. By employing a synthetic array, the corresponding electric fields for each antenna element are obtained by applying the array response vector (30), denoted as 𝐮Atx, leading to

𝐄A=𝐄(𝐮Atx)𝖳. (45)

Here, 𝐄A is a matrix of size 2×NAtx, where each column represents the electric fields radiated by each transmit antenna. The contribution of this path to the radio map is given by

𝐄A𝐮P22. (46)

This expression allows the path’s contribution to the radio map to be represented as

𝐄A𝐮P22=(𝐄(𝐮Atx)𝖳𝐮P)22=𝐄α22 (47)

where α=(𝐮Atx)𝖳𝐮P is a scalar. Note that α depends on the departure direction of the path from the transmitter and thus varies for paths originating from the source. However, it remains independent of the array size. By precomputing α for each path, the effect of the transmitter array can be efficiently simulated by multiplying the electric field of each path by α once.

4.2 SBR-based Radio Map Solver

The Sionna RT built-in radio map solver calculates the estimator (43) using a single SBR loop. Unlike the path solver described in Section 3, it does not require an image method-based algorithm, as it only needs to test intersections with the measurement plane rather than connecting paths to precisely located target points. Additionally, the electric field for each ray tube is computed dynamically during the SBR loop as the paths are traced.

Algorithm 3 Radio map solver SBR loop
1: 𝐤^n(0)Fibonacci_Lattice(NS) Sample departure direction
2: 𝐄n(0)tx_pattern(𝐤^n(0)) Electric field
3: rn(0)0 Ray tube length
4: ωn(0)4πNS Ray tube solid angle
5: 𝐂=(C^1,,C^NM)=(0,,0) Radio map
6: activenTrue Path active flag
7: 𝐯n(0)𝐬 Path vertex
8: 1 Path depth
9: while L and activen do
10:      mp_intern,𝐯mp,n()MP_Intersection(𝐯n(1),𝐤^n(1))
11:      if mp_intern=True then
12:          𝐂Add_To_Radio_Map(𝐂,𝐄n(1),𝐤^n(1),rn(1),ωn(1),𝐯mp,n(),𝐯n(1))
13:      end if
14:      sc_intern,on(),𝐯n()Scene_Intersection(𝐯n(1),𝐤^n(1))
15:      activenactiven and sc_intern
16:      if activen=True then
17:          𝐓n(),𝐤^n(),χn()Sample_Evaluate_Interaction(on(),𝐄n(i1),𝐤^n(i1),ωn(1))
18:          𝐄n()𝐓n()𝐄n(1)qn()(χn())
19:          if χn()=𝒮 then
20:               ωn()2π
21:               rn(1)0
22:          end if
23:          rn()rn(1)+𝐯n()𝐯n(1)2
24:          +1
25:      end if
26: end while
27: 𝐂λ2(4π)2|C|𝐂
28: return 𝐂
29:
30: function Add_To_Radio_Map(𝐂,𝐄,𝐤^,r,ω,𝐯mp,𝐯)
31:      dr+𝐯mp𝐯2
32:      iGet_Map_Index(𝐯mp)
33:      𝐂i𝐂i+ωd2|𝐤^𝖳𝐧^mp|αn𝐄22
34:      return 𝐂
35: end function

Algorithm 3 outlines the SBR loop utilized by the Sionna RT radio map solver. While the algorithm is presented for a single path n, the radio map solver processes all paths in parallel. The process begins by sampling the departure direction for each ray using a Fibonacci lattice, as detailed in Section 3.1.1. The electric field is initialized using the transmit pattern evaluated at the path’s departure direction 𝐤^n(0). The ray tube length is initially set to zero, and its solid angle is set to 4π/NS, since the NS initial rays have departure directions on the unit sphere. The radio map is initialized to zero, and the path is marked as active. The SBR loop continues to trace the paths through the scene until a user-defined maximum depth L is reached or the ray is deactivated. The loop’s first step involves checking for intersections with the measurement plane. If an intersection is detected, the radio map is updated using the function Add_To_Radio_Map. The ray-plane intersection-checking function is not detailed in this document but is assumed to return the position of the intersection point 𝐯mp. The function Add_To_Radio_Map accumulates contributions to the radio map in the vector 𝐂=[C1,,CNM] at the intersected cell entry, as described in (43). Note that by iterating over path depth =0,,L and adding contributions to the radio map at every iteration, the radio map solver accounts for paths of all depths, from LoS to the maximum depth. The ray tube length is updated with the distance between the last intersection point and the measurement plane intersection point. Additionally, 𝐧^mp represents the normal vector to the measurement plane, and |𝐤^𝖳𝐧^mp| is the cosine of the angle between the ray direction and the measurement plane normal. The weight αn accounts for the transmitter array, as explained in Section 4.1.2. Next, the algorithm checks for intersections with the scene. If no intersection is found, the ray is deactivated as it has exited the scene. Otherwise, an interaction type χn() is sampled using the probability distribution from Section 3.1.2, and the radio material is evaluated for the sampled interaction type. This results in the transfer matrix 𝐓n() and the scattering direction 𝐤^n(). Unlike Algorithm 2, the function Sample_Evaluate_Interaction samples the interaction type, scattered direction, and evaluates the radio material. The electric field is updated by applying the transfer matrix 𝐓n() and dividing by the probability of the sampled interaction type. If the interaction type is diffuse, the ray tube length is reset to zero, and the solid angle weight is set to 2π, as diffuse reflection points act as new point sources, and as a single ray is emitted in the hemisphere containing the incident direction. Note that in the case of diffuse reflection, the matrix 𝐓n() applies the scaling by ωn(1). The SBR loop concludes by updating the ray tube length with the distance between the last and current intersection points. Finally, the radio map computation is completed by scaling by λ2/(4π)2 according to (35), and by the surface area of measurement cells, following the radio map definition in (33).

Refer to caption
(a) Scene with the radio map.
Refer to caption
(b) Computation time vs. number of samples NS.
Figure 25: Computation time for calculating radio maps using an NVIDIA RTX 4090 GPU for a single transmitter with a linear array of 1 to 1024 antennas.

Figure 25(b) illustrates the computation time needed to generate a radio map for a single source as the number of samples NS and the number of transmit antennas NAtx are varied. The setup, depicted in Figure 25(a), employs the “simple street canyon” scene built into Sionna RT. The red ball indicates the source, positioned 20 meters above the ground. The radio map in Figure 25(a) is calculated using 108 samples and a linear array of 512 transmit antennas. Notably, the radio map solver can compute radio maps with 109 samples on a single NVIDIA RTX 4090 GPU. The computation time increases with both the number of samples and antennas, exceeding one second only for the most demanding computations. It is important to note that while the computation time increases with the number of antennas due to the precomputation of the array weighting factor α, it does not increase the memory footprint of the radio map solver (see Section 4.1.2).

Handling of Dual-Polarized Transmit Antennas

The radio map solver supports dual-polarized transmit antennas by considering two independent electric field vectors for each path. These are processed as if they were separate antenna elements (see Section 4.1.2).

Scaling with the Number of Measurement Cells

A key benefit of the radio map solver is that the compute required to generate the radio map remains constant regardless of the number of measurement cells. However, increasing the number of measurement cells will naturally require more memory for storage. Additionally, when the size of the measurement cells is reduced, it may be necessary to increase the number of samples NS to maintain the accuracy of the estimator (43), as fewer paths will intersect with each measurement cell, resulting in noisier radio maps.

Early Termination with Russian Roulette and Gain Thresholding

The radio map solver allows for early deactivation of paths using two techniques: Russian roulette and gain thresholding. With gain thresholding, a path with ray tube length r is deactivated when the squared amplitude of the electric field 𝐄22 falls below a user-defined threshold. With Russian roulette, at each iteration, a path continues with a probability given by

prr=min(r2𝐄22,prr,max) (48)

where prr,max is the maximum probability, set by the user, for keeping the path active. Both features can be enabled simultaneously and are applied only after a user-defined depth is reached.

Extension to other Types of Radio Maps

The Sionna RT solver currently supports the calculation of channel gain maps, which are radio maps that provide an estimate of the channel gain for each cell. It is possible to extend the solver to calculate other types of radio maps, such as root-mean-square delay spread maps and angular spread maps [18].