Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analytical method for regular RT structures and Lambertian scattering approximation #68

Merged
merged 73 commits into from
Sep 23, 2024

Conversation

phoebe-p
Copy link
Member

@phoebe-p phoebe-p commented Mar 18, 2024

  • Speed improvements for all ray-tracing calculations, by using numba jit (just-in-time) compilation of heavily-used
    functions, and more efficient lookup of TMM values for integrated ray-tracing/TMM calculations.
  • New analytical method for ray-tracing, which is much faster than full ray-tracing and can be used with full
    accuracy for surfaces where the number of ray interactions is known exactly in advance (e.g. upright pyramids with
    opening angles between 45 and 54 degrees). Note that the calculation of absorption profiles in interface layers
    is not yet implemented for this method (though this is on the roadmap, as there is no fundamental reason this
    cannot be done). Absorption in bulk layers is calculated as usual if the analytical method is used. This option
    can be toggled on per surface in an rt_structure object.
  • Phong scattering: a new option for the ray-tracer, which allows additional non-specular scattering. The continuum
    between perfectly specular and Lambertian scattering can be controlled with the Phong exponent.
  • Rigorous treatment of polarization in ray-tracing (no changes to treatment of polarization in TMM and RCWA calculations).
  • Option to set a maximum number of bulk passes for the ray-tracer using the maximum_passes option
  • More detailed output from ray-tracing calculations, and re-organization of returned data.
  • Move to uv for install in GitHub actions instead of pip (faster)
  • Schedule weekly test run on GitHub actions
  • fix issues with examples in documentation
  • new examples for new functionality
  • lens_hyperhemisphere_rt parallelised over angles
  • faster matrix multiplication for ARRM using einsum (thanks to Johnson Wong @arsonwong)
  • default number of lookuptable angles changed from 300 to 200
  • remove ability to set options.wavelengths (plural) instead of options.wavelength (next major version release deprecation)
  • fix issue in TMM with zero thickness incoherent layers
  • move to state (options.option) rather than dictionary (options["option"]) notation in multiple files
  • new process_pol function to process strings or list into (s, p) format
  • new tests for new functionality

Copy link

codecov bot commented Mar 18, 2024

Codecov Report

Attention: Patch coverage is 95.86592% with 37 lines in your changes missing coverage. Please review.

Project coverage is 93.65%. Comparing base (fd08085) to head (c692277).

Files with missing lines Patch % Lines
rayflare/ray_tracing/rt_common.py 95.04% 16 Missing ⚠️
rayflare/ray_tracing/rt_matrix.py 96.00% 11 Missing ⚠️
rayflare/ray_tracing/analytical_rt.py 96.49% 10 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##            devel      #68      +/-   ##
==========================================
+ Coverage   92.70%   93.65%   +0.95%     
==========================================
  Files          20       23       +3     
  Lines        3057     3737     +680     
==========================================
+ Hits         2834     3500     +666     
- Misses        223      237      +14     
Flag Coverage Δ
93.65% <95.86%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@phoebe-p phoebe-p merged commit 7aad988 into devel Sep 23, 2024
16 of 25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant