function calc_pgen_k_space_hubbard_transcorr(nI, ilutI, ex, ic) result(pgen)
! this function i have to rewrite for the transcorrelated to take
! the same-spin doubles and triples into account!
! NOTE: ex could be of form (2,3) in the case of triples!
integer, intent(in) :: nI(nel), ex(:, :), ic
integer(n_int), intent(in) :: ilutI(0:niftot)
real(dp) :: pgen
pgen = 0.0_dp
if (ic == 2) then
if (same_spin(ex(1, 1), ex(1, 2))) then
! parallel double excitation
! the spins are checked within the function:
pgen = calc_pgen_k_space_hubbard_par(nI, ilutI, ex, ic)
pgen = pgen * pDoubles * pParallel
else
! "normal" opposite spin excitation
! the spins are checked within the function:
pgen = calc_pgen_k_space_hubbard(nI, ilutI, ex, ic)
pgen = pgen * pDoubles * (1.0_dp - pParallel)
end if
else if (ic == 3) then
pgen = calc_pgen_k_space_hubbard_triples(nI, ilutI, ex, ic)
pgen = pgen * (1.0_dp - pDoubles)
end if
end function calc_pgen_k_space_hubbard_transcorr