Skip to content
Snippets Groups Projects
Commit d44aa904 authored by Peter W. Draper's avatar Peter W. Draper
Browse files

Merge branch 'dump-cells' into cells-per-task

parents 093ec68d 5186c24c
Branches
Tags
1 merge request!395Make the expected number of tasks per cell a parameter.
......@@ -31,6 +31,7 @@
#include "debug.h"
/* Local includes. */
#include "active.h"
#include "cell.h"
#include "engine.h"
#include "hydro.h"
......@@ -268,6 +269,56 @@ int checkCellhdxmax(const struct cell *c, int *depth) {
return result;
}
/**
* @brief map function for dumping cells. In MPI mode local cells only.
*/
static void dumpCells_map(struct cell *c, void *data) {
uintptr_t *ldata = (uintptr_t *)data;
FILE *file = (FILE *)ldata[0];
struct engine *e = (struct engine *)ldata[1];
if (e->nodeID == c->nodeID)
fprintf(file, " %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6d %6d %6d %6d %6d "
"%20lld %6d %6d %6d %6d\n", c->loc[0], c->loc[1], c->loc[2],
c->width[0], c->width[1], c->width[2], c->count, c->gcount,
c->scount, c->depth, c->nr_tasks, c->ti_end_min,
get_time_bin(c->ti_end_min), (c->super == c),
cell_is_active(c, e), c->nodeID);
}
/**
* @brief Dump the location, depth, task counts and timebins and active state,
* for all cells to a simple text file.
*
* @param prefix base output filename
* @param s the space holding the cells to dump.
*/
void dumpCells(const char *prefix, struct space *s) {
FILE *file = NULL;
/* Name of output file. */
static int nseq = 0;
char fname[200];
sprintf(fname, "%s_%03d.dat", prefix, nseq);
atomic_inc(&nseq);
file = fopen(fname, "w");
/* Header. */
fprintf(file, "# %6s %6s %6s %6s %6s %6s %6s %6s %6s %6s %6s "
"%20s %6s %6s %6s %6s\n", "x", "y", "z", "xw", "yw", "zw", "count",
"gcount", "scount", "depth", "tasks", "ti_end_min", "timebin",
"issuper", "active", "rank");
uintptr_t data[2];
data[0] = (size_t) file;
data[1] = (size_t) s->e;
space_map_cells_pre(s, 1, dumpCells_map, &data);
fclose(file);
}
#ifdef HAVE_METIS
/**
......
......@@ -33,6 +33,7 @@ void printgParticle_single(struct gpart *gp);
int checkSpacehmax(struct space *s);
int checkCellhdxmax(const struct cell *c, int *depth);
void dumpCells(const char *prefix, struct space *s);
#ifdef HAVE_METIS
#include "metis.h"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment