Release notes¶
[v2.13.0] - 2026-XX-XX¶
See the CHANGELOG for the full fragment-by-fragment list; this page picks out the user-facing highlights.
Saddle search¶
ARTn via pARTn¶
Added ARTn as a saddle-search method through the artn-plugin Fortran
library, exposed in two complementary modalities:
Standalone (
method = artn): pARTn drives the full push + eigenmode + perpendicular-relaxation cycle starting from the minimum.displacement.conis ignored; an optional initial mode fromdirection.datbiases the push.Drop-in min-mode (
min_mode_method = artn): eOn’s displacement and epicenter logic seeds the initial structure and mode, then pARTn takes over from the displaced configuration.
Configurable through the [ARTn] INI section with push_step_size,
force_threshold, max_iterations, and the pARTn tuning knobs
ninit, nperp_limitation, lanczos_min_size, nsmooth, and
nnewchance. Integer knobs with a -1 default respect pARTn’s own
upstream default; explicit values are forwarded via set_param.
Requires -Dwith_artn=true at build time. The subproject tracks
mammasmias/artn-plugin directly.
See the ARTn user guide for details.
OCINEB hybrid (recommended)¶
OCINEB (Off-Path Climbing Image NEB) runs Min-Mode Following refinement
on the climbing image with Hessian eigenmode alignment, activated via
ci_mmf = true. For automated saddle-point refinement in production
workflows this is the recommended path. See Goswami, Gunde, Jónsson,
Enhanced Climbing Image Nudged Elastic Band Method with Hessian
Eigenmode Alignment, 2026,
arXiv:2601.12630
(Goswami et al. [NEB_GGJonsson26]).
NEB¶
Strategy-pattern decomposition¶
NudgedElasticBand is decomposed into modular components: tangent,
projection, spring force, OCINEB controller, spline extrema, initial
paths, and objective function. Each component is selectable via
config and covered by its own test suite.
Parallel image evaluation¶
NEB image forces now evaluate concurrently through std::thread (not
std::jthread – Apple Clang’s libc++ does not yet ship jthread).
Opt in via parallel = true in [Main] when the potential is
thread-safe or supports per-image instances. Achieves ~2.5x speedup
on a 5-image NEB with a Morse potential on the SVN reference setup.
Replaces the TBB-based std::execution::par prototype.
Initial paths¶
IDPP (Image Dependent Pair Potential) path initialization is
available via neb.initial_path.method = idpp. A collective IDPP
variant optimizes all movable atoms simultaneously. Optional
oversampling + cubic-spline decimation restores IDPP smoothness
after down-sampling.
Onsager-Machlup action paths¶
Minimum-action paths via the Onsager-Machlup action functional are
available with onsager_machlup = true. Spring stiffness can be
optimized automatically (om_optimize_k = true).
Dimer¶
Parallel improved dimer¶
The two dimer replicas in ImprovedDimer evaluate forces
concurrently through std::thread when the potential is
thread-safe or supports per-image instances. Opt in via
parallel = true.
Structure comparison¶
IRA (Iterative Rotations and Assignments)¶
IRACompare exposes match() (CShDA + SVD alignment),
matchPBC() (periodic boundary conditions; note this runs
cshda_pbc only, assignment without rotation/SVD), and
findSymmetry() (SOFI point-group detection). Requires
-Dwith_ira=true at build time.
Infrastructure¶
Highway SIMD subproject¶
Highway is added as an optional cmake wrap subproject. When
available, -DWITH_HIGHWAY is set so future potential kernels can
opt in. Hand-written SIMD kernels for Morse/LJ/EAM pair loops are
staged for a follow-up release; today the main benefit is
compile-time availability of the subproject for downstream
development.
Eigen Fortran layout helpers¶
New AtomMatrixF type alias in Eigen.h plus
from_fortran_layout_vector covers the zero-copy
RowMajor-(nat, 3)-to-ColumnMajor-(3, nat) interop that both
ARTn and IRA rely on.
Upstream artn-plugin¶
The artn-plugin meson subproject now tracks
mammasmias/artn-plugin directly. Downstream builds no longer need
to pin the HaoZeke personal fork. The pARTn get_error C wrapper
is used for richer diagnostic messages; older libartn builds that
predate the wrapper fall back to has_error via get_data.
Test infrastructure¶
tests/test_one_pt.pyfixtures gain ARTn and IRA coverage.Catch2 test binaries
test_artn,test_iraadded.JSON serialization for Parameters (
load_json,to_json) vianlohmann/json.
Build requirements¶
Fortran compiler and LAPACK for ARTn/IRA.
pARTn
>= c51217b4onmammasmias/artn-plugin:DEVEL(includes themeson dependency('openblas')CI fix; auto-cloned viasubprojects/artn-plugin.wrap).Rust
>= 1.88andcbindgenfor the existingreadcon-coresubproject (unchanged from v2.12.0).
Deprecations and breaking changes¶
None at the eOn public INI/Python surface. Internally,
MinModeSaddleSearch moves from a direct member of
SaddleSearchJob to a SaddleSearchMethod base-class pointer so
ARTn can share the polymorphism slot.