1 #ifndef ILUPREC_S_CPREC_T_CLOVER_LINOP_W_H
2 #define ILUPREC_S_CPREC_T_CLOVER_LINOP_W_H
3 #include "qdp_config.h"
27 class ILUPrecSCprecTCloverLinOp :
public ILUPrecSCprecTWilsonLikeLinOp
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 ILUPrecSCprecTCloverLinOp() {}
41 ILUPrecSCprecTCloverLinOp(Handle< FermState<T,P,Q> > fs_,
42 const CloverFermActParams& param_ )
46 ~ILUPrecSCprecTCloverLinOp() {}
49 const FermBC<T,P,Q>& getFermBC()
const {
return fs->getBC();}
53 void create(Handle< FermState<T,P,Q> > fs_,
54 const CloverFermActParams& param_);
62 Real mhalf=Real(-0.5);
64 chi[ rb3[cb3d] ] *= mhalf;
65 getFermBC().modifyF(
chi, rb3[cb3d]);
69 void derivSpaceOp(
P& ds_u,
const T& X,
const T& Y,
enum PlusMinus isign,
int cb3d)
const
71 Real mhalf=Real(-0.5);
72 Dw3D.deriv(ds_u, X, Y,
isign, cb3d);
73 for(
int mu=0;
mu < 3;
mu++) {
77 getFermBC().zero(ds_u);
92 Real ftmp = Real(1) + fact;
99 getFermBC().modifyF(
chi);
103 void derivAMinusOne(
P& ds_u,
const T& X,
const T& Y,
enum PlusMinus isign)
const {
104 APlusFact.deriv(ds_u, X, Y,
isign);
105 getFermBC().zero(ds_u);
109 Double logDetTDagT(
void)
const {
115 unsigned long nFlops()
const
122 const multi3d< int >& getTsiteArray(
void)
const
127 const multi3d< CMat >& getPMatrixArray(
void)
const
132 const multi3d< CMat >& getPMatrixDaggerArray(
void)
const
137 const multi2d< CMat >& getQMatrixInvArray(
void)
const
142 const multi2d< CMat >& getQMatrixDaggerInvArray(
void)
const
144 return Q_mat_dag_inv;
147 const Real& getFactor()
const
152 const Real& getInvFactor()
const
157 const multi1d<LatticeColorMatrix>& getLinks(
void)
const {
161 inline int getTMax(
void)
const {
169 Handle< FermState<T,P,Q> > fs;
170 multi1d<LatticeColorMatrix>
u;
172 multi3d< int > tsite;
174 multi3d< CMat > P_mat;
175 multi3d< CMat > P_mat_dag;
177 multi2d< CMat > Q_mat_inv;
178 multi2d< CMat > Q_mat_dag_inv;
182 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
multi1d< LatticeColorMatrix > P