This directory is the long-form documentation for surfacehop_jax. The
top-level README.md is a quick advert; the JOSS paper
joss/paper.md is the publication. This guide is for
users who have cloned the repository and want to actually do
something — run a benchmark, build their own LVC model, fit a parameter
against an experimental observable, or understand why a particular FSSH
result looks the way it does.
| If you want to … | Read these in order |
|---|---|
| Understand what surface hopping is and why this package exists | 01 — Introduction → 03 — Theory |
| Just get a calculation running | 02 — Installation → 04 — Quickstart |
| Set up a real photochemistry model | 04 — Quickstart → 05 — Models → 07 — Wigner sampling |
| Use the decoherence correction | 08 — Decoherence |
Fit LVC parameters to an observable with jax.grad |
09 — Differentiable workflows and the notebook differentiable_dynamics.ipynb |
| Run large ensembles on a GPU | 10 — Performance |
| Look up a function | 06 — API reference |
| Diagnose a crash or a wrong-looking number | 11 — Troubleshooting |
jax.grad through trajectoriessurfacehop_jax.constants.HARTREE_TO_EV,
AU_OF_TIME_TO_FS, etc.(nel,) means an array indexed
by electronic state, (ndim,) by nuclear coordinate, (n_traj,) by
trajectory in an ensemble, and so on.$...$ and display $$...$$ math directly in markdown.notebooks/differentiable_dynamics.ipynb
is the canonical end-to-end demonstration of gradient-based parameter
fitting.examples/ reproduce the figures
in the JOSS paper.tests/ is also useful as
documentation — every public function has at least one short, readable
test that exercises it.