--- myst: html_meta: "description": "Consolidated release notes for eOn v2.16.0: in-process rgpot potential (NWChem/CPMD), Davidson min-mode solver, readcon 0.13 ConFileIO, Metatomic controls, PbcConvention." "keywords": "eOn release notes, v2.16.0, rgpot, RgpotPot, Davidson, readcon, Metatomic" --- # Release notes ## [v2.16.0] - pending cut (post-v2.15.0 on `main`) See the [CHANGELOG](project:../changelog.md) 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](https://github.com/OmniPotentRPC/rgpot)'s `NWChemPot` / `CPMDPot` frontends inside `eonclient` and `dlopen`s 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 ({doc}`/user_guide/rgpot_pot`, {doc}`/user_guide/rgpot_integration`). #### 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.