roundsym Subroutine

public pure subroutine roundsym(isym, nbasismax)

Arguments

Type IntentOptional Attributes Name
type(BasisFN), intent(inout) :: isym
integer, intent(in) :: nbasismax(5,*)

Contents

Source Code


Source Code

    pure subroutine roundsym(isym, nbasismax)
        type(basisfn), intent(inout) :: isym
        integer, intent(in) :: nbasismax(5, *)
        integer :: i
        if (t_new_hubbard .and. t_k_space_hubbard) then
            ! deal differently with the new k-space hubbard
            ! use the lattice intrinsic function
            ! also do something in the real-space case!!
            ! maybe there i have to set k to 0..
            isym = lat%round_sym(isym)
            return
        end if
        IF (NBASISMAX(3, 3) == -2) THEN
!   particle in a box
!   parity symmetries
            DO I = 1, 3
                ISYM%k(I) = MOD(ISYM%k(I), 2)
            end do
        else if (NBASISMAX(3, 3) == -1) THEN
!   UEG (can't remember the symmetries of that
!   probably momentum  conservation)
            if (tperiodicinmom) CALL MOMPBCSYM(ISYM%k, NBASISMAX)
        else if (NBASISMAX(3, 3) == 0) THEN
!   Hubbard model
            IF (NBASISMAX(1, 3) < 2) THEN
!   momentum conservation - various PBC issues

!ALEX PLEASE CHECK.

                CALL MOMPBCSYM(ISYM%k, NBASISMAX)
            else if (NBASISMAX(1, 3) >= 2) THEN
!   we're in real space so no sym
                DO I = 1, 3
                    ISYM%k(I) = 0
                end do
            end if
        else if (NBASISMAX(3, 3) == 1) THEN
!   Generic spatial symmetries
!           We need do nothing.
!   However, there is still momentum conservation - various PBC issues

!ALEX PLEASE CHECK.

            CALL MOMPBCSYM(ISYM%k, NBASISMAX)
        end if
        RETURN
    END SUBROUTINE ROUNDSYM