1#ifndef GRID_QCD_GPARITY_FLAVOUR_H
2#define GRID_QCD_GPARITY_FLAVOUR_H
26 static constexpr unsigned int nSigma = 12;
27 static const std::array<const char *, nSigma>
name;
28 static const std::array<const GparityFlavour, 3>
sigma_mu;
29 static const std::array<const GparityFlavour, 6>
sigma_all;
103 ret(1,0) =
timesI(rhs(0,0));
104 ret(1,1) =
timesI(rhs(0,1));
109 ret(0,0) =
timesI(rhs(0,1));
111 ret(1,0) =
timesI(rhs(1,1));
124 ret(0,0) =
timesI(rhs(1,0));
125 ret(0,1) =
timesI(rhs(1,1));
133 ret(0,1) =
timesI(rhs(0,0));
135 ret(1,1) =
timesI(rhs(1,0));
155 ret(1,0) = -rhs(1,0);
156 ret(1,1) = -rhs(1,1);
162 ret(0,1) = -rhs(0,1);
164 ret(1,1) = -rhs(1,1);
177 ret(0,0) = -rhs(0,0);
178 ret(0,1) = -rhs(0,1);
185 ret(0,0) = -rhs(0,0);
187 ret(1,0) = -rhs(1,0);
228 ret(0,0) = -rhs(0,0);
229 ret(0,1) = -rhs(0,1);
230 ret(1,0) = -rhs(1,0);
231 ret(1,1) = -rhs(1,1);
236 ret(0,0) = -rhs(0,0);
237 ret(0,1) = -rhs(0,1);
238 ret(1,0) = -rhs(1,0);
239 ret(1,1) = -rhs(1,1);
253 ret(1) = 0.5*
timesI(rhs(0)) + 0.5*rhs(1);
258 ret(0,0) = 0.5*rhs(0,0) + 0.5*
timesMinusI(rhs(1,0));
259 ret(0,1) = 0.5*rhs(0,1) + 0.5*
timesMinusI(rhs(1,1));
260 ret(1,0) = 0.5*
timesI(rhs(0,0)) + 0.5*rhs(1,0);
261 ret(1,1) = 0.5*
timesI(rhs(0,1)) + 0.5*rhs(1,1);
266 ret(0,0) = 0.5*rhs(0,0) + 0.5*
timesI(rhs(0,1));
267 ret(0,1) = 0.5*
timesMinusI(rhs(0,0)) + 0.5*rhs(0,1);
268 ret(1,0) = 0.5*rhs(1,0) + 0.5*
timesI(rhs(1,1));
269 ret(1,1) = 0.5*
timesMinusI(rhs(1,0)) + 0.5*rhs(1,1);
276 ret(0) = -0.5*rhs(0) + 0.5*
timesI(rhs(1));
282 ret(0,0) = -0.5*rhs(0,0) + 0.5*
timesI(rhs(1,0));
283 ret(0,1) = -0.5*rhs(0,1) + 0.5*
timesI(rhs(1,1));
284 ret(1,0) = 0.5*
timesMinusI(rhs(0,0)) - 0.5*rhs(1,0);
285 ret(1,1) = 0.5*
timesMinusI(rhs(0,1)) - 0.5*rhs(1,1);
290 ret(0,0) = -0.5*rhs(0,0) + 0.5*
timesMinusI(rhs(0,1));
291 ret(0,1) = 0.5*
timesI(rhs(0,0)) - 0.5*rhs(0,1);
292 ret(1,0) = -0.5*rhs(1,0) + 0.5*
timesMinusI(rhs(1,1));
293 ret(1,1) = 0.5*
timesI(rhs(1,0)) - 0.5*rhs(1,1);
306 ret(0) = 0.5*rhs(0) + 0.5*
timesI(rhs(1));
312 ret(0,0) = 0.5*rhs(0,0) + 0.5*
timesI(rhs(1,0));
313 ret(0,1) = 0.5*rhs(0,1) + 0.5*
timesI(rhs(1,1));
314 ret(1,0) = 0.5*
timesMinusI(rhs(0,0)) + 0.5*rhs(1,0);
315 ret(1,1) = 0.5*
timesMinusI(rhs(0,1)) + 0.5*rhs(1,1);
320 ret(0,0) = 0.5*rhs(0,0) + 0.5*
timesMinusI(rhs(0,1));
321 ret(0,1) = 0.5*
timesI(rhs(0,0)) + 0.5*rhs(0,1);
322 ret(1,0) = 0.5*rhs(1,0) + 0.5*
timesMinusI(rhs(1,1));
323 ret(1,1) = 0.5*
timesI(rhs(1,0)) + 0.5*rhs(1,1);
331 ret(1) = 0.5*
timesI(rhs(0)) - 0.5*rhs(1);
336 ret(0,0) = -0.5*rhs(0,0) + 0.5*
timesMinusI(rhs(1,0));
337 ret(0,1) = -0.5*rhs(0,1) + 0.5*
timesMinusI(rhs(1,1));
338 ret(1,0) = 0.5*
timesI(rhs(0,0)) - 0.5*rhs(1,0);
339 ret(1,1) = 0.5*
timesI(rhs(0,1)) - 0.5*rhs(1,1);
344 ret(0,0) = -0.5*rhs(0,0) + 0.5*
timesI(rhs(0,1));
345 ret(0,1) = 0.5*
timesMinusI(rhs(0,0)) - 0.5*rhs(0,1);
346 ret(1,0) = -0.5*rhs(1,0) + 0.5*
timesI(rhs(1,1));
347 ret(1,1) = 0.5*
timesMinusI(rhs(1,0)) - 0.5*rhs(1,1);
367 case GparityFlavour::Algebra::SigmaX:
369 case GparityFlavour::Algebra::MinusSigmaX:
371 case GparityFlavour::Algebra::SigmaY:
373 case GparityFlavour::Algebra::MinusSigmaY:
375 case GparityFlavour::Algebra::SigmaZ:
377 case GparityFlavour::Algebra::MinusSigmaZ:
379 case GparityFlavour::Algebra::Identity:
381 case GparityFlavour::Algebra::MinusIdentity:
383 case GparityFlavour::Algebra::ProjPlus:
385 case GparityFlavour::Algebra::MinusProjPlus:
387 case GparityFlavour::Algebra::ProjMinus:
389 case GparityFlavour::Algebra::MinusProjMinus:
405 case GparityFlavour::Algebra::SigmaX:
407 case GparityFlavour::Algebra::MinusSigmaX:
409 case GparityFlavour::Algebra::SigmaY:
411 case GparityFlavour::Algebra::MinusSigmaY:
413 case GparityFlavour::Algebra::SigmaZ:
415 case GparityFlavour::Algebra::MinusSigmaZ:
417 case GparityFlavour::Algebra::Identity:
419 case GparityFlavour::Algebra::MinusIdentity:
421 case GparityFlavour::Algebra::ProjPlus:
423 case GparityFlavour::Algebra::MinusProjPlus:
425 case GparityFlavour::Algebra::ProjMinus:
427 case GparityFlavour::Algebra::MinusProjMinus:
443 case GparityFlavour::Algebra::SigmaX:
445 case GparityFlavour::Algebra::MinusSigmaX:
447 case GparityFlavour::Algebra::SigmaY:
449 case GparityFlavour::Algebra::MinusSigmaY:
451 case GparityFlavour::Algebra::SigmaZ:
453 case GparityFlavour::Algebra::MinusSigmaZ:
455 case GparityFlavour::Algebra::Identity:
457 case GparityFlavour::Algebra::MinusIdentity:
459 case GparityFlavour::Algebra::ProjPlus:
461 case GparityFlavour::Algebra::MinusProjPlus:
463 case GparityFlavour::Algebra::ProjMinus:
465 case GparityFlavour::Algebra::MinusProjMinus:
#define accelerator_inline
accelerator_inline void multFlavourMinusProjPlus(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourMinusSigmaY(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourSigmaZ(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourMinusProjMinus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourMinusIdentity(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void multFlavourMinusSigmaY(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourMinusProjMinus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourMinusSigmaX(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourMinusSigmaZ(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourSigmaY(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourProjPlus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourIdentity(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void multFlavourProjPlus(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourProjMinus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourMinusSigmaZ(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourSigmaZ(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourSigmaX(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourMinusSigmaX(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourProjMinus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourIdentity(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourSigmaY(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourSigmaZ(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourMinusSigmaZ(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourProjMinus(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void multFlavourMinusProjMinus(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourMinusIdentity(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourMinusProjPlus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourMinusIdentity(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourIdentity(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void multFlavourSigmaX(iVector< vtype, Ngp > &ret, const iVector< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourMinusSigmaX(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourSigmaX(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline auto operator*(const GparityFlavour &G, const iVector< vtype, Ngp > &arg) -> typename std::enable_if< matchGridTensorIndex< iVector< vtype, Ngp >, GparityFlavourTensorIndex >::value, iVector< vtype, Ngp > >::type
accelerator_inline void rmultFlavourSigmaY(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void rmultFlavourProjPlus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourMinusSigmaY(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void lmultFlavourMinusProjPlus(iMatrix< vtype, Ngp > &ret, const iMatrix< vtype, Ngp > &rhs)
accelerator_inline void timesMinusI(Grid_simd2< S, V > &ret, const Grid_simd2< S, V > &in)
accelerator_inline void timesI(Grid_simd2< S, V > &ret, const Grid_simd2< S, V > &in)
#define NAMESPACE_BEGIN(A)
const int GparityFlavourTensorIndex
static const std::array< const char *, nSigma > name
static constexpr unsigned int nSigma
accelerator GparityFlavour(Algebra initg)
static const std::array< const GparityFlavour, 6 > sigma_all
GRID_SERIALIZABLE_ENUM(Algebra, undef, SigmaX, 0, MinusSigmaX, 1, SigmaY, 2, MinusSigmaY, 3, SigmaZ, 4, MinusSigmaZ, 5, Identity, 6, MinusIdentity, 7, ProjPlus, 8, MinusProjPlus, 9, ProjMinus, 10, MinusProjMinus, 11)
static const std::array< const GparityFlavour, 3 > sigma_mu