get_offdiag_helement_tJ Function

public function get_offdiag_helement_tJ(nI, ex, tpar) result(hel)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: ex(2)
logical, intent(in) :: tpar

Return Value real(kind=dp)


Contents


Source Code

    function get_offdiag_helement_tJ(nI, ex, tpar) result(hel)
        ! if we want to use a transcorrelated Hamiltonian in the tJ case
        ! it is different than in the hubbard model.. so write a one
        ! routine to calculate the one-body matrix element!
        integer, intent(in) :: nI(nel), ex(2)
        logical, intent(in) :: tpar
        HElement_t(dp) :: hel

        integer(n_int) :: ilut(0:niftot)

        ! the first part is exactly the same..
        hel = GetTMatEl(ex(1), ex(2))

        if (tpar) hel = -hel

        if (t_trans_corr) then
            call EncodeBitDet(nI, ilut)

            ! i am not yet sure about the order here.. to have it
            ! "hermitian"
            hel = hel * exp(trans_corr_param) * exp(trans_corr_param * &
                                                    (get_occ_neighbors(ilut, gtid(ex(1))) - get_occ_neighbors(ilut, gtid(ex(2)))))

        end if

        if (t_trans_corr_2body) then
            call EncodeBitDet(nI, ilut)
            hel = hel * exp(trans_corr_param_2body * ( &
                            get_spin_opp_neighbors(ilut, ex(1)) - get_spin_opp_neighbors(ilut, ex(2))))
        end if

    end function get_offdiag_helement_tJ