Quadriga-Lib
C++/MEX/Python Utility library for radio channel modelling and simulations
C++ API Documentation for Quadriga-Lib v0.10.1


Overview
Array antenna class
Array antenna functions
Channel class
Channel functions
Channel generation functions
Miscellaneous tools
Site-Specific Simulation Tools




Array antenna class



arrayant - Class for storing and manipulating array antenna models


.append - Append elements of another antenna array


.calc_directivity_dbi - Calculate the directivity (in dBi) of array antenna elements


.combine_pattern - Calculate effective radiation patterns for array antennas


.copy_element - Creates a copy of a single array antenna element


.export_obj_file - Export antenna pattern geometry to Wavefront OBJ file


.interpolate - Interpolate array antenna field patterns


.qdant_write - Write array antenna object and layout to QDANT file


.remove_zeros - Remove zeros from antenna pattern data


.rotate_pattern - Adjust orientation of antenna patterns


.set_size - Change size of antenna array object


.is_valid - Validate integrity of antenna array object




Array antenna functions



qdant_read - Reads array antenna data from QDANT files


generate_arrayant_omni - Generate isotropic radiator with vertical polarization


generate_arrayant_xpol - Generate cross-polarized isotropic radiator


generate_arrayant_dipole - Generate short dipole with vertical polarization


generate_arrayant_half_wave_dipole - Generate half-wave dipole with vertical polarization


generate_arrayant_custom - Generate antenna with custom 3dB beamwidth


generate_arrayant_ula - Generate an unified linear array


generate_arrayant_3gpp - Generate 3GPP-NR compliant antenna model


generate_arrayant_multibeam - Generate a planar multi-element antenna with support for multiple beam directions.




Channel class



channel - Class for storing and managing MIMO channel data and associated metadata


.add_paths - Append new propagation paths to an existing channel snapshot


.calc_effective_path_gain - Calculate the effective path gain for each snapshot (in linear scale)


.write_paths_to_obj_file - Export propagation paths to a Wavefront OBJ file




Channel functions



any_type_id - Get type ID and raw access from a 'std::any' object


baseband_freq_response - Compute the baseband frequency response of a MIMO channel


baseband_freq_response_vec - Compute the baseband frequency response of multiple MIMO channels


get_hdf5_version - Get the version of the linked HDF5 library


hdf5_create - Create a new HDF5 channel file with a defined storage layout


hdf5_read_layout - Read the HDF5 channel storage layout


hdf5_write - Write channel data to HDF5 file


hdf5_read_channel - Read a channel object from an HDF5 file


hdf5_reshape_layout - Reshape the storage layout of an HDF5 channel file


hdf5_read_dset - Read an unstructured dataset from an HDF5 file


hdf5_read_dset_names - Read names of unstructured datasets from an HDF5 file


hdf5_write_dset - Write a single unstructured dataset to an HDF5 file




Channel generation functions



get_channels_ieee_indoor - Generate indoor MIMO channel realizations for IEEE TGn/TGac/TGax/TGah models


get_channels_irs - Calculate channel coefficients for intelligent reflective surfaces (IRS)


get_channels_planar - Calculate channel coefficients for planar waves


get_channels_spherical - Calculate channel coefficients for spherical waves




Miscellaneous tools



calc_rotation_matrix - Calculate rotation matrices from Euler angles


cart2geo - Convert Cartesian coordinates to geographic coordinates (azimuth, elevation, distance)


colormap - Generate colormap


fast_sincos - Fast, approximate sine/cosine


geo2cart - Transform geographic (azimuth, elevation, length) to Cartesian coordinates


interp_1d / interp_2d - Perform linear interpolation (1D or 2D) on single or multiple data sets.


write_png - Write data to a PNG file




Site-Specific Simulation Tools



calc_diffraction_gain - Calculate diffraction gain for multiple transmit and receive positions


combine_irs_coord - Combine path interaction coordinates for channels with intelligent reflective surfaces (IRS)


coord2path - Convert path interaction coordinates into FBS/LBS positions, path length and angles


generate_diffraction_paths - Generate propagation paths for estimating the diffraction gain


icosphere - Construct a geodesic polyhedron (icosphere) from triangles


mitsuba_xml_file_write - Write geometry and material data to a Mitsuba 3 XML scene file.


obj_file_read - Read Wavefront `.obj` file and extract geometry and material information


obj_overlap_test - Detect overlapping 3D objects in a triangular mesh


path_to_tube - Convert a 3D path into a tube surface for visualization


point_cloud_aabb - Compute the Axis-Aligned Bounding Boxes (AABB) of a 3D point cloud


point_cloud_segmentation - Reorganize a point cloud into spatial sub-clouds for efficient processing


point_cloud_split - Split a point cloud into two sub-clouds along a spatial axis


point_inside_mesh - Test whether 3D points are inside a triangle mesh using raycasting


ray_mesh_interact - Calculates interactions (reflection, transmission, refraction) of radio waves with objects


ray_point_intersect - Calculates the intersection of ray beams with points in three dimensions


ray_triangle_intersect - Calculates the intersection of rays and triangles in three dimensions


subdivide_rays - Subdivide ray beams into four smaller sub-beams


subdivide_triangles - Subdivide triangles into smaller triangles


triangle_mesh_aabb - Calculate the axis-aligned bounding box (AABB) of a triangle mesh and its sub-meshes


triangle_mesh_segmentation - Reorganize a 3D mesh into smaller sub-meshes for faster processing


triangle_mesh_split - Split a 3D mesh into two sub-meshes along a given axis