33template <
class S,
class Representation = FundamentalRepresentation >
38 static const int Dimension = Representation::Dimension;
95 vsplat(UU()()(i, j),
U(mu)()(i, j));
98 mult(&phi(), &UU(), &chi());
108 vsplat(UU()()(i, j),
U(mu)()(i, j));
111 mac(&phi(), &UU(), &chi());
121 const GaugeField &Uthin,
122 const GaugeField &Ufat)
125 GridBase * InputGrid = Uthin.Grid();
128 GaugeLinkField
U(InputGrid);
129 GaugeLinkField UU(InputGrid);
130 GaugeLinkField UUU(InputGrid);
131 GaugeLinkField Udag(InputGrid);
132 GaugeLinkField UUUdag(InputGrid);
134 for (
int mu = 0; mu <
Nd; mu++) {
148 if ( mu == 1 ) phases = where(
mod(x ,2)==(
Integer)0, phases,-phases);
149 if ( mu == 2 ) phases = where(
mod(lin_z,2)==(
Integer)0, phases,-phases);
150 if ( mu == 3 ) phases = where(
mod(lin_t,2)==(
Integer)0, phases,-phases);
170 UUUdag = UUUdag *phases;
#define accelerator_inline
auto Cshift(const Expression &expr, int dim, int shift) -> decltype(closure(expr))
accelerator_inline void vsplat(Grid_simd2< S, V > &ret, ABtype a, ABtype b)
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 PeekIndex(const Lattice< vobj > &lhs, int i) -> Lattice< decltype(peekIndex< Index >(vobj(), i))>
Lattice< vobj > adj(const Lattice< vobj > &lhs)
Lattice< obj > mod(const Lattice< obj > &rhs_i, Integer y)
#define NAMESPACE_BEGIN(A)
SimpleCompressorGather< vobj, FaceGatherSimple > SimpleCompressor
StaggeredVec5dImpl< vComplexF, FundamentalRepresentation > StaggeredVec5dImplF
StaggeredVec5dImpl< vComplexD, FundamentalRepresentation > StaggeredVec5dImplD
StaggeredVec5dImpl< vComplex, FundamentalRepresentation > StaggeredVec5dImplR
static INTERNAL_PRECISION U
const CartesianStencilView< SiteSpinor, SiteSpinor, ImplParams > View_type
Lattice< SiteComplex > ComplexField
static Lattice< covariant > CovShiftForward(const GaugeLinkField &Link, int mu, const Lattice< covariant > &field)
iScalar< iScalar< iMatrix< vtype, Dimension > > > iImplGaugeLink
Lattice< SitePropagator > PropagatorField
iVector< iScalar< iMatrix< vtype, Dimension > >, Nds > iImplDoubledGaugeField
Lattice< SiteDoubledGaugeField > DoubledGaugeField
iVector< iScalar< iMatrix< vtype, Dimension > >, Nd > iImplGaugeField
static accelerator_inline void loadLinkElement(Simd ®, ref &memory)
void InsertGaugeField(DoubledGaugeField &U_ds, const GaugeLinkField &U, int mu)
iImplGaugeField< typename Simd::scalar_type > SiteScalarGaugeField
void InsertForce4D(GaugeField &mat, FermionField &Btilde, FermionField &A, int mu)
StaggeredImplParams ImplParams
CartesianStencil< SiteSpinor, SiteSpinor, ImplParams > StencilImpl
StaggeredVec5dImpl(const ImplParams &p=ImplParams())
iImplPropagator< Simd > SitePropagator
static accelerator_inline void multLinkAdd(SiteHalfSpinor &phi, const SiteDoubledGaugeField &U, const SiteHalfSpinor &chi, int mu)
StencilImpl::View_type StencilView
static const bool LsVectorised
Lattice< SiteSpinor > FermionField
INHERIT_GIMPL_TYPES(Gimpl)
iScalar< iScalar< iVector< vtype, Dimension > > > iImplHalfSpinor
void DoubleStore(GridBase *GaugeGrid, DoubledGaugeField &UUUds, DoubledGaugeField &Uds, const GaugeField &Uthin, const GaugeField &Ufat)
iImplSpinor< Simd > SiteSpinor
static const int Dimension
static accelerator_inline void multLink(SiteHalfSpinor &phi, const SiteDoubledGaugeField &U, const SiteHalfSpinor &chi, int mu)
static const bool isFundamental
constexpr bool is_fundamental() const
iScalar< iScalar< iMatrix< vtype, Dimension > > > iImplPropagator
void InsertForce5D(GaugeField &mat, FermionField &Btilde, FermionField Ã, int mu)
PeriodicGaugeImpl< GaugeImplTypes< S, Dimension > > Gimpl
iImplDoubledGaugeField< typename Simd::scalar_type > SiteDoubledGaugeField
iScalar< iScalar< iVector< vtype, Dimension > > > iImplSpinor
iImplGaugeLink< typename Simd::scalar_type > SiteScalarGaugeLink
iImplHalfSpinor< Simd > SiteHalfSpinor
SimpleCompressor< SiteSpinor > Compressor