Add `positions` similar to `momenta` to `Model`
It would be useful for Hamiltonians with real space dependence (such as hopping terms in non-crystalline systems, or the continuum description of a quantum well) if we allowed definition of symbols that are positions
. The only difference compared to momenta
would be that they don't flip sign under antiunitary symmetry operations.
It could also be useful to allow multiple vectors that transform the same way, for example to treat interaction terms that have multiple momentum variables.
This is all possible in current qsymm
in a hacky way: extend the real space dimension to the total number of transforming symbols, use momenta
that is a single vector with all these vectors stacked, and make R
in PointGroupElements
block-diagonal with the appropriate transformation matrices in each block. The positions
type transformation can be faked by using -R
in antiunitary operators.
<TLDR>
We could consider supporting other similar quantities, like angular_momenta
which change sign under TR but do not change under spatial inversion (this really only makes sense in 3D, in lower dimensions it is ambiguous whether something is a rotation or an inversion). This would mostly be useful for classical dynamical variables, not for fixed external fields. For example one may ask, what is the symmetry of the electromagnetic term E⋅B
, a product of a position
and an angular_momentum
type variable (it is invariant under anything that doesn't change space-time orientation). However, when examining the symmetries of the quantum Hamiltonian B⋅σ
with fixed external field B
, B
should not be transformed. We should give this more thought, it is not clear to me how many types of such objects we need in general, whether the behaviour under PH and TR is independent.