#include #include #include "isofile.h" void inigetflc(int np, float *flc, char *filename, int ismerged) { int nx, ny, nz, nvar; FILE *fptr; int i, j, k, l; char name[256]; float tmp; fprintf(stderr,"opening file %s \n",filename); fptr = fopen(filename, "rt"); if(fptr == NULL) nrerror("datbfile unopened\n"); fread (&nx, sizeof (int), 1, fptr); fread (&ny, sizeof (int), 1, fptr); fread (&nz, sizeof (int), 1, fptr); fread (&nvar, sizeof (int), 1, fptr); fprintf(stderr,"nx = %d\n",nx); fprintf(stderr,"ny = %d\n",ny); fprintf(stderr,"nz = %d\n",nz); fprintf(stderr,"nvar = %d\n",nvar); for (i = 0; i < nvar; i++) { fread (name, sizeof(char), 256, fptr); fprintf(stderr,"variable %d = %s\n",i+1,name); } /* Assume C is the last array in the datb file */ for (l = 0; l < (nvar-1); l++) for (i = 0; i < nx; i++) for (j = 0; j < ny; j++) for (k = 0; k < nz; k++) { fread (&tmp, sizeof (float), 1, fptr); } if(ismerged == 0) { fprintf(stderr,"merging processors, reading array C \n"); /* better test nx_proc = nx etc.. ... */ for (i = 0; i < nx; i++) for (j = 0; j < ny; j++) for (k = 0; k < nz; k++) { fread (&tmp, sizeof (float), 1, fptr); if((i > 0)&&(j > 0)&&(k > 0)&&(i < (nx-1))&&(j < (ny-1))&&(k < (nz-1))) flc[(i-1)*(ny-2)*(nz-2) + (j-1)*(nz-2) + k - 1 ] = tmp; } } else { fprintf(stderr,"already merged, buffers removed, reading array C \n"); /* better test mx = nx etc.. ... */ for (i = 0; i < nx; i++) for (j = 0; j < ny; j++) for (k = 0; k < nz; k++) { fread (&tmp, sizeof (float), 1, fptr); flc[i*ny*nz + j*nz + k ] = tmp; } } fclose(fptr); }