From 665094d94b249ecf065f2219bd0eb3ee3637723d Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Wed, 19 Aug 2026 19:38:48 -0400 Subject: [PATCH] Lex gauge actions. --- Grid/qcd/action/gauge/GaugeImplTypes.h | 27 ++++++++++++++++---- Grid/qcd/action/gauge/GaugeImplementations.h | 18 +++++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/Grid/qcd/action/gauge/GaugeImplTypes.h b/Grid/qcd/action/gauge/GaugeImplTypes.h index 95b692905..9ee0553b5 100644 --- a/Grid/qcd/action/gauge/GaugeImplTypes.h +++ b/Grid/qcd/action/gauge/GaugeImplTypes.h @@ -60,8 +60,10 @@ NAMESPACE_BEGIN(Grid); typedef typename Impl::SiteField SiteField; \ typedef typename Impl::Field Field; -// hardcodes the exponential approximation in the template -template > class GaugeImplTypes { +// Order of the exponential approximation +const int NexpDefault = 12; + +template > class GaugeImplTypes { public: typedef S Simd; typedef typename Simd::scalar_type scalar_type; @@ -188,14 +190,29 @@ typedef GaugeImplTypes GimplTypesR; typedef GaugeImplTypes GimplTypesF; typedef GaugeImplTypes GimplTypesD; -typedef GaugeImplTypes > SpGimplTypesR; -typedef GaugeImplTypes > SpGimplTypesF; -typedef GaugeImplTypes > SpGimplTypesD; +typedef GaugeImplTypes > SpGimplTypesR; +typedef GaugeImplTypes > SpGimplTypesF; +typedef GaugeImplTypes > SpGimplTypesD; typedef GaugeImplTypes::AdjointDimension> GimplAdjointTypesR; typedef GaugeImplTypes::AdjointDimension> GimplAdjointTypesF; typedef GaugeImplTypes::AdjointDimension> GimplAdjointTypesD; +///////////////////////////////////////////////////////////////////////////// +// Lexicographic gauge implementation types +///////////////////////////////////////////////////////////////////////////// +typedef GaugeImplTypes lexGimplTypesF; +typedef GaugeImplTypes lexGimplTypesD; + +typedef GaugeImplTypes > lexSpGimplTypesF; +typedef GaugeImplTypes > lexSpGimplTypesD; + +typedef GaugeImplTypes::AdjointDimension> lexGimplAdjointTypesF; +typedef GaugeImplTypes::AdjointDimension> lexGimplAdjointTypesD; +///////////////////////////////////////////////////////////////////////////// +// End lexicographic gauge implementation types +///////////////////////////////////////////////////////////////////////////// + diff --git a/Grid/qcd/action/gauge/GaugeImplementations.h b/Grid/qcd/action/gauge/GaugeImplementations.h index 62141c83f..47abbaf98 100644 --- a/Grid/qcd/action/gauge/GaugeImplementations.h +++ b/Grid/qcd/action/gauge/GaugeImplementations.h @@ -197,6 +197,24 @@ typedef PeriodicGaugeImpl SpPeriodicGimplR; // Real.. whichever p typedef PeriodicGaugeImpl SpPeriodicGimplF; // Float typedef PeriodicGaugeImpl SpPeriodicGimplD; // Double +///////////////////////////////////////////////////////////////////////////// +// Lexicographic gauge implementations +///////////////////////////////////////////////////////////////////////////// +typedef PeriodicGaugeImpl lexPeriodicGimplF; +typedef PeriodicGaugeImpl lexPeriodicGimplD; + +typedef PeriodicGaugeImpl lexPeriodicGimplAdjF; +typedef PeriodicGaugeImpl lexPeriodicGimplAdjD; + +typedef ConjugateGaugeImpl lexConjugateGimplF; +typedef ConjugateGaugeImpl lexConjugateGimplD; + +typedef PeriodicGaugeImpl lexSpPeriodicGimplF; +typedef PeriodicGaugeImpl lexSpPeriodicGimplD; +///////////////////////////////////////////////////////////////////////////// +// End lexicographic gauge implementations +///////////////////////////////////////////////////////////////////////////// + NAMESPACE_END(Grid);