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.