Exemple #1
0
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
Exemple #2
0
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