7 using namespace QDP::Hints;
75 multi1d<LatticeColorMatrix> u_pl(
Nd);
76 multi1d<LatticeColorMatrix> u_mn(
Nd);
86 u_pl[
mu] *= Real(0.5);
87 u_mn[
mu] *= Real(0.5);
147 const LatticeFermion&
psi,
174 const LatticeFermion&
psi,
199 const LatticeFermion&
psi,
206 LatticeFermion tmp1; moveToFastMemoryHint(tmp1);
207 LatticeFermion
tmp2; moveToFastMemoryHint(
tmp2);
208 LatticeFermion
tmp3; moveToFastMemoryHint(
tmp3);
209 Real mquarter = -0.25;
223 chi[rb[1]] += mquarter*tmp1;
232 const LatticeFermion&
chi,
const LatticeFermion&
psi,
242 std::cerr << __func__ <<
": need to fix up SLIC derivatives\n";
246 multi1d<LatticeColorMatrix> ds_tmp(
Nd);
265 multi1d<LatticeColorMatrix> ds_tmp(
Nd);
279 const LatticeFermion&
chi,
const LatticeFermion&
psi,
289 slic_fs->getFermBC()->modify(ds_u);
292 slic_fs->getFermBC()->zero(ds_u);
295 ds_u[
mu] *= Real(-0.5);
303 const LatticeFermion&
chi,
const LatticeFermion&
psi,
313 slic_fs->getFermBC()->modify(ds_u);
316 slic_fs->getFermBC()->zero(ds_u);
319 ds_u[
mu] *= Real(-0.5);
328 const LatticeFermion&
chi,
const LatticeFermion&
psi,
334 multi1d<LatticeColorMatrix> ds_tmp(
Nd);
347 return cbsite_flops*(Layout::sitesOnNode()/2);
unsigned long nFlops() const
Return flops performed by the operator()
void derivTrLn(multi1d< U > &ds_u, enum PlusMinus isign, int cb) const
Take derivative of TrLn D.
void deriv(multi1d< U > &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Take deriv of D.
Handle< FermState< T, P, Q > > fs_mn
void operator()(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply even-odd preconditioned Clover fermion linear operator.
void derivOddOddLinOp(multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
Double logDetEvenEvenLinOp(void) const
Get the log det of the even even part.
void derivLogDetEvenEvenLinOp(multi1d< LatticeColorMatrix > &ds_u, enum PlusMinus isign) const
Apply the even-even block onto a source std::vector.
void evenEvenLinOp(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the even-even block onto a source std::vector.
void derivOddEvenLinOp(multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the odd-even block onto a source std::vector.
void derivEvenEvenLinOp(multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the even-even block onto a source std::vector.
void derivEvenOddLinOp(multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
void oddEvenLinOp(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the odd-even block onto a source std::vector.
void create(Handle< FermState< T, P, Q > > fs, const CloverFermActParams ¶m_)
Creation routine.
Handle< FermState< T, P, Q > > fs_pl
void evenEvenInvLinOp(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the inverse of the even-even block onto a source std::vector.
void evenOddLinOp(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
void oddOddLinOp(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
Handle< FermState< T, P, Q > > slic_fs
unsigned long nFlops() const
Return flops performed by the operator()
CloverFermActParams param
Support class for fermion actions and linear operators.
Class for counted reference semantics.
void create(Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams ¶m_)
Creation routine.
Double cholesDet(int cb) const
Computes the inverse of the term on cb using Cholesky.
void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const
void choles(int cb)
Computes the inverse of the term on cb using Cholesky.
void create(Handle< FermState< T, P, Q > > state)
Creation routine.
SLIC (Stout Link Irrelevant Clover ferm connection state.
Simple version of FermState.
void fatForceToThin(const P &F_fat, P &F_thin) const
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Take deriv of D.
unsigned long nFlops() const
Return flops performed by the operator()
Even-odd preconditioned Clover fermion linear operator.
void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const
General Wilson-Dirac dslash.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
FloatingPoint< double > Double
Params for clover ferm acts.