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.