LCOV - code coverage report
Current view: top level - src/microsim/output - MSAmitranTrajectories.cpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 96.6 % 29 28
Test Date: 2024-11-20 15:55:46 Functions: 100.0 % 2 2

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2014-2024 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    MSAmitranTrajectories.cpp
      15              : /// @author  Michael Behrisch
      16              : /// @date    13.03.2014
      17              : ///
      18              : // Realises dumping the complete network state
      19              : /****************************************************************************/
      20              : #include <config.h>
      21              : 
      22              : #include <microsim/MSVehicleControl.h>
      23              : #include <microsim/MSEdge.h>
      24              : #include <microsim/MSLane.h>
      25              : #include <microsim/MSNet.h>
      26              : #include <microsim/MSVehicle.h>
      27              : #include <microsim/MSGlobals.h>
      28              : #include <utils/iodevices/OutputDevice.h>
      29              : #include <utils/emissions/PollutantsInterface.h>
      30              : #include "MSAmitranTrajectories.h"
      31              : 
      32              : // ===========================================================================
      33              : // static member definitions
      34              : // ===========================================================================
      35              : std::set<std::string> MSAmitranTrajectories::myWrittenTypes;
      36              : std::map<std::string, int> MSAmitranTrajectories::myWrittenVehicles;
      37              : 
      38              : 
      39              : // ===========================================================================
      40              : // method definitions
      41              : // ===========================================================================
      42              : void
      43         1021 : MSAmitranTrajectories::write(OutputDevice& of, const SUMOTime timestep) {
      44         1021 :     MSVehicleControl& vc = MSNet::getInstance()->getVehicleControl();
      45         2335 :     for (MSVehicleControl::constVehIt v = vc.loadedVehBegin(); v != vc.loadedVehEnd(); ++v) {
      46         1315 :         writeVehicle(of, *v->second, timestep);
      47              :     }
      48         1020 : }
      49              : 
      50              : 
      51              : void
      52         1315 : MSAmitranTrajectories::writeVehicle(OutputDevice& of, const SUMOVehicle& veh, const SUMOTime timestep) {
      53         1315 :     if (veh.isOnRoad()) {
      54         1281 :         const std::string& type = veh.getVehicleType().getID();
      55              :         if (myWrittenTypes.count(type) == 0) {
      56            9 :             of.openTag(SUMO_TAG_ACTORCONFIG).writeAttr(SUMO_ATTR_ID, veh.getVehicleType().getNumericalID());
      57            9 :             const SUMOEmissionClass c = veh.getVehicleType().getEmissionClass();
      58            9 :             if (c != 0) {
      59            9 :                 of.writeAttr(SUMO_ATTR_VEHICLECLASS, PollutantsInterface::getAmitranVehicleClass(c));
      60           18 :                 of.writeAttr("fuel", PollutantsInterface::getFuel(c));
      61            9 :                 of.writeAttr(SUMO_ATTR_EMISSIONCLASS, "Euro" + toString(PollutantsInterface::getEuroClass(c)));
      62            9 :                 const double weight = PollutantsInterface::getWeight(c);
      63            9 :                 if (weight > 0.) {
      64            0 :                     of.writeAttr(SUMO_ATTR_WEIGHT, int(weight / 10. + 0.5));
      65              :                 }
      66              :             }
      67           17 :             of.writeAttr(SUMO_ATTR_REF, type).closeTag();
      68              :             myWrittenTypes.insert(type);
      69              :         }
      70              :         if (myWrittenVehicles.count(veh.getID()) == 0) {
      71           52 :             const int index = (int)myWrittenVehicles.size();
      72           52 :             of.openTag(SUMO_TAG_VEHICLE).writeAttr(SUMO_ATTR_ID, index)
      73           52 :             .writeAttr(SUMO_ATTR_ACTORCONFIG, veh.getVehicleType().getNumericalID())
      74          104 :             .writeAttr(SUMO_ATTR_STARTTIME, STEPS2MS(veh.getDeparture()));
      75           52 :             of.writeAttr(SUMO_ATTR_REF, veh.getID()).closeTag();
      76           52 :             myWrittenVehicles[veh.getID()] = index;
      77              :         }
      78         1280 :         of.openTag(SUMO_TAG_MOTIONSTATE).writeAttr(SUMO_ATTR_VEHICLE, myWrittenVehicles[veh.getID()])
      79         1280 :         .writeAttr(SUMO_ATTR_SPEED, int(100.*veh.getSpeed() + 0.5))
      80              :         .writeAttr(SUMO_ATTR_TIME, STEPS2MS(timestep))
      81         1280 :         .writeAttr(SUMO_ATTR_ACCELERATION, int(1000.*veh.getAcceleration() + 0.5));
      82         2560 :         of.closeTag();
      83              :     }
      84         1314 : }
      85              : 
      86              : 
      87              : /****************************************************************************/
        

Generated by: LCOV version 2.0-1