Release notes

[v2.16.0] - pending cut (post-v2.15.0 on main)

See the CHANGELOG for the fragment-by-fragment list after cog bump consumes docs/newsfragments/; this page consolidates user-facing and maintainer highlights from commits since v2.15.0, so the cut has one place to link from the GitHub Release and feedstock PR.

Potentials

In-process rgpot potential (NWChem / CPMD)

Potential type RGPOT (build with -Dwith_rgpot=true) runs rgpot’s NWChemPot / CPMDPot frontends inside eonclient and dlopens the libnwchemc / libcpmdc engine libraries — no sockets, no potserv. Configuration lives in the [RgpotPot] INI section and the matching Python RgpotPot schema model (backend, basis/theory/scf_type for NWChem, functional/cutoff_ry for CPMD, charge, multiplicity, engine paths, input_block). Engine-path environment overrides are backend-scoped (NWCHEMC_LIBRARY vs CPMDC_LIBRARY). Ships with a CPMD BLYP example (examples/rgpot_cpmd_blyp/), nwchemc + cpmdc smoke tests, a dedicated CI job, and user-guide pages (RgpotPot (direct in-process rgpot), rgpot integration (three roles)).

Metatomic output, determinism, and rotation controls

  • Explicit energy_output / energy_uncertainty_output keys for models with non-default output names (#215), non-conservative forces via non_conservative and variant_force / force_output (#296).

  • deterministic / deterministic_strict knobs for reproducible PyTorch evaluation.

  • Random SO(3) rotation per evaluation (random_rotation, #287) and approximate O(3) symmetrization by averaging over n_symmetry_rotations (#292).

  • Builds against metatomic-torch >=0.1.15 / metatensor-torch >=0.10 with sample_kind-based per-atom outputs.

Morse hot path

The Morse pair force loop inlines the potential, uses inverse-r scaling, and accumulates energy in a register (~60% of instruction count in Morse::force on NEB Morse workloads before the rework).

Molecular QM potentials and PBC

NWChem socket, ASE-ORCA, and ASE-NWChem auto-disable PBC on Matter attach and hard-fail if PBC is re-enabled (#188). ASE NWChem takes mpi_launcher (mpirun or srun) for Slurm-friendly execution (#193).

Saddle search and min-mode

  • Davidson minimum-mode solver (min_mode_method = davidson): Ritz subspace with finite-difference Hessian-vector products and residual correction, as an alternative to dimer rotation minimization and Lanczos.

  • Min-mode saddle search no longer reports STATUS_GOOD while the climb objective is unconverged (#20).

  • Saddle/process search synthesize a missing displacement.con from pos.con plus displace_magnitude times a unit direction.dat mode (#79).

I/O and Matter

  • ConFileIO targets readcon-core 0.13: IoStatus enum returns, bulk zero-copy builder maps, one-pass writeNebPath, and force+energy co-loading trusted without recomputation.

  • PbcConvention (Legacy vs MinimumImage) for position wrapping (#176); getForcesFree is const and setPositionsFree applies PBC wrapping (#171).

NEB and AKMC

  • NEB with initializer = file loads endpoints from the path frames and no longer requires separate reactant.con / product.con (#278).

  • MCAMC energy_level superbasin scheme tracks a true run-wide minimum energy (#212).

Maintainer notes

  • The subprojects/rgpot.wrap dependency is pinned to a released rgpot tag (previously floating head).

  • New CI workflow ci_rgpot.yml builds -Dwith_rgpot=true and runs the rgpot test suite against rgpot’s fake engines.