e_charge_repulsion Function

public pure function e_charge_repulsion(xyz, q) result(enuc)

Uses

  • proc~~e_charge_repulsion~~UsesGraph proc~e_charge_repulsion e_charge_repulsion module~precision precision proc~e_charge_repulsion->module~precision iso_fortran_env iso_fortran_env module~precision->iso_fortran_env

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: xyz(:,:)
real(kind=dp), intent(in) :: q(:)

Return Value real(kind=dp)


Called by

proc~~e_charge_repulsion~~CalledByGraph proc~e_charge_repulsion e_charge_repulsion proc~scf_driver scf_driver proc~scf_driver->proc~e_charge_repulsion proc~hf_energy hf_energy proc~hf_energy->proc~scf_driver

Source Code

  pure function e_charge_repulsion(xyz, q) result(enuc)
    use precision, only: dp
    implicit none
    real(kind=dp) :: enuc
    real(kind=dp), intent(in) :: xyz(:,:), q(:)
    real(kind=dp), parameter :: disttol = 1.0d-10
    integer :: i, j, nat
    real(kind=dp) :: rr

    nat = min(ubound(q,1), ubound(xyz,2))
    enuc = 0.0d0
    do i = 2, nat
      do j = 1, i-1
        rr = sum((xyz(:,i)-xyz(:,j))**2)
        if (rr >= disttol) enuc = enuc + q(i)*q(j)/sqrt(rr)
      end do
    end do
  end function e_charge_repulsion