def test_latex_permute_format_2(): a = SecondQuantizedOperator("g0,v1,p3", "p0,a1,p2", 'spin-integrated') p_cre = [[Index('g0')], [Index('p3')], [Index('v1')]] p_ann = [[Index('p0'), Index('p2')], [Index('a1')]] n_perm, perm, latex_str = a.latex_permute_format(p_cre, p_ann) assert n_perm == 18 assert perm == '{\\cal P} ( g_{0} / p_{3} / v_{1} ) {\\cal P} ( p_{0} p_{2} / a_{1} )' assert latex_str == 'a^{ g_{0} v_{1} p_{3} }_{ p_{0} a_{1} p_{2} }'
def test_latex_permute_format_1(): a = SecondQuantizedOperator("g0,g1,g2", "p0,p1,p2", 'spin-orbital') p_cre = [[Index(i) for i in "g0,g1,g2".split(',')]] p_ann = [[Index(i) for i in "p0,p1,p2".split(',')]] n_perm, perm, latex_str = a.latex_permute_format(p_cre, p_ann) assert n_perm == 1 assert perm == '' assert latex_str == 'a^{ g_{0} g_{1} g_{2} }_{ p_{0} p_{1} p_{2} }'
def test_latex_permute_format_3(): # TODO: is this necessary? # ignore multiset permutations for mixed spin indices a = SecondQuantizedOperator("g0,v1,p2", "p0,a1,P2", 'spin-integrated') p_cre = [[Index('g0')], [Index('p2')], [Index('v1')]] p_ann = [[Index('p0'), Index('P2')], [Index('a1')]] n_perm, perm, latex_str = a.latex_permute_format(p_cre, p_ann) assert n_perm == 6 assert perm == '{\\cal P} ( g_{0} / p_{2} / v_{1} )' assert latex_str == 'a^{ g_{0} v_{1} p_{2} }_{ p_{0} a_{1} P_{2} }'