15 #ifndef FIELD_G_INCLUDED
16 #define FIELD_G_INCLUDED
50 Nvol, Nex, Element_type::
COMPLEX
70 assert(m_Ndf == 2 * m_Nc * m_Nc);
79 void reset(
const int Nvol,
const int Nex)
84 int nc()
const {
return m_Nc; }
87 double cmp_r(
const int cc,
const int site,
const int mn = 0)
const
89 return field[myindex(2 * cc, site, mn)];
92 double cmp_i(
const int cc,
const int site,
const int mn = 0)
const
94 return field[myindex(2 * cc + 1, site, mn)];
97 void set_r(
const int cc,
const int site,
const int mn,
const double re)
99 field[myindex(2 * cc, site, mn)] = re;
102 void set_i(
const int cc,
const int site,
const int mn,
const double im)
104 field[myindex(2 * cc + 1, site, mn)] = im;
107 void set_ri(
const int cc,
const int site,
const int mn,
108 const double re,
const double im)
110 field[myindex(2 * cc, site, mn)] = re;
111 field[myindex(2 * cc + 1, site, mn)] = im;
118 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
120 field[myindex(2 * cc, site, mn)],
121 field[myindex(2 * cc + 1, site, mn)]);
131 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
133 field[myindex(2 * cc, site, mn)],
134 field[myindex(2 * cc + 1, site, mn)]);
142 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
144 field[myindex(2 * cc, site, mn)],
145 field[myindex(2 * cc + 1, site, mn)]);
151 for (
int c1 = 0; c1 < m_Nc; ++c1) {
152 for (
int c2 = 0; c2 < m_Nc; ++c2) {
153 Tmp.
set(c1 + m_Nc * c2,
154 field[myindex(2 * (c2 + m_Nc * c1), site, mn)],
155 -field[myindex(2 * (c2 + m_Nc * c1) + 1, site, mn)]);
162 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
163 field[myindex(2 * cc, site, mn)] = U.
r(cc);
164 field[myindex(2 * cc + 1, site, mn)] = U.
i(cc);
170 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
171 field[myindex(2 * cc, site, mn)] += U.
r(cc);
172 field[myindex(2 * cc + 1, site, mn)] += U.
i(cc);
178 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
179 field[myindex(2 * cc, site, mn)] += prf * U.
r(cc);
180 field[myindex(2 * cc + 1, site, mn)] += prf * U.
i(cc);
186 for (
int i = 0, n = field.size(); i < n; i += 2) {
187 double real = field[i];
188 field[i] = -field[i + 1];
210 const Field_G& U1,
const int ex1,
211 const Field_G& U2,
const int ex2);
214 const Field_G& U1,
const int ex1,
215 const Field_G& U2,
const int ex2);
218 const Field_G& U1,
const int ex1,
219 const Field_G& U2,
const int ex2);
222 const Field_G& U1,
const int ex1,
223 const Field_G& U2,
const int ex2);
226 const Field_G& U1,
const int ex1,
227 const Field_G& U2,
const int ex2,
231 const Field_G& U1,
const int ex1,
232 const Field_G& U2,
const int ex2,
236 const Field_G& U1,
const int ex1,
237 const Field_G& U2,
const int ex2,
241 const Field_G& U1,
const int ex1,
242 const Field_G& U2,
const int ex2,
void ah_Field_G(Field_G &W, const int ex)
void mat_dag(Mat_SU_N &Tmp, const int site, const int mn=0) const
void multadd_Field_Gnd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2, const double ff)
void reset(const int Nvol, const int Nex)
Container of Field-type object.
double cmp_i(const int cc, const int site, const int mn=0) const
void at_Field_G(Field_G &W, const int ex)
void mult_Field_Gdn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
void copy(Field &y, const Field &x)
copy(y, x): y = x
Field_G & operator=(const Field_G &v)
void multadd_Field_Gdd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2, const double ff)
void mat(Mat_SU_N &Tmp, const int site, const int mn=0) const
Mat_SU_N reunit(const Mat_SU_N &m)
void mult_Field_Gdd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
void set_i(const int cc, const int site, const int mn, const double im)
Common parameter class: provides parameters as singleton.
void set_r(const int cc, const int site, const int mn, const double re)
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=Element_type::COMPLEX)
Field_G(const int Nvol=CommonParameters::Nvol(), const int Nex=1)
void multadd_Field_Gnn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2, const double ff)
void mult_Field_Gnn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
void mult_exp_Field_G(Field_G &W, const double alpha, const Field_G &iP, const Field_G &U, const int Nprec)
Base class of random number generators.
Mat_SU_N mat_dag(const int site, const int mn=0) const
void add_mat(const int site, const int mn, const Mat_SU_N &U, double prf)
double cmp_r(const int cc, const int site, const int mn=0) const
void set(int c, double re, const double &im)
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Mat_SU_N mat(const int site, const int mn=0) const
void add_mat(const int site, const int mn, const Mat_SU_N &U)
void multadd_Field_Gdn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2, const double ff)
void mult_Field_Gnd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
void set_ri(const int cc, const int site, const int mn, const double re, const double im)