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)
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)
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)
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)
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)
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)
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)
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)
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')