void fft_smeared_wline() { int sgn = 1 ; restrict_fourier_site(F_OFFSET(smear_w_line), sizeof(su3_matrix), sgn); }
void fft_negmom_quark() { int sgn = -1 ; restrict_fourier_site(F_OFFSET(strip_quark), sizeof(su3_matrix), sgn); }
void gluon_prop( void ) { register int i,dir; register int pmu; register site *s; anti_hermitmat ahtmp; Real pix, piy, piz, pit; Real sin_pmu, sin_pmu2, prop_s, prop_l, ftmp1, ftmp2; complex ctmp; su3_matrix mat; struct { Real f1, f2; } msg; double trace, dmuAmu; int px, py, pz, pt; int currentnode,newnode; pix = PI / (Real)nx; piy = PI / (Real)ny; piz = PI / (Real)nz; pit = PI / (Real)nt; trace = 0.0; /* Make A_mu as anti-hermition traceless part of U_mu */ /* But store as SU(3) matrix for call to FFT */ for(dir=XUP; dir<=TUP; dir++) { FORALLSITES(i,s){ trace += (double)(trace_su3( &(s->link[dir]))).real; make_anti_hermitian( &(s->link[dir]), &ahtmp); uncompress_anti_hermitian( &ahtmp, &(s->a_mu[dir])); } g_sync(); /* Now Fourier transform */ restrict_fourier_site(F_OFFSET(a_mu[dir]), sizeof(su3_matrix), FORWARDS); }
int main(int argc,char *argv[]) { int prompt , k, ns, i; site *s; double inv_space_vol; int color,spin, color1, spin1; int key[4]; int dummy[4]; FILE *corr_fp; complex pr_tmp; wilson_propagator *qdest; wilson_propagator qtemp1; wilson_vector *psi = NULL; w_prop_file *wpf; quark_source wqs; key[XUP] = 1; key[YUP] = 1; key[ZUP] = 1; key[TUP] = 0; initialize_machine(&argc,&argv); /* Remap standard I/O */ if(remap_stdio_from_args(argc, argv) == 1)terminate(1); g_sync(); prompt = setup(); setup_restrict_fourier(key, dummy); psi = create_wv_field(); /* Initialize the source type */ init_qs(&wqs); while( readin(prompt) == 0) { /**************************************************************/ /*load staggered propagator*/ reload_ksprop_to_site3(ks_prop_startflag, start_ks_prop_file, &ksqs, F_OFFSET(prop), 1); FORALLSITES(i,s) { for(color = 0; color < 3; color++)for(k = 0; k < 3; k++) s->stag_propagator.e[color][k] = s->prop[color].c[k]; } /* Initialize FNAL correlator file */ corr_fp = open_fnal_meson_file(savefile_c); /* Load Wilson propagator for each kappa */ for(k=0; k<num_kap; k++) { kappa = kap[k]; wpf = r_open_wprop(startflag_w[k], startfile_w[k]); for(spin=0; spin<4; spin++) for(color=0; color<3; color++) { if(reload_wprop_sc_to_field(startflag_w[k], wpf, &wqs, spin, color, psi, 1) != 0) terminate(1); FORALLSITES(i,s) { copy_wvec(&psi[i],&lattice[i].quark_propagator.c[color].d[spin]); } } r_close_wprop(startflag_w[k],wpf); /*******************************************************************/ /* Rotate the heavy quark */ rotate_w_quark(F_OFFSET(quark_propagator), F_OFFSET(quark_propagator_copy), d1[k]); // result in quark_propagator_copy /**************************************************************/ /*Calculate and print out the spectrum with the rotated heavy quark propagators*/ spectrum_hl_rot(corr_fp, F_OFFSET(stag_propagator), F_OFFSET(quark_propagator_copy), k); /**************************************************************/ /*Smear quarks, calculate and print out the spectrum with the smeared heavy quark propagators*/ for(color=0; color<3; color++)for(spin=0; spin<4; spin++) { restrict_fourier_site(F_OFFSET(quark_propagator.c[color].d[spin]), sizeof(wilson_vector), FORWARDS); } for(ns=0; ns<num_smear; ns++) { if(strcmp(smearfile[ns],"none")==0) continue; inv_space_vol = 1./((double)nx*ny*nz); /* Either read a smearing file, or take it to be a point sink */ if(strlen(smearfile[ns]) != 0) { get_smearings_bi_serial(smearfile[ns]); restrict_fourier_site(F_OFFSET(w), sizeof(complex), FORWARDS); FORALLSITES(i,s) { for(color=0; color<3; color++)for(spin=0; spin<4; spin++) for(color1=0; color1<3; color1++)for(spin1=0; spin1<4; spin1++) { pr_tmp = s->quark_propagator.c[color].d[spin].d[spin1].c[color1]; s->quark_propagator_copy.c[color].d[spin].d[spin1].c[color1].real = pr_tmp.real * s->w.real - pr_tmp.imag * s->w.imag; s->quark_propagator_copy.c[color].d[spin].d[spin1].c[color1].imag = pr_tmp.real * s->w.imag + pr_tmp.imag * s->w.real; } } } else { /* Point sink */ FORALLSITES(i,s) { for(color=0; color<3; color++)for(spin=0; spin<4; spin++) for(color1=0; color1<3; color1++)for(spin1=0; spin1<4; spin1++) { pr_tmp = s->quark_propagator.c[color].d[spin].d[spin1].c[color1]; s->quark_propagator_copy.c[color].d[spin].d[spin1].c[color1].real = pr_tmp.real; s->quark_propagator_copy.c[color].d[spin].d[spin1].c[color1].imag = pr_tmp.imag; } } } for(color=0; color<3; color++)for(spin=0; spin<4; spin++) { restrict_fourier_site(F_OFFSET(quark_propagator_copy.c[color].d[spin]), sizeof(wilson_vector), BACKWARDS); } FORALLSITES(i,s) { qdest = &(s->quark_propagator_copy); qtemp1 = s->quark_propagator_copy; for(spin=0; spin<4; spin++)for(color=0; color<3; color++) for(spin1=0; spin1<4; spin1++)for(color1=0; color1<3; color1++) { qdest->c[color].d[spin1].d[spin].c[color1].real = qtemp1.c[color].d[spin].d[spin1].c[color1].real; qdest->c[color].d[spin1].d[spin].c[color1].imag = qtemp1.c[color].d[spin].d[spin1].c[color1].imag; } }
void twopt_sequential_corr(complex *corr, field_offset hqet_prop, int v_pt, int spect_pt, int color) { register int i; int j; register site *s; wilson_vector gammafive_quark ; int pt ; int t ; double t_total ; int sgn ; int tsrc , tend ; int spin ; Real scale =1.0/((Real) nx*ny*nz ) ; double t_smear , t_hqet ; spin_wilson_vector anti_quark ; spin_wilson_vector anti_quark_proj ; complex z , z_tmp ; int tcurrent = 2*nt ; /*** dummy variable ****/ /********** ----------------------------------------*********/ t_total = -1.0*dclock() ; /**** smear the light quark propagator st the sink *****/ t_smear = dclock() ; for(spin = 0 ; spin < 4 ; ++spin) { /** quark(\p) = \sum_{\p} exp( -i\p \x ) quark(\x) corresponds to isign = -1 **/ sgn = 1 ; restrict_fourier_site(F_OFFSET(quark_sequential.d[spin]), sizeof(wilson_vector), sgn); FORALLSITES(i,s) { z_tmp.real = s->seq_smear_func_fft[v_pt].real * scale ; z_tmp.imag = s->seq_smear_func_fft[v_pt].imag * scale ; c_scale_wilson_vector2( (wilson_vector *) &(s->quark_sequential.d[spin] ), &z_tmp ); } /** FFT the convolution back to real space. smeared_quark(x) = \sum_{\p} exp( ip x ) quark(p) f(-p) corresponds to isign = -1 **/ sgn = -1 ; restrict_fourier_site( F_OFFSET(quark_sequential.d[spin]), sizeof(wilson_vector), sgn); } /*** end of the loop over spin *****/