We have a number of generators which do coordinated updates, like the Villain NeighborhoodUpdate, which offers changes to $\phi$ on a site and the 4 adjacent $n$ simultaneously. But these could be decoupled. In fact,
[x] The Villain action is a sum over links and $n$ lives on links. Each $n$ only contributes to one term in the sum, no $n$ talks to any other $n$. Therefore we can offer $dn$ (mod $W$)-preserving updates to $n$ independently from one another. [Solved by #125]
[x] The Villain action is a sum over links and $d\phi$ lives on links, so that each $\phi$ contributes to 4 terms in the sum, one for each link that touches the site it is on. We could offer updates to $\phi$ a whole checkerboard at a time. (The checkerboarding prevents us from offering updates that would talk to one another---each checkerboard color can be considered a fixed background for the other(s).) [Solved by #128]
Initial tests (by setting interval_phi and interval_n in NeighborhoodUpdate) suggests that decoupling these updates yields much greater acceptance rates. When W=1 these ought to be ergodic in combination.
[x] When W>1 the LinkUpdate described first cannot change n by not-a-multiple-of-W, which is fine when W=1 but is not ergodic when W>1. In #113 we described an update that offers a coordinated change that preserves dn. Essentially, pick a 0-form ±1 and then consider the change in action when n changes by d of that. Since d^2=0 it automatically leaves dn alone. [Solved by the ExactUpdate of #129]
[x] Since the above update is an exact form, it can't change the holonomies of n. (I think it's really a holonomy this time?). So we can propose a change that wraps the torus, see Fig 2 of 2310.17539. [Solved by the HolonomyUpdate #129]
In the worldline case we can similarly decouple the update of v from the surrounding m variables.
[x] The Worldline action is a sum over links and $v$ lives on plaquettes so that $\delta v$ lives on links. Each $v$ contributes to 4 terms in the sum, one for each link that touches the site it is on. We could offer updates to $v$ on a whole checkerboard at a time. (Again, the checkerboarding prevents us from offering updates that would talk to one another.) [Solved by the VortexUpdate of #132]
[x] Like the exact update in the Villain case we can offer proposals that change m by δt, where t is an integer two-form. That automatically preserves δm=0 because δ^2=0. [Solved by the CoexactUpdate of #132]
The Worldline worm algorithm doesn't offer $v$ updates, so having an update that changes $v$ would be beneficial---currently the only way to update $v$ is through the PlaquetteUpdate, which the plaquette $v$ and its boundary $m$s at once.
The first two Villain and the Worldline are 'ultralocal' in the sense that they are not coordinated updates. However, the latter 2 require checkerboarding. As long as we are writing checkerboarded (to take advantage of the numpy-level loops rather than the python loops) we can add the exact and holonomy Villain generators relatively easily.
We have a number of generators which do coordinated updates, like the Villain NeighborhoodUpdate, which offers changes to $\phi$ on a site and the 4 adjacent $n$ simultaneously. But these could be decoupled. In fact,
Initial tests (by setting
interval_phi
andinterval_n
in NeighborhoodUpdate) suggests that decoupling these updates yields much greater acceptance rates. When W=1 these ought to be ergodic in combination.[x] When W>1 the LinkUpdate described first cannot change n by not-a-multiple-of-W, which is fine when W=1 but is not ergodic when W>1. In #113 we described an update that offers a coordinated change that preserves dn. Essentially, pick a 0-form ±1 and then consider the change in action when n changes by d of that. Since d^2=0 it automatically leaves dn alone. [Solved by the ExactUpdate of #129]
[x] Since the above update is an exact form, it can't change the holonomies of n. (I think it's really a holonomy this time?). So we can propose a change that wraps the torus, see Fig 2 of 2310.17539. [Solved by the HolonomyUpdate #129]
In the worldline case we can similarly decouple the update of v from the surrounding m variables.
[x] The Worldline action is a sum over links and $v$ lives on plaquettes so that $\delta v$ lives on links. Each $v$ contributes to 4 terms in the sum, one for each link that touches the site it is on. We could offer updates to $v$ on a whole checkerboard at a time. (Again, the checkerboarding prevents us from offering updates that would talk to one another.) [Solved by the VortexUpdate of #132]
[x] Like the exact update in the Villain case we can offer proposals that change m by δt, where t is an integer two-form. That automatically preserves δm=0 because δ^2=0. [Solved by the CoexactUpdate of #132]
The Worldline worm algorithm doesn't offer $v$ updates, so having an update that changes $v$ would be beneficial---currently the only way to update $v$ is through the PlaquetteUpdate, which the plaquette $v$ and its boundary $m$s at once.
The first two Villain and the Worldline are 'ultralocal' in the sense that they are not coordinated updates. However, the latter 2 require checkerboarding. As long as we are writing checkerboarded (to take advantage of the numpy-level loops rather than the python loops) we can add the exact and holonomy Villain generators relatively easily.