xref: /phasta/phSolver/common/setsyncioparam.cc (revision 7acde132a6def0fe2daaec0d1a712dff0e5c6636)
159599516SKenneth E. Jansen #include <fstream>
259599516SKenneth E. Jansen #include <stdio.h>
359599516SKenneth E. Jansen #include <stdlib.h>
459599516SKenneth E. Jansen #include <vector>
559599516SKenneth E. Jansen #include <string.h>
659599516SKenneth E. Jansen #include <cstring>
759599516SKenneth E. Jansen #include <sys/types.h>
859599516SKenneth E. Jansen #include <dirent.h> // For opendir(),readdir(),...
959599516SKenneth E. Jansen #include <mpi.h>
1059599516SKenneth E. Jansen #include "phastaIO.h"
1159599516SKenneth E. Jansen 
1259599516SKenneth E. Jansen #include "Input.h"
1359599516SKenneth E. Jansen #include "common_c.h"
1459599516SKenneth E. Jansen #include "setsyncioparam.h"
1559599516SKenneth E. Jansen 
1659599516SKenneth E. Jansen 
1759599516SKenneth E. Jansen using namespace std; //useful for ifstream. Other solution is std::ifstream
1859599516SKenneth E. Jansen 
1959599516SKenneth E. Jansen // extern void queryphmpiio_(const char[], int*, int*);
2059599516SKenneth E. Jansen // void queryphmpiio_(const char filename[],int *nfields, int *nppf)
2159599516SKenneth E. Jansen 
setIOparam()2259599516SKenneth E. Jansen void setIOparam()
2359599516SKenneth E. Jansen {
2459599516SKenneth E. Jansen   int count;
2559599516SKenneth E. Jansen   int nfields;
2659599516SKenneth E. Jansen   int nppf;
2759599516SKenneth E. Jansen   int stepno;
2859599516SKenneth E. Jansen   int part;
2959599516SKenneth E. Jansen   char fname[255];
3059599516SKenneth E. Jansen   DIR *d;
3159599516SKenneth E. Jansen   struct dirent *filename;
3259599516SKenneth E. Jansen 
3359599516SKenneth E. Jansen 
3459599516SKenneth E. Jansen //Number of geombc files
3559599516SKenneth E. Jansen   if(workfc.myrank == 0){
3659599516SKenneth E. Jansen     if( (d = opendir(".")) != NULL) {
3759599516SKenneth E. Jansen       count=0;
3859599516SKenneth E. Jansen       while(filename=readdir(d)) {
3959599516SKenneth E. Jansen         //printf("%s\n", filename->d_name);
4059599516SKenneth E. Jansen         if(strncmp(filename->d_name,"geombc-dat",10)==0) {
4159599516SKenneth E. Jansen           count=count+1;
4259599516SKenneth E. Jansen         }
4359599516SKenneth E. Jansen       }
4459599516SKenneth E. Jansen       closedir(d);
4559599516SKenneth E. Jansen     }
4659599516SKenneth E. Jansen     else {
4759599516SKenneth E. Jansen       printf("ERROR when counting geombc-dat\n");
4859599516SKenneth E. Jansen     }
4959599516SKenneth E. Jansen   }
5059599516SKenneth E. Jansen 
5159599516SKenneth E. Jansen   MPI_Bcast( &count, 1, MPI_INT, 0, MPI_COMM_WORLD );
5259599516SKenneth E. Jansen   //printf("Here we gogo: %d %d\n",workfc.myrank,count);
5359599516SKenneth E. Jansen 
5459599516SKenneth E. Jansen   outpar.nsynciofiles = count;
5559599516SKenneth E. Jansen   if(workfc.myrank == 0) {
5659599516SKenneth E. Jansen     printf("Number of geombc-dat and restart-dat files to read: %d\n", count);
57*9e5fdc79SCameron Smith     if(count==0) {
58*9e5fdc79SCameron Smith       printf("since zero assuming you planned to run posix 1PPF \n");
59*9e5fdc79SCameron Smith     }
6059599516SKenneth E. Jansen   }
6159599516SKenneth E. Jansen 
6259599516SKenneth E. Jansen }
6359599516SKenneth E. Jansen 
detectd2wallfiles(int * numd2wallfiles)6459599516SKenneth E. Jansen void detectd2wallfiles(int* numd2wallfiles)
6559599516SKenneth E. Jansen {
6659599516SKenneth E. Jansen   int count;
6759599516SKenneth E. Jansen   int nfields;
6859599516SKenneth E. Jansen   int nppf;
6959599516SKenneth E. Jansen   int stepno;
7059599516SKenneth E. Jansen   int part;
7159599516SKenneth E. Jansen   char fname[255];
7259599516SKenneth E. Jansen   DIR *d;
7359599516SKenneth E. Jansen   struct dirent *filename;
7459599516SKenneth E. Jansen 
7559599516SKenneth E. Jansen //Number of d2wall files
7659599516SKenneth E. Jansen   if(workfc.myrank == 0){
7759599516SKenneth E. Jansen     if( (d = opendir(".")) != NULL) {
7859599516SKenneth E. Jansen       count=0;
7959599516SKenneth E. Jansen       while(filename=readdir(d)) {
8059599516SKenneth E. Jansen         //printf("%s\n", filename->d_name);
8159599516SKenneth E. Jansen         if(strncmp(filename->d_name,"d2wall",6)==0) {
8259599516SKenneth E. Jansen           count=count+1;
8359599516SKenneth E. Jansen         }
8459599516SKenneth E. Jansen       }
8559599516SKenneth E. Jansen       closedir(d);
8659599516SKenneth E. Jansen     }
8759599516SKenneth E. Jansen   }
8859599516SKenneth E. Jansen 
8959599516SKenneth E. Jansen   MPI_Bcast( &count, 1, MPI_INT, 0, MPI_COMM_WORLD );
9059599516SKenneth E. Jansen   //printf("Here we gogo: %d %d\n",workfc.myrank,count);
9159599516SKenneth E. Jansen 
9259599516SKenneth E. Jansen   *numd2wallfiles = count;
9359599516SKenneth E. Jansen   if(workfc.myrank == 0) {
9459599516SKenneth E. Jansen     printf("Number of d2wall files present in the proc_case directory: %d\n", count);
9559599516SKenneth E. Jansen   }
9659599516SKenneth E. Jansen 
9759599516SKenneth E. Jansen }
9859599516SKenneth E. Jansen 
9959599516SKenneth E. Jansen 
10059599516SKenneth E. Jansen // void countfieldstowriterestart() //See new_interface.c
101