Skip to content

feat(neb): add band_precon and band_stepper for the rgsaddle band - #862

Merged
HaoZeke merged 4 commits into
TheochemUI:developfrom
HaoZeke:feat/neb-band-precon-stepper
Oct 31, 2026
Merged

HaoZeke merged 4 commits into
TheochemUI:developfrom
HaoZeke:feat/neb-band-precon-stepper

Conversation

@HaoZeke

@HaoZeke HaoZeke commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator

Three new [Nudged Elastic Band] keys select the rgsaddle 0.3.0 exponential metric and ODE12r stepper: band_precon, band_precon_mu and band_stepper. All of them default off. The eon-schema model and the JSON schema list them.

Meson defines WITH_RGSADDLE_BAND_PRECON when it finds rgsaddle 0.3.0 or newer. A build against 0.2.x compiles none of it and refuses both keys, so ODE12r never reaches a library that would run FIRE in its place.

The exp metric is refused where rgsaddle refuses it: with solid_state, one atom per image, energy_weighted or onsager_machlup. It is also refused when any image has a fixed atom, since the rgsaddle metric has no fixed-atom mask yet. The eOn optimizers refuse both keys.

Both keys are experimental. On examples/neb-al the exp metric raised the force calls of every converged case, and ODE12r stalled short of the default band force. The newsfragment says so.

This carries the commits of #860 and #861 until those merge.

@codecov

codecov Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.47368% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
client/NudgedElasticBand.cpp 50.00% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

The rgsaddle 0.3.0 band takes an exponential metric and an ODE12r
stepper. Three new [Nudged Elastic Band] keys select them from
config.ini and from the JSON parameters. All of them default off,
with precon none, mu 0 for the rgsaddle estimate and stepper auto.

The eon-schema model documents the keys and the setups that refuse
them. The published JSON schema gains the three entries.
Meson defines WITH_RGSADDLE_BAND_PRECON when it finds rgsaddle 0.3.0
or newer. Under it, band_precon = exp calls rgsaddle_band_set_exp_precon
on the new band, and band_stepper = ode12r selects
RGSADDLE_METHOD_ODE12R. A build against 0.2.x compiles none of it and
refuses both keys, so ODE12r never reaches a library that would run
FIRE in its place.

The exp metric is refused with solid_state, with one atom per image,
and with energy_weighted or onsager_machlup, as rgsaddle refuses
them. An eOn optimizer refuses both keys, since only the rgsaddle
band reads them.

The mu estimate sends one row near image 1. The band callback
evaluates it on a copy of image 1 and leaves the band unchanged. It
takes that row only batched, with image -1 and no flags, and returns
RGSADDLE_SHAPE otherwise. RGSADDLE_BAND_NO_MIN_MODE keeps every other
request band-shaped.
The rgsaddle 0.3.0 band metric has no fixed-atom mask. Its step moves
fixed atoms, and eOn pins them back after every step. On the fixed
examples/neb-al slab, LBFGS with the metric reached the iteration limit
without converging.

checkBandOptions now refuses exp when any image has a fixed atom, with
the same kind of message as the solid_state refusal. ODE12r without the
metric is still allowed with fixed atoms.
The band_precon newsfragment read as if exp and ODE12r were the
working 2019 band method. They are not yet. On examples/neb-al the exp
metric raised the force calls of every converged case, and ODE12r
stalled short of the default 1e-3 band force.

The fragment now says both keys are opt-in and experimental. It names
the rgsaddle fixed-atom mask and preconditioned spring as the missing
pieces, and lists the new fixed-atom refusal. It also says that eOn
refuses both keys when it was compiled without the rgsaddle 0.3.0
symbols, or when the loaded library is older than C ABI minor 22.
@HaoZeke
HaoZeke force-pushed the feat/neb-band-precon-stepper branch from a6cd6f3 to 4446a79 Compare October 31, 2026 17:29
@HaoZeke
HaoZeke merged commit 7afface into TheochemUI:develop Oct 31, 2026
41 of 42 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant