Landau-level plane-wave form factors and exchange kernels for quantum Hall systems in a small, reusable package (useful for Hartree-Fock and related calculations). It provides:
- Analytic Landau-level plane-wave form factors
$F_{n',n}^\sigma(\mathbf{q})$ . - Exchange kernels
$X_{n_1 m_1 n_2 m_2}^\sigma(\mathbf{G})$ . - Symmetry diagnostics for verifying kernel implementations.
For
where
where
The package performs calculations in dimensionless units where lengths are scaled by
-
Coulomb interaction: The code assumes a potential of the form
$V(q) = \kappa \frac{2\pi e^2}{q \ell_B}$ (in effective dimensionless form).- If you set
kappa = 1.0, the resulting exchange kernels are in units of the Coulomb energy scale$E_C = e^2 / (\epsilon \ell_B)$ . - To express results in units of the cyclotron energy
$\hbar \omega_c$ , set$\kappa = E_C / (\hbar \omega_c) = (e^2/\epsilon \ell_B) / (\hbar \omega_c)$ .
- If you set
-
Custom potential: Provide a callable
potential(q)that returns values in your desired energy units. The integration measure$d^2q/(2\pi)^2$ introduces a factor of$1/\ell_B^2$ , so ensure your potential scaling is consistent.
From PyPI (once published):
pip install quantumhall-matrixelementsFrom a local checkout (development install):
pip install -e .[dev]import numpy as np
from quantumhall_matrixelements import (
get_form_factors,
get_exchange_kernels,
)
# Simple G set: G0=(0,0), G+=(1,0), G-=(-1,0)
Gs_dimless = np.array([0.0, 1.0, 1.0])
thetas = np.array([0.0, 0.0, np.pi])
nmax = 2
F = get_form_factors(Gs_dimless, thetas, nmax) # shape (nG, nmax, nmax)
X = get_exchange_kernels(Gs_dimless, thetas, nmax) # default 'gausslegendre' backend
print("F shape:", F.shape)
print("X shape:", X.shape)To use a user-provided interaction, pass a callable directly as potential:
def V_coulomb(q, kappa=1.0):
# q is in 1/ℓ_B units; this returns V(q) in Coulomb units
return kappa * 2.0 * np.pi / q
X_coulomb = get_exchange_kernels(
Gs_dimless,
thetas,
nmax,
method="gausslegendre",
potential=lambda q: V_coulomb(q, kappa=1.0),
)For more detailed examples, see the example scripts under examples/ and the tests under tests/.
The public APIs expose a sign_magneticfield keyword that represents
sign_magneticfield=-1 matches the package's internal convention
(electrons in a positive sign_magneticfield=+1 returns the
appropriate complex-conjugated form factors or exchange kernels for the
opposite field direction without requiring any manual phase adjustments:
F_plusB = get_form_factors(Gs_dimless, thetas, nmax, sign_magneticfield=+1)
X_plusB = get_exchange_kernels(Gs_dimless, thetas, nmax, method="hankel", sign_magneticfield=+1)If you use the package quantumhall-matrixelements in academic work, you must cite:
Sparsh Mishra and Tobias Wolf, quantumhall-matrixelements: Quantum Hall Landau-Level Matrix Elements, version 0.1.0, 2025.
DOI: https://doi.org/10.5281/zenodo.17807688
A machine-readable CITATION.cff file is included in the repository and can be used with tools that support it (for example, GitHub’s “Cite this repository” button).
The package provides two backends for computing exchange kernels:
-
gausslegendre(Default)-
Method: Gauss-Legendre quadrature mapped from
$[-1, 1]$ to$[0, \infty)$ via a rational mapping. -
Pros: Fast and numerically stable for all Landau-level indices (
$n$ ). -
Cons: May require tuning
nquadfor extremely large momenta or indices ($n > 100$ ). -
Recommended for: General usage, especially for
$n \ge 10$ .
-
Method: Gauss-Legendre quadrature mapped from
-
hankel- Method: Discrete Hankel transform.
- Pros: High precision and stability.
- Cons: Significantly slower than quadrature methods.
- Recommended for: Reference calculations and verifying the Gauss–Legendre backend.
The following wavefunction is used to find all matrix elements:
-
Run tests and coverage:
pytest
-
Lint and type-check:
ruff check . mypy .
- Authors: Dr. Tobias Wolf, Sparsh Mishra
- Copyright © 2025 Tobias Wolf
- License: MIT (see
LICENSE).