20template <
typename group>
30 E[d][X] - (U[d][X - d].dagger() * E[d][X - d].expand() * U[d][X - d])
31 .project_to_algebra();
36template <
typename group>
39 const hila::arithmetic_type<group> mag) {
44 auto ta = (U[dir][X] * violation[X + dir].expand() * U[dir][X].dagger())
45 .project_to_algebra();
46 E[dir][X] -= mag * (violation[X] - ta);
52template <
typename group>
61 constexpr double aleph = 1.25;
62 constexpr hila::arithmetic_type<group> onealeph = aleph / 12.0;
63 constexpr hila::arithmetic_type<group> twoaleph = 2.0 * onealeph;
66 get_gauss_violation(U, E, violation);
68 gauss_fix_step(U, E, violation, onealeph);
71 get_gauss_violation(U, E, violation);
72 gauss_fix_step(U, E, violation, twoaleph);
77 return violation.
squarenorm() / lattice.volume();
84template <
typename group>
88 constexpr int loop_max = 10000;
96 degauss_timer.start();
101 viol = degauss_step(U, E);
102 }
while (viol > quality && loop <= loop_max);
105 hila::out <<
" ********** LOOP_MAX " << loop_max
106 <<
" reached in degauss, violation/site " << viol <<
'\n';
109 degauss_timer.stop();
The field class implements the standard methods for accessing Fields. Hilapp replaces the parity acce...
double squarenorm() const
Squarenorm.
#define foralldir(d)
Macro to loop over (all) Direction(s)
constexpr Parity ALL
bit pattern: 011
int myrank()
rank of this node
std::ostream out
this is our default output file stream