momentum grid for non-trivial boundary conditions
We noticed an issue with the Green's function in momentum space when finite values for Phi_x and/or Phi_y are selected, giving rise to non-trivial boundary conditions different from periodic ones.
Let me quote the initial email exchange with Fakher. I asked:
... we noticed a subtlety, when finite phi_x and phi_y modify the boundary conditions (bulk=false); in particular, should the BC shift the momenta? I guess k --> k + phi_x a_1 + phi_y a_2 should be the proper momenta for the fermionic greens function while q, the momentum of bosonic correlation functions, remains unchanged. As far as I can tell, this is not included in the current ALF code, and the lattice does not quite have the capacity to include this yet. One could store phi_x/y as part of the observables and shift the momenta when performing the FT from real space to momentum space (and back). These changes should also find their way to pyALF, I assume (@Jonas_schwab cc'ed). Am I missing something or should I open an issue on the website to track and implement this?
Fakher's answer:
You are absolutely correct. With bulk=false the momenta for particle quantities such as the Green function should shift but not for particle-hole quantities such as spin-spin correlations. As you correctly point out, the lattice module that handles the Fourier transform only works for periodic boundary conditions. Since bulk=true and bulk=false are related by a canonical transformation, why not just used bulk=true in the code and then carry out the canonical transformation to bulk=false (so as to shift your momenta) in the post-processing stage. This would mean that we would have to depreciate bulk=false. I would actually be very happy to do this. I actually can not really remember why we included this…..
The other solution would be to include the boundary information in the lattice module and change the quantization of the momenta. As
for the time-dependent observables, we should add to the equal time observables the predicate P, PH, etc. For particle-hole observables,
the momenta are k - k’ and are hence independent of the boundary shift. For particle observables, the momenta are then just k with the shift. I think
that this would be an elegant way of doing things. But then we are only talking about a canonical transformation.
BTW, since you are talking about the Fourier transformation. There are of course obvious issues when you use the orbital magnetic field. Strictly speaking, we should define the gauge-dependent magnetic unit cell and work in an extended zone scheme.