mod activation

module activation

History-conditioned escape feedback, after Goedecker’s minima hopping. Activation: climbing out of a basin along its softest direction.

Barkema and Mousseau, Phys. Rev. Lett. 77, 4358 (1996), and Malek and Mousseau, Phys. Rev. E 62, 7723 (2000).

A single displacement along the softest mode does not leave a basin. It is the right direction and the wrong distance: the mode points at the low saddle, but relaxing from a point still inside the basin returns to the minimum it came from. Measured on LJ38 with the escape controller driving a straight displacement, 576 quenches in 959 came back to the basin they left and 10 found anything new.

Goedecker’s answer is molecular dynamics, which carries kinetic energy over the saddle. The answer that needs only gradients is to climb: push along the mode, relax the components perpendicular to it so the structure stays on the valley floor, and repeat until the curvature along the mode turns negative. Negative curvature means the ridge is behind, and a quench from there falls into a different basin.

What this costs is honest and worth stating. Each climbing step is a curvature pass and a few perpendicular relaxation steps, so an activation is several hundred charged evaluations where a random displacement is one. It buys escapes that actually leave.

Relation to the rest of the crate

The perpendicular relaxation is the same projection crate::path uses to hold a band off its endpoints, and the mode comes from crate::curvature. The controller in crate::methods::minima_hopping sets how far to climb; this module decides when to stop.

Functions

fn activate<G>(x: ArrayView1<f64>, mut grad: G, cfg: &Activation, sign: f64) -> Option<ActivationOutcome>
where
    G: FnMut(ArrayView1<f64>) -> Option<Array1<f64>>

Climbs out of the basin containing x.

grad returns the gradient or None when the caller’s budget is spent, in which case the climb stops and reports what it has. sign picks which way along the mode to go; the two ends of a soft direction are different saddles.

Returns None only when the first curvature pass fails, since there is then no direction to climb along.

Structs and Unions

struct Activation

How the climb is run.

step: f64

Distance moved along the mode per climbing step.

max_steps: usize

Climbing steps before giving up.

A cap rather than a convergence criterion: some directions do not reach negative curvature at all, and a climb that has not turned over after this many steps is abandoned rather than run to exhaustion.

perp_steps: usize

Perpendicular relaxation steps between climbs.

perp_rate: f64

Step size of the perpendicular relaxation.

perp_max_move: f64

Largest displacement one perpendicular step may make.

A fixed rate is not safe on a potential whose gradient spans decades. On a Lennard-Jones cluster two points a little too close carry a gradient of order a thousand, and a rate of 0.02 against that moves the structure twenty units and destroys it: measured on LJ38, 6 relaxations in 1589 reached a minimum and the returned structure had a gradient of 1.0 where a minimum has 1e-6. The cap makes the step a direction with a bounded length rather than a length proportional to the gradient.

lanczos_steps: usize

Lanczos steps per curvature pass.

epsilon: f64

Finite-difference step for the curvature.

refresh: usize

Climbing steps between recomputing the mode.

Recomputing every step is the accurate choice and the expensive one. The mode rotates slowly along a valley floor, so reusing it for a few steps costs little accuracy and divides the curvature bill.

overshoot: f64

Extra push along the mode once the curvature has turned over, in units of step, before the quench.

Traits implemented

impl Default for Activation
struct ActivationOutcome

Where a climb ended.

state: Array1<f64>

The activated structure, to be quenched by the caller.

lambda: f64

Curvature along the mode at the end of the climb.

steps: usize

Climbing steps taken.

crossed: bool

Whether the curvature turned negative, so the ridge is behind.

evaluations: usize

Gradient evaluations spent, all of them charged by the caller.