sfesum Subroutine

public subroutine sfesum(eiga, eigb, pmo, z, noca, nocb, ivec)

Uses

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: eiga(:)
real(kind=dp), intent(in) :: eigb(:)
real(kind=dp), intent(inout) :: pmo(:,:)
real(kind=dp), intent(in) :: z(:,:)
integer, intent(in) :: noca
integer, intent(in) :: nocb
integer, intent(in) :: ivec

Called by

proc~~sfesum~~CalledByGraph proc~sfesum sfesum proc~tdhf_sf_energy tdhf_sf_energy proc~tdhf_sf_energy->proc~sfesum proc~tdhf_sf_energy_c tdhf_sf_energy_C proc~tdhf_sf_energy_c->proc~tdhf_sf_energy

Source Code

  subroutine sfesum(eiga,eigb,pmo,z,noca,nocb,ivec)
    use precision, only: dp

    implicit none

    real(kind=dp), intent(in) :: eiga(:), eigb(:)
    real(kind=dp), intent(inout) :: pmo(:,:)
    real(kind=dp), intent(in) :: z(:,:)
    integer, intent(in) :: noca, nocb, ivec

    integer :: i, ij, j, nbf

    nbf = ubound(eiga, 1)

!   ----- add (ea-ei)*zai -----
    ij = 0
    do j=nocb+1,nbf
      do i=1,noca
        ij = ij+1
        pmo(ij,ivec) = pmo(ij,ivec)+(eigb(j)-eiga(i))*z(ij,ivec)
      end do
    end do
  end subroutine sfesum