Bridge++  Ver. 1.3.x
fopr_Wilson_Isochemical.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_WILSON_ISOCHEMICAL_INCLUDED
15 #define FOPR_WILSON_ISOCHEMICAL_INCLUDED
16 
17 #include "fopr_Wilson.h"
18 
19 #include "bridgeIO.h"
20 using Bridge::vout;
21 
23 
33 //- parameters class
35 {
36  public:
38 };
39 //- end
40 
42 {
43  public:
44  static const std::string class_name;
45 
46  private:
47  int m_Nvol, m_Ndim;
48  double m_kappa;
49  double m_mu;
50  std::vector<int> m_boundary;
51  std::string m_mode;
53 
54  double m_exp_mu;
55 
56  std::string m_repr;
59  void (Fopr_Wilson_Isochemical::*m_D)(Field&, const Field&);
61 
62  const Field_G *m_U;
63 
66 
67  public:
68 
70  {
71  init("Dirac");
72  }
73 
74  Fopr_Wilson_Isochemical(std::string repr) : Fopr()
75  {
76  init(repr);
77  }
78 
80  {
81  tidyup();
82  }
83 
84  // this method is temporary. After all calls specify bc, to be removed.
85  void set_parameters(const Parameters& params);
86 
87  void set_parameters(const double kappa, const double mu,
88  const std::vector<int> bc);
89 
90  void set_config(Field *U)
91  {
92  m_U = (Field_G *)U;
93  m_fopr_w->set_config(U);
94  }
95 
97  {
98  m_U = U.get();
99  m_fopr_w->set_config(U.get());
100  }
101 
102  void mult(Field& v, const Field& f)
103  {
104  (this->*m_mult)(v, f);
105  }
106 
107  void mult_dag(Field& v, const Field& f)
108  {
109  (this->*m_mult_dag)(v, f);
110  }
111 
112  void set_mode(std::string mode)
113  {
114  m_mode = mode;
115 
116  if (m_mode == "D") {
119  } else if (m_mode == "Ddag") {
122  } else if (m_mode == "DdagD") {
125  } else if (m_mode == "H") {
128  } else {
129  vout.crucial(m_vl, "%s: input mode is undefined.\n", class_name.c_str());
130  exit(EXIT_FAILURE);
131  }
132  }
133 
134  std::string get_mode() const
135  {
136  return m_mode;
137  }
138 
139  void mult_gm5p(int mu, Field_F& v, const Field_F& w);
140 
141  void mult_gm5(Field&, const Field&);
142  void D(Field&, const Field&);
143  void Dminmu(Field&, const Field&);
144  void Dspc(Field&, const Field&);
145 
146  void DdagD(Field&, const Field&);
147  void Ddag(Field&, const Field&);
148  void H(Field&, const Field&);
149  void Hdag(Field&, const Field&);
150 
151  void mult_undef(Field&, const Field&)
152  {
153  vout.crucial(m_vl, "%s: mode undefined.\n", class_name.c_str());
154  exit(EXIT_FAILURE);
155  }
156 
157  void mult_up(int mu, Field& v, const Field& w)
158  {
159  m_fopr_w->mult_up(mu, v, w);
160  }
161 
162  void mult_dn(int mu, Field& v, const Field& w)
163  {
164  m_fopr_w->mult_dn(mu, v, w);
165  }
166 
167  int field_nvol() { return CommonParameters::Nvol(); }
169  int field_nex() { return 1; }
170 
172  double flop_count();
173 
174  private:
175  void init(std::string repr);
176  void tidyup();
177 };
178 #endif
void set_config(Field *U)
setting pointer to the gauge configuration.
void Hdag(Field &, const Field &)
BridgeIO vout
Definition: bridgeIO.cpp:278
double m_kappa
hopping parameter
void mult_gm5(Field &, const Field &)
Container of Field-type object.
Definition: field.h:39
int field_nvol()
returns the volume for which the fermion operator is defined.
double flop_count()
this returns the number of floating point operations.
void mult_up(int mu, Field &w, const Field &v)
adding the hopping to nearest neighbor site in mu-th direction.
void mult_up(int mu, Field &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
Class for parameters.
Definition: parameters.h:38
Wilson fermion operator with isospin chemical potential.
void mult_gm5p(int mu, Field_F &v, const Field_F &w)
void Ddag(Field &, const Field &)
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Wilson-type fermion field.
Definition: field_F.h:37
void(Fopr_Wilson_Isochemical::* m_mult_dag)(Field &, const Field &)
SU(N) gauge field.
Definition: field_G.h:38
void set_config(Field *U)
setting pointer to the gauge configuration.
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void(Fopr_Wilson_Isochemical::* m_gm5)(Field &, const Field &)
void D(Field &, const Field &)
Bridge::VerboseLevel m_vl
Definition: fopr.h:113
void mult_dn(int mu, Field &w, const Field &v)
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void set_parameters(const Parameters &params)
pointer get() const
void Dminmu(Field &, const Field &)
void(Fopr_Wilson_Isochemical::* m_D)(Field &, const Field &)
std::string get_mode() const
only for Fopr_Overlap
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
void mult_dn(int mu, Field &v, const Field &w)
double m_mu
isospin chemical potential
void H(Field &, const Field &)
void mult_undef(Field &, const Field &)
void Dspc(Field &, const Field &)
void DdagD(Field &, const Field &)
void set_config(unique_ptr< Field_G > &U)
Base class of fermion operator family.
Definition: fopr.h:49
static const std::string class_name
Fopr_Wilson_Isochemical(std::string repr)
void(Fopr_Wilson_Isochemical::* m_mult)(Field &, const Field &)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).