CHROMA
unprec_clover_linop_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned Clover fermion linear operator
4  */
5 
6 #ifndef __unprec_clover_linop_w_h__
7 #define __unprec_clover_linop_w_h__
8 
9 #include "linearop.h"
12 
13 
14 namespace Chroma
15 {
16  //! Unpreconditioned Clover-Dirac operator
17  /*!
18  * \ingroup linop
19  *
20  * This routine is specific to Wilson fermions!
21  */
22 
23  class UnprecCloverLinOp : public UnprecLinearOperator<LatticeFermion,
24  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
25  {
26  public:
27  // Typedefs to save typing
28  typedef LatticeFermion T;
29  typedef multi1d<LatticeColorMatrix> P;
30  typedef multi1d<LatticeColorMatrix> Q;
31 
32  //! Partial constructor
34 
35  //! Full constructor
37  const CloverFermActParams& param_)
38  {create(fs,param_);}
39 
40  //! Destructor is automatic
42 
43  //! Return the fermion BC object for this linear operator
44  const FermBC<T,P,Q>& getFermBC() const {return D.getFermBC();}
45 
46  //! Creation routine
47  void create(Handle< FermState<T,P,Q> > fs,
48  const CloverFermActParams& param_);
49 
50  //! Apply the operator onto a source std::vector
51  void operator() (LatticeFermion& chi, const LatticeFermion& psi, enum PlusMinus isign) const;
52 
53  //! Derivative of unpreconditioned Clover dM/dU
54  void deriv(multi1d<LatticeColorMatrix>& ds_u,
55  const LatticeFermion& chi, const LatticeFermion& psi,
56  enum PlusMinus isign) const;
57 
58  //! Return flops performed by the operator()
59  unsigned long nFlops() const;
60 
61  private:
65  };
66 
67 } // End Namespace Chroma
68 
69 
70 #endif
Base class for all fermion action boundary conditions.
Definition: fermbc.h:20
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
General Wilson-Dirac dslash.
Definition: lwldslash_w.h:48
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
Definition: lwldslash_w.h:92
Unpreconditioned Clover-Dirac operator.
void create(Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_)
Creation routine.
multi1d< LatticeColorMatrix > P
UnprecCloverLinOp()
Partial constructor.
~UnprecCloverLinOp()
Destructor is automatic.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
UnprecCloverLinOp(Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_)
Full constructor.
multi1d< LatticeColorMatrix > Q
void deriv(multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Derivative of unpreconditioned Clover dM/dU.
unsigned long nFlops() const
Return flops performed by the operator()
void operator()(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
Unpreconditioned linear operator including derivatives.
Definition: linearop.h:185
Include possibly optimized Clover terms.
Include possibly optimized Wilson dslash.
Linear Operators.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
multi1d< LatticeFermion > chi(Ncb)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
Params for clover ferm acts.