Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
field_G_SF.h
Go to the documentation of this file.
1 
15 #ifndef FIELD_G_SF_INCLUDED
16 #define FIELD_G_SF_INCLUDED
17 
18 #include "parameters.h"
19 #include "field_G.h"
20 
22 
32 //- parameters class
34 class Parameters_Field_G_SF : virtual public Parameters
35 {
36  public:
38 };
39 //- end
40 
41 class Field_G_SF : public Field_G
42 {
43  private:
45  int m_Nc;
47  int m_Ndf;
49  int m_Nvol;
51  int m_Nex;
52 
53  int Nx, Ny, Nz, Nt, Svol;
54  int NPEt;
55 
60 
61  public:
62 
63  // Field_G_SF(){}
64  Field_G_SF(const int Nvol = CommonParameters::Nvol(), const int Nex = 1) :
65  m_Nc(CommonParameters::Nc()), m_Nvol(Nvol), m_Nex(Nex),
66  wk(m_Nc), wkpr(m_Nc)
67  {
73  Svol = Nx * Ny * Nz;
74  m_Ndf = 2 * m_Nc * m_Nc;
76  }
77 
78  Field_G_SF(const Field& x) :
79  Field_G(x),
80  m_Nc(CommonParameters::Nc()), m_Ndf(x.nin()), m_Nvol(x.nvol()), m_Nex(x.nex()),
81  wk(m_Nc), wkpr(m_Nc)
82  {
83  assert(m_Ndf == 2 * m_Nc * m_Nc);
89  Svol = Nx * Ny * Nz;
90  }
91 
92  Field_G_SF(double *phi, double *phipr) :
94  {
95  int Lx = CommonParameters::Lx();
96 
97  m_Nex = 1;
104  Svol = Nx * Ny * Nz;
105  m_Ndf = 2 * m_Nc * m_Nc;
106 
107  double c0r, c0i, c1r, c1i, c2r, c2i;
108  c0r = cos(phi[0] / Lx);
109  c0i = sin(phi[0] / Lx);
110  c1r = cos(phi[1] / Lx);
111  c1i = sin(phi[1] / Lx);
112  c2r = cos(phi[2] / Lx);
113  c2i = sin(phi[2] / Lx);
114  wk.zero();
115  wk.set(0, 0, c0r, c0i);
116  wk.set(1, 1, c1r, c1i);
117  wk.set(2, 2, c2r, c2i);
118 
119  c0r = cos(phipr[0] / Lx);
120  c0i = sin(phipr[0] / Lx);
121  c1r = cos(phipr[1] / Lx);
122  c1i = sin(phipr[1] / Lx);
123  c2r = cos(phipr[2] / Lx);
124  c2i = sin(phipr[2] / Lx);
125  wkpr.zero();
126  wkpr.set(0, 0, c0r, c0i);
127  wkpr.set(1, 1, c1r, c1i);
128  wkpr.set(2, 2, c2r, c2i);
129  }
130 
132  void set_parameters(const Parameters_Field_G_SF& params);
133 
135  void set_parameters(const std::valarray<double>& phi,
136  const std::valarray<double>& phipr);
137 
139  void set_parameters(double *phi, double *phipr);
140 
142  void set_boundary_wk(const Mat_SU_N& U);
143 
145  void set_boundary_wkpr(const Mat_SU_N& U);
146 
148  void set_boundary_zero();
149 
152 
154  void mult_ct_boundary(int t, double ct);
155 
156 
158  void set_boundary_wk(Field_G& f);
159 
161  void set_boundary_wkpr(Field_G& f);
162 
164  void set_boundary_zero(Field_G& f);
165 
168 };
169 #endif