Lex gauge actions.

This commit is contained in:
Peter Boyle
2026-08-19 19:38:48 -04:00
parent 919d126af1
commit 665094d94b
2 changed files with 40 additions and 5 deletions
+22 -5
View File
@@ -60,8 +60,10 @@ NAMESPACE_BEGIN(Grid);
typedef typename Impl::SiteField SiteField; \ typedef typename Impl::SiteField SiteField; \
typedef typename Impl::Field Field; typedef typename Impl::Field Field;
// hardcodes the exponential approximation in the template // Order of the exponential approximation
template <class S, int Nrepresentation = Nc, int Nexp = 12, class Group = SU<Nc> > class GaugeImplTypes { const int NexpDefault = 12;
template <class S, int Nrepresentation = Nc, int Nexp = NexpDefault, class Group = SU<Nc> > class GaugeImplTypes {
public: public:
typedef S Simd; typedef S Simd;
typedef typename Simd::scalar_type scalar_type; typedef typename Simd::scalar_type scalar_type;
@@ -188,14 +190,29 @@ typedef GaugeImplTypes<vComplex, Nc> GimplTypesR;
typedef GaugeImplTypes<vComplexF, Nc> GimplTypesF; typedef GaugeImplTypes<vComplexF, Nc> GimplTypesF;
typedef GaugeImplTypes<vComplexD, Nc> GimplTypesD; typedef GaugeImplTypes<vComplexD, Nc> GimplTypesD;
typedef GaugeImplTypes<vComplex, Nc, 12, Sp<Nc> > SpGimplTypesR; typedef GaugeImplTypes<vComplex, Nc, NexpDefault, Sp<Nc> > SpGimplTypesR;
typedef GaugeImplTypes<vComplexF, Nc, 12, Sp<Nc> > SpGimplTypesF; typedef GaugeImplTypes<vComplexF, Nc, NexpDefault, Sp<Nc> > SpGimplTypesF;
typedef GaugeImplTypes<vComplexD, Nc, 12, Sp<Nc> > SpGimplTypesD; typedef GaugeImplTypes<vComplexD, Nc, NexpDefault, Sp<Nc> > SpGimplTypesD;
typedef GaugeImplTypes<vComplex, SU<Nc>::AdjointDimension> GimplAdjointTypesR; typedef GaugeImplTypes<vComplex, SU<Nc>::AdjointDimension> GimplAdjointTypesR;
typedef GaugeImplTypes<vComplexF, SU<Nc>::AdjointDimension> GimplAdjointTypesF; typedef GaugeImplTypes<vComplexF, SU<Nc>::AdjointDimension> GimplAdjointTypesF;
typedef GaugeImplTypes<vComplexD, SU<Nc>::AdjointDimension> GimplAdjointTypesD; typedef GaugeImplTypes<vComplexD, SU<Nc>::AdjointDimension> GimplAdjointTypesD;
/////////////////////////////////////////////////////////////////////////////
// Lexicographic gauge implementation types
/////////////////////////////////////////////////////////////////////////////
typedef GaugeImplTypes<sComplexF, Nc> lexGimplTypesF;
typedef GaugeImplTypes<sComplexD, Nc> lexGimplTypesD;
typedef GaugeImplTypes<sComplexF, Nc, NexpDefault, Sp<Nc> > lexSpGimplTypesF;
typedef GaugeImplTypes<sComplexD, Nc, NexpDefault, Sp<Nc> > lexSpGimplTypesD;
typedef GaugeImplTypes<sComplexF, SU<Nc>::AdjointDimension> lexGimplAdjointTypesF;
typedef GaugeImplTypes<sComplexD, SU<Nc>::AdjointDimension> lexGimplAdjointTypesD;
/////////////////////////////////////////////////////////////////////////////
// End lexicographic gauge implementation types
/////////////////////////////////////////////////////////////////////////////
@@ -197,6 +197,24 @@ typedef PeriodicGaugeImpl<SpGimplTypesR> SpPeriodicGimplR; // Real.. whichever p
typedef PeriodicGaugeImpl<SpGimplTypesF> SpPeriodicGimplF; // Float typedef PeriodicGaugeImpl<SpGimplTypesF> SpPeriodicGimplF; // Float
typedef PeriodicGaugeImpl<SpGimplTypesD> SpPeriodicGimplD; // Double typedef PeriodicGaugeImpl<SpGimplTypesD> SpPeriodicGimplD; // Double
/////////////////////////////////////////////////////////////////////////////
// Lexicographic gauge implementations
/////////////////////////////////////////////////////////////////////////////
typedef PeriodicGaugeImpl<lexGimplTypesF> lexPeriodicGimplF;
typedef PeriodicGaugeImpl<lexGimplTypesD> lexPeriodicGimplD;
typedef PeriodicGaugeImpl<lexGimplAdjointTypesF> lexPeriodicGimplAdjF;
typedef PeriodicGaugeImpl<lexGimplAdjointTypesD> lexPeriodicGimplAdjD;
typedef ConjugateGaugeImpl<lexGimplTypesF> lexConjugateGimplF;
typedef ConjugateGaugeImpl<lexGimplTypesD> lexConjugateGimplD;
typedef PeriodicGaugeImpl<lexSpGimplTypesF> lexSpPeriodicGimplF;
typedef PeriodicGaugeImpl<lexSpGimplTypesD> lexSpPeriodicGimplD;
/////////////////////////////////////////////////////////////////////////////
// End lexicographic gauge implementations
/////////////////////////////////////////////////////////////////////////////
NAMESPACE_END(Grid); NAMESPACE_END(Grid);