CHROMA
seoprec_clover_fermact_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Symmetric even-odd preconditioned Clover fermion action
4  */
5 
6 #ifndef __seoprec_clover_fermact_w_h__
7 #define __seoprec_clover_fermact_w_h__
8 
12 
13 namespace Chroma
14 {
15  //! Name and registration
16  /*! \ingroup fermacts */
17  namespace SymEvenOddPrecCloverFermActEnv
18  {
19  extern const std::string name;
20  bool registerAll();
21  }
22 
23 
24  //! Symmetric even-odd preconditioned Clover fermion action
25  /*! \ingroup fermacts
26  *
27  * Symmetric Even-odd preconditioned clover fermion action.
28  * Only defined on odd subset.
29  */
30 
32  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
33  {
34  public:
35  // Typedefs to save typing
36  typedef LatticeFermion T;
37  typedef multi1d<LatticeColorMatrix> P;
38  typedef multi1d<LatticeColorMatrix> Q;
39 
40  //! Partial constructor
42 
43  //! General FermState
45  const CloverFermActParams& param_) :
46  cfs(cfs_), param(param_) {}
47 
48  //! Copy constructor
50  cfs(a.cfs), param(a.param) {}
51 
52  //! Produce a linear operator for this action
54 
55  //! Produce the gamma_5 hermitian operator H_w
57  {
58  return new lgherm<LatticeFermion>(linOp(state));
59  }
60 
61  //! Destructor is automatic
63 
64  protected:
65  //! Return the fermion BC object for this action
66  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
67 
68  //! Assignment
70 
71  private:
74  };
75 
76 } // End Namespace Chroma
77 
78 
79 #endif
Create a fermion connection state.
Definition: create_state.h:69
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Symmetric even-odd preconditioned Clover fermion action.
void operator=(const SymEvenOddPrecCloverFermAct &a)
Assignment.
SymEvenOddPrecLogDetLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
SymEvenOddPrecCloverFermAct(const SymEvenOddPrecCloverFermAct &a)
Copy constructor.
~SymEvenOddPrecCloverFermAct()
Destructor is automatic.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
LinearOperator< LatticeFermion > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
Produce the gamma_5 hermitian operator H_w.
Handle< CreateFermState< T, P, Q > > cfs
SymEvenOddPrecCloverFermAct(Handle< CreateFermState< T, P, Q > > cfs_, const CloverFermActParams &param_)
General FermState.
Even-odd preconditioned linear operator.
Symmetric even-odd preconditioned Wilson-like fermion action, specialised to clover like (gauge depen...
Gamma(5) hermitian linear operator.
Definition: lgherm_w.h:22
Parameters for Clover fermion action.
const std::string name
Name to be used.
bool registerAll()
Register all the factories.
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
Symmetric even-odd const determinant Wilson-like fermact.
Params for clover ferm acts.