示例#1
0
文件: misc.cpp 项目: herbsolo/DynamO
void
OPMisc::periodicOutput()
{
  time_t rawtime;
  time(&rawtime);

  tm timeInfo;
  localtime_r (&rawtime, &timeInfo);

  char dateString[12] = "";
  strftime(dateString, 12, "%a %H:%M |", &timeInfo);

  I_Pcout() << dateString << " NColls " << (Sim->eventCount+1)/1000 << "k, t "
	    << Sim->dSysTime/Sim->dynamics.units().unitTime() << ", <t_2> "
	    <<   Sim->dSysTime * static_cast<double>(Sim->N)
    /(Sim->dynamics.units().unitTime() * 2.0 * static_cast<double>(dualEvents))
	    << ", <t_tot> "
	    <<   Sim->dSysTime * static_cast<double>(Sim->N)
    / (Sim->dynamics.units().unitTime() * (2.0 * static_cast<double>(dualEvents)
					   + static_cast<double>(singleEvents)))
	    << ", ";

  oldSysTime = Sim->dSysTime;
  oldcoll = Sim->eventCount;
}
示例#2
0
  void
  OPMisc::periodicOutput()
  {
    time_t rawtime;
    time(&rawtime);

    tm timeInfo;
    localtime_r (&rawtime, &timeInfo);

    char dateString[12] = "";
    strftime(dateString, 12, "%a %H:%M", &timeInfo);

    //Output the date
    I_Pcout() << dateString;

    //Calculate the ETA of the simulation, and take care with overflows and the like
    double _earliest_end_time = HUGE_VAL;
    BOOST_FOREACH(const std::tr1::shared_ptr<System>& sysPtr, Sim->systems)
      if (std::tr1::dynamic_pointer_cast<SystHalt>(sysPtr))
	_earliest_end_time = std::min(_earliest_end_time, sysPtr->getdt());

    double time_seconds_remaining = _earliest_end_time 
      / (getSimTimePerSecond() * Sim->units.unitTime());

    size_t seconds_remaining = time_seconds_remaining;
    
    if (time_seconds_remaining > std::numeric_limits<size_t>::max())
      seconds_remaining = std::numeric_limits<size_t>::max();

    if (Sim->endEventCount != std::numeric_limits<size_t>::max())
      {
	double event_seconds_remaining = (Sim->endEventCount - Sim->eventCount) / getEventsPerSecond() + 0.5;
	
	if (event_seconds_remaining < std::numeric_limits<size_t>::max())
	  seconds_remaining = std::min(seconds_remaining, size_t(event_seconds_remaining));

      }
  
    if (seconds_remaining != std::numeric_limits<size_t>::max())
      {
	size_t ETA_hours = seconds_remaining / 3600;
	size_t ETA_mins = (seconds_remaining / 60) % 60;
	size_t ETA_secs = seconds_remaining % 60;

	I_Pcout() << ", ETA ";
	if (ETA_hours)
	  I_Pcout() << ETA_hours << "hr ";
	  
	if (ETA_mins)
	  I_Pcout() << ETA_mins << "min ";

	I_Pcout() << ETA_secs << "s";
      }

    I_Pcout() << ", Events " << (Sim->eventCount+1)/1000 << "k, t "
	      << Sim->systemTime/Sim->units.unitTime() 
	      << ", <MFT> " <<  getMFT()
	      << ", <T> " << getMeankT() / Sim->units.unitEnergy()
	      << ", U " << _internalE.current() / Sim->units.unitEnergy();
  }
示例#3
0
  void
  OPKEnergy::periodicOutput()
  {
    double powerloss = (InitialKE - KECurrent) * Sim->dynamics.units().unitLength()
      * pow(Sim->dynamics.units().unitTime(),3)
      / (Sim->dynamics.units().unitMass() * Sim->dSysTime * Sim->dynamics.getSimVolume());


    I_Pcout() << "T "
	      <<  2.0 * KECurrent / (Sim->N * Sim->dynamics.getLiouvillean().getParticleDOF()
				     * Sim->dynamics.units().unitEnergy())
	      << ", <T> " << getAvgTheta() << ", <PwrLoss> " << powerloss << ", ";
  }
示例#4
0
  void
  OPETA::periodicOutput()
  {
    time_t currTime;
    time(&currTime);

    double ETA = floor(((Sim->endEventCount - Sim->eventCount) * difftime(currTime, start_Time)) / Sim->eventCount);
    double ETA_hours = floor(ETA/3600);
    double ETA_mins = floor(ETA/60) - (ETA_hours * 60);
    double ETA_secs = ETA - (ETA_mins * 60) - (ETA_hours * 3600);

    I_Pcout() << "ETA " << ETA_hours << "h " << ETA_mins << "m " << ETA_secs << "s, ";
  }
示例#5
0
 void
 OPUEnergy::periodicOutput()
 {
   I_Pcout() << "U " << intECurrent / Sim->dynamics.units().unitEnergy() << ", ";
 }