Skip to content

Releases: qpv-research-group/rayflare

v2.0.1

26 Sep 11:41
Compare
Choose a tag to compare
  • Remove unnecessary print statement which were used for debugging purpose
  • Avoid divide-by-zero warnings in analytical_rt

v2.0.0

23 Sep 12:40
Compare
Choose a tag to compare
  • 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

20 Nov 00:02
abea738
Compare
Choose a tag to compare
  • 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

21 Mar 08:21
Compare
Choose a tag to compare
  • 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 and options.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)

v1.1.0

05 Oct 05:06
Compare
Choose a tag to compare

Various updates and bug fixes; added functions to pass absorption profiles to Solcore for electrical calculations (and related examples).

v1.0.1

24 Sep 12:34
Compare
Choose a tag to compare

Release corresponding to publication of the JOSS paper.

v1.0.0

24 May 21:51
f2016f1
Compare
Choose a tag to compare
Merge pull request #27 from qpv-research-group/update_docs

Update docs