Flux-threaded ring: level flow and persistent current#
A magnetic flux through a mesoscopic ring changes the boundary phase acquired by a charged particle around the loop. The resulting level flow produces an equilibrium persistent current, a standard manifestation of phase coherence in multiply connected conductors.[1][2]
For a spinless ring of \(L\) sites,
where
The example uses \(L=4\), \(N=2\), and \(t=1\).
Complex hopping#
import numpy as np
from edinpy import fermion as edf
L = 4
N = 2
t = 1.0
phi = np.pi / 2
theta = phi / L
phase = np.exp(1j * theta)
modes = edf.FermionModes(edf.DoF(L, name="site"))
sector = edf.NParticleSector(modes, N=N).build()
c = edf.set_notation(edf.Annihilation, modes)
cd = edf.set_notation(edf.Creation, modes)
H = 0
for i in range(L):
j = (i + 1) % L
hop = cd(i) * c(j)
H += -t * (phase * hop + phase.conjugate() * hop.dag)
The conjugate hopping amplitudes preserve Hermiticity while making the matrix genuinely complex.
Single-particle level flow#
For momenta
the one-particle energies are
Single-particle level flow of the four-site ring. Crossings change which orbitals are occupied in the zero-temperature many-body ground state.#
Many-body ground-state energy#
For noninteracting fermions,
Many-body ground-state energy at half filling. Exact diagonalization of the complex Fock-space Hamiltonian reproduces the occupied single-particle result, including the cusps produced by level crossings.#
Persistent current as a custom operator#
The equilibrium current is
Differentiating the Hamiltonian term by term gives
The literal operator is:
current = 0
for i in range(L):
j = (i + 1) % L
hop = cd(i) * c(j)
current += (t / L) * (
1j * phase * hop
- 1j * phase.conjugate() * hop.dag
)
hamiltonian = edf.Hamiltonian(H, sector)
hamiltonian.eigsolve(k=None)
psi0 = hamiltonian.eigenstate(0)
I = np.real(psi0.dag * current * psi0)
Persistent current of the half-filled ring. The discontinuous changes at zero temperature coincide with changes in the occupied single-particle levels.#