void accum_nl_meson_prop(int i,int dir, field_offset destq, field_offset desto) /* Apply symmetric shift to "q" and "o" propagators */ /* for all source wall colors */ /* at site i in direction dir */ /* destq <- D_dir q; desto <- D_dir o */ { su3_matrix *af, *ab; register su3_matrix *dstq, *dsto; /* gen_pt points to the "q" propagator */ /* destq <- D_dir q */ af = (su3_matrix *)gen_pt[dir][i]; ab = (su3_matrix *)gen_pt[dir+4][i]; dstq = (su3_matrix *)F_PT(&lattice[i],destq); su3mat_copy( af, dstq ); add_su3_matrix( ab, dstq, dstq); /* gen_pt2 points to the "o" propagator */ /* desto <- D_dir o */ af = (su3_matrix *)gen_pt2[dir][i]; ab = (su3_matrix *)gen_pt2[dir+4][i]; dsto = (su3_matrix *)F_PT(&lattice[i],desto); su3mat_copy( af, dsto); add_su3_matrix( ab, dsto, dsto); }
FORALLSITES(i,s){ mult_su3_na( (su3_matrix *)(gen_pt[0][i]), &LINK(dir0), &tmat1 ); su3_adjoint( &tmat1, &tmat2 ); add_su3_matrix( &FIELD_STRENGTH(component), &tmat1, &FIELD_STRENGTH(component) ); sub_su3_matrix( &FIELD_STRENGTH(component), &tmat2, &FIELD_STRENGTH(component) ); }
/* a = traceless-hermitian part of b. b and a may be equivalent. */ static void traceless_hermitian_su3(su3_matrix *a, su3_matrix *b) { complex t; su3_matrix c; su3_adjoint( b, &c ); add_su3_matrix( &c, b, a ); t = trace_su3( a ); CDIVREAL(t, 3., t); CSUB(a->e[0][0],t,a->e[0][0]); CSUB(a->e[1][1],t,a->e[1][1]); CSUB(a->e[2][2],t,a->e[2][2]); scalar_mult_su3_matrix( a, 0.5, a ); }
// Calculate upper staple, add it FORALLSITES(i, s) { mult_su3_nn((su3_matrix*)F_PT(s,lnk2), (su3_matrix *)gen_pt[1][i], &tmat1); mult_su3_na(&tmat1, (su3_matrix *)gen_pt[0][i], &tmat2); add_su3_matrix(stp + i, &tmat2, stp + i); }
FORALLSITES(i,s){ add_su3_matrix( ((su3_matrix *)F_PT(s,f_mn)), (su3_matrix *)(gen_pt[2][i]), ((su3_matrix *)F_PT(s,f_mn)) ); }