Supported Configurations

Honest status of what works, what is limited, and what is not ready for production use in the current release. Three tiers:

  • Green – tested and fully working.

  • Yellow – works in limited cases; convergence may be finicky.

  • Red – needs testing or has a known limitation.

The corresponding root-level reference is CAPABILITIES.md.

Headline feature: non-orthogonal contact handling

The big change in this release is proper treatment of non-orthogonal device-contact coupling in the NEGF Green’s function integrals. The derivation is in docs/superpowers/specs/2026-03-18-cross-term-corrections-derivation.md and represents work going back to March; it touches every contact implementation and both the density and DOS integrals.

The problem

When the device-contact overlap stau is non-zero, the contact self-energy

\[\Sigma(E) = (E \cdot \mathrm{stau} - \tau) \, g_\mathrm{surf}(E) \, (E \cdot \mathrm{stau} - \tau)^\dagger\]

carries terms linear and quadratic in \(E\). The previous code dropped the cross-terms generated when this expression is plugged into the device Green’s function integrals, silently treating non-orthogonal contacts as orthogonal.

What is correct now

crossTermQ and crossTermQTot methods on every surfG implementation return the energy-dependent cross-term correction. The density and DOS integrals (GrInt -> GrIntCross, densityComplex, damleLowerDensity) accept and propagate the correction through the contour. Result: correct charge / DOS / transmission on any non-orthogonal contact setup.

Supporting work shipped at the same time

  • Damle analytic lower contour – one eigendecomposition plus an analytic cross-term \(\delta N\) replaces the prior deep-tail densityComplex call. Roughly 30-450x faster than the adaptive contour; damle_dN_warn flags cases where the lower contour holds non-trivial weight.

  • 2-probe asymptotic Sigma fit – places the deep \(\Sigma_0\) probes relative to the integration window instead of hardcoded (-1e3, -1e4, -1e5).

  • eigh(X @ F @ X) correctness fixeigh(inv(S) @ F) was silently using the upper triangle of a non-Hermitian matrix and returning wrong eigenvalues whenever S was non-trivial. Replaced everywhere.

  • Production-readiness pass 1 – trimmed inaccurate and verbose docstrings and dead code across gauNEGF/.

Green: tested and fully working

Energy-independent NEGF

gauNEGF.scf.NEGF base class with gauNEGF.scf.NEGF.setSigma() – constant complex self-energy plus Pulay DIIS SCF. Base SCF I/O, voltage bias, all spin treatments (restricted, unrestricted, generalized).

Energy-dependent Bethe contacts

gauNEGF.scfE.NEGFE.setContactBethe() – full Bethe lattice with the new non-orthogonal cross-term correction.

Energy-dependent 1D contacts on minimal basis

gauNEGF.scfE.NEGFE.setContact1D() with contactFromFock=True – C2-STO3G and Au3-CRENBS converge end-to-end through the Damle lower contour, asymptotic Sigma fit, and cross-term path.

SOC for Bethe contacts

Slater-Koster spin-orbit terms are supported and tested.

Transport

gauNEGF.transport.calculate_transmission(), gauNEGF.transport.calculate_dos(), gauNEGF.transport.calculate_current(). DOS with cross-term Q correction. Transport checkpointing.

Atomic 3D Bethe contacts

gauNEGF.surfG3D.surfGAt3D – per-atom 3D builder is fully tested.

Numerical infrastructure

inv_sqrt_general, fractional_matrix_power, JIT-compiled integrals, adaptive complex contour, Fermi search (Muller / secant / poly / bisect / predict).

Yellow: works in limited cases

setContact1D with external alpha/beta matrices on minimal basis

Works, but convergence is finicky depending on system. Smaller test coverage than the contactFromFock=True path.

Red: needs testing or has known limitations

surfG3 (full 3D-periodic contact wrapper)

The math works independently – DOS makes sense, band diagrams plot correctly – but contact generation needs work and end-to-end testing. Do not assume converged transport results yet.

Non-minimal basis on 1D contacts

LANL2DZ-class (double-zeta, diffuse, ECP-with-valence) breaks the S-PSD precondition of the asymptotic Sigma framework. The corresponding integration tests are deliberately skipped with this reason. Fix is k-resolved overlap regularization at the surfG construction step (planned for the next release).

TODO for the next release

  • End-to-end validation of surfG3 (3D-periodic contact transport on a real device, comparison to reference).

  • K-resolved overlap regularization to lift the minimal-basis precondition on 1D contacts.

  • Deprecation pass on legacy transport.py functions and DOSFermiSearch.