rpaechk Subroutine

public subroutine rpaechk(ee, nvec, ndsr, imax, tamm_dancoff)

Uses

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

@brief Remove negative eigenvalues

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout), dimension(:) :: ee
integer, intent(in) :: nvec
integer, intent(in) :: ndsr
integer, intent(inout) :: imax
logical, intent(in) :: tamm_dancoff

Called by

proc~~rpaechk~~CalledByGraph proc~rpaechk rpaechk proc~tdhf_energy tdhf_energy proc~tdhf_energy->proc~rpaechk proc~tdhf_mrsf_energy tdhf_mrsf_energy proc~tdhf_mrsf_energy->proc~rpaechk proc~tdhf_sf_energy tdhf_sf_energy proc~tdhf_sf_energy->proc~rpaechk proc~tdhf_energy_c tdhf_energy_C proc~tdhf_energy_c->proc~tdhf_energy proc~tdhf_mrsf_energy_c tdhf_mrsf_energy_C proc~tdhf_mrsf_energy_c->proc~tdhf_mrsf_energy proc~tdhf_sf_energy_c tdhf_sf_energy_C proc~tdhf_sf_energy_c->proc~tdhf_sf_energy

Source Code

  subroutine rpaechk(ee,nvec,ndsr,imax,tamm_dancoff)

    use precision, only: dp

    implicit none

    real(kind=dp), intent(inout), dimension(:) :: ee
    integer, intent(in) :: nvec, ndsr
    integer, intent(inout) :: imax
    logical, intent(in) :: tamm_dancoff

  ! Number of negative eigenvalues : imax
    imax = count(ee(1:nvec)<0.0_dp)

    if (.not.tamm_dancoff) ee(1:ndsr) = sqrt(abs(ee(1:ndsr)))
  end subroutine rpaechk