void McSimulation::load(const std::string& filename) { if (isInitialized_) { UTIL_THROW("Error: Called load when already initialized"); } if (!isRestarting_) { UTIL_THROW("Error: Called load without restart option"); } // Load from archive Serializable::IArchive ar; std::ios_base::openmode mode = std::ios_base::in | std::ios_base::binary; fileMaster().openRestartIFile(filename, ar.file(), mode); load(ar); ar.file().close(); #ifdef UTIL_MPI #ifdef MCMD_PERTURB if (system().hasPerturbation()) { // Read one command file, after reading multiple restart files. Util::Log::file() << "Set to use a single command file" << std::endl; setIoCommunicator(); } #endif #endif isInitialized_ = true; }
/* * Increment structure factors for all wavevectors and modes. */ void StructureFactor::sample(long iStep) { if (isAtInterval(iStep)) { <<<<<<< HEAD fileMaster().openOutputFile(outputFileName("_max.dat"), outputFile_, !isFirstStep_); //fileMaster().openOutputFile(outputFileName(".dat"), logFile_, !isFirstStep_); =======
/* * Output results to file after simulation is completed. */ void ClusterHistogram::output() { // Write parameter file fileMaster().openOutputFile(outputFileName(".prm"), outputFile_); writeParam(outputFile_); outputFile_.close(); // Write histogram output fileMaster().openOutputFile(outputFileName(".hist"), outputFile_); // hist_.output(outputFile_); int min = hist_.min(); int nBin = hist_.nBin(); for (int i = 0; i < nBin; ++i) { outputFile_ << Int(i + min) << " " << Dbl(double(hist_.data()[i])/double(nSample_)) << "\n"; } outputFile_.close(); }
void McSimulation::save(const std::string& filename) { if (saveInterval_ > 0) { if (iStep_ % saveInterval_ == 0) { Serializable::OArchive ar; std::ios_base::openmode mode = std::ios_base::out | std::ios_base::binary; fileMaster().openRestartOFile(filename, ar.file(), mode); save(ar); ar.file().close(); } } }
/* * Output results to file after simulation is completed. */ void McMuExchange::output() { fileMaster().openOutputFile(outputFileName(".prm"), outputFile_); writeParam(outputFile_); outputFile_.close(); double ave, err; double sumAve = 0.0; double sumAveSq = 0.0; double sumErrSq = 0.0; for (int iMol=0; iMol < nMolecule_; ++iMol) { ave = accumulators_[iMol].average(); err = accumulators_[iMol].blockingError(); sumAve += ave; sumAveSq += ave*ave; sumErrSq += err*err; } double rMol = double(nMolecule_); ave = sumAve/rMol; err = sqrt(sumErrSq/rMol); double dev = sqrt((sumAveSq/rMol) - ave*ave); fileMaster().openOutputFile(outputFileName(".ave"), outputFile_); outputFile_ << "Average = " << ave << " +- " << dev/sqrt(rMol) << std::endl; outputFile_ << "Error via molecule variance = " << dev/sqrt(rMol) << std::endl; outputFile_ << "Error via time series analysis = " << err/sqrt(rMol) << std::endl; outputFile_ << std::endl; //for (int iMol=0; iMol < nMolecule_; ++iMol) { // accumulators_[iMol].output(outputFile_); //} outputFile_.close(); }
/* * Read default parameter file. */ void McSimulation::readParam() { readParam(fileMaster().paramFile()); }