• full name: tenpy.models.mixed_xk

  • parent module: tenpy.models

  • type: module


Inheritance diagram of tenpy.models.mixed_xk


Example: Spin-full Hubbard model on a square lattice in x-k-Basis.

MixedXKLattice(N_rings, Ly, N_orb, sites[, ...])

Lattice for fermions with mixed real and momentum space on a cylinder.


Base class for a Hamiltonian represented in mixed x-k-space on a cylinder.


Spin-less fermionic Hubbard model on a square lattice in x-k-basis.

Module description

Basic model for DMRG with mixed real- and momentum-space representation.

This module provides classes for DMRG of fermions in a mixed real- and momentum-space basis, as described in [motruk2016].

We consider infinite cylinders in real-space along the cylinder axis, but transform to momentum space around the cylinder. The DMRG unit cell consists of N_rings “rings” on the cylinder with a given x-coordinate i. Inside each ring, we consider Ly repetitions of N_orb independent fermionic orbitals around the cylinder. Each orbital is one fermionic state that can be occupied or empty and corresponds to a unique creation/annihilation operator in second quantization. We will also refer to the orbitals as “site”; they will be represented by the 2-dimensional Hilbert space of a FermionSite.

The real-space operators \(c^{(\dagger)}_{i,j,l}\) are index by x-coordinate \(x = 0, ... , N_{rings}-1\) along the cylinder axis, y-coordinate \(y = 0, ..., L_y\) around the cylinder, and orbital \(l = 0, ... N_{orb}\). We transform them into momentum space with the convention (for all \(x,l\) independently):

\[\begin{split}c^\dagger_{x,k,l} = 1/\sqrt{L_y} \sum_y \exp(- \frac{2\pi i}{L_y} * k * y) c^\dagger_{x,y,l} \\ c_{x,k,l} = 1/\sqrt{L_y} \sum_y \exp(+ \frac{2\pi i}{L_y} * k * y) c_{x,y,l} \\ c^\dagger_{x,y,l} = 1/\sqrt{L_y} \sum_k \exp(+ \frac{2\pi i}{L_y} * k * y) c^\dagger_{x,k,l} \\ c_{x,y,l} = 1/\sqrt{L_y} \sum_k \exp(- \frac{2\pi i}{L_y} * k * y) c_{x,k,l}\end{split}\]

We use the indices k = 0, ... Ly-1 and define the actual momentum as \(k_y = 2 \pi i / L_y * k\) for \(k \leq Ly/2\) and and shift to \(k_y = 2 \pi i * (k-L_y) / L_y ` for :math:`k > Ly/2\) such that \(k_y \in (-\pi, \pi]\). The momenta fulfill the usual relations

\[\begin{split}\sum_y \exp(\pm \frac{2 \pi i}{L_y} (k1 - k2) y) = L \delta_{k1, k2} \\ \sum_k \exp(\pm \frac{2 \pi i}{L_y} k (y1 - y2)) = L \delta_{y1, y2}\end{split}\]

which transform the anti-commutation relations from real to momentum space and vice versa,

\[\begin{split}[c_{x1,y1,l1}, c^\dagger_{x2,y2,l2}]_+ = \delta_{x1,x2} \delta_{y1,y2} \delta_{l1,l2} \\ [c_{x1,k1,l1}, c^\dagger_{x2,k2,l2}]_+ = \delta_{x1,x2} \delta_{k1,k2} \delta_{l1,l2}\end{split}\]

In the MixedXKLattice, we consider one ring in the cylinder as unit-cell of a 1D lattice, since all of the ‘sites’ inside a ring need to have different charges if we conserve total k_y. The unit-cell index u inside a ring is defined as \(u = k* N_{orb} + l\). Methods for conversion are provided. Note that the sites in the DMRG “snake” might be shuffled once more due to the ring_order parameter, ultimately given in the lattice attribute order. The Jordan-Wigner strings follow the final DMRG snake.


It is not obvious how to generalize this to (hard-core) bosons, since the lack of the Pauli exclusion principle implies a possibly large occupation on single k modes, i.e., hard-core bosons in x-y-space don’t map to hard-core bosons in x-k-space!