QPMS
Electromagnetic multiple scattering library and toolkit.
TODO list before 1.0 release
Tests!
Docs!
Cross section calculations. (Done in some Python scripts.)
Field calculations. (Partly done, needs more testing.)
Also test periodic vs. nonperiodic consistence (big finite lattice + absorbing medium vs. infinite lattice + absorbing medium).
Complex frequencies, n's, k's. (Mostly done.)
Transforming point (meta)generators.
Check whether moble's quaternions and my quaternions give the same results in tmatrices.py
Ewald summations of all types of lattices (dimensionality-wise).
Split
lattices.h
into separate point generator and lattice vector manipulation parts.
Maybe move something from the .h to .c file.
Check exact normalisation convention of scuff-tmatrix output.
Check whether the Condon-Shortley phase affects the form of Wigner matrices.
The xflip, yflip and possible i-factor problem.
General 3D point group symmetries.
Instead the current hard-coded limited set.
The generation, finding subgroups etc. should be "easy" with quaternions and stuff, as the set is quite limited, see
Wikipedia
.
Not sure about the representations, though.
As a description of a T-matrix / particle metadata.
Nice CLI for all general enough utilities.
Remove legacy code.
Split
qpms_c.pyx
.
Reduce compiler warnings.
Serialisation (saving, loading) of
ScatteringSystem
and other structures.
Python exceptions instead of hard crashes in the C library where possible.
Scatsystem init sometimes fail due to rounding errors and hardcoded absolute tolerance in the
qpms_tmatrix_isclose()
call.
Prefix all identifiers. Maybe think about a different prefix than qpms?
Consistent indentation and style overall.
Rewrite the parallelized translation matrix, mode problem matrix generators in a way that reuses as much code as possible without copypasting
Nice but less important features
Static, thread-safe caches of constant coefficients + API without the current "calculators".
Optimisations
Leaving out the irrelevant elements if a "rectangular" block of the translations matrix is needed.
Ewald sums with "non-parallel" shifts (are about 20 times slower than the purely parallel ones).
Reusing intermediate results (profiling needed)
Bessel, Legendre functions (see also branch
finite_lattice_speedup
)
Lattice points (sorting and scaling)
Γ/Δ functions (for periodic lattices)
More parallelisation.
Possibly pre-calculation of the (precise) coefficients in Bessel and Legendre functions (using gmp)
Asymptotic approximations of the Bessel functions for far fields.
Generated on Fri Jun 10 2022 12:43:00 for QPMS by
1.9.1