def P_irrep_o_l(shell, l, I, lblock=False): nnk_list = defns.shell_nnk_list(shell) Lk = GT.little_group(shell) d_I = GT.irrep_dim(I) P_shell = [] for k2 in nnk_list: R20 = GT.Rvec(k2, shell) P_k2 = [] for k1 in nnk_list: R01 = GT.Rvec(shell, k1) P_block = np.zeros((6, 6)) for R in Lk: RRR = GT.R_prod(R20, R, R01) if l == 0: P_block[0, 0] += GT.chi(RRR, I) elif l == 2: P_block[1:, 1:] += GT.chi(RRR, I) * GT.Dmat(RRR)[1:, 1:] P_block = defns.chop(P_block) P_k2.append(P_block) P_shell.append(P_k2) out = d_I / 48 * np.block(P_shell) if lblock == True: if l == 0: return l0_proj(out) elif l == 2: return l2_proj(out) else: return out
def A1_little_group_sum(shell): Lk = GT.little_group(shell) Usum = np.zeros((6, 6)) for R in Lk: Usum += GT.Dmat(R) Usum = defns.chop(Usum / len(Lk)) return Usum