SurfaceHopping

surfacehop_jax — User Guide

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.

Where to start

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

Table of contents

  1. Introduction — what surface hopping is and why this package exists
  2. Installation and testing
  3. Theory — the FSSH algorithm in detail
  4. Quickstart — three working examples
  5. Models — built-in and custom Hamiltonians
  6. API reference
  7. Wigner sampling of initial conditions
  8. Decoherence corrections
  9. Differentiable workflows — jax.grad through trajectories
  10. Performance — JIT, vmap, GPU
  11. Troubleshooting

Conventions used in this guide

Other resources