class rgpot::D3Pot

Overview

Grimme DFT-D3 dispersion via the s-dftd3 ISO C API (dftd3.h). More…

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

Detailed Documentation

Grimme DFT-D3 dispersion via the s-dftd3 ISO C API (dftd3.h).

In-process Potential summand: ForceInput in, energy+forces out. Do not fold this into XcKernel::contract or applyFxc. No PotentialConfig.d3 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 dftd3_error / dftd3_structure / dftd3_model / dftd3_param handles. First force builds the structure and model; later forces call dftd3_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.