Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 
31 //- parameters class
33 {
34  public:
36 };
37 //- end
38 
40 {
41  public:
42  static const std::string class_name;
43 
44  private:
45  int m_Nvol, m_Ndim;
46  double m_kappa;
47  double m_mu;
48  std::valarray<int> m_boundary;
49  std::string m_mode;
51 
52  double m_exp_mu;
53 
54  std::string m_repr;
55  void (Fopr_Wilson_Isochemical::*m_mult)(Field &, const Field &);
57  void (Fopr_Wilson_Isochemical::*m_D)(Field &, const Field &);
58  void (Fopr_Wilson_Isochemical::*m_gm5)(Field &, const Field &);
59 
60  const Field_G *m_U;
61 
64 
65  public:
66 
68  {
69  init("Dirac");
70  }
71 
72  Fopr_Wilson_Isochemical(std::string repr) : Fopr()
73  {
74  init(repr);
75  }
76 
78  {
79  tidyup();
80  }
81 
82  // this method is temporary. After all calls specify bc, to be removed.
83  void set_parameters(const Parameters& params);
84 
85  void set_parameters(const double kappa, const double mu,
86  const std::valarray<int> bc);
87 
88  void set_config(Field *U)
89  {
90  m_U = (Field_G *)U;
91  m_fopr_w->set_config(U);
92  }
93 
94  const Field mult(const Field& f)
95  {
96  Field v(f.nin(), f.nvol(), f.nex());
97 
98  mult(v, f);
99  return v;
100  }
101 
102  const Field mult_dag(const Field& f)
103  {
104  Field v(f.nin(), f.nvol(), f.nex());
105 
106  mult_dag(v, f);
107  return v;
108  }
109 
110  void mult(Field& v, const Field& f)
111  {
112  (this->*m_mult)(v, f);
113  }
114 
115  void mult_dag(Field& v, const Field& f)
116  {
117  (this->*m_mult_dag)(v, f);
118  }
119 
120  void set_mode(std::string mode)
121  {
122  m_mode = mode;
123 
124  if (m_mode == "D") {
127  } else if (m_mode == "Ddag") {
130  } else if (m_mode == "DdagD") {
133  } else if (m_mode == "H") {
136  } else {
137  vout.crucial(m_vl, "%s: input mode is undefined.\n", class_name.c_str());
138  abort();
139  }
140  }
141 
142  std::string get_mode() const
143  {
144  return m_mode;
145  }
146 
147  const Field mult_gm5(const Field& f)
148  {
149  Field v(f.nin(), f.nvol(), f.nex());
150 
151  mult_gm5(v, f);
152  return v;
153  }
154 
155  const Field_F mult_gm5p(int mu, const Field_F& w);
156 
157  void mult_gm5(Field&, const Field&);
158  void D(Field&, const Field&);
159  void Dminmu(Field&, const Field&);
160  void Dspc(Field&, const Field&);
161 
162  void DdagD(Field&, const Field&);
163  void Ddag(Field&, const Field&);
164  void H(Field&, const Field&);
165  void Hdag(Field&, const Field&);
166 
167  void mult_undef(Field&, const Field&)
168  {
169  vout.crucial(m_vl, "%s: mode undefined.\n", class_name.c_str());
170  abort();
171  }
172 
173  void mult_up(int mu, Field& v, const Field& w)
174  {
175  m_fopr_w->mult_up(mu, v, w);
176  }
177 
178  void mult_dn(int mu, Field& v, const Field& w)
179  {
180  m_fopr_w->mult_dn(mu, v, w);
181  }
182 
184  {
185  v *= (2.0 * m_kappa);
186  }
187 
189  {
190  v *= 1.0 / (2.0 * m_kappa);
191  }
192 
193  int field_nvol() { return CommonParameters::Nvol(); }
195  int field_nex() { return 1; }
196 
197  private:
198  void init(std::string repr);
199  void tidyup();
200 };
201 #endif
void set_config(Field *U)
setting pointer to the gauge configuration.
void Hdag(Field &, const Field &)
std::valarray< int > m_boundary
BridgeIO vout
Definition: bridgeIO.cpp:207
double m_kappa
hopping parameter
void(Fopr_Wilson_Isochemical::* m_mult)(Field &, const Field &)
Container of Field-type object.
Definition: field.h:37
int field_nvol()
returns the volume for which the fermion operator is defined.
int nvol() const
Definition: field.h:101
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:40
void(Fopr_Wilson_Isochemical::* m_D)(Field &, const Field &)
Wilson fermion operator with isospin chemical potential.
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
int nin() const
Definition: field.h:100
SU(N) gauge field.
Definition: field_G.h:36
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Wilson.cpp:87
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void D(Field &, const Field &)
Bridge::VerboseLevel m_vl
Definition: fopr.h:99
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)
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
const Field mult(const Field &f)
multiplies fermion operator to a given field and returns the resultant field.
int nex() const
Definition: field.h:102
void(Fopr_Wilson_Isochemical::* m_gm5)(Field &, const Field &)
void Dminmu(Field &, const Field &)
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
void mult_dn(int mu, Field &v, const Field &w)
void(Fopr_Wilson_Isochemical::* m_mult_dag)(Field &, const Field &)
const Field_F mult_gm5p(int mu, const Field_F &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 &)
Base class of fermion operator family.
Definition: fopr.h:39
static const std::string class_name
Fopr_Wilson_Isochemical(std::string repr)
const Field mult_gm5(const Field &f)
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&amp;, const Field&amp;).