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