gen_ueg_excit Subroutine

public subroutine gen_ueg_excit(nI, ilutI, nJ, ilutJ, exFlag, ic, ex, tPar, pgen, HelGen, store, part_type)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilutI(0:NIfTot)
integer, intent(out) :: nJ(nel)
integer(kind=n_int), intent(out) :: ilutJ(0:NIfTot)
integer, intent(in) :: exFlag
integer, intent(out) :: ic
integer, intent(out) :: ex(2,maxExcit)
logical, intent(out) :: tPar
real(kind=dp), intent(out) :: pgen
real(kind=dp), intent(out) :: HelGen
type(excit_gen_store_type), intent(inout), target :: store
integer, intent(in), optional :: part_type

Contents

Source Code


Source Code

    subroutine gen_ueg_excit(nI, ilutI, nJ, ilutJ, exFlag, ic, ex, tPar, &
                             pgen, HelGen, store, part_type)

        ! This is a new excitation generator, modelled on the lines of the
        ! 4ind-weighted excitation generator used for determinants
        !
        ! N.B. in the UEG, only double excitations exist, and given a
        !      a choice of electron A, the choice of electron B is
        !      already made.

        integer, intent(in) :: nI(nel), exFlag
        integer(n_int), intent(in) :: ilutI(0:NIfTot)
        integer, intent(out) :: nJ(nel), ic, ex(2, maxExcit)
        logical, intent(out) :: tPar
        real(dp), intent(out) :: pgen
        HElement_t(dp), intent(out) :: HelGen
        type(excit_gen_store_type), intent(inout), target :: store
        integer(n_int), intent(out) :: ilutJ(0:NIfTot)
        integer, intent(in), optional :: part_type

#ifdef WARNING_WORKAROUND_
        HelGen = h_cast(0.0_dp)
#endif
        unused_var(exFlag); unused_var(store); unused_var(part_type);
        ! W.D:
        ! split this functionality to allow back-spawning to reuse code
        call gen_double_ueg(nI, ilutI, nJ, ilutJ, tPar, ex, pgen)
        ic = 2
    end subroutine gen_ueg_excit