Closed Alphaharrius closed 8 months ago
The solution is to create the lookup table structure PhaseTable
that also includes the actual eigenvalue from a given phase computed from some inputs (which often is not so accurate). Apart from this change we also included an API extension to the FockMap
which helps to generate a transformation of outspace
or inspace
to handle the symmetrizing problem with unusual unit-cell (that does not contained within the positive parallelogram of the real space).
Yet this fix unfortunately removed the feature of adding custom eigenfunction instead of using the computed version.
This fix also included a revamped implementation of *(::AffineTransform, ::RegionState)
which supports manual symmetrization if there are no unitary transformation found that can correctly diagonalize the given set of isometry to U(1)
irreducible representations (which mean the single-particle states given by the isometries are not symmetric in any perspective). The manual symmetrization process will only be performed on quasi-symmetrical isometries (which the U(1)
phases of the isometry under diagonalization is approximately equal to the actual phases of the symmetry up to some tolerance).
Description
The current method to store the eigenfunction for a given
AffineTransform
is done viaDict{Tuple, BasisFunction}
, for which the tuple stores the combination of function order and the rationalized eigenvalue. Yet we know that rationalization induces information loss since for a fixed denominator restricts how to look up eigenvalue from start, and it cannot be reversed.Suggested fix
Store the eigenfunctions in the form of generator of
Pair{Complex, BasisFunction}
and since the order information is stored within theBasisFunction
, we can regenerate the lookup table on the fly based on the precision we desire.