Compute the gradient of vdw energy (using the buffered 7-14 potential ref: 10.1021/jp027815) with respect to the distance between the two atoms (Rij).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rp), | intent(in) | :: | Rij | |||
real(kind=rp), | intent(in) | :: | Rij0 | |||
real(kind=rp), | intent(in) | :: | Eij | |||
real(kind=rp), | intent(out) | :: | Rijgrad |
subroutine vdw_buffered_7_14_Rijgrad(Rij, Rij0, Eij, Rijgrad)
!! Compute the gradient of vdw energy (using the buffered 7-14
!! potential ref: 10.1021/jp027815) with respect to the distance
!! between the two atoms (Rij).
implicit none
real(rp), intent(in) :: Rij
real(rp), intent(in) :: Rij0
real(rp), intent(in) :: Eij
real(rp), intent(out) :: Rijgrad
real(rp) :: rho, rhom
real(rp), parameter :: delta = 0.07, gam = 0.12
integer(ip), parameter :: n = 14, m = 7
rho = Rij / Rij0
rhom = rho**m
Rijgrad = Eij * ((delta+1)/(delta+rho))**(n-m) * &
(rho*(gam+rhom)*(m-n)*(1-2*rhom-gam) - &
rhom*m*(delta+rho)*(gam+1)) / &
(rho*(delta+rho)*(gam+rhom)**2)
Rijgrad = Rijgrad / Rij0
end subroutine vdw_buffered_7_14_Rijgrad