class rgpot::D4Pot

Overview

Grimme DFT-D4 dispersion via the dftd4 ISO C API (dftd4.h). More…

#include <D4Pot.hpp>
 
class D4Pot: public rgpot::Potential< D4Pot > {
public:
    // construction
 
    D4Pot();
    D4Pot(const D4Config& config);
    D4Pot(const D4Pot&);
    ~D4Pot();
 
    // methods
 
    D4Pot& operator=(const D4Pot&);
    void forceImpl(const ForceInput& in, ForceOut* out) const;
    virtual PotCaps caps() const;
    const D4Config& config() const;
};

Detailed Documentation

Grimme DFT-D4 dispersion via the dftd4 ISO C API (dftd4.h).

In-process Potential summand: ForceInput in, energy+forces out. Do not fold this into XcKernel::contract or applyFxc. No PotentialConfig.d4 arm until a DFT host sums XcKernel + VV10 + D4 on the wire (rgpot-8mse; rgpot-uw9w / rgpot-eipa add this as Edisp from rgpot-2ftk).

Each instance owns dftd4_error / dftd4_structure / dftd4_model / dftd4_param handles. First force builds the structure and model; later forces call dftd4_update_structure. Do not share one instance across threads.

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.