/* write a (semi-) human-readable dump of the lattice */
-void write_populations(d2q9_block_t lattice[CORES_Y][CORES_X],
- int core_x, int core_y, int iter)
+void write_populations(d2q9_block_t lattice[CORES_Y][CORES_X], int iter)
{
FILE *file = fopen("populations.dat", "a");
if(!file) {
return;
}
- for(int y = 0; y < BLOCK_Y; y++) {
- for(int x = 0; x < BLOCK_X; x++) {
- fprintf(file, "%03d: [%02d,%02d]: ", iter, x, y);
- for(int q = 0; q < 9; q++) {
- fprintf(file, "%.5f\t", lattice[core_y][core_x][y][x][q]);
+ for(int cy = 0; cy < CORES_Y; cy++) {
+ for(int y = 0; y < BLOCK_Y; y++) {
+ for(int cx = 0; cx < CORES_X; cx++) {
+ for(int x = 0; x < BLOCK_X; x++) {
+ fprintf(file, "%3d: [%3d,%3d]: ",
+ iter,
+ cx * BLOCK_X + x,
+ cy * BLOCK_Y + y
+ );
+ for(int q = 0; q < 9; q++) {
+ fprintf(file, "%.5f ", lattice[cy][cx][y][x][q]);
+ }
+ fprintf(file, "\n");
+ }
}
- fprintf(file, "\n");
}
}
fprintf(file, "\n");
/* helper functions */
void fixsudo(const char *filename);
-void write_populations(d2q9_block_t lattice[CORES_Y][CORES_X], int core_x, int core_y, int iter);
+void write_populations(d2q9_block_t lattice[CORES_Y][CORES_X], int iter);
void write_image(d2q9_block_t lattice[CORES_Y][CORES_X], int iter);
void write_animation(void);
void write_timers(uint32_t timers[CORES_Y][CORES_X][TIMERS], uint32_t iter);
/* write data */
static uint32_t old0 = -1;
if(states[0][0] != old0) {
- write_populations(shm.lattice, 0, 0, states[0][0]);
+ write_populations(shm.lattice, states[0][0]);
write_image(shm.lattice, states[0][0]);
write_timers(shm.timers, states[0][0]);
old0 = states[0][0];