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 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 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