Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This pull request introduces a refraction simulation feature. The refraction model is based on the single slab model with internal reflections as described on page 14 of the ITU document [1]. This addition addresses the discussion raised in (#528).
[1] “Effects of building materials and structures on radiowave propagation above about 100 MHz.”
Here is a demonstration of the traced refraction paths in examples/Sionna_Ray_Tracing_Refraction.ipynb:
This PR is contributed by Dr. Zhenlin An, Dr. Longfei Shangguan (University of Pittsburgh), Prof. Kyle Jamieson (Princeton University), John Kaewell, and Philip Pietraski (InterDigital).
NA.
New refraction simulation implemented as follows
My approach first revises the
_list_candidates_fibonacci()
method to additionally trace possible refraction paths and logs the incident points. We trace the first-order refraction ray and then let them pass through the objects and have multi-order reflection interactions. I add arefraction_image_method()
to use the image method to check the valid refraction with multiple reflections, record the one-order refraction directly received by the receivers, and merge them with existing paths. We also add a new refraction type in thepath class
to store the traced refraction paths. Subsequently, I added arefraction_transition_matrices()
to calculate the transmission and reflection coefficients based on the ITU slab model and revised thecompute_field()
method to access the object thickness and compute the refraction path coefficients.All changes do not impact the existing path tracing.
Changes Introduced in
scene.py
:Revised
trace_path()
andcompute_field()
Function:- Added refraction flag to the path tracing and field computation.
New Testing Scenarios in
scene
:- Added a test scenario involving a scene with two thick brick walls and a thick concrete floor to validate the new refraction logic.
Changes Introduced in
solver_path.py
:Enhanced
_list_candidates_fibonacci()
Function:- Introduced to trace the first-order refraction and subsequent multiple-order reflection paths (TX-hitting→penetration→hitting→reflection ... reflection →RX).
- Updated to return candidates and hitting points that account for refraction effects.
New
_refraction_image_method()
Function:- Modified to add first-order refraction simulation and record hitting points.
New
_refraction_transition_matrices()
Function:- Added to compute the refraction matrix using ITU R2040 slab model.
Changes Introduced in
solver_base.py
:_build_scene_object_properties_tensors
Function:- Access the thickness property for scene objects for field computation.
Changes Introduced in
radio_material.py
:Revised
well_define()
Function:- Made the function differentiable to support frequency updates in gradient-based optimization.
Added Thickness properties:
- Introduced a new attribute/interface for thickness in the material initialization.
- Update the constructor to accept and initialize the thickness property.
Changes Introduced in
path.py
:cir()
Function:- Included merging for refraction paths in the CIR() computation.
Changes Introduced in
utils.py
:layer_refraction_coefficient()
andlayer_reflection_coefficient()
Function:- compute the refraction and reflection coefficient considering the thickness of the layer using the slab model in the ITU R2040 document for accurate refraction calculations.
Please detail the nature of the submission.
Checklist