esum Subroutine

public subroutine esum(e, pmo, z, nocc, ivec)

Uses

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

@breif Add (E_a-E_i)*Z_ai to Pmo

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: e(:)
real(kind=dp), intent(inout) :: pmo(:,:)
real(kind=dp), intent(in) :: z(:,:)
integer, intent(in) :: nocc
integer, intent(in) :: ivec

Called by

proc~~esum~~CalledByGraph proc~esum esum proc~tdhf_energy tdhf_energy proc~tdhf_energy->proc~esum proc~tdhf_energy_c tdhf_energy_C proc~tdhf_energy_c->proc~tdhf_energy

Source Code

  subroutine esum(e,pmo,z,nocc,ivec)

    use precision, only: dp

    implicit none

    real(kind=dp), intent(in) :: e(:)
    real(kind=dp), intent(inout) :: pmo(:,:)
    real(kind=dp), intent(in) :: z(:,:)
    integer, intent(in) :: nocc, ivec

    integer :: i, ij, j, nbf

    nbf = ubound(e, 1)

    do j = nocc+1, nbf
      do i = 1, nocc
        ij = (j-nocc-1)*nocc + i
        pmo(ij,ivec) = pmo(ij,ivec) + (e(j)-e(i))*z(ij,ivec)
      end do
    end do
  end subroutine esum