6 #ifndef __teoprec_logdet_linop_h__
7 #define __teoprec_logdet_linop_h__
130 template<
typename T,
typename P,
typename Q>
138 const Subset&
subset()
const {
return rb[1];}
151 T tmp1; moveToFastMemoryHint(tmp1);
154 P ds_1; moveToFastMemoryHint(ds_1);
168 oddOddTimeInvLinOp(
tmp3,
chi, msign);
174 oddOddTimeInvLinOp(
tmp3,
chi, msign);
175 derivOddEvenTimeLinOp(ds_1,
tmp3, tmp1,
isign);
181 oddOddTimeInvLinOp(
tmp3,
chi, msign);
188 oddOddTimeInvLinOp(
tmp3,
chi, msign);
200 oddOddTimeInvLinOp(tmp1,
psi,
isign);
208 oddOddTimeInvLinOp(tmp1,
psi,
isign);
211 derivOddEvenTimeLinOp(ds_1,
chi, tmp1,
isign);
215 oddOddTimeInvLinOp(tmp1,
psi,
isign);
219 oddOddTimeInvLinOp(
tmp3,
tmp2, msign);
224 oddOddTimeInvLinOp(tmp1,
psi,
isign);
227 derivEvenOddTimeLinOp(ds_1,
tmp3, tmp1,
isign);
232 QDPIO::cerr <<
"unknown sign" << std::endl;
241 QDPIO::cerr <<
"EvenEvenTime: not implemented" << std::endl;
249 QDPIO::cerr <<
"EvenOddSpace: not implemented" << std::endl;
257 QDPIO::cerr <<
"EvenOddSpace: not implemented" << std::endl;
265 QDPIO::cerr <<
"OddOddTime: not implemented" << std::endl;
Even-odd and time preconditioned linear operator.
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 oddEvenSpaceLinOp(T &chi, const T &psi, enum PlusMinus isign) const =0
Apply the the odd-even block 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.
Even-odd and time preconditioned linear operator.
const Subset & subset() const
Only defined on the odd lattice.
virtual ~EvenOddTimePrecLogDetLinearOperator()
Virtual destructor to help with cleanup;.
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Apply the derivative of the operator onto a source std::vector.
virtual void derivOddOddTimeLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
virtual void derivOddEvenSpaceLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Apply the the odd-even block onto a source std::vector.
virtual void derivEvenOddSpaceLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
virtual void derivEvenEvenTimeLinOp(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Apply the even-even block onto a source std::vector.
Asqtad Staggered-Dirac operator.
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeFermion > chi(Ncb)
multi1d< LatticeColorMatrix > P
Even-odd Time-preconditioned Linear Operators.