2.6 KiB
2.6 KiB
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.
- 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)
- Bessel, Legendre functions (see also branch
- 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.