Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Clover_Isochemical.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVER_ISOCHEMICAL_INCLUDED
15 #define FOPR_CLOVER_ISOCHEMICAL_INCLUDED
16 
18 #include "fopr_CloverTerm.h"
19 
20 #include "bridgeIO.h"
21 using Bridge::vout;
22 
24 
34 //- parameters class
36 {
37  public:
39 };
40 //- end
41 
43 {
44  public:
45  static const std::string class_name;
46 
47  private:
48  double m_kappa;
49  double m_cSW;
50  double m_mu;
51  std::valarray<int> m_boundary;
52  std::string m_repr;
53  std::string m_mode;
54 
56 
59 
60  const Field_G *m_U;
61 
64 
65  public:
67  : Fopr()
68  {
69  init("Dirac");
70  }
71 
72  Fopr_Clover_Isochemical(std::string repr)
73  : Fopr()
74  {
75  init(repr);
76  }
77 
79  {
80  tidyup();
81  }
82 
83  void set_parameters(const Parameters& params);
84  void set_parameters(double kappa, double cSW, double mu, std::valarray<int> bc);
85 
86  void set_config(Field *U);
87 
88  void set_mode(std::string mode)
89  {
90  m_mode = mode;
91  }
92 
93  std::string get_mode() const
94  {
95  return m_mode;
96  }
97 
98  const Field mult(const Field& f)
99  {
100  Field v(f.nin(), f.nvol(), f.nex());
101 
102  mult(v, f);
103  return v;
104  }
105 
106  const Field mult_dag(const Field& f)
107  {
108  Field v(f.nin(), f.nvol(), f.nex());
109 
110  mult_dag(v, f);
111  return v;
112  }
113 
114  void mult(Field& v, const Field& f)
115  {
116  if (m_mode == "D") {
117  D(v, f);
118  } else if (m_mode == "DdagD") {
119  DdagD(v, f);
120  } else if (m_mode == "Ddag") {
121  Ddag(v, f);
122  } else if (m_mode == "H") {
123  H(v, f);
124  } else {
125  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
126  abort();
127  }
128  }
129 
130  void mult_dag(Field& v, const Field& f)
131  {
132  if (m_mode == "D") {
133  Ddag(v, f);
134  } else if (m_mode == "DdagD") {
135  DdagD(v, f);
136  } else if (m_mode == "Ddag") {
137  D(v, f);
138  } else if (m_mode == "H") {
139  Hdag(v, f);
140  } else {
141  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
142  abort();
143  }
144  }
145 
146  void DdagD(Field&, const Field&);
147  void D(Field&, const Field&);
148  void Ddag(Field&, const Field&);
149  void H(Field&, const Field&);
150  void Hdag(Field&, const Field&);
151 
152  void mult_gm5(Field& v, const Field& w)
153  {
154  m_fopr_w->mult_gm5(v, w);
155  }
156 
157  const Field mult_gm5(const Field& w)
158  {
159  return m_fopr_w->mult_gm5(w);
160  }
161 
162  void mult_up(int mu, Field& v, const Field& w)
163  {
164  m_fopr_w->mult_up(mu, v, w);
165  }
166 
167  void mult_dn(int mu, Field& v, const Field& w)
168  {
169  m_fopr_w->mult_dn(mu, v, w);
170  }
171 
172  void mult_isigma(Field_F&, const Field_F&,
173  const int mu, const int nu);
174 
175  int field_nvol() { return m_Nvol; }
176  int field_nin() { return 2 * m_Nc * m_Nd; }
177  int field_nex() { return 1; }
178 
179  private:
180  void init(std::string repr);
181  void tidyup();
182 };
183 #endif
const Field_G * m_U
gauge configuration (pointer)
BridgeIO vout
Definition: bridgeIO.cpp:207
void set_config(Field *U)
setting pointer to the gauge configuration.
Fopr_CloverTerm * m_fopr_csw
Clover term operator.
std::string get_mode() const
double m_cSW
clover coefficient
Container of Field-type object.
Definition: field.h:37
double m_mu
isospin chemical potential
int nvol() const
Definition: field.h:101
const Field mult(const Field &f)
multiplies fermion operator to a given field and returns the resultant field.
void mult_up(int mu, Field &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
Class for parameters.
Definition: parameters.h:40
std::valarray< int > m_boundary
boundary conditions
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Wilson-type fermion field.
Definition: field_F.h:37
void mult_gm5(Field &v, const Field &w)
double m_kappa
hopping parameter
int nin() const
Definition: field.h:100
Fopr_Wilson_Isochemical * m_fopr_w
Wilson fermion kernel.
void mult_up(int mu, Field &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
SU(N) gauge field.
Definition: field_G.h:36
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
Bridge::VerboseLevel m_vl
Definition: fopr.h:99
void DdagD(Field &, const Field &)
static const std::string class_name
void Hdag(Field &, const Field &)
int nex() const
Definition: field.h:102
Fopr_Clover_Isochemical(std::string repr)
void set_parameters(const Parameters &params)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
void Ddag(Field &, const Field &)
std::string m_mode
mode of multiplication
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
int field_nvol()
returns the volume for which the fermion operator is defined.
int m_NinF
internal parameters
void D(Field &, const Field &)
void H(Field &, const Field &)
void mult_dn(int mu, Field &v, const Field &w)
std::string m_repr
gamma matrix representation
const Field mult_gm5(const Field &w)
Base class of fermion operator family.
Definition: fopr.h:39
void mult_dn(int mu, Field &v, const Field &w)
const Field mult_gm5(const Field &f)
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
Clover fermion operator with isospin chemical potential.