1 #ifndef ILU2PREC_S_CPREC_T_CLOVER_LINOP_W_H
2 #define ILU2PREC_S_CPREC_T_CLOVER_LINOP_W_H
3 #include "qdp_config.h"
27 class ILU2PrecSCprecTCloverLinOp :
public ILU2PrecSCprecTWilsonLikeLinOp
31 typedef LatticeFermion
T;
32 typedef multi1d<LatticeColorMatrix>
P;
33 typedef multi1d<LatticeColorMatrix>
Q;
34 typedef PScalar<PColorMatrix<RComplex<REAL>, 3> > CMat;
35 typedef PSpinVector<PColorVector<RComplex<REAL>, 3>, 2> HVec_site;
37 ILU2PrecSCprecTCloverLinOp() {}
41 ILU2PrecSCprecTCloverLinOp(Handle< FermState<T,P,Q> > fs_,
42 const CloverFermActParams& param_ )
46 ~ILU2PrecSCprecTCloverLinOp() {}
49 const FermBC<T,P,Q>& getFermBC()
const {
return fs->getBC();}
53 void create(Handle< FermState<T,P,Q> > fs_,
54 const CloverFermActParams& param_);
64 chi[ rb3[cb3d] ] *= mhalf;
65 getFermBC().modifyF(
chi, rb3[cb3d]);
81 const int *tab = rb3[cb3d].siteTable().slice();
82 for(
int j=0;
j < rb3[cb3d].siteTable().size();
j++) {
84 APlusFact.applySite(tmp1,
psi,
isign, site);
88 chi[rb3[cb3d]] = tmp1 - fact*
psi;
89 getFermBC().modifyF(
chi);
93 unsigned long nFlops()
const
100 const multi3d< int >& getTsiteArray(
void)
const
105 const multi3d< CMat >& getPMatrixArray(
void)
const
110 const multi3d< CMat >& getPMatrixDaggerArray(
void)
const
115 const multi2d< CMat >& getQMatrixInvArray(
void)
const
120 const multi2d< CMat >& getQMatrixDaggerInvArray(
void)
const
122 return Q_mat_dag_inv;
125 const Real& getFactor()
const
130 const Real& getInvFactor()
const
135 const multi1d<LatticeColorMatrix>& getLinks(
void)
const {
139 inline int getTMax(
void)
const {
147 Handle< FermState<T,P,Q> > fs;
148 multi1d<LatticeColorMatrix>
u;
150 multi3d< int > tsite;
152 multi3d< CMat > P_mat;
153 multi3d< CMat > P_mat_dag;
155 multi2d< CMat > Q_mat_inv;
156 multi2d< CMat > Q_mat_dag_inv;
160 CloverFermActParams param;
Time-preconditioned Linear Operators.
Support for time preconditioning.
Parameters for Clover fermion action.
Include possibly optimized Clover terms.
Include possibly optimized Wilson dslash.
multi1d< LatticeColorMatrix > P
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::Q Q
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeFermion > chi(Ncb)
FloatingPoint< double > Double