mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Merge branch 'develop' into feature/hadrons
This commit is contained in:
		@@ -28,6 +28,9 @@ Author: Peter Boyle <paboyle@ph.ed.ac.uk>
 | 
			
		||||
    /*  END LEGAL */
 | 
			
		||||
#include <Grid/Grid.h>
 | 
			
		||||
 | 
			
		||||
using namespace Grid;
 | 
			
		||||
using namespace Grid::QCD;
 | 
			
		||||
 | 
			
		||||
int main (int argc, char ** argv)
 | 
			
		||||
{
 | 
			
		||||
  std::vector<int> seeds({1,2,3,4});
 | 
			
		||||
@@ -82,6 +85,7 @@ int main (int argc, char ** argv)
 | 
			
		||||
 | 
			
		||||
  Uorg = Uorg - Umu;
 | 
			
		||||
  std::cout << " Norm Difference "<< norm2(Uorg) << std::endl;
 | 
			
		||||
  std::cout << " Norm "<< norm2(Umu) << std::endl;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  std::cout<< "*****************************************************************" <<std::endl;
 | 
			
		||||
 
 | 
			
		||||
@@ -40,12 +40,6 @@ namespace Grid{
 | 
			
		||||
				    double, StoppingCondition,
 | 
			
		||||
				    int, MaxCGIterations,
 | 
			
		||||
				    bool, ApplySmearing);
 | 
			
		||||
 | 
			
		||||
    //template <class ReaderClass >
 | 
			
		||||
    //FermionParameters(Reader<ReaderClass>& Reader){
 | 
			
		||||
    //  read(Reader, "Mobius", *this);
 | 
			
		||||
    //}
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
@@ -113,9 +107,17 @@ int main(int argc, char **argv) {
 | 
			
		||||
  bool ApplySmearing = MyParams.Mobius.ApplySmearing;
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  // Use this if you want to tweak the default decomposition
 | 
			
		||||
  // commented out as very architecture speficic
 | 
			
		||||
  
 | 
			
		||||
  //std::vector<int> simd_lanes({2,2,1,1});
 | 
			
		||||
 | 
			
		||||
  // Grid from the command line
 | 
			
		||||
  TheHMC.Resources.AddFourDimGrid("gauge");
 | 
			
		||||
  // Grid from the command line arguments --grid and --mpi
 | 
			
		||||
  // drop the simd_lanes argument to fall back to the default decomposition for the SIMD lanes
 | 
			
		||||
  
 | 
			
		||||
  //TheHMC.Resources.AddFourDimGrid("gauge", simd_lanes); // tweak the SIMD lanes
 | 
			
		||||
  TheHMC.Resources.AddFourDimGrid("gauge"); // use default simd lanes decomposition
 | 
			
		||||
  
 | 
			
		||||
  // Possibile to create the module by hand 
 | 
			
		||||
  // hardcoding parameters or using a Reader
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@ using namespace Grid;
 | 
			
		||||
using namespace Grid::QCD;
 | 
			
		||||
 | 
			
		||||
template <class Impl>
 | 
			
		||||
class MagLogger : public HmcObservable<typename Impl::Field> {
 | 
			
		||||
class MagMeas : public HmcObservable<typename Impl::Field> {
 | 
			
		||||
public:
 | 
			
		||||
  typedef typename Impl::Field Field;
 | 
			
		||||
  typedef typename Impl::Simd::scalar_type Trace;
 | 
			
		||||
@@ -72,13 +72,13 @@ private:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <class Impl>
 | 
			
		||||
class MagMod: public ObservableModule<MagLogger<Impl>, NoParameters>{
 | 
			
		||||
  typedef ObservableModule<MagLogger<Impl>, NoParameters> ObsBase;
 | 
			
		||||
class MagMod: public ObservableModule<MagMeas<Impl>, NoParameters>{
 | 
			
		||||
  typedef ObservableModule<MagMeas<Impl>, NoParameters> ObsBase;
 | 
			
		||||
  using ObsBase::ObsBase; // for constructors
 | 
			
		||||
  
 | 
			
		||||
  // acquire resource
 | 
			
		||||
  virtual void initialize(){
 | 
			
		||||
    this->ObservablePtr.reset(new MagLogger<Impl>());
 | 
			
		||||
    this->ObservablePtr.reset(new MagMeas<Impl>());
 | 
			
		||||
  }
 | 
			
		||||
public:
 | 
			
		||||
  MagMod(): ObsBase(NoParameters()){}
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,14 @@ int main(int argc, char **argv) {
 | 
			
		||||
  typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
 | 
			
		||||
  typedef TopologicalChargeMod<HMCWrapper::ImplPolicy> QObs;
 | 
			
		||||
  TheHMC.Resources.AddObservable<PlaqObs>();
 | 
			
		||||
  TheHMC.Resources.AddObservable<QObs>();
 | 
			
		||||
  TopologyObsParameters TopParams;
 | 
			
		||||
  TopParams.interval = 5;
 | 
			
		||||
  TopParams.do_smearing = true;
 | 
			
		||||
  TopParams.Smearing.steps = 200;
 | 
			
		||||
  TopParams.Smearing.step_size = 0.01;
 | 
			
		||||
  TopParams.Smearing.meas_interval = 50;
 | 
			
		||||
  TopParams.Smearing.maxTau = 2.0; 
 | 
			
		||||
  TheHMC.Resources.AddObservable<QObs>(TopParams);
 | 
			
		||||
  //////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
  /////////////////////////////////////////////////////////////
 | 
			
		||||
 
 | 
			
		||||
@@ -75,7 +75,7 @@ int main (int argc, char ** argv)
 | 
			
		||||
  LatticeGaugeField Umu(UGrid); SU3::HotConfiguration(pRNG,Umu);
 | 
			
		||||
 | 
			
		||||
  RealD mass=0.003;
 | 
			
		||||
  ImprovedStaggeredFermion5DR Ds(Umu,Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass);
 | 
			
		||||
  ImprovedStaggeredFermion5DR Ds(Umu,Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass); 
 | 
			
		||||
  MdagMLinearOperator<ImprovedStaggeredFermion5DR,FermionField> HermOp(Ds);
 | 
			
		||||
 | 
			
		||||
  ConjugateGradient<FermionField> CG(1.0e-8,10000);
 | 
			
		||||
@@ -99,21 +99,27 @@ int main (int argc, char ** argv)
 | 
			
		||||
  std::cout << GridLogMessage << " Calling 5d CG for "<<Ls <<" right hand sides" <<std::endl;
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
  result=zero;
 | 
			
		||||
  Ds.ZeroCounters();
 | 
			
		||||
  CG(HermOp,src,result);
 | 
			
		||||
  Ds.Report();
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
  std::cout << GridLogMessage << " Calling multiRHS CG for "<<Ls <<" right hand sides" <<std::endl;
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
  result=zero;
 | 
			
		||||
  Ds.ZeroCounters();
 | 
			
		||||
  mCG(HermOp,src,result);
 | 
			
		||||
  Ds.Report();
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
  std::cout << GridLogMessage << " Calling Block CG for "<<Ls <<" right hand sides" <<std::endl;
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
  result=zero;
 | 
			
		||||
  Ds.ZeroCounters();
 | 
			
		||||
  BCGrQ(HermOp,src,result);
 | 
			
		||||
  Ds.Report();
 | 
			
		||||
  std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user