Repository navigation
feat(neb): add band_precon and band_stepper for the rgsaddle band - #862
Merged
HaoZeke merged 4 commits intoOct 31, 2026
Merged
Conversation
Codecov Report❌ Patch coverage is
📢 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
force-pushed
the
feat/neb-band-precon-stepper
branch
from
October 31, 2026 17:29
a6cd6f3 to
4446a79
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three new
[Nudged Elastic Band]keys select the rgsaddle 0.3.0 exponential metric and ODE12r stepper:band_precon,band_precon_muandband_stepper. All of them default off. The eon-schema model and the JSON schema list them.Meson defines
WITH_RGSADDLE_BAND_PRECONwhen 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_weightedoronsager_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-althe 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.