class rgpot::LJPot

Overview

Implementation of a shifted 12-6 Lennard-Jones potential. More…

#include <LJPot.hpp>
 
class LJPot: public rgpot::Potential< LJPot > {
public:
    // construction
 
    LJPot();
    LJPot(const LJConfig& c);
 
    // methods
 
    const LJConfig& config() const;
    virtual PotCaps caps() const;
    virtual uint64_t paramsKey() const;
    void forceImpl(const ForceInput& in, ForceOut* out) const;
};

Detailed Documentation

Implementation of a shifted 12-6 Lennard-Jones potential.

Pairwise interactions within the cutoff radius, minimum image convention with the full cell. Pairs come from the shared rgpot::nlist::PairListCache (the eOn PairListCache design): repeated evaluations on nearby geometries reuse a Verlet-skin cached candidate list, and one-shot evaluations run a single fused scan identical in pair content to the historical per-call double loop.

With LJConfig::switch_width set, each pair term is the unshifted 12-6 energy times the C^2 quintic switch of PairSwitch.hpp, so energy, force and curvature reach zero at the cutoff; otherwise the energy is shifted to zero there and the force jumps.

Methods

virtual PotCaps caps() const

Concurrency and evaluation capabilities of this potential.

Multi-threaded callers (NEB images, dimer endpoints) derive their sharing and cloning policy from this instead of hard-coded lists.

virtual uint64_t paramsKey() const

Fingerprint of the potential’s parameter set.

Mixed into the result-cache key so results never cross parameter sets. Implementations hash their config field by field (see ParamHash.hpp) plus a kernel-version salt that changes whenever the numerics change. The default (0) suits parameter-free potentials whose numerics never changed.

void forceImpl(const ForceInput& in, ForceOut* out) const

Computes the forces and energy for a given configuration.

Parameters:

in

Structure containing coordinates and cell info.

out

Pointer to the results structure.

Returns:

Void.