void MSNet::writeOutput() { // update detector values myDetectorControl->updateDetectors(myStep); // check state dumps if (OptionsCont::getOptions().isSet("netstate-dump")) { MSXMLRawOut::write(OutputDevice::getDeviceByOption("netstate-dump"), *myEdges, myStep); } // check fcd dumps if (OptionsCont::getOptions().isSet("fcd-output")) { MSFCDExport::write(OutputDevice::getDeviceByOption("fcd-output"), myStep); } // check emission dumps if (OptionsCont::getOptions().isSet("emission-output")) { MSEmissionExport::write(OutputDevice::getDeviceByOption("emission-output"), myStep); } // check full dumps if (OptionsCont::getOptions().isSet("full-output")) { MSFullExport::write(OutputDevice::getDeviceByOption("full-output"), myStep); } // check queue dumps if (OptionsCont::getOptions().isSet("queue-output")) { MSQueueExport::write(OutputDevice::getDeviceByOption("queue-output"), myStep); } // check vtk dumps if (OptionsCont::getOptions().isSet("vtk-output")) { if (MSNet::getInstance()->getVehicleControl().getRunningVehicleNo() > 0) { std::string timestep = time2string(myStep); timestep = timestep.substr(0, timestep.length() - 3); std::string output = OptionsCont::getOptions().getString("vtk-output"); std::string filename = output + "_" + timestep + ".vtp"; OutputDevice_File dev = OutputDevice_File(filename, false); //build a huge mass of xml files MSVTKExport::write(dev, myStep); } } // emission output if (OptionsCont::getOptions().isSet("summary-output")) { OutputDevice& od = OutputDevice::getDeviceByOption("summary-output"); od << " <step time=\"" << time2string(myStep) << "\" " << "loaded=\"" << myVehicleControl->getLoadedVehicleNo() << "\" " << "emitted=\"" << myVehicleControl->getDepartedVehicleNo() << "\" " << "running=\"" << myVehicleControl->getRunningVehicleNo() << "\" " << "waiting=\"" << myInserter->getWaitingVehicleNo() << "\" " << "ended=\"" << myVehicleControl->getEndedVehicleNo() << "\" " << "meanWaitingTime=\""; myVehicleControl->printMeanWaitingTime(od); od << "\" meanTravelTime=\""; myVehicleControl->printMeanTravelTime(od); od << "\" "; if (myLogExecutionTime) { od << "duration=\"" << mySimStepDuration << "\" "; } od << "/>\n"; } // write detector values myDetectorControl->writeOutput(myStep + DELTA_T, false); }
void MSNet::writeOutput() { // update detector values myDetectorControl->updateDetectors(myStep); // check state dumps if (OptionsCont::getOptions().isSet("netstate-dump")) { MSXMLRawOut::write(OutputDevice::getDeviceByOption("netstate-dump"), *myEdges, myStep); } // check fcd dumps if (OptionsCont::getOptions().isSet("fcd-output")) { MSFCDExport::write(OutputDevice::getDeviceByOption("fcd-output"), myStep); } // check emission dumps if (OptionsCont::getOptions().isSet("emission-output")) { MSEmissionExport::write(OutputDevice::getDeviceByOption("emission-output"), myStep); } // check full dumps if (OptionsCont::getOptions().isSet("full-output")) { MSFullExport::write(OutputDevice::getDeviceByOption("full-output"), myStep); } // check queue dumps if (OptionsCont::getOptions().isSet("queue-output")) { MSQueueExport::write(OutputDevice::getDeviceByOption("queue-output"), myStep); } // check vtk dumps if (OptionsCont::getOptions().isSet("vtk-output")) { if (MSNet::getInstance()->getVehicleControl().getRunningVehicleNo() > 0) { std::string timestep = time2string(myStep); timestep = timestep.substr(0, timestep.length() - 3); std::string output = OptionsCont::getOptions().getString("vtk-output"); std::string filename = output + "_" + timestep + ".vtp"; OutputDevice_File dev = OutputDevice_File(filename, false); //build a huge mass of xml files MSVTKExport::write(dev, myStep); } } // emission output if (OptionsCont::getOptions().isSet("summary-output")) { OutputDevice& od = OutputDevice::getDeviceByOption("summary-output"); od << " <step time=\"" << time2string(myStep) << "\" " << "loaded=\"" << myVehicleControl->getLoadedVehicleNo() << "\" " << "emitted=\"" << myVehicleControl->getDepartedVehicleNo() << "\" " << "running=\"" << myVehicleControl->getRunningVehicleNo() << "\" " << "waiting=\"" << myInserter->getWaitingVehicleNo() << "\" " << "ended=\"" << myVehicleControl->getEndedVehicleNo() << "\" " << "meanWaitingTime=\""; myVehicleControl->printMeanWaitingTime(od); od << "\" meanTravelTime=\""; myVehicleControl->printMeanTravelTime(od); od << "\" "; if (myLogExecutionTime) { od << "duration=\"" << mySimStepDuration << "\" "; } od << "/>\n"; } // write detector values myDetectorControl->writeOutput(myStep + DELTA_T, false); // write link states if (OptionsCont::getOptions().isSet("link-output")) { OutputDevice& od = OutputDevice::getDeviceByOption("link-output"); od.openTag("timestep"); od.writeAttr(SUMO_ATTR_ID, STEPS2TIME(myStep)); const std::vector<MSEdge*>& edges = myEdges->getEdges(); for (std::vector<MSEdge*>::const_iterator i = edges.begin(); i != edges.end(); ++i) { const std::vector<MSLane*>& lanes = (*i)->getLanes(); for (std::vector<MSLane*>::const_iterator j = lanes.begin(); j != lanes.end(); ++j) { const std::vector<MSLink*>& links = (*j)->getLinkCont(); for (std::vector<MSLink*>::const_iterator k = links.begin(); k != links.end(); ++k) { (*k)->writeApproaching(od, (*j)->getID()); } } } od.closeTag(); } }