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)
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)
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)
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)
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)
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)
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)
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)))
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)
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)
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]))
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)
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)
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)))
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))))
# 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):
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)