Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|

integer, | intent(in) | :: | nI(nel) |
|||

integer, | intent(out) | :: | elecs(2) |
|||

real(kind=dp), | intent(out) | :: | p_elec |

```
subroutine pick_spin_opp_elecs(nI, elecs, p_elec)
integer, intent(in) :: nI(nel)
integer, intent(out) :: elecs(2)
real(dp), intent(out) :: p_elec
! think of a routine to get the possible spin-opposite electron
! pairs. i think i could do that way more efficiently, but do it in
! the simple loop way for now
do
elecs(1) = 1 + int(genrand_real2_dsfmt() * nel)
do
elecs(2) = 1 + int(genrand_real2_dsfmt() * nel)
if (elecs(1) /= elecs(2)) exit
end do
if (get_ispn(nI(elecs)) == 2) exit
end do
! output in ordered form
elecs = [minval(elecs), maxval(elecs)]
! actually the probability is twice that or?
! or doesnt that matter, since it is the same
p_elec = 1.0_dp / real(nOccBeta * nOccAlpha, dp)
end subroutine pick_spin_opp_elecs
```

NECI was developed by Alavi Group

© 2023

Documentation generated by FORD