Bridge++  Ver.2.1.3
afopr_Wilson.h
Go to the documentation of this file.
1 
9 #ifndef ACCEL_AFOPR_WILSON_H
10 #define ACCEL_AFOPR_WILSON_H
11 
12 #include <cstdio>
13 #include <cstdlib>
14 #include <string>
15 #include <vector>
16 
17 #include "lib/Fopr/afopr.h"
21 
22 class Field;
23 
25 
32 template<typename AFIELD>
33 class AFopr_Wilson : public AFopr<AFIELD>
34 {
35  public:
36  typedef typename AFIELD::real_t real_t;
37  static const std::string class_name;
38 
39  protected:
41 
43 
45  std::vector<int> m_boundary;
47 
50 
51  std::string m_mode;
52 
54 
55  int do_comm[4]; // switchs of communication (4=Ndim): (0: n, 1: y).
56  int do_comm_any; // switchs of communication (if any): (0: n, 1: y).
57 
58  std::vector<int> m_Nbdsize;
60  std::vector<Channel> chsend_up, chrecv_up, chsend_dn, chrecv_dn;
62 
63  int m_Nsize[4];
64  int m_bc[4];
65  int m_bc2[4];
66 
67 public:
68 
70  AFopr_Wilson(const Parameters& params) : AFopr<AFIELD>()
71  { init(params); }
72 
75 
77  void set_parameters(const Parameters& params);
78 
80  void set_parameters(real_t CKs, std::vector<int> bc);
81 
83  void get_parameters(Parameters& params) const;
84 
86  void set_config(Field* u);
87 
89  void set_boundary_config(AFIELD& U, const int mu);
90 
92  inline Field* get_conf(void){return m_conf;};
93 
95  void set_mode(std::string mode);
96 
98  std::string get_mode() const { return m_mode; }
99 
100  void mult(AFIELD&, const AFIELD&);
101  void mult_dag(AFIELD&, const AFIELD&);
102 
103  void mult(AFIELD&, const AFIELD&, const std::string mode);
104  void mult_dag(AFIELD&, const AFIELD&, const std::string mode);
105 
106  void mult_gm5(AFIELD&, const AFIELD&);
107 
109  virtual void mult_up(int mu, AFIELD&, const AFIELD&);
110 
112  virtual void mult_dn(int mu, AFIELD&, const AFIELD&);
113 
115  int field_nin() { return 2 * m_Nc * m_Nd; }
116 
118  int field_nvol() { return m_Nst; }
119 
121  int field_nex() { return 1; }
122 
124  double flop_count();
125 
127  double flop_count(const std::string mode);
128 
129  private:
130 
132  void init(const Parameters& params);
133 
135  void tidyup();
136 
138  void setup_channels();
139 
140  void set_config_omp(Field* u);
141  void set_config_impl(Field* u);
142 
143  void mult_DdagD(AFIELD&, const AFIELD&);
144  void mult_Ddag(AFIELD&, const AFIELD&);
145  void mult_H(AFIELD&, const AFIELD&);
146  void mult_D(AFIELD&, const AFIELD&);
147  void mult_DorH(AFIELD&, const AFIELD&, const int flag);
148 
149  void mult_H_alt(AFIELD&, const AFIELD&);
150  void mult_D_alt(AFIELD&, const AFIELD&);
151 
152  void mult_xp(real_t*, real_t*);
153  void mult_xm(real_t*, real_t*);
154  void mult_yp(real_t*, real_t*);
155  void mult_ym(real_t*, real_t*);
156  void mult_zp(real_t*, real_t*);
157  void mult_zm(real_t*, real_t*);
158  void mult_tp(real_t*, real_t*);
159  void mult_tm(real_t*, real_t*);
160 
161 #ifdef USE_FACTORY
162  private:
163  static AFopr<AFIELD> *create_object_with_params(const Parameters& params)
164  { return new AFopr_Wilson(params); }
165 
166  public:
167  static bool register_factory()
168  {
169  bool init1 = AFopr<AFIELD>::Factory_params::Register("Wilson",
170  create_object_with_params);
171  return init1;
172  }
173 #endif
174 
175 };
176 
177 #endif // ACCEL_AFOPR_WILSON_H
AFopr_Wilson::mult_xm
void mult_xm(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:704
AFopr_Wilson::mult_DorH
void mult_DorH(AFIELD &, const AFIELD &, const int flag)
Definition: afopr_Wilson-tmpl.h:492
AFopr_Wilson::class_name
static const std::string class_name
Definition: afopr_Wilson.h:37
AFopr_Wilson::mult_tm
void mult_tm(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:1014
AFopr_Wilson::m_mode
std::string m_mode
mult mode
Definition: afopr_Wilson.h:51
AFopr_Wilson::mult_xp
void mult_xp(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:654
AFopr
Definition: afopr.h:48
AFopr_Wilson::do_comm
int do_comm[4]
Definition: afopr_Wilson.h:55
AFopr_Wilson::field_nex
int field_nex()
returns external size parameter.
Definition: afopr_Wilson.h:121
AFopr_Wilson::mult_dag
void mult_dag(AFIELD &, const AFIELD &)
hermitian conjugate of mult.
Definition: afopr_Wilson-tmpl.h:370
communicator_impl.h
Parameters
Class for parameters.
Definition: parameters.h:46
AFopr_Wilson::set_boundary_config
void set_boundary_config(AFIELD &U, const int mu)
setting fermion boundary condition to gauge field.
AFopr_Wilson::mult_D
void mult_D(AFIELD &, const AFIELD &)
Definition: afopr_Wilson-tmpl.h:454
AFopr_Wilson::set_mode
void set_mode(std::string mode)
setting mult mode.
Definition: afopr_Wilson-tmpl.h:337
AFopr_Wilson::Gamma_repr
Gamma_repr
Definition: afopr_Wilson.h:40
AFopr_Wilson::mult_D_alt
void mult_D_alt(AFIELD &, const AFIELD &)
Definition: afopr_Wilson-tmpl.h:585
AFopr_Wilson::mult_gm5
void mult_gm5(AFIELD &, const AFIELD &)
multiplies gamma_5 matrix.
Definition: afopr_Wilson-tmpl.h:432
AFopr_Wilson::mult_dn
virtual void mult_dn(int mu, AFIELD &, const AFIELD &)
downward nearest neighbor hopping term.
Definition: afopr_Wilson-tmpl.h:631
AFopr_Wilson::chset_recv
ChannelSet chset_recv
Definition: afopr_Wilson.h:61
AFopr_Wilson::mult_zm
void mult_zm(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:903
AFopr_Wilson::m_Ndim
int m_Ndim
Definition: afopr_Wilson.h:42
AFopr_Wilson::chsend_up
std::vector< Channel > chsend_up
Definition: afopr_Wilson.h:60
AFopr_Wilson::set_parameters
void set_parameters(const Parameters &params)
setting parameters by a Parameter object.
Definition: afopr_Wilson-tmpl.h:184
AFopr_Wilson::chrecv_dn
std::vector< Channel > chrecv_dn
Definition: afopr_Wilson.h:60
ChannelSet
ChannelSet class for a collection of channels.
Definition: channel.h:148
AFopr_Wilson::m_CKs
real_t m_CKs
hopping parameter.
Definition: afopr_Wilson.h:44
AFopr_Wilson::mult_yp
void mult_yp(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:754
AFopr_Wilson::mult_up
virtual void mult_up(int mu, AFIELD &, const AFIELD &)
upward nearest neighbor hopping term.
Definition: afopr_Wilson-tmpl.h:608
AFopr_Wilson::get_conf
Field * get_conf(void)
returns the pointer to gauge configuration.
Definition: afopr_Wilson.h:92
AFopr_Wilson::~AFopr_Wilson
~AFopr_Wilson()
destructor.
Definition: afopr_Wilson.h:74
AFopr_Wilson::m_Nd
int m_Nd
Definition: afopr_Wilson.h:42
AFopr_Wilson::init
void init(const Parameters &params)
initial setup.
Definition: afopr_Wilson-tmpl.h:30
AFopr_Wilson::get_parameters
void get_parameters(Parameters &params) const
getting parameters as a Parameters object.
Definition: afopr_Wilson-tmpl.h:321
AFopr_Wilson::mult_Ddag
void mult_Ddag(AFIELD &, const AFIELD &)
Definition: afopr_Wilson-tmpl.h:469
AFopr_Wilson::mult_DdagD
void mult_DdagD(AFIELD &, const AFIELD &)
Definition: afopr_Wilson-tmpl.h:461
Field::real_t
double real_t
Definition: field.h:51
AFopr_Wilson::set_config
void set_config(Field *u)
setting gauge configuration.
Definition: afopr_Wilson-tmpl.h:274
AFopr_Wilson::setup_channels
void setup_channels()
setup channels for communication.
Definition: afopr_Wilson-tmpl.h:102
AFopr_Wilson::m_Nbdsize
std::vector< int > m_Nbdsize
Definition: afopr_Wilson.h:58
AFopr_Wilson::mult_H
void mult_H(AFIELD &, const AFIELD &)
Definition: afopr_Wilson-tmpl.h:477
AFopr_Wilson::m_U
AFIELD m_U
copied gauge config. with boundary conditions.
Definition: afopr_Wilson.h:49
AFopr_Wilson::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: afopr_Wilson.h:46
AFopr_Wilson
Wilson fermion operator for Accel branch.
Definition: afopr_Wilson.h:33
AFopr_Wilson::do_comm_any
int do_comm_any
Definition: afopr_Wilson.h:56
AFopr_Wilson::m_bc2
int m_bc2[4]
boundary condition for bulk part
Definition: afopr_Wilson.h:65
AFopr_Wilson::mult_tp
void mult_tp(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:952
AFopr_Wilson::field_nvol
int field_nvol()
returns local volume size parameter.
Definition: afopr_Wilson.h:118
AFopr_Wilson::real_t
AFIELD::real_t real_t
Definition: afopr_Wilson.h:36
AFopr_Wilson::DIRAC
@ DIRAC
Definition: afopr_Wilson.h:40
AFopr_Wilson::m_v2
AFIELD m_v2
working vector
Definition: afopr_Wilson.h:53
AFopr_Wilson::mult_ym
void mult_ym(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:803
AFopr_Wilson::chrecv_up
std::vector< Channel > chrecv_up
Definition: afopr_Wilson.h:60
parameters.h
AFopr_Wilson::m_bc
int m_bc[4]
boundary condition for boundary part
Definition: afopr_Wilson.h:64
real_t
double real_t
Definition: bridgeACC_AField_double.cpp:14
AFopr_Wilson::m_Nc
int m_Nc
Definition: afopr_Wilson.h:42
AFopr_Wilson::chset_send
ChannelSet chset_send
Definition: afopr_Wilson.h:61
AFopr_Wilson::set_config_omp
void set_config_omp(Field *u)
Definition: afopr_Wilson-tmpl.h:292
AFopr_Wilson::m_boundary
std::vector< int > m_boundary
pointer to boundary condition
Definition: afopr_Wilson.h:45
AFopr_Wilson::chsend_dn
std::vector< Channel > chsend_dn
Definition: afopr_Wilson.h:60
AFopr_Wilson::set_config_impl
void set_config_impl(Field *u)
Definition: afopr_Wilson-tmpl.h:305
AFopr_Wilson::tidyup
void tidyup()
final tidy-up.
Definition: afopr_Wilson-tmpl.h:155
AFopr_Wilson::flop_count
double flop_count()
returns floating operation counts.
Definition: afopr_Wilson-tmpl.h:1076
AFopr_Wilson::mult_H_alt
void mult_H_alt(AFIELD &, const AFIELD &)
Definition: afopr_Wilson-tmpl.h:484
AFopr_Wilson::get_mode
std::string get_mode() const
returns mult mode.
Definition: afopr_Wilson.h:98
Field
Container of Field-type object.
Definition: field.h:46
afopr.h
AFopr_Wilson::m_Nst
int m_Nst
Definition: afopr_Wilson.h:42
communicator.h
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
AFopr_Wilson::mult
void mult(AFIELD &, const AFIELD &)
multiplies fermion operator to a given field.
Definition: afopr_Wilson-tmpl.h:349
AFopr_Wilson::m_repr
enum AFopr_Wilson::Gamma_repr m_repr
gamma matrix representation
AFopr_Wilson::m_Nsize
int m_Nsize[4]
lattice size for kernel
Definition: afopr_Wilson.h:63
AFopr_Wilson::m_conf
Field * m_conf
original gauge config.
Definition: afopr_Wilson.h:48
AFopr_Wilson::field_nin
int field_nin()
returns inner size parameter.
Definition: afopr_Wilson.h:115
AFopr_Wilson::mult_zp
void mult_zp(real_t *, real_t *)
Definition: afopr_Wilson-tmpl.h:853
AFopr_Wilson::AFopr_Wilson
AFopr_Wilson(const Parameters &params)
constructor.
Definition: afopr_Wilson.h:70
Channel_impl
Definition: channel.h:86
AFopr_Wilson::CHIRAL
@ CHIRAL
Definition: afopr_Wilson.h:40