Closes both limitations that v0.4 stated plainly instead of hiding -- and what remains out is now deliberate scope with reasons, not an omission.
Continuum occupation channel (occupation_heat_capacities)
- The continuum (E > Delta) contribution to the occupation-channel heat capacity, computed as -T d2F/dT2 at frozen gap from the validated scattering-phase continuum free energy -- the Krein spectral-shift piece the bound-only sums neglect.
- Cross-validated, not asserted: the bound part of the same derivative reproduces the level-sum C_A of
andreev_sumsthrough a completely independent code path (< 1e-5 relative), and the continuum part is exactly zero at L = 0, where arg D vanishes identically (asserted as == 0.0). - For the recipe set at 0.3 Tc the continuum share is at the percent level -- previously a hope in a docstring, now a number in a test.
Dynamic phonon bath (two_temperature_click, total_energy)
- The coupled electron/local-phonon temperature dynamics: C_e = gamma T electrons cooling into phonons with finite heat capacity C_p = c_ph T^3 and a boundary escape law kappa_pb A (Tp^dpb - T0^dpb), plus the occupation equation, integrated by RK4 with substeps bounded by both the local timescale (accuracy) and the linearized stiff rates (stability -- a fixed step rings at the stiff quasi-equilibrium, and that failure mode was found and designed out, not papered over).
- No phonon parameter values are shipped: c_ph, kappa_pb, delta_pb are measurements of a real stack, and calls without all three raise with a pointer to where such values must come from.
- Anchors asserted in the tests: T0 is a bitwise-exact fixed point; the isolated (kappa_pb = 0) flow conserves gamma Te^2/2 + c_ph Tp^4/4 and equilibrates to the common temperature solving the quartic gamma T^2/2 + c_ph T^4/4 = U0, computed independently by root finding (< 1e-5); the infinite-bath limit reproduces
click_template; the exact peak-temperature deposit identity holds to 1e-12; relaxation back to the bath is monotone and complete.
Deliberate scope (designed out, with reasons -- see README)
- The continuum occupation noise (as opposed to its thermodynamic weight, now computed) needs the kinetics of continuum quasiparticles -- a correlation-time model with material parameters this package refuses to invent.
- The phonon subsystem is one lumped temperature, not a spectral distribution: a nonthermal phonon model has no cited parameters at these device scales.
56 tests, Python 3.9/3.11/3.12/3.13. Install: pip install absnoise.