6 #ifndef __clover_term_ssed_clover_w_h__
7 #define __clover_term_ssed_clover_w_h__
9 #include "qdp_precision.h"
10 #if BASE_PRECISION == 32
11 #error "This code only works in double precision"
39 typedef LatticeDiracFermionD3
T;
40 typedef multi1d<LatticeColorMatrixD3>
P;
41 typedef multi1d<LatticeColorMatrixD3>
Q;
93 void triacntr(LatticeColorMatrixD3& B,
int mat,
int cb)
const;
104 void makeClov(
const multi1d<LatticeColorMatrixD3>& f,
const Real& diag_mass);
107 void ldagdlinv(LatticeDouble& tr_log_diag,
int cb);
113 const multi1d<LatticeColorMatrixD3>&
getU()
const {
return u;}
120 multi1d<LatticeColorMatrixD3>
u;
Base class for all fermion action boundary conditions.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Double cholesDet(int cb) const
Computes the inverse of the term on cb using Cholesky.
multi1d< LatticeColorMatrixD3 > P
LatticeDouble tr_log_diag_
const multi1d< LatticeColorMatrixD3 > & getU() const
Get the u field.
multi1d< LatticeColorMatrixD3 > Q
~SSEDCloverTerm()
Free the internals.
PrimitiveClovOffDiag * tri_off_diag
void chlclovms(LatticeDouble &log_diag, int cb)
Invert the clover term on cb using Cholesky decomp.
void triacntr(LatticeColorMatrixD3 &B, int mat, int cb) const
Calculates Tr_D ( Gamma_mat L )
multi1d< bool > choles_done
void applySite(LatticeDiracFermionD3 &chi, const LatticeDiracFermionD3 &psi, enum PlusMinus isign, int site) const
PrimitiveClovDiag * tri_diag
void makeClov(const multi1d< LatticeColorMatrixD3 > &f, const Real &diag_mass)
Create the clover term on cb.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
void apply(LatticeDiracFermionD3 &chi, const LatticeDiracFermionD3 &psi, enum PlusMinus isign, int cb) const
Handle< FermBC< T, P, Q > > fbc
CloverFermActParams param
void create(Handle< FermState< T, P, Q > > fs, const CloverFermActParams ¶m_, const SSEDCloverTerm &from)
Create from another.
multi1d< LatticeColorMatrixD3 > u
void ldagdlinv(LatticeDouble &tr_log_diag, int cb)
Invert the clover term on cb using LDL^\dagger decomp.
Real getCloverCoeff(int mu, int nu) const
Calculates Tr_D ( Gamma_mat L )
SSEDCloverTerm()
Empty constructor. Must use create later.
void choles(int cb)
Computes the inverse of the term on cb using Cholesky.
Parameters for Clover fermion action.
Clover term linear operator.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
RScalar< REAL > PrimitiveClovDiag[2][8]
Special structure used for triangular objects.
RComplex< REAL > PrimitiveClovOffDiag[2][16]
FloatingPoint< double > Double
Support class for fermion actions and linear operators.
Params for clover ferm acts.