CHROMA
eoprec_slrc_fermact_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Even-odd preconditioned Clover fermion action (fat-relevant, thin-irrelevant terms)
4  *
5  * Here, the relevant terms are smeared and the irrelevant terms are not smeared.
6  * Code provided by Thomas Kaltenbrunner.
7  *
8  */
9 
10 #ifndef __eoprec_slrc_fermact_w_h__
11 #define __eoprec_slrc_fermact_w_h__
12 
16 
17 namespace Chroma
18 {
19  //! Name and registration
20  /*! \ingroup fermacts */
21  namespace EvenOddPrecSLRCFermActEnv
22  {
23  extern const std::string name;
24  bool registerAll();
25  }
26 
27 
28  //! Even-odd preconditioned Clover fermion action
29  /*! \ingroup fermacts
30  *
31  * Even-odd preconditioned clover fermion action.
32  * Only defined on odd subset.
33  *
34  * Here, the relevant terms are smeared and the irrelevant terms are not smeared
35  */
36 
38  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
39  {
40  public:
41  // Typedefs to save typing
42  typedef LatticeFermion T;
43  typedef multi1d<LatticeColorMatrix> P;
44  typedef multi1d<LatticeColorMatrix> Q;
45 
46  //! Partial constructor
48 
49  //! General FermState
51  const CloverFermActParams& param_) :
52  cfs(cfs_), param(param_) {}
53 
54  //! Copy constructor
56  cfs(a.cfs), param(a.param) {}
57 
58  //! Produce a linear operator for this action
60 
61  //! Produce the gamma_5 hermitian operator H_w
63  {
64  return new lgherm<LatticeFermion>(linOp(state));
65  }
66 
67  //! Destructor is automatic
69 
70  protected:
71  //! Return the fermion BC object for this action
72  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
73 
74  //! Assignment
76  cfs = a.cfs;
77  param = a.param;
78  }
79 
80  private:
83  };
84 
85 } // End Namespace Chroma
86 
87 
88 #endif
Create a fermion connection state.
Definition: create_state.h:69
Even-odd preconditioned linear operator.
Even-odd preconditioned Wilson-like fermion action, specialised to clover like (gauge dependent diago...
Even-odd preconditioned Clover fermion action.
EvenOddPrecSLRCFermAct(const EvenOddPrecSLRCFermAct &a)
Copy constructor.
EvenOddPrecSLRCFermAct()
Partial constructor.
EvenOddPrecLogDetLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
multi1d< LatticeColorMatrix > P
~EvenOddPrecSLRCFermAct()
Destructor is automatic.
Handle< CreateFermState< T, P, Q > > cfs
LinearOperator< LatticeFermion > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
Produce the gamma_5 hermitian operator H_w.
EvenOddPrecSLRCFermAct(Handle< CreateFermState< T, P, Q > > cfs_, const CloverFermActParams &param_)
General FermState.
multi1d< LatticeColorMatrix > Q
void operator=(const EvenOddPrecSLRCFermAct &a)
Assignment.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Gamma(5) hermitian linear operator.
Definition: lgherm_w.h:22
Parameters for Clover fermion action.
Even-odd const determinant Wilson-like fermact.
bool registerAll()
Register all the factories.
const std::string name
Name to be used.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
Complex a
Definition: invbicg.cc:95
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
::std::string string
Definition: gtest.h:1979
Params for clover ferm acts.