Closed alcherman closed 8 months ago
I think at some point we came up with two kinds of updates which together seemed likely to be ergodic + maintain the constraint. If I can summarize, it was a combination of:
Was there anything else?
That was it! I think that should work...
In #120 we change the NeighborhoodUpdate to change links only multiples of W so that they're always constraint-satisfying. But I haven't implemented a local coordinated dn=0 update (though the Villain worm maintains dn).
Closed by a combination of #125, #128, and #129 while attacking #123.
If we add a constraint term the Villain action appears to have a severe sign problem. But if we propose updates for n that satisfy dn = 0 mod W, the problematic term in the action will never contribute. There's another open issue to try to set up a worm-type algorithm to do this, but it seems likely there are simpler, more local field update algorithms that would do the job. It would be nice to work out a simple example of such an algorithm and implement it in the code - it may be good enough within the gapped phase!