lMatIndSymBroken Function

public pure function lMatIndSymBroken(a, b, c, i, j, k) result(index)

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in), value :: a
integer(kind=int64), intent(in), value :: b
integer(kind=int64), intent(in), value :: c
integer(kind=int64), intent(in), value :: i
integer(kind=int64), intent(in), value :: j
integer(kind=int64), intent(in), value :: k

Return Value integer(kind=int64)


Contents

Source Code


Source Code

    pure function lMatIndSymBroken(a, b, c, i, j, k) result(index)
        ! broken-symmetry index function that operates on LMat without permutational
        ! symmetry between ai, bj, ck
        ! A 6-fold symmetry remains: swapping of a<->i, b<->j and c<->k
        ! Input: a,b,c - orbital indices of electrons
        !        i,j,k - orbital indices of holes
        ! Output: index - contiguous index I(a,b,c,i,j,k) with the aforementioned symmetry
        integer(int64), value, intent(in) :: a, b, c ! occupied orb indices
        integer(int64), value, intent(in) :: i, j, k ! unoccupied orb
        integer(int64) :: index

        integer(int64) :: ai, bj, ck

        ai = fuseIndex(a, i)
        bj = fuseIndex(b, j)
        ck = fuseIndex(c, k)

        index = ai + strideInner * bj + strideOuter * ck

    end function lMatIndSymBroken