Build#

The wheel is built with scikit-build-core. CMake fetches Corrosion 0.6.1 and compiles the capi static library. A C++17 compiler, CMake, Ninja, and Rust are required.

python -m pip install 'rgmin[ase,test]' adds ASE and the test extras.

Options#

SolverConfig checks every keyword once. An unknown name raises ValueError and lists the names that are accepted. memory, maxiter, linesearch_maxiter, and extra_updates have to be Python integers. Other numeric options have to be finite.

A Cartesian solver starts with a per-atom cap of 0.2 (ASE maxstep, eOn max_move). maxstep or atom_maxmove replaces it. A non-positive value clears it. A positive maxmove is the Euclidean step limit and leaves the per-atom default off. The cap is the largest per-atom displacement, not the norm of the whole step.

ASE#

rgmin.ase.FIRE, LBFGS, CG, and the other method classes are ASE optimizers. Each step is one rgmin iteration. maxstep is the per-atom cap in angstroms. The ASE classes pass it explicitly, and their default is 0.2. ASE calculators are not thread-safe. Each thread that builds an optimizer needs its own calculator. rgmin still guarantees a shareable config, one solver per thread, and an owned copy of the coordinates. The thread-safety page records the details.

from ase.calculators.emt import EMT
from rgmin.ase import FIRE

atoms.calc = EMT()
FIRE(atoms, logfile=None).run(fmax=0.05)

Newton, RFO, and dogleg need hessian(x), a callable that returns the (n, n) matrix. A band or a min-mode run accepts the step rather than the energy. Pass accept= to choose the rule yourself.

restart is refused. read and dump raise NotImplementedError.