6 #ifndef __teoprec_linop_h__
7 #define __teoprec_linop_h__
114 template<
typename T,
typename P,
typename Q>
122 const Subset&
subset()
const {
return rb[1];}
149 T tmp1,
tmp2; moveToFastMemoryHint(tmp1); moveToFastMemoryHint(
tmp2);
164 oddOddTimeInvLinOp(tmp1,
psi,
isign);
172 QDPIO::cerr <<
"unknown sign" << std::endl;
182 T tmp1,
tmp2; moveToFastMemoryHint(tmp1); moveToFastMemoryHint(
tmp2);
220 T tmp1,
tmp2; moveToFastMemoryHint(tmp1); moveToFastMemoryHint(
tmp2);
221 P ds_tmp; moveToFastMemoryHint(ds_tmp);
Differentiable Linear Operator.
Even-odd and time preconditioned linear operator.
virtual void oddOddTimeLinOp(T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the odd-odd block onto a source std::vector.
virtual void evenOddSpaceLinOp(T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the even-odd block onto a source std::vector.
virtual void unprecLinOp(T &chi, const T &psi, enum PlusMinus isign) const
Apply the UNPRECONDITIONED operator onto a source std::vector.
virtual void derivUnprecLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Apply the derivative of the UNPRECONDITIONED operator onto a source std::vector.
virtual void evenEvenTimeLinOp(T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the even-even block onto a source std::vector.
virtual void derivOddEvenSpaceLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the odd-even block onto a source std::vector.
virtual void derivEvenEvenTimeLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the even-even block onto a source std::vector.
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the derivative of the operator onto a source std::vector.
virtual void oddEvenSpaceLinOp(T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the odd-even block onto a source std::vector.
const Subset & subset() const
Only defined on the odd lattice.
virtual ~EvenOddTimePrecLinearOperator()
Virtual destructor to help with cleanup;.
virtual void operator()(T &chi, const T &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
virtual void evenEvenTimeInvLinOp(T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the inverse of the even-even block onto a source std::vector.
virtual void derivOddOddTimeLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the odd-odd block onto a source std::vector.
virtual void derivEvenOddSpaceLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the even-odd block onto a source std::vector.
Asqtad Staggered-Dirac operator.
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeFermion > chi(Ncb)
multi1d< LatticeColorMatrix > P