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
PointGroupElements block-diagonal with the appropriate transformation matrices in each block. The
positions type transformation can be faked by using
-R in antiunitary operators.
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 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.