Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- **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. - Refactored rt code into three separate files: rt_common (for function used for both ARRM and rt_structure calculations), rt_structure and rt_matrix. - **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 returns. - 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
- Loading branch information