GAS_singles_PC_uniform_ExcGenerator_t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_singles_PC_uniform_ExcGenerator_t), | intent(inout) | :: | this | |||
integer, | intent(in) | :: | nI(nel) | |||
integer(kind=n_int), | intent(in) | :: | ilutI(0:NIfTot) | |||
integer, | intent(in) | :: | ex(2,maxExcit) | |||
integer, | intent(in) | :: | ic | |||
integer, | intent(in) | :: | ClassCount2(ScratchSize) | |||
integer, | intent(in) | :: | ClassCountUnocc2(ScratchSize) |
function GAS_singles_uniform_get_pgen(this, nI, ilutI, ex, ic, ClassCount2, ClassCountUnocc2) result(pgen)
class(GAS_singles_PC_uniform_ExcGenerator_t), intent(inout) :: this
integer, intent(in) :: nI(nel)
integer(n_int), intent(in) :: ilutI(0:NIfTot)
integer, intent(in) :: ex(2, maxExcit), ic
integer, intent(in) :: ClassCount2(ScratchSize), ClassCountUnocc2(ScratchSize)
real(dp) :: pgen
character(*), parameter :: this_routine = 'GAS_PC_get_pgen'
integer :: src
integer, allocatable :: unoccupied(:)
#ifdef WARNING_WORKAROUND_
associate(ilutI => ilutI); end associate
associate(ClassCount2 => ClassCount2); end associate
associate(ClassCountUnocc2 => ClassCountUnocc2); end associate
#endif
#ifdef DEBUG_
block
use util_mod, only: stop_all
use constants, only: stderr
if (.not. (ic == 1)) then
write(stderr, *) ""
write(stderr, *) "Assertion ic == 1"
write(stderr, *) "failed in /scratch/jenkins/jobs/existing_branch_doc/workspace/build_config/gfortran-doc/src/gasci_sin&
&gles_main.fpp:342"
call stop_all (this_routine, "Assert fail: ic == 1")
end if
end block
#endif
src = ex(1, 1)
unoccupied = this%get_possible_holes(nI, ilutI, src, use_lookup=.false.)
#ifdef DEBUG_
block
use util_mod, only: stop_all
use constants, only: stderr
if (.not. (size(unoccupied) > 0)) then
write(stderr, *) ""
write(stderr, *) "Assertion size(unoccupied) > 0"
write(stderr, *) "failed in /scratch/jenkins/jobs/existing_branch_doc/workspace/build_config/gfortran-doc/src/gasci_sin&
&gles_main.fpp:345"
call stop_all (this_routine, "Assert fail: size(unoccupied) > 0")
end if
end block
#endif
pgen = 1._dp / (nEl * size(unoccupied))
end function GAS_singles_uniform_get_pgen