Releases: qpv-research-group/rayflare
Releases · qpv-research-group/rayflare
v2.0.1
v2.0.0
- Require Python 3.9 or higher (previously 3.7 or higher).
- Installation moved from setup.py to pyproject.toml
- 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.
- 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
v1.2.1
- Add the possibility to use Inkstone for RCWA calculations (no compilation required)
- Improve calculations for u-polarized light, for S4 and Inkstone (single calculation rather than averaging s and p)
- Simplify how R/A/T are calculated for S4 (no longer need incidence n/angle in calculation)
- Change print statements to logging
v1.2.0
- Add ability to use pre-calculated TMM lookup tables directly in ray-tracing (as opposed to the currently-implemented functionality, which allows this only for a single surface in combination with the angular redistribution matrix method)
- Make automatic calculation of x and y limits for ray-tracing more robust
- Remove avoid_limits option, user can set
options.x_limits
andoptions.y_limits
manually - Add functions for generating a roughened planar surface (
rough_planar_surface
), roughened pyramids (rough_pyramids
), and a (roughened or smooth) surface with hemispherical caps (hemisphere_surface
) - Remove random_pyramids function based on scan data
- Change behaviour in
single_ray_stack
so that the ray position is randomised to strike somewhere inside the unit cell, even if the surface is not periodic (periodic = False
in options) - Fix issue in tmm_structure.calculate where unphysical values for A_per_layer were calculated (datatype error in numpy array)?
- Fix test comparing periodic and non-periodic ray-tracing
- Change make_absorption_function to require a different result input format (the full result of the optical calculation, rather than just the profile part). This is to standardize its behaviour across all methods
- Add
overwrite
argument to process_structure() and rt_structure.calculate() to overwrite rather than load previously-generated lookup tables/redistribution matrices - Fix bug in calculation of bulk absorption profile for backwards-travelling rays in angular redistribution matrix method (#56)
- Fix bug in calculation of coefficients for TMM profile calculation generated during lookup table creation; if not all profile layers were requested, the
prof_layers
list was not getting flipped correctly to calculate the coefficients for the right layers. This only affected contributions to the absorption profile for rear incidence on a surface (usually negligible)