1d1293ce9SCameron Smith #include "phIO.h" 2d1293ce9SCameron Smith #include "phComm.h" 3f262839cSCameron Smith #include <stdio.h> 4*82f286aaSCameron Smith #include <string.h> 5d1293ce9SCameron Smith #include <phastaIO.h> 6d1293ce9SCameron Smith #include <sstream> 7d1293ce9SCameron Smith #include <string> 8d1293ce9SCameron Smith 9f262839cSCameron Smith namespace { 10f262839cSCameron Smith std::string appendSync(const char* phrase) { 11f262839cSCameron Smith std::stringstream ss; 12f262839cSCameron Smith ss << phrase << "@" << phcomm_rank()+1 << "?"; 13f262839cSCameron Smith std::string s = ss.str(); 14f262839cSCameron Smith return s; 15f262839cSCameron Smith } 16*82f286aaSCameron Smith std::string appendColor(const char* phrase, int numFiles) { 17*82f286aaSCameron Smith const int color = computeColor(phcomm_rank(), phcomm_size(), numFiles); 18*82f286aaSCameron Smith std::stringstream ss; 19*82f286aaSCameron Smith ss << phrase << color+1; 20*82f286aaSCameron Smith std::string s = ss.str(); 21*82f286aaSCameron Smith return s; 22*82f286aaSCameron Smith } 23f262839cSCameron Smith } 24f262839cSCameron Smith 25*82f286aaSCameron Smith void phio_readheader( 26*82f286aaSCameron Smith int* fileDescriptor, 27d1293ce9SCameron Smith const char keyphrase[], 28d1293ce9SCameron Smith void* valueArray, 29d1293ce9SCameron Smith int* nItems, 30d1293ce9SCameron Smith const char datatype[], 31d1293ce9SCameron Smith const char iotype[] ) { 32f262839cSCameron Smith std::string syncPhrase = appendSync(keyphrase); 33f262839cSCameron Smith readheader(fileDescriptor, syncPhrase.c_str(), 34d1293ce9SCameron Smith valueArray, nItems, datatype, iotype); 35d1293ce9SCameron Smith } 36d1293ce9SCameron Smith 37f262839cSCameron Smith void phio_readdatablock( 38f262839cSCameron Smith int* fileDescriptor, 39f262839cSCameron Smith const char keyphrase[], 40f262839cSCameron Smith void* valueArray, 41f262839cSCameron Smith int* nItems, 42f262839cSCameron Smith const char datatype[], 43f262839cSCameron Smith const char iotype[] ) { 44f262839cSCameron Smith std::string syncPhrase = appendSync(keyphrase); 45f262839cSCameron Smith readdatablock(fileDescriptor, syncPhrase.c_str(), 46f262839cSCameron Smith valueArray, nItems, datatype, iotype); 47f262839cSCameron Smith } 48f262839cSCameron Smith 49*82f286aaSCameron Smith void phio_openfile( 50*82f286aaSCameron Smith const char filename[], 51*82f286aaSCameron Smith const char mode[], 52*82f286aaSCameron Smith int* numFiles, 53*82f286aaSCameron Smith int* fileDescriptor) { 54*82f286aaSCameron Smith std::string syncName = appendColor(filename, *numFiles); 55*82f286aaSCameron Smith fprintf(stderr, "filename %s syncName %s\n", filename, syncName.c_str()); 56*82f286aaSCameron Smith int nfields, nppf; 57*82f286aaSCameron Smith queryphmpiio(syncName.c_str(), &nfields, &nppf); 58*82f286aaSCameron Smith fprintf(stderr, "nfields %d nppf %d\n", nfields, nppf); 59*82f286aaSCameron Smith initphmpiio(&nfields, &nppf, numFiles, fileDescriptor, mode); 60*82f286aaSCameron Smith openfile(syncName.c_str(), mode, fileDescriptor); 61*82f286aaSCameron Smith } 62f262839cSCameron Smith 63*82f286aaSCameron Smith void phio_restartname(int* step, char* filename) { 64*82f286aaSCameron Smith std::stringstream ss; 65*82f286aaSCameron Smith ss << "restart-dat." << *step << '.'; 66*82f286aaSCameron Smith std::string s = ss.str(); 67*82f286aaSCameron Smith strcpy(filename, s.c_str()); 68*82f286aaSCameron Smith } 69