calc_pgen_triple_target_nosym Subroutine

public pure subroutine calc_pgen_triple_target_nosym(ms, pgen)

Calculates the probability of picking three orbitals with total spin ms without symmetry @param[in] ms total spin of the picked orbitals @param[inout] pgen on call, the probability of picking the electrons, on return, the total probability

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ms
real(kind=dp), intent(inout) :: pgen

Contents


Source Code

    pure subroutine calc_pgen_triple_target_nosym(ms, pgen)
        integer, intent(in) :: ms
        real(dp), intent(inout) :: pgen

        if (ms == -3) then
            pgen = pgen * same_spin_perm &
                   / (nUnoccBeta * (nUnoccBeta - 1) * (nUnoccBeta - 2))
        else if (ms == -1) then
            pgen = pgen * opp_spin_perm &
                   / (nUnoccBeta * (nUnoccBeta - 1) * nUnoccAlpha)
        else if (ms == 1) then
            pgen = pgen * opp_spin_perm &
                   / (nUnoccBeta * nUnoccAlpha * (nUnoccAlpha - 1))
        else
            pgen = pgen * same_spin_perm &
                   / (nUnoccAlpha * (nUnoccAlpha - 1) * (nUnoccAlpha - 2))
        end if
    end subroutine calc_pgen_triple_target_nosym