32#ifndef SRC_MADNESS_CHEM_DISPERSION_H_
33#define SRC_MADNESS_CHEM_DISPERSION_H_
77 const std::string& functional,
const bool atm);
interface class to simple-dftd3, Grimme's D3 empirical dispersion correction
Definition dispersion.h:62
void reject(const char *engine) const
same, for an already-constructed correction
Definition dispersion.h:124
void evaluate(const std::vector< int > &numbers, const Tensor< double > &coords, double &e, Tensor< double > &g) const
Definition dispersion.cc:232
static void reject(const std::string &spec, const char *engine)
throw if spec asks for a correction, naming the engine that cannot apply it
Definition dispersion.cc:194
double cached_energy
Definition dispersion.h:160
Damping
Definition dispersion.h:134
@ rational
Definition dispersion.h:134
@ zero
Definition dispersion.h:134
@ none
Definition dispersion.h:134
Tensor< double > gradient(World &world, const Molecule &mol) const
d E_disp / d R in Hartree/bohr, length 3*natom, laid out [3*atom + axis]
Definition dispersion.cc:364
static std::vector< int > atomic_numbers(const Molecule &mol)
the atomic numbers, ordered to match Molecule::get_all_coords()
Definition dispersion.cc:268
DispersionCorrection()=default
default ctor – inactive, energy() is 0.0 and gradient() is all zeros
std::string description() const
short human-readable tag, e.g. "D3(BJ)/pbe0" – "none" if inactive
Definition dispersion.cc:205
Tensor< double > cached_gradient
Definition dispersion.h:159
bool atm
include the three-body ATM term
Definition dispersion.h:142
static std::string library_version()
linked simple-dftd3 version as "major.minor.patch", or "" if unavailable
Definition dispersion.cc:128
bool cache_valid
Definition dispersion.h:161
Damping damping
Definition dispersion.h:136
bool active() const
true if a correction is actually being applied
Definition dispersion.h:80
void print_citation(World &world) const
print the method and its primary references; a no-op if inactive
Definition dispersion.cc:213
Tensor< double > cached_coords
Definition dispersion.h:158
std::string method
the method name handed to simple-dftd3's parameter tables
Definition dispersion.h:139
static bool available()
true if this build can compute a correction at all
Definition dispersion.cc:119
bool citation_printed
Definition dispersion.h:162
Tensor< double > hessian(World &world, const Molecule &mol) const
d^2 E_disp / dR_i dR_j in Hartree/bohr^2, (3*natom, 3*natom)
Definition dispersion.cc:302
void compute(World &world, const Molecule &mol) const
evaluate on rank 0 and broadcast; fills the cache below
Definition dispersion.cc:276
Definition molecule.h:129
A tensor is a multidimensional array.
Definition tensor.h:318
A parallel world class.
Definition world.h:134
double(* energy)()
Definition derivatives.cc:58
Namespace for all elements and tools of MADNESS.
Definition DFParameters.h:10
NDIM const Function< R, NDIM > & g
Definition mra.h:2622
static XNonlinearSolver< std::vector< Function< T, NDIM > >, T, vector_function_allocator< T, NDIM > > nonlinear_vector_solver(World &world, const long nvec)
Definition nonlinsol.h:371
Defines and implements most of Tensor.
void e()
Definition test_sig.cc:75
Declares the World class for the parallel runtime environment.