예제 #1
0
   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;
   }
예제 #2
0
   /* 
   * 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_);
=======
예제 #3
0
   /*
   * 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();
   }
예제 #4
0
 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();
       }
    }
 }
예제 #5
0
   /*
   * 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();
   }
예제 #6
0
 /*
 * Read default parameter file.
 */
 void McSimulation::readParam()
 {  readParam(fileMaster().paramFile()); }