Bridge++  Ver.2.1.3
afopr_Wilson_eo.h
Go to the documentation of this file.
1 
9 #ifndef ACCEL_AFOPR_WILSON_EO_H
10 #define ACCEL_AFOPR_WILSON_EO_H
11 
12 #include <cstdio>
13 #include <cstdlib>
14 #include <string>
15 #include <vector>
16 
19 #include "lib/Fopr/afopr.h"
20 
22 
23 class Field;
24 
26 
33 template<typename AFIELD>
34 class AFopr_Wilson_eo : public AFopr<AFIELD>
35 {
36  public:
37  typedef typename AFIELD::real_t real_t;
38  static const std::string class_name;
39 
40  protected:
42 
45  int m_Nx2, m_Nst2;
46 
48  std::vector<int> m_boundary;
50 
52 
54 
57 
58  std::string m_mode;
59 
61 
62  int do_comm[4];
64 
65  int m_Nsize[4];
66  int m_bc[4];
67  int m_bc2[4];
68 
69  std::vector<int> m_Nbdsize;
71  std::vector<Channel> chsend_up, chrecv_up, chsend_dn, chrecv_dn;
73 
74 public:
75 
77  AFopr_Wilson_eo(const Parameters& params){ init(params); }
78 
81 
83  void set_parameters(const Parameters& params);
84 
86  void set_parameters(real_t CKs, std::vector<int> bc);
87 
89  void get_parameters(Parameters& params) const;
90 
92  void set_config(Field* u);
93 
95  inline Field* get_conf() { return m_conf; }
96 
98  void set_mode(std::string mode);
99 
101  std::string get_mode() const { return m_mode; }
102 
103  void mult(AFIELD&, const AFIELD&);
104  void mult_dag(AFIELD&, const AFIELD&);
105  void mult_gm5(AFIELD&, const AFIELD&);
106 
107  void mult(AFIELD&, const AFIELD&,
108  const std::string mode);
109 
110  void DdagD(AFIELD&, const AFIELD&);
111  void Ddag(AFIELD&, const AFIELD&);
112  void D(AFIELD&, const AFIELD&);
113 
115  void Meo(AFIELD&, const AFIELD&, const int ieo);
116 
118  void Meo(AFIELD&, const AFIELD&, const AFIELD&,
119  const int ieo, const int iflag);
120 
122  void Meo_alt(AFIELD&, const AFIELD&, const int ieo);
123 
125  void Meo_alt(AFIELD&, const AFIELD&, const AFIELD&,
126  const int ieo, const int iflag);
127 
129  int field_nin() { return 2 * m_Nc * m_Nd; }
130 
132  int field_nvol() { return m_Nst2; }
133 
135  int field_nex() { return 1; }
136 
138  double flop_count();
139 
141  double flop_count(const std::string mode);
142 
143  private:
145  void init(const Parameters& params);
146 
148  void tidyup();
149 
151  void setup_channels();
152 
153  void set_config_omp(Field* u);
154  void set_config_impl(Field* u);
155 
156  void mult_xp(real_t*, real_t*, const int);
157  void mult_xm(real_t*, real_t*, const int);
158  void mult_yp(real_t*, real_t*, const int);
159  void mult_ym(real_t*, real_t*, const int);
160  void mult_zp(real_t*, real_t*, const int);
161  void mult_zm(real_t*, real_t*, const int);
162  void mult_tp(real_t*, real_t*, const int);
163  void mult_tm(real_t*, real_t*, const int);
164 
165 
166 #ifdef USE_FACTORY
167  private:
168  static AFopr<AFIELD> *create_object_with_params(const Parameters& params)
169  { return new AFopr_Wilson_eo(params); }
170 
171  public:
172  static bool register_factory()
173  {
174  bool init1 = AFopr<AFIELD>::Factory_params::Register("Wilson_eo",
175  create_object_with_params);
176  return init1;
177  }
178 #endif
179 
180 };
181 
182 #endif // ACCEL_AFOPR_WILSON_EO_H
AFopr_Wilson_eo::mult_yp
void mult_yp(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:747
AFopr_Wilson_eo::m_Nst2
int m_Nst2
Definition: afopr_Wilson_eo.h:45
AFopr_Wilson_eo::Gamma_repr
Gamma_repr
Definition: afopr_Wilson_eo.h:41
AFopr_Wilson_eo::D
void D(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:476
AFopr_Wilson_eo::setup_channels
void setup_channels()
setup channels for communication.
Definition: afopr_Wilson_eo-tmpl.h:123
AFopr_Wilson_eo::m_v1
AFIELD m_v1
Definition: afopr_Wilson_eo.h:60
AFopr
Definition: afopr.h:48
AFopr_Wilson_eo::field_nin
int field_nin()
returns inner size parameter.
Definition: afopr_Wilson_eo.h:129
AFopr_Wilson_eo::m_Nx2
int m_Nx2
Definition: afopr_Wilson_eo.h:45
AFopr_Wilson_eo::mult_xm
void mult_xm(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:697
AFopr_Wilson_eo::m_bc2
int m_bc2[4]
boundary condition for bulk part
Definition: afopr_Wilson_eo.h:67
communicator_impl.h
Parameters
Class for parameters.
Definition: parameters.h:46
AFopr_Wilson_eo::init
void init(const Parameters &params)
initial setup.
Definition: afopr_Wilson_eo-tmpl.h:30
AFopr_Wilson_eo::chsend_up
std::vector< Channel > chsend_up
Definition: afopr_Wilson_eo.h:71
AFopr_Wilson_eo::class_name
static const std::string class_name
Definition: afopr_Wilson_eo.h:38
AFopr_Wilson_eo::CHIRAL
@ CHIRAL
Definition: afopr_Wilson_eo.h:41
AFopr_Wilson_eo::mult
void mult(AFIELD &, const AFIELD &)
multiplies fermion operator to a given field.
Definition: afopr_Wilson_eo-tmpl.h:367
AFopr_Wilson_eo::DdagD
void DdagD(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:455
AFopr_Wilson_eo::m_Nx
int m_Nx
Definition: afopr_Wilson_eo.h:44
AFopr_Wilson_eo::Ddag
void Ddag(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:465
AFopr_Wilson_eo::m_Ndf
int m_Ndf
Definition: afopr_Wilson_eo.h:43
ChannelSet
ChannelSet class for a collection of channels.
Definition: channel.h:148
aindex_eo.h
AFopr_Wilson_eo::m_Ueo
AFIELD m_Ueo
gauge config. with even-odd separation
Definition: afopr_Wilson_eo.h:56
AFopr_Wilson_eo::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: afopr_Wilson_eo.h:49
AFopr_Wilson_eo::field_nvol
int field_nvol()
returns local volume size parameter.
Definition: afopr_Wilson_eo.h:132
AFopr_Wilson_eo::set_mode
void set_mode(std::string mode)
setting mult mode.
Definition: afopr_Wilson_eo-tmpl.h:354
AFopr_Wilson_eo::m_v2
AFIELD m_v2
working vectors
Definition: afopr_Wilson_eo.h:60
Field::real_t
double real_t
Definition: field.h:51
AFopr_Wilson_eo::mult_zm
void mult_zm(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:897
AFopr_Wilson_eo::m_Ndim
int m_Ndim
Definition: afopr_Wilson_eo.h:44
AFopr_Wilson_eo::real_t
AFIELD::real_t real_t
Definition: afopr_Wilson_eo.h:37
AFopr_Wilson_eo::mult_zp
void mult_zp(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:847
AFopr_Wilson_eo::set_config
void set_config(Field *u)
setting gauge configuration.
Definition: afopr_Wilson_eo-tmpl.h:308
AFopr_Wilson_eo::set_parameters
void set_parameters(const Parameters &params)
setting parameters by a Parameter object.
Definition: afopr_Wilson_eo-tmpl.h:203
AFopr_Wilson_eo::m_Nz
int m_Nz
Definition: afopr_Wilson_eo.h:44
AFopr_Wilson_eo::m_Ieo_origin
int m_Ieo_origin
e-o of local lattice origin
Definition: afopr_Wilson_eo.h:53
AFopr_Wilson_eo::Meo
void Meo(AFIELD &, const AFIELD &, const int ieo)
Fermion matrix with ieo = 0: even <– odd, 1: odd <– even.
Definition: afopr_Wilson_eo-tmpl.h:486
AFopr_Wilson_eo::m_boundary
std::vector< int > m_boundary
pointer to boundary condition
Definition: afopr_Wilson_eo.h:48
AFopr_Wilson_eo::Meo_alt
void Meo_alt(AFIELD &, const AFIELD &, const int ieo)
Fermion matrix with ieo = 0: even <– odd, 1: odd <– even.
Definition: afopr_Wilson_eo-tmpl.h:495
AFopr_Wilson_eo::chrecv_dn
std::vector< Channel > chrecv_dn
Definition: afopr_Wilson_eo.h:71
AFopr_Wilson_eo::m_Nvc
int m_Nvc
Definition: afopr_Wilson_eo.h:43
AFopr_Wilson_eo::m_mode
std::string m_mode
mult mode
Definition: afopr_Wilson_eo.h:58
AFopr_Wilson_eo::mult_tm
void mult_tm(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:1008
AFopr_Wilson_eo::get_conf
Field * get_conf()
returns the pointer to gauge configuration.
Definition: afopr_Wilson_eo.h:95
AFopr_Wilson_eo::AFopr_Wilson_eo
AFopr_Wilson_eo(const Parameters &params)
constructor.
Definition: afopr_Wilson_eo.h:77
AFopr_Wilson_eo::do_comm_any
int do_comm_any
switchs of communication (if any): (0: n, 1: y).
Definition: afopr_Wilson_eo.h:63
AFopr_Wilson_eo::field_nex
int field_nex()
returns external size parameter.
Definition: afopr_Wilson_eo.h:135
AFopr_Wilson_eo::chrecv_up
std::vector< Channel > chrecv_up
Definition: afopr_Wilson_eo.h:71
AFopr_Wilson_eo::m_Ny
int m_Ny
Definition: afopr_Wilson_eo.h:44
AFopr_Wilson_eo::mult_tp
void mult_tp(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:946
AFopr_Wilson_eo::chset_send
ChannelSet chset_send
Definition: afopr_Wilson_eo.h:72
real_t
double real_t
Definition: bridgeACC_AField_double.cpp:14
AFopr_Wilson_eo::chset_recv
ChannelSet chset_recv
Definition: afopr_Wilson_eo.h:72
AFopr_Wilson_eo::m_conf
Field * m_conf
pointer to original gauge configuration
Definition: afopr_Wilson_eo.h:55
AFopr_Wilson_eo::mult_dag
void mult_dag(AFIELD &, const AFIELD &)
hermitian conjugate of mult.
Definition: afopr_Wilson_eo-tmpl.h:385
AFopr_Wilson_eo::m_Nbdsize
std::vector< int > m_Nbdsize
Definition: afopr_Wilson_eo.h:69
AFopr_Wilson_eo::mult_xp
void mult_xp(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:647
AFopr_Wilson_eo::tidyup
void tidyup()
final tidy-up.
Definition: afopr_Wilson_eo-tmpl.h:174
AFopr_Wilson_eo::~AFopr_Wilson_eo
~AFopr_Wilson_eo()
destructor.
Definition: afopr_Wilson_eo.h:80
AFopr_Wilson_eo::DIRAC
@ DIRAC
Definition: afopr_Wilson_eo.h:41
AFopr_Wilson_eo::m_Nc
int m_Nc
Definition: afopr_Wilson_eo.h:43
AFopr_Wilson_eo::mult_ym
void mult_ym(real_t *, real_t *, const int)
Definition: afopr_Wilson_eo-tmpl.h:797
AFopr_Wilson_eo::m_Nt
int m_Nt
Definition: afopr_Wilson_eo.h:44
AFopr_Wilson_eo::m_repr
enum AFopr_Wilson_eo::Gamma_repr m_repr
gamma matrix representation
AFopr_Wilson_eo::m_index_eo
AIndex_eo< real_t, AFIELD::IMPL > m_index_eo
Definition: afopr_Wilson_eo.h:51
AFopr_Wilson_eo::m_CKs
real_t m_CKs
hopping parameter.
Definition: afopr_Wilson_eo.h:47
AFopr_Wilson_eo::do_comm
int do_comm[4]
switchs of communication (4=Ndim): (0: n, 1: y).
Definition: afopr_Wilson_eo.h:62
Field
Container of Field-type object.
Definition: field.h:46
AFopr_Wilson_eo::m_Nst
int m_Nst
Definition: afopr_Wilson_eo.h:44
AFopr_Wilson_eo::chsend_dn
std::vector< Channel > chsend_dn
Definition: afopr_Wilson_eo.h:71
afopr.h
AFopr_Wilson_eo::get_mode
std::string get_mode() const
return the current mult mode.
Definition: afopr_Wilson_eo.h:101
communicator.h
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
AFopr_Wilson_eo::set_config_impl
void set_config_impl(Field *u)
Definition: afopr_Wilson_eo-tmpl.h:339
AFopr_Wilson_eo::m_bc
int m_bc[4]
boundary condition for boundary part
Definition: afopr_Wilson_eo.h:66
AFopr_Wilson_eo::flop_count
double flop_count()
returns floating operation counts.
Definition: afopr_Wilson_eo-tmpl.h:1070
AFopr_Wilson_eo::m_Ncol
int m_Ncol
Definition: afopr_Wilson_eo.h:43
AFopr_Wilson_eo::set_config_omp
void set_config_omp(Field *u)
Definition: afopr_Wilson_eo-tmpl.h:326
AFopr_Wilson_eo::m_Nd
int m_Nd
Definition: afopr_Wilson_eo.h:43
AFopr_Wilson_eo::m_Nsize
int m_Nsize[4]
lattice size for kernel
Definition: afopr_Wilson_eo.h:65
Channel_impl
Definition: channel.h:86
AFopr_Wilson_eo
Wilson fermion operator (even-odd) for Accel branch.
Definition: afopr_Wilson_eo.h:34
AFopr_Wilson_eo::mult_gm5
void mult_gm5(AFIELD &, const AFIELD &)
multiplies gamma_5 matrix.
Definition: afopr_Wilson_eo-tmpl.h:432
AIndex_eo< real_t, AFIELD::IMPL >
AFopr_Wilson_eo::get_parameters
void get_parameters(Parameters &params) const
getting parameters as a Parameters object.
Definition: afopr_Wilson_eo-tmpl.h:293