J1-J2-J3 and J1-J2-lambda Heisenberg Model¶
from 2x1 to 4x2 unit cell (PyTorch)¶
J1-J2 model defined on iPEPS with extended unit cell using dense PyTorch tensors.
- class models.j1j2.J1J2(j1=1.0, j2=0, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
j1 (float) – nearest-neighbour interaction
j2 (float) – next nearest-neighbour interaction
global_args (GLOBALARGS) – global configuration
Build Spin-1/2 \(J_1-J_2\) Hamiltonian
\[H = J_1\sum_{<i,j>} \mathbf{S}_i.\mathbf{S}_j + J_2\sum_{<<i,j>>} \mathbf{S}_i.\mathbf{S}_j\]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 pairs of sites i,j which are next nearest-neighbours (denoted as <<.,.>>)
- energy_2x2_1site_BP(state, env)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
We assume 1x1 iPEPS which tiles the lattice with a bipartite pattern composed of two tensors A, and B=RA, where R appropriately rotates the physical Hilbert space of tensor A on every “odd” site:
1x1 C4v => rotation R => BIPARTITE A A A A A B A B A A A A B A B A A A A A A B A B A A A A B A B A
A single reduced density matrix
ctm.rdm.rdm2x2()
of a 2x2 plaquette is used to evaluate the energy.
- energy_2x2_2site(state, env)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
We assume iPEPS with 2x1 unit cell containing two tensors A, B. We can tile the square lattice in two ways:
BIPARTITE STRIPE A B A B A B A B B A B A A B A B A B A B A B A B B A B A A B A B
Taking reduced density matrix \(\rho_{2x2}\) of 2x2 cluster 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 following set of terms has to be evaluated in order to compute energy-per-site:
0 1--A--3 2 Ex.1 unit cell A B, with BIPARTITE tiling A3--1B, B3--1A, A, B, A3 , B3 , 1A, 1B 2 0 \ \ / / 0 2 \ \ / / B A 1A 1B A3 B3 Ex.2 unit cell A B, with STRIPE tiling A3--1A, B3--1B, A, B, A3 , B3 , 1A, 1B 2 0 \ \ / / 0 2 \ \ / / A B 1B 1A B3 A3
- energy_2x2_4site(state, env)[source]¶
- Parameters:
- 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 the individual tensors a set of four \(\rho_{2x2}\)’s are needed over which \(h2\) operators for the nearest and next-neaerest neighbour pairs 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
- energy_2x2_8site(state, env)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
We assume iPEPS with 4x2 unit cell containing eight tensors A, B, C, D, E, F, G, H with PBC tiling + SHIFT:
A B E F C D G H A B E F C D G H
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 the individual tensors a set of eight \(\rho_{2x2}\)’s are needed over which \(h2\) operators for the nearest and next-neaerest neighbour pairs are evaluated:
A3--1B B3--1E E3--1F F3--1A 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 C3--1D & D3--1G & G3--1H & H3--1C C3--1D D3--1G G3--1H H3--1C 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 B3--1E & E3--1F & F3--1A & A3--1B
- eval_corrf_SS(coord, direction, state, env, dist)[source]¶
- Parameters:
- 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. Seectm.generic.corrf.corrf_1sO1sO()
.
- eval_obs(state, env)[source]¶
- Parameters:
- Returns:
expectation values of observables, labels of observables
- Return type:
list[float], list[str]
Computes the following observables in order
average magnetization over the unit cell,
magnetization for each site in the unit cell
\(\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
\[m &= \sqrt{ \langle S^z \rangle^2+\langle S^x \rangle^2+\langle S^y \rangle^2 }\]
from 2x1 to 4x2 unit cell (dense YAST)¶
J1-J2 model defined on ipeps.ipeps_abelian.IPEPS_ABELIAN
with extended unit cell
This implementation of SU(2)-symmetric J1-J2 model works with dense YAST tensors. In particular, the physical reduced density matrices, Hamiltonian terms, observables, etc. are dense YAST tensors. As such, their indices have signature.
Note
The underlying iPEPS wavefunction can make use of explicit internal symmetry and thus block-sparse tensors. After physical reduced density matrices are built from such iPEPS and its environment, they are converted to dense form (keeping signature information).
- class models.abelian.j1j2.J1J2_NOSYM(settings, j1=1.0, j2=0.0, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
j1 (float) – nearest-neighbour interaction
j2 (float) – next nearest-neighbour interaction
global_args (GLOBALARGS) – global configuration
Build Spin-1/2 \(J_1-J_2\) Hamiltonian
\[H = J_1\sum_{<i,j>} h2_{ij} + J_2\sum_{<<i,j>>} h2_{ij}\]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 pairs of sites i,j which are next nearest-neighbours (denoted as <<.,.>>):
y\x _:__:__:__:_ ..._|__|__|__|_... ..._|__|__|__|_... ..._|__|__|__|_... ..._|__|__|__|_... ..._|__|__|__|_... : : : :
where
\(h2_{ij} = \mathbf{S_i}.\mathbf{S_j}\) with indices of h2 corresponding to \(s_i s_j;s'_i s'_j\)
- energy_2x1_or_2Lx2site_2x2rdms(state, env, **kwargs)[source]¶
- Parameters:
state (IPEPS_ABELIAN) – wavefunction
env (ENV_ABELIAN) – CTM environment
- Returns:
energy per site
- Return type:
float
Covered cases:
1) Assume iPEPS with 2x1 unit cell containing two tensors A, B. We can tile the square lattice in two ways:
BIPARTITE STRIPE A B A B A B A B B A B A A B A B A B A B A B A B B A B A A B A B
Taking reduced density matrix \(\rho_{2x2}\) of 2x2 cluster 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 following set of terms has to be evaluated in order to compute energy-per-site:
0 1--A--3 2 Ex.1 unit cell A B, with BIPARTITE tiling A3--1B, B3--1A, A, B, A3 , B3 , 1A, 1B 2 0 \ \ / / 0 2 \ \ / / B A 1A 1B A3 B3 Ex.2 unit cell A B, with STRIPE tiling A3--1A, B3--1B, A, B, A3 , B3 , 1A, 1B 2 0 \ \ / / 0 2 \ \ / / A B 1B 1A B3 A3
All the above terms can be captured by evaluating correlations over two reduced density matrices if 2x2 cluster:
A3--1B B3 1A 2 \/ 2 2 \/ 2 0 /\ 0 0 /\ 0 B3--1A & A3 1B A3--1B B3--1A 2 \/ 2 2 \/ 2 0 /\ 0 0 /\ 0 A3--1B & B3--1A
2) We assume iPEPS with 2Lx2 unit cell. Simplest example would be a 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 the individual tensors a set of four \(\rho_{2x2}\)’s are needed over which \(h2\) operators for the nearest and next-neaerest neighbour pairs 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
A more complex example 4x2 unit cell containing eight tensors A, B, C, D, E, F, G, H with PBC tiling + SHIFT:
A B E F C D G H A B E F C D G H
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 the individual tensors a set of eight \(\rho_{2x2}\)’s are needed over which \(h2\) operators for the nearest and next-neaerest neighbour pairs are evaluated:
A3--1B B3--1E E3--1F F3--1A 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 C3--1D & D3--1G & G3--1H & H3--1C C3--1D D3--1G G3--1H H3--1C 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 B3--1E & E3--1F & F3--1A & A3--1B
- eval_obs(state, env, **kwargs)[source]¶
- Parameters:
state (IPEPS_ABELIAN) – wavefunction
env (ENV_ABELIAN) – CTM environment
- Returns:
expectation values of observables, labels of observables
- Return type:
list[float], list[str]
Computes the following observables in order
average magnetization over the unit cell,
magnetization for each site in the unit cell
\(\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 (PyTorch)¶
Single-site C4v symmetric IPEPS_C4V supports J1-J2-J3 model and J1-J2-lambda model. This implementation works with dense PyTorch tensors.
- class models.j1j2.J1J2_C4V_BIPARTITE(j1=1.0, j2=0, j3=0, hz_stag=0.0, delta_zz=1.0, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
j1 (float) – nearest-neighbour interaction
j2 (float) – next nearest-neighbour interaction
j3 (float) – next-to-next nearest-neighbour interaction
hz_stag (float) – staggered magnetic field
delta_zz – easy-axis (nearest-neighbour) anisotropy
global_args (GLOBALARGS) – global configuration
Build Spin-1/2 \(J_1-J_2-J_3\) Hamiltonian
\[H = J_1\sum_{<i,j>} \mathbf{S}_i.\mathbf{S}_j + J_2\sum_{<<i,j>>} \mathbf{S}_i.\mathbf{S}_j + J_3\sum_{<<<i,j>>>} \mathbf{S}_i.\mathbf{S}_j\]on the square lattice. Where the first sum runs over the pairs of sites i,j which are nearest-neighbours (denoted as <.,.>), the second sum runs over pairs of sites i,j which are next nearest-neighbours (denoted as <<.,.>>), and the last sum runs over pairs of sites i,j which are next-to-next nearest-neighbours (denoted as <<<.,.>>>).
- energy_1x1(state, env_c4v, **kwargs)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
We assume 1x1 C4v iPEPS which tiles the lattice with a bipartite pattern composed of two tensors A, and B=RA, where R appropriately rotates the physical Hilbert space of tensor A on every “odd” site:
1x1 C4v => rotation R => BIPARTITE A A A A A B A B A A A A B A B A A A A A A B A B A A A A B A B A
Due to C4v symmetry it is enough to construct just one or two different reduced density matrices to evaluate energy per site.
In the case of \(J_3=0\), it is sufficient to only consider
ctm.one_site_c4v.rdm_c4v.rdm2x2()
of a 2x2 plaquette. Afterwards, the energy per site e is computed by evaluating a plaquette term \(h_p\) containing two nearest-nighbour terms \(\bf{S}.\bf{S}\) and two next-nearest neighbour \(\bf{S}.\bf{S}\), as:\[e = \langle \mathcal{h_p} \rangle = Tr(\rho_{2x2} \mathcal{h_p})\]If \(J_3 \neq 0\), additional reduced density matrix
ctm.one_site_c4v.rdm_c4v.rdm3x1()
is constructed to evaluate next-to-next nearest neighbour interaction.
- energy_1x1_lowmem(state, env_c4v, force_cpu=False)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
Analogous to
energy_1x1()
. However, the evaluation of energy is realized by individually constructing low-memory versions of reduced density matrices for nearest (NN), next-nearest (NNN), and next-to-next nearest neighbours (NNNN). In particular:
- energy_1x1_tiled(state, env_c4v, force_cpu=False)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
Analogous to
energy_1x1()
. However, the evaluation of energy is realized by individually constructing low-memory tiled versions of reduced density matrices for nearest (NN), next-nearest (NNN), and next-to-next nearest neighbours (NNNN). In particular:NN:
ctm.one_site_c4v.rdm_c4v_specialized.rdm2x2_NN_tiled()
NNN:
ctm.one_site_c4v.rdm_c4v_specialized.rdm2x2_NNN_tiled()
- eval_corrf_DD_H(state, env_c4v, dist, verbosity=0)[source]¶
- Parameters:
- 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
.
- eval_corrf_DD_V(state, env_c4v, dist, verbosity=0)[source]¶
- Parameters:
- 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
.
- eval_corrf_SS(state, env_c4v, dist, canonical=False)[source]¶
- Parameters:
- 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
.
- eval_obs(state, env_c4v, force_cpu=False)[source]¶
- Parameters:
- Returns:
expectation values of observables, labels of observables
- Return type:
list[float], list[str]
Computes the following observables in order
magnetization
\(\langle S^z \rangle,\ \langle S^+ \rangle,\ \langle S^- \rangle\)
\(\langle S.S \rangle_{NN}\), (optionally) \(\langle S.S \rangle_{NNNN}\)
where the on-site magnetization is defined as
\[m = \sqrt{ \langle S^z \rangle^2+\langle S^x \rangle^2+\langle S^y \rangle^2 }\]
- class models.j1j2lambda.J1J2LAMBDA_C4V_BIPARTITE(j1=1.0, j2=0, j3=0, hz_stag=0.0, delta_zz=1.0, lmbd=0, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
j1 (float) – nearest-neighbour interaction
j2 (float) – next nearest-neighbour interaction
j3 (float) – next-to-next nearest-neighbour interaction
hz_stag (float) – staggered magnetic field
delta_zz – easy-axis (nearest-neighbour) anisotropy
lmbd (float) – chiral 4-site (plaquette) interaction
global_args (GLOBALARGS) – global configuration
Build Spin-1/2 \(J_1-J_2-J_3-\lambda\) Hamiltonian
\[H = J_1\sum_{<i,j>} \mathbf{S}_i.\mathbf{S}_j + J_2\sum_{<<i,j>>} \mathbf{S}_i.\mathbf{S}_j + J_3\sum_{<<<i,j>>>} \mathbf{S}_i.\mathbf{S}_j + i\lambda \sum_p P_p - P^{-1}_p\]on the square lattice. Where the first sum runs over the pairs of sites i,j which are nearest-neighbours (denoted as <.,.>), the second sum runs over pairs of sites i,j which are next nearest-neighbours (denoted as <<.,.>>), and the last sum runs over pairs of sites i,j which are next-to-next nearest-neighbours (denoted as <<<.,.>>>). Running over all plaquettes p, the chiral term P permutes spins on the plaquette in clockwise order and its inverse P^{-1} in anti-clockwise order.
- energy_1x1(state, env_c4v, force_cpu=False, **kwargs)[source]¶
- Parameters:
- Returns:
energy per site
- Return type:
float
Analogous to
models.j1j2.J1J2_C4V_BIPARTITE.energy_1x1()
.
- eval_corrf_DD_H(state, env_c4v, dist, verbosity=0)[source]¶
- Parameters:
- Returns:
dictionary with horizontal dimer-dimer correlation function
- Return type:
dict(str: torch.Tensor)
Identical to
models.j1j2.J1J2_C4V_BIPARTITE.eval_corrf_DD_H()
.
- eval_corrf_DD_V(state, env_c4v, dist, verbosity=0)[source]¶
- Parameters:
- Returns:
dictionary with vertical dimer-dimer correlation function
- Return type:
dict(str: torch.Tensor)
Identical to
models.j1j2.J1J2_C4V_BIPARTITE.eval_corrf_DD_V()
.
- eval_corrf_SS(state, env_c4v, dist, canonical=False, rl_0=None)[source]¶
- Parameters:
- Returns:
dictionary with full and spin-resolved spin-spin correlation functions
- Return type:
dict(str: torch.Tensor)
Identical to
models.j1j2.J1J2_C4V_BIPARTITE.eval_corrf_SS()
.
- eval_obs(state, env_c4v, force_cpu=False)[source]¶
- Parameters:
- Returns:
expectation values of observables, labels of observables
- Return type:
list[float], list[str]
Computes the following observables in order
magnetization
\(\langle S^z \rangle,\ \langle S^+ \rangle,\ \langle S^- \rangle\)
\(\langle S.S \rangle_{NN}\), (optionally) \(\langle S.S \rangle_{NNNN}\)
(optionally) \(\langle P - P^{-1} \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}\]
1x1 C4v (dense YAST)¶
Single-site C4v symmetric ipeps.ipeps_abelian_c4v.IPEPS_ABELIAN_C4V
supports J1-J2 model.
This implementation of SU(2)-symmetric J1-J2 model works with dense YAST tensors. In particular, the physical reduced density matrices, Hamiltonian terms, observables, etc. are dense YAST tensors. As such, their indices have signature.
Note
The underlying iPEPS wavefunction can make use of explicit internal symmetry and thus block-sparse tensors. After physical reduced density matrices are built from such iPEPS and its environment, they are converted to dense form (keeping signature information).
- class models.abelian.j1j2.J1J2_C4V_BIPARTITE_NOSYM(settings, j1=1.0, j2=0.0, global_args=<config.GLOBALARGS object>)[source]¶
- Parameters:
j1 (float) – nearest-neighbour interaction
j2 (float) – next nearest-neighbour interaction
global_args (GLOBALARGS) – global configuration
Build Spin-1/2 \(J_1-J_2\) Hamiltonian
\[H = J_1\sum_{<i,j>} \mathbf{S}_i.\mathbf{S}_j + J_2\sum_{<<i,j>>} \mathbf{S}_i.\mathbf{S}_j = \sum_{p} h_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 pairs of sites i,j which are next nearest-neighbours (denoted as <<.,.>>).
The plaquette term is defined as
\(h_p = J_1(\mathbf{S}_{r}.\mathbf{S}_{r+\vec{x}} + \mathbf{S}_{r}.\mathbf{S}_{r+\vec{y}}) +J_2(\mathbf{S}_{r}.\mathbf{S}_{r+\vec{x}+\vec{y}} + \mathbf{S}_{r+\vec{x}}.\mathbf{S}_{r+\vec{y}})\) with indices of spins ordered as follows \(s_r s_{r+\vec{x}} s_{r+\vec{y}} s_{r+\vec{x}+\vec{y}}; s'_r s'_{r+\vec{x}} s'_{r+\vec{y}} s'_{r+\vec{x}+\vec{y}}\)
- energy_1x1(state, env_c4v, force_cpu=False, **kwargs)[source]¶
- Parameters:
state (IPEPS_ABELIAN_C4V) – wavefunction
env_c4v (ENV_ABELIAN_C4V) – CTM c4v symmetric environment
- Returns:
energy per site
- Return type:
float
We assume 1x1 C4v iPEPS which tiles the lattice with a bipartite pattern composed of two tensors A, and B=RA, where R rotates approriately the physical Hilbert space of tensor A on every “odd” site:
1x1 C4v => rotation P => BIPARTITE A A A A A B A B A A A A B A B A A A A A A B A B A A A A B A B 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-nighbour terms \(\bf{S}.\bf{S}\) and two next-nearest neighbour \(\bf{S}.\bf{S}\), as:\[e = \langle \mathcal{h_p} \rangle = Tr(\rho_{2x2} \mathcal{h_p})\]
- energy_1x1_lowmem(state, env_c4v, force_cpu=False, **kwargs)[source]¶
- Parameters:
state (IPEPS_ABELIAN_C4V) – wavefunction
env_c4v (ENV_ABELIAN_C4V) – CTM c4v symmetric environment
- Returns:
energy per site
- Return type:
float
We assume 1x1 C4v iPEPS which tiles the lattice with a bipartite pattern composed of two tensors A, and B=RA, where R rotates approriately the physical Hilbert space of tensor A on every “odd” site:
1x1 C4v => rotation P => BIPARTITE A A A A A B A B A A A A B A B A A A A A A B A B A A A A B A B A
Due to C4v symmetry it is enough to construct two reduced density matrices. In particular,
ctm.one_site_c4v.rdm_c4v.rdm2x1()
of a NN-neighbour pair andctm.one_site_c4v.rdm_c4v.rdm2x1_diag()
of NNN-neighbour pair. Afterwards, the energy per site e is computed by evaluating a term \(h2_rot\) containing \(\bf{S}.\bf{S}\) for nearest- and \(h2\) term for next-nearest- expectation value as:\[e = 2*\langle \mathcal{h2} \rangle_{NN} + 2*\langle \mathcal{h2} \rangle_{NNN} = 2*Tr(\rho_{2x1} \mathcal{h2_rot}) + 2*Tr(\rho_{2x1_diag} \mathcal{h2})\]
- eval_obs(state, env_c4v, force_cpu=False, **kwargs)[source]¶
- Parameters:
state (IPEPS_ABELIAN_C4V) – wavefunction
env_c4v (ENV_ABELIAN_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
magnetization
\(\langle S^z \rangle,\ \langle S^+ \rangle,\ \langle S^- \rangle\)
where the on-site magnetization is defined as
\[m = \sqrt{ \langle S^z \rangle^2+\langle S^x \rangle^2+\langle S^y \rangle^2 }\]