Sella¶
Status: supported (uses AIMNet2's existing ASE calculator).
Sella is a saddle-point optimizer for ASE that targets transition states (order=1) and minima (order=0) with partitioned rational function optimization on internal coordinates. Sella consumes any ASE Calculator, so AIMNet2 works through the existing AIMNet2ASE class. The optional extra installs Sella ≥ 2.4.0 alongside ASE.
Install¶
pip install "aimnet[sella]"
sella>=2.4.0 is required. The 2.4.0 release (March 2026) introduced MLIP-targeted vectorization that made Sella usable for large systems (~22x wall-clock improvement on a 50-atom benchmark, PR #64). Older Sella versions do not accept the hessian_function= callback shown below and will raise TypeError.
Recommended configuration¶
import ase.io
from sella import Sella
from aimnet.calculators import AIMNet2ASE
atoms = ase.io.read("ts_guess.xyz")
atoms.calc = AIMNet2ASE("aimnet2")
dyn = Sella(
atoms,
order=1, # 1 = saddle, 0 = minimum
internal=True, # internal coordinates (recommended)
hessian_function=atoms.calc.get_hessian, # analytic Hessian callback
)
dyn.run(fmax=0.01)
Why pass hessian_function¶
By default Sella refines its Hessian via an iterative Davidson eigensolver that costs ~10–30 extra gradient calls per refinement (every nsteps_per_diag=3 steps in saddle mode). Wiring AIMNet2ASE.get_hessian into hessian_function= replaces each refresh with one analytic Hessian call (O(3N) backward passes per refresh through the AIMNet2 energy graph). This pattern was validated by Yuan et al. (Nature Comms 2024) for NewtonNet, where it cut TS optimization step counts by 2–3x.
The Hessian is computed in eV/Ų and shaped (3N, 3N) to match Sella's convention.
Limitations¶
- Gas-phase only. The
internal=Truepath assumes molecular topology; periodic TS searches are not supported byAIMNet2ASE.get_hessian. compile_model=Trueis incompatible with the Hessian path — Dynamo + double-backward through GELU hangs (AIMNet2CalculatorraisesRuntimeErrorif you combine them).- Multi-molecule batching is not available for the Hessian; each
Sellainstance must hold one structure.
Minima with Sella¶
For minima (not TS), the Rowan optimizer benchmark (September 2025) recommends Sella(order=0, internal=True) as a strong plug-and-play optimizer for AIMNet2 — often converging in fewer steps than LBFGS, and without requiring an analytic Hessian.
See also¶
- ASE calculator interface
- pysisyphus integration — alternative for IRC, NEB, growing-string
- Reaction paths and transition states
- Sella v2.4.0 release notes
- Sella JCTC 2022 paper