xref: /phasta/phSolver/common/test/phIOwriteFields.cc (revision f9955254598898457d54effc66a62b518236e3a3)
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   }
24f1d1f61eSPranav Subramanian   const char* phrase = "number of fishes";
25f1d1f61eSPranav Subramanian   const char* type = "double";
26f1d1f61eSPranav Subramanian   const char* iotype = "binary";
27*f9955254SCameron Smith   double blockArray[4] = {2.0,4.0,8.0,16.0};
28*f9955254SCameron Smith   int blockEntries = 4;
29f1d1f61eSPranav Subramanian   int one = 1;
30f1d1f61eSPranav Subramanian   int numFish = 0;
31f1d1f61eSPranav Subramanian   double fishWeight = 1.23;
320a242d7cSPranav Subramanian   int nfiles = 1;
33f1d1f61eSPranav Subramanian   int ppf = size/nfiles;
34f1d1f61eSPranav Subramanian   const char* filename[2] = {"water-dat.", "water.dat."};
35f1d1f61eSPranav Subramanian   rstream rs = makeRStream();
36f1d1f61eSPranav Subramanian      phio_fp file[3];
37f1d1f61eSPranav Subramanian   const char* modes[3]={"syncio", "posixio", "streamio"};
38f1d1f61eSPranav Subramanian   syncio_setup_write(nfiles, one, ppf, &(file[0]));
39f1d1f61eSPranav Subramanian   posixio_setup(&(file[1]), 'w');
40f1d1f61eSPranav Subramanian   streamio_setup_r(&(file[2]), rs, 'w');
413964a29aSPranav Subramanian   fprintf(stderr, "%s\n" ,"Outside loop 1.0");
42f1d1f61eSPranav Subramanian   for(int i=0; i<3; i++) {
433964a29aSPranav Subramanian     fprintf(stderr, "%s\n" ,"Within the i loop");
44f1d1f61eSPranav Subramanian     if(!rank) fprintf(stderr, "%s\n", modes[i]);
453964a29aSPranav Subramanian     fprintf(stderr, "%s\n" ,"Before phastaio");
46f1d1f61eSPranav Subramanian     phastaio_initStats();
473964a29aSPranav Subramanian     fprintf(stderr, "%s\n" ,"Opening files with ", filename[i], file[i] );
48f1d1f61eSPranav Subramanian     phio_openfile(filename[i], file[i]);
493964a29aSPranav Subramanian     fprintf(stderr, "%s\n" ,"Entering for loop for ", atoi(argv[1]) );
503964a29aSPranav Subramanian    // const char* str = "Number of times "+ nfiles ;
51de79a544SPranav Subramanian     for (int j = 0; j < 2 ; j++) {
523964a29aSPranav Subramanian       fprintf(stderr,"%s\n", "Inside loop");
538cad8781SPranav Subramanian      //fprintf(stderr,"%d\n",atoi(argv[1]));
549b01e303SPranav Subramanian       const char* str = "Number of times " + 10;
553964a29aSPranav Subramanian       fprintf(stderr,"%s\n", "Writing the header time - " );
56de79a544SPranav Subramanian       fprintf(stderr,"%s\n","Printing the int zero");
573964a29aSPranav Subramanian       fprintf(stderr,"%d\n",zero);
58de79a544SPranav Subramanian       fprintf(stderr,"%s\n","Printing the int one");
593964a29aSPranav Subramanian       fprintf(stderr,"%d\n",one);
60de79a544SPranav Subramanian       fprintf(stderr,"%s\n","Printing the file[i]");
613964a29aSPranav Subramanian       fprintf(stderr,"%s\n",file[i] );
623964a29aSPranav Subramanian       fprintf(stderr,"%s\n","Should have printed the file" );
63de79a544SPranav Subramanian       fprintf(stderr,"%s\n","Printing the const char type, this is set to double");
643964a29aSPranav Subramanian       fprintf(stderr,"%s\n",type);
65de79a544SPranav Subramanian       fprintf(stderr,"%s\n","Printing the const char iotype, this is set to binary");
663964a29aSPranav Subramanian       fprintf(stderr,"%s\n",iotype);
673964a29aSPranav Subramanian       fprintf(stderr,"%s\n","Opening the file" );
68*f9955254SCameron Smith       phio_writeheader(file[i], str, &blockEntries, &one, &blockEntries, "integer", iotype);
69de79a544SPranav Subramanian       fprintf(stderr,"%s\n","Printing the created string after writing the header ");
703964a29aSPranav Subramanian       fprintf(stderr,"%s\n",str );
718cad8781SPranav Subramanian       fprintf(stderr,"%s\n","Printing the loop number" );
723964a29aSPranav Subramanian       fprintf(stderr,"%d\n",j );
733964a29aSPranav Subramanian       fprintf(stderr,"%s\n", "Writing the data block time - ");
748cad8781SPranav Subramanian      // fprintf(stderr,"%d\n",j );
75*f9955254SCameron Smith       phio_writedatablock(file[i], str, blockArray, &blockEntries, type, iotype);
768cad8781SPranav Subramanian       fprintf(stderr,"%s\n","Printing the file[i] after writing the data block" );
778cad8781SPranav Subramanian       fprintf(stderr,"%s\n",file[i] );
788cad8781SPranav Subramanian       fprintf(stderr,"%s\n","Printing the string that has been created " );
798cad8781SPranav Subramanian       fprintf(stderr,"%s\n",str );
800a242d7cSPranav Subramanian     }
81f1d1f61eSPranav Subramanian     phio_closefile(file[i]);
82f1d1f61eSPranav Subramanian     phastaio_printStats();
83f1d1f61eSPranav Subramanian   }
84f1d1f61eSPranav Subramanian   syncio_setup_read(nfiles, &(file[0]));
85f1d1f61eSPranav Subramanian   posixio_setup(&(file[1]), 'r');
86f1d1f61eSPranav Subramanian   streamio_setup_r(&(file[2]), rs, 'r');
87f1d1f61eSPranav Subramanian   for(int i=0; i<3; i++) {
88f1d1f61eSPranav Subramanian     if(!rank) fprintf(stderr, "%s\n", modes[i]);
89f1d1f61eSPranav Subramanian     phastaio_initStats();
90f1d1f61eSPranav Subramanian     phio_openfile(filename[i], file[i]);
913964a29aSPranav Subramanian     //Str was added
923964a29aSPranav Subramanian    // const char* str = "Number of times "+ nfiles ;
933964a29aSPranav Subramanian    // for (int j = 0; j < nfiles ; j++) {
94f1d1f61eSPranav Subramanian     phio_readheader(file[i], phrase, &numFish, &one, type, iotype);
953964a29aSPranav Subramanian     //  phio_readheader(file[i], str, &numFish, &one, type, iotype);
963964a29aSPranav Subramanian      //Changing argument from file[i] to file[j]
97f1d1f61eSPranav Subramanian     assert(!numFish);
98f1d1f61eSPranav Subramanian     phio_readdatablock(file[i], phrase, &fishWeight, &numFish, type, iotype);
993964a29aSPranav Subramanian     //  phio_readdatablock(file[i], str, &fishWeight, &numFish, type, iotype);
100f1d1f61eSPranav Subramanian     assert(fishWeight == 1.23);
101f1d1f61eSPranav Subramanian     phio_closefile(file[i]);
102f1d1f61eSPranav Subramanian     phastaio_printStats();
103f1d1f61eSPranav Subramanian   }
104f1d1f61eSPranav Subramanian   MPI_Finalize();
105f1d1f61eSPranav Subramanian   return 0;
106f1d1f61eSPranav Subramanian }
107