def F3i_I_eigs_list(E_list, L, F3_list, I, flip=False): out = [] for i in range(len(E_list)): E = E_list[i] F3 = F3_list[i] if flip == False: # project before inverting F3 F3_I = proj.irrep_proj(F3, E, L, I) # works for all shells if F3_I.shape == (): F3i_I = 1 / F3_I F3i_I_eigs = F3i_I else: F3_I_eigs = defns.chop( np.array(sorted(LA.eigvals(F3_I), key=abs, reverse=True)).real) #F3i_I = defns.chop(LA.inv(F3_I)) if F3_I_eigs[-1] == 0: print(E, F3_I_eigs) sys.exit() else: F3i_I_eigs = np.array([1 / x for x in F3_I_eigs]) elif flip == True: # invert F3 before projecting F3i = defns.chop(LA.inv(F3)) F3i_I = proj.irrep_proj(F3i, E, L, I) F3i_I_eigs = defns.chop(np.array(sorted(LA.eigvals(F3i_I))).real) out.append(F3i_I_eigs) return out
def K33Bmat(E, L, a0, a2): nnk_list = list_nnk(E, L) N = len(nnk_list) #print(nnk_list) #print(N) Gfull = [] for p in range(N): nnp = list(nnk_list[p]) Gp = [] for k in range(N): nnk = list(nnk_list[k]) Gpk = np.zeros((6, 6)) for i1 in range(6): [l1, m1] = Gmatrix.lm_idx(i1) for i2 in range(6): [l2, m2] = Gmatrix.lm_idx(i2) Gpk[i1, i2] = K33B.K3cubicB(E, 2 * math.pi / L * np.array(nnp), l1, m1, 2 * math.pi / L * np.array(nnk), l2, m2) Gp.append(Gpk) Gfull.append(Gp) matrix = np.ones_like(chop(np.block(Gfull))) print(matrix.shape) return pr.irrep_proj(matrix, E, L, "A1")
def F3i(e, L, a0, r, P, a2): K0 = 1000 * 5 K1 = 3 * 270 / 9 * 0 K2 = 40. / 81 * 0 A = 40 / 81 * 0 B = 400 * 0 Kdf = K3.K3mat(e, L, K0, K1, K2, A, B) f3mat = F3_mat.F3i_mat(e, L, a0, r, P, a2, 0.3) return pr.irrep_proj(f3mat + Kdf, e, L, "T2+")
def F3i(e, L, a0, a2): K0 = -1000 * 0 K1 = -100 * 0 K2 = -50 * 0 A = -470 * 0 B = 0. Kdf = K3.K3mat(e, L, K0, K1, K2, A, B) f3mat = F3_mat.F3i_mat(e, L, a0, 0., 0., a2, 0.3) return pr.irrep_proj(f3mat + Kdf, e, L, "E+")
def F3iK(e, L, a0, a2): r = 0. P = 0. K0 = 100 * 0 K1 = 10 * 0 K2 = 200. / 81 * -1 * 0 A = 200 / 81 * 0 B = 40 / 81 * -20000 * 0 Kdf = K3.K3mat(e, L, K0, K1, K2, A, B) f3mat = F3_mat.F3i_mat(e, L, a0, r, P, a2, 0.3) return pr.irrep_proj(f3mat + Kdf, e, L, "E+")
def F3_I_mat(E, L, a0, r0, P0, a2, alpha, I): return proj.irrep_proj(F3mat(E, L, a0, r0, P0, a2, alpha), E, L, I)
def F3i(e, L, a0, a2): f3mat = F3_mat.F3i_mat(e, L, a0, 0., 0., a2, 0.3) return pr.irrep_proj(f3mat, e, L, "A1")
def H2proj(e, L, a, a2): return pr.irrep_proj(H_mat.Hmat(e, L, a, 0., 0., a2, 0.5), e, L, "E+")
P0 = 0 E = 4.24216326 L = 5 I = 'E+' if a2 == 0: F3 = F3_mat.F3mat00(E, L, a0, r0, P0, a2, alpha) F3_I = proj.irrep_proj_00(F3, E, L, I) elif a0 == r0 == P0 == 0: F3 = F3_mat.F3mat22(E, L, a0, r0, P0, a2, alpha) F3_I = proj.irrep_proj_22(F3, E, L, I) else: F3 = F3_mat.F3mat(E, L, a0, r0, P0, a2, alpha) F3_I = proj.irrep_proj(F3, E, L, I) F3i_I = defns.chop(LA.inv(F3_I)) w_list, v_list = LA.eig(F3i_I) F3i = defns.chop(LA.inv(F3)) w0, v0 = AD.smallest_eig_evec( F3i) # Need to make evec_decomp() for 00 and 22 cases proj.evec_decomp(v0, E, L, I) s = 0 for I in GT.irrep_list(): s += proj.evec_decomp(v0, E, L, I) print('Total:', s)