Get the MBD energy by the RPA method.
The energy is obtained from the eigenvalues of the symmetrized dipole matrix , with ,
The derivatives use , which upon summation over the eigenvalues gives the weighted resolvent , where is the per-eigenvalue energy contribution,
Both the explicit derivatives (coordinates, lattice vectors, van der Waals radii, ) and the implicit derivatives with respect to the dynamic polarizabilities are returned. The latter propagate both through the prefactor and, when the damping depends on it, through . With eigenvalue rescaling (mbd_calc_params_t) the contribution becomes , with for , and the same weighted resolvent is used.
The real-typed version is equivalent to .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(geom_t), | intent(inout) | :: | geom | |||
| real(kind=dp), | intent(in) | :: | alpha(:,0:) | |||
| type(damping_t), | intent(in) | :: | damp | |||
| type(grad_request_t), | intent(in), | optional | :: | grad |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(geom_t), | intent(inout) | :: | geom | |||
| real(kind=dp), | intent(in) | :: | alpha(:,0:) | |||
| type(damping_t), | intent(in) | :: | damp | |||
| real(kind=dp), | intent(in) | :: | q(3) | |||
| type(grad_request_t), | intent(in), | optional | :: | grad |