33template <
class S,
class Representation = FundamentalRepresentation >
40 static const int Dimension = Representation::Dimension;
75 template<
class _Spinor>
82 mult(&phi(), &UU, &chi());
84 template<
class _Spinor>
91 mac(&phi(), &UU, &chi());
101 const GaugeLinkField &
U,
int mu)
108 const GaugeField &Uthin,
109 const GaugeField &Ufat) {
113 GaugeLinkField
U(GaugeGrid);
114 GaugeLinkField UU(GaugeGrid);
115 GaugeLinkField UUU(GaugeGrid);
116 GaugeLinkField Udag(GaugeGrid);
117 GaugeLinkField UUUdag(GaugeGrid);
118 for (
int mu = 0; mu <
Nd; mu++) {
132 if ( mu == 1 ) phases = where(
mod(x ,2)==(
Integer)0, phases,-phases);
133 if ( mu == 2 ) phases = where(
mod(lin_z,2)==(
Integer)0, phases,-phases);
134 if ( mu == 3 ) phases = where(
mod(lin_t,2)==(
Integer)0, phases,-phases);
156 UUUdag = UUUdag *phases;
165 GaugeLinkField link(mat.Grid());
#define accelerator_inline
auto Cshift(const Expression &expr, int dim, int shift) -> decltype(closure(expr))
void mac(Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
void mult(Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
void LatticeCoordinate(Lattice< iobj > &l, int mu)
auto outerProduct(const Lattice< ll > &lhs, const Lattice< rr > &rhs) -> Lattice< decltype(outerProduct(ll(), rr()))>
void PokeIndex(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< Index >(vobj(), 0))> &rhs, int i)
auto PeekIndex(const Lattice< vobj > &lhs, int i) -> Lattice< decltype(peekIndex< Index >(vobj(), i))>
Lattice< vobj > adj(const Lattice< vobj > &lhs)
auto TraceIndex(const Lattice< vobj > &lhs) -> Lattice< decltype(traceIndex< Index >(vobj()))>
Lattice< obj > mod(const Lattice< obj > &rhs_i, Integer y)
#define NAMESPACE_BEGIN(A)
SimpleCompressorGather< vobj, FaceGatherSimple > SimpleCompressor
StaggeredImpl< vComplexD, FundamentalRepresentation > StaggeredImplD
StaggeredImpl< vComplexF, FundamentalRepresentation > StaggeredImplF
StaggeredImpl< vComplex, FundamentalRepresentation > StaggeredImplR
accelerator_inline vobj coalescedRead(const vobj &__restrict__ vec, int lane=0)
static INTERNAL_PRECISION U
const CartesianStencilView< SiteSpinor, SiteSpinor, ImplParams > View_type
Lattice< SiteComplex > ComplexField
GridBase * Grid(void) const
static Lattice< covariant > CovShiftForward(const GaugeLinkField &Link, int mu, const Lattice< covariant > &field)
Lattice< SiteDoubledGaugeField > DoubledGaugeField
constexpr bool is_fundamental() const
SimpleCompressor< SiteSpinor > Compressor
static accelerator_inline void multLinkAdd(_Spinor &phi, const SiteDoubledGaugeField &U, const _Spinor &chi, int mu)
StencilImpl::View_type StencilView
iImplHalfSpinor< Simd > SiteHalfSpinor
Lattice< SiteSpinor > FermionField
void InsertGaugeField(DoubledGaugeField &U_ds, const GaugeLinkField &U, int mu)
iScalar< iScalar< iMatrix< vtype, Dimension > > > iImplPropagator
Lattice< SitePropagator > PropagatorField
iVector< iScalar< iMatrix< vtype, Dimension > >, Nds > iImplDoubledGaugeField
static accelerator_inline void loadLinkElement(Simd ®, ref &memory)
iImplDoubledGaugeField< Simd > SiteDoubledGaugeField
iImplSpinor< Simd > SiteSpinor
iImplPropagator< Simd > SitePropagator
iScalar< iScalar< iVector< vtype, Dimension > > > iImplHalfSpinor
void InsertForce5D(GaugeField &mat, FermionField &Btilde, FermionField Ã, int mu)
static const int Dimension
CartesianStencil< SiteSpinor, SiteSpinor, ImplParams > StencilImpl
PeriodicGaugeImpl< GaugeImplTypes< S, Dimension > > Gimpl
StaggeredImplParams ImplParams
void InsertForce4D(GaugeField &mat, FermionField &Btilde, FermionField &A, int mu)
static const bool LsVectorised
StaggeredImpl(const ImplParams &p=ImplParams())
static const bool isFundamental
void DoubleStore(GridBase *GaugeGrid, DoubledGaugeField &UUUds, DoubledGaugeField &Uds, const GaugeField &Uthin, const GaugeField &Ufat)
static accelerator_inline void multLink(_Spinor &phi, const SiteDoubledGaugeField &U, const _Spinor &chi, int mu)
INHERIT_GIMPL_TYPES(Gimpl)
iScalar< iScalar< iVector< vtype, Dimension > > > iImplSpinor