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_potevaluated both images on one instance at the same time, withparallel = 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 callingstd::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 theMPI_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 on
job_result.LocalInProcesstakes aStructureorConFrameand 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.