CHROMA
eoprec_twm_fermact_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Even-odd preconditioned Twisted-mass where each flavor is one of two array elements
4  */
5 
6 #ifndef __prec_twm_fermact_array_w_h__
7 #define __prec_twm_fermact_array_w_h__
8 
10 
11 namespace Chroma
12 {
13  //! Name and registration
14  namespace EvenOddPrecTwmFermActArrayEnv
15  {
16  extern const std::string name;
17  bool registerAll();
18  }
19 
20 
21  //! Params for wilson ferm acts
23  {
25  EvenOddPrecTwmFermActArrayParams(XMLReader& in, const std::string& path);
26 
27  Real Mass;
28  Real mu_sigma;
29  Real mu_delta;
30  };
31 
32 
33  // Reader/writers
34  void read(XMLReader& xml, const std::string& path, EvenOddPrecTwmFermActArrayParams& param);
35  void write(XMLWriter& xml, const std::string& path, const EvenOddPrecTwmFermActArrayParams& param);
36 
37 
38  //! Even-odd preconditioned Wilson fermion action with parity breaking term
39  /*! \ingroup fermacts
40  *
41  * Even-odd preconditioned wilson fermion action with parity breaking term
42  * Only defined on odd subset.
43  *
44  * The kernel for Wilson fermions with a parity breaking term is
45  *
46  * M = (d+M) + i*mu_sigma*gamma_5*tau_1 + mu_delta*tau_3 - (1/2) D'
47  */
49  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
50  {
51  public:
52  // Typedefs to save typing
53  typedef LatticeFermion T;
54  typedef multi1d<LatticeColorMatrix> P;
55  typedef multi1d<LatticeColorMatrix> Q;
56 
57  //! General FermBC
59  const EvenOddPrecTwmFermActArrayParams& param_) :
60  fs(fs_), param(param_) {}
61 
62  //! Copy constructor
64  fs(a.fs), param(a.param) {}
65 
66  //! Length of DW flavor index/space
67  int size() const {return 2;}
68 
69  //! Produce a linear operator for this action
71 
72  //! Override to produce an even-odd prec. Pauli-Villars linear operator for this action
74  {
75  QDP_error_exit("linOpPV not implemented yet for this action\n");
76  return 0;
77  }
78 
79  //! Produce the gamma_5 hermitin op gamma_5 M
81  {
82  QDP_error_exit("gamma5HermLinOp not implemented yet for this action\n");
83  return 0;
84  }
85 
86  //! Return quark prop solver, solution of unpreconditioned system
88  const GroupXML_t& invParam) const;
89 
90  //! Destructor is automatic
92 
93  protected:
94  //! Return the fermion create state for this action
95  const CreateFermState<T,P,Q>& getCreateState() const {return *fs;}
96 
97  //! Partial constructor
99  //! Hide =
101 
102  private:
105  };
106 
107 }
108 
109 
110 #endif
Create a fermion connection state.
Definition: create_state.h:69
Even-odd preconditioned linear operator including derivatives for arrays.
Even-odd preconditioned Wilson-like fermion actions including derivatives.
Even-odd preconditioned Wilson fermion action with parity breaking term.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion create state for this action.
~EvenOddPrecTwmFermActArray()
Destructor is automatic.
EvenOddPrecTwmFermActArray(const EvenOddPrecTwmFermActArray &a)
Copy constructor.
Handle< CreateFermState< T, P, Q > > fs
SystemSolverArray< T > * qpropT(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return quark prop solver, solution of unpreconditioned system.
LinearOperator< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
Produce the gamma_5 hermitin op gamma_5 M.
int size() const
Length of DW flavor index/space.
void operator=(const EvenOddPrecTwmFermActArray &a)
Hide =.
EvenOddPrecTwmFermActArray(Handle< CreateFermState< T, P, Q > > fs_, const EvenOddPrecTwmFermActArrayParams &param_)
General FermBC.
EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
EvenOddPrecTwmFermActArrayParams param
EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const
Override to produce an even-odd prec. Pauli-Villars linear operator for this action.
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
Linear system solvers of arrays.
Definition: syssolver.h:62
Even-odd const determinant Wilson-like fermact.
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams &param)
Read parameters.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
const std::string name
Name to be used.
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
Complex a
Definition: invbicg.cc:95
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
static QDP_ColorVector * in
::std::string string
Definition: gtest.h:1979
Hold group xml and type id.