Eclipse SUMO - Simulation of Urban MObility
RealisticEngineModel.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
14 // A detailed engine model
15 /****************************************************************************/
16 
17 #ifndef ENGINEMODEL_H_
18 #define ENGINEMODEL_H_
19 
20 #include "GenericEngineModel.h"
21 
22 #include <stdint.h>
23 
24 #include "VehicleEngineHandler.h"
25 #include "EngineParameters.h"
26 
27 
44 
45 protected:
46 
48  //current gear
50  //minimum speed to be considered for horsepower computation
51  double minSpeed_mps;
52  //simulation sampling time
53  double dt_s;
54  //xml file with engine parameters
55  std::string xmlFile;
56  //id of the vehicle parameters to load
57  std::string vehicleType;
58 
69  double rpmToSpeed_mps(double rpm, double wheelDiameter_m,
70  double differentialRatio, double gearRatio);
77  double rpmToSpeed_mps(double rpm);
78 
89  double speed_mpsToRpm(double speed_mps, double wheelDiameter_m,
90  double differentialRatio, double gearRatio);
91 
98  double speed_mpsToRpm(double speed_mps);
99 
108  double speed_mpsToRpm(double speed_mps, double gearRatio);
109 
118  double rpmToPower_hp(double rpm, const struct EngineParameters::PolynomialEngineModelRpmToHp* engineMapping);
119 
126  double rpmToPower_hp(double rpm);
127 
139  double speed_mpsToPower_hp(double speed_mps,
140  const struct EngineParameters::PolynomialEngineModelRpmToHp* engineMapping,
141  double wheelDiameter_m, double differentialRatio,
142  double gearRatio);
143 
150  double speed_mpsToPower_hp(double speed_mps);
151 
164  double speed_mpsToThrust_N(double speed_mps,
165  const struct EngineParameters::PolynomialEngineModelRpmToHp* engineMapping,
166  double wheelDiameter_m, double differentialRatio,
167  double gearRatio, double engineEfficiency);
168 
176  double speed_mpsToThrust_N(double speed_mps);
177 
187  double airDrag_N(double speed_mps, double cAir, double a_m2, double rho_kgpm3);
188 
195  double airDrag_N(double speed_mps);
196 
206  double rollingResistance_N(double speed_mps, double mass_kg, double cr1, double cr2);
213  double rollingResistance_N(double speed_mps);
214 
222  double gravityForce_N(double mass_kg, double slope);
228  double gravityForce_N();
229 
244  double opposingForce_N(double speed_mps, double mass_kg, double slope,
245  double cAir, double a_m2, double rho_kgpm3,
246  double cr1, double cr2);
247 
254  double opposingForce_N(double speed_mps);
255 
263  double maxNoSlipAcceleration_mps2(double slope, double frictionCoefficient);
264 
271 
278  double thrust_NToAcceleration_mps2(double thrust_N);
279 
287  int performGearShifting(double speed_mps, double acceleration_mps2);
288 
295  double getEngineTimeConstant_s(double rpm);
296 
306  double maxEngineAcceleration_mps2(double speed_mps);
307 
318  double getRealBrakingAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime t);
319 
320 public:
322  virtual ~RealisticEngineModel();
323 
335  virtual double getRealAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime timeStep = 0);
336 
344  virtual void loadParameters(const ParMap& parameters);
345 
349  void loadParameters();
350 
357  virtual void setParameter(const std::string parameter, const std::string& value);
358  virtual void setParameter(const std::string parameter, double value);
359  virtual void setParameter(const std::string parameter, int value);
360 
368  void getEngineData(double speed_mps, int& gear, double& rpm);
369 
370 #ifdef EE
371 private:
372  //some things for the easter egg :)
373  bool initee;
374  int lastTimeStep;
375  struct sockaddr_in serv_addr;
376  int socketfd;
377 #endif
378 };
379 
380 #endif /* ENGINEMODEL_H_ */
RealisticEngineModel::getEngineData
void getEngineData(double speed_mps, int &gear, double &rpm)
Definition: RealisticEngineModel.cpp:220
RealisticEngineModel::speed_mpsToRpm
double speed_mpsToRpm(double speed_mps, double wheelDiameter_m, double differentialRatio, double gearRatio)
Definition: RealisticEngineModel.cpp:53
RealisticEngineModel::xmlFile
std::string xmlFile
Definition: RealisticEngineModel.h:55
VehicleEngineHandler.h
RealisticEngineModel::minSpeed_mps
double minSpeed_mps
Definition: RealisticEngineModel.h:51
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
RealisticEngineModel::performGearShifting
int performGearShifting(double speed_mps, double acceleration_mps2)
Definition: RealisticEngineModel.cpp:155
RealisticEngineModel::opposingForce_N
double opposingForce_N(double speed_mps, double mass_kg, double slope, double cAir, double a_m2, double rho_kgpm3, double cr1, double cr2)
Definition: RealisticEngineModel.cpp:132
RealisticEngineModel::getRealAcceleration
virtual double getRealAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime timeStep=0)
Definition: RealisticEngineModel.cpp:191
RealisticEngineModel::maxNoSlipAcceleration_mps2
double maxNoSlipAcceleration_mps2()
Definition: RealisticEngineModel.cpp:147
RealisticEngineModel::ep
EngineParameters ep
Definition: RealisticEngineModel.h:47
RealisticEngineModel::rpmToSpeed_mps
double rpmToSpeed_mps(double rpm, double wheelDiameter_m, double differentialRatio, double gearRatio)
Definition: RealisticEngineModel.cpp:44
RealisticEngineModel::dt_s
double dt_s
Definition: RealisticEngineModel.h:53
RealisticEngineModel::getRealBrakingAcceleration
double getRealBrakingAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime t)
Definition: RealisticEngineModel.cpp:225
RealisticEngineModel::~RealisticEngineModel
virtual ~RealisticEngineModel()
Definition: RealisticEngineModel.cpp:42
RealisticEngineModel::rollingResistance_N
double rollingResistance_N(double speed_mps, double mass_kg, double cr1, double cr2)
Definition: RealisticEngineModel.cpp:117
EngineParameters.h
RealisticEngineModel::loadParameters
void loadParameters()
Definition: RealisticEngineModel.cpp:252
RealisticEngineModel
Definition: RealisticEngineModel.h:43
GenericEngineModel::ParMap
std::map< std::string, std::string > ParMap
Definition: GenericEngineModel.h:33
EngineParameters::PolynomialEngineModelRpmToHp
Definition: EngineParameters.h:41
RealisticEngineModel::rpmToPower_hp
double rpmToPower_hp(double rpm, const struct EngineParameters::PolynomialEngineModelRpmToHp *engineMapping)
Definition: RealisticEngineModel.cpp:66
EngineParameters
Definition: EngineParameters.h:31
RealisticEngineModel::airDrag_N
double airDrag_N(double speed_mps, double cAir, double a_m2, double rho_kgpm3)
Definition: RealisticEngineModel.cpp:110
RealisticEngineModel::setParameter
virtual void setParameter(const std::string parameter, const std::string &value)
Definition: RealisticEngineModel.cpp:286
GenericEngineModel
Definition: GenericEngineModel.h:29
RealisticEngineModel::speed_mpsToPower_hp
double speed_mpsToPower_hp(double speed_mps, const struct EngineParameters::PolynomialEngineModelRpmToHp *engineMapping, double wheelDiameter_m, double differentialRatio, double gearRatio)
Definition: RealisticEngineModel.cpp:85
RealisticEngineModel::RealisticEngineModel
RealisticEngineModel()
Definition: RealisticEngineModel.cpp:35
RealisticEngineModel::vehicleType
std::string vehicleType
Definition: RealisticEngineModel.h:57
RealisticEngineModel::maxEngineAcceleration_mps2
double maxEngineAcceleration_mps2(double speed_mps)
Definition: RealisticEngineModel.cpp:170
RealisticEngineModel::gravityForce_N
double gravityForce_N()
Definition: RealisticEngineModel.cpp:128
RealisticEngineModel::thrust_NToAcceleration_mps2
double thrust_NToAcceleration_mps2(double thrust_N)
Definition: RealisticEngineModel.cpp:151
RealisticEngineModel::getEngineTimeConstant_s
double getEngineTimeConstant_s(double rpm)
Definition: RealisticEngineModel.cpp:175
GenericEngineModel.h
RealisticEngineModel::currentGear
int currentGear
Definition: RealisticEngineModel.h:49
RealisticEngineModel::speed_mpsToThrust_N
double speed_mpsToThrust_N(double speed_mps, const struct EngineParameters::PolynomialEngineModelRpmToHp *engineMapping, double wheelDiameter_m, double differentialRatio, double gearRatio, double engineEfficiency)
Definition: RealisticEngineModel.cpp:97