CHROMA
unprec_clover_fermact_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned Clover fermion action
4  */
5 
6 #ifndef __unprec_clover_fermact_w_h__
7 #define __unprec_clover_fermact_w_h__
8 
12 
13 namespace Chroma
14 {
15  //! Name and registration
16  /*! \ingroup fermacts */
17  namespace UnprecCloverFermActEnv
18  {
19  extern const std::string name;
20  bool registerAll();
21  }
22 
23  //! Unpreconditioned Clover fermion action
24  /*! \ingroup fermacts
25  *
26  * Unpreconditioned clover fermion action
27  */
28  class UnprecCloverFermAct : public UnprecWilsonTypeFermAct<LatticeFermion,
29  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
30  {
31  public:
32  // Typedefs to save typing
33  typedef LatticeFermion T;
34  typedef multi1d<LatticeColorMatrix> P;
35  typedef multi1d<LatticeColorMatrix> Q;
36 
37  //! General FermBC
38  /*! Isotropic action */
40  const CloverFermActParams& param_) :
41  cfs(cfs_), param(param_) {}
42 
43  //! Copy constructor
45  cfs(a.cfs), param(a.param) {}
46 
47  //! Produce a linear operator for this action
49 
51  {
52  return new lgherm<T>(linOp(state));
53  }
54 
55  //! Destructor is automatic
57 
58  protected:
59  //! Return the fermion BC object for this action
60  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
61 
62  // Hide partial constructor
64 
65  //! Assignment
67 
68  private:
71  };
72 
73 }
74 
75 #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
Linear Operator.
Definition: linearop.h:27
Unpreconditioned Clover fermion action.
UnprecLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
multi1d< LatticeColorMatrix > P
LinearOperator< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
Produce a hermitian version of the linear operator.
multi1d< LatticeColorMatrix > Q
void operator=(const UnprecCloverFermAct &a)
Assignment.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
~UnprecCloverFermAct()
Destructor is automatic.
UnprecCloverFermAct(const UnprecCloverFermAct &a)
Copy constructor.
Handle< CreateFermState< T, P, Q > > cfs
UnprecCloverFermAct(Handle< CreateFermState< T, P, Q > > cfs_, const CloverFermActParams &param_)
General FermBC.
Unpreconditioned linear operator including derivatives.
Definition: linearop.h:185
Unpreconditioned Wilson-like fermion actions with derivatives.
Definition: fermact.orig.h:491
Gamma(5) hermitian linear operator.
Definition: lgherm_w.h:22
Parameters for Clover fermion action.
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.
Wilson-like fermion actions.