Monte Carlo moves

In CTSEG, a configuration (state of the Markov chain) is a set of time-ordered list of segments (one for every color), and possibly a list of \(J_{\perp}\) lines (see Implementation Notes for more details). Below is a list of all possible steps (or “moves”) of the random walk in configuration space.

Insert segment

../_images/insert.png

Randomly choose a color. Randomly choose a segment within that color. Try to insert a randomly chosen new segment in the interval to the right of that segment. If the color is empty, try to insert a random segment. If the color contains a full line, no insertion is possible.

This move is enabled if there is a non-zero hybridization \(\Delta(\tau)\).

Remove segment

../_images/remove.png

Randomly choose a color. Try to remove a randomly chosen segment within that color.

This move is enabled if there is a non-zero hybridization \(\Delta(\tau)\).

Split segment

../_images/split.png

Randomly choose a color and a segment \([\tau, \tau']\) within that color. Choose two random (but ordered) times \([\tau_1, \tau_1']\) inside that segment and try replacing \([\tau, \tau']\) with \([\tau, \tau_1]\) and \([\tau_1', \tau']\).

This move is enabled if there is a non-zero hybridization \(\Delta(\tau)\).

Regroup segment

../_images/regroup.png

Randomly choose a color and a pair of adjacent segments \([\tau, \tau_1]\) and \([\tau_1', \tau']\) within that color. Try replacing this pair of segments with the “regrouped” segment \([\tau, \tau']\).

This move is enabled if there is a non-zero hybridization \(\Delta(\tau)\).

Move segment

../_images/move.png

Randomly choose a color and either a segment or an antisegment within that color (an antisegment is an interval between two segments). Randomly choose another color and try to insert the chosen segment or antisegment within that color.

This move is enabled if there is a non-zero hybridization \(\Delta(\tau)\).

Note

The antisegment version of the move is implemented as the segment version applied to a “flipped” configuration, where all the occupied time intervals become unoccupied, and vice-versa.

Note

The origin color and the destination color must be within the same block of the hybridization matrix.

Insert spin segment

../_images/insert_spin.png

Randomly choose a color \(i\) (spin up or spin down) and a segment \([\tau, \tau']\) within that color. The other color is denoted \(j\). Choose two random (but ordered) times \(\tau_1\) and \(\tau_1'\) within that segment. Try replacing \([\tau, \tau']\) with \([\tau, \tau_1]\) and \([\tau_1', \tau']\) in color \(i\), inserting \([\tau_1, \tau_1']\) in color \(j\), and inserting a \(J_{\perp}\) line between \(\tau_1\) and \(\tau_1'\).

This move is enabled if there is a non-zero \(J_{\perp}(\tau)\).

Note

This and the following “spin moves” (that explore the configurations resulting from the \(J_{\perp}\) expansion) are only implemented for the case where the configuration has two colors, spin up and spin down.

Remove spin segment

../_images/remove_spin.png

Randomly choose a \(J_{\perp}\) line. If its two endpoints are connected by a segment \([\tau_1, \tau_1']\) in color \(i\), find the segments \([\tau, \tau_1]\) and \([\tau_1', \tau']\) that it connects in color \(j\). Try removing the \(J_{\perp}\) line and segment \([\tau_1, \tau_1']\) in color \(i\), and replacing \([\tau, \tau_1]\) and \([\tau_1', \tau']\) in color \(j\) with a single segment \([\tau, \tau']\).

This move is enabled if there is a non-zero \(J_{\perp}(\tau)\).

Swap spin lines

../_images/swap_spin.png

Randomly choose two \(J_{\perp}\) lines \([\tau_+, \tau_-]\) and \([\tau'_+, \tau'_-]\). Try replacing them with the swapped lines \([\tau'_+, \tau_-]\) and \([\tau_+, \tau'_-]\).

This move is enabled if there is a non-zero \(J_{\perp}(\tau)\).

Split spin segment

../_images/split_spin.png

Randomly choose a \(J_{\perp}\) line. Try to remove the \(J_{\perp}\) line, and shift the \(c\) operators at its end points in each of the colors by independent random amounts.

This move is enabled if there is a non-zero \(J_{\perp}(\tau)\) and a non-zero \(\Delta(\tau)\).

Regroup spin segment

../_images/regroup_spin.png

Randomly choose a \(c\) operator in color 0 (spin up) and determine the window \([\tau_0, \tau_0']\) in which this \(c\) operator can be moved. In color 1 (spin down), find the \(c^{\dagger}\) operators in \([\tau_0, \tau_0']\) and choose one of them at random (denote its time \(\tau_1''\)). Randomly choose a \(c\) operator in color 1 (spin down) and determine the window \([\tau_1, \tau_1']\) in which this \(c\) operator can be moved. In color 0 (spin up), find the \(c^{\dagger}\) operators in \([\tau_1, \tau_1']\) and choose one of them at random (denote its time \(\tau_0''\)). Try to shift the \(c\) operator in color 0 to \(\tau_1''\), the \(c\) operator in color 1 to \(\tau_0''\), and create a \(J_{\perp}\) line between \(\tau_0''\) and \(\tau_1''\).

This move is enabled if there is a non-zero \(J_{\perp}(\tau)\) and a non-zero \(\Delta(\tau)\).