Recent Releases of RayFlare
RayFlare - 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: rtcommon (for function used for both ARRM and rtstructure calculations), rtstructure and rtmatrix.
- 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
- lenshyperhemispherert 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
Scientific Software - Peer-reviewed
- Python
Published by phoebe-p over 1 year ago
RayFlare - 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
Scientific Software - Peer-reviewed
- Python
Published by phoebe-p over 2 years ago
RayFlare - 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 avoidlimits option, user can set `options.xlimits
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_stackso that the ray position is randomised to strike somewhere inside the unit cell, even if the surface is not periodic (periodic = Falsein options) - Fix issue in tmmstructure.calculate where unphysical values for Aper_layer were calculated (datatype error in numpy array)?
- Fix test comparing periodic and non-periodic ray-tracing
- Change makeabsorptionfunction 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
overwriteargument to processstructure() and rtstructure.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_layerslist 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)
Scientific Software - Peer-reviewed
- Python
Published by phoebe-p about 3 years ago