diff --git a/src/Distribution/Distribution.cpp b/src/Distribution/Distribution.cpp index 9fcf78a14567143cd9a3ba0fd1c2a92555503983..3438fe6175b9dd2b868d9277aacefd4875ab8ca6 100644 --- a/src/Distribution/Distribution.cpp +++ b/src/Distribution/Distribution.cpp @@ -45,6 +45,7 @@ #include <sys/time.h> +#include <boost/filesystem.hpp> #include <boost/regex.hpp> #include <boost/numeric/odeint/stepper/runge_kutta4.hpp> @@ -1001,28 +1002,25 @@ size_t Distribution::getNumberOfParticlesInFile(std::ifstream &inputFile) { void Distribution::createDistributionFromFile(size_t /*numberOfParticles*/, double massIneV) { - *gmsg << level3 << "\n" - << "------------------------------------------------------------------------------------\n"; - *gmsg << "READ INITIAL DISTRIBUTION FROM FILE \"" - << Attributes::getString(itsAttr[Attrib::Distribution::FNAME]) - << "\"\n"; - *gmsg << "------------------------------------------------------------------------------------\n" << endl; - // Data input file is only read by node 0. std::ifstream inputFile; std::string fileName = Attributes::getString(itsAttr[Attrib::Distribution::FNAME]); - bool failedOpen = 0; - if (Ippl::myNode() == 0) { - inputFile.open(fileName.c_str()); - failedOpen = static_cast<bool>(inputFile.fail()); - } - reduce(failedOpen,failedOpen,OpAddAssign()); - if (failedOpen) { + if (!boost::filesystem::exists("fileName")) { throw OpalException("Distribution::createDistributionFromFile", "Open file operation failed, please check if \"" - + fileName - + "\" really exists."); + + fileName + + "\" really exists."); } + if (Ippl::myNode() == 0) { + inputFile.open(fileName.c_str()); + } + + *gmsg << level3 << "\n" + << "------------------------------------------------------------------------------------\n"; + *gmsg << "READ INITIAL DISTRIBUTION FROM FILE \"" + << Attributes::getString(itsAttr[Attrib::Distribution::FNAME]) + << "\"\n"; + *gmsg << "------------------------------------------------------------------------------------\n" << endl; size_t numberOfParticlesRead = getNumberOfParticlesInFile(inputFile); /*