mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Expose Nc as a compile time configure option.
Remove precision option
This commit is contained in:
		@@ -47,7 +47,7 @@ static constexpr int Ym = 5;
 | 
				
			|||||||
static constexpr int Zm = 6;
 | 
					static constexpr int Zm = 6;
 | 
				
			||||||
static constexpr int Tm = 7;
 | 
					static constexpr int Tm = 7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static constexpr int Nc=3;
 | 
					static constexpr int Nc=Config_Nc;
 | 
				
			||||||
static constexpr int Ns=4;
 | 
					static constexpr int Ns=4;
 | 
				
			||||||
static constexpr int Nd=4;
 | 
					static constexpr int Nd=4;
 | 
				
			||||||
static constexpr int Nhs=2; // half spinor
 | 
					static constexpr int Nhs=2; // half spinor
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -358,6 +358,7 @@ public:
 | 
				
			|||||||
    ///////// Welcome message ////////////
 | 
					    ///////// Welcome message ////////////
 | 
				
			||||||
    std::cout<<GridLogMessage << "=================================================================================="<<std::endl;
 | 
					    std::cout<<GridLogMessage << "=================================================================================="<<std::endl;
 | 
				
			||||||
    std::cout<<GridLogMessage << "Benchmark DWF on "<<L<<"^4 local volume "<<std::endl;
 | 
					    std::cout<<GridLogMessage << "Benchmark DWF on "<<L<<"^4 local volume "<<std::endl;
 | 
				
			||||||
 | 
					    std::cout<<GridLogMessage << "* Nc             : "<<Nc<<std::endl;
 | 
				
			||||||
    std::cout<<GridLogMessage << "* Global volume  : "<<GridCmdVectorIntToString(latt4)<<std::endl;
 | 
					    std::cout<<GridLogMessage << "* Global volume  : "<<GridCmdVectorIntToString(latt4)<<std::endl;
 | 
				
			||||||
    std::cout<<GridLogMessage << "* Ls             : "<<Ls<<std::endl;
 | 
					    std::cout<<GridLogMessage << "* Ls             : "<<Ls<<std::endl;
 | 
				
			||||||
    std::cout<<GridLogMessage << "* ranks          : "<<NP  <<std::endl;
 | 
					    std::cout<<GridLogMessage << "* ranks          : "<<NP  <<std::endl;
 | 
				
			||||||
@@ -386,7 +387,7 @@ public:
 | 
				
			|||||||
    typedef LatticeGaugeFieldF Gauge;
 | 
					    typedef LatticeGaugeFieldF Gauge;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ///////// Source preparation ////////////
 | 
					    ///////// Source preparation ////////////
 | 
				
			||||||
    Gauge Umu(UGrid);  SU3::HotConfiguration(RNG4,Umu); 
 | 
					    Gauge Umu(UGrid);  SU<Nc>::HotConfiguration(RNG4,Umu); 
 | 
				
			||||||
    Fermion src   (FGrid); random(RNG5,src);
 | 
					    Fermion src   (FGrid); random(RNG5,src);
 | 
				
			||||||
    Fermion src_e (FrbGrid);
 | 
					    Fermion src_e (FrbGrid);
 | 
				
			||||||
    Fermion src_o (FrbGrid);
 | 
					    Fermion src_o (FrbGrid);
 | 
				
			||||||
@@ -449,7 +450,13 @@ public:
 | 
				
			|||||||
	FGrid->Barrier();
 | 
						FGrid->Barrier();
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	double volume=Ls;  for(int mu=0;mu<Nd;mu++) volume=volume*latt4[mu];
 | 
						double volume=Ls;  for(int mu=0;mu<Nd;mu++) volume=volume*latt4[mu];
 | 
				
			||||||
	double flops=(1344.0*volume)/2;
 | 
					
 | 
				
			||||||
 | 
						// Nc=3 gives
 | 
				
			||||||
 | 
						// 1344= 3*(2*8+6)*2*8 + 8*3*2*2 + 3*4*2*8
 | 
				
			||||||
 | 
						// 1344 = Nc* (6+(Nc-1)*8)*2*Nd + Nd*Nc*2*2  + Nd*Nc*Ns*2
 | 
				
			||||||
 | 
						//	double flops=(1344.0*volume)/2;
 | 
				
			||||||
 | 
						double fps = Nc* (6+(Nc-1)*8)*Ns*Nd + Nd*Nc*Ns  + Nd*Nc*Ns*2;
 | 
				
			||||||
 | 
						double flops=(fps*volume)/2;
 | 
				
			||||||
	double mf_hi, mf_lo, mf_err;
 | 
						double mf_hi, mf_lo, mf_err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	timestat.statistics(t_time);
 | 
						timestat.statistics(t_time);
 | 
				
			||||||
@@ -464,6 +471,7 @@ public:
 | 
				
			|||||||
	if ( mflops>mflops_best ) mflops_best = mflops;
 | 
						if ( mflops>mflops_best ) mflops_best = mflops;
 | 
				
			||||||
	if ( mflops<mflops_worst) mflops_worst= mflops;
 | 
						if ( mflops<mflops_worst) mflops_worst= mflops;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::cout<<GridLogMessage<< "Deo FlopsPerSite is "<<fps<<std::endl;
 | 
				
			||||||
	std::cout<<GridLogMessage << std::fixed << std::setprecision(1)<<"Deo mflop/s =   "<< mflops << " ("<<mf_err<<") " << mf_lo<<"-"<<mf_hi <<std::endl;
 | 
						std::cout<<GridLogMessage << std::fixed << std::setprecision(1)<<"Deo mflop/s =   "<< mflops << " ("<<mf_err<<") " << mf_lo<<"-"<<mf_hi <<std::endl;
 | 
				
			||||||
	std::cout<<GridLogMessage << std::fixed << std::setprecision(1)<<"Deo mflop/s per rank   "<< mflops/NP<<std::endl;
 | 
						std::cout<<GridLogMessage << std::fixed << std::setprecision(1)<<"Deo mflop/s per rank   "<< mflops/NP<<std::endl;
 | 
				
			||||||
	std::cout<<GridLogMessage << std::fixed << std::setprecision(1)<<"Deo mflop/s per node   "<< mflops/NN<<std::endl;
 | 
						std::cout<<GridLogMessage << std::fixed << std::setprecision(1)<<"Deo mflop/s per node   "<< mflops/NN<<std::endl;
 | 
				
			||||||
@@ -540,7 +548,7 @@ public:
 | 
				
			|||||||
    typedef typename Action::FermionField Fermion; 
 | 
					    typedef typename Action::FermionField Fermion; 
 | 
				
			||||||
    typedef LatticeGaugeFieldF Gauge;
 | 
					    typedef LatticeGaugeFieldF Gauge;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    Gauge Umu(FGrid);  SU3::HotConfiguration(RNG4,Umu); 
 | 
					    Gauge Umu(FGrid);  SU<Nc>::HotConfiguration(RNG4,Umu); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    typename Action::ImplParams params;
 | 
					    typename Action::ImplParams params;
 | 
				
			||||||
    Action Ds(Umu,Umu,*FGrid,*FrbGrid,mass,c1,c2,u0,params);
 | 
					    Action Ds(Umu,Umu,*FGrid,*FrbGrid,mass,c1,c2,u0,params);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -108,7 +108,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "Drawing gauge field" << std::endl;
 | 
					  std::cout << GridLogMessage << "Drawing gauge field" << std::endl;
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  std::cout << GridLogMessage << "Random gauge initialised " << std::endl;
 | 
					  std::cout << GridLogMessage << "Random gauge initialised " << std::endl;
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
  Umu=1.0;
 | 
					  Umu=1.0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,7 +63,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "Drawing gauge field" << std::endl;
 | 
					  std::cout << GridLogMessage << "Drawing gauge field" << std::endl;
 | 
				
			||||||
  LatticeGaugeFieldF Umu(UGrid); 
 | 
					  LatticeGaugeFieldF Umu(UGrid); 
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu); 
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu); 
 | 
				
			||||||
  std::cout << GridLogMessage << "Random gauge initialised " << std::endl;
 | 
					  std::cout << GridLogMessage << "Random gauge initialised " << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.1;
 | 
					  RealD mass=0.1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,7 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
using namespace Grid;
 | 
					using namespace Grid;
 | 
				
			||||||
 ;
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main (int argc, char ** argv)
 | 
					int main (int argc, char ** argv)
 | 
				
			||||||
@@ -53,7 +53,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
  std::cout << GridLogMessage << "Seeded"<<std::endl;
 | 
					  std::cout << GridLogMessage << "Seeded"<<std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "made random gauge fields"<<std::endl;
 | 
					  std::cout << GridLogMessage << "made random gauge fields"<<std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										50
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								configure.ac
									
									
									
									
									
								
							@@ -123,6 +123,24 @@ case ${ac_LAPACK} in
 | 
				
			|||||||
        AC_DEFINE([USE_LAPACK],[1],[use LAPACK]);;
 | 
					        AC_DEFINE([USE_LAPACK],[1],[use LAPACK]);;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					############### Nc
 | 
				
			||||||
 | 
					AC_ARG_ENABLE([Nc],
 | 
				
			||||||
 | 
					    [AC_HELP_STRING([--enable-Nc=2|3|4], [enable number of colours])],
 | 
				
			||||||
 | 
					    [ac_Nc=${enable_Nc}], [ac_Nc=3])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case ${ac_Nc} in
 | 
				
			||||||
 | 
					    2)
 | 
				
			||||||
 | 
					        AC_DEFINE([Config_Nc],[4],[Gauge group Nc]);;
 | 
				
			||||||
 | 
					    3)
 | 
				
			||||||
 | 
					        AC_DEFINE([Config_Nc],[4],[Gauge group Nc]);;
 | 
				
			||||||
 | 
					    4)
 | 
				
			||||||
 | 
					        AC_DEFINE([Config_Nc],[4],[Gauge group Nc]);;
 | 
				
			||||||
 | 
					    5)
 | 
				
			||||||
 | 
					        AC_DEFINE([Config_Nc],[5],[Gauge group Nc]);;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					      AC_MSG_ERROR(["Unsupport gauge group choice Nc = ${ac_Nc}"]);;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
############### FP16 conversions
 | 
					############### FP16 conversions
 | 
				
			||||||
AC_ARG_ENABLE([sfw-fp16],
 | 
					AC_ARG_ENABLE([sfw-fp16],
 | 
				
			||||||
    [AC_HELP_STRING([--enable-sfw-fp16=yes|no], [enable software fp16 comms])],
 | 
					    [AC_HELP_STRING([--enable-sfw-fp16=yes|no], [enable software fp16 comms])],
 | 
				
			||||||
@@ -459,23 +477,24 @@ esac
 | 
				
			|||||||
AM_CXXFLAGS="$SIMD_FLAGS $AM_CXXFLAGS"
 | 
					AM_CXXFLAGS="$SIMD_FLAGS $AM_CXXFLAGS"
 | 
				
			||||||
AM_CFLAGS="$SIMD_FLAGS $AM_CFLAGS"
 | 
					AM_CFLAGS="$SIMD_FLAGS $AM_CFLAGS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
############### Precision selection
 | 
					############### Precision selection - deprecate
 | 
				
			||||||
AC_ARG_ENABLE([precision],
 | 
					#AC_ARG_ENABLE([precision],
 | 
				
			||||||
              [AC_HELP_STRING([--enable-precision=single|double],
 | 
					#              [AC_HELP_STRING([--enable-precision=single|double],
 | 
				
			||||||
                              [Select default word size of Real])],
 | 
					#                              [Select default word size of Real])],
 | 
				
			||||||
              [ac_PRECISION=${enable_precision}],[ac_PRECISION=double])
 | 
					#              [ac_PRECISION=${enable_precision}],[ac_PRECISION=double])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case ${ac_PRECISION} in
 | 
					 | 
				
			||||||
     single)
 | 
					 | 
				
			||||||
       AC_DEFINE([GRID_DEFAULT_PRECISION_SINGLE],[1],[GRID_DEFAULT_PRECISION is SINGLE] )
 | 
					 | 
				
			||||||
     ;;
 | 
					 | 
				
			||||||
     double)
 | 
					 | 
				
			||||||
AC_DEFINE([GRID_DEFAULT_PRECISION_DOUBLE],[1],[GRID_DEFAULT_PRECISION is DOUBLE] )
 | 
					AC_DEFINE([GRID_DEFAULT_PRECISION_DOUBLE],[1],[GRID_DEFAULT_PRECISION is DOUBLE] )
 | 
				
			||||||
     ;;
 | 
					
 | 
				
			||||||
     *)
 | 
					#case ${ac_PRECISION} in
 | 
				
			||||||
     AC_MSG_ERROR([${ac_PRECISION} unsupported --enable-precision option]);
 | 
					#     single)
 | 
				
			||||||
     ;;
 | 
					#       AC_DEFINE([GRID_DEFAULT_PRECISION_SINGLE],[1],[GRID_DEFAULT_PRECISION is SINGLE] )
 | 
				
			||||||
esac
 | 
					#     ;;
 | 
				
			||||||
 | 
					#     double)
 | 
				
			||||||
 | 
					#     ;;
 | 
				
			||||||
 | 
					#     *)
 | 
				
			||||||
 | 
					#     AC_MSG_ERROR([${ac_PRECISION} unsupported --enable-precision option]);
 | 
				
			||||||
 | 
					#     ;;
 | 
				
			||||||
 | 
					#esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
######################  Shared memory allocation technique under MPI3
 | 
					######################  Shared memory allocation technique under MPI3
 | 
				
			||||||
AC_ARG_ENABLE([shm],[AC_HELP_STRING([--enable-shm=shmopen|shmget|hugetlbfs|shmnone],
 | 
					AC_ARG_ENABLE([shm],[AC_HELP_STRING([--enable-shm=shmopen|shmget|hugetlbfs|shmnone],
 | 
				
			||||||
@@ -656,6 +675,7 @@ os (target)                 : $target_os
 | 
				
			|||||||
compiler vendor             : ${ax_cv_cxx_compiler_vendor}
 | 
					compiler vendor             : ${ax_cv_cxx_compiler_vendor}
 | 
				
			||||||
compiler version            : ${ax_cv_gxx_version}
 | 
					compiler version            : ${ax_cv_gxx_version}
 | 
				
			||||||
----- BUILD OPTIONS -----------------------------------
 | 
					----- BUILD OPTIONS -----------------------------------
 | 
				
			||||||
 | 
					Nc                          : ${ac_Nc}
 | 
				
			||||||
SIMD                        : ${ac_SIMD}${SIMD_GEN_WIDTH_MSG}
 | 
					SIMD                        : ${ac_SIMD}${SIMD_GEN_WIDTH_MSG}
 | 
				
			||||||
Threading                   : ${ac_openmp}
 | 
					Threading                   : ${ac_openmp}
 | 
				
			||||||
Acceleration                : ${ac_ACCELERATOR}
 | 
					Acceleration                : ${ac_ACCELERATOR}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,7 +69,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Fine);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Fine);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  SU3::HotConfiguration(pRNGa,Umu);
 | 
					  SU<Nc>::HotConfiguration(pRNGa,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FieldMetaData header;
 | 
					  FieldMetaData header;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,7 +84,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Fine);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Fine);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  SU3::HotConfiguration(pRNGa,Umu);
 | 
					  SU<Nc>::HotConfiguration(pRNGa,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FieldMetaData header;
 | 
					  FieldMetaData header;
 | 
				
			||||||
  std::string file("./ckpoint_lat.4000");
 | 
					  std::string file("./ckpoint_lat.4000");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,7 +80,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          sRNG5(sFGrid);  sRNG5.SeedFixedIntegers(seeds5);
 | 
					  GridParallelRNG          sRNG5(sFGrid);  sRNG5.SeedFixedIntegers(seeds5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.1;
 | 
					  RealD mass=0.1;
 | 
				
			||||||
  RealD M5  =1.8;
 | 
					  RealD M5  =1.8;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -202,7 +202,7 @@ int main (int argc, char ** argv) {
 | 
				
			|||||||
  std::vector<int> seeds4({1,2,3,4});
 | 
					  std::vector<int> seeds4({1,2,3,4});
 | 
				
			||||||
  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  //  FieldMetaData header;
 | 
					  //  FieldMetaData header;
 | 
				
			||||||
  //  NerscIO::readConfiguration(Umu,header,Params.config);
 | 
					  //  NerscIO::readConfiguration(Umu,header,Params.config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeGaugeFieldD Umu(UGrid);
 | 
					  LatticeGaugeFieldD Umu(UGrid);
 | 
				
			||||||
  LatticeGaugeFieldF Umu_f(UGrid_f); 
 | 
					  LatticeGaugeFieldF Umu_f(UGrid_f); 
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  precisionChange(Umu_f,Umu);
 | 
					  precisionChange(Umu_f,Umu);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,7 +69,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeGaugeFieldD Umu(UGrid);
 | 
					  LatticeGaugeFieldD Umu(UGrid);
 | 
				
			||||||
  LatticeGaugeFieldF Umu_f(UGrid_f); 
 | 
					  LatticeGaugeFieldF Umu_f(UGrid_f); 
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  precisionChange(Umu_f,Umu);
 | 
					  precisionChange(Umu_f,Umu);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeFermion    ref(FGrid); ref=Zero();
 | 
					  LatticeFermion    ref(FGrid); ref=Zero();
 | 
				
			||||||
  LatticeFermion    tmp(FGrid);
 | 
					  LatticeFermion    tmp(FGrid);
 | 
				
			||||||
  LatticeFermion    err(FGrid);
 | 
					  LatticeFermion    err(FGrid);
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -131,7 +131,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  // LatticeFermion result(FGrid); result=Zero();
 | 
					  // LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  // LatticeGaugeField Umu(UGrid); 
 | 
					  // LatticeGaugeField Umu(UGrid); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // SU3::HotConfiguration(RNG4,Umu);
 | 
					  // SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  // std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
  // for(int mu=0;mu<Nd;mu++){
 | 
					  // for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,7 +69,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG5(FGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
					  GridParallelRNG          RNG5(FGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
				
			||||||
  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.1;
 | 
					  RealD mass=0.1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,7 +73,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    LatticeFermion    ref   (FGrid); ref = Zero();
 | 
					    LatticeFermion    ref   (FGrid); ref = Zero();
 | 
				
			||||||
    LatticeFermion    tmp   (FGrid); tmp = Zero();
 | 
					    LatticeFermion    tmp   (FGrid); tmp = Zero();
 | 
				
			||||||
    LatticeFermion    err   (FGrid); err = Zero();
 | 
					    LatticeFermion    err   (FGrid); err = Zero();
 | 
				
			||||||
    LatticeGaugeField Umu   (UGrid); SU3::HotConfiguration(RNG4, Umu);
 | 
					    LatticeGaugeField Umu   (UGrid); SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
    std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					    std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Only one non-zero (y)
 | 
					    // Only one non-zero (y)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeFermion    ref(FGrid);    ref=Zero();
 | 
					  LatticeFermion    ref(FGrid);    ref=Zero();
 | 
				
			||||||
  LatticeFermion    tmp(FGrid);    tmp=Zero();
 | 
					  LatticeFermion    tmp(FGrid);    tmp=Zero();
 | 
				
			||||||
  LatticeFermion    err(FGrid);    tmp=Zero();
 | 
					  LatticeFermion    err(FGrid);    tmp=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Only one non-zero (y)
 | 
					  // Only one non-zero (y)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,7 +138,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeFieldD Umu(&GRID);
 | 
					  LatticeGaugeFieldD Umu(&GRID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::ColdConfiguration(pRNG,Umu); // Unit gauge
 | 
					  SU<Nc>::ColdConfiguration(pRNG,Umu); // Unit gauge
 | 
				
			||||||
  //  Umu=Zero();
 | 
					  //  Umu=Zero();
 | 
				
			||||||
  ////////////////////////////////////////////////////
 | 
					  ////////////////////////////////////////////////////
 | 
				
			||||||
  // Wilson test
 | 
					  // Wilson test
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,11 +73,11 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeColourMatrix   xform2(&GRID); // Gauge xform
 | 
					  LatticeColourMatrix   xform2(&GRID); // Gauge xform
 | 
				
			||||||
  LatticeColourMatrix   xform3(&GRID); // Gauge xform
 | 
					  LatticeColourMatrix   xform3(&GRID); // Gauge xform
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  SU3::ColdConfiguration(pRNG,Umu); // Unit gauge
 | 
					  SU<Nc>::ColdConfiguration(pRNG,Umu); // Unit gauge
 | 
				
			||||||
  Uorg=Umu;
 | 
					  Uorg=Umu;
 | 
				
			||||||
  Urnd=Umu;
 | 
					  Urnd=Umu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::RandomGaugeTransform(pRNG,Urnd,g); // Unit gauge
 | 
					  SU<Nc>::RandomGaugeTransform(pRNG,Urnd,g); // Unit gauge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Real plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu);
 | 
					  Real plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu);
 | 
				
			||||||
  std::cout << " Initial plaquette "<<plaq << std::endl;
 | 
					  std::cout << " Initial plaquette "<<plaq << std::endl;
 | 
				
			||||||
@@ -121,7 +121,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  std::cout<< "* Testing non-unit configuration                                *" <<std::endl;
 | 
					  std::cout<< "* Testing non-unit configuration                                *" <<std::endl;
 | 
				
			||||||
  std::cout<< "*****************************************************************" <<std::endl;
 | 
					  std::cout<< "*****************************************************************" <<std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,Umu); // Unit gauge
 | 
					  SU<Nc>::HotConfiguration(pRNG,Umu); // Unit gauge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu);
 | 
					  plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu);
 | 
				
			||||||
  std::cout << " Initial plaquette "<<plaq << std::endl;
 | 
					  std::cout << " Initial plaquette "<<plaq << std::endl;
 | 
				
			||||||
@@ -136,7 +136,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  std::cout<< "*****************************************************************" <<std::endl;
 | 
					  std::cout<< "*****************************************************************" <<std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Umu=Urnd;
 | 
					  Umu=Urnd;
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,Umu); // Unit gauge
 | 
					  SU<Nc>::HotConfiguration(pRNG,Umu); // Unit gauge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu);
 | 
					  plaq=WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu);
 | 
				
			||||||
  std::cout << " Initial plaquette "<<plaq << std::endl;
 | 
					  std::cout << " Initial plaquette "<<plaq << std::endl;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -114,7 +114,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG4_2f(UGrid_2f);  RNG4_2f.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4_2f(UGrid_2f);  RNG4_2f.SeedFixedIntegers(seeds4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GparityGaugeField Umu_2f(UGrid_2f);
 | 
					  GparityGaugeField Umu_2f(UGrid_2f);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4_2f,Umu_2f);
 | 
					  SU<Nc>::HotConfiguration(RNG4_2f,Umu_2f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  StandardFermionField    src   (FGrid_2f); 
 | 
					  StandardFermionField    src   (FGrid_2f); 
 | 
				
			||||||
  StandardFermionField    tmpsrc(FGrid_2f); 
 | 
					  StandardFermionField    tmpsrc(FGrid_2f); 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField    ref(&Grid);    ref=Zero();
 | 
					  FermionField    ref(&Grid);    ref=Zero();
 | 
				
			||||||
  FermionField    tmp(&Grid);    tmp=Zero();
 | 
					  FermionField    tmp(&Grid);    tmp=Zero();
 | 
				
			||||||
  FermionField    err(&Grid);    tmp=Zero();
 | 
					  FermionField    err(&Grid);    tmp=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,14 +66,14 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "*********************************************"
 | 
					  std::cout << GridLogMessage << "*********************************************"
 | 
				
			||||||
            << std::endl;
 | 
					            << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "* Generators for SU(3)" << std::endl;
 | 
					  std::cout << GridLogMessage << "* Generators for SU(Nc" << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "*********************************************"
 | 
					  std::cout << GridLogMessage << "*********************************************"
 | 
				
			||||||
            << std::endl;
 | 
					            << std::endl;
 | 
				
			||||||
  SU3::printGenerators();
 | 
					  SU<Nc>::printGenerators();
 | 
				
			||||||
  std::cout << "Dimension of adjoint representation: "<< SU3Adjoint::Dimension << std::endl;
 | 
					  std::cout << "Dimension of adjoint representation: "<< SU<Nc>Adjoint::Dimension << std::endl;
 | 
				
			||||||
  SU3Adjoint::printGenerators();
 | 
					  SU<Nc>Adjoint::printGenerators();
 | 
				
			||||||
  SU3::testGenerators();
 | 
					  SU<Nc>::testGenerators();
 | 
				
			||||||
  SU3Adjoint::testGenerators();
 | 
					  SU<Nc>Adjoint::testGenerators();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout<<GridLogMessage<<"*********************************************"<<std::endl;
 | 
					  std::cout<<GridLogMessage<<"*********************************************"<<std::endl;
 | 
				
			||||||
  std::cout<<GridLogMessage<<"* Generators for SU(4)"<<std::endl;
 | 
					  std::cout<<GridLogMessage<<"* Generators for SU(4)"<<std::endl;
 | 
				
			||||||
@@ -87,22 +87,22 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
  // Projectors 
 | 
					  // Projectors 
 | 
				
			||||||
  GridParallelRNG gridRNG(grid);
 | 
					  GridParallelRNG gridRNG(grid);
 | 
				
			||||||
  gridRNG.SeedFixedIntegers(std::vector<int>({45,12,81,9}));
 | 
					  gridRNG.SeedFixedIntegers(std::vector<int>({45,12,81,9}));
 | 
				
			||||||
  SU3Adjoint::LatticeAdjMatrix Gauss(grid);
 | 
					  SU<Nc>Adjoint::LatticeAdjMatrix Gauss(grid);
 | 
				
			||||||
  SU3::LatticeAlgebraVector ha(grid);
 | 
					  SU<Nc>::LatticeAlgebraVector ha(grid);
 | 
				
			||||||
  SU3::LatticeAlgebraVector hb(grid);
 | 
					  SU<Nc>::LatticeAlgebraVector hb(grid);
 | 
				
			||||||
  random(gridRNG,Gauss);
 | 
					  random(gridRNG,Gauss);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "Start projectOnAlgebra" << std::endl;
 | 
					  std::cout << GridLogMessage << "Start projectOnAlgebra" << std::endl;
 | 
				
			||||||
  SU3Adjoint::projectOnAlgebra(ha, Gauss);
 | 
					  SU<Nc>Adjoint::projectOnAlgebra(ha, Gauss);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projectOnAlgebra" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projectOnAlgebra" << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "Start projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "Start projector" << std::endl;
 | 
				
			||||||
  SU3Adjoint::projector(hb, Gauss);
 | 
					  SU<Nc>Adjoint::projector(hb, Gauss);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "ReStart projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "ReStart projector" << std::endl;
 | 
				
			||||||
  SU3Adjoint::projector(hb, Gauss);
 | 
					  SU<Nc>Adjoint::projector(hb, Gauss);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
				
			||||||
  SU3::LatticeAlgebraVector diff = ha -hb;
 | 
					  SU<Nc>::LatticeAlgebraVector diff = ha -hb;
 | 
				
			||||||
  std::cout << GridLogMessage << "Difference: " << norm2(diff) << std::endl;
 | 
					  std::cout << GridLogMessage << "Difference: " << norm2(diff) << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -260,20 +260,20 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
  std::cout << GridLogMessage << "Test for the Two Index Symmetric projectors"
 | 
					  std::cout << GridLogMessage << "Test for the Two Index Symmetric projectors"
 | 
				
			||||||
      << std::endl;
 | 
					      << std::endl;
 | 
				
			||||||
  // Projectors 
 | 
					  // Projectors 
 | 
				
			||||||
  SU3TwoIndexSymm::LatticeTwoIndexMatrix Gauss2(grid);
 | 
					  SU<Nc>TwoIndexSymm::LatticeTwoIndexMatrix Gauss2(grid);
 | 
				
			||||||
  random(gridRNG,Gauss2);
 | 
					  random(gridRNG,Gauss2);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  std::cout << GridLogMessage << "Start projectOnAlgebra" << std::endl;
 | 
					  std::cout << GridLogMessage << "Start projectOnAlgebra" << std::endl;
 | 
				
			||||||
  SU3TwoIndexSymm::projectOnAlgebra(ha, Gauss2);
 | 
					  SU<Nc>TwoIndexSymm::projectOnAlgebra(ha, Gauss2);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projectOnAlgebra" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projectOnAlgebra" << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "Start projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "Start projector" << std::endl;
 | 
				
			||||||
  SU3TwoIndexSymm::projector(hb, Gauss2);
 | 
					  SU<Nc>TwoIndexSymm::projector(hb, Gauss2);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  std::cout << GridLogMessage << "ReStart projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "ReStart projector" << std::endl;
 | 
				
			||||||
  SU3TwoIndexSymm::projector(hb, Gauss2);
 | 
					  SU<Nc>TwoIndexSymm::projector(hb, Gauss2);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
				
			||||||
  SU3::LatticeAlgebraVector diff2 = ha - hb;
 | 
					  SU<Nc>::LatticeAlgebraVector diff2 = ha - hb;
 | 
				
			||||||
  std::cout << GridLogMessage << "Difference: " << norm2(diff) << std::endl;
 | 
					  std::cout << GridLogMessage << "Difference: " << norm2(diff) << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "*********************************************"
 | 
					  std::cout << GridLogMessage << "*********************************************"
 | 
				
			||||||
      << std::endl;
 | 
					      << std::endl;
 | 
				
			||||||
@@ -284,20 +284,20 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
  std::cout << GridLogMessage << "Test for the Two index anti-Symmetric projectors"
 | 
					  std::cout << GridLogMessage << "Test for the Two index anti-Symmetric projectors"
 | 
				
			||||||
      << std::endl;
 | 
					      << std::endl;
 | 
				
			||||||
  // Projectors
 | 
					  // Projectors
 | 
				
			||||||
  SU3TwoIndexAntiSymm::LatticeTwoIndexMatrix Gauss2a(grid);
 | 
					  SU<Nc>TwoIndexAntiSymm::LatticeTwoIndexMatrix Gauss2a(grid);
 | 
				
			||||||
  random(gridRNG,Gauss2a);
 | 
					  random(gridRNG,Gauss2a);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  std::cout << GridLogMessage << "Start projectOnAlgebra" << std::endl;
 | 
					  std::cout << GridLogMessage << "Start projectOnAlgebra" << std::endl;
 | 
				
			||||||
  SU3TwoIndexAntiSymm::projectOnAlgebra(ha, Gauss2a);
 | 
					  SU<Nc>TwoIndexAntiSymm::projectOnAlgebra(ha, Gauss2a);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projectOnAlgebra" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projectOnAlgebra" << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "Start projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "Start projector" << std::endl;
 | 
				
			||||||
  SU3TwoIndexAntiSymm::projector(hb, Gauss2a);
 | 
					  SU<Nc>TwoIndexAntiSymm::projector(hb, Gauss2a);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  std::cout << GridLogMessage << "ReStart projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "ReStart projector" << std::endl;
 | 
				
			||||||
  SU3TwoIndexAntiSymm::projector(hb, Gauss2a);
 | 
					  SU<Nc>TwoIndexAntiSymm::projector(hb, Gauss2a);
 | 
				
			||||||
  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
					  std::cout << GridLogMessage << "end projector" << std::endl;
 | 
				
			||||||
  SU3::LatticeAlgebraVector diff2a = ha - hb;
 | 
					  SU<Nc>::LatticeAlgebraVector diff2a = ha - hb;
 | 
				
			||||||
  std::cout << GridLogMessage << "Difference: " << norm2(diff2a) << std::endl;
 | 
					  std::cout << GridLogMessage << "Difference: " << norm2(diff2a) << std::endl;
 | 
				
			||||||
  std::cout << GridLogMessage << "*********************************************"
 | 
					  std::cout << GridLogMessage << "*********************************************"
 | 
				
			||||||
      << std::endl;
 | 
					      << std::endl;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -444,7 +444,7 @@ int main(int argc, char **argv) {
 | 
				
			|||||||
      // Lattice 12x12 GEMM
 | 
					      // Lattice 12x12 GEMM
 | 
				
			||||||
      scFooBar = scFoo * scBar;
 | 
					      scFooBar = scFoo * scBar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Benchmark some simple operations LatticeSU3 * Lattice SU3.
 | 
					      // Benchmark some simple operations LatticeSU<Nc> * Lattice SU<Nc>.
 | 
				
			||||||
      double t0, t1, flops;
 | 
					      double t0, t1, flops;
 | 
				
			||||||
      double bytes;
 | 
					      double bytes;
 | 
				
			||||||
      int ncall = 5000;
 | 
					      int ncall = 5000;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,7 +73,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    LatticeFermion    ref   (FGrid); ref = Zero();
 | 
					    LatticeFermion    ref   (FGrid); ref = Zero();
 | 
				
			||||||
    LatticeFermion    tmp   (FGrid); tmp = Zero();
 | 
					    LatticeFermion    tmp   (FGrid); tmp = Zero();
 | 
				
			||||||
    LatticeFermion    err   (FGrid); err = Zero();
 | 
					    LatticeFermion    err   (FGrid); err = Zero();
 | 
				
			||||||
    LatticeGaugeField Umu   (UGrid); SU3::HotConfiguration(RNG4, Umu);
 | 
					    LatticeGaugeField Umu   (UGrid); SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
    std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					    std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Only one non-zero (y)
 | 
					    // Only one non-zero (y)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,7 +55,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG  pRNG(grid); pRNG.SeedFixedIntegers(pseeds);
 | 
					  GridParallelRNG  pRNG(grid); pRNG.SeedFixedIntegers(pseeds);
 | 
				
			||||||
  GridSerialRNG    sRNG;       sRNG.SeedFixedIntegers(sseeds);
 | 
					  GridSerialRNG    sRNG;       sRNG.SeedFixedIntegers(sseeds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // SU3 colour operatoions
 | 
					  // SU<Nc> colour operatoions
 | 
				
			||||||
  LatticeColourMatrix link(grid);
 | 
					  LatticeColourMatrix link(grid);
 | 
				
			||||||
  LatticeColourMatrix staple(grid);
 | 
					  LatticeColourMatrix staple(grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -87,10 +87,10 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	link = PeekIndex<LorentzIndex>(Umu,mu);
 | 
						link = PeekIndex<LorentzIndex>(Umu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for( int subgroup=0;subgroup<SU3::su2subgroups();subgroup++ ) {
 | 
						for( int subgroup=0;subgroup<SU<Nc>::su2subgroups();subgroup++ ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  // update Even checkerboard
 | 
						  // update Even checkerboard
 | 
				
			||||||
	  SU3::SubGroupHeatBath(sRNG,pRNG,beta,link,staple,subgroup,20,mask);
 | 
						  SU<Nc>::SubGroupHeatBath(sRNG,pRNG,beta,link,staple,subgroup,20,mask);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField    err(&Grid);    tmp=Zero();
 | 
					  FermionField    err(&Grid);    tmp=Zero();
 | 
				
			||||||
  FermionField phi   (&Grid); random(pRNG,phi);
 | 
					  FermionField phi   (&Grid); random(pRNG,phi);
 | 
				
			||||||
  FermionField chi   (&Grid); random(pRNG,chi);
 | 
					  FermionField chi   (&Grid); random(pRNG,chi);
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField phi   (FGrid); random(pRNG5,phi);
 | 
					  FermionField phi   (FGrid); random(pRNG5,phi);
 | 
				
			||||||
  FermionField chi   (FGrid); random(pRNG5,chi);
 | 
					  FermionField chi   (FGrid); random(pRNG5,chi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::ColdConfiguration(pRNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::ColdConfiguration(pRNG4,Umu);
 | 
				
			||||||
  LatticeGaugeField Umua(UGrid); Umua=Umu;
 | 
					  LatticeGaugeField Umua(UGrid); Umua=Umu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=Ls;
 | 
					  double volume=Ls;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,7 +84,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField chi   (FGrid); random(pRNG5,chi);
 | 
					  FermionField chi   (FGrid); random(pRNG5,chi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(pRNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(pRNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /*
 | 
					  /*
 | 
				
			||||||
  for(int mu=1;mu<4;mu++){
 | 
					  for(int mu=1;mu<4;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField chi   (FGrid); random(pRNG5,chi);
 | 
					  FermionField chi   (FGrid); random(pRNG5,chi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeFieldF Umu(UGrid);
 | 
					  LatticeGaugeFieldF Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(pRNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(pRNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /*
 | 
					  /*
 | 
				
			||||||
  for(int mu=1;mu<4;mu++){
 | 
					  for(int mu=1;mu<4;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField    err(&Grid);    tmp=Zero();
 | 
					  FermionField    err(&Grid);    tmp=Zero();
 | 
				
			||||||
  FermionField phi   (&Grid); random(pRNG,phi);
 | 
					  FermionField phi   (&Grid); random(pRNG,phi);
 | 
				
			||||||
  FermionField chi   (&Grid); random(pRNG,chi);
 | 
					  FermionField chi   (&Grid); random(pRNG,chi);
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,7 +74,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
  FermionField chi(&Grid);
 | 
					  FermionField chi(&Grid);
 | 
				
			||||||
  random(pRNG, chi);
 | 
					  random(pRNG, chi);
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid);
 | 
					  LatticeGaugeField Umu(&Grid);
 | 
				
			||||||
  SU3::HotConfiguration(pRNG, Umu);
 | 
					  SU<Nc>::HotConfiguration(pRNG, Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4, &Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4, &Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume = 1;
 | 
					  double volume = 1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,7 +70,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeFermion    tmp(&Grid);    tmp=Zero();
 | 
					  LatticeFermion    tmp(&Grid);    tmp=Zero();
 | 
				
			||||||
  LatticeFermion    err(&Grid);    tmp=Zero();
 | 
					  LatticeFermion    err(&Grid);    tmp=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); 
 | 
					  LatticeGaugeField Umu(&Grid); 
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,Umu);
 | 
					  SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeFermion    ref(&Grid);    ref=Zero();
 | 
					  LatticeFermion    ref(&Grid);    ref=Zero();
 | 
				
			||||||
  LatticeFermion    tmp(&Grid);    tmp=Zero();
 | 
					  LatticeFermion    tmp(&Grid);    tmp=Zero();
 | 
				
			||||||
  LatticeFermion    err(&Grid);    tmp=Zero();
 | 
					  LatticeFermion    err(&Grid);    tmp=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -116,7 +116,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  LatticeGaugeFieldF UmuF(UGridF);
 | 
					  LatticeGaugeFieldF UmuF(UGridF);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  precisionChange(UmuF,Umu);
 | 
					  precisionChange(UmuF,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeFermion    ref(FGrid); ref=Zero();
 | 
					  LatticeFermion    ref(FGrid); ref=Zero();
 | 
				
			||||||
  LatticeFermion    tmp(FGrid);
 | 
					  LatticeFermion    tmp(FGrid);
 | 
				
			||||||
  LatticeFermion    err(FGrid);
 | 
					  LatticeFermion    err(FGrid);
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,7 +70,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG5(FGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
					  GridParallelRNG          RNG5(FGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
				
			||||||
  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.1;
 | 
					  RealD mass=0.1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,9 +71,9 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  std::string file("./ckpoint_lat.400");
 | 
					  std::string file("./ckpoint_lat.400");
 | 
				
			||||||
  NerscIO::readConfiguration(Umu,header,file);
 | 
					  NerscIO::readConfiguration(Umu,header,file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //  SU3::ColdConfiguration(RNG4,Umu);
 | 
					  //  SU<Nc>::ColdConfiguration(RNG4,Umu);
 | 
				
			||||||
  //  SU3::TepidConfiguration(RNG4,Umu);
 | 
					  //  SU<Nc>::TepidConfiguration(RNG4,Umu);
 | 
				
			||||||
  //  SU3::HotConfiguration(RNG4,Umu);
 | 
					  //  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  //  Umu=Zero();
 | 
					  //  Umu=Zero();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.1;
 | 
					  RealD mass=0.1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -108,8 +108,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::ColdConfiguration(Umu);
 | 
					  SU<Nc>::ColdConfiguration(Umu);
 | 
				
			||||||
  //  SU3::HotConfiguration(RNG4,Umu);
 | 
					  //  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.3;
 | 
					  RealD mass=0.3;
 | 
				
			||||||
  RealD M5  =1.0;
 | 
					  RealD M5  =1.0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,7 +73,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DomainWallEOFAFermionR Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf,  mf, mpv,  0.0, -1, M5);
 | 
					  DomainWallEOFAFermionR Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf,  mf, mpv,  0.0, -1, M5);
 | 
				
			||||||
  DomainWallEOFAFermionR Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0,  1, M5);
 | 
					  DomainWallEOFAFermionR Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0,  1, M5);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // GparityDomainWallFermionR::ImplParams params;
 | 
					  // GparityDomainWallFermionR::ImplParams params;
 | 
				
			||||||
  FermionAction::ImplParams params;
 | 
					  FermionAction::ImplParams params;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  MobiusEOFAFermionR Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf,  mf, mpv,  0.0, -1, M5, b, c);
 | 
					  MobiusEOFAFermionR Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf,  mf, mpv,  0.0, -1, M5, b, c);
 | 
				
			||||||
  MobiusEOFAFermionR Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0,  1, M5, b, c);
 | 
					  MobiusEOFAFermionR Rop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mpv, mf, mpv, -1.0,  1, M5, b, c);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FermionAction::ImplParams params;
 | 
					  FermionAction::ImplParams params;
 | 
				
			||||||
  FermionAction Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf,  mf, mpv,  0.0, -1, M5, b, c, params);
 | 
					  FermionAction Lop(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf,  mf, mpv,  0.0, -1, M5, b, c, params);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102,7 +102,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Initialize RHMC fermion operators
 | 
					  // Initialize RHMC fermion operators
 | 
				
			||||||
  DomainWallFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5);
 | 
					  DomainWallFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,7 +104,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Initialize RHMC fermion operators
 | 
					  // Initialize RHMC fermion operators
 | 
				
			||||||
  GparityDomainWallFermionR::ImplParams params;
 | 
					  GparityDomainWallFermionR::ImplParams params;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,7 +104,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Initialize RHMC fermion operators
 | 
					  // Initialize RHMC fermion operators
 | 
				
			||||||
  MobiusFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, b, c);
 | 
					  MobiusFermionR Ddwf_f(Umu, *FGrid, *FrbGrid, *UGrid, *UrbGrid, mf, M5, b, c);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -106,7 +106,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Random gauge field
 | 
					  // Random gauge field
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Initialize RHMC fermion operators
 | 
					  // Initialize RHMC fermion operators
 | 
				
			||||||
  GparityDomainWallFermionR::ImplParams params;
 | 
					  GparityDomainWallFermionR::ImplParams params;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,7 +59,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -93,7 +93,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,7 +60,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -94,7 +94,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
  LatticeFermion MphiPrime  (FGrid);
 | 
					  LatticeFermion MphiPrime  (FGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -105,7 +105,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0; mu<Nd; mu++){
 | 
					  for(int mu=0; mu<Nd; mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
					    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,8 +63,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  //  SU3::ColdConfiguration(pRNG,U);
 | 
					  //  SU<Nc>::ColdConfiguration(pRNG,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -112,7 +112,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Hmom -= real(sum(trace(mommu*mommu)));
 | 
					    Hmom -= real(sum(trace(mommu*mommu)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
  FermionField MphiPrime  (FGrid);
 | 
					  FermionField MphiPrime  (FGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -109,7 +109,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0; mu<Nd; mu++){
 | 
					  for(int mu=0; mu<Nd; mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
					    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(&Grid);
 | 
					  LatticeGaugeField U(&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,U);
 | 
					  SU<Nc>::HotConfiguration(pRNG,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  double beta = 1.0;
 | 
					  double beta = 1.0;
 | 
				
			||||||
  ConjugateWilsonGaugeActionR Action(beta);
 | 
					  ConjugateWilsonGaugeActionR Action(beta);
 | 
				
			||||||
@@ -80,7 +80,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(&Grid);
 | 
					  LatticeGaugeField U(&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,U);
 | 
					  SU<Nc>::HotConfiguration(pRNG,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  double beta = 1.0;
 | 
					  double beta = 1.0;
 | 
				
			||||||
  double c1   = 0.331;
 | 
					  double c1   = 0.331;
 | 
				
			||||||
@@ -82,7 +82,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,7 +63,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -100,7 +100,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -94,7 +94,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); 
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,7 +58,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    PokeIndex<LorentzIndex>(P, P_mu, mu);
 | 
					    PokeIndex<LorentzIndex>(P, P_mu, mu);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,U);
 | 
					  SU<Nc>::HotConfiguration(pRNG,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ConjugateGradient<LatticeGaugeField> CG(1.0e-8, 10000);
 | 
					  ConjugateGradient<LatticeGaugeField> CG(1.0e-8, 10000);
 | 
				
			||||||
@@ -95,7 +95,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  std::cout << GridLogMessage << "Update the U " << std::endl;
 | 
					  std::cout << GridLogMessage << "Update the U " << std::endl;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
  // Traceless antihermitian momentum; gaussian in lie algebra
 | 
					  // Traceless antihermitian momentum; gaussian in lie algebra
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); 
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); 
 | 
				
			||||||
    auto Umu = PeekIndex<LorentzIndex>(U, mu);
 | 
					    auto Umu = PeekIndex<LorentzIndex>(U, mu);
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
    Umu = expMat(mommu, dt, 12) * Umu;
 | 
					    Umu = expMat(mommu, dt, 12) * Umu;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,7 +60,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -96,7 +96,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
  LatticeFermion MphiPrime  (FGrid);
 | 
					  LatticeFermion MphiPrime  (FGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -107,7 +107,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0; mu<Nd; mu++){
 | 
					  for(int mu=0; mu<Nd; mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
					    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
  FermionField MphiPrime  (FGrid);
 | 
					  FermionField MphiPrime  (FGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -112,7 +112,7 @@ int main (int argc, char** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0; mu<Nd; mu++){
 | 
					  for(int mu=0; mu<Nd; mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
					    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
				
			||||||
    autoView( U_v , U, CpuRead);
 | 
					    autoView( U_v , U, CpuRead);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,7 +62,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -96,7 +96,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(&Grid);
 | 
					  LatticeGaugeField U(&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(pRNG,U);
 | 
					  SU<Nc>::HotConfiguration(pRNG,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  double beta = 1.0;
 | 
					  double beta = 1.0;
 | 
				
			||||||
  double c1   = -0.331;
 | 
					  double c1   = -0.331;
 | 
				
			||||||
@@ -82,7 +82,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeGaugeField U(&Grid);
 | 
					  LatticeGaugeField U(&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //SU2::HotConfiguration(pRNG,U);
 | 
					  //SU2::HotConfiguration(pRNG,U);
 | 
				
			||||||
  SU3::ColdConfiguration(pRNG,U);
 | 
					  SU<Nc>::ColdConfiguration(pRNG,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -98,7 +98,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); 
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Hmom -= real(sum(trace(mommu*mommu)));
 | 
					    Hmom -= real(sum(trace(mommu*mommu)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,8 +62,8 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(&Grid);
 | 
					  LatticeGaugeField U(&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(pRNG, U);
 | 
					  SU<Nc>::HotConfiguration(pRNG, U);
 | 
				
			||||||
  //SU3::ColdConfiguration(pRNG, U);// Clover term Zero()
 | 
					  //SU<Nc>::ColdConfiguration(pRNG, U);// Clover term Zero()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -101,7 +101,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
  for (int mu = 0; mu < Nd; mu++)
 | 
					  for (int mu = 0; mu < Nd; mu++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu);
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu);
 | 
				
			||||||
    Hmom -= real(sum(trace(mommu * mommu)));
 | 
					    Hmom -= real(sum(trace(mommu * mommu)));
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
					    PokeIndex<LorentzIndex>(mom, mommu, mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,7 +59,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField U(UGrid);
 | 
					  LatticeGaugeField U(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,U);
 | 
					  SU<Nc>::HotConfiguration(RNG4,U);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ////////////////////////////////////
 | 
					  ////////////////////////////////////
 | 
				
			||||||
  // Unmodified matrix element
 | 
					  // Unmodified matrix element
 | 
				
			||||||
@@ -109,7 +109,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
					    SU<Nc>::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
					    PokeIndex<LorentzIndex>(mom,mommu,mu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -293,7 +293,7 @@ int main (int argc, char ** argv) {
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    std::vector<int> seeds4({1,2,3,4});
 | 
					    std::vector<int> seeds4({1,2,3,4});
 | 
				
			||||||
    GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					    GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
    SU3::HotConfiguration(RNG4, Umu);
 | 
					    SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << "   Ls: " << Ls << std::endl;
 | 
					  std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt() << "   Ls: " << Ls << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG5rb(FrbGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
					  GridParallelRNG          RNG5rb(FrbGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); 
 | 
					  LatticeGaugeField Umu(UGrid); 
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
  RNG5.SeedFixedIntegers(seeds5);
 | 
					  RNG5.SeedFixedIntegers(seeds5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4, UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4, UGrid);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -280,7 +280,7 @@ void make_gauge(GaugeField &Umu, Grid::LatticePropagator &q1,Grid::LatticePropag
 | 
				
			|||||||
  Grid::GridCartesian *UGrid = (Grid::GridCartesian *)Umu.Grid();
 | 
					  Grid::GridCartesian *UGrid = (Grid::GridCartesian *)Umu.Grid();
 | 
				
			||||||
  Grid::GridParallelRNG RNG4(UGrid);
 | 
					  Grid::GridParallelRNG RNG4(UGrid);
 | 
				
			||||||
  RNG4.SeedFixedIntegers(seeds4);
 | 
					  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
  Grid::SU3::HotConfiguration(RNG4, Umu);
 | 
					  Grid::SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Propagator
 | 
					  // Propagator
 | 
				
			||||||
  Grid::gaussian(RNG4, q1);
 | 
					  Grid::gaussian(RNG4, q1);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -277,7 +277,7 @@ double calc_grid_p(Grid::LatticeGaugeField & Umu)
 | 
				
			|||||||
  Grid::GridCartesian         * UGrid   = (Grid::GridCartesian *) Umu.Grid();
 | 
					  Grid::GridCartesian         * UGrid   = (Grid::GridCartesian *) Umu.Grid();
 | 
				
			||||||
  Grid::GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  Grid::GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Grid::SU3::HotConfiguration(RNG4,Umu);
 | 
					  Grid::SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Grid::LatticeColourMatrix tmp(UGrid); 
 | 
					  Grid::LatticeColourMatrix tmp(UGrid); 
 | 
				
			||||||
  tmp = Grid::zero;
 | 
					  tmp = Grid::zero;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -502,7 +502,7 @@ void calc_grid(ChromaAction action,Grid::LatticeGaugeField & Umu, Grid::LatticeF
 | 
				
			|||||||
  Grid::gaussian(RNG5,src);
 | 
					  Grid::gaussian(RNG5,src);
 | 
				
			||||||
  Grid::gaussian(RNG5,res);
 | 
					  Grid::gaussian(RNG5,res);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Grid::SU3::HotConfiguration(RNG4,Umu);
 | 
					  Grid::SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /*
 | 
					  /*
 | 
				
			||||||
  Grid::LatticeColourMatrix U(UGrid);
 | 
					  Grid::LatticeColourMatrix U(UGrid);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -333,7 +333,7 @@ void make_gauge(GaugeField & Umu,FermionField &src)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  Grid::GridCartesian         * UGrid   = (Grid::GridCartesian *) Umu.Grid();
 | 
					  Grid::GridCartesian         * UGrid   = (Grid::GridCartesian *) Umu.Grid();
 | 
				
			||||||
  Grid::GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  Grid::GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
  Grid::SU3::HotConfiguration(RNG4,Umu);
 | 
					  Grid::SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  Grid::gaussian(RNG4,src);
 | 
					  Grid::gaussian(RNG4,src);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -348,7 +348,7 @@ void make_gauge(GaugeField &Umu, FermionField &src)
 | 
				
			|||||||
  Grid::GridCartesian *UGrid = (Grid::GridCartesian *)Umu._grid;
 | 
					  Grid::GridCartesian *UGrid = (Grid::GridCartesian *)Umu._grid;
 | 
				
			||||||
  Grid::GridParallelRNG RNG4(UGrid);
 | 
					  Grid::GridParallelRNG RNG4(UGrid);
 | 
				
			||||||
  RNG4.SeedFixedIntegers(seeds4);
 | 
					  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
  Grid::SU3::HotConfiguration(RNG4, Umu);
 | 
					  Grid::SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Fermion field
 | 
					  // Fermion field
 | 
				
			||||||
  Grid::gaussian(RNG4, src);
 | 
					  Grid::gaussian(RNG4, src);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,8 +47,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  LatticeFermion result(&Grid); result=Zero();
 | 
					  LatticeFermion result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid);
 | 
					  LatticeGaugeField Umu(&Grid);
 | 
				
			||||||
  //  SU3::HotConfiguration(pRNG,Umu);
 | 
					  //  SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
  SU3::ColdConfiguration(Umu);
 | 
					  SU<Nc>::ColdConfiguration(Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
					  std::vector<LatticeColourMatrix> U(4,&Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
					  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
				
			||||||
  LatticeFermion result(FGrid); result=Zero();
 | 
					  LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,7 +94,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          RNG5(FGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
					  GridParallelRNG          RNG5(FGrid);  RNG5.SeedFixedIntegers(seeds5);
 | 
				
			||||||
  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
					  GridParallelRNG          RNG4(UGrid);  RNG4.SeedFixedIntegers(seeds4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.1;
 | 
					  RealD mass=0.1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
  result = Zero();
 | 
					  result = Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid);
 | 
					  LatticeGaugeField Umu(UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4, Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4, Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt()
 | 
					  std::cout << GridLogMessage << "Lattice dimensions: " << GridDefaultLatt()
 | 
				
			||||||
            << "   Ls: " << Ls << std::endl;
 | 
					            << "   Ls: " << Ls << std::endl;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
					  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
				
			||||||
  LatticeFermion result(FGrid); result=Zero();
 | 
					  LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
					  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
				
			||||||
  LatticeFermion result(FGrid); result=Zero();
 | 
					  LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,7 +65,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
					  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
				
			||||||
  LatticeFermion result(FGrid); result=Zero();
 | 
					  LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,7 +68,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeFermion result(FGrid); result=Zero();
 | 
					  LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); 
 | 
					  LatticeGaugeField Umu(UGrid); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SU3::HotConfiguration(RNG4,Umu);
 | 
					  SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ConjugateResidual<LatticeFermion> CR(1.0e-6,10000);
 | 
					  ConjugateResidual<LatticeFermion> CR(1.0e-6,10000);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,7 +93,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  for(int s=0;s<nrhs;s++) random(pRNG5,src[s]);
 | 
					  for(int s=0;s<nrhs;s++) random(pRNG5,src[s]);
 | 
				
			||||||
  for(int s=0;s<nrhs;s++) result[s]=Zero();
 | 
					  for(int s=0;s<nrhs;s++) result[s]=Zero();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ///////////////////////////////////////////////////////////////
 | 
					  ///////////////////////////////////////////////////////////////
 | 
				
			||||||
  // Bounce these fields to disk
 | 
					  // Bounce these fields to disk
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -136,11 +136,11 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    std::cout << GridLogMessage << "Intialising 4D RNG "<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialising 4D RNG "<<std::endl;
 | 
				
			||||||
    pRNG.SeedFixedIntegers(seeds);
 | 
					    pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised 4D RNG "<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised 4D RNG "<<std::endl;
 | 
				
			||||||
    SU3::HotConfiguration(pRNG,Umu);
 | 
					    SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
				
			||||||
    //    std::cout << " Site zero "<< Umu[0]   <<std::endl;
 | 
					    //    std::cout << " Site zero "<< Umu[0]   <<std::endl;
 | 
				
			||||||
  } else { 
 | 
					  } else { 
 | 
				
			||||||
    SU3::ColdConfiguration(Umu);
 | 
					    SU<Nc>::ColdConfiguration(Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  /////////////////
 | 
					  /////////////////
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,7 +87,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  for(int s=0;s<nrhs;s++) random(pRNG5,src[s]);
 | 
					  for(int s=0;s<nrhs;s++) random(pRNG5,src[s]);
 | 
				
			||||||
  for(int s=0;s<nrhs;s++) result[s]=Zero();
 | 
					  for(int s=0;s<nrhs;s++) result[s]=Zero();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /////////////////
 | 
					  /////////////////
 | 
				
			||||||
  // MPI only sends
 | 
					  // MPI only sends
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
					  LatticeFermion    src(FGrid); random(RNG5,src);
 | 
				
			||||||
  LatticeFermion result(FGrid); result=Zero();
 | 
					  LatticeFermion result(FGrid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(RNG4,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(RNG4,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,UGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,7 +128,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    std::cout << GridLogMessage << "Intialising 4D RNG "<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialising 4D RNG "<<std::endl;
 | 
				
			||||||
    pRNG.SeedFixedIntegers(seeds);
 | 
					    pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised 4D RNG "<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised 4D RNG "<<std::endl;
 | 
				
			||||||
    SU3::HotConfiguration(pRNG,Umu);
 | 
					    SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
				
			||||||
  } 
 | 
					  } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,10 +93,10 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    GridParallelRNG pRNG(UGrid );  
 | 
					    GridParallelRNG pRNG(UGrid );  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pRNG.SeedFixedIntegers(seeds);
 | 
					    pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
    SU3::HotConfiguration(pRNG,Umu);
 | 
					    SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    SU3::ColdConfiguration(Umu);
 | 
					    SU<Nc>::ColdConfiguration(Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,10 +94,10 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    GridParallelRNG pRNG(UGrid );  
 | 
					    GridParallelRNG pRNG(UGrid );  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pRNG.SeedFixedIntegers(seeds);
 | 
					    pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
    SU3::HotConfiguration(pRNG,Umu);
 | 
					    SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    SU3::ColdConfiguration(Umu);
 | 
					    SU<Nc>::ColdConfiguration(Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,10 +93,10 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
    GridParallelRNG pRNG(UGrid );  
 | 
					    GridParallelRNG pRNG(UGrid );  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pRNG.SeedFixedIntegers(seeds);
 | 
					    pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
    SU3::HotConfiguration(pRNG,Umu);
 | 
					    SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the HOT Gauge Field"<<std::endl;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    SU3::ColdConfiguration(Umu);
 | 
					    SU<Nc>::ColdConfiguration(Umu);
 | 
				
			||||||
    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
					    std::cout << GridLogMessage << "Intialised the COLD Gauge Field"<<std::endl;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,7 +94,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  for(int s=0;s<nrhs;s++) random(pRNG5,src[s]);
 | 
					  for(int s=0;s<nrhs;s++) random(pRNG5,src[s]);
 | 
				
			||||||
  for(int s=0;s<nrhs;s++) result[s]=Zero();
 | 
					  for(int s=0;s<nrhs;s++) result[s]=Zero();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /////////////////
 | 
					  /////////////////
 | 
				
			||||||
  // MPI only sends
 | 
					  // MPI only sends
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,7 +87,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField result_o(FrbGrid); result_o=Zero(); 
 | 
					  FermionField result_o(FrbGrid); result_o=Zero(); 
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField result(FGrid); result=Zero();
 | 
					  FermionField result(FGrid); result=Zero();
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(UGrid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RealD mass=0.003;
 | 
					  RealD mass=0.003;
 | 
				
			||||||
  RealD c1=9.0/8.0;
 | 
					  RealD c1=9.0/8.0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,7 +63,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,7 +58,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  std::vector<int> seeds({1,2,3,4});
 | 
					  std::vector<int> seeds({1,2,3,4});
 | 
				
			||||||
  GridParallelRNG          pRNG(&Grid);  pRNG.SeedFixedIntegers(seeds);
 | 
					  GridParallelRNG          pRNG(&Grid);  pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FermionField    src(&Grid); random(pRNG,src);
 | 
					  FermionField    src(&Grid); random(pRNG,src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,7 +65,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  FermionField src(&Grid); random(pRNG,src);
 | 
					  FermionField src(&Grid); random(pRNG,src);
 | 
				
			||||||
  RealD nrm = norm2(src);
 | 
					  RealD nrm = norm2(src);
 | 
				
			||||||
  FermionField result(&Grid); result=Zero();
 | 
					  FermionField result(&Grid); result=Zero();
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,7 +62,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  GridParallelRNG          pRNG(&Grid);  pRNG.SeedFixedIntegers(seeds);
 | 
					  GridParallelRNG          pRNG(&Grid);  pRNG.SeedFixedIntegers(seeds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LatticeGaugeField Umu(&Grid); SU3::HotConfiguration(pRNG,Umu);
 | 
					  LatticeGaugeField Umu(&Grid); SU<Nc>::HotConfiguration(pRNG,Umu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  double volume=1;
 | 
					  double volume=1;
 | 
				
			||||||
  for(int mu=0;mu<Nd;mu++){
 | 
					  for(int mu=0;mu<Nd;mu++){
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user