Bridge++  Ver. 1.3.x
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 
36 //- parameters class
38 {
39  public:
41 };
42 //- end
43 
45 {
46  public:
47  static const std::string class_name;
48 
49  private:
50  double m_kappa;
51  double m_cSW;
52  double m_mu;
53  std::vector<int> m_boundary;
54  std::string m_repr;
55  std::string m_mode;
56 
58 
61 
62  const Field_G *m_U;
63 
66 
67  public:
69  : Fopr()
70  {
71  init("Dirac");
72  }
73 
74  Fopr_Clover_Isochemical(std::string repr)
75  : Fopr()
76  {
77  init(repr);
78  }
79 
81  {
82  tidyup();
83  }
84 
85  void set_parameters(const Parameters& params);
86  void set_parameters(double kappa, double cSW, double mu, std::vector<int> bc);
87 
88  void set_config(Field *U);
89 
91  {
92  set_config(U.get());
93  }
94 
95  void set_mode(std::string mode)
96  {
97  m_mode = mode;
98  }
99 
100  std::string get_mode() const
101  {
102  return m_mode;
103  }
104 
105  void mult(Field& v, const Field& f)
106  {
107  if (m_mode == "D") {
108  D(v, f);
109  } else if (m_mode == "DdagD") {
110  DdagD(v, f);
111  } else if (m_mode == "Ddag") {
112  Ddag(v, f);
113  } else if (m_mode == "H") {
114  H(v, f);
115  } else {
116  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
117  exit(EXIT_FAILURE);
118  }
119  }
120 
121  void mult_dag(Field& v, const Field& f)
122  {
123  if (m_mode == "D") {
124  Ddag(v, f);
125  } else if (m_mode == "DdagD") {
126  DdagD(v, f);
127  } else if (m_mode == "Ddag") {
128  D(v, f);
129  } else if (m_mode == "H") {
130  Hdag(v, f);
131  } else {
132  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
133  exit(EXIT_FAILURE);
134  }
135  }
136 
137  void DdagD(Field&, const Field&);
138  void D(Field&, const Field&);
139  void Ddag(Field&, const Field&);
140  void H(Field&, const Field&);
141  void Hdag(Field&, const Field&);
142 
143  void mult_gm5(Field& v, const Field& w)
144  {
145  m_fopr_w->mult_gm5(v, w);
146  }
147 
148  void mult_up(int mu, Field& v, const Field& w)
149  {
150  m_fopr_w->mult_up(mu, v, w);
151  }
152 
153  void mult_dn(int mu, Field& v, const Field& w)
154  {
155  m_fopr_w->mult_dn(mu, v, w);
156  }
157 
158  void mult_isigma(Field_F&, const Field_F&,
159  const int mu, const int nu);
160 
161  int field_nvol() { return m_Nvol; }
162  int field_nin() { return 2 * m_Nc * m_Nd; }
163  int field_nex() { return 1; }
164 
166  double flop_count();
167 
168  private:
169  void init(std::string repr);
170  void tidyup();
171 };
172 #endif
const Field_G * m_U
gauge configuration (pointer)
BridgeIO vout
Definition: bridgeIO.cpp:278
void set_config(Field *U)
setting pointer to the gauge configuration.
Fopr_CloverTerm * m_fopr_csw
Clover term operator.
std::string get_mode() const
only for Fopr_Overlap
double m_cSW
clover coefficient
void mult_gm5(Field &, const Field &)
Container of Field-type object.
Definition: field.h:39
double m_mu
isospin chemical potential
double flop_count()
this returns the number of floating point operations.
void mult_up(int mu, Field &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
void set_config(unique_ptr< Field_G > &U)
Class for parameters.
Definition: parameters.h:38
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
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:38
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
Bridge::VerboseLevel m_vl
Definition: fopr.h:113
void DdagD(Field &, const Field &)
static const std::string class_name
void Hdag(Field &, const Field &)
pointer get() const
std::vector< int > m_boundary
boundary conditions
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:48
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
Base class of fermion operator family.
Definition: fopr.h:49
void mult_dn(int mu, Field &v, const Field &w)
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
Clover fermion operator with isospin chemical potential.