mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-09 23:45:36 +00:00
WOrking
This commit is contained in:
parent
c69f73ff9f
commit
42ae36bc28
@ -50,7 +50,6 @@ public:
|
|||||||
typedef iVector<CComplex,nbasis > Cvec;
|
typedef iVector<CComplex,nbasis > Cvec;
|
||||||
typedef Lattice< CComplex > CoarseScalar; // used for inner products on fine field
|
typedef Lattice< CComplex > CoarseScalar; // used for inner products on fine field
|
||||||
typedef Lattice<Fobj > FineField;
|
typedef Lattice<Fobj > FineField;
|
||||||
typedef Lattice<CComplex > FineComplexField;
|
|
||||||
typedef CoarseVector Field;
|
typedef CoarseVector Field;
|
||||||
////////////////////
|
////////////////////
|
||||||
// Data members
|
// Data members
|
||||||
@ -309,7 +308,6 @@ public:
|
|||||||
RealD teigen=0.0;
|
RealD teigen=0.0;
|
||||||
RealD tmat=0.0;
|
RealD tmat=0.0;
|
||||||
RealD tphase=0.0;
|
RealD tphase=0.0;
|
||||||
RealD tphaseBZ=0.0;
|
|
||||||
RealD tinv=0.0;
|
RealD tinv=0.0;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
@ -364,41 +362,28 @@ public:
|
|||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
FineField phaV(grid); // Phased block basis vector
|
FineField phaV(grid); // Phased block basis vector
|
||||||
FineField MphaV(grid);// Matrix applied
|
FineField MphaV(grid);// Matrix applied
|
||||||
std::vector<FineComplexField> phaF(npoint,grid);
|
|
||||||
std::vector<CoarseComplexField> pha(npoint,CoarseGrid());
|
|
||||||
|
|
||||||
CoarseVector coarseInner(CoarseGrid());
|
CoarseVector coarseInner(CoarseGrid());
|
||||||
|
|
||||||
typedef typename CComplex::scalar_type SComplex;
|
|
||||||
FineComplexField one(grid); one=SComplex(1.0);
|
|
||||||
FineComplexField zz(grid); zz = Zero();
|
|
||||||
tphase=-usecond();
|
|
||||||
for(int p=0;p<npoint;p++){ // Loop over momenta in npoint
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
// Stick a phase on every block
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
CoarseComplexField coor(CoarseGrid());
|
|
||||||
pha[p]=Zero();
|
|
||||||
for(int mu=0;mu<Nd;mu++){
|
|
||||||
LatticeCoordinate(coor,mu);
|
|
||||||
RealD TwoPiL = M_PI * 2.0/ clatt[mu];
|
|
||||||
pha[p] = pha[p] + (TwoPiL * geom.shifts[p][mu]) * coor;
|
|
||||||
}
|
|
||||||
pha[p] =exp(pha[p]*ci);
|
|
||||||
|
|
||||||
blockZAXPY(phaF[p],pha[p],one,zz);
|
|
||||||
|
|
||||||
}
|
|
||||||
tphase+=usecond();
|
|
||||||
|
|
||||||
std::vector<CoarseVector> ComputeProj(npoint,CoarseGrid());
|
std::vector<CoarseVector> ComputeProj(npoint,CoarseGrid());
|
||||||
std::vector<CoarseVector> FT(npoint,CoarseGrid());
|
std::vector<CoarseVector> FT(npoint,CoarseGrid());
|
||||||
for(int i=0;i<nbasis;i++){// Loop over basis vectors
|
for(int i=0;i<nbasis;i++){// Loop over basis vectors
|
||||||
std::cout << GridLogMessage<< "CoarsenMatrixColoured vec "<<i<<"/"<<nbasis<< std::endl;
|
std::cout << GridLogMessage<< "CoarsenMatrixColoured vec "<<i<<"/"<<nbasis<< std::endl;
|
||||||
for(int p=0;p<npoint;p++){ // Loop over momenta in npoint
|
for(int p=0;p<npoint;p++){ // Loop over momenta in npoint
|
||||||
tphaseBZ-=usecond();
|
/////////////////////////////////////////////////////
|
||||||
phaV = phaF[p]*Subspace.subspace[i];
|
// Stick a phase on every block
|
||||||
tphaseBZ+=usecond();
|
/////////////////////////////////////////////////////
|
||||||
|
tphase-=usecond();
|
||||||
|
CoarseComplexField coor(CoarseGrid());
|
||||||
|
CoarseComplexField pha(CoarseGrid()); pha=Zero();
|
||||||
|
for(int mu=0;mu<Nd;mu++){
|
||||||
|
LatticeCoordinate(coor,mu);
|
||||||
|
RealD TwoPiL = M_PI * 2.0/ clatt[mu];
|
||||||
|
pha = pha + (TwoPiL * geom.shifts[p][mu]) * coor;
|
||||||
|
}
|
||||||
|
pha =exp(pha*ci);
|
||||||
|
phaV=Zero();
|
||||||
|
blockZAXPY(phaV,pha,Subspace.subspace[i],phaV);
|
||||||
|
tphase+=usecond();
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
// Multiple phased subspace vector by matrix and project to subspace
|
// Multiple phased subspace vector by matrix and project to subspace
|
||||||
@ -409,8 +394,8 @@ public:
|
|||||||
tmat+=usecond();
|
tmat+=usecond();
|
||||||
|
|
||||||
tproj-=usecond();
|
tproj-=usecond();
|
||||||
blockProjectFast(coarseInner,MphaV,Subspace.subspace);
|
blockProject(coarseInner,MphaV,Subspace.subspace);
|
||||||
coarseInner = conjugate(pha[p]) * coarseInner;
|
coarseInner = conjugate(pha) * coarseInner;
|
||||||
|
|
||||||
ComputeProj[p] = coarseInner;
|
ComputeProj[p] = coarseInner;
|
||||||
tproj+=usecond();
|
tproj+=usecond();
|
||||||
@ -446,7 +431,6 @@ public:
|
|||||||
ExchangeCoarseLinks();
|
ExchangeCoarseLinks();
|
||||||
std::cout << GridLogMessage<<"CoarsenOperator eigen "<<teigen<<" us"<<std::endl;
|
std::cout << GridLogMessage<<"CoarsenOperator eigen "<<teigen<<" us"<<std::endl;
|
||||||
std::cout << GridLogMessage<<"CoarsenOperator phase "<<tphase<<" us"<<std::endl;
|
std::cout << GridLogMessage<<"CoarsenOperator phase "<<tphase<<" us"<<std::endl;
|
||||||
std::cout << GridLogMessage<<"CoarsenOperator phaseBZ "<<tphaseBZ<<" us"<<std::endl;
|
|
||||||
std::cout << GridLogMessage<<"CoarsenOperator mat "<<tmat <<" us"<<std::endl;
|
std::cout << GridLogMessage<<"CoarsenOperator mat "<<tmat <<" us"<<std::endl;
|
||||||
std::cout << GridLogMessage<<"CoarsenOperator proj "<<tproj<<" us"<<std::endl;
|
std::cout << GridLogMessage<<"CoarsenOperator proj "<<tproj<<" us"<<std::endl;
|
||||||
std::cout << GridLogMessage<<"CoarsenOperator inv "<<tinv<<" us"<<std::endl;
|
std::cout << GridLogMessage<<"CoarsenOperator inv "<<tinv<<" us"<<std::endl;
|
||||||
|
Loading…
Reference in New Issue
Block a user