Files
LBPM/tests/DataAggregator.cpp

76 lines
1.6 KiB
C++
Raw Normal View History

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <iostream>
#include <exception>
#include <stdexcept>
#include <fstream>
int main(int argc, char **argv){
unsigned long int Bx,By,Bz;
unsigned long int Nx,Ny,Nz;
unsigned long int NX,NY,NZ;
unsigned long int i,j,k;
unsigned long int x,y,z;
unsigned long int N, N_full;
Bx = By = Bz = 9;
Nx = Ny = Nz = 1024;
N = Nx*Ny*Nz;
NX=Bx*Nx;
NY=By*Ny;
NZ=Bz*Nz;
N_full=NX*NY*NZ;
printf("System size is: %i x %i x %i \n",NX,NY,NZ);
// Filenames used
//char LocalRankString[8];
char LocalRankFilename[40];
char sx[2];
char sy[2];
char sz[2];
char tmpstr[10];
//sprintf(LocalRankString,"%05d",rank);
char *id;
id = new char [N];
char *ID;
ID = new char [N_full];
for (unsigned long int bz=0; bz<Bz; bz++){
for (unsigned long int by=0; by<By; by++){
for (unsigned long int bx=0; bx<Bx; bx++){
sprintf(sx,"%d",bx);
sprintf(sy,"%d",by);
sprintf(sz,"%d",bz);
sprintf(LocalRankFilename,"%s%s%s%s%s%s%s","a2_x",sx,"_y",sy,"_z",sz,".gbd");
printf("Reading file: %s \n", LocalRankFilename);
// Read the file
size_t readID;
FILE *IDFILE = fopen(LocalRankFilename,"rb");
readID=fread(id,1,N,IDFILE);
fclose(IDFILE);
// Unpack the data into the main array
for ( k=0;k<Nz;k++){
for ( j=0;j<Ny;j++){
for ( i=0;i<Nx;i++){
x = bx*Nx + i;
y = by*Ny + j;
z = bz*Nz + k;
ID[z*NX*NY+y*NX+x] = ID[k*Nx*Ny+j*Nx+i];
}
}
}
}
}
}
printf("Done getting data -- writing main file \n");
FILE *OUT = fopen(LocalRankFilename,"wb");
fwrite(ID,1,N_full,OUT);
fclose(OUT);
printf("Completed! \n");
}