mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-30 19:44:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*************************************************************************************
 | |
| 
 | |
| Grid physics library, www.github.com/paboyle/Grid
 | |
| 
 | |
| Source file: ./tests/Test_hmc_WilsonFermionGauge.cc
 | |
| 
 | |
| Copyright (C) 2015
 | |
| 
 | |
| Author: Peter Boyle <pabobyle@ph.ed.ac.uk>
 | |
| Author: neo <cossu@post.kek.jp>
 | |
| Author: Guido Cossu <guido.cossu@ed.ac.uk>
 | |
| 
 | |
| This program is free software; you can redistribute it and/or modify
 | |
| it under the terms of the GNU General Public License as published by
 | |
| the Free Software Foundation; either version 2 of the License, or
 | |
| (at your option) any later version.
 | |
| 
 | |
| This program is distributed in the hope that it will be useful,
 | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| GNU General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License along
 | |
| with this program; if not, write to the Free Software Foundation, Inc.,
 | |
| 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | |
| 
 | |
| See the full license in the file "LICENSE" in the top level distribution
 | |
| directory
 | |
| *************************************************************************************/
 | |
| /*  END LEGAL */
 | |
| #include <Grid/Grid.h>
 | |
| 
 | |
| int main(int argc, char **argv) 
 | |
| {
 | |
|   using namespace Grid;
 | |
| 
 | |
|   Grid_init(&argc, &argv);
 | |
|   GridLogLayout();
 | |
| 
 | |
|   typedef GenericSpHMCRunner<MinimumNorm2> HMCWrapper;
 | |
|   HMCWrapper TheHMC;
 | |
| 
 | |
|   TheHMC.Resources.AddFourDimGrid("gauge");
 | |
| 
 | |
|   // Checkpointer definition
 | |
|   CheckpointerParameters CPparams;  
 | |
|   CPparams.config_prefix = "ckpoint_lat";
 | |
|   CPparams.rng_prefix = "ckpoint_rng";
 | |
|   CPparams.saveInterval = 5;
 | |
|   CPparams.format = "IEEE64BIG";
 | |
|   
 | |
|   TheHMC.Resources.LoadNerscCheckpointer(CPparams);
 | |
| 
 | |
|   RNGModuleParameters RNGpar;
 | |
|   RNGpar.serial_seeds = "12 22 32 42 52";
 | |
|   RNGpar.parallel_seeds = "76 77 87 79 70";
 | |
|   TheHMC.Resources.SetRNGSeeds(RNGpar);
 | |
| 
 | |
|   // Construct observables
 | |
|   // here there is too much indirection 
 | |
|   typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
 | |
|   typedef TopologicalChargeMod<HMCWrapper::ImplPolicy> QObs;
 | |
|   TheHMC.Resources.AddObservable<PlaqObs>();
 | |
|   TopologyObsParameters TopParams;
 | |
|   TopParams.interval = 5;
 | |
|   TopParams.do_smearing = true;
 | |
|   TopParams.Smearing.init_step_size = 0.01;
 | |
|   TopParams.Smearing.tolerance = 1e-5;
 | |
|   //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);
 | |
|   //////////////////////////////////////////////
 | |
| 
 | |
|   /////////////////////////////////////////////////////////////
 | |
|   // Collect actions, here use more encapsulation
 | |
|   // need wrappers of the fermionic classes 
 | |
|   // that have a complex construction
 | |
|   // standard
 | |
|   RealD beta = 8.0 ;
 | |
|   SpWilsonGaugeActionR Waction(beta);
 | |
|   
 | |
|   ActionLevel<HMCWrapper::Field> Level1(1);
 | |
|   Level1.push_back(&Waction);
 | |
|   //Level1.push_back(WGMod.getPtr());
 | |
|   TheHMC.TheAction.push_back(Level1);
 | |
|   /////////////////////////////////////////////////////////////
 | |
| 
 | |
|   // HMC parameters are serialisable 
 | |
|   TheHMC.Parameters.MD.MDsteps = 10;
 | |
|   TheHMC.Parameters.MD.trajL   = 1.0;
 | |
| 
 | |
|   TheHMC.ReadCommandLine(argc, argv); // these can be parameters from file
 | |
|   TheHMC.Run();  // no smearing
 | |
| 
 | |
|   Grid_finalize();
 | |
| 
 | |
| } // main
 |