KPPax converts KPP chemistry mechanisms into differentiable JAX code
KPPax is a kinetic preprocessor that turns mechanisms written in the Kinetic PreProcessor (KPP) language into differentiable, just-in-time compiled, and vectorisable chemistry code in JAX. It evaluates rate laws with sparse operations in log space and integrates stiff systems using diffrax implicit solvers and forward- and reverse-mode adjoints, producing exact sensitivities without hand-derived adjoint code. On the POLLU benchmark, a Fisher information matrix from an automatically differentiated Jacobian predicted which of 25 rate coefficients a flow-tube-like design can identify, and noisy synthetic estimation matched the predicted uncertainties of the nine identifiable coefficients to within about 30%. A neural-network emission-inventory correction, trained offline on per-scenario 4D-Var retrievals and fine-tuned online through the chemical model, reduced biogenic correction error by a factor of 2.4–5 and recovered low-temperature emission information lost by the individual retrievals.
It gives atmospheric-chemistry researchers a concrete way to run KPP mechanisms inside differentiable JAX workflows for parameter estimation and hybrid physics–machine-learning models.
Comments & Questions (0)
No comments yet
Be the first to comment!