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