RT material assets¶
Validated with documented limitations.
1. The component¶
rfgen.rt_assets validates versioned electromagnetic-material and antenna-pattern assets before it binds them to Sionna RT. Sionna RT is a ray-tracing library that computes propagation paths through a three-dimensional scene; Mitsuba is the scene and geometry runtime beneath that public Sionna interface. The component owns input validation, interpolation, ordering, and solve provenance. It does not implement a ray tracer or substitute a material-physics model for Sionna.
class RTAssetLibrary:
def load_material(
self, asset: RTMaterialAssetV1 | Mapping[str, Any]
) -> SionnaMaterialBinding: ...
def load_pattern(
self, asset: AntennaPatternAssetV1 | Mapping[str, Any]
) -> SionnaPatternBinding: ...
def assign(
self, scene: Any, assignments: Mapping[str, str],
policy: MissingMaterialPolicy = MissingMaterialPolicy.ERROR,
*, frequency_hz: float, default_id: str | None = None,
scene_hash: str = "", device: str = "cpu",
backend: str = "sionna-rt",
) -> RTAssignmentReportV1: ...
Parameter |
Type |
Units |
Default |
Purpose |
|---|---|---|---|---|
|
|
Hz |
none |
Requested solve frequency; Hz means cycles per second. |
|
mapping of strings |
none |
none |
Maps each scene object ID to a registered material ID. |
|
|
none |
|
Makes an unassigned object an error or uses one explicit named default. |
|
|
none |
none |
Cryptographic digest that binds a report to the solved scene bytes. |
library = RTAssetLibrary()
binding = library.load_material(asset)
report = library.assign(
scene, {"wall": asset.material_id}, frequency_hz=1_500_000_000.0,
scene_hash="sha256:" + "b" * 64,
)
assert report.assignments == (("wall", asset.material_id),)
Material assets use strictly increasing positive frequency samples, finite relative permittivity, the dielectric response factor, of at least one, nonnegative conductivity in siemens per metre, Software Package Data Exchange (SPDX) license metadata, and a declared content digest. Values between samples use linear interpolation; every extrapolation raises RTAssetValidationError. Assignment preflights the requested frequency before changing a scene object, records deterministic UTF-8 byte ordering, and rejects duplicate or missing IDs.
An antenna pattern stores complex co-polar and cross-polar angular samples. A singleton-frequency table binds through Sionna’s public register_antenna_pattern callback, which receives only polar angle theta and azimuth phi. A multi-frequency table fails closed because that public callback has no solve-frequency argument; selecting one frequency slice or discarding frequency semantics would make the bound pattern ambiguous.
2. What we validated¶
This validation establishes five load-bearing claims. Each is supported in §3.
Strict asset boundary (§3.1): material and pattern data bind only within declared representable scope.
Free-space direct path (§3.2): the public solver’s direct-path loss matches the Friis reference.
PEC reflection (§3.3): the public solver preserves the perfect-conductor reflected-path power and phase relation.
Dielectric two-ray reflection (§3.4): the public solver’s reflected power agrees with the selected Fresnel reference.
CPU repeatability (§3.5): repeated material-bound solves remain inside committed delay and power limits.
3. Evidence per claim¶
3.1 Strict asset boundary¶
Claim. RTMaterialAssetV1, AntennaPatternAssetV1, and RTAssetLibrary reject malformed, ambiguous, out-of-range, and backend-unrepresentable inputs before a solve.
The focused unit and integration gate ran 24 tests with 2 warnings. It validates strict numeric JSON fields, grid and tensor shapes, license and digest format, variance interpolation for uncertainty, byte-sorted object IDs, duplicate-ID rejection without replacement, missing-object rejection, and pre-mutation out-of-grid frequency rejection. The two warnings concern Sionna’s intentionally non-content-addressed built-in Munich URI; they do not alter these fixture bytes or their thresholds.
The material callback is bound through public RadioMaterial APIs and is preflighted at the requested solve frequency. A non-unity complex relative magnetic permeability, written (\mu_r), the field response to magnetization, is rejected because the public Sionna material interface represents relative permittivity and conductivity but not that magnetic parameter. This prevents an accepted asset from losing a physical field at backend binding.
The immutable corpus comprises materials-v1.json, physical-reference-v1.json, pec-reflection.xml, and dielectric-two-ray.xml. The integration gate verifies each file against the adjacent SHA-256 manifest before parsing or live loading. The angular callback accepts one frequency only; multi-frequency pattern tables raise BackendUnavailableError, while singleton-frequency tables use public theta/phi interpolation.
3.2 Free-space direct path¶
Claim. The material-bound public Sionna solve returns a line-of-sight (LOS), meaning an unobstructed transmitter-to-receiver path, whose loss agrees with the free-space reference.
For a 6 m direct path at 1.5 GHz, the fixture evaluates the Friis free-space path-loss equation
[ L_\mathrm{dB}=20\log_{10}!\left(\frac{4\pi d f}{c}\right), ]
where (d) is distance, (f) is frequency, and (c=299,792,458\ \mathrm{m/s}). A decibel (dB) is a logarithmic power ratio. The public Sionna Paths.cir coefficient gives 51.5326342 dB; the independently computed Friis reference is 51.5326334 dB. Their absolute difference is below the committed 0.25 dB threshold. The fixture also identifies exactly one all-NONE interaction path as LOS, rather than assuming a solver array slot is the direct path, and checks its delay against the 6 m geometric delay within 1 ps.
Friis, H. T., “A Note on a Simple Transmission Formula,” Proceedings of the IRE, 34(5), pp. 254–256 (1946), DOI 10.1109/JRPROC.1946.234568, supplies the free-space formula used for this reference.
3.3 PEC reflection¶
Claim. The public solver produces one specular, meaning mirror-like, reflected path from the perfect electric conductor (PEC) fixture with the expected relative power and reflection phase.
The direct and reflected fixture path lengths are 6 m and 8.485281374 m. With a PEC reflection coefficient (\Gamma=-1), the predicted relative power is ((6/8.485281374)^2), or -3.0103000 dB. The live public Sionna coefficient reports -3.0103028 dB reflected/direct power. Its error is inside the committed 0.5 dB limit. The test also compares the complex relative phase to propagation over the path-length excess plus the PEC phase of (\pi), with a committed 0.05 rad threshold. It identifies exactly one SPECULAR path through public interactions, then validates its delay against the 8.485281374 m geometry within 1 ps.
For a lossless non-magnetic interface, the plane-wave boundary conditions give the Fresnel reflection coefficients, boundary-condition ratios between reflected and incident fields; their PEC limit is (\Gamma=-1) for the selected field component. Balanis, C. A., Advanced Engineering Electromagnetics, 2nd ed., Wiley, 2012, ISBN 978-0-470-58948-9, Chapter 5, “Reflection and Transmission,” especially Eqs. 5-17 and 5-24, is the canonical equation reference.
3.4 Dielectric two-ray reflection¶
Claim. The public solver’s dielectric reflected-path power agrees with the selected non-magnetic Fresnel coefficient at the fixture incidence angle.
At relative permittivity (\epsilon_r=5) and incident angle (\theta_i=\pi/4), the fixture uses
[ \left|\Gamma\right|=\left|\frac{\cos\theta_i-\sqrt{\epsilon_r-\sin^2\theta_i}} {\cos\theta_i+\sqrt{\epsilon_r-\sin^2\theta_i}}\right|=0.5. ]
Combining that field-amplitude ratio with the two geometric path lengths predicts a reflected/direct power ratio of -9.0308999 dB. The live public Sionna result is -9.9767499 dB, an absolute error of 0.9458500 dB, inside the fixture’s 1 dB threshold. As with the PEC fixture, public interaction identifiers yield exactly one LOS and one specular path; their absolute delays satisfy the committed 1 ps geometry tolerance.
The coefficient is the lossless, non-magnetic plane-wave Fresnel expression in Balanis, Advanced Engineering Electromagnetics, 2nd ed., Chapter 5, Eqs. 5-24 through 5-25. This is a two-ray model-conformance check, not a claim that the JSON values calibrate a manufactured dielectric surface.
3.5 CPU repeatability¶
Claim. Repeated CPU solves of each immutable material-bound fixture satisfy the committed repeatability envelope.
The integration test solves each public Sionna fixture twice on CPU. For both direct and specular paths, the delay difference is at most 1 ns and the power difference is at most 0.25 dB. A separate repeated built-in Munich solve applies the same thresholds to its dominant path. These checks detect CPU-run variation in the live path calculation; they do not convert a deterministic simulation into a measurement of real hardware or a surveyed location.
Sionna’s public RT documentation defines the Scene, PathSolver, Paths, RadioMaterial, and AntennaPattern interfaces exercised by these tests. The immutable XML and JSON files retain the reference coordinates, material values, expected path identities, and numerical tolerances next to the executable tests.
4. Limits and what is not validated¶
This report validates deterministic Sionna/Mitsuba model conformance for the committed CPU fixtures. It is not hardware-in-the-loop evidence, meaning a test with physical RF equipment connected to the software. It is not a calibrated-material measurement, antenna-calibration result, or site-survey result. No statement here establishes sim-to-real agreement for a particular wall, antenna, or deployment.
The dielectric reference uses a lossless, non-magnetic scalar relative permittivity at one selected incidence angle and polarization. Loss tangent, anisotropy, rough-surface scattering, layered media, dispersive magnetic response, and near-field antenna effects are outside this fixture model. The implementation rejects non-unity relative magnetic permeability instead of pretending the public backend can encode it.
Material interpolation is confined to each asset’s declared frequency grid. Out-of-grid input is an error. Public Sionna pattern registration supplies angular coordinates but no solve-frequency selector, so only singleton-frequency angular tables can bind; multi-frequency angular data is rejected until a public frequency-aware API exists. The committed CPU thresholds bound repeatability for this software and fixture combination only; CUDA, different solver versions, other hardware, and larger scenes are not validated here.
5. References¶
Reference |
Identifier, version, and role |
|---|---|
Friis free-space equation |
Friis, H. T. (1946), “A Note on a Simple Transmission Formula,” Proceedings of the IRE 34(5), 254–256, DOI 10.1109/JRPROC.1946.234568; reference for §3.2. |
Fresnel and PEC coefficients |
Balanis, C. A. (2012), Advanced Engineering Electromagnetics, 2nd ed., Wiley, ISBN |
Sionna RT |
PyPI |
Mitsuba |
PyPI |
Dr.Jit |
PyPI |
NumPy |
PyPI |