.. index:: pair: class; rgpot::D4Pot .. _doxid-classrgpot_1_1_d4_pot: class rgpot::D4Pot ================== .. toctree:: :hidden: Overview ~~~~~~~~ Grimme DFT-D4 dispersion via the dftd4 ISO C API (``dftd4.h``). :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class D4Pot: public rgpot::Potential< D4Pot > { public: // construction :target:`D4Pot`(); :target:`D4Pot`(const :ref:`D4Config`& config); :target:`D4Pot`(const D4Pot&); :target:`~D4Pot`(); // methods D4Pot& :target:`operator=`(const D4Pot&); void :target:`forceImpl`(const :ref:`ForceInput`& in, :ref:`ForceOut`* out) const; virtual :ref:`PotCaps` :ref:`caps`() const; const :ref:`D4Config`& :target:`config`() const; }; .. _details-classrgpot_1_1_d4_pot: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Grimme DFT-D4 dispersion via the dftd4 ISO C API (``dftd4.h``). In-process Potential summand: :ref:`ForceInput ` in, energy+forces out. Do not fold this into :ref:`XcKernel::contract ` or applyFxc. No PotentialConfig.d4 arm until a DFT host sums :ref:`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 ------- .. index:: pair: function; caps .. _doxid-classrgpot_1_1_d4_pot_1a58c8b564c9b666d938baa687dfcbaf13: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`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.