J-Q Model

2x2 unit cell

class models.jq.JQ(j1=0.0, q=1.0, global_args=<config.GLOBALARGS object>)[source]
Parameters
  • j1 (float) – nearest-neighbour interaction

  • q (float) – ring-exchange interaction

  • global_args (GLOBALARGS) – global configuration

Build Spin-1/2 \(J-Q\) Hamiltonian

\[H = J_1\sum_{<i,j>} h2_{ij} - Q\sum_p h4_p\]

on the square lattice. Where the first sum runs over the pairs of sites i,j which are nearest-neighbours (denoted as <.,.>), and the second sum runs over all plaquettes p, where

  • \(h2_{ij} = \mathbf{S}_i.\mathbf{S}_j\) with indices of h2 corresponding to \(s_i s_j;s'_i s'_j\)

  • \(h4_p = (\mathbf{S}_i.\mathbf{S}_j-1/4)(\mathbf{S}_k.\mathbf{S}_l-1/4) + (\mathbf{S}_i.\mathbf{S}_k-1/4)(\mathbf{S}_j.\mathbf{S}_l-1/4)\) where i,j,k,l labels the sites of a plaquette. Hence the Q term in the Hamiltian correspond to the following action over plaquette:

    {ij,kl}   and    {ik,jl} (double lines denote the (S.S-1/4) terms)
    
    i===j            i---j
    |   |            || ||
    k===l      +     k---l
    

    and the indices of h4 correspond to \(s_is_js_ks_l;s'_is'_js'_ks'_l\)

energy_2x2_4site(state, env)[source]
Parameters
  • state (IPEPS) – wavefunction

  • env (ENV) – CTM environment

Returns

energy per site

Return type

float

We assume iPEPS with 2x2 unit cell containing four tensors A, B, C, and D with simple PBC tiling:

A B A B
C D C D
A B A B
C D C D

Taking the reduced density matrix \(\rho_{2x2}\) of 2x2 cluster given by ctm.generic.rdm.rdm2x2() with indexing of sites as follows \(\rho_{2x2}(s_0,s_1,s_2,s_3;s'_0,s'_1,s'_2,s'_3)\):

s0--s1
|   |
s2--s3

and without assuming any symmetry on the indices of individual tensors a set of four \(\rho_{2x2}\)’s are needed over which \(h2\) and \(h4\) operators are evaluated:

A3--1B   B3--1A   C3--1D   D3--1C
2    2   2    2   2    2   2    2
0    0   0    0   0    0   0    0
C3--1D & D3--1C & A3--1B & B3--1A
eval_corrf_DD_H(coord, direction, state, env, dist, verbosity=0)[source]
Parameters
  • coord (tuple(int,int)) – tuple (x,y) specifying vertex on a square lattice

  • direction (tuple(int,int)) – orientation of correlation function

  • state (IPEPS) – wavefunction

  • env (ENV) – CTM environment

  • dist (int) – maximal distance of correlator

Returns

dictionary with horizontal dimer-dimer correlation function

Return type

dict(str: torch.Tensor)

Evaluate horizontal dimer-dimer correlation functions

\[\langle(\mathbf{S}(r+3).\mathbf{S}(r+2))(\mathbf{S}(1).\mathbf{S}(0))\rangle\]

up to r = dist in given direction. See ctm.generic.corrf.corrf_2sOH2sOH_E1().

eval_corrf_DD_V(coord, direction, state, env, dist, verbosity=0)[source]
Parameters
  • coord (tuple(int,int)) – tuple (x,y) specifying vertex on a square lattice

  • direction (tuple(int,int)) – orientation of correlation function

  • state (IPEPS) – wavefunction

  • env (ENV) – CTM environment

  • dist (int) – maximal distance of correlator

Returns

dictionary with vertical dimer-dimer correlation function

Return type

dict(str: torch.Tensor)

Evaluate vertical dimer-dimer correlation functions

\[\langle(\mathbf{S}(r+1,1).\mathbf{S}(r+1,0))(\mathbf{S}(0,1).\mathbf{S}(0,0))\rangle\]

up to r = dist in given direction. See ctm.generic.corrf.corrf_2sOV2sOV_E2().

eval_corrf_SS(coord, direction, state, env, dist)[source]
Parameters
  • coord (tuple(int,int)) – reference site

  • direction (tuple(int,int)) –

  • state (IPEPS) – wavefunction

  • env (ENV) – CTM environment

  • dist (int) – maximal distance of correlator

Returns

dictionary with full and spin-resolved spin-spin correlation functions

Return type

dict(str: torch.Tensor)

Evaluate spin-spin correlation functions \(\langle\mathbf{S}(r).\mathbf{S}(0)\rangle\) up to r = dist in given direction. See ctm.generic.corrf.corrf_1sO1sO().

eval_obs(state, env)[source]
Parameters
  • state (IPEPS) – wavefunction

  • env (ENV) – CTM environment

Returns

expectation values of observables, labels of observables

Return type

list[float], list[str]

Computes the following observables in order

  1. average magnetization over the unit cell,

  2. magnetization for each site in the unit cell

  3. \(\langle S^z \rangle,\ \langle S^+ \rangle,\ \langle S^- \rangle\) for each site in the unit cell

where the on-site magnetization is defined as

\[\begin{split}\begin{align*} m &= \sqrt{ \langle S^z \rangle^2+\langle S^x \rangle^2+\langle S^y \rangle^2 } =\sqrt{\langle S^z \rangle^2+1/4(\langle S^+ \rangle+\langle S^- \rangle)^2 -1/4(\langle S^+\rangle-\langle S^-\rangle)^2} \\ &=\sqrt{\langle S^z \rangle^2 + 1/2\langle S^+ \rangle \langle S^- \rangle)} \end{align*}\end{split}\]

Usual spin components can be obtained through the following relations

\[\begin{split}\begin{align*} S^+ &=S^x+iS^y & S^x &= 1/2(S^+ + S^-)\\ S^- &=S^x-iS^y\ \Rightarrow\ & S^y &=-i/2(S^+ - S^-) \end{align*}\end{split}\]

1x1 C4v

class models.jq.JQ_C4V(j1=0.0, q=1.0, global_args=<config.GLOBALARGS object>)[source]
Parameters
  • j1 (float) – nearest-neighbour interaction

  • q (float) – ring-exchange interaction

  • global_args (GLOBALARGS) – global configuration

Build Spin-1/2 \(J-Q\) Hamiltonian

\[H = J_1\sum_{<i,j>} h2_{ij} - Q\sum_p h4_p\]

on the square lattice. Where the first sum runs over the pairs of sites i,j which are nearest-neighbours (denoted as <.,.>), and the second sum runs over all plaquettes p, where

  • \(h2_{ij} = \mathbf{S}_i.\mathbf{S}_j\) with indices of h2 corresponding to \(s_i s_j;s'_i s'_j\)

  • \(h4_p = (\mathbf{S}_i.\mathbf{S}_j-1/4)(\mathbf{S}_k.\mathbf{S}_l-1/4) + (\mathbf{S}_i.\mathbf{S}_k-1/4)(\mathbf{S}_j.\mathbf{S}_l-1/4)\) where i,j,k,l labels the sites of a plaquette. Hence the Q term in the Hamiltian correspond to the following action over plaquette:

    {ij,kl}   and    {ik,jl} (double lines denote the (S.S-1/4) terms)
    
    i===j            i---j
    |   |            || ||
    k===l      +     k---l
    

    and the indices of h4 correspond to \(s_is_js_ks_l;s'_is'_js'_ks'_l\)

energy_1x1(state, env_c4v)[source]
Parameters
  • state (IPEPS_C4V) – wavefunction

  • env_c4v (ENV_C4V) – CTM c4v symmetric environment

Returns

energy per site

Return type

float

We assume 1x1 C4v iPEPS which tiles the lattice with tensor A on every site:

1x1 C4v

A A A A
A A A A
A A A A
A A A A

Due to C4v symmetry it is enough to construct a single reduced density matrix ctm.one_site_c4v.rdm_c4v.rdm2x2() of a 2x2 plaquette. Afterwards, the energy per site e is computed by evaluating a single plaquette term \(h_p\) containing two nearest-neighbour terms \(\bf{S}.\bf{S}\) and h4_p as:

\[e = \langle \mathcal{h_p} \rangle = Tr(\rho_{2x2} \mathcal{h_p})\]
eval_obs(state, env_c4v)[source]
Parameters
  • state (IPEPS_C4V) – wavefunction

  • env_c4v (ENV_C4V) – CTM c4v symmetric environment

Returns

expectation values of observables, labels of observables

Return type

list[float], list[str]

Computes the following observables in order

  1. magnetization

  2. \(\langle S^z \rangle,\ \langle S^+ \rangle,\ \langle S^- \rangle\)

where the on-site magnetization is defined as

\[\begin{split}\begin{align*} m &= \sqrt{ \langle S^z \rangle^2+\langle S^x \rangle^2+\langle S^y \rangle^2 } =\sqrt{\langle S^z \rangle^2+1/4(\langle S^+ \rangle+\langle S^- \rangle)^2 -1/4(\langle S^+\rangle-\langle S^-\rangle)^2} \\ &=\sqrt{\langle S^z \rangle^2 + 1/2\langle S^+ \rangle \langle S^- \rangle)} \end{align*}\end{split}\]

Usual spin components can be obtained through the following relations

\[\begin{split}\begin{align*} S^+ &=S^x+iS^y & S^x &= 1/2(S^+ + S^-)\\ S^- &=S^x-iS^y\ \Rightarrow\ & S^y &=-i/2(S^+ - S^-) \end{align*}\end{split}\]