-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Labels
enhancementNew feature or requestNew feature or request
Milestone
Description
We should provide users with a simple interface for transformation eigenmodes.
Sometimes an analysis requires us rotate or mirror an eigenmode (eg studying symmetry eigenvalues) or to shift it by a reciprocal lattice vector in k-space (we already do this when calculating 'open' Wilson loops that begin and end at same k-point, but in different Brillouin zones).
The user should define the transformation with a k_map(k).
For example, inversion and a shift by a lattice vector would be k_map(k) = -k + b1
transform(mode, k_map) should return a new Mode where
new_mode.basis == old_mode.basisnew_mode.k0 == k_map(old_mode.k0)new_mode.data[i_]=old_mode.data[i]where the data has been rearranged such that...k_map([basis.kxs[i_], basis.kyx[i_]]) == [basis.kxs[i], basis.kys[i]]
transform(mode, k_map) can then replace the shift_k0 function used by wilson_loop_matrix, as well as be used in other applications
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request