get_mbd_rpa_energy Interface

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 .


Module Procedures

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)