Alphaharrius/Zipper.jl

Symmetry representation in the form of `CrystalFockMap` cannot symmetrize a `CrystalFockMap` correctly.

Closed this issue · 2 comments

The symmetry representation generated from AffineTransform * CrystalFock has been enhanced to support multithreading capabilities of using CrystalFockMap. Yet it yields incorrect result when performing operations like S*C*S' where S is the symmetry representation; C is the target CrystalFockMap to be symmetrized, the same operation performed under FockMap(S)*FockMap(C)*FockMap(S)' yields correct result. Hence we believe that the problem is with either the *(::CrystalFockMap, ::CrystalFockMap), the generation method of the symmetry representation, or adjoint(::CrystalFockMap). Yet given that the * and adjoint is used in other areas and yield correct results, the generation method of the symmetry representation might be the source of error.

The problem lies with the method +(::CrystalFockMap, ::CrystalFockMap) since FockMap(C) + FockMap(SCS') yields the correct result.

The problem is related to the unmatched (k, k) and its associated block in CrystalFockMap.blocks generated from *(::AffineTransform, ::CrystalFock).