Skip to content

v3.5.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 15:53
· 209 commits to main since this release
d9cc6c5

eOn 3.5.0

A minor release on v3.4.0. See monorepo CHANGELOG.md section 3.5.0
for the full list.

Tunnelling rates

job = instanton finds the ring-polymer instanton between two minima
for a tunnelling splitting. With mode = rate it finds the closed-ring
instanton through a saddle, for the thermal rate below the crossover
temperature (Richardson and Althorpe, doi:10.1063/1.3267318).

  • The rate search is an index-1 Newton step on the ring Hessian. Each
    solve, determinant and inertia count goes through a block LU of the
    open bead chain plus a low-rank Woodbury correction, at O(N f^3) with
    no dense ring matrix.
  • Without a band, the ring is seeded from a steepest-descent path out of
    the saddle by the period condition. A supplied band (initial_path)
    seeds it the same way and adds a one-dimensional WKB rate.
  • A ring that converges onto another saddle is refused. On the LJ13 test
    pair, cooling a cosine ring from the crossover slides onto a
    neighbouring saddle that leads to a different minimum.
  • An even ring runs on one half, from one turning point to the other. A
    half ring that has converged, or stopped stationary at the wrong index,
    is checked for an unstable mode odd under the mirror. That mode is two
    copies of the instanton on one ring, and the search finishes on the
    whole ring.
  • The rigid motions of the whole ring are rebuilt from the current beads
    at every step and kept out of the step and the classification.
  • Above the crossover, the parabolic-barrier factor multiplies quantum
    harmonic TST, so ln k is continuous at T_c.
  • temperatures takes a list and writes one row per temperature to
    rate_instanton.dat. instanton_centroid.con writes the centroid with
    the readcon spreads section, the per-atom spread of the beads.

On the LJ13 pair at 198 K, 0.6 of the 330 K crossover, with 16 beads the
search converges in 32 Newton iterations and 2369 force calls. The ring
has one negative mode, and ln(k s) = -2.49 against -24.82 from harmonic
TST.

Path-integral QTST and the ring-polymer rate

[Instanton] pi_planes samples a ring polymer with its centroid held on
parallel planes from behind the reactant to the saddle. The centroid
mean force integrates to a free-energy profile, which gives the
path-integral QTST rate (Voth, Chandler and Miller,
doi:10.1063/1.457242). pi_recrossing_parents adds the ring-polymer
recrossing factor. Parent rings on the top plane launch thermostat-free
RPMD children in momentum-reversed pairs, which give the
Bennett-Chandler plateau kappa, and k_RPMD = kappa k_QTST. On a two-dimensional curved
barrier the classical kappa is 0.779 +- 0.005, against 0.777 +- 0.003
from independent trajectories.

Path-integral dynamics

The dynamics job runs path-integral trajectories with a normal-mode PILE
or a GLE read from a matrix file, a separate centroid Langevin
thermostat, and economised ring-polymer springs. Bead forces are one
batch. The normal-mode transform is one matrix product, about eight
times faster per step at 32 beads. The economised spring fit iterates to
its least-squares minimum and raises an error when it does not converge.

Solid-state NEB

Solid-state NEB relaxes the lower-triangular cell of each interior image
together with the atoms, with the tangent and spring of
doi:10.1063/1.3684549. A calculator's Cauchy stress (xTB, the i-PI
virial, LAMMPS pressure) is read on the force call.

In-process CPMD

  • [RgpotPot] ranks_per_image splits the MPI world into cpmdc calculator
    groups, one CPMD session each, and a NEB spreads its images over the
    groups through forceBatch. The finite-difference Hessian spreads its
    columns the same way.
  • params_path loads a CPMDParams file, and input_block passes CPMD
    &SECTION text ahead of the generated sections. The Python server
    accepts the CPMD key spellings the client reads.
  • A failed engine call in one group raises on every rank, and the run
    aborts the MPI world instead of hanging.
  • The rgpot subproject pins 3.4.0, and the build requires readcon-core
    0.16.0.

Other changes

  • The Hessian job writes modes.con, one frame per normal mode, and
    accepts the trivial-mode count of the structure's symmetries.
  • neb.con frames carry the mass-weighted reaction coordinate and the
    band's one-dimensional tunnelling estimate.
  • aKMC with use_kdb = true stores processes through amsel.KdbStore
    and the run's readcon-db corpus. The tsase kdb path is removed.
  • with_mpi is a feature option and stays off unless enabled.
    -Dwith_parallel_neb has no effect; the NEB image pool uses
    std::thread.
  • The GP dimer builds when a checkout of the private gpr_optim
    repository sits in subprojects/gpr_optim. That repository is not
    part of eOn.