mbd_rpa Module



Interfaces

public interface get_mbd_rpa_energy

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 .

  • private function get_mbd_rpa_energy_real(geom, alpha, damp, grad) result(res)

    Arguments

    Type IntentOptional 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

    Return Value type(result_t)

  • private function get_mbd_rpa_energy_complex(geom, alpha, damp, q, grad) result(res)

    Arguments

    Type IntentOptional 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

    Return Value type(result_t)