Alphaharrius / Zipper.jl

Implementation of Zipper Entanglement Renormalization on Julia platform.
GNU General Public License v3.0
1 stars 0 forks source link

Storing method eigenfunctions of `AffineTransform` strips eigenvalue information. #30

Closed Alphaharrius closed 8 months ago

Alphaharrius commented 8 months ago

Description

The current method to store the eigenfunction for a given AffineTransform is done via Dict{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 the BasisFunction, we can regenerate the lookup table on the fly based on the precision we desire.

Alphaharrius commented 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.

Alphaharrius commented 8 months ago

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).