Skip to content

Transforming eigenmodes #7

@sp94

Description

@sp94

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.basis
  • new_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

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions