diff --git a/lib/qcd/action/gauge/GaugeImpl.h b/lib/qcd/action/gauge/GaugeImpl.h index fd3bf55a..5ef9f107 100644 --- a/lib/qcd/action/gauge/GaugeImpl.h +++ b/lib/qcd/action/gauge/GaugeImpl.h @@ -49,8 +49,8 @@ template class WilsonLoops; #define INHERIT_FIELD_TYPES(Impl) \ typedef typename Impl::Field Field; - -template class GaugeImplTypes { +// hard codes the exponential approximation in the template +template class GaugeImplTypes { public: typedef S Simd; @@ -75,6 +75,7 @@ public: } } + // HMC auxiliary functions static inline void generate_momenta(Field& P, GridParallelRNG& pRNG){ // specific for SU gauge fields LinkField Pmu(P._grid); @@ -85,15 +86,15 @@ public: } } - static inline void update_field(Field& P, Field& U, double ep, unsigned int Nexp){ - + + + static inline void update_field(Field& P, Field& U, double ep){ for (int mu = 0; mu < Nd; mu++) { auto Umu = PeekIndex(U, mu); auto Pmu = PeekIndex(P, mu); Umu = expMat(Pmu, ep, Nexp) * Umu; PokeIndex(U, ProjectOnGroup(Umu), mu); } - } static inline RealD FieldSquareNorm(Field& U){ diff --git a/lib/qcd/hmc/integrators/Integrator.h b/lib/qcd/hmc/integrators/Integrator.h index d2c1aef1..f5e5a37c 100644 --- a/lib/qcd/hmc/integrators/Integrator.h +++ b/lib/qcd/hmc/integrators/Integrator.h @@ -155,7 +155,8 @@ class Integrator { << " dt " << ep << " : t_U " << t_U << std::endl; } void update_U(MomentaField& Mom, Field& U, double ep) { - FieldImplementation::update_field(Mom, U, ep, Params.Nexp); + // exponential of Mom*U in the gauge fields case + FieldImplementation::update_field(Mom, U, ep); // Update the smeared fields, can be implemented as observer Smearer.set_Field(U);