 |
Eclipse SUMO - Simulation of Urban MObility
|
Go to the documentation of this file.
21 #define M_PI 3.14159265358979323846
26 #include <xercesc/sax2/SAX2XMLReader.hpp>
27 #include <xercesc/sax/EntityResolver.hpp>
28 #include <xercesc/sax/InputSource.hpp>
29 #include <xercesc/sax2/XMLReaderFactory.hpp>
45 double differentialRatio = 4.6,
double gearRatio = 4.5) {
46 return rpm * wheelDiameter_m *
M_PI / (differentialRatio * gearRatio * 60);
54 double differentialRatio,
double gearRatio) {
55 return speed_mps * differentialRatio * gearRatio * 60 / (wheelDiameter_m *
M_PI);
67 double sum = engineMapping->
x[0];
68 for (
int i = 1; i < engineMapping->
degree; i++) {
69 sum += engineMapping->
x[i] + pow(rpm, i);
87 double wheelDiameter_m,
double differentialRatio,
89 double rpm =
speed_mpsToRpm(speed_mps, wheelDiameter_m, differentialRatio, gearRatio);
99 double wheelDiameter_m,
double differentialRatio,
100 double gearRatio,
double engineEfficiency) {
101 double power_hp =
speed_mpsToPower_hp(speed_mps, engineMapping, wheelDiameter_m, differentialRatio, gearRatio);
102 return engineEfficiency * power_hp *
HP_TO_W / speed_mps;
111 return 0.5 * cAir * a_m2 * rho_kgpm3 * speed_mps * speed_mps;
118 return mass_kg *
GRAVITY_MPS2 * (cr1 + cr2 * speed_mps * speed_mps);
133 double cAir,
double a_m2,
double rho_kgpm3,
134 double cr1,
double cr2) {
135 return airDrag_N(speed_mps, cAir, a_m2, rho_kgpm3) +
158 for (newGear = 0; newGear <
ep.
nGears - 1; newGear++) {
193 double realAccel_mps2;
199 double correctedSpeed = std::max(speed_mps,
minSpeed_mps);
200 if (reqAccel_mps2 >= 0) {
207 double alpha =
ep.
dt / (tau +
ep.
dt);
217 return realAccel_mps2;
231 double brakesAccel_mps2 = accel_mps2 + frictionDeceleration;
237 return newBrakesAccel_mps2 - frictionDeceleration;
254 XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize();
256 XERCES_CPP_NAMESPACE::SAX2XMLReader* reader = XERCES_CPP_NAMESPACE::XMLReaderFactory::createXMLReader();
258 std::cout <<
"The XML-parser could not be build." << std::endl;
260 reader->setFeature(XERCES_CPP_NAMESPACE::XMLUni::fgXercesSchema,
true);
261 reader->setFeature(XERCES_CPP_NAMESPACE::XMLUni::fgSAX2CoreValidation,
true);
265 reader->setContentHandler(engineHandler);
266 reader->setErrorHandler(engineHandler);
269 reader->parse(
xmlFile.c_str());
276 }
catch (XERCES_CPP_NAMESPACE::SAXException&) {
277 std::cerr <<
"Error while parsing " <<
xmlFile <<
": Does the file exist?" << std::endl;
282 delete engineHandler;
struct GearShiftingRules shiftingRule
double __rpmToSpeedCoefficient
#define UNUSED_PARAMETER(x)
void getEngineData(double speed_mps, int &gear, double &rpm)
double __airFrictionCoefficient
double speed_mpsToRpm(double speed_mps, double wheelDiameter_m, double differentialRatio, double gearRatio)
double __speedToRpmCoefficient
int performGearShifting(double speed_mps, double acceleration_mps2)
double opposingForce_N(double speed_mps, double mass_kg, double slope, double cAir, double a_m2, double rho_kgpm3, double cr1, double cr2)
virtual double getRealAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime timeStep=0)
#define ENGINE_PAR_VEHICLE
double maxNoSlipAcceleration_mps2()
double rpmToSpeed_mps(double rpm, double wheelDiameter_m, double differentialRatio, double gearRatio)
double getRealBrakingAcceleration(double speed_mps, double accel_mps2, double reqAccel_mps2, SUMOTime t)
virtual ~RealisticEngineModel()
double rollingResistance_N(double speed_mps, double mass_kg, double cr1, double cr2)
double __brakesOneMinusAlpha
double x[MAX_POLY_DEGREE]
const EngineParameters & getEngineParameters()
std::map< std::string, std::string > ParMap
double rpmToPower_hp(double rpm, const struct EngineParameters::PolynomialEngineModelRpmToHp *engineMapping)
#define ENGINE_PAR_XMLFILE
void parseParameter(const ParMap ¶meters, std::string parameter, double &value)
void computeCoefficients()
double airDrag_N(double speed_mps, double cAir, double a_m2, double rho_kgpm3)
virtual void setParameter(const std::string parameter, const std::string &value)
double speed_mpsToPower_hp(double speed_mps, const struct EngineParameters::PolynomialEngineModelRpmToHp *engineMapping, double wheelDiameter_m, double differentialRatio, double gearRatio)
double maxEngineAcceleration_mps2(double speed_mps)
double __maxAccelerationCoefficient
double __speedToThrustCoefficient
double thrust_NToAcceleration_mps2(double thrust_N)
double __maxNoSlipAcceleration
double getEngineTimeConstant_s(double rpm)
struct PolynomialEngineModelRpmToHp engineMapping
double speed_mpsToThrust_N(double speed_mps, const struct EngineParameters::PolynomialEngineModelRpmToHp *engineMapping, double wheelDiameter_m, double differentialRatio, double gearRatio, double engineEfficiency)