28 const double sq2r = 1.0 / sqrt(2.0);
30 const double pi = 4.0 * atan(1.0);
31 const double pi2 = 2.0 * pi;
42 double slg1 = sqrt(-log(1 - r1) * 2.0) / sqrt(2.0);
43 double ang1 = pi2 * r2;
45 rn1 = slg1 * cos(ang1);
46 rn2 = slg1 * sin(ang1);
57 for (
int ex = 0; ex < Nex; ++ex) {
58 for (
int site = 0; site < Nvol; ++site) {
59 for (
int in = 0; in < Nin; ++in) {
61 f.
set(in, site, ex, rn);
79 for (
int ex = 0; ex < Nex; ++ex) {
80 for (
int site = 0; site < Nvol; ++site) {
81 for (
int in = 0; in < Nin2; ++in) {
84 f.
set(2 * in, site, ex, rn1);
85 f.
set(2 * in + 1, site, ex, rn2);
90 for (
int ex = 0; ex < Nex; ++ex) {
91 for (
int site = 0; site < Nvol; ++site) {
92 for (
int in = 0; in < Nin; ++in) {
94 f.
set(in, site, ex, rn1);
114 Field f_tmp(Nin, Lvol, Nex);
131 for (
int ex = 0; ex < Nex; ++ex) {
132 for (
int t = 0; t < Nt; ++t) {
133 int t2 = t + Ipt * Nt;
134 for (
int z = 0; z < Nz; ++z) {
135 int z2 = z + Ipz * Nz;
136 for (
int y = 0; y < Ny; ++y) {
137 int y2 = y + Ipy * Ny;
138 for (
int x = 0; x < Nx; ++x) {
139 int x2 = x + Ipx * Nx;
140 int site = idx.
site(x, y, z, t);
141 int site2 = x2 + Lx * (y2 + Ly * (z2 + Lz * t2));
143 assert(site2 < Lvol);
144 for (
int in = 0; in < Nin; ++in) {
145 f.
set(in, site, ex, f_tmp.
cmp(in, site2, ex));
166 Field f_tmp(Nin, Lvol, Nex);
183 for (
int ex = 0; ex < Nex; ++ex) {
184 for (
int t = 0; t < Nt; ++t) {
185 int t2 = t + Ipt * Nt;
186 for (
int z = 0; z < Nz; ++z) {
187 int z2 = z + Ipz * Nz;
188 for (
int y = 0; y < Ny; ++y) {
189 int y2 = y + Ipy * Ny;
190 for (
int x = 0; x < Nx; ++x) {
191 int x2 = x + Ipx * Nx;
192 int site = idx.
site(x, y, z, t);
193 int site2 = x2 + Lx * (y2 + Ly * (z2 + Lz * t2));
195 assert(site2 < Lvol);
196 for (
int in = 0; in < Nin; ++in) {
197 f.
set(in, site, ex, f_tmp.
cmp(in, site2, ex));
218 Field f_tmp(Nin, Lvol2, Nex);
235 for (
int ex = 0; ex < Nex; ++ex) {
236 for (
int t = 0; t < Nt; ++t) {
237 int t2 = t + Ipt * Nt;
238 for (
int z = 0; z < Nz; ++z) {
239 int z2 = z + Ipz * Nz;
240 for (
int y = 0; y < Ny; ++y) {
241 int y2 = y + Ipy * Ny;
242 for (
int x = 0; x < Nx2; ++x) {
243 int x2 = x + Ipx * Nx2;
244 int site = idx.
site(x, y, z, t, 0);
245 int site2 = x2 + Lx2 * (y2 + Ly * (z2 + Lz * t2));
247 assert(site2 < Lvol2);
248 for (
int in = 0; in < Nin; ++in) {
249 f.
set(in, site, ex, f_tmp.
cmp(in, site2, ex));