Skip to content

Releases: TaN-MM-Org/kpenvelope

kpenvelope 0.6.0: Bir-Pikus strain, non-parabolic k-grid filling, spin splitting, finite-barrier self-consistency

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 05 Sep 15:53
704b91d

Completes the roadmap: every previously stated "not yet" item is implemented and anchored to an exact statement, and what remains out is documented as deliberate scope with reasons, not silently skipped.

Bir-Pikus strain (strain_blocks, strain= everywhere)

  • The six-band Bir-Pikus strain Hamiltonian in Chuang-Chang form: λ = D1εzz + D2(εxx+εyy), θ = D3εzz + D4(εxx+εyy), K = D5(εxx−εyy+2iεxy), Ht = D6(εxz+iεyz), entering exactly the positions of the kinetic template.
  • Cross-validated structurally, not by copied numbers: with D_i = c·A_i and ε = kkᵀ the strain matrix must reproduce H0 + H1·kz + H2·kz² entry for entry — asserted to 1e-14 at random k.
  • Closed-form anchors: diagonal strain gives eigenvalues λ+θ (×4) and λ (×2) exactly; pure shear εxz gives 0, ±√2|D6εxz| exactly; a diagonally strained decoupled well shifts rigidly by the exact edge shift to 1e-12.
  • No deformation-potential values are shipped: parameter sets without cited D1..D6 are refused with a pointer to Vurgaftman & Meyer, J. Appl. Phys. 94, 3675 (2003), rather than defaulted.

Non-parabolic subband filling (fill_subbands_kgrid)

  • T = 0 filling from the full in-plane dispersion on a polar k-grid, with bisection for E_F and exact charge neutrality; refuses a k-grid the Fermi disc reaches instead of silently dropping states.
  • Anchor: agrees with the closed-form parabolic filler on an exactly parabolic model (4e-3 at grid resolution, neutrality to 1e-12).

Finite-barrier self-consistency (solve_self_consistent_hetero)

  • The Poisson + k·p loop on the Ben Daniel-Duke heterostructure assembly — the hard-wall restriction lifted.
  • Anchor: on a uniform stack with zero offset it reproduces the hard-wall loop's energies and occupations exactly (bitwise — the assemblies are identical), asserted with == 0.0.

Spin splitting and transport groundwork (spin_splitting, splitting_vs_k, group_velocity, dos_from_dispersion)

  • Kramers pairs split by zero at k = 0 under any potential and at every k in symmetric wells (< 1e-9), and split under an asymmetric potential at finite k (Rashba-type) — both asserted, not stated.
  • Group velocity by second-order differences (exactly 2cAk on the parabolic set, 1e-10) and the exact 2D DOS relation ρ = k/(2π)|dk/dE| for monotone subbands ((1/|A|)/(4πc) closed form to 1%); non-monotone dispersions are refused, not interpolated.

Deliberate scope (designed out, with reasons — see README)

  • No scattering-mechanism lifetimes: every published lifetime model needs material parameters this package will not invent; the DOS/velocity groundwork is provided so you can attach your own cited model.
  • Single-medium Poisson; k-linear bulk-inversion-asymmetry terms not included (interface Rashba dominates in the intended geometries; stated, with the literature pointer).

42 tests, Python 3.9/3.11/3.12/3.13, no warnings. Install: pip install kpenvelope.

finite-barrier heterostructures (Ben Daniel-Duke)

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 03 Sep 21:13
694d6ed

New module heterostructure: the finite-barrier gate named in the README is closed.

  • assemble_heterostructure: material parameters and valence band edge become functions of z, discretized in the symmetrized Ben Daniel-Duke form (midpoint kz^2 coefficients, arithmetic-mean kz coupling), so the matrix is exactly Hermitian for arbitrary layer stacks and reduces exactly - to machine precision, asserted in the tests - to the uniform assembly when every point carries the same material.
    • layered_profile: per-point profiles from a (thickness, params, band_edge) layer stack, with tiling validation.
    • solve_heterostructure: subbands and envelopes with the package's usual conventions.
      Validation against closed forms: the decoupled single-band well reproduces the textbook finite-square-well transcendental levels with second-order grid convergence; the envelope decays in the barrier with the analytic decay constant to better than a percent; the deep-barrier limit approaches the hard-wall solver monotonically.

No default band offsets are shipped, on purpose: band alignments are material- and strain-specific and must be supplied with a citation, like every other number in this package. The self-consistent loop remains hard-wall for now; the README Status section states this scope plainly.

kpenvelope 0.4.0: subband character analysis

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 29 Aug 12:35
9c3b38d

This release adds band_character, dominant_character and character_vs_k: the heavy-hole, light-hole and crystal-field split-off composition of each envelope state, and its evolution along an in-plane path. Band mixing is the physics behind the one subband, many masses problem this package makes explicit: a state that is pure HH at the zone center picks up LH and CH weight as the in-plane momentum grows, and its local mass moves with that composition. The tests assert the exact zone-center block structure of the six-band Hamiltonian (at kt = 0 only LH and CH couple, through delta3, so every zone-center state has HH fraction exactly 1 or exactly 0), machine-precision normalization of the fractions, the small CH admixture of LH states that the delta3 coupling demands, and the onset of mixing at finite in-plane momentum. Basis convention follows Chuang and Chang, Phys. Rev. B 54, 2491 (1996).

v0.3.0: dispersion and mass utilities

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 20 Aug 09:00
52e66f7

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

v0.2.1: PyPI packaging release

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 20 Aug 06:38
8ccb7be

Packaging release: complete PyPI metadata, CONTRIBUTING.md, and a Trusted-Publishing workflow that tests, builds and publishes to PyPI on release. No changes to the physics code beyond the version number.

After this release: pip install kpenvelope

v0.2.0: cited GaN and AlN parameter sets

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 19 Aug 21:01
17d2380

Cited wurtzite valence parameter sets ship with full provenance, verified against closed forms in the test-suite.

  • gan_rinke2008(): the consistent GW-based GaN set of Rinke et al., Phys. Rev. B 77, 075202 (2008) (A1..A6, Delta_CR = 10 meV, Delta_SO = 17 meV), as tabulated in Extended Data Table 1 of Chang et al., Nature Electronics 9, 346 (2026). eps_r = 10.4 (E parallel c) from Barker and Ilegems, Phys. Rev. B 7, 743 (1973). The test-suite reproduces the closed-form zone-center splittings (5.20 and 21.80 meV, against accepted experimental values near 5-6 and 22 meV) and the quasi-cubic asymptotic in-plane masses (1.89 and 0.18 m0) from the assembled Hamiltonian.
  • aln_rinke2008(): the matching AlN barrier set (Delta_CR = -295 meV from Rinke et al.; Delta_SO = 22 meV from de Carvalho et al., Appl. Phys. Lett. 97, 232101 (2010)). Its permittivity is deliberately NaN and the self-consistent solver refuses to run on it: no vetted value is shipped and none is needed for a barrier.
  • One honest comparison is on record in the README: a hard-wall self-consistent run at 4.6e13 cm^-2 puts the gas centroid at 0.62 nm against 0.568 nm for the hard-wall row of the source paper's Table S1, the difference coming from the documented parabolic edge-mass filling. The warning stands: not for publication-grade numbers before the finite-barrier, dispersion-filled v0.3.
  • FUNDING.yml added (Patreon sponsor button). 10 tests total.

No API changes; v0.1 code continues to work unchanged.

v0.1.0

Choose a tag to compare

@Tanvir-Mahmud-Mahim Tanvir-Mahmud-Mahim released this 19 Aug 15:49
6baf4ae

Initial release. Six-band wurtzite k.p envelope-function solver with a self-consistent Poisson loop: exactly Hermitian discretization for position-dependent parameters, T=0 subband filling with numeric edge masses, and Gauss-law electrostatics for polarization-bound gases. Hard-wall boundaries only; a finite barrier is the v0.2 gate, and results are not yet validated against published subband structures, so do not use v0.1 numbers in publications. Ships no material constants by design; supply WurtziteParameters with cited provenance. Test suite (4 tests) runs on CI.