64 vol4=
_grid->oSites();
65 Stencil.BuildSurfaceList(LLs,vol4);
100 for (
int mu = 0; mu <
Nd; mu++) {
149 for (
int mu = 0; mu <
Nd; mu++) {
174 out.Checkerboard() = in.Checkerboard();
182 out.Checkerboard() = in.Checkerboard();
190 if (in.Checkerboard() ==
Odd) {
199 if (in.Checkerboard() ==
Odd) {
209 out.Checkerboard() = in.Checkerboard();
210 typename FermionField::scalar_type scal(
mass);
217 out.Checkerboard() = in.Checkerboard();
224 out.Checkerboard() = in.Checkerboard();
225 out = (1.0 / (
mass)) * in;
231 out.Checkerboard() = in.Checkerboard();
242 const FermionField &A,
const FermionField &
B,
int dag)
246 Compressor compressor;
248 FermionField Btilde(
B.Grid());
249 FermionField Atilde(
B.Grid());
252 st.HaloExchange(
B, compressor);
254 for (
int mu = 0; mu <
Nd; mu++) {
264 Kernels::DhopDirKernel(st, U_v, UUU_v, st.CommBuf(), sss, sss, B_v, Btilde_v, mu,1);
299 mat.Checkerboard() =
U.Checkerboard();
311 assert(V.Checkerboard() ==
Even);
312 assert(
U.Checkerboard() ==
Odd);
313 mat.Checkerboard() =
Odd;
325 assert(V.Checkerboard() ==
Odd);
326 assert(
U.Checkerboard() ==
Even);
327 mat.Checkerboard() =
Even;
338 out.Checkerboard() = in.Checkerboard();
349 assert(in.Checkerboard() ==
Even);
350 out.Checkerboard() =
Odd;
361 assert(in.Checkerboard() ==
Odd);
362 out.Checkerboard() =
Even;
382 Compressor compressor;
383 Stencil.HaloExchange(in, compressor);
389 Kernels::DhopDirKernel(Stencil, Umu_v, UUUmu_v, Stencil.CommBuf(), sss, sss, in_v, out_v, dir, disp);
396 DoubledGaugeField &
U,
397 DoubledGaugeField &UUU,
398 const FermionField &in,
399 FermionField &out,
int dag)
408 DoubledGaugeField &
U,
409 DoubledGaugeField &UUU,
410 const FermionField &in,
411 FermionField &out,
int dag)
413 Compressor compressor;
414 int len =
U.Grid()->oSites();
417 st.HaloGather(in,compressor);
419 std::vector<std::vector<CommsRequest_t> > requests;
420 st.CommunicateBegin(requests);
422 st.CommsMergeSHM(compressor);
433 st.CommunicateComplete(requests);
436 st.CommsMerge(compressor);
448 DoubledGaugeField &
U,
449 DoubledGaugeField &UUU,
450 const FermionField &in,
451 FermionField &out,
int dag)
455 Compressor compressor;
456 st.HaloExchange(in, compressor);
470 PropagatorField &q_in_2,
471 PropagatorField &q_out,
472 PropagatorField &src,
481 PropagatorField &q_out,
482 PropagatorField &src,
487 ComplexField &lattice_cmplx)
auto Cshift(const Expression &expr, int dim, int shift) -> decltype(closure(expr))
void axpy(Lattice< vobj > &ret, sobj a, const Lattice< vobj > &x, const Lattice< vobj > &y)
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)
void pickCheckerboard(int cb, Lattice< vobj > &half, const Lattice< vobj > &full)
#define autoView(l_v, l, mode)
#define NAMESPACE_BEGIN(A)
static constexpr int DaggerYes
static constexpr int DaggerNo
#define thread_for(i, num,...)
static INTERNAL_PRECISION U
static const std::vector< int > displacements
static const std::vector< int > directions
void ImportGauge(const GaugeField &_Uthin)
DoubledGaugeField UUUmuEven
void M(const FermionField &in, FermionField &out)
void Meooe(const FermionField &in, FermionField &out)
void MooeeInvDag(const FermionField &in, FermionField &out)
void DhopDerivEO(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void MooeeInv(const FermionField &in, FermionField &out)
void DhopDir(const FermionField &in, FermionField &out, int dir, int disp)
void Mdag(const FermionField &in, FermionField &out)
void MdirAll(const FermionField &in, std::vector< FermionField > &out)
void Mdir(const FermionField &in, FermionField &out, int dir, int disp)
DoubledGaugeField UmuEven
void Mooee(const FermionField &in, FermionField &out)
void ImportGaugeSimple(const GaugeField &_UUU, const GaugeField &_U)
void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, PropagatorField &srct, Current curr_type, unsigned int mu, unsigned int tmin, unsigned int tmax, ComplexField &lattice_cmplx)
void MooeeDag(const FermionField &in, FermionField &out)
void DhopDerivOE(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void Dhop(const FermionField &in, FermionField &out, int dag)
void DhopOE(const FermionField &in, FermionField &out, int dag)
void DerivInternal(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, GaugeField &mat, const FermionField &A, const FermionField &B, int dag)
void DhopDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
GridBase * GaugeGrid(void)
void DhopEO(const FermionField &in, FermionField &out, int dag)
void DhopInternalSerialComms(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag)
void MeooeDag(const FermionField &in, FermionField &out)
void DhopInternal(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag)
DoubledGaugeField UUUmuOdd
void DhopInternalOverlappedComms(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag)
StaggeredKernels< Impl > Kernels
ImprovedStaggeredFermion(GaugeField &_Uthin, GaugeField &_Ufat, GridCartesian &Fgrid, GridRedBlackCartesian &Hgrid, RealD _mass, RealD _c1, RealD _c2, RealD _u0, const ImplParams &p=ImplParams())
void CopyGaugeCheckerboards(void)
void ContractConservedCurrent(PropagatorField &q_in_1, PropagatorField &q_in_2, PropagatorField &q_out, PropagatorField &src, Current curr_type, unsigned int mu)
void DhopImproved(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag, int interior, int exterior)