Bridge++  Version 1.4.4
 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 "IO/bridgeIO.h"
20 using Bridge::vout;
21 
23 
35 {
36  public:
37  static const std::string class_name;
38 
39  private:
40  int m_Nvol, m_Ndim;
41  double m_kappa;
42  double m_mu;
43  std::vector<int> m_boundary;
44  std::string m_mode;
46 
47  double m_exp_mu;
48 
49  std::string m_repr;
52  void (Fopr_Wilson_Isochemical::*m_D)(Field&, const Field&);
54 
55  const Field_G *m_U;
56 
59 
60  public:
61 
63  {
64  init("Dirac");
65  }
66 
67  Fopr_Wilson_Isochemical(std::string repr) : Fopr()
68  {
69  init(repr);
70  }
71 
73  {
74  tidyup();
75  }
76 
77  // this method is temporary. After all calls specify bc, to be removed.
78  void set_parameters(const Parameters& params);
79 
80  void set_parameters(const double kappa, const double mu,
81  const std::vector<int> bc);
82 
83  void set_config(Field *U)
84  {
85  m_U = (Field_G *)U;
86  m_fopr_w->set_config(U);
87  }
88 
90  {
91  m_U = U.get();
92  m_fopr_w->set_config(U.get());
93  }
94 
95  void mult(Field& v, const Field& f)
96  {
97  (this->*m_mult)(v, f);
98  }
99 
100  void mult_dag(Field& v, const Field& f)
101  {
102  (this->*m_mult_dag)(v, f);
103  }
104 
105  void set_mode(std::string mode)
106  {
107  m_mode = mode;
108 
109  if (m_mode == "D") {
112  } else if (m_mode == "Ddag") {
115  } else if (m_mode == "DdagD") {
118  } else if (m_mode == "H") {
121  } else {
122  vout.crucial(m_vl, "Error at %s: input mode is undefined.\n", class_name.c_str());
123  exit(EXIT_FAILURE);
124  }
125  }
126 
127  std::string get_mode() const
128  {
129  return m_mode;
130  }
131 
132  void mult_gm5p(int mu, Field_F& v, const Field_F& w);
133 
134  void mult_gm5(Field&, const Field&);
135  void D(Field&, const Field&);
136  void Dminmu(Field&, const Field&);
137  void Dspc(Field&, const Field&);
138 
139  void DdagD(Field&, const Field&);
140  void Ddag(Field&, const Field&);
141  void H(Field&, const Field&);
142  void Hdag(Field&, const Field&);
143 
144  void mult_undef(Field&, const Field&)
145  {
146  vout.crucial(m_vl, "Error at %s: mode undefined.\n", class_name.c_str());
147  exit(EXIT_FAILURE);
148  }
149 
150  void mult_up(int mu, Field& v, const Field& w)
151  {
152  m_fopr_w->mult_up(mu, v, w);
153  }
154 
155  void mult_dn(int mu, Field& v, const Field& w)
156  {
157  m_fopr_w->mult_dn(mu, v, w);
158  }
159 
160  int field_nvol() { return CommonParameters::Nvol(); }
162  int field_nex() { return 1; }
163 
165  double flop_count();
166 
167  private:
168  void init(std::string repr);
169  void tidyup();
170 };
171 #endif
void set_config(Field *U)
setting pointer to the gauge configuration.
void Hdag(Field &, const Field &)
BridgeIO vout
Definition: bridgeIO.cpp:495
double m_kappa
hopping parameter
void set_config(Field *U)
setting pointer to the gauge configuration.
void(Fopr_Wilson_Isochemical::* m_mult)(Field &, const Field &)
void mult_gm5(Field &, const Field &)
gamma_5 multiplication. [31 Mar 2017 H.Matsufuru]
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 &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
Class for parameters.
Definition: parameters.h:46
void(Fopr_Wilson_Isochemical::* m_D)(Field &, const Field &)
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
SU(N) gauge field.
Definition: field_G.h:38
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void D(Field &, const Field &)
Wilson fermion operator with isospin chemical potential.
Bridge::VerboseLevel m_vl
Definition: fopr.h:128
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void mult_up(int mu, Field &w, const Field &f)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
void set_parameters(const Parameters &params)
pointer get() const
void(Fopr_Wilson_Isochemical::* m_gm5)(Field &, const Field &)
void Dminmu(Field &, const Field &)
std::string get_mode() const
only for Fopr_Overlap
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
void mult_dn(int mu, Field &v, const Field &w)
void(Fopr_Wilson_Isochemical::* m_mult_dag)(Field &, const Field &)
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)
void mult_dn(int mu, Field &w, const Field &f)
Base class of fermion operator family.
Definition: fopr.h:47
static const std::string class_name
Fopr_Wilson_Isochemical(std::string repr)
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&).