Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
field_F_1spinor.h
Go to the documentation of this file.
1 
15 #ifndef FIELD_F_1sp_INCLUDED
16 #define FIELD_F_1sp_INCLUDED
17 
18 #include "commonParameters.h"
19 #include "communicator.h"
20 #include "field.h"
21 #include "vec_SU_N.h"
22 using namespace SU_N;
23 
25 
31 class Field_F_1spinor : public Field
32 {
33  private:
34  int m_Nc; // num of the color elements
35  int m_Nc2; // num of the double color elements
36 
37  inline
38  int myindex(const int c2, const int site, const int ex) const
39  {
40  return Field::myindex(c2, site, ex);
41  }
42 
43  public:
44 
45  explicit
46  Field_F_1spinor(const int Nvol = CommonParameters::Nvol(), const int Nex = 1) :
47  Field(2 * CommonParameters::Nc(), Nvol, Nex),
48  m_Nc(CommonParameters::Nc()),
49  m_Nc2(2 * CommonParameters::Nc())
50  {
51  }
52 
53  // conversion from Field
54  Field_F_1spinor(const Field& x) :
55  Field(x),
56  m_Nc(CommonParameters::Nc()),
57  m_Nc2(2 * CommonParameters::Nc())
58  {
59  }
60 
61  // assignment
62  Field_F_1spinor& operator=(const double a) { field = a; return *this; }
63 
64  // accessor
65  double cmp_r(const int cc, const int site, const int e = 0) const
66  {
67  return field[myindex(2 * cc, site, e)];
68  }
69 
70  double cmp_i(const int cc, const int site, const int e = 0) const
71  {
72  return field[myindex(2 * cc + 1, site, e)];
73  }
74 
75  void set_r(const int cc, const int site, const int e, const double re)
76  {
77  field[myindex(2 * cc, site, e)] = re;
78  }
79 
80  void set_i(const int cc, const int site, const int e, const double im)
81  {
82  field[myindex(2 * cc + 1, site, e)] = im;
83  }
84 
85  void set_ri(const int cc, const int site, const int e, const double re, const double im)
86  {
87  field[myindex(2 * cc, site, e)] = re;
88  field[myindex(2 * cc + 1, site, e)] = im;
89  }
90 
91  Vec_SU_N vec(const int site, const int e = 0) const
92  {
93  Vec_SU_N Tmp;
94 
95  for (int cc = 0; cc < m_Nc; ++cc) {
96  Tmp.set(cc,
97  field[myindex(2 * cc, site, e)],
98  field[myindex(2 * cc + 1, site, e)]);
99  }
100  return Tmp;
101  }
102 
103  void set_vec(const int site, const int e, const Vec_SU_N& F)
104  {
105  for (int cc = 0; cc < m_Nc; ++cc) {
106  field[myindex(2 * cc, site, e)] = F.r(cc);
107  field[myindex(2 * cc + 1, site, e)] = F.i(cc);
108  }
109  }
110 
111  void add_vec(const int site, const int e, const Vec_SU_N& F)
112  {
113  for (int cc = 0; cc < m_Nc; ++cc) {
114  field[myindex(2 * cc, site, e)] += F.r(cc);
115  field[myindex(2 * cc + 1, site, e)] += F.i(cc);
116  }
117  }
118 
119  void clear_vec(const int site, const int e)
120  {
121  for (int cc = 0; cc < m_Nc2; ++cc) {
122  field[myindex(cc, site, e)] = 0.0;
123  }
124  }
125 };
126 
127 #endif
void clear_vec(const int site, const int e)
double cmp_i(const int cc, const int site, const int e=0) const
double r(const int c) const
Definition: vec_SU_N.h:65
void set_ri(const int cc, const int site, const int e, const double re, const double im)
Container of Field-type object.
Definition: field.h:37
int myindex(const int c2, const int site, const int ex) const
Field_F_1spinor(const int Nvol=CommonParameters::Nvol(), const int Nex=1)
void set_r(const int cc, const int site, const int e, const double re)
Field_F_1spinor(const Field &x)
void set(const int c, const double re, const double im)
Definition: vec_SU_N.h:74
Staggered-type fermion field.
double i(const int c) const
Definition: vec_SU_N.h:67
Common parameter class: provides parameters as singleton.
void add_vec(const int site, const int e, const Vec_SU_N &F)
double cmp_r(const int cc, const int site, const int e=0) const
Field_F_1spinor & operator=(const double a)
Vec_SU_N vec(const int site, const int e=0) const
void set_vec(const int site, const int e, const Vec_SU_N &F)
int myindex(const int jin, const int site, const int jex) const
Definition: field.h:52
void set_i(const int cc, const int site, const int e, const double im)