예제 #1
0
void fft_smeared_wline()
{
  int sgn = 1 ;

  restrict_fourier_site(F_OFFSET(smear_w_line), sizeof(su3_matrix), sgn);

}
예제 #2
0
void fft_negmom_quark()
{
  int sgn = -1 ;

  restrict_fourier_site(F_OFFSET(strip_quark), sizeof(su3_matrix), sgn);


}
예제 #3
0
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);
    }
예제 #4
0
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;
                                }
                }
예제 #5
0
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 *****/