rgsaddle#

rgsaddle

Band and minimum-mode saddles over rgmin

One solver step on an assembled NEB or inverted-mode force. The host owns the loop.

No optimizer of its own eOn NEB branches Rust + C ABI

The inner seam is rgmin’s Solver: one optimizer step over a force this crate assembled. The outer seam is BandSession::step or MinModeSession::step. There is no run-to-completion contract. run is a loop over step.

Force assembly ports eOn’s NEB: Mills–Jónsson–Schenter and Henkelman–Jónsson tangents, uniform / energy-weighted / Onsager–Machlup springs, PEB / NEB / DNEB projections, climbing image with the eOn trigger. Positions are unwrapped Cartesian. A Cell supplies orthorhombic minimum-image differences.

Install#

$ cargo add rgsaddle
$ cargo add rgsaddle --features capi   # C header and cdylib

First minute#

The analytic double well in tests/double_well.rs: minima at \((\pm 1, 0, 0)\), saddle at the origin, barrier 1. Nine images, host loop, endpoints stay put.

let mut session = BandSession::new(BandConfig::default(), initial_band(9))?;
let mut report = session.step(&DoubleWell)?;
while report.status != BandStatus::Converged {
    report = session.step(&DoubleWell)?;
}