From ea33b40e32133ae2a119d8cb0323d23fe996ef0f Mon Sep 17 00:00:00 2001 From: Alexis Provatas Date: Tue, 24 Feb 2026 11:59:49 +0000 Subject: [PATCH 1/4] acceptance rate hack in trajectory complete --- Grid/qcd/hmc/HMC.h | 2 +- Grid/qcd/observables/hmc_observable.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Grid/qcd/hmc/HMC.h b/Grid/qcd/hmc/HMC.h index c56ae6ad8c..963ecc75c9 100644 --- a/Grid/qcd/hmc/HMC.h +++ b/Grid/qcd/hmc/HMC.h @@ -289,7 +289,7 @@ class HybridMonteCarlo { std::cout << GridLogDebug << "Observables # " << obs << std::endl; std::cout << GridLogDebug << "Observables total " << Observables.size() << std::endl; std::cout << GridLogDebug << "Observables pointer " << Observables[obs] << std::endl; - Observables[obs]->TrajectoryComplete(traj + 1, TheIntegrator.Smearer, sRNG, pRNG); + Observables[obs]->TrajectoryComplete(traj + 1, TheIntegrator.Smearer, sRNG, pRNG, accept); } std::cout << GridLogHMC << ":::::::::::::::::::::::::::::::::::::::::::" << std::endl; } diff --git a/Grid/qcd/observables/hmc_observable.h b/Grid/qcd/observables/hmc_observable.h index 277ded28d1..f44c71953a 100644 --- a/Grid/qcd/observables/hmc_observable.h +++ b/Grid/qcd/observables/hmc_observable.h @@ -45,6 +45,25 @@ class HmcObservable { Field &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG) = 0; + + // allow backward compatibility with current observables that do not have + // acceptance argument + virtual void TrajectoryComplete(int traj, + ConfigurationBase &SmartConfig, + GridSerialRNG &sRNG, + GridParallelRNG &pRNG, + bool accept) + { + TrajectoryComplete(traj,SmartConfig,sRNG,pRNG); // Unsmeared observable + }; + virtual void TrajectoryComplete(int traj, + Field &U, + GridSerialRNG &sRNG, + GridParallelRNG &pRNG, + bool accept) + { + TrajectoryComplete(traj, U, sRNG, pRNG); + }; }; NAMESPACE_END(Grid); From 296da18d40954820327450948a026a880d39a4f0 Mon Sep 17 00:00:00 2001 From: Alexis Provatas Date: Wed, 22 Apr 2026 17:02:58 +0100 Subject: [PATCH 2/4] add doxygen for HmcObservable class --- Grid/qcd/observables/hmc_observable.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Grid/qcd/observables/hmc_observable.h b/Grid/qcd/observables/hmc_observable.h index f44c71953a..78c1ed1a66 100644 --- a/Grid/qcd/observables/hmc_observable.h +++ b/Grid/qcd/observables/hmc_observable.h @@ -32,7 +32,20 @@ directory NAMESPACE_BEGIN(Grid); template -class HmcObservable { +class HmcObservable +/*! @brief HMC Observable class, + * HMC observables inherit the method + * TrajectoryComplete from here, which + * is used to run the computation of + * on-the-fly observables. + * + * Expects: + * an integer traj : trajectory number + * a reference to ConfigurationBase : the gauge field configuration + * a reference to a serial RNG + * a reference to a parallel RNG + */ +{ public: virtual void TrajectoryComplete(int traj, ConfigurationBase &SmartConfig, From ec0f1a7bc982cc0f00baa0961e6302c2ba9f9598 Mon Sep 17 00:00:00 2001 From: Alexis Provatas Date: Wed, 22 Apr 2026 17:16:01 +0100 Subject: [PATCH 3/4] doxygen HybridMonteCarlo class --- Grid/qcd/hmc/HMC.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Grid/qcd/hmc/HMC.h b/Grid/qcd/hmc/HMC.h index 963ecc75c9..2f765c48bf 100644 --- a/Grid/qcd/hmc/HMC.h +++ b/Grid/qcd/hmc/HMC.h @@ -93,7 +93,20 @@ struct HMCparameters: Serializable { }; template -class HybridMonteCarlo { +class HybridMonteCarlo +/*! @brief The HMC class, + * which performs the metropolis + * accept/reject step and molecular dynamics + * integration step. + * + * As introduced in Duane, Kennedy, Pendleton & Roweth, + * Phys. Letters B, 2, 1987 + * https://doi.org/10.1016/0370-2693(87)91197-X + * + * See Rothe, Third Edition, Section 16.7 + * 'The Hybrid Monte Carlo Algorithm' + */ +{ private: const HMCparameters Params; From e09ebd65bea4dc411198097ce6884b9685e601c6 Mon Sep 17 00:00:00 2001 From: Alexis Provatas Date: Thu, 11 Jun 2026 16:39:50 +0100 Subject: [PATCH 4/4] make trajectory complete smartconfig version default to field version --- Grid/qcd/observables/hmc_observable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Grid/qcd/observables/hmc_observable.h b/Grid/qcd/observables/hmc_observable.h index 78c1ed1a66..31a992da30 100644 --- a/Grid/qcd/observables/hmc_observable.h +++ b/Grid/qcd/observables/hmc_observable.h @@ -67,7 +67,7 @@ class HmcObservable GridParallelRNG &pRNG, bool accept) { - TrajectoryComplete(traj,SmartConfig,sRNG,pRNG); // Unsmeared observable + TrajectoryComplete(traj,SmartConfig.get_U(false),sRNG,pRNG,accept); // Unsmeared observable }; virtual void TrajectoryComplete(int traj, Field &U,