xref: /phasta/phSolver/common/test/phIOreadheader.cc (revision f32d06b0b1e744f84fd57c0f41a02cce85651286)
1 #include <mpi.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5 #include "phIO.h"
6 #include "syncio.h"
7 #include "posixio.h"
8 
9 int main(int argc, char* argv[]) {
10   MPI_Init(&argc,&argv);
11   int rank;
12   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
13   if( argc != 2 ) {
14     fprintf(stderr, "Usage: %s <numSyncFiles>\n",argv[0]);
15     MPI_Finalize();
16     return 1;
17   }
18   const char* iotype = "binary";
19   int numberOfNodes[2] = {0,0};
20   int nfiles[2] = {atoi(argv[1]), 1};
21   const char* dir[2] = {"4-procs_case-SyncIO-2", "4-procs_case-Posix"};
22   const char* filename[2] = {"geombc-dat.", "geombc.dat."};
23   phio_fp file[2];
24   syncio_setup_read(nfiles[0], &(file[0]));
25   posixio_setup(&(file[1]), 'r');
26   int one = 1;
27   for(int i=0; i<2; i++) {
28     chdir(dir[i]);
29     MPI_Barrier(MPI_COMM_WORLD);
30     phio_openfile(filename[i], file[i]);
31     phio_readheader(file[i], "number of nodes", &(numberOfNodes[i]),
32         &one, "integer", iotype);
33     phio_closefile(file[i]);
34     chdir("..");
35     MPI_Barrier(MPI_COMM_WORLD);
36   }
37   int match = (numberOfNodes[0] == numberOfNodes[1]);
38   if(!rank && match)
39     fprintf(stderr, "number of nodes match!\n");
40   if(!rank && !match)
41     fprintf(stderr, "number of nodes don't match... :(\n");
42   MPI_Finalize();
43   return !match;
44 }
45