QMOperators

The classes that implement quantum mechanical operators

QMPotential

class QMPotential

Operator defining a multiplicative potential.

Inherits the general features of a complex function from QMFunction and implements the multiplication of this function with an Orbital. The actual function representing the operator needs to be implemented in the derived classes, where the *re and *im FunctionTree pointers should be assigned in the setup() function and deallocated in the clear() function.

XCOperator

class XCOperator

DFT Exchange-Correlation operator containing a single XCPotential.

This class is a simple TensorOperator realization of

XCPotential

class XCPotential

Exchange-Correlation potential defined by a particular (spin) density.

The XC potential is computed by mapping of the density through a XC functional, provided by the XCFun library. There are two ways of defining the density:

1) Use getDensity() prior to setup() and build the density as you like. 2) Provide a default set of orbitals in the constructor that is used to compute the density on-the-fly in setup().

If a set of orbitals has NOT been given in the constructor, the density MUST be explicitly computed prior to setup(). The density will be computed on-the-fly in setup() ONLY if it is not already available. After setup() the operator will be fixed until clear(), which deletes both the density and the potential.

LDA and GGA functionals are supported as well as two different ways to compute the XC potentials: either with explicit derivatives or gamma-type derivatives.

ReactionPotential

class ReactionPotential : public mrchem::QMPotential

class containing the solvent-substrate interaction reaction potential obtained by solving

\[ \Delta V_{R} = -4\pi\left( \rho\frac{1-\epsilon}{\epsilon} + \gamma_s \right) \]
where \(\rho\) is the total molecular density of a solute molecule, \(\epsilon\) is the Permittivity function of the continuum and \(\gamma_s\) is the surface charge distribution.

Public Functions

ReactionPotential(std::unique_ptr<SCRF> scrf_p, std::shared_ptr<mrchem::OrbitalVector> Phi_p)

Initializes the ReactionPotential class.

Parameters:
  • scrf_p – A SCRF instance which contains the parameters needed to compute the ReactionPotential.

  • Phi_p – A pointer to a vector which contains the orbitals optimized in the SCF procedure.

inline void updateMOResidual(double const err_t)

Updates the helper.mo_residual member variable. This variable is used to set the convergence criterion in the dynamic convergence method.

Private Members

std::unique_ptr<SCRF> helper

A SCRF instance used to compute the ReactionPotential.

std::shared_ptr<mrchem::OrbitalVector> Phi

holds the Orbitals needed to compute the electronic density for the SCRF procedure.