15 #ifndef FIELD_G_INCLUDED
16 #define FIELD_G_INCLUDED
50 m_Ndf = 2 * m_Nc * m_Nc;
61 assert(m_Ndf == 2 * m_Nc * m_Nc);
64 void reset(
const int Nvol,
const int Nex)
71 double cmp_r(
const int cc,
const int site,
const int mn = 0)
const
73 return field[myindex(2 * cc, site, mn)];
76 double cmp_i(
const int cc,
const int site,
const int mn = 0)
const
78 return field[myindex(2 * cc + 1, site, mn)];
81 void set_r(
const int cc,
const int site,
const int mn,
const double re)
83 field[myindex(2 * cc, site, mn)] = re;
86 void set_i(
const int cc,
const int site,
const int mn,
const double im)
88 field[myindex(2 * cc + 1, site, mn)] = im;
91 void set_ri(
const int cc,
const int site,
const int mn,
92 const double re,
const double im)
94 field[myindex(2 * cc, site, mn)] = re;
95 field[myindex(2 * cc + 1, site, mn)] = im;
98 Mat_SU_N mat(
const int site,
const int mn = 0)
const
102 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
103 Tmp.
set(cc, field[myindex(2 * cc, site, mn)],
104 field[myindex(2 * cc + 1, site, mn)]);
109 Mat_SU_N mat_dag(
const int site,
const int mn = 0)
const
113 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
114 Tmp.
set(cc, field[myindex(2 * cc, site, mn)],
115 field[myindex(2 * cc + 1, site, mn)]);
120 void mat(
Mat_SU_N& Tmp,
const int site,
const int mn = 0)
const
122 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
123 Tmp.
set(cc, field[myindex(2 * cc, site, mn)],
124 field[myindex(2 * cc + 1, site, mn)]);
128 void mat_dag(
Mat_SU_N& Tmp,
const int site,
const int mn = 0)
const
130 for (
int c1 = 0; c1 < m_Nc; ++c1) {
131 for (
int c2 = 0; c2 < m_Nc; ++c2) {
132 Tmp.
set(c1 + m_Nc * c2, field[myindex(2 * (c2 + m_Nc * c1), site, mn)],
133 -field[myindex(2 * (c2 + m_Nc * c1) + 1, site, mn)]);
138 void set_mat(
const int site,
const int mn,
const Mat_SU_N& U)
140 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
141 field[myindex(2 * cc, site, mn)] = U.
r(cc);
142 field[myindex(2 * cc + 1, site, mn)] = U.
i(cc);
146 void add_mat(
const int site,
const int mn,
const Mat_SU_N& U)
148 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
149 field[myindex(2 * cc, site, mn)] += U.
r(cc);
150 field[myindex(2 * cc + 1, site, mn)] += U.
i(cc);
154 void add_mat(
const int site,
const int mn,
const Mat_SU_N& U,
double prf)
156 for (
int cc = 0; cc < m_Nc * m_Nc; ++cc) {
157 field[myindex(2 * cc, site, mn)] += prf * U.
r(cc);
158 field[myindex(2 * cc + 1, site, mn)] += prf * U.
i(cc);
164 for (
int i = 0; i < field.size(); i += 2) {
165 double real = field[i];
166 field[i] = -field[i + 1];
171 void mult_Field_Gnn(
int ex,
const Field_G&,
int ex1,
174 void mult_Field_Gnd(
int ex,
const Field_G&,
int ex1,
177 void mult_Field_Gdn(
int ex,
const Field_G&,
int ex1,
180 void mult_Field_Gdd(
int ex,
const Field_G&,
int ex1,
183 void multadd_Field_Gnn(
int ex,
const Field_G&,
int ex1,
184 const Field_G&,
int ex2,
double);
186 void multadd_Field_Gnd(
int ex,
const Field_G&,
int ex1,
187 const Field_G&,
int ex2,
double);
189 void multadd_Field_Gdn(
int ex,
const Field_G&,
int ex1,
190 const Field_G&,
int ex2,
double);
192 void multadd_Field_Gdd(
int ex,
const Field_G&,
int ex1,
193 const Field_G&,
int ex2,
double);
196 void ah_Field_G(
int ex);
199 void at_Field_G(
int ex);
202 Field_G& operator=(
const double&);
205 Field_G& operator*=(
const double&);
206 Field_G& operator*=(
const dcomplex&);
207 Field_G& operator/=(
const double&);
208 Field_G& operator/=(
const dcomplex&);