Observables
When possible we implement observables for different formulations. Since the equivalence between formulations is link-by-link, when measured on the same size lattice the different formulations should give equal results in the infinite-statistics limit. Which formulation is more efficient of course depends on the action parameters and on the lattice size.
Links
- class supervillain.observable.Links[source]
Bases:
Observable
Both the
Villain
andWorldline
formulations have the notion of invariant links. The main purpose ofLinks
is to ensure that we always write functions of the correct combination of raw fields.Warning
Unlike most observables these will NOT match\({}^*\) between the different formulations.
\({}^*\)They both have 0 expectation value by the discrete rotational lattice symmetries, but they don’t have related physical motivation; they are dual to one another under Poisson resummation.
- static Villain(S, phi, n)[source]
The only gauge-invariant link variables in the
Villain
formulation are\[\texttt{Links}_{\ell} = (d\phi - 2\pi n)_\ell\]and these are what show up in any observables that talk to links. You can see that this combination arises in the action itself and in the
ActionTwoPoint
, for example. Some observables, like theSpin_Spin
correlation function have ‘bare’ 0-form \(\phi\)s but they come in exponentials and are therefore gauge invariant. Others, likeXWrapping
live on loops where the \(d\phi\) integrates away but are gauge invariant.
- static Worldline(S, m, v)[source]
In the
Worldline
action we always have the combination\[\texttt{Links}_{\ell} = (m - \delta v / W)_\ell\]and observables are generically functions of this combination, though there are some exceptional observables like
TorusWrapping
where the \(\delta v\) pieces cancel exactly.
Internal Energy Density
- class supervillain.observable.InternalEnergyDensity[source]
Bases:
Scalar
,Observable
If we think of \(\kappa\) like a thermodynamic \(\beta\), then we may compute the internal energy \(U\)
\[\begin{split}\begin{align} U &= - \partial_\kappa \log Z \\ &= \left\langle - \partial_\kappa (-S) \right\rangle \\ &= \left\langle \partial_\kappa S \right\rangle \end{align}\end{split}\]It is extensive in the spacetime volume, so we calculate the density
\[\texttt{InternalEnergyDensity} = U / \Lambda\]where \(\Lambda\) is the number of sites in our spacetime.
- class supervillain.observable.InternalEnergyDensitySquared[source]
Bases:
Scalar
,Observable
If we think of \(\kappa\) as a thermodynamic \(\beta\), then we may compute the expectation value of the square of the internal energy \(U\)
\[\begin{align} \langle U^2 \rangle &= \frac{1}{Z} \partial^2_\kappa Z = \left\langle (\partial_\kappa S)^2 - \partial^2_\kappa S \right\rangle \end{align}\]and to the intensive density squared is
\[\texttt{InternalEnergyDensitySquared} = \langle U^2 \rangle / \Lambda^2\]where \(\Lambda\) is the number of sites in our spacetime.
- static Villain(S, phi, n)[source]
In the
Villain
case,\[\begin{align} \partial_\kappa S &= S/\kappa & \partial^2_\kappa S &= 0 \end{align}\]
- static Worldline(S, Links)[source]
In the
Worldline
formulation we differentiate to find\[\begin{align} \partial_\kappa S &= - \frac{1}{2\kappa^2} \sum_{\ell} (m-\delta v/W)_\ell^2 + \frac{|\ell|}{2 \kappa} & \partial^2_\kappa S &= \frac{1}{\kappa^3} \sum_{\ell} (m-\delta v/W)_\ell^2 - \frac{|\ell|}{2\kappa^2}. \end{align}\]
- class supervillain.observable.InternalEnergyDensityVariance[source]
Bases:
DerivedQuantity
\[\begin{align} \texttt{InternalEnergyDensityVariance} &= \left\langle U^2/\Lambda^2 \right\rangle - \left\langle U/\Lambda \right\rangle^2 \end{align}\]which can be computed from expectation values of
InternalEnergyDensitySquared
andInternalEnergyDensity
.
- class supervillain.observable.SpecificHeatCapacity[source]
Bases:
DerivedQuantity
The (intensive) specific heat capacity \(c\) is given by
\[c = \frac{\langle U^2 \rangle - \langle U \rangle^2}{\Lambda T^2} = \kappa^2 \Lambda \times \texttt{InternalEnergyDensityVariance}.\]Naively, since both \(\langle U^2 \rangle\) and \(\langle U \rangle^2\) scale like \(\Lambda^2\) their difference ought to also scale like \(\Lambda^2\). However, we learn from thermodynamics that actually their difference is one order lower, which explains the division by one power of \(\Lambda\).
Action
- class supervillain.observable.ActionDensity[source]
Bases:
Scalar
,Observable
The expectation value of the action density can be calculated as
\[\begin{split}\begin{align} \mathcal{S} &= - \kappa \partial_\kappa \log Z \\ &= \left\langle - \kappa \partial_\kappa (-S) \right\rangle \\ &= \left\langle \kappa \partial_\kappa S \right\rangle \end{align}\end{split}\]It is extensive in the spacetime volume, so we calculate the density
\[\texttt{ActionDensity} = \mathcal{S} / \Lambda\]where \(\Lambda\) is the number of sites in our spacetime.
- class supervillain.observable.Action_Action[source]
Bases:
DerivedQuantity
If we imagine rewriting the actions’ sums over links as a sum over sites and a sum over directions we can associate a value of κ with each site. Then we may compute the correlations of the action density by evaluating
\[\begin{split}\begin{align} \mathcal{S}_{x,y} =& \left.\left(-\kappa_y \frac{\delta}{\delta \kappa_y}\right) \left(-\kappa_x \frac{\delta}{\delta \kappa_x}\right) \log Z\right|_{\kappa_{x,y} = \kappa} \\ =& \left.\left\langle (\kappa_y \partial_{\kappa_y} S) (\kappa_x \partial_{\kappa_x} S) - \kappa_y \kappa_x \partial_{\kappa_y} \partial_{\kappa_x} S - \kappa_y \delta_{yx} \partial_{\kappa_x} S \right\rangle\right|_{\kappa_{x,y} = \kappa} \\ & - \left.\left\langle \kappa_x \partial_{\kappa_x} S \right\rangle\right|_{\kappa_x = \kappa} \left.\left\langle \kappa_y \partial_{\kappa_y} S \right\rangle\right|_{\kappa_y = \kappa}. \end{align}\end{split}\]Using translational invariance the quantum-disconnected piece is independent of \(x\) and \(y\) and can be replaced by \(\left\langle\texttt{ActionDensity}\right\rangle^2\). So, we find the simplification
\[\begin{split}\begin{align} \mathcal{S}_{x,y} = & \left\langle (\kappa_y \partial_{\kappa_y} S) (\kappa_x \partial_{\kappa_x} S) - \kappa_y \kappa_x \partial_{\kappa_y} \partial_{\kappa_x} S - \delta_{xy} \kappa_x \partial_{\kappa_x} S\right\rangle \\ & - \left\langle \texttt{ActionDensity} \right\rangle^2 \end{align}\end{split}\]We define the spacetime-dependent correlator
\[S^2_{x,y} = \left\langle (\kappa_y \partial_{\kappa_y} S) (\kappa_x \partial_{\kappa_x} S) - \kappa_y \kappa_x \partial_{\kappa_y} \partial_{\kappa_x} S - \delta_{xy} \kappa_x \partial_{\kappa_x} S \right\rangle\]so that \(\mathcal{S}_{x,y} = S^2_{xy} - \left\langle \texttt{ActionDensity} \right\rangle^2\)
We can reduce to a function of a single relative coordinate,
\[\begin{align} \texttt{Action_Action}_{\Delta x} = \mathcal{S}_{\Delta x} = \frac{1}{\Lambda} \sum_{x} \mathcal{S}_{x, x-\Delta x} \end{align}\]and define a primary observable
ActionTwoPoint
\[\begin{align} \texttt{ActionTwoPoint}_{\Delta x} = \frac{1}{\Lambda} \sum_{x} S^2_{x,x-\Delta x}. \end{align}\]The quantum-disconnected term is \(\Delta x\) independent, so
\[\texttt{Action_Action}_{\Delta x} = \texttt{ActionTwoPoint}_{\Delta x} - \left\langle \texttt{ActionDensity} \right\rangle^2.\]
- class supervillain.observable.ActionTwoPoint[source]
Bases:
Observable
In
Action_Action
we need the translation-averaged\[S^2_{x,y} = \left.\left\langle (\kappa_y \partial_{\kappa_y} S) (\kappa_x \partial_{\kappa_x} S) - \kappa_y \kappa_x \partial_{\kappa_y} \partial_{\kappa_x} S - \delta_{xy} \kappa_x \partial_{\kappa_x} S \right\rangle\right|_{\kappa_{x,y} = \kappa}\]given by
\[\texttt{ActionTwoPoint} = \frac{1}{\Lambda} \sum_x S^2_{x, x-\Delta x}.\]- static Villain(S, Links)[source]
In the
Villain
formulation one finds\[\left.\kappa_y \kappa_x \partial_{\kappa_y} \partial_{\kappa_x} S\right|_{\kappa_{x,y} = \kappa} = 0\]while
\[\left.\delta_{xy} \kappa_x \partial_{\kappa_x} S \right|_{\kappa_x = \kappa} = \delta_{xy} \frac{\kappa}{2} \sum_{\ell \text{ from } x} (d\phi - 2\pi n)_\ell^2\]and
\[\left.(\kappa_y \partial_{\kappa_y} S) (\kappa_x \partial_{\kappa_x} S)\right|_{\kappa_{x,y} = \kappa} = \left(\frac{\kappa}{2} \sum_{\ell \text{ from }y} (d\phi - 2\pi n)^2_{\ell}\right) \left(\frac{\kappa}{2} \sum_{\ell \text{ from }x} (d\phi - 2\pi n)^2_{\ell}\right)\]
- static Worldline(S, Links)[source]
In the
Worldline
formulation one has to carefully treat the \(|\ell|/2 \log 2\pi \kappa\) contribution. We should really imagine \(|\ell|/2\) as arising from a sum over sites of independent \(\log 2\pi \kappa\)s. That term contributes constant pieces,\[\left.(\kappa_y \partial_{\kappa_y} S) (\kappa_x \partial_{\kappa_x} S)\right|_{\kappa_{x,y} = \kappa} = \left(1 - \frac{1}{2\kappa} \sum_{\ell \text{ from } y} (m-\delta v/W)_\ell^2 \right) \left(1 - \frac{1}{2\kappa} \sum_{\ell \text{ from } x} (m-\delta v/W)_\ell^2 \right)\]while
\[\left.\delta_{xy} \kappa_x \partial_{\kappa_x} S \right|_{\kappa_x = \kappa} = \delta_{xy} \left( 1 - \frac{1}{2\kappa} \sum_{\ell \text{ from } x} (m-\delta v/W)_\ell^2 \right)\]and
\[\left.\kappa_y \kappa_x \partial_{\kappa_y} \partial_{\kappa_x} S\right|_{\kappa_{x,y} = \kappa} = \delta_{xy} \left(-1 + \frac{1}{\kappa} \sum_{\ell \text{ from } x} (m-\delta v/W)_\ell^2\right).\]
Winding
- class supervillain.observable.WindingSquared[source]
Bases:
Scalar
,Observable
Given periodic boundary conditions the total topological charge vanishes \(\partial_J Z = 0\). Translational invariance is strong enough to conclude that in expectation the winding number on any plaquette also vanishes.
However we can treat \(J\) as a local source and ask about the square of the winding number on any plaquette
\[w_p^2 = -\frac{\delta^2 \log Z}{\delta J_p^2}\]and we can drop the quantum-disconnected pieces because \(\delta Z / \delta J_p = 0\) for any \(p\) when \(J=0\).
To increase statistics we calculate the local winding number squared and average over the lattice
\[\texttt{WindingSquared} = \frac{1}{\Lambda} \sum_p w_p^2\]where \(\Lambda\) is the number of plaquettes in the lattice.
- static Villain(S, n)[source]
Differentiating with respect to \(J_p\) gives a \(-i\,dn_p\); differentiating twice gives \(-dn_p^2\), so that \(w_p = dn_p^2\).
- static Worldline(S, Links)[source]
Reusing the derivation from
Winding_Winding
and setting \(p=q\) we get\[w_p = \frac{1}{\pi^2 \kappa}-\frac{1}{(2\pi \kappa)^2}\left\langle [d(m-\delta v/W)]_p^2 \right\rangle.\]because \(\delta / \delta J_p ( d \delta J_p) = 4\).
- class supervillain.observable.Winding_Winding[source]
Bases:
Observable
Beyond just the
same-site-squared
we can compute correlations of the plaquette winding number.\[W_{p,q} = -\frac{\delta^2 \log Z}{\delta J_p \delta J_q}\]By translation invariance we can average so that only the separation remains
\[W_{\Delta p} = \frac{1}{\Lambda} \sum_{p} W_{p, p-\Delta p}.\]Note
You can check that \(\texttt{Winding_Winding[0,0]} = \texttt{WindingSquared}\) configuration by configurations.
- static Villain(S, n)[source]
Differentiating twice gives \(W_{p,q} = \left\langle dn_p dn_q \right\rangle\); the quantum-disconnected piece vanishes when \(J=0\).
- static Worldline(S, Links)[source]
The Worldline observable is trickier.
Expanding the
Worldline
action (and grouping the irrelevant contants)\[\begin{split}\begin{align} S_J[m, v] &= \frac{1}{2\kappa} \sum_\ell \left((m-\delta v/W) - \frac{\delta J}{2\pi}\right)_\ell^2 + \text{constants} \\ &= \frac{1}{2\kappa} \sum_\ell \left((m-\delta v/W)_\ell^2 - \frac{1}{\pi} (m-\delta v/W)_\ell (\delta J)_\ell + \frac{1}{4\pi^2} (\delta J)_\ell^2 \right)+ \text{constants} \\ &= \frac{1}{2\kappa} \left(\sum_\ell (m-\delta v/W)_\ell^2 + \sum_p - \frac{1}{\pi} (d(m-\delta v/W))_p J_p + \frac{1}{4\pi^2} J_p (d \delta J)_p \right)+ \text{constants} \end{align}\end{split}\]where we integrated two terms by parts to get \(J\) undecorated.
Differentiating \(\log Z\) once gives
\[\begin{split}\begin{align} \frac{\delta}{\delta J_p} \log Z &= -\frac{1}{Z} \sum Dm\; Dv\; [\delta m = 0] e^{-S_J[m, v]} \frac{\delta S}{\delta J_p} \\ &= \frac{1}{Z} \sum Dm\; Dv\; [\delta m = 0] e^{-S_J[m, v]} \frac{-1}{2\kappa}\left( -\frac{1}{\pi} (d(m-\delta v/W))_p + \frac{2}{4\pi^2} (d\delta J)_p \right) \end{align}\end{split}\]where the factor of 2 on the \(d \delta J\) term comes from the fact that \(J d \delta J\) is quadratic in \(J\).
Differentiating again we must hit both the \(1/Z\) term and the path integral upstairs giving two terms,
\[\begin{split}\begin{align} \frac{\delta}{\delta J_q}\frac{\delta}{\delta J_p} \log Z =& \frac{\delta}{\delta J_q} \left[\frac{1}{Z} \sum Dm\; Dv\; [\delta m = 0] e^{-S_J[m,v]} \frac{-1}{2\kappa}\left( -\frac{1}{\pi} (d(m-\delta v/W))_p + \frac{1}{2\pi^2} (d\delta J)_p \right) \right] \\ =& -\frac{1}{Z^2} \left[\sum Dm\; Dv\; [\delta m = 0] e^{-S_J[m,v]} \frac{-1}{2\kappa}\left( -\frac{1}{\pi} (d(m-\delta v/W))_p + \frac{1}{2\pi^2} (d\delta J)_p \right) \right] \\ & \phantom{-\frac{1}{Z^2}}\times \left[\sum Dm\; Dv\; [\delta m = 0] e^{-S_J[m,v]} \frac{-1}{2\kappa}\left( -\frac{1}{\pi} (d(m-\delta v/W))_q + \frac{1}{2\pi^2} (d\delta J)_q \right) \right] \\ &+ \frac{1}{Z} \sum Dm\; Dv\; [\delta m = 0] e^{-S_J[m,v]} \Bigg[ \\ & \phantom{-\frac{1}{Z^2}} \left(\frac{-1}{2\kappa}\right)^2\left( -\frac{1}{\pi} (d(m-\delta v/W))_q + \frac{1}{2\pi^2} (d\delta J)_q \right) \\ & \phantom{-\frac{1}{Z^2}} \times\left( -\frac{1}{\pi} (d(m-\delta v/W))_p + \frac{1}{2\pi^2} (d\delta J)_p \right) \\ & \phantom{-\frac{1}{Z^2}} +\frac{-1}{4\pi^2 \kappa}\frac{\delta}{\delta J_q} (d \delta J)_p \Bigg] \\ \end{align}\end{split}\]In the second term we differentiate both the action [the first term in the brackets] and what was already brought down [the second]. Plugging in \(J=0\) gives
\[\begin{split}\begin{align} -\left.\frac{\delta}{\delta J_q}\frac{\delta}{\delta J_p} \log Z \right|_{J=0} = \left(\frac{1}{2\pi \kappa}\right)^2\Bigg\{& \left\langle (d(m-\delta v/W))_p \right\rangle \left\langle (d(m-\delta v/W))_q \right\rangle \\ &- \left\langle (d(m-\delta v/W))_p (d(m-\delta v/W))_q \right\rangle \\ & + \kappa \left.\frac{\delta}{\delta J_q} (d \delta J)_p\right|_{J=0} \Bigg\} \end{align}\end{split}\]because \(d\delta 0 = 0\).
When \(J=0\) the first (quantum-disconnected) term is proportional \(\left\langle d(m-\delta v/W)_p \right\rangle \left\langle d(m-\delta v/W)_q \right\rangle\) and the individual expectation values vanish by symmetry so we are left with
\[\begin{align} -\left.\frac{\delta}{\delta J_q}\frac{\delta}{\delta J_p} \log Z \right|_{J=0} = \left(\frac{1}{2\pi \kappa}\right)^2\Bigg\{& \kappa \left.\frac{\delta}{\delta J_q} (d \delta J)_p \right|_{J=0} - \left\langle (d(m-\delta v/W))_p (d(m-\delta v/W))_q \right\rangle\Bigg\} \end{align}\]The remaining functional derivative is a displacement-dependent constant.
At the end of the day all we are left with is
\[- \frac{\delta}{\delta J_p} \frac{\delta}{\delta J_q}\log Z = \frac{1}{(2\pi \kappa)^2}\left\{\kappa\left.\frac{\delta}{\delta J_q}(d \delta J_p)\right|_{J=0} - \left\langle (d(m-\delta v/W))_p (d(m-\delta v/W)_q) \right\rangle\right\}\]when \(J=0\). In 2D \(\left.\frac{\delta}{\delta J_q}(d \delta J_p)\right|_{J=0} = 4 \delta_{pq} - \sum_{\hat{\mu}} \delta_{p+\hat{\mu},q}\) where \(\hat{\mu}\) runs over the 4 cardinal directions, reproducing (minus) the standard 2D five-point Laplacian stencil.
Wrapping
- class supervillain.observable.TorusWrapping[source]
Bases:
Observable
Both the
Villain
andWorldline
formulations have integer-valued numbers that wrap the spatial torus.Warning
Unlike most observables these will NOT match\({}^*\) between the different formulations. However, since they are both related to the global topology, we expect them to evolve quite slowly and suffer the longest autocorrelation times.
\({}^*\)They both have 0 expectation value by the discrete rotational lattice symmetries, but they don’t have related physical motivation.
- static Villain(S, phi, n)[source]
The total wrapping in direction \(\mu\) is given by the gauge holonomy
\[\texttt{TorusWrapping}_{\mu} = \sum n_\mu\]
- static Worldline(S, m)[source]
The total wrapping in direction \(\mu\) is given by the net particle flux in that direction
\[\texttt{TorusWrapping}_{\mu} = \frac{1}{|\mu|} \sum m_\mu\]where we divide by the length of the dimension because a torus-wrapping \(m\) will get contributions from every μ-slice.
Calculations of the autocorrelation_time()
are easiest for scalars.
These decouple the two components of the wrapping.
Warning
Like TorusWrapping
these are motivated differently for the different formulations.
- class supervillain.observable.TWrapping[source]
Bases:
Scalar
,Observable
Just the time component of
TorusWrapping
.
- class supervillain.observable.XWrapping[source]
Bases:
Scalar
,Observable
Just the space component of
TorusWrapping
.
Spin Correlations
- class supervillain.observable.Spin_Spin[source]
Bases:
Observable
We can deform \(Z_J \rightarrow Z_{J}[x,y]\) to include the creation of a boson at \(y\) and the destruction of a boson at \(x\) in the action. We define the expectation value
\[S_{x,y} = \frac{1}{Z_J} Z_J[x,y]\]and reduce to a single relative coordinate
\[\texttt{Spin_Spin}_{\Delta x} = S_{\Delta x} = \frac{1}{\Lambda} \sum_x S_{x,x-\Delta x}\]See also
The Worldline formulation of this observable is the trickiest observable we supply, and its implementation is nontrivial.
If you need a simpler-to-understand implementation see the reference implementation
Spin_SpinSlow
.- static Villain(S, phi)[source]
In the
Villain
formulation the correlator is just\[S_{xy} = \left\langle e^{i(\phi_x - \phi_y)} \right\rangle\]
- static Worldline(S, Links)[source]
By starting in the Villain formulation with a modified action
\[S' = \frac{\kappa}{2} \sum_{\ell} (d\phi - 2\pi n)_{\ell}^2 + i \sum_p J_p dn_p + i \phi_x - i \phi_y\]we can Poisson resum \(n \rightarrow m\) as usual but the offset by the operator changes the constraint. Rather than requiring \(\delta m = 0\) everywhere we get \((\delta m)_z = \delta_{y,z} - \delta_{x,z}\),
\[\begin{split}\begin{align} Z_J[x,y] &= \sum Dm\; e^{-S_J[m]} \left[\delta m = 0 \text{ not on }x, y\right]\left[(\delta m)_x = -1 \right]\left[(\delta m)_y = +1 \right] \\ S_J[m] &= \frac{1}{2\kappa} \sum_\ell \left(m - \frac{\delta J}{2\pi}\right)_\ell^2 + \frac{|\ell|}{2} \ln (2\pi \kappa) - |x| \ln 2\pi \end{align}\end{split}\]Now define \(\hat{m}_\ell = m_{\ell} - [P_{xy}]_\ell\) where \(P_{xy}\) traces any fixed path at all whatsoever from \(x\) to \(y\) and on any link \(P\) accumulates \(+1\) for every time the path traces along the link and \(-1\) every time the path traces against the link. For sites visited in the middle of the path \(P\) the constraint is maintained while at the endpoints it is violated in exactly the desired way.
Then we can change the integration variables from \(m\) to \(\hat{m}\) as long as we also change the action,
\[\begin{align} Z_J[x,y] &= \sum D\hat{m}\; e^{-S_J[\hat{m} + P_{xy}]} \left[\delta \hat{m} = 0 \text{ not on }x, y\right]\left[(\delta \hat{m})_x = 0 \right]\left[(\delta \hat{m})_y = 0 \right] \end{align}\]with the same \(S_J\). Since in the hatted variables the constraint is satisfied, we can calculate this using constraint-obeying configurations (setting \(J=2\pi v/W\) for the constraint) and measuring the operator
\[\hat{S}_{xy} = \exp{\left[ - \frac{1}{2\kappa} \sum_{\ell \in P_{xy}} \left\{(\hat{m} - \delta v / W + P_{xy})_\ell^2 - (\hat{m} - \delta v / W)_\ell^2 \right\}\right]}\]which is what we need to reweight to sampling according to \(S[\hat{m}]\) with no defect.
Note
The actual path \(P_{xy}\) used is irrelevant in expectation, though of course on a fixed configuration you get different measurements if you pick different paths. An implementation detail is that the fixed chosen path is the taxicab path that first covers the whole time separation and then the whole space separation. The point is that any other path can be reached by making a combination of
PlaquetteUpdate
s andWrappingUpdate
s.Clearly \(S_{xx}=1\), and we can normalize so that \(\texttt{Spin_Spin}_{\Delta x = 0} = 1\). The method provided in this observable are already naturally normalized. However, inline measurements like those provided by the
worm
are not, and can only be normalized after the bootstrap, which is why anything that depends on this observable is aDerivedQuantity
.
- static CriticalScalingDimension(S)[source]
Setting the scaling dimension \((WR)^2 / 2\) of a charge-W vortex operator to 2 yields \(R=2/W\). The corresponding scaling dimension of the spin operator \(e^{i\phi}\) is \(\Delta = (1R)^{-2}/2 = W^2/8\).
This is the critical scaling dimension of a single insertion, so the two-point
Spin_Spin
scales with twice this dimension at the critical point.When \(W=\infty\) every \(\kappa>0\) is critical and \(\Delta_S = 2/R^2 = 2/2\pi \kappa = 1/\pi \kappa\).
- class supervillain.observable.SpinSusceptibility[source]
Bases:
DerivedQuantity
The spin susceptibility is the spacetime integral of the
Spin_Spin
correlator \(S_{\Delta x}\),\[\texttt{SpinSusceptibility} = \chi_S = \int d^2r\; S(r).\]
- class supervillain.observable.SpinSusceptibilityScaled[source]
Bases:
SpinSusceptibility
At the critical point and in the CFT the
SpinSusceptibility
has a known expected scaling that comes from the scaling dimension \(\Delta\) of \(e^{i\phi}\)\[\chi_S \sim L^{2-2\Delta(\kappa)}.\]where the scaling dimension at the critical coupling \(\kappa_c\) is known and depends on the constraint integer \(W\).
So, we scale the susceptibility by the
CriticalScalingDimension()
,\[\texttt{SpinSusceptibilityScaled} = \chi_S / L^{2-2\Delta(\kappa_c)}\]so that at the critical coupling the infinite-volume limit of
SpinSusceptibilityScaled
will be a constant.Note
The 2 depends on being in 2 dimensions, while the \(2\Delta\) comes from the fact that the
Spin_Spin
is a two-point function.
- class supervillain.observable.SpinCriticalMoment[source]
Bases:
DerivedQuantity
The critical moment of the spin correlator \(C_S\) is the volume-average of the correlator multiplied by its long-distance critical behavior,
\[C_S = \frac{1}{L^2} \int d^2r\; r^{2\Delta_S(\kappa_c, W)}\; S(r)\]At the critical \(\kappa\) the long-distance behavior of the
Spin_Spin
correlator \(S\) decays with exactly the required power to cancel the explicit power of \(r\) and the integral cancels the normalization, giving 1 in the large-\(L\) limit.In the gapped phase \(S\) decays exponentially with \(r\) and the integral converges, so \(C_S\) goes to 0 in the large-\(L\) limit.
In the CFT, \(S\) decays polynomially, but slower than the weight from the moment grows. The integral scales with a power larger than 2 and \(C_S\) diverges in the large-\(L\) limit.
Vortex Correlations
- class supervillain.observable.Vortex_Vortex[source]
Bases:
Constrained
,Observable
In the constrained model the vortex correlations are given by
\[V_{x,y} = \left\langle e^{2\pi i (v_x - v_y) / W}\right\rangle\]and we can use translational invariance to reduce to a single relative coordinate
\[\texttt{Vortex_Vortex}_{\Delta x} = V_{\Delta x} = \frac{1}{\Lambda} \sum_x V_{x,x-\Delta x}\]- static CriticalScalingDimension(S)[source]
The critical scaling dimension of the winding-\(w\) operator is \(R^2 w^2 / 2\). With the constraint that only charge \(W\) vortices are allowed as propagating excitations, at the phase transition \(R^2 W^2 / 2 = 2\), so that the critical \(R=2/W\).
What we want to know is the scaling dimension of the \(w=1\) operator, which at the phase transition is \(\Delta = (1R)^2/2 = 2/W^2\).
This is the critical scaling dimension of a single insertion, so the two-point
Vortex_Vortex
scales with twice this dimension at the critical point.When \(W=\infty\) every \(\kappa>0\) is critical, and \(\Delta_V = 2R^2 = 2\times 2\pi \kappa = 4\pi \kappa\).
- static Villain(S, Links)[source]
We can write \(V_{x,y}\) as the ratio of two partition functions,
\[\begin{split}\begin{align} V_{x,y} &= Z_0[x,y] / Z_0 \\ Z_J[x,y] &= \sum\hspace{-1.33em}\int D\phi\; Dn\; Dv\; e^{-S_J[\phi, n, v]} e^{2\pi i (v_x - v_y) / W} \\ S_J[\phi, n, v] &= \frac{\kappa}{2} \sum_{\ell} (d\phi - 2\pi n)_\ell^2 + 2\pi i \sum_p \left(v/W + J/2\pi \right)_p (dn)_p \end{align}\end{split}\]where \(Z\) is the standard
Villain
partition function with action \(S\). The difference between \(Z[x,y]\) and \(Z\) is the insertion of the two-point exponential. We can absorb that difference into the \(v\) term in \(S\),\[\begin{split}\begin{align} S_0'[\phi, n, v] &= \frac{\kappa}{2} \sum_{\ell} (d\phi - 2\pi n)_\ell^2 + 2\pi i \sum_p \left(v/W\right)_p (dn)_p + 2\pi i (v_x-v_y)/W \\ &= \frac{\kappa}{2} \sum_{\ell} (d\phi - 2\pi n)_\ell^2 + 2\pi i \sum_p \left(v/W\right)_p (dn_p + \delta_{xp} - \delta_{yp} ) \end{align}\end{split}\]so integrating out \(v\) would now change the winding constraint to \([dn_p \equiv \delta_{yp} - \delta_{xp} \text{ mod } W]\).
Now define \(\hat{n} = n_{\ell} - [P_{xy}]_{\ell}\) for \(n\) satisfying the modified constraint and \(P\) defined as follows. Let \([\mathcal{P}_{xy}]_{\tilde{\ell}}\) trace any fixed path at all whatsoever on the dual lattice from \(\star y\) to \(\star x\), accumulating +1 when it traces along a dual link and -1 when it traces against a dual link. Then \([P_{xy}]_{\star\tilde{\ell}} = [\star\mathcal{P}_{xy}]_{\tilde{\ell}}\) and \(\hat{n}\) satisfies the original constraint.
Then we can change the integration variables from \(n\) to \(\hat{n}\) as long as we also change the action,
\[\begin{align} Z_J[x,y] &= \sum\hspace{-1.33em}\int D\phi\; D\hat{n}\; e^{-S_J[\phi, \hat{n} + P]} [d\hat{n} \equiv 0 \text{ mod } W] \end{align}\]with the same \(S_J\). Since in the hatted variables the constraint is satisfied, we can calculate this using constraint-obeying configurations by reweighting,
\[\begin{align} Z_J[x,y] &= \sum\hspace{-1.33em}\int D\phi\; D\hat{n}\; e^{-S_J[\phi, \hat{n}]} e^{-(S_J[\phi, \hat{n} + P]-S_J[\phi, \hat{n}])} [d\hat{n} \equiv 0 \text{ mod } W] \end{align}\]Or, in other words, we measure
\[ \begin{align} V_{x,y} &= \left\langle \hat{V}_{x,y} = e^{-(S_J[\phi, \hat{n} + P_{xy}]-S_J[\phi, \hat{n}])} \right\rangle \end{align}\]in our standard ensemble.
Note
The actual path \(P_{xy}\) used is irrelevant in expectation, though of course on a fixed configuration you get different measurements if you pick different paths. An implementation detail is that the fixed chosen path is the taxicab path that first covers the whole time separation and then the whole space separation. The point is that any other path can be reached by making a combination of
ExactUpdate
s andHolonomyUpdate
s.Clearly \(V_{x,x}=1\), and we can normalize so that \(\texttt{Vortex_Vortex}_{\Delta x = 0} = 1\). The methods provided in this observable are already normalized. However, inline measurements like those provided by a
worm
are not, and can only be normalized after the bootstrap, which is why anything that depends on this observable is aDerivedQuantity
.
- class supervillain.observable.VortexSusceptibility[source]
Bases:
DerivedQuantity
The vortex susceptibility is the spacetime integral of the
Vortex_Vortex
correlator \(V_{\Delta x}\),\[\texttt{VortexSusceptibility} = \chi_V = \int d^2r\; V(r).\]
- class supervillain.observable.VortexSusceptibilityScaled[source]
Bases:
VortexSusceptibility
At the critical point and in the CFT the
VortexSusceptibility
has a known expected scaling that comes from the scaling dimension \(\Delta\) of \(e^{2\pi i v/W}\).\[\chi_V \sim L^{2-2\Delta(\kappa, W)}\]where the scaling at the critical coupling \(\kappa_c\) is known and depends on the constraint integer \(W\).
So, we scale the susceptibility,
\[\texttt{VortexSusceptibilityScaled} = \chi_V / L^{2-2\Delta(\kappa_c, W)}\]so that at the critical coupling the infinite-volume limit of
VortexSusceptibilityScaled
will be a constant.Note
The 2 depends on being in 2 dimensions, while the \(2\Delta\) comes from the fact that the
Vortex_Vortex
correlator is a two-point function.
- class supervillain.observable.VortexCriticalMoment[source]
Bases:
DerivedQuantity
The critical moment of the vortex correlator \(C_V\) is the volume-average of the correlator multiplied by its long-distance critical behavior,
\[C_V = \frac{1}{L^2} \int d^2r\; r^{2\Delta_V(\kappa_c, W)}\; V(r)\]At the critical \(\kappa\) the long-distance behavior of the
Vortex_Vortex
correlator \(V\) decays with exactly the required power to cancel the explicit power of \(r\) and the integral cancels the normalization, giving 1 in the large-\(L\) limit.In the gapped phase \(V\) decays exponentially with \(r\) and the integral converges, so \(C_V\) goes to 0 in the large-\(L\) limit.
In the CFT, \(V\) decays polynomially, but faster than the weight from the moment grows. The integral scales with a power less than 2 and \(C_V\) again goes to 0 in the large-\(L\) limit.