예제 #1
0
def contract_sigma_plus_star(prop_up, prop_strange, spin_matrix, pol_matrix, diquarks=None):
    if diquarks is None:
        diquarks = [
            quark_contract_13(
                gpt.eval(prop_strange * spin_matrix), gpt.eval(spin_matrix * prop_up)
            ),
            quark_contract_13(
                gpt.eval(prop_up * spin_matrix), gpt.eval(spin_matrix * prop_strange)
            ),
            quark_contract_13(
                gpt.eval(prop_up * spin_matrix), gpt.eval(spin_matrix * prop_up)
            )
        ]
    return baryon_decuplet_base_contraction(prop_strange, prop_up, diquarks, pol_matrix)
예제 #2
0
def contract_delta_plus(prop_up, prop_down, spin_matrix, pol_matrix, diquarks=None):
    if diquarks is None:
        diquarks = [
            quark_contract_13(
                gpt.eval(prop_up * spin_matrix), gpt.eval(spin_matrix * prop_down)
            ),
            quark_contract_13(
                gpt.eval(prop_down * spin_matrix), gpt.eval(spin_matrix * prop_up)
            ),
            quark_contract_13(
                gpt.eval(prop_down * spin_matrix), gpt.eval(spin_matrix * prop_down)
            )
        ]
    return baryon_decuplet_base_contraction(prop_up, prop_down, diquarks, pol_matrix)
예제 #3
0
def contract_double_charmed_xi_plus_star(prop_down,
                                         prop_charm,
                                         spin_matrix,
                                         pol_matrix,
                                         diquarks=None):
    if diquarks is None:
        diquarks = [
            quark_contract_13(gpt.eval(prop_down * spin_matrix),
                              gpt.eval(spin_matrix * prop_charm)),
            quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                              gpt.eval(spin_matrix * prop_down)),
            quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                              gpt.eval(spin_matrix * prop_charm))
        ]
    return baryon_decuplet_base_contraction(prop_down, prop_charm, diquarks,
                                            pol_matrix)
예제 #4
0
def contract_charmed_omega_star(prop_strange,
                                prop_charm,
                                spin_matrix,
                                pol_matrix,
                                diquarks=None):
    if diquarks is None:
        diquarks = [
            quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                              gpt.eval(spin_matrix * prop_strange)),
            quark_contract_13(gpt.eval(prop_strange * spin_matrix),
                              gpt.eval(spin_matrix * prop_charm)),
            quark_contract_13(gpt.eval(prop_strange * spin_matrix),
                              gpt.eval(spin_matrix * prop_strange))
        ]
    return baryon_decuplet_base_contraction(prop_charm, prop_strange, diquarks,
                                            pol_matrix)
예제 #5
0
def chroma_sigma_star(prop_1, prop_2, prop_3, spm, polm, diquark):
    #diquark = quark_contract_13(gpt.eval(prop_1 * spm), gpt.eval(spm * prop_3))
    contraction = gpt.trace(gpt.eval(polm * prop_2 * gpt.spin_trace(diquark)))
    diquark2 = quark_contract_24(prop_2, gpt.eval(spm * prop_3 * spm))
    contraction += gpt.trace(gpt.eval(prop_1 * polm * diquark2))
    diquark2 @= quark_contract_13(prop_1, gpt.eval(spm * prop_3))
    contraction += gpt.trace(gpt.eval(polm * prop_2 * spm * diquark2))
    return gpt.eval(contraction)
예제 #6
0
def contract_charmed_omega(prop_strange,
                           prop_charm,
                           spin_matrix,
                           pol_matrix,
                           diquark=None):
    if diquark is None:
        diquark = quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                                    gpt.eval(spin_matrix * prop_strange))
    return baryon_octet_base_contraction(prop_strange, diquark, pol_matrix)
예제 #7
0
def contract_charmed_sigma_zero(prop_down,
                                prop_charm,
                                spin_matrix,
                                pol_matrix,
                                diquark=None):
    if diquark is None:
        diquark = quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                                    gpt.eval(spin_matrix * prop_down))
    return baryon_octet_base_contraction(prop_down, diquark, pol_matrix)
예제 #8
0
def contract_charmed_xi_prime_zero(prop_down,
                                   prop_strange,
                                   prop_charm,
                                   spin_matrix,
                                   pol_matrix,
                                   diquarks=None):
    if diquarks is None:
        diquarks = [
            quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                              gpt.eval(spin_matrix * prop_strange)),
            quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                              gpt.eval(spin_matrix * prop_down))
        ]
    return 0.5 * (gpt.eval(
        baryon_octet_base_contraction(prop_down, diquarks[0], pol_matrix)) +
                  gpt.eval(
                      baryon_octet_base_contraction(prop_strange, diquarks[1],
                                                    pol_matrix)))
예제 #9
0
def contract_double_charmed_xi_plus(prop_down,
                                    prop_charm,
                                    spin_matrix,
                                    pol_matrix,
                                    diquark=None):
    if diquark is None:
        diquark = quark_contract_13(gpt.eval(prop_down * spin_matrix),
                                    gpt.eval(spin_matrix * prop_charm))
    return baryon_octet_base_contraction(prop_charm, diquark, pol_matrix)
예제 #10
0
def contract_triple_charmed_omega(prop_charm,
                                  spin_matrix,
                                  pol_matrix,
                                  diquark=None):
    if diquark is None:
        diquark = quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                                    gpt.eval(spin_matrix * prop_charm))
    return baryon_decuplet_base_contraction(prop_charm, prop_charm,
                                            [diquark for _ in range(3)],
                                            pol_matrix)
예제 #11
0
def contract_charmed_xi_zero_star(prop_down,
                                  prop_strange,
                                  prop_charm,
                                  spin_matrix,
                                  pol_matrix,
                                  diquarks=None):
    if diquarks is None:
        diquarks = [
            quark_contract_13(gpt.eval(prop_down * spin_matrix),
                              gpt.eval(spin_matrix * prop_charm)),
            quark_contract_13(gpt.eval(prop_charm * spin_matrix),
                              gpt.eval(spin_matrix * prop_strange)),
            quark_contract_13(gpt.eval(prop_strange * spin_matrix),
                              gpt.eval(spin_matrix * prop_down))
        ]
    return gpt.eval(
        chroma_sigma_star(prop_down, prop_strange, prop_charm, spin_matrix,
                          pol_matrix, diquarks[0]) +
        chroma_sigma_star(prop_charm, prop_down, prop_strange, spin_matrix,
                          pol_matrix, diquarks[1]) +
        chroma_sigma_star(prop_strange, prop_charm, prop_down, spin_matrix,
                          pol_matrix, diquarks[2]))
예제 #12
0
def contract_lambda_to_sigma_zero(prop_up, prop_down, prop_strange, spin_matrix, pol_matrix, diquarks=None):
    if diquarks is None:
        diquarks = []
        prop_dict = {"up": prop_up, "down": prop_down, "strange": prop_strange}
        for diquark_flavors in [
            "up_down", "down_up",
            "strange_up", "strange_down"
        ]:
            flav1, flav2 = diquark_flavors.split("_")
            diquarks.append(quark_contract_13(
                gpt.eval(prop_dict[flav1] * spin_matrix), gpt.eval(spin_matrix * prop_dict[flav2])
            ))
    return (
        2 * baryon_octet_base_contraction(prop_strange, diquarks[0], pol_matrix) -
        2 * baryon_octet_base_contraction(prop_strange, diquarks[1], pol_matrix) +
        baryon_octet_base_contraction(prop_down, diquarks[2], pol_matrix) -
        baryon_octet_base_contraction(prop_up, diquarks[3], pol_matrix)
    ) / sqrt(12)
예제 #13
0
def contract_neutron(prop_up, prop_down, spin_matrix, pol_matrix, diquark=None):
    if diquark is None:
        diquark = quark_contract_13(
            gpt.eval(prop_up * spin_matrix), gpt.eval(spin_matrix * prop_down)
        )
    return baryon_octet_base_contraction(prop_down, diquark, pol_matrix)
예제 #14
0
def contract_lambda_naive(prop_up, prop_down, prop_strange, spin_matrix, pol_matrix, diquark=None):
    if diquark is None:
        diquark = quark_contract_13(
            gpt.eval(prop_up * spin_matrix), gpt.eval(spin_matrix * prop_down)
        )
    return gpt.trace(pol_matrix * gpt.color_trace(prop_strange * gpt.spin_trace(diquark)))
예제 #15
0
def contract_three_flavor_baryon(prop_1, prop_2, prop_3, pol_matrix, source_spin_matrix, sink_spin_matrix):
    di_quark = quark_contract_13(gpt.eval(prop_1 * source_spin_matrix), gpt.eval(sink_spin_matrix * prop_2))
    return gpt.trace(gpt.eval(pol_matrix * gpt.color_trace(prop_3 * gpt.spin_trace(di_quark))))
예제 #16
0
    # build solver using g5m and cg
    inv = g.algorithms.inverter
    pc = g.qcd.fermion.preconditioner
    cg = inv.cg({"eps": 1e-15, "maxiter": 1000})
    slv_eo2 = w.propagator(inv.preconditioned(pc.eo2_ne(), cg))

    # propagator
    dst = g.mspincolor(grid)
    dst @= slv_eo2 * src

    propagators = [dst, g.eval(g.gamma[5] * g.adj(dst) * g.gamma[5])]

    for l, prop in enumerate(propagators):
        contraction_routines = [
            qC.quark_contract_12(prop, prop),
            qC.quark_contract_13(prop, prop),
            qC.quark_contract_14(prop, prop),
            qC.quark_contract_23(prop, prop),
            qC.quark_contract_24(prop, prop),
            qC.quark_contract_34(prop, prop)
        ]

        for m, di_quark in enumerate(contraction_routines):
            correlator = g.slice(g.trace(di_quark * g.adj(di_quark)), 3)

            for t, c in enumerate(correlator):
                correlators[n, m, l, t] = c.real

# test gauge covariance
for k in range(len(contraction_routines)):
    for t in range(Nt):
예제 #17
0
def contract_sigma_plus(prop_up, prop_strange, spin_matrix, pol_matrix, diquark=None):
    if diquark is None:
        diquark = quark_contract_13(
            gpt.eval(prop_strange * spin_matrix), gpt.eval(spin_matrix * prop_up)
        )
    return baryon_octet_base_contraction(prop_up, diquark, pol_matrix)