SETUPUMAT2D Subroutine

public subroutine SETUPUMAT2D(G1, HarInt)

Arguments

Type IntentOptional Attributes Name
type(BasisFN) :: G1(*)
complex(kind=dp) :: HarInt(nStates,nStates)

Contents

Source Code


Source Code

    SUBROUTINE SETUPUMAT2D(G1, HarInt)
        ! Set up UMat2D for storing the <ij|u|ij> and <ij|u|ji> integrals,
        ! and pre-calculate the common integrals (<ij|u|ij>, <ij|u|ji>,
        ! <i|v_har|j>) for CPMD calculations.
        ! In:
        !    G1: symmetry and momentum information on the basis functions.
        ! Out:
        !    HarInt(i,j)=<i|v_har|j>, where v_har is the Hartree potential.
        TYPE(BasisFN) G1(*)
        INTEGER ierr
        complex(dp) HarInt(nStates, nStates)
        character(len=*), parameter :: thisroutine = 'SETUPUMAT2D'
        IF ((NSLOTSINIT < 0)) THEN
            TUMAT2D = .FALSE.
            write(stdout, *) "Not using UMAT2D."
        ELSE
            TUMAT2D = .TRUE.
            allocate(UMat2D(nStates, nStates), STAT=ierr)
            UMat2D = 0.0_dp
            call LogMemAlloc('UMat2D', nStates**2, 8 * HElement_t_size, thisroutine, tagUMat2D, ierr)
            CALL CPMDANTISYMINTEL(G1, UMAT2D, HarInt, NSTATES)
        end if
    END SUBROUTINE SetupUMat2D