xref: /phasta/phSolver/common/test/phIOwriteFields.cc (revision 61be316bf963701941ec3b100ac0f1882761d190)
1f1d1f61eSPranav Subramanian #include <mpi.h>
2f1d1f61eSPranav Subramanian #include <stdio.h>
3f1d1f61eSPranav Subramanian #include <stdlib.h>
4f1d1f61eSPranav Subramanian #include <unistd.h>
5f1d1f61eSPranav Subramanian #include <cassert>
6f1d1f61eSPranav Subramanian #include "phiostats.h"
7f1d1f61eSPranav Subramanian #include "phIO.h"
8f1d1f61eSPranav Subramanian #include "phstream.h" //for makeRStream and makeGRStream
9f1d1f61eSPranav Subramanian #include "syncio.h"
10f1d1f61eSPranav Subramanian #include "posixio.h"
11f1d1f61eSPranav Subramanian #include "streamio.h"
12f1d1f61eSPranav Subramanian 
13f1d1f61eSPranav Subramanian int main(int argc, char* argv[]) {
14f1d1f61eSPranav Subramanian   MPI_Init(&argc,&argv);
15f1d1f61eSPranav Subramanian   int rank;
16f1d1f61eSPranav Subramanian   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
17f1d1f61eSPranav Subramanian   int size;
18f1d1f61eSPranav Subramanian   MPI_Comm_size(MPI_COMM_WORLD, &size);
19f1d1f61eSPranav Subramanian   if( argc != 2 ) {
20f1d1f61eSPranav Subramanian     fprintf(stderr, "Usage: %s <numSyncFiles>\n",argv[0]);
21f1d1f61eSPranav Subramanian     MPI_Finalize();
22f1d1f61eSPranav Subramanian     return 1;
23f1d1f61eSPranav Subramanian   }
242df2e51fSPranav Subramanian 
25f1d1f61eSPranav Subramanian   const char* phrase = "number of fishes";
26f1d1f61eSPranav Subramanian   const char* type = "double";
27f1d1f61eSPranav Subramanian   const char* iotype = "binary";
28f9955254SCameron Smith   double blockArray[4] = {2.0,4.0,8.0,16.0};
29f9955254SCameron Smith   int blockEntries = 4;
30f1d1f61eSPranav Subramanian   int one = 1;
31*61be316bSPranav Subramanian   int nfields = 2;
322df2e51fSPranav Subramanian   int zero = 0;
33f1d1f61eSPranav Subramanian   int numFish = 0;
34f1d1f61eSPranav Subramanian   double fishWeight = 1.23;
350a242d7cSPranav Subramanian   int nfiles = 1;
36f1d1f61eSPranav Subramanian   int ppf = size/nfiles;
37b820a5c1SPranav Subramanian   const char* filename[3] = {"water.dat.", "water.","water-dat."};
38f1d1f61eSPranav Subramanian   rstream rs = makeRStream();
39f1d1f61eSPranav Subramanian      phio_fp file[3];
404c73623fSPranav Subramanian   const char* modes[3]={"syncio","posixio","streamio"};
412df2e51fSPranav Subramanian   fprintf(stderr,"nfiles %d\n", nfiles);
422df2e51fSPranav Subramanian   fprintf(stderr,"ppf %d\n", ppf);
43*61be316bSPranav Subramanian   syncio_setup_write(nfiles, nfields, ppf, &(file[0]));
444c73623fSPranav Subramanian   posixio_setup(&(file[1]), 'w');
454c73623fSPranav Subramanian   streamio_setup_r(&(file[2]), rs, 'w');
463964a29aSPranav Subramanian   fprintf(stderr, "%s\n" ,"Outside loop 1.0");
47f1d1f61eSPranav Subramanian   for(int i=0; i<3; i++) {
483964a29aSPranav Subramanian     fprintf(stderr, "%s\n" ,"Within the i loop");
49f1d1f61eSPranav Subramanian     if(!rank) fprintf(stderr, "%s\n", modes[i]);
503964a29aSPranav Subramanian     fprintf(stderr, "%s\n" ,"Before phastaio");
51f1d1f61eSPranav Subramanian     phastaio_initStats();
522df2e51fSPranav Subramanian     fprintf(stderr, "Opening files with %s\n", filename[i]);
53f1d1f61eSPranav Subramanian     phio_openfile(filename[i], file[i]);
542df2e51fSPranav Subramanian     char str [50];
552df2e51fSPranav Subramanian     int n;
56de79a544SPranav Subramanian    for (int j = 0; j < 2 ; j++) {
573964a29aSPranav Subramanian       fprintf(stderr,"%s\n", "Inside loop");
582df2e51fSPranav Subramanian       n = sprintf(str, " Number of times %d ", j);
592df2e51fSPranav Subramanian       assert(n);
602df2e51fSPranav Subramanian       fprintf(stderr,"str \'%s\'\n", str);
612df2e51fSPranav Subramanian       fprintf(stderr,"Printing the int zero %d\n", zero);
622df2e51fSPranav Subramanian       fprintf(stderr,"Printing the int one %d\n", one);
632df2e51fSPranav Subramanian       fprintf(stderr,"blockentries %d\n",blockEntries);
642df2e51fSPranav Subramanian       fprintf(stderr,"Printing the const char type %s\n", type);
652df2e51fSPranav Subramanian       fprintf(stderr,"Printing the const char iotype %s\n", iotype);
662df2e51fSPranav Subramanian       fprintf(stderr,"Calling writeheader\n");
674c73623fSPranav Subramanian       phio_writeheader(file[i], str, &blockEntries, &one, &blockEntries, type, iotype);
682df2e51fSPranav Subramanian       fprintf(stderr,"Done calling writeheader\n");
692df2e51fSPranav Subramanian       fprintf(stderr,"Calling writedatablock\n");
70f9955254SCameron Smith       phio_writedatablock(file[i], str, blockArray, &blockEntries, type, iotype);
712df2e51fSPranav Subramanian       fprintf(stderr,"Done Calling writedatablock\n");
720a242d7cSPranav Subramanian     }
73f1d1f61eSPranav Subramanian     phio_closefile(file[i]);
74f1d1f61eSPranav Subramanian     phastaio_printStats();
7553b6bf36SPranav Subramanian     fprintf(stderr,"Done %s\n", modes[i]);
76f1d1f61eSPranav Subramanian   }
77f1d1f61eSPranav Subramanian   syncio_setup_read(nfiles, &(file[0]));
78f1d1f61eSPranav Subramanian   posixio_setup(&(file[1]), 'r');
79f1d1f61eSPranav Subramanian   streamio_setup_r(&(file[2]), rs, 'r');
80f1d1f61eSPranav Subramanian   for(int i=0; i<3; i++) {
81f1d1f61eSPranav Subramanian     if(!rank) fprintf(stderr, "%s\n", modes[i]);
82f1d1f61eSPranav Subramanian     phastaio_initStats();
83f1d1f61eSPranav Subramanian     phio_openfile(filename[i], file[i]);
843964a29aSPranav Subramanian     //Str was added
853964a29aSPranav Subramanian    // const char* str = "Number of times "+ nfiles ;
863964a29aSPranav Subramanian    // for (int j = 0; j < nfiles ; j++) {
87f1d1f61eSPranav Subramanian     phio_readheader(file[i], phrase, &numFish, &one, type, iotype);
883964a29aSPranav Subramanian     //  phio_readheader(file[i], str, &numFish, &one, type, iotype);
893964a29aSPranav Subramanian      //Changing argument from file[i] to file[j]
90f1d1f61eSPranav Subramanian     assert(!numFish);
91f1d1f61eSPranav Subramanian     phio_readdatablock(file[i], phrase, &fishWeight, &numFish, type, iotype);
923964a29aSPranav Subramanian     //  phio_readdatablock(file[i], str, &fishWeight, &numFish, type, iotype);
93f1d1f61eSPranav Subramanian     assert(fishWeight == 1.23);
94f1d1f61eSPranav Subramanian     phio_closefile(file[i]);
95f1d1f61eSPranav Subramanian     phastaio_printStats();
96f1d1f61eSPranav Subramanian   }
97f1d1f61eSPranav Subramanian   MPI_Finalize();
98f1d1f61eSPranav Subramanian   return 0;
99f1d1f61eSPranav Subramanian }
100