# Light and heat: three bounded ledgers

Run `python generate.py` with numpy and matplotlib. All surface and collector parameters are hypothetical, not measured device performance. Three CSVs and two original figures (PNG/SVG/PDF) are regenerated.

**Photon ledger:** 371 wavelengths from 380 to 750 nm. Exact SI constants determine frequency, energy per photon and photon rate at fixed 1 W monochromatic optical power. Photon energy times rate always equals 1 W. Neither wavelength nor photon count establishes brightness, absorption, electrical efficiency or cutting capability.

**Surface radiance:** 684 rows, wavelengths 3–20 micrometres in 0.1 micrometre steps, emissivities 0, 0.2, 0.8 and 1. Surface temperature is 330 K; black isotropic surroundings are 293 K. Opaque diffuse gray surfaces emit epsilon times Planck radiance and reflect (1−epsilon) times background radiance. Radiance units are W per square metre per steradian per micrometre. These are not hemispheric power units or an actual thermal camera response. At equal surface/background temperatures, emitted plus reflected radiance is independent of emissivity. Absorption/emission spectral averages for sunlight and infrared need not match.

**Solar ledger:** 765 rows, projected aperture 1/2/4 square metres and prescribed receiver temperatures 293–801 K in 2 K steps. Assigned direct irradiance is 800 W/m², optical throughput 0.7 and solar absorptivity 0.9. The separate receiver area is 0.2 m², infrared emissivity 0.8 and convection coefficient 5 W/(m² K), with surroundings at 293 K. Absorbed input minus radiation and convection is a signed residual. A negative balance means additional external heating would be required to maintain the prescribed temperature with no useful extraction. It is never silently clipped. This is neither a temperature equilibrium calculation nor a plant-output model. No land-area inference, cycle efficiency, annual yield or actual receiver material is represented.

Checks use photon energy-frequency and energy-rate identities, all-row solar conservation, zero temperature-contrast losses, equal-temperature graybody identity, Wien peak location, and an independent numerical integration of Planck radiance. Integrating over 0.01–10,000 micrometres and multiplying by pi agrees with the Stefan–Boltzmann hemispheric exitance at 330 K to relative error 8.48e-9. The pi factor assumes diffuse blackbody emission. The blackbody wavelength peak is 8.7811 micrometres at 330 K. A separate 800 K, 1 m² solar example yields −3652.27 W residual, testing deficit handling.

The scientific sources in study.json provide metrology and engineering context. No measured performance number from them is transplanted into the models. Exact SI constants and dimensional equations are explicit in the generator. Line plots are calculations, not measurements or fitted data, and carry no statistical confidence bands.
