init_two_body_trancorr_fac_matrix Subroutine

public subroutine init_two_body_trancorr_fac_matrix()

Arguments

None

Contents


Source Code

    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