7int main(
int argc,
char **argv) {
26 lsize = par.get(
"lattice size");
27 int loops = par.get(
"smear loops");
28 double smear_coeff = par.get(
"smear coefficient");
29 int taylor_order = par.get(
"expansion order");
30 long seed = par.get(
"random seed");
45 onsites(
ALL) g[X].gaussian_random();
48 <<
" complex matrix field " << loops <<
" times\n";
51 double c1 = 1 - 6 * smear_coeff;
58 for (
int l = 0; l < loops; l++) {
61 f[X] = g[X + e_x] + g[X - e_x] + g[X + e_y] + g[X - e_y] + g[X + e_z] + g[X - e_z];
63 g[
ALL] = c1 * g[X] + smear_coeff * f[X];
67 hila::out0 <<
"field g at (0,0,0) after smearing:\n";
71 hila::out0 <<
"Calculating exp(g) using Taylor expansin to order " << taylor_order <<
'\n';
81 for (
int i = 1; i <= taylor_order; i++) {
84 f[X] += product / fac;
Complex< T > & gaussian_random(double width=1.0)
Produces complex gaussian random values.
The field class implements the standard methods for accessing Fields. Hilapp replaces the parity acce...
static constexpr int rows()
Define constant methods rows(), columns() - may be useful in template code.
static constexpr int columns()
Returns column length.
Matrix class which defines matrix operations.
void setup(const CoordinateVector &siz)
General lattice setup.
constexpr Parity ALL
bit pattern: 011
void FFT_field(const Field< T > &input, Field< T > &result, const CoordinateVector &directions, fft_direction fftdir=fft_direction::forward)
std::ostream out0
This writes output only from main process (node 0)
void initialize(int argc, char **argv)
Read in command line arguments. Initialise default stream and MPI communication.
void seed_random(uint64_t seed, bool device_rng=true)
Seed random generators with 64-bit unsigned value. On MPI shuffles the seed so that different MPI ran...
void finishrun()
Normal, controlled exit - all nodes must call this. Prints timing information and information about c...