mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 14:04:32 +00:00 
			
		
		
		
	Cleanup
This commit is contained in:
		@@ -94,8 +94,8 @@ class HMCWrapperTemplate: public HMCRunnerBase<ReaderClass> {
 | 
			
		||||
      Parameters.StartingType = arg;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (GridCmdOptionExists(argv, argv + argc, "--StartTrajectory")) {
 | 
			
		||||
      arg = GridCmdOptionPayload(argv, argv + argc, "--StartTrajectory");
 | 
			
		||||
    if (GridCmdOptionExists(argv, argv + argc, "--StartingTrajectory")) {
 | 
			
		||||
      arg = GridCmdOptionPayload(argv, argv + argc, "--StartingTrajectory");
 | 
			
		||||
      std::vector<int> ivec(0);
 | 
			
		||||
      GridCmdOptionIntVector(arg, ivec);
 | 
			
		||||
      Parameters.StartTrajectory = ivec[0];
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ directory
 | 
			
		||||
#define HMC_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <list>
 | 
			
		||||
 | 
			
		||||
namespace Grid {
 | 
			
		||||
namespace QCD {
 | 
			
		||||
@@ -158,7 +159,7 @@ class HybridMonteCarlo {
 | 
			
		||||
  GridParallelRNG &pRNG; 
 | 
			
		||||
 | 
			
		||||
  Field &Ucur;
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  IntegratorType &TheIntegrator;
 | 
			
		||||
	ObsListType Observables;
 | 
			
		||||
 | 
			
		||||
@@ -195,7 +196,7 @@ class HybridMonteCarlo {
 | 
			
		||||
  /////////////////////////////////////////////////////////
 | 
			
		||||
  // Evolution
 | 
			
		||||
  /////////////////////////////////////////////////////////
 | 
			
		||||
  RealD evolve_step(Field &U) {
 | 
			
		||||
  RealD evolve_hmc_step(Field &U) {
 | 
			
		||||
    TheIntegrator.refresh(U, pRNG);  // set U and initialize P and phi's
 | 
			
		||||
 | 
			
		||||
    RealD H0 = TheIntegrator.S(U);  // initial state action
 | 
			
		||||
@@ -211,11 +212,14 @@ class HybridMonteCarlo {
 | 
			
		||||
 | 
			
		||||
    std::cout.precision(17);
 | 
			
		||||
    std::cout << GridLogMessage << "Total H after trajectory  = " << H1
 | 
			
		||||
              << "  dH = " << H1 - H0 << "\n";
 | 
			
		||||
	      << "  dH = " << H1 - H0 << "\n";
 | 
			
		||||
    std::cout.precision(current_precision);
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    return (H1 - H0);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
 public:
 | 
			
		||||
  /////////////////////////////////////////
 | 
			
		||||
@@ -224,7 +228,7 @@ class HybridMonteCarlo {
 | 
			
		||||
  HybridMonteCarlo(HMCparameters _Pams, IntegratorType &_Int,
 | 
			
		||||
                   GridSerialRNG &_sRNG, GridParallelRNG &_pRNG, 
 | 
			
		||||
                   ObsListType _Obs, Field &_U)
 | 
			
		||||
      : Params(_Pams), TheIntegrator(_Int), sRNG(_sRNG), pRNG(_pRNG), Observables(_Obs), Ucur(_U) {}
 | 
			
		||||
    : Params(_Pams), TheIntegrator(_Int), sRNG(_sRNG), pRNG(_pRNG), Observables(_Obs), Ucur(_U) {}
 | 
			
		||||
  ~HybridMonteCarlo(){};
 | 
			
		||||
 | 
			
		||||
  void evolve(void) {
 | 
			
		||||
@@ -241,13 +245,13 @@ class HybridMonteCarlo {
 | 
			
		||||
      std::cout << GridLogMessage << "-- # Trajectory = " << traj << "\n";
 | 
			
		||||
      if (traj < Params.StartTrajectory + Params.NoMetropolisUntil) {
 | 
			
		||||
      	std::cout << GridLogMessage << "-- Thermalization" << std::endl;
 | 
			
		||||
    	}
 | 
			
		||||
 | 
			
		||||
    	double t0=usecond();
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      double t0=usecond();
 | 
			
		||||
      Ucopy = Ucur;
 | 
			
		||||
 | 
			
		||||
      DeltaH = evolve_step(Ucopy);
 | 
			
		||||
 | 
			
		||||
      DeltaH = evolve_hmc_step(Ucopy);
 | 
			
		||||
      // Metropolis-Hastings test
 | 
			
		||||
      bool accept = true;
 | 
			
		||||
      if (traj >= Params.StartTrajectory + Params.NoMetropolisUntil) {
 | 
			
		||||
        accept = metropolis_test(DeltaH);
 | 
			
		||||
@@ -255,9 +259,11 @@ class HybridMonteCarlo {
 | 
			
		||||
      	std::cout << GridLogMessage << "Skipping Metropolis test" << std::endl;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (accept) {
 | 
			
		||||
        Ucur = Ucopy;
 | 
			
		||||
      }
 | 
			
		||||
      if (accept)
 | 
			
		||||
        Ucur = Ucopy; 
 | 
			
		||||
      
 | 
			
		||||
     
 | 
			
		||||
      
 | 
			
		||||
      double t1=usecond();
 | 
			
		||||
      std::cout << GridLogMessage << "Total time for trajectory (s): " << (t1-t0)/1e6 << std::endl;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -75,6 +75,13 @@ class HMCResourceManager {
 | 
			
		||||
  bool have_RNG;
 | 
			
		||||
  bool have_CheckPointer;
 | 
			
		||||
 | 
			
		||||
  void output_vector_string(const std::vector<std::string> &vs){
 | 
			
		||||
    for (auto &i: vs)
 | 
			
		||||
      std::cout << i << " ";
 | 
			
		||||
    std::cout << std::endl;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 public:
 | 
			
		||||
  HMCResourceManager() : have_RNG(false), have_CheckPointer(false) {}
 | 
			
		||||
 | 
			
		||||
@@ -93,7 +100,11 @@ class HMCResourceManager {
 | 
			
		||||
    std::string cp_type;
 | 
			
		||||
    read(Read,"name", cp_type);
 | 
			
		||||
    std::cout << "Registered types " << std::endl;
 | 
			
		||||
    std::cout << CPfactory.getBuilderList() << std::endl;
 | 
			
		||||
    // NOTE: operator << is not overloaded for std::vector<string> 
 | 
			
		||||
    // so it complains here
 | 
			
		||||
    //std::cout << CPfactory.getBuilderList() << std::endl;
 | 
			
		||||
    output_vector_string(CPfactory.getBuilderList());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    CP = CPfactory.create(cp_type, Read);
 | 
			
		||||
    CP->print_parameters();
 | 
			
		||||
@@ -110,7 +121,7 @@ class HMCResourceManager {
 | 
			
		||||
      std::string obs_type;
 | 
			
		||||
      read(Read,"name", obs_type);
 | 
			
		||||
      std::cout << "Registered types " << std::endl;
 | 
			
		||||
      std::cout << ObsFactory.getBuilderList() << std::endl;
 | 
			
		||||
      output_vector_string(ObsFactory.getBuilderList() );
 | 
			
		||||
 | 
			
		||||
      ObservablesList.emplace_back(ObsFactory.create(obs_type, Read));
 | 
			
		||||
      ObservablesList[ObservablesList.size() - 1]->print_parameters();
 | 
			
		||||
@@ -271,8 +282,8 @@ private:
 | 
			
		||||
    do{
 | 
			
		||||
      auto &ActionFactory = HMC_ActionModuleFactory<gauge_string, typename ImplementationPolicy::Field, ReaderClass>::getInstance(); 
 | 
			
		||||
      std::string action_type;
 | 
			
		||||
      Read.readDefault("name", action_type);
 | 
			
		||||
      std::cout << ActionFactory.getBuilderList() << std::endl;  // temporary
 | 
			
		||||
      Read.readDefault("name", action_type); 
 | 
			
		||||
      output_vector_string(ActionFactory.getBuilderList() );
 | 
			
		||||
      ActionsList.emplace(m, ActionFactory.create(action_type, Read));
 | 
			
		||||
    } while (Read.nextElement("Action"));
 | 
			
		||||
    ActionsList.find(m)->second->print_parameters();    
 | 
			
		||||
 
 | 
			
		||||
@@ -39,8 +39,8 @@ namespace QCD {
 | 
			
		||||
 | 
			
		||||
class IntegratorParameters: Serializable {
 | 
			
		||||
public:
 | 
			
		||||
	GRID_SERIALIZABLE_CLASS_MEMBERS(IntegratorParameters,
 | 
			
		||||
		std::string, name,      // name of the integrator
 | 
			
		||||
        GRID_SERIALIZABLE_CLASS_MEMBERS(IntegratorParameters,
 | 
			
		||||
                std::string, name,      // name of the integrator
 | 
			
		||||
    unsigned int, MDsteps,  // number of outer steps
 | 
			
		||||
    RealD, trajL,           // trajectory length
 | 
			
		||||
  )
 | 
			
		||||
@@ -55,7 +55,7 @@ public:
 | 
			
		||||
  template <class ReaderClass, typename std::enable_if<isReader<ReaderClass>::value, int >::type = 0 >
 | 
			
		||||
  IntegratorParameters(ReaderClass & Reader){
 | 
			
		||||
    std::cout << "Reading integrator\n";
 | 
			
		||||
  	read(Reader, "Integrator", *this);
 | 
			
		||||
        read(Reader, "Integrator", *this);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void print_parameters() const {
 | 
			
		||||
@@ -177,16 +177,16 @@ class Integrator {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void print_actions(){
 | 
			
		||||
  	std::cout << GridLogMessage << ":::::::::::::::::::::::::::::::::::::::::" << std::endl;
 | 
			
		||||
  	std::cout << GridLogMessage << "[Integrator] Action summary: "<<std::endl;
 | 
			
		||||
  	for (int level = 0; level < as.size(); ++level) {
 | 
			
		||||
  		std::cout << GridLogMessage << "[Integrator] ---- Level: "<< level << std::endl;
 | 
			
		||||
  		for (int actionID = 0; actionID < as[level].actions.size(); ++actionID) {
 | 
			
		||||
  			std::cout << GridLogMessage << "["<< as[level].actions.at(actionID)->action_name() << "] ID: " << actionID << std::endl;
 | 
			
		||||
  			std::cout << as[level].actions.at(actionID)->LogParameters();
 | 
			
		||||
  		}
 | 
			
		||||
  	}
 | 
			
		||||
  	std::cout << GridLogMessage << ":::::::::::::::::::::::::::::::::::::::::"<< std::endl;
 | 
			
		||||
        std::cout << GridLogMessage << ":::::::::::::::::::::::::::::::::::::::::" << std::endl;
 | 
			
		||||
        std::cout << GridLogMessage << "[Integrator] Action summary: "<<std::endl;
 | 
			
		||||
        for (int level = 0; level < as.size(); ++level) {
 | 
			
		||||
                std::cout << GridLogMessage << "[Integrator] ---- Level: "<< level << std::endl;
 | 
			
		||||
                for (int actionID = 0; actionID < as[level].actions.size(); ++actionID) {
 | 
			
		||||
                        std::cout << GridLogMessage << "["<< as[level].actions.at(actionID)->action_name() << "] ID: " << actionID << std::endl;
 | 
			
		||||
                        std::cout << as[level].actions.at(actionID)->LogParameters();
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
        std::cout << GridLogMessage << ":::::::::::::::::::::::::::::::::::::::::"<< std::endl;
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -209,7 +209,7 @@ class Integrator {
 | 
			
		||||
    assert(P._grid == U._grid);
 | 
			
		||||
    std::cout << GridLogIntegrator << "Integrator refresh\n";
 | 
			
		||||
    FieldImplementation::generate_momenta(P, pRNG);
 | 
			
		||||
 
 | 
			
		||||
     
 | 
			
		||||
    // Update the smeared fields, can be implemented as observer
 | 
			
		||||
    // necessary to keep the fields updated even after a reject
 | 
			
		||||
    // of the Metropolis
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user