subroutine init_two_body_trancorr_fac_matrix()
integer :: i, j
type(symmetry) :: sym_i, sym_j
! for more efficiency, precompute the two-body factor for all possible
! symmetry symbols
if (allocated(two_body_transcorr_factor_matrix)) deallocate(two_body_transcorr_factor_matrix)
allocate(two_body_transcorr_factor_matrix(nBasis / 2, nBasis / 2), source=0.0_dp)
! loop over spatial orbitals
do i = 1, nBasis / 2
sym_i = G1(2 * i)%sym
do j = 1, nBasis / 2
sym_j = G1(2 * j)%Sym
two_body_transcorr_factor_matrix(sym_j%s, sym_i%s) = &
bhub / omega &
* ((exp(trans_corr_param_2body) - 1.0_dp) * epsilon_kvec(sym_i) &
+ (exp(-trans_corr_param_2body) - 1.0_dp) * epsilon_kvec(sym_j))
end do
end do
end subroutine init_two_body_trancorr_fac_matrix