write_kspace_umat Subroutine

public subroutine write_kspace_umat()

Arguments

None

Contents

Source Code


Source Code

    subroutine write_kspace_umat()
! subroutine to output the umat also in the case of the
! momentum space hubbard model, to be easier able to compare it
! with the DMRG calculations for the GUGA matrix elements!
        use SystemData, only: G1, nSpatOrbs, nBasisMax, uHub, omega
        use sym_mod, only: mompbcsym
        use UMatCache, only: gtid

        integer :: i, j, k, l, k_in(3), k_out(3)
        open(10, file="UMAT", status="unknown")
! do it really naively and just loop over all the indices and
! check if the momentum consercation is fullfilled!
! actually it is more efficient to loop over the spatial orbitals
! only! and check the momentum for the spin-orbs!
        do i = 1, nSpatOrbs
        do j = 1, nSpatOrbs
        do k = 1, nSpatOrbs
        do l = 1, nSpatOrbs
! have to figure out which orbitals to compare in
! the physicist notation!
! and convert to fake spin-orbtitals
            k_in = G1(2 * i)%k + G1(2 * k)%k
            k_out = G1(2 * j)%k + G1(2 * l)%k
! apply periodic BC
            call mompbcsym(k_in, nBasisMax)
            call mompbcsym(k_out, nBasisMax)
            if (all(k_in == k_out)) then
                write(10, '(4i7, f19.9)') i, j, k, l, uHub / Omega
            end if
        end do
        end do
        end do
        end do
        close(10)

    end subroutine write_kspace_umat