FermiSimplex
Adaptive, occupation-certified spectral calculations on simplex meshes.
FermiSimplex finds Fermi surfaces and computes zero-temperature charge and density matrices without paying for a dense momentum grid. Its central object is the local occupation
$$ N(k; \mu) = \mathrm{Tr}\left[\Theta\left(\mu I - H(k)\right)\right], $$
and its central question is simple: can the occupation be proved constant on this simplex, or should we look more closely?
The upstream development repository is GitLab; the GitHub repository is a public mirror.
See the visual Python tour for a presentation-ready introduction with real adaptive sampling traces, multiband examples, and a rotating noble-metal-inspired three-dimensional surface.
- 🛡️ Gapped-region proofs combine cached eigensystems with rigorous spectral bounds to exclude a Fermi-level crossing throughout a simplex and to bound the remaining charge.
- ⚡ Adaptive sampling, built on AdaptiveSimplex, concentrates diagonalizations near unresolved Fermi surfaces instead of refining the entire Brillouin zone uniformly.
- 🚀 Numerical efficiency by design: adaptive refinement, shared spectral caching, and the compiled numerical core avoid repeated work as the Fermi surface becomes progressively sharper.
- 🎯 Projected charge estimates compare sampled projected eigenvalues with vertex-linear interpolation only in the bands whose occupation is still ambiguous.
- 🧩 Python and C++ share one numerical core; models can be dense callables or translation-invariant tight-binding Hamiltonians.
Quick start
From a source checkout with a C++20 compiler and BLAS/LAPACK available:
pip install .
The model below produces the three-dimensional surface shown above:
import numpy as np
from fermisimplex import SpectralMesh
def hamiltonian(kx, ky, kz):
phase = 2 * np.pi * np.array([kx, ky, kz])
return np.array([[np.cos(phase).sum()]], dtype=complex)
mesh = SpectralMesh(hamiltonian)
surface = mesh.fermi_surface(
mu=0.17,
min_feature_size=0.07,
curvature_bound=(2 * np.pi) ** 2,
)
surface.points # (npoints, 3)
surface.cells # (ntriangles, 3)
surface.cell_bands # band index for every triangle
The coordinates are reduced coordinates in $[0,1]^d$. Here
$M=(2\pi)^2$ bounds every directional second derivative of the scalar
Hamiltonian. SpectralMesh infers the momentum-space dimension from the
callable arguments and the matrix dimension by evaluating it at the origin.
Callables receive separate coordinates: hamiltonian(kx, ky, ...).
The same SpectralMesh can drive the other observables and reuse every
eigensystem it has already computed:
charge = mesh.integrate_charge(
mu=0.17,
target_error=1e-2,
max_refinements=10_000,
curvature_bound=(2 * np.pi) ** 2,
)
density = mesh.integrate_density_matrix(
mu=0.17,
lattice_vectors=[(0, 0, 0), (1, 0, 0)],
target_error=1e-2,
max_refinements=10_000,
)
charge.value
charge.stopping_error
charge.certified_error_bound
density.matrices # (number of lattice vectors, ndof, ndof)
For a tight-binding model,
$$ H(k)=\sum_R H_R e^{-2\pi i k\cdot R}, $$
pass {R: H_R, ...} directly to SpectralMesh. Opposite hoppings are checked
for $H_{-R}=H_R^\dagger$.
What does the certificate prove?
At each simplex, FermiSimplex asks: can the occupation change between the
sampled vertices? It combines their eigensystems with curvature_bound,
which limits how much the Hamiltonian can bend in between. If occupied and
unoccupied trial subspaces remain on opposite sides of $\mu$, the occupation
is fixed everywhere—without sampling the interior.
- Certified: no Fermi surface crosses the simplex.
- Partially certified: rigorous lower and upper occupation bounds remain.
- Inconclusive: this is not a gapless verdict; FermiSimplex refines and tries again.
Every charge and Fermi-surface simplex is checked. The remaining uncertainty
becomes charge.certified_error_bound; surface.coverage_certified concerns
classification down to min_feature_size, not topology or geometric accuracy.
Density matrices currently use adaptive estimates instead.
The guarantee assumes a valid curvature_bound. Omitting it, None, and
0.0 all assert zero curvature; none disables certification. See the
mathematics guide for the proof and error bounds.
API at a glance
SpectralMesh: accept a callable or tight-binding dictionary and own the adaptive geometry and cached eigensystems.certify_simplex: certify supplied vertex eigenpairs directly; eigenvalues must be finite and ascending, and eigenvector columns must be finite and orthonormal. These performance-sensitive numerical preconditions are not rechecked.mesh.integrate_charge: adaptive filling and $dQ/d\mu$.mesh.integrate_density_matrix: real-space density-matrix components.mesh.fermi_surface: band-labelled points and cells in reduced coordinates.
Adaptive controls such as target_error, max_refinements, and
preview_depth are ordinary keyword arguments on the calculation that uses
them—there is no separate options object. Charge calculations default to
preview_depth=0 because their sampled projected-error estimate drives
refinement intrinsically; positive depths are intended for explicit
diagnostic comparisons.
See the visual Python tour, runnable quick start, and two-band plotting example, the visual-generation notes, and the build and architecture guide.
Development
AdaptiveSimplex provides the mesh geometry, refinement, vertex caching, and cut-simplex integration; FermiSimplex adds the spectral models, certificates, and observable-specific algorithms.
pixi run test
This builds the standalone C++ library, verifies an installed downstream CMake consumer, rebuilds the Python extension, and runs the Python tests. The dense 60-band stress case lives in benchmarks/fermi_surface_60.py.
FermiSimplex is licensed under the BSD 3-Clause license. If you use it in research, please cite the metadata in CITATION.cff.
Metadata
Release files for FermiSimplex 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fermisimplex-0.1.0.tar.gz | 46.8 kB | Details |
Built distributions (wheels)
Total release size: 48.4 MB
Release files / fermisimplex-0.1.0.tar.gz
| Download URL | fermisimplex-0.1.0.tar.gz |
|---|---|
| Size | 46.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
845506ee3d224d59d1b401bd86a4d49f04034ad964bdb540d33a0bb81966e2a8
|
|
BLAKE2b-256 checksum How to use checksums |
c3ee50eb113f79cf14709e605c1862705c7da4ddfb561f3ad5778b9a9093feea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp313-cp313-win_amd64.whl
| Download URL | fermisimplex-0.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
629b4062346eec5a61dae7464a4269e05181642e4d881f66ab3a4c6c06f4635d
|
|
BLAKE2b-256 checksum How to use checksums |
c4a4fb365e63fd0c3a4332bd6dacd43f582ca3740b42bd2c549914cb02fdcf55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fermisimplex-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3d57ef2d15bdf18ad9d80bb75651e618f53598edff6e52d3a77860e387b072d2
|
|
BLAKE2b-256 checksum How to use checksums |
1dd0821f8dac23f3b6a73e1737068175076990891c9b5eb72763ced02a897777
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl
| Download URL | fermisimplex-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl |
|---|---|
| Size | 176.0 kB |
| Tags | CPython 3.13 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
b451eeda95b017fb25f32522a1a69036111c163264163a5f4d37d613594d2677
|
|
BLAKE2b-256 checksum How to use checksums |
d72043df78057edb3963d6142e0b17572423fbf96e0d7c21ef9363e201edfcc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fermisimplex-0.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 161.3 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9f33f199de862acc21ea12869aa560b93d0e64bfd5ef8d31525adbeb8d581c41
|
|
BLAKE2b-256 checksum How to use checksums |
b1a79f3f5a3f15eee22c539d3a275082b9d42d491cd361c09ccf0a8b04316df9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp312-cp312-win_amd64.whl
| Download URL | fermisimplex-0.1.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
574fc5f7e604796790e605447ceed441ba0e5378170242b15003ae084fa0dd66
|
|
BLAKE2b-256 checksum How to use checksums |
0521c413833f1f08232708aa3b84cd664bc0cf7b6c426e03ae9004768ee01e86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fermisimplex-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a37491b8877ab9ad8054108b05c0bd0eb495f65857d9d050ecdffb53e138cf74
|
|
BLAKE2b-256 checksum How to use checksums |
75a36fe02bddc1232fdc90d5a8027ade8d8c87ec51475d49140c06e093927c36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | fermisimplex-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 176.0 kB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
e957eb55c5993c50193568fbd829cb03ab3d6cd54ab0083ac5df5c96e467aec2
|
|
BLAKE2b-256 checksum How to use checksums |
b8401b0795a51d8bc2ec69f160253509b299060b185eef598181d3c48b49b273
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fermisimplex-0.1.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 161.3 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f6afe3323c8741b0f3ef057bf3a16ca2dbcae6a15e6c8c98f9dcfbb192ab8988
|
|
BLAKE2b-256 checksum How to use checksums |
943bcdda90e6d5290b0fdbb14d12c407760238bc18aae23ab87fc9184ba1bb95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp311-cp311-win_amd64.whl
| Download URL | fermisimplex-0.1.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6ee3b1aedb786accb0840eb03f92d442fefe5517a411538e6a45d5a2c90de64c
|
|
BLAKE2b-256 checksum How to use checksums |
bc293b56b16cea251d5f1dae2de224b5006c2e837cfa2eebfd7be72e654e4eb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fermisimplex-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e471c02e297bea38836091ecc6fa2f244e61ca5c3cbc608c000c560d2c933929
|
|
BLAKE2b-256 checksum How to use checksums |
d88e77d5323500a4ac9cb8e55fabafd26f43308db3c760d2fd06a4775f06f4e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | fermisimplex-0.1.0-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 176.4 kB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
b4fcfbe6bc0e28e7eaaf33273cbf55792b4c115c16f1c2c201eb5e187cd2c16e
|
|
BLAKE2b-256 checksum How to use checksums |
354aaebac30702a0c41f4025e84d748049e8a2de42af72bc6ed1dd0b4d29d80d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / fermisimplex-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | fermisimplex-0.1.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 162.1 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4270f6300d05b8a472c08916a5d42612096e834f26965c5a4a70ecb763da6aef
|
|
BLAKE2b-256 checksum How to use checksums |
2f4490b6b22beb2627365843c5b5a9c43533b5ef9529e1ff4ba2d18e87f8a69f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency log