xref: /phasta/M2NFixBnd/src/setsyncioparam.cc (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen #include <fstream>
2*59599516SKenneth E. Jansen #include <stdio.h>
3*59599516SKenneth E. Jansen #include <stdlib.h>
4*59599516SKenneth E. Jansen #include <vector>
5*59599516SKenneth E. Jansen #include <string.h>
6*59599516SKenneth E. Jansen #include <cstring>
7*59599516SKenneth E. Jansen #include <sys/types.h>
8*59599516SKenneth E. Jansen #include <dirent.h> // For opendir(),readdir(),...
9*59599516SKenneth E. Jansen #include <mpi.h>
10*59599516SKenneth E. Jansen #include "phastaIO.h"
11*59599516SKenneth E. Jansen 
12*59599516SKenneth E. Jansen #include "commonM2NFixBnd_c.h"
13*59599516SKenneth E. Jansen #include "setsyncioparamM2NFixBnd.h"
14*59599516SKenneth E. Jansen 
15*59599516SKenneth E. Jansen 
16*59599516SKenneth E. Jansen using namespace std; //useful for ifstream. Other solution is std::ifstream
17*59599516SKenneth E. Jansen 
18*59599516SKenneth E. Jansen // extern void queryphmpiio_(const char[], int*, int*);
19*59599516SKenneth E. Jansen // void queryphmpiio_(const char filename[],int *nfields, int *nppf)
20*59599516SKenneth E. Jansen 
setIOparam()21*59599516SKenneth E. Jansen void setIOparam()
22*59599516SKenneth E. Jansen {
23*59599516SKenneth E. Jansen   int count;
24*59599516SKenneth E. Jansen   int nfields;
25*59599516SKenneth E. Jansen   int nppf;
26*59599516SKenneth E. Jansen   int stepno;
27*59599516SKenneth E. Jansen   int part;
28*59599516SKenneth E. Jansen   char fname[255];
29*59599516SKenneth E. Jansen   DIR *d;
30*59599516SKenneth E. Jansen   struct dirent *filename;
31*59599516SKenneth E. Jansen 
32*59599516SKenneth E. Jansen 
33*59599516SKenneth E. Jansen //Number of geombc files
34*59599516SKenneth E. Jansen   if(workfc.myrank == 0){
35*59599516SKenneth E. Jansen     if( (d = opendir(".")) != NULL) {
36*59599516SKenneth E. Jansen       count=0;
37*59599516SKenneth E. Jansen       while(filename=readdir(d)) {
38*59599516SKenneth E. Jansen         //printf("%s\n", filename->d_name);
39*59599516SKenneth E. Jansen         if(strncmp(filename->d_name,"geombcRed-dat",13)==0) {
40*59599516SKenneth E. Jansen           count=count+1;
41*59599516SKenneth E. Jansen         }
42*59599516SKenneth E. Jansen       }
43*59599516SKenneth E. Jansen       closedir(d);
44*59599516SKenneth E. Jansen     }
45*59599516SKenneth E. Jansen     else {
46*59599516SKenneth E. Jansen       printf("ERROR when counting geombcRed-dat\n");
47*59599516SKenneth E. Jansen     }
48*59599516SKenneth E. Jansen   }
49*59599516SKenneth E. Jansen 
50*59599516SKenneth E. Jansen   MPI_Bcast( &count, 1, MPI_INT, 0, MPI_COMM_WORLD );
51*59599516SKenneth E. Jansen   //printf("Here we gogo: %d %d\n",workfc.myrank,count);
52*59599516SKenneth E. Jansen 
53*59599516SKenneth E. Jansen   outpar.nsynciofiles = count;
54*59599516SKenneth E. Jansen   if(workfc.myrank == 0) {
55*59599516SKenneth E. Jansen     printf("Number of geombcRed-dat and restartRed-dat files to read: %d\n", count);
56*59599516SKenneth E. Jansen   }
57*59599516SKenneth E. Jansen 
58*59599516SKenneth E. Jansen }
59*59599516SKenneth E. Jansen 
detectd2wallfiles(int * numd2wallfiles)60*59599516SKenneth E. Jansen void detectd2wallfiles(int* numd2wallfiles)
61*59599516SKenneth E. Jansen {
62*59599516SKenneth E. Jansen   int count;
63*59599516SKenneth E. Jansen   int nfields;
64*59599516SKenneth E. Jansen   int nppf;
65*59599516SKenneth E. Jansen   int stepno;
66*59599516SKenneth E. Jansen   int part;
67*59599516SKenneth E. Jansen   char fname[255];
68*59599516SKenneth E. Jansen   DIR *d;
69*59599516SKenneth E. Jansen   struct dirent *filename;
70*59599516SKenneth E. Jansen 
71*59599516SKenneth E. Jansen //Number of d2wall files
72*59599516SKenneth E. Jansen   if(workfc.myrank == 0){
73*59599516SKenneth E. Jansen     if( (d = opendir(".")) != NULL) {
74*59599516SKenneth E. Jansen       count=0;
75*59599516SKenneth E. Jansen       while(filename=readdir(d)) {
76*59599516SKenneth E. Jansen         //printf("%s\n", filename->d_name);
77*59599516SKenneth E. Jansen         if(strncmp(filename->d_name,"d2wall",6)==0) {
78*59599516SKenneth E. Jansen           count=count+1;
79*59599516SKenneth E. Jansen         }
80*59599516SKenneth E. Jansen       }
81*59599516SKenneth E. Jansen       closedir(d);
82*59599516SKenneth E. Jansen     }
83*59599516SKenneth E. Jansen   }
84*59599516SKenneth E. Jansen 
85*59599516SKenneth E. Jansen   MPI_Bcast( &count, 1, MPI_INT, 0, MPI_COMM_WORLD );
86*59599516SKenneth E. Jansen   //printf("Here we gogo: %d %d\n",workfc.myrank,count);
87*59599516SKenneth E. Jansen 
88*59599516SKenneth E. Jansen   *numd2wallfiles = count;
89*59599516SKenneth E. Jansen   if(workfc.myrank == 0) {
90*59599516SKenneth E. Jansen     printf("Number of d2wall files present in the proc_case directory: %d\n", count);
91*59599516SKenneth E. Jansen   }
92*59599516SKenneth E. Jansen 
93*59599516SKenneth E. Jansen }
94*59599516SKenneth E. Jansen 
95*59599516SKenneth E. Jansen 
96*59599516SKenneth E. Jansen // void countfieldstowriterestart() //See new_interface.c
97