mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-24 12:45:56 +01:00
Update
This commit is contained in:
parent
c234a7f913
commit
f36e984278
@ -9,6 +9,7 @@ using namespace std;
|
|||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
typedef SpinColourMatrix Propagator;
|
typedef SpinColourMatrix Propagator;
|
||||||
typedef SpinColourVector Fermion;
|
typedef SpinColourVector Fermion;
|
||||||
|
typedef PeriodicGimplR GimplR;
|
||||||
|
|
||||||
template<class Gimpl,class Field> class CovariantLaplacianCshift : public SparseMatrixBase<Field>
|
template<class Gimpl,class Field> class CovariantLaplacianCshift : public SparseMatrixBase<Field>
|
||||||
{
|
{
|
||||||
@ -55,6 +56,15 @@ void MakePhase(Coordinate mom,LatticeComplex &phase)
|
|||||||
}
|
}
|
||||||
phase = exp(phase*ci);
|
phase = exp(phase*ci);
|
||||||
}
|
}
|
||||||
|
void LinkSmear(int nstep, RealD rho,LatticeGaugeField &Uin,LatticeGaugeField &Usmr)
|
||||||
|
{
|
||||||
|
Smear_Stout<GimplR> Stout(rho);
|
||||||
|
LatticeGaugeField Utmp(Uin.Grid());
|
||||||
|
Utmp = Uin;
|
||||||
|
for(int i=0;i<nstep;i++){
|
||||||
|
Stout.smear(Usmr,Utmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
void PointSource(Coordinate &coor,LatticePropagator &source)
|
void PointSource(Coordinate &coor,LatticePropagator &source)
|
||||||
{
|
{
|
||||||
// Coordinate coor({0,0,0,0});
|
// Coordinate coor({0,0,0,0});
|
||||||
@ -97,23 +107,23 @@ void GaugeFix(LatticeGaugeField &U,LatticeGaugeField &Ufix)
|
|||||||
{
|
{
|
||||||
Real alpha=0.05;
|
Real alpha=0.05;
|
||||||
|
|
||||||
Real plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(U);
|
Real plaq=WilsonLoops<GimplR>::avgPlaquette(U);
|
||||||
|
|
||||||
std::cout << " Initial plaquette "<<plaq << std::endl;
|
std::cout << " Initial plaquette "<<plaq << std::endl;
|
||||||
|
|
||||||
LatticeColourMatrix xform(U.Grid());
|
LatticeColourMatrix xform(U.Grid());
|
||||||
Ufix = U;
|
Ufix = U;
|
||||||
int orthog=Nd-1;
|
int orthog=Nd-1;
|
||||||
FourierAcceleratedGaugeFixer<PeriodicGimplR>::SteepestDescentGaugeFix(Ufix,xform,alpha,10000,1.0e-12, 1.0e-12,true,orthog);
|
FourierAcceleratedGaugeFixer<GimplR>::SteepestDescentGaugeFix(Ufix,xform,alpha,10000,1.0e-12, 1.0e-12,true,orthog);
|
||||||
|
|
||||||
plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Ufix);
|
plaq=WilsonLoops<GimplR>::avgPlaquette(Ufix);
|
||||||
|
|
||||||
std::cout << " Final plaquette "<<plaq << std::endl;
|
std::cout << " Final plaquette "<<plaq << std::endl;
|
||||||
}
|
}
|
||||||
template<class Field>
|
template<class Field>
|
||||||
void GaussianSmear(LatticeGaugeField &U,Field &unsmeared,Field &smeared)
|
void GaussianSmear(LatticeGaugeField &U,Field &unsmeared,Field &smeared)
|
||||||
{
|
{
|
||||||
typedef CovariantLaplacianCshift <PeriodicGimplR,Field> Laplacian_t;
|
typedef CovariantLaplacianCshift <GimplR,Field> Laplacian_t;
|
||||||
Laplacian_t Laplacian(U);
|
Laplacian_t Laplacian(U);
|
||||||
|
|
||||||
Integer Iterations = 40;
|
Integer Iterations = 40;
|
||||||
@ -287,15 +297,10 @@ int main (int argc, char ** argv)
|
|||||||
GridDefaultMpi());
|
GridDefaultMpi());
|
||||||
GridRedBlackCartesian * UrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(UGrid);
|
GridRedBlackCartesian * UrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(UGrid);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// You can manage seeds however you like.
|
|
||||||
// Recommend SeedUniqueString.
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
std::vector<int> seeds4({1,2,3,4});
|
|
||||||
GridParallelRNG RNG4(UGrid); RNG4.SeedFixedIntegers(seeds4);
|
|
||||||
|
|
||||||
LatticeGaugeField Umu(UGrid);
|
LatticeGaugeField Umu(UGrid);
|
||||||
LatticeGaugeField Ufixed(UGrid);
|
LatticeGaugeField Utmp(UGrid);
|
||||||
|
LatticeGaugeField Usmr(UGrid);
|
||||||
std::string config;
|
std::string config;
|
||||||
if( argc > 1 && argv[1][0] != '-' )
|
if( argc > 1 && argv[1][0] != '-' )
|
||||||
{
|
{
|
||||||
@ -308,13 +313,17 @@ int main (int argc, char ** argv)
|
|||||||
{
|
{
|
||||||
std::cout<<GridLogMessage <<"Using hot configuration"<<std::endl;
|
std::cout<<GridLogMessage <<"Using hot configuration"<<std::endl;
|
||||||
SU<Nc>::ColdConfiguration(Umu);
|
SU<Nc>::ColdConfiguration(Umu);
|
||||||
// SU<Nc>::HotConfiguration(RNG4,Umu);
|
config="ColdConfig";
|
||||||
config="HotConfig";
|
|
||||||
}
|
}
|
||||||
GaugeFix(Umu,Ufixed);
|
GaugeFix(Umu,Utmp);
|
||||||
Umu=Ufixed;
|
Umu=Utmp;
|
||||||
|
|
||||||
|
int nsmr=3;
|
||||||
|
RealD rho=0.1;
|
||||||
|
LinkSmear(nsmr,rho,Umu,Usmr);
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<int> smeared_link({ 0,0,1} );
|
||||||
std::vector<RealD> masses({ 0.004,0.02477,0.447} ); // u/d, s, c ??
|
std::vector<RealD> masses({ 0.004,0.02477,0.447} ); // u/d, s, c ??
|
||||||
std::vector<RealD> M5s ({ 1.8,1.8,1.0} );
|
std::vector<RealD> M5s ({ 1.8,1.8,1.0} );
|
||||||
std::vector<RealD> bs ({ 1.0,1.0,1.5} ); // DDM
|
std::vector<RealD> bs ({ 1.0,1.0,1.5} ); // DDM
|
||||||
@ -339,23 +348,29 @@ int main (int argc, char ** argv)
|
|||||||
RealD c = cs[m];
|
RealD c = cs[m];
|
||||||
int Ls = Ls_s[m];
|
int Ls = Ls_s[m];
|
||||||
|
|
||||||
|
if ( smeared_link[m] ) Utmp = Usmr;
|
||||||
|
else Utmp = Umu;
|
||||||
|
|
||||||
FGrids.push_back(SpaceTimeGrid::makeFiveDimGrid(Ls,UGrid));
|
FGrids.push_back(SpaceTimeGrid::makeFiveDimGrid(Ls,UGrid));
|
||||||
FrbGrids.push_back(SpaceTimeGrid::makeFiveDimRedBlackGrid(Ls,UGrid));
|
FrbGrids.push_back(SpaceTimeGrid::makeFiveDimRedBlackGrid(Ls,UGrid));
|
||||||
|
|
||||||
FermActs.push_back(new MobiusFermionR(Umu,*FGrids[m],*FrbGrids[m],*UGrid,*UrbGrid,mass,M5,b,c));
|
FermActs.push_back(new MobiusFermionR(Utmp,*FGrids[m],*FrbGrids[m],*UGrid,*UrbGrid,mass,M5,b,c));
|
||||||
}
|
}
|
||||||
|
|
||||||
LatticePropagator point_source(UGrid);
|
|
||||||
LatticePropagator z2wall_source(UGrid);
|
LatticePropagator z2wall_source(UGrid);
|
||||||
LatticePropagator gfwall_source(UGrid);
|
LatticePropagator gfwall_source(UGrid);
|
||||||
|
|
||||||
Coordinate Origin({0,0,0,0});
|
int tslice = 0;
|
||||||
PointSource (Origin,point_source);
|
//////////////////////////////////////////////////////////////////////
|
||||||
Z2WallSource (RNG4,0,z2wall_source);
|
// RNG seeded for Z2 wall
|
||||||
GFWallSource (0,gfwall_source);
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// You can manage seeds however you like.
|
||||||
|
// Recommend SeedUniqueString.
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
GridParallelRNG RNG4(UGrid); RNG4.SeedUniqueString("Study2-Source_Z2_p_0_0_0_t_0-880");
|
||||||
|
Z2WallSource (RNG4,tslice,z2wall_source);
|
||||||
|
GFWallSource (tslice,gfwall_source);
|
||||||
|
|
||||||
std::vector<LatticePropagator> PointProps(nmass,UGrid);
|
|
||||||
std::vector<LatticePropagator> GaussProps(nmass,UGrid);
|
|
||||||
std::vector<LatticePropagator> Z2Props (nmass,UGrid);
|
std::vector<LatticePropagator> Z2Props (nmass,UGrid);
|
||||||
std::vector<LatticePropagator> GFProps (nmass,UGrid);
|
std::vector<LatticePropagator> GFProps (nmass,UGrid);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user