v0.3.0: dispersion and mass utilities
Adds dispersion and effective-mass utilities, because a hole mass is not one number: subband_dispersion solves the envelope problem along an in-plane path at any angle and around any self-consistent potential, and local_mass converts any dispersion, subband or bulk, into the local finite-difference effective mass along the path.
Asserted in the test suite, not claimed: the path solver at a single k point equals solve_subbands exactly; the decoupled demo set returns exactly 1/|A| m0 at every momentum and well level (1e-10); applied to the bulk Rinke 2008 GaN bands, the utility reproduces the quasi-cubic asymptotic masses m0/|A2+A4-A5| = 1.89 m0 and m0/|A2+A4+A5| = 0.180 m0 at large k_t (with the asymptote's own residual stated as the tolerance, not machine precision); and a locally flat branch reports an infinite mass rather than raising, because a diverging mass is physics. 15 tests total.
Install: pip install kpenvelope