Repository navigation
v3.4.0
eOn 3.4.0
A minor release on v3.3.1. See monorepo CHANGELOG.md section 3.4.0
for the full list.
AKMC on a cluster with CPMD
examples/akmc-cpmd-slurm explores a silicon vacancy with CPMD on four
MPI ranks per search. Each process search is one Slurm job: the client
runs as one process and its ext_pot wrapper starts cpmd.x under
mpirun. On a test node the wrapper's force matched a central finite
difference to 2e-5 eV/A, and the first search returned a process with a
0.029 eV barrier. The ExtPot guide explains how CPMD reports forces:
the table under GRADIENTS (-FORCES) holds forces, and GEOMETRY
carries them at full precision.
Fixes on this path:
- A dimer or process search on a per-image potential such as
ext_pot
evaluated both images on one instance at the same time, with
parallel = true(the default). Two external programs then shared one
exchange directory. Each image now keeps its own instance, and an
error in the second thread stops the job instead of calling
std::terminate. - The cluster communicator cancels only the jobs still queued when a
state reaches its confidence, keeps finished results for harvest, and
logs a failed cancel. It used to cancel every job and delete the
scratch directory, results included. - The MPI communicator no longer stops idle clients when a state reaches
its confidence. - The Slurm scripts take the account, partition and job shape from
EON_SBATCH_ARGSand the client fromEON_CLIENT, and list the
current user's jobs. - The local communicator kills each client's whole process group, so
wrappers and their MPI launchers do not outlive the server. - The MPI potential sends the working directory as
int, as the
MPI_INTit declares, and sleepsmpi_poll_periodseconds between
polls.
pyeonclient
- Linux wheels are
manylinux_2_28and vendor the Fortran and OpenMP
runtimes, so they install from PyPI and import on a minimal system.
The bundled rgpot keeps the private SONAMElibeon_rgpot.so.3, so a
piprgpotwheel imports beside pyeonclient in either order. - In-process jobs record termination, energy, force calls and job type
onjob_result.LocalInProcesstakes aStructureorConFrame
and returns saddle and product as frames. In-process jobs poll a
cancel token between jobs.
Nudged elastic band
- Zoom-NEB packs images onto a window around the climbing image and
keeps OCI-NEB available on that band. - The climbing image applies only when an interior image is above both
endpoints.
Structures and numerics
- Structure matching, rotational matching and space groups go through
readcon-ops.identicalkeeps a one-to-one atom map. - Finite-difference Hessians gain a fourth-order stencil and
cutoff-colored columns, which take fewer force calls on sparse
systems. - Per-atom force norms and periodic wrapping use Highway where it is
available. NaN forces no longer read as converged.
Build
- The direct in-process rgpot arm is linked on every non-Windows build;
-Dwith_rgpotis deprecated and ignored. eOn builds against
rgpot 3.3.0. Parameterskeeps its state behind a privateImpl.- The pixi environment carries
nlohmann_json, so a host copy cannot
pull/usr/includeinto a conda build.