# Mol2Mat pulse simulation 1.0.0

The model predicts the dilute-limit response of S1, T1 and T2 populations after an instantaneous excitation. It uses published **computed**, rounded elementary rate constants for BNOO, BNSS and BNSeSe from [Shizu & Kaji, Nature Communications (2024)](https://www.nature.com/articles/s41467-024-49069-4), Table 1 and state-rate diagrams. The unmodified reference is not a fitted experimental trace.

## Experiment definition

For a column vector p = (S1, T1, T2), dp/dt = -A p. Diagonal entries of A are all exit rates from that state; off-diagonal A_ij = -k_j→i. Optical initial population is (1,0,0). The idealised electrical impulse assumes (0.25,0.75,0); it does not solve electrical injection. Each response is normalised to one initial excitation.

The return multiplier scales both T1→S1 and T2→S1 elementary rates. The non-radiative multiplier scales terminal non-radiative decay in all three states. Added loss acts on T1 and T2. All other rates remain fixed; these are hypothetical interventions, not predictions that any proposed molecular substitution can independently realise them.

I(t) = sum(k_r,i p_i(t)). The exact integrated residence is u = A^-1 p0. Total radiative yield is sum(k_r,i u_i); loss yields are calculated likewise. Mean residence sum(u_i) includes repeated visits to states and is not a single fitted decay lifetime. Cumulative photons at time t are total radiative yield minus the photons remaining in A^-1 p(t). Finite-window plots need not reach the complete-decay budget.

## Numerical method

The browser uses adaptive step-doubled backward Euler with a second-order Richardson estimate. Each implicit 3×3 solve uses positive-term Schur elimination, avoiding cancellation between very fast triplet exchange and slow terminal decay. Error control uses the conservative difference between the first-order estimates, relative tolerance 2e-5 and absolute tolerance 1e-12. Negative extrapolated populations or increasing total population trigger step rejection. Budgets are solved algebraically, independently of numerical quadrature of the plotted curve. There is no quasi-steady elimination of T2 in the time response.

An independent Python implementation uses **mpmath at 50 decimal digits**, direct matrix exponentials and LU solves. It does not reuse the browser integration or elimination code. Established SciPy matrix exponentials were considered; using a general Python/WASM runtime in every browser would add unnecessary weight to this bounded three-state calculation. High-precision reproduction provides an independent check without adding frontend dependencies.

## Validation, 26 September 2026

48 scenarios span three materials, both excitation modes, multiplier extremes (0.1–10), and added triplet losses up to 1e6/s. 576 time samples from those browser traces were independently checked, including time zero, fast dynamics and long tails.

Maximum discrepancies against the 50-digit oracle:

| Quantity | Maximum error |
|---|---:|
| State population, absolute per initial excitation | 3.01e-6 |
| Cumulative photons, absolute per initial excitation | 3.03e-6 |
| Emission, relative where above 1e-9 of initial emission | 0.0143% |
| Integrated budgets, absolute | 3.34e-16 |

Browser tests also check positivity, monotonic survival, monotonic cumulative emission, budget closure, agreement with the existing integrated model, refinement of tolerance, input validation, links, CSV shape and JSON restoration. These checks validate the implementation within the tested range, not experimental accuracy or usefulness to every visitor. Rates are only approximately reported in the source, so additional displayed digits support reproducibility, not physical precision.

## Reproduction

Download `reproduce.py` and `base-rates.json` into the same folder. Install the open-source `mpmath` Python package, then run:

```sh
python reproduce.py my-exported-scenario.json > independent-result.json
```

The base-rate file is pinned by SHA-256 `f90e9de8e138cdaab69ad2f2421291bef3b423712cfa3a6be43a847820be1ca6`. The JSON export contains settings, actual rates, complete traces, units, sources, model version, sensitivity results and the user's interpretation. Restoring a file recalculates from validated settings and the pinned rates; saved results are not trusted as calculation inputs. CSV uses SI units. SVG includes a visible series key and settings in its description; retain its JSON alongside it.

## Evidence and limits

The film-PLQY comparison uses [Hu et al. (2022), Table 1](https://www.nature.com/articles/s41566-022-01083-y/tables/1): 1 wt% emitter in DMIC-TRZ host film, inert atmosphere. It always compares the unmodified optical calculation, even if the active impulse is electrical. Molecular calculated rates and measured film emission need not agree; this is not a fit or an experimental time-response validation.

The pulse model omits bimolecular annihilation, diffusion, polarons, instrument response, optical extraction, charge balance and chemical degradation. It cannot predict device EQE, a new molecule's rates, or an OLED's operating lifetime. The separate density-loss workspace uses an illustrative two-state, steady-state model with its own equations and source conventions. Its dimensionless excitation load is not a luminance or current-density axis, and its parameters are not silently combined with these molecular rate presets.
