Next, we describe both the geometrical model of the stage and the physical model of wave propagation using game engines and hardware acceleration. The estimation of channel parameters depends, to a large extent, on these representations.
2.1. Description of the Test Scenario
The accuracy of the results of the ray launcher is intimately linked with the description of the environment or 3D scenario for both indoor and outdoor environments. The representation of the scatterers as well as their constitutive parameters must be included in a high-resolution model, and the representation must include both the electromagnetic characteristics of the materials and the dimensions of each one of the scenario elements.
shows a photograph (right) of the laboratory at the Polytechnic University of Cartagena (UPCT), Spain, used for measurements and its 3D computational model (left). The scenario has dimensions of 6.40 m x 4.44 m x 2.60 m. Five classes of materials present in the analysis scenario were identified. The floor and columns consist of concrete, glass windows, wooden furniture with metal frames and a plaster ceiling. On the left, the game engine representation is shown, where the red sphere represents the transmitter position and the blue sphere represents the receiver position (setup of 5 transmitting antennas) for a total of 180 MIMO channels.
The measurements were made at different locations inside the laboratory, as shown in Figure 2
. Each one of the triangles (transmitters) represents a virtual uniform rectangular array (URA) composed of 6 x 6 positions, and the receiver is a virtual uniform linear array (ULA) composed of 1 x 5 positions. Thus, 180 MIMO channels were measured in each one of the locations. The separation distance between each location is 1 m in length and 0.5 m in width.
The initial values used for the relative permittivity and the conductivity of the scenario materials were provided by the UPCT advisors (mentioned in the Acknowledgments) and are shown in Table 1
In the literature, the nominal values of relative permittivity and conductivity for wood, concrete and glass can be found for specific materials and at low frequencies, far from the measurement frequencies. For this reason, measured values were taken in [12
shows a scheme of the system used for the measurements. The frequency response is measured using a vector network analyzer. Then, the inverse Fourier transform is applied to obtain the complex impulse response (CIR) in the time domain. Once all CIRs are collected for one location the PDP is obtained as usual by averaging the CIRs. The range of measurements was between 57 GHz and 66 GHz with 4096 frequency points. The measurement system used consists of two groups of identical omnidirectional antennas in virtual arrays (Q-pair QOM55-65 VRA) with vertical polarization and gain ranging from 4 to 5.1 dBi along the bandwidth. In each array, the antenna elements, both in reception and transmission, are separated equidistantly 2 mm, which in terms of wavelengths gives a ratio of
. In addition, the antennas have an omnidirectional radiation pattern in the H plane and a medium power beam centered at 40°, 28° and 21° for the frequencies of 55 GHz, 60 GHz and 65 GHz, respectively.
The antennas are supported on metal structures 1.44 m high for the transmitter and 1.54 m for the receiver. They are connected with a coaxial cable to the Rohde & Schwartz ZVA67 vector network analyzer whose transmission power was –10 dBm. To compensate for the attenuation effects of the coaxial cables, amplifiers (HXI HLNA-465) with maximum gains of 25 dB were used, whose effects were measured and adjusted. In order to obtain precision, a software was created for positioning with servomotors and operated from outside the environment to maintain the channel stationary. With an intermediate frequency of 10 Hz, a dynamic range of more than 100 dB was obtained.
The 3D model of the scenario was obtained using plane geometries to represent all the objects. Each of the physical geometries of the objects present in a laboratory can be modeled by combining some basic primitive geometries, which altogether achieve great geometric resolution. However, in the selected scenario, the environment and the present objects do not have great geometric complexity and are composed of flat surfaces with their respective properties of dimension, thickness, permittivity and conductivity. Likewise, to identify the impact of the propagation wave on the edges, a cylinder shape was used. Furthermore, to represent the measurement points and to identify the rays that impact on them, the geometry of the reception sphere was used.
The open source multiplatform tool Blender 2.74 was used to develop 3D modeling of the internal environment, which uses Python as an internal programming language. In a first phase, the data are selected to create the environment according to the measurements of the realistic UPCT scenario, obtaining the points of the XY coordinates with their respective height for each element that is included in the study environment.
In Blender each object is included by adding a cube-type mesh in the scene for the walls, floor, ceiling, windows and other elements of the environment. Additionally, each material is represented as textures that are incorporated in the model, by means of the texturing technique mapped in 2D coordinates (UV), which allows to establish a correspondence between the vertices of an object and the coordinates of a texture.
Assigning an image to each polygon according to the material in the model of the environment, to improve rendering, you get great 3D resolution providing realism to the scenario. Finally, before exporting the files, the transformations of scale, units, rotation and location of the scene applied in the 3D environment of Blender must be considered. This is important in order to apply the changes of the scene with the characteristics of the model as material, meshes and associated textures, to later import the model in the JME (Java Monkey Engine). Subsequently, the 3D scenario in Blender format is exported to a format compatible with the game engines.
2.2. Channel Modeling
The brute force method employed uses the theory of the optical beam that allows to separate each propagation mechanism (reflection, diffraction and dispersion) with the advantage of applying optical geometry. It is based on the SBR (Shooting and Bouncing Ray) algorithm. First, rays are launched from the transmitting antenna, and then the ray trajectories are traced, allowing us to see if it hits any object in the environment or if it reaches the receiving antenna. When the beam hits a flat surface, a reflected beam is generated and another transmitted by the interface, but if the beam hits an edge, a large amount of diffracted rays are generated and each of them is drawn until it hits another object and so on until it is discarded as having less power than the sensitivity of the receiver, or successfully impacting the receiver. Finally, the ray characteristics associated with the propagation are calculated.
The ray launching method applies the Fermat principle and the local field principle to model rays. Fermat’s principle states that a ray follows the shortest path from the source to the field point, while the principle of the local field states that when the rays strike a surface, they experience reflection, refraction and diffraction, and at high frequencies, it only depends on the electrical and geometric properties of the scatterers.
Each ray is associated with a complex and vectorial electric field of amplitude, which is computed taking into account the field emitted in the transmitter, the losses in the free space, the reflections, and the diffractions and diffusions experienced by the ray in which the appropriate models are used. The losses in the free space are represented by the Friss equation, and the reflections are represented by applying the Fresnel reflection coefficients, while for diffraction the vector field is multiplied by the relevant diffraction coefficients and obtained from the UTD theory, using a modification of Luebber’s coefficients.
2.6. Hardware Acceleration
In programming using game engines, if the computer architecture offers multiple processors, it can allow the programmer to parallelize the game so that it can use all the resources and have improvements in performance. In Java, there is a Remote Method Invocation (RMI) to maximize the efficiency of multi-core processors. RMI allows the programmer to distribute the processes in which remote objects are invoked.
Multiple Java virtual machines (JVMs) were used on a single computer to parallelize the tasks and thus be able to use the multi-core processor as a system of distributed processes.
As a result of the pre-processing of rays, the list of stored candidate rays is taken and processed by the RMI server, executing a game engine for each nucleus and delivering a batch of candidate rays from the list. The RMI server stores in memory the list of the initial addresses of the rays to be launched from the transmitter, and then sends them sequentially and in order.
The game engine, upon receiving the address list of the rays to be launched from the transmitter, generates the rays with their initial parameters to be launched. Then it launches the generated rays into the environment, and they are processed in the GPU. In this stage, the GPU is efficiently used when processing a large number of rays in parallel and without displaying them on a monitor or screen. In the next rendering cycle, the GPU returns the list of processed rays to the CPU so that the game engine processes reception, reflection and diffraction, and generates the new list of rays to be launched in the next cycle. This process is repeated iteratively while the number of events is within the initial parameters.
The game engine receives from the graphics card a list of the rays that were processed by the GPU. The algorithm reads sequentially from the list of candidate rays, one by one, and identifies for each ray if it impacted with an object and determines the object with which it impacted (sphere, cylinder or plane). Depending on the impact object, it validates the impact and calculates its multipath parameters and verifies that the power level is above the threshold to continue or discard the ray.
In case of reflection or diffraction, it generates the new rays with their parameters to store them in a new list of rays to be launched from the impact position. Then it checks if there are more rays to be processed, and if it does, it reads the next ray in the list and processes it, otherwise, it ends the cycle for the rays sent by the GPU. Therefore, once all the rays are launched from a transmitter, it is possible to calculate the electric field at any reference point within the scenario.