LCOV - code coverage report
Current view: top level - src/foreign/PHEMlight/V5/cpp - CEPHandler.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 1 1 100.0 %
Date: 2024-04-27 15:34:54 Functions: 0 0 -

          Line data    Source code
       1             : /****************************************************************************/
       2             : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3             : // Copyright (C) 2016-2024 German Aerospace Center (DLR) and others.
       4             : // PHEMlight module
       5             : // Copyright (C) 2016-2023 Technische Universitaet Graz, https://www.tugraz.at/
       6             : // This program and the accompanying materials are made available under the
       7             : // terms of the Eclipse Public License 2.0 which is available at
       8             : // https://www.eclipse.org/legal/epl-2.0/
       9             : // This Source Code may also be made available under the following Secondary
      10             : // Licenses when the conditions for such availability set forth in the Eclipse
      11             : // Public License 2.0 are satisfied: GNU General Public License, version 2
      12             : // or later which is available at
      13             : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      14             : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      15             : /****************************************************************************/
      16             : /// @file    CEPHandler.h
      17             : /// @author  Martin Dippold
      18             : /// @author  Michael Behrisch
      19             : /// @date    July 2016
      20             : ///
      21             : //
      22             : /****************************************************************************/
      23             : #pragma once
      24             : 
      25             : #include <string>
      26             : #include <map>
      27             : #include <vector>
      28             : #include <utility>
      29             : 
      30             : //C# TO C++ CONVERTER NOTE: Forward class declarations:
      31             : namespace PHEMlightdllV5 { class CEP; }
      32             : namespace PHEMlightdllV5 { class Correction; }
      33             : namespace PHEMlightdllV5 { class Helpers; }
      34             : namespace PHEMlightdllV5 { class VEHPHEMLightJSON; }
      35             : namespace PHEMlightdllV5 { class Vehicle_Data; }
      36             : namespace PHEMlightdllV5 { class VEH; }
      37             : namespace PHEMlightdllV5 { class Aux_Data; }
      38             : namespace PHEMlightdllV5 { class Engine_Data; }
      39             : namespace PHEMlightdllV5 { class Rollres_Data; }
      40             : namespace PHEMlightdllV5 { class FullLoadDrag_Data; }
      41             : namespace PHEMlightdllV5 { class Transmission_Data; }
      42             : namespace PHEMlightdllV5 { class ICE_Data; }
      43             : namespace PHEMlightdllV5 { class EM_Data; }
      44             : 
      45             : namespace PHEMlightdllV5 {
      46             :     //PHEMLight vehicle
      47             :     class VEHPHEMLightJSON {
      48             :         // Vehicle data
      49             :     public:
      50             :         class Vehicle_Data {
      51             :         private:
      52             :             std::string privateMassType;
      53             :             std::string privateFuelType;
      54             :             std::string privateCalcType;
      55             :             double privateMass;
      56             :             double privateLoading;
      57             :             double privateRedMassWheel;
      58             :             double privateWheelDiameter;
      59             :             double privateCw;
      60             :             double privateA;
      61             :             double privateMileage;
      62             : 
      63             :         public:
      64             :             const std::string&  getMassType() const;
      65             :             void setMassType(const std::string& value);
      66             :             const std::string&  getFuelType() const;
      67             :             void setFuelType(const std::string& value);
      68             :             const std::string&  getCalcType() const;
      69             :             void setCalcType(const std::string& value);
      70             :             const double&  getMass() const;
      71             :             void setMass(const double&  value);
      72             :             const double&  getLoading() const;
      73             :             void setLoading(const double&  value);
      74             :             const double&  getRedMassWheel() const;
      75             :             void setRedMassWheel(const double&  value);
      76             :             const double&  getWheelDiameter() const;
      77             :             void setWheelDiameter(const double&  value);
      78             :             const double&  getCw() const;
      79             :             void setCw(const double&  value);
      80             :             const double&  getA() const;
      81             :             void setA(const double&  value);
      82             :             const double&  getMileage() const;
      83             :             void setMileage(const double&  value);
      84             :         };
      85             : 
      86             :         // Rolling resistance data
      87             :     public:
      88             :         class Rollres_Data {
      89             :         private:
      90             :             double privateFr0;
      91             :             double privateFr1;
      92             :             double privateFr2;
      93             :             double privateFr3;
      94             :             double privateFr4;
      95             : 
      96             :         public:
      97             :             const double&  getFr0() const;
      98             :             void setFr0(const double&  value);
      99             :             const double&  getFr1() const;
     100             :             void setFr1(const double&  value);
     101             :             const double&  getFr2() const;
     102             :             void setFr2(const double&  value);
     103             :             const double&  getFr3() const;
     104             :             void setFr3(const double&  value);
     105             :             const double&  getFr4() const;
     106             :             void setFr4(const double&  value);
     107             :         };
     108             : 
     109             :         // ICE engine
     110             :     public:
     111             :         class ICE_Data {
     112             :         private:
     113             :             double privatePrated;
     114             :             double privatenrated;
     115             :             double privateIdling;
     116             : 
     117             :         public:
     118             :             const double&  getPrated() const;
     119             :             void setPrated(const double&  value);
     120             :             const double&  getnrated() const;
     121             :             void setnrated(const double&  value);
     122             :             const double&  getIdling() const;
     123             :             void setIdling(const double&  value);
     124             :         };
     125             : 
     126             :         // EM engine
     127             :     public:
     128             :         class EM_Data {
     129             :         private:
     130             :             double privatePrated;
     131             :             double privatenrated;
     132             : 
     133             :         public:
     134             :             const double&  getPrated() const;
     135             :             void setPrated(const double&  value);
     136             :             const double&  getnrated() const;
     137             :             void setnrated(const double&  value);
     138             :         };
     139             : 
     140             :         // Engine data
     141             :     public:
     142             :         class Engine_Data {
     143             :         private:
     144             :             ICE_Data privateICEData;
     145             :             EM_Data privateEMData;
     146             : 
     147             :         public:
     148             :             ICE_Data* getICEData();
     149             :             EM_Data* getEMData();
     150             :         };
     151             : 
     152             :         // Auxiliaries data
     153             :     public:
     154             :         class Aux_Data {
     155             :         private:
     156             :             double privatePauxnorm;
     157             : 
     158             :         public:
     159             :             const double&  getPauxnorm() const;
     160             :             void setPauxnorm(const double&  value);
     161             :         };
     162             : 
     163             :         // Full load and Drag data
     164             :     public:
     165             :         class FullLoadDrag_Data {
     166             :         private:
     167             :             double privateP_n_max_v0;
     168             :             double privateP_n_max_p0;
     169             :             double privateP_n_max_v1;
     170             :             double privateP_n_max_p1;
     171             :             std::map<std::string, std::vector<double> > privateDragCurve;
     172             : 
     173             :         public:
     174             :             const double&  getP_n_max_v0() const;
     175             :             void setP_n_max_v0(const double&  value);
     176             :             const double&  getP_n_max_p0() const;
     177             :             void setP_n_max_p0(const double&  value);
     178             :             const double&  getP_n_max_v1() const;
     179             :             void setP_n_max_v1(const double&  value);
     180             :             const double&  getP_n_max_p1() const;
     181             :             void setP_n_max_p1(const double&  value);
     182             :             std::map<std::string, std::vector<double> >&  getDragCurve();
     183             :             void setDragCurve(const std::map<std::string, std::vector<double> >& value);
     184             : 
     185             :             FullLoadDrag_Data();
     186             :         };
     187             : 
     188             :         // Transmission data
     189             :     public:
     190             :         class Transmission_Data {
     191             :         private:
     192             :             double privateAxelRatio;
     193             :             std::map<std::string, std::vector<double> > privateTransm;
     194             : 
     195             :         public:
     196             :             const double&  getAxelRatio() const;
     197             :             void setAxelRatio(const double&  value);
     198             :             std::map<std::string, std::vector<double> >&  getTransm();
     199             :             void setTransm(const std::map<std::string, std::vector<double> >& value);
     200             : 
     201             :             Transmission_Data();
     202             :         };
     203             : 
     204             :         //Root object
     205             :     public:
     206             :         class VEH {
     207             :         private:
     208             :             std::string privateType;
     209             :             std::string privateVersion;
     210             :             Vehicle_Data privateVehicleData;
     211             :             Aux_Data privateAuxiliariesData;
     212             :             Engine_Data privateEngineData;
     213             :             Rollres_Data privateRollingResData;
     214             :             FullLoadDrag_Data privateFLDData;
     215             :             Transmission_Data privateTransmissionData;
     216             : 
     217             :         public:
     218             :             const std::string& getType() const;
     219             :             void setType(const std::string& value);
     220             :             const std::string& getVersion() const;
     221             :             void setVersion(const std::string& value);
     222             :             Vehicle_Data* getVehicleData();
     223             :             Aux_Data* getAuxiliariesData();
     224             :             Engine_Data* getEngineData();
     225             :             Rollres_Data* getRollingResData();
     226             :             FullLoadDrag_Data* getFLDData();
     227             :             Transmission_Data* getTransmissionData();
     228             :         };
     229             : 
     230             :     };
     231             : 
     232       45787 :     class CEPHandler {
     233             :     public:
     234             :         CEPHandler();
     235             : 
     236             :     private:
     237             :         std::map<std::string, CEP*> _ceps;
     238             :     public:
     239             :         const std::map<std::string, CEP*>& getCEPS() const;
     240             : 
     241             : 
     242             :         bool GetCEP(std::vector<std::string>& DataPath, Helpers* Helper, Correction* DataCor);
     243             : 
     244             : 
     245             :     private:
     246             :         bool CalcCorrection(Correction* DataCor, Helpers* Helper, VEHPHEMLightJSON::Vehicle_Data* vehicle_Data);
     247             : 
     248             :         bool Load(std::vector<std::string>& DataPath, Helpers* Helper, Correction* DataCor, bool fleetMix = false);
     249             : 
     250             :         bool ReadVehicleFile(const std::vector<std::string>& DataPath, const std::string& emissionClass, Helpers* Helper, bool fleetMix, VEHPHEMLightJSON::VEH*& Vehicle);
     251             : 
     252             :         bool ReadEmissionData(bool readFC, const std::vector<std::string>& DataPath, const std::string& emissionClass, Helpers* Helper, bool fleetMix, Correction* DataCor, std::vector<std::string>& header, std::vector<std::vector<double> >& matrix, std::vector<double>& idlingValues);
     253             : 
     254             :         bool CorrectEmissionData(Correction* DataCor, std::vector<std::string>& header, std::vector<std::vector<double> >& matrix, std::vector<double>& idlingValues);
     255             : 
     256             :         //Calculate correction factor for detoriation and temperature correction
     257             :         double GetDetTempCor(Correction* DataCor, const std::string& Emi);
     258             : 
     259             : 
     260             :         //Split the string
     261             :         const std::vector<std::string> split(const std::string& s, char delim);
     262             : 
     263             :         //Convert string to double
     264             :         double todouble(const std::string& s);
     265             : 
     266             :         //Convert string to double list
     267             :         std::vector<double> todoubleList(const std::vector<std::string>& s);
     268             : 
     269             :         //Read a line from file
     270             :         std::string ReadLine(std::ifstream& s);
     271             :     };
     272             : }

Generated by: LCOV version 1.14