Example #1
0
def Fmat00(E,L,alpha):
  shells = shell_list(E,L)

  F_list = []
  for nnk in shells:
    F_list += [sums.F2KSS(E,L,nnk,0,0,0,0,alpha)] * len(shell_nnk_list(nnk))

  return np.diag(F_list)
Example #2
0
def Fmat00_A1(E, L, alpha):
    shells = shell_list(E, L)

    F_list = []
    for nnk in shells:
        # All k's in the same shell give the same F(k) (s-wave case only)
        F_list.append(sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha))

    return np.diag(F_list)
Example #3
0
def F2_22_matrix(e, L, m1, m2):

    alpha = 0.5
    nklist = list_nnk(e, L)

    F2_22 = []
    for nnk in nklist:
        #print(nnk)
        res = sums.F2KSS(e, L, nnk, 2, m1, 2, m2, alpha)
        F2_22.append(res)

    return np.diag(F2_22)
Example #4
0
def F2_20_matrix(e, L, m):

    nklist = list_nnk(e, L)

    alpha = 0.5

    F2_20 = []
    for nnk in nklist:
        res = sums.F2KSS(e, L, nnk, 2, m, 0, 0, alpha)
        F2_20.append(res)

    return np.diag(F2_20)
Example #5
0
def F2_02_matrix(e, L, m):

    nklist = list_nnk(e, L)

    alpha = 0.5

    F2_02 = []
    for nnk in nklist:
        # print(nnk)
        res = sums.F2KSS(e, L, nnk, 0, 0, 2, m, alpha)
        F2_02.append(res)

    return np.diag(F2_02)
Example #6
0
def Fmat00(E, L, alpha, IPV=0):
    shells = shell_list(E, L)

    F_list = []
    for nnk in shells:
        nk = sums.norm(nnk)
        k = nk * 2 * math.pi / L
        hhk = sums.hh(E, k)
        omk = sqrt(1. + k**2)
        F_list += [(sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha) + hhk * IPV /
                    (32 * math.pi * 2 * omk))] * len(shell_nnk_list(nnk))
#  print(F_list)
    return np.diag(F_list)
Example #7
0
def full_F2_00_matrix(e, L):

    alpha = 0.5

    nklist = list_nnk(e, L)

    F2_00 = []

    for nnk in nklist:

        res = sums.F2KSS(e, L, nnk, 0, 0, 0, 0, alpha)
        F2_00.append(res)

    return np.diag(F2_00)
Example #8
0
def H(E, L, npvec, lp, mp, nkvec, l, m, a0, r0, P0, a2, alpha):

    if nkvec == npvec:

        F2term = sums.F2KSS(E, L, nkvec, lp, mp, l, m, alpha)

        if l == lp and m == mp:
            kvec = [i * 2 * pi / L for i in nkvec]
            K2term = K2i_mat.K2inv(E, kvec, l, m, a0, r0, P0, a2)
        else:
            K2term = 0
    else:
        F2term = 0
        K2term = 0

    # may have (lp,mp) and (l,m) reversed in F2KSS
    return K2term + F2term + Gmatrix.G(E, L, npvec, nkvec, lp, mp, l, m)
Example #9
0
def Fmat_k(E, L, nnk, alpha):
    # k=(0,0,0)
    if nnk == [0, 0, 0]:
        a = sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha)
        b = sums.F2KSS(E, L, nnk, 2, -2, 2, -2, alpha)
        c = sums.F2KSS(E, L, nnk, 2, 0, 2, 0, alpha)
        return np.diag([a, b, b, c, b, c])

    # k=(0,0,a)
    elif nnk[0] == nnk[1] == 0:
        a = sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha)
        b = sums.F2KSS(E, L, nnk, 2, -2, 2, -2, alpha)
        c = sums.F2KSS(E, L, nnk, 2, -1, 2, -1, alpha)
        d = sums.F2KSS(E, L, nnk, 2, 0, 2, 0, alpha)
        e = sums.F2KSS(E, L, nnk, 2, 2, 2, 2, alpha)
        f = sums.F2KSS(E, L, nnk, 0, 0, 2, 0, alpha)

        out = np.diag([a, b, c, d, c, e])
        out[0][3] = f
        out[3][0] = f
        return out

    # k=(a,a,0)
    elif nnk[0] == nnk[1] != 0 and nnk[2] == 0:
        a = sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha)
        b = sums.F2KSS(E, L, nnk, 2, -2, 2, -2, alpha)
        c = sums.F2KSS(E, L, nnk, 2, -1, 2, -1, alpha)
        d = sums.F2KSS(E, L, nnk, 2, 0, 2, 0, alpha)
        e = sums.F2KSS(E, L, nnk, 2, 2, 2, 2, alpha)
        f = sums.F2KSS(E, L, nnk, 0, 0, 2, -2, alpha)
        g = sums.F2KSS(E, L, nnk, 0, 0, 2, 0, alpha)
        h = sums.F2KSS(E, L, nnk, 2, -2, 2, 0, alpha)
        i = sums.F2KSS(E, L, nnk, 2, -1, 2, 1, alpha)

        out = np.diag([a, b, c, d, c, e])
        out[0][1] = f
        out[1][0] = f
        out[0][3] = g
        out[3][0] = g
        out[1][3] = h
        out[3][1] = h
        out[2][4] = i
        out[4][2] = i
        return out

    # k=(a,a,a)
    elif nnk[0] == nnk[1] == nnk[2] != 0:
        a = sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha)
        b = sums.F2KSS(E, L, nnk, 2, -2, 2, -2, alpha)
        c = sums.F2KSS(E, L, nnk, 2, 0, 2, 0, alpha)
        d = sums.F2KSS(E, L, nnk, 0, 0, 2, -2, alpha)
        e = sums.F2KSS(E, L, nnk, 2, -2, 2, -1, alpha)
        f = sums.F2KSS(E, L, nnk, 2, -1, 2, 0, alpha)

        out = np.array([[a, d, d, 0, d, 0], [d, b, e, -2 * f, e, 0],
                        [d, e, b, f, e, -sqrt(3) * f], [0, -2 * f, f, c, f, 0],
                        [d, e, e, f, b, sqrt(3) * f],
                        [0, 0, -sqrt(3) * f, 0,
                         sqrt(3) * f, c]])
        return out

    # k=(a,b,0)
    elif myabs(nnk[0]) != myabs(
            nnk[1]) and nnk[2] == 0 and nnk[0] != 0 != nnk[1]:
        a = sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha)
        b = sums.F2KSS(E, L, nnk, 2, -2, 2, -2, alpha)
        c = sums.F2KSS(E, L, nnk, 2, -1, 2, -1, alpha)
        d = sums.F2KSS(E, L, nnk, 2, 0, 2, 0, alpha)
        e = sums.F2KSS(E, L, nnk, 2, 1, 2, 1, alpha)
        f = sums.F2KSS(E, L, nnk, 2, 2, 2, 2, alpha)
        g = sums.F2KSS(E, L, nnk, 0, 0, 2, -2, alpha)
        h = sums.F2KSS(E, L, nnk, 0, 0, 2, 0, alpha)
        i = sums.F2KSS(E, L, nnk, 0, 0, 2, 2, alpha)
        j = sums.F2KSS(E, L, nnk, 2, -2, 2, 0, alpha)
        k = sums.F2KSS(E, L, nnk, 2, -2, 2, 2, alpha)
        l = sums.F2KSS(E, L, nnk, 2, -1, 2, 1, alpha)
        m = sums.F2KSS(E, L, nnk, 2, 0, 2, 2, alpha)

        out = np.array([[a, g, 0, h, 0, i], [g, b, 0, j, 0, k],
                        [0, 0, c, 0, l, 0], [h, j, 0, d, 0, m],
                        [0, 0, l, 0, e, 0], [i, k, 0, m, 0, f]])
        return out

    # k=(a,a,b)
    elif nnk[0] == nnk[1] and myabs(nnk[0]) != myabs(
            nnk[2]) and nnk[0] != 0 != nnk[2]:
        a = sums.F2KSS(E, L, nnk, 0, 0, 0, 0, alpha)
        b = sums.F2KSS(E, L, nnk, 2, -2, 2, -2, alpha)
        c = sums.F2KSS(E, L, nnk, 2, -1, 2, -1, alpha)
        d = sums.F2KSS(E, L, nnk, 2, 0, 2, 0, alpha)
        e = sums.F2KSS(E, L, nnk, 2, 2, 2, 2, alpha)
        f = sums.F2KSS(E, L, nnk, 0, 0, 2, -2, alpha)
        g = sums.F2KSS(E, L, nnk, 0, 0, 2, -1, alpha)
        h = sums.F2KSS(E, L, nnk, 0, 0, 2, 0, alpha)
        i = sums.F2KSS(E, L, nnk, 2, -2, 2, -1, alpha)
        j = sums.F2KSS(E, L, nnk, 2, -2, 2, 0, alpha)
        k = sums.F2KSS(E, L, nnk, 2, -1, 2, 0, alpha)
        l = sums.F2KSS(E, L, nnk, 2, -1, 2, 1, alpha)
        m = sums.F2KSS(E, L, nnk, 2, -1, 2, 2, alpha)

        out = np.array([[a, f, g, h, g, 0], [f, b, i, j, i, 0],
                        [g, i, c, k, l, m], [h, j, k, d, k, 0],
                        [g, i, l, k, c, -m], [0, 0, m, 0, -m, e]])
        return out

    # k=(a,b,c)
    elif myabs(nnk[0]) != myabs(nnk[1]) != myabs(nnk[2]) != myabs(
            nnk[0]) and nnk[0] != 0 != nnk[1] and nnk[2] != 0:

        out = np.zeros((6, 6))
        for i1 in range(6):
            if i1 == 0:
                l1 = 0
                m1 = 0
            else:
                l1 = 2
                m1 = i1 - 3
            for i2 in range(i1, 6):
                if i2 == 0:
                    l2 = 0
                    m2 = 0
                else:
                    l2 = 2
                    m2 = i2 - 3
                out[i1][i2] = sums.F2KSS(E, L, nnk, l1, m1, l2, m2, alpha)
                if i1 != i2:
                    out[i2][i1] = out[i1][i2]

        return out

    else:
        print('Not a special nnk')