#include"AlgPion.h" #include #include #include #include #include #include #include #include #include #include #include #include #include //c++ classes #include //#include //#include using namespace cps; using namespace std; AlgPion::AlgPion(Lattice & latt, CommonArg* comm_arg, QPropWArg *lqprop_arg, EigCGArg *eigcg_arg):Alg(latt,comm_arg) { cname = "AlgPion"; char *fname = "AlgPion(Lattice &, CommonArg*, QpropWArg *)"; VRB.Func(cname,fname); if(lqprop_arg == NULL)ERR.Pointer(cname,fname,"lqprop_arg"); this->lqprop_arg = lqprop_arg; this->eigcg_arg = eigcg_arg; } AlgPion::~AlgPion() { char *fname = "~AlgPion()"; VRB.Func(cname,fname); } void AlgPion::runpion() { char *fname = "runpion()"; VRB.Func(cname,fname); std::cout<<"test: run pion before gauge fixing"<t=0; sprintf(lcomm_arg_filename,"%s_tsrc_%d_lquark.txt",common_arg->filename,0); lcomm_arg.set_filename(lcomm_arg_filename); //eigCG para // int nev=(lqprop_arg->cg).bicgstab_n; // int m=3*nev; // Float max_eig=(lqprop_arg->cg).true_rsd; // int max_def_len=lqprop_arg->seqNum; // int restart_len=3; // Float restart[]={1e-3,1e-5,1e-7}; int nev=eigcg_arg->nev; int m=eigcg_arg->m; Float max_eig=eigcg_arg->max_eig_cut; int max_def_len=eigcg_arg->max_def_len; int restart_len=eigcg_arg->restart_len; Float *restart=eigcg_arg->restart; bool always_restart=eigcg_arg->always_restart; int def_len=0; int vec_len=GJP.VolNodeSites() * lat.FsiteSize() / (lat.FchkbEvl()+1); Vector **V=new Vector*[m]; for(int i=0;ieig_Run(V,vec_len,M,max_eig,nev,m,U,H,max_def_len,def_len,restart,restart_len,always_restart,0,1e-8); cout<<"deflation length:"<t=6; qpropw2=new QPropWWallSrc(lat,lqprop_arg,&lcomm_arg); qpropw2->eig_Run(NULL,vec_len,M,max_eig,0,0,U,H,max_def_len,def_len,restart,restart_len,always_restart,0,1e-8); algfixgauge.free(); Rcomplex *corr=new Rcomplex[t_size]; WilsonMatrix Mtemp1,Mtemp2; char filename[200]; //------------------------------------------ //***calculate pion correlation function**** //------------------------------------------ for(int t=0;tfilename); writeCorr(corr,filename); delete []corr; delete qpropw1; delete qpropw2; delete []H; delete []M; for(int i=0;i