Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Domainwall.h
Go to the documentation of this file.
1 
15 #ifndef FOPR_DOMAINWALL_INCLUDED
16 #define FOPR_DOMAINWALL_INCLUDED
17 
18 #include "fopr_Wilson.h"
19 #include "index_lex.h"
20 #include "math_Sign_Zolotarev.h"
21 
22 #include "bridgeIO.h"
23 using Bridge::vout;
24 
25 //- parameters class
26 class Parameters_Fopr_Domainwall : virtual public Parameters
27 {
28  public:
30 };
31 //- end
32 
34 
44 class Fopr_Domainwall : public Fopr
45 {
46  private:
47  // parameters common to overlap fermion
48  double m_mq; // quark mass
49  double m_M0; // domain-wall height
50  int m_Ns; // size of fifth-dimension
51  std::valarray<int> m_boundary;
52  // std::valarray<double> m_omega; // optimal domain-wall parameter
53  std::string m_mode;
54 
56 
57  public:
58 
60  : Fopr(), m_fopr_w(fopr_w) {}
61 
62  void set_parameters(const Parameters& params);
63  void set_parameters(const double mq, const double M0, const int Ns,
64  const std::valarray<int> bc);
65 
66  void set_config(Field *U)
67  {
68  m_fopr_w->set_config(U);
69  }
70 
71  void set_mode(std::string mode)
72  {
73  m_mode = mode;
74  }
75 
76  std::string get_mode() const
77  {
78  return m_mode;
79  }
80 
81  void mult(Field& v, const Field& f)
82  {
83  v = mult(f);
84  }
85 
86  void mult_dag(Field& v, const Field& f)
87  {
88  v = mult_dag(f);
89  }
90 
91  const Field mult(const Field& f)
92  {
93  if (m_mode == "D") {
94  return D(f);
95  } else if (m_mode == "DdagD") {
96  return DdagD(f);
97  } else if (m_mode == "Ddag") {
98  return Ddag(f);
99  } else if (m_mode == "H") {
100  return H(f);
101  } else {
102  vout.crucial(m_vl, "fopr_Domainwall: mode undefined.\n");
103  abort();
104  }
105  }
106 
107  const Field mult_dag(const Field& f)
108  {
109  if (m_mode == "D") {
110  return Ddag(f);
111  } else if (m_mode == "DdagD") {
112  return DdagD(f);
113  } else if (m_mode == "Ddag") {
114  return D(f);
115  } else if (m_mode == "H") {
116  return H(f);
117  } else {
118  vout.crucial(m_vl, "fopr_Domainwall: mode undefined.\n");
119  abort();
120  }
121  }
122 
123  const Field DdagD(const Field&);
124  const Field D(const Field&);
125  const Field Ddag(const Field&);
126  const Field H(const Field&);
127  const Field mult_gm5R(const Field&);
128 
132  const Field mult_chproj_4d(const Field&, int ipm);
133 
134  int field_nvol() { return CommonParameters::Nvol(); }
136  int field_nex() { return m_Ns; }
137 };
138 #endif