Bridge++  Ver. 1.3.x
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  {
68  Nx = CommonParameters::Nx();
69  Ny = CommonParameters::Ny();
70  Nz = CommonParameters::Nz();
71  Nt = CommonParameters::Nt();
72  NPEt = CommonParameters::NPEt();
73  Svol = Nx * Ny * Nz;
74  m_Ndf = 2 * m_Nc * m_Nc;
75  Field::reset(m_Ndf, m_Nvol, m_Nex);
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);
84  Nx = CommonParameters::Nx();
85  Ny = CommonParameters::Ny();
86  Nz = CommonParameters::Nz();
87  Nt = CommonParameters::Nt();
88  NPEt = CommonParameters::NPEt();
89  Svol = Nx * Ny * Nz;
90  }
91 
92  Field_G_SF(double *phi, double *phipr) :
93  m_Nc(CommonParameters::Nc()), wk(m_Nc), wkpr(m_Nc)
94  {
95  int Lx = CommonParameters::Lx();
96 
97  m_Nex = 1;
98  m_Nvol = CommonParameters::Nvol();
99  Nx = CommonParameters::Nx();
100  Ny = CommonParameters::Ny();
101  Nz = CommonParameters::Nz();
102  Nt = CommonParameters::Nt();
103  NPEt = CommonParameters::NPEt();
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 
131  Field_G_SF& operator=(const Field_G_SF& v) { copy(*this, v); return *this; }
132 
134  void set_parameters(const Parameters_Field_G_SF& params);
135 
137  void set_parameters(const std::vector<double>& phi,
138  const std::vector<double>& phipr);
139 
141  void set_parameters(double *phi, double *phipr);
142 
144  void set_boundary_wk(const Mat_SU_N& U);
145 
147  void set_boundary_wkpr(const Mat_SU_N& U);
148 
150  void set_boundary_zero();
151 
154 
156  void mult_ct_boundary(int t, double ct);
157 
158 
160  void set_boundary_wk(Field_G& f);
161 
163  void set_boundary_wkpr(Field_G& f);
164 
166  void set_boundary_zero(Field_G& f);
167 
170 };
171 #endif
Field_G_SF & operator=(const Field_G_SF &v)
Definition: field_G_SF.h:131
void set_boundary_zero()
Set the boundary matrix to 0 for SF bc.
Definition: field_G_SF.cpp:101
void set_boundary_wkpr(const Mat_SU_N &U)
Set the boundary spatial link at t=Nt-1 for SF bc.
Definition: field_G_SF.cpp:76
static int NPEt()
Field_G_SF(const Field &x)
Definition: field_G_SF.h:78
Mat_SU_N & zero()
Definition: mat_SU_N.h:383
Container of Field-type object.
Definition: field.h:39
friend void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:381
int nvol() const
Definition: field.h:116
SU(N) gauge field class in which a few functions are added for the SF.
Definition: field_G_SF.h:34
Class for parameters.
Definition: parameters.h:38
Field_G_SF(const int Nvol=CommonParameters::Nvol(), const int Nex=1)
Definition: field_G_SF.h:64
int nin() const
Definition: field.h:115
void mult_ct_boundary(int t, double ct)
Multiply the boundary improvement factor ct or ctr to an SU(N) matrix object which belongs to a site ...
Definition: field_G_SF.cpp:151
Field_G_SF(double *phi, double *phipr)
Definition: field_G_SF.h:92
void set_boundary_spatial_link_zero()
Set the boundary spatial link to 0 for SF bc.
Definition: field_G_SF.cpp:125
SU(N) gauge field.
Definition: field_G.h:38
int m_Nex
extra degree of freedom, such as mu, nu.
Definition: field_G_SF.h:51
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
Definition: field.h:84
void set_boundary_wk(const Mat_SU_N &U)
Set the boundary spatial link at t=0 for SF bc.
Definition: field_G_SF.cpp:50
int nex() const
Definition: field.h:117
Common parameter class: provides parameters as singleton.
Mat_SU_N wk
SF boundary condition at t=0.
Definition: field_G_SF.h:57
int m_Nc
number of color elements
Definition: field_G_SF.h:45
void set_parameters(const Parameters_Field_G_SF &params)
Set the parameter with Parameters_Field_G_SF class.
Definition: field_G_SF.cpp:268
int m_Nvol
number of sites
Definition: field_G_SF.h:49
void set(int c, double re, const double &im)
Definition: mat_SU_N.h:133
int m_Ndf
number of components as real values
Definition: field_G_SF.h:47
Mat_SU_N wkpr
SF boundary condition at t=Nt.
Definition: field_G_SF.h:59