1 #ifndef EO3DPREC_S_CPREC_T_WILSON_LINOP_W_H
2 #define EO3DPREC_S_CPREC_T_WILSON_LINOP_W_H
4 #include "qdp_config.h"
27 class EO3DPrecSCprecTWilsonLinOp :
28 public EO3DPrecSpaceCentralPrecTimeLinearOperator<LatticeFermion,
29 multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
33 typedef LatticeFermion
T;
34 typedef multi1d<LatticeColorMatrix>
P;
35 typedef multi1d<LatticeColorMatrix>
Q;
36 typedef PScalar<PColorMatrix<RComplex<REAL>, 3> > CMat;
37 typedef PSpinVector<PColorVector<RComplex<REAL>, 3>, 2> HVec_site;
39 EO3DPrecSCprecTWilsonLinOp() {}
43 EO3DPrecSCprecTWilsonLinOp(Handle< FermState<T,P,Q> > fs_,
45 const AnisoParam_t& aniso_)
46 {create(fs_,Mass_,aniso_);}
49 ~EO3DPrecSCprecTWilsonLinOp() {}
52 const FermBC<T,P,Q>& getFermBC()
const {
return fs->getBC();}
56 void create(Handle< FermState<T,P,Q> > fs_,
58 const AnisoParam_t& aniso_);
148 T tmp1,
tmp2; moveToFastMemoryHint(tmp1); moveToFastMemoryHint(
tmp2);
181 QDPIO::cerr <<
"unknown sign" << std::endl;
185 getFermBC().modifyF(
chi, QDP::rb3[1]);
192 QDPIO::cerr <<
"Not Yet Implemented" << std::endl;
198 Double logDetTDagT(
void)
const {
199 QDPIO::cerr <<
"Not Yet Implemented" << std::endl;
207 QDPIO::cerr <<
"Not Yet Implemented" << std::endl;
212 unsigned long nFlops()
const
223 Real mhalf=Real(-0.5);
225 chi[ rb3[cb3d] ] *= mhalf;
226 getFermBC().modifyF(
chi, rb3[cb3d]);
229 int getTMax()
const {
230 return Layout::lattSize()[
Nd-1];
239 Handle< FermState<T,P,Q> > fs;
240 multi1d<LatticeColorMatrix>
u;
242 multi3d< int > tsite;
244 multi3d< CMat > P_mat;
245 multi3d< CMat > P_mat_dag;
247 multi2d< CMat > Q_mat_inv;
248 multi2d< CMat > Q_mat_dag_inv;
Time-preconditioned Linear Operators.
Support for time preconditioning.
Include possibly optimized Wilson dslash.
multi1d< LatticeColorMatrix > P
multi1d< Hadron2PtContraction_t > operator()(const multi1d< LatticeColorMatrix > &u)
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::Q Q
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > const multi1d< Real > & Mass
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeFermion > chi(Ncb)
FloatingPoint< double > Double
multi1d< LatticeColorMatrix > P
multi1d< LatticeColorMatrix > deriv(const EvenOddPrecLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > &AP, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign)
Apply the operator onto a source std::vector.