Eclipse SUMO - Simulation of Urban MObility
EngineParameters.cpp
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 /****************************************************************************/
15 
16 #include <config.h>
17 
18 #include <cmath>
19 #include <utils/geom/GeomHelper.h> // for M_PI
20 #include "EngineParameters.h"
21 
22 
23 EngineParameters::EngineParameters() : nGears(5), differentialRatio(3.714), wheelDiameter_m(0.94),
24  mass_kg(1300), cAir(0.3), a_m2(2.7), rho_kgpm3(1.2), cr1(0.0136), cr2(5.18e-7),
25  slope(0.), tiresFrictionCoefficient(0.7), engineEfficiency(0.8),
26  massFactor(1.089), cylinders(4), dt(0.01), minRpm(1000), maxRpm(7000),
27  brakesTau_s(0.2), tauEx_s(0.1), tauBurn_s(-1), fixedTauBurn(false) {
28  id = "";
29  //set default gear ratios
30  gearRatios = new double[nGears];
31  gearRatios[0] = 3.909;//4.5;
32  gearRatios[1] = 2.238;//3.5;//2.6;
33  gearRatios[2] = 1.520;//2.5;//1.5;
34  gearRatios[3] = 1.156;//1.5;//1.0;
35  gearRatios[4] = 0.971;//1.0;//0.8;
36  //default engine mapping
38  engineMapping.x[0] = -7.50084;
39  engineMapping.x[1] = 0.02045;
40  //default shifting rule
41  shiftingRule.rpm = 6000;
42  shiftingRule.deltaRpm = 100;
43  //initialize precomputed coefficients
45 
46 }
47 
49  nGears(other.nGears), differentialRatio(other.differentialRatio), wheelDiameter_m(other.wheelDiameter_m),
50  mass_kg(other.mass_kg), cAir(other.cAir), a_m2(other.a_m2), rho_kgpm3(other.rho_kgpm3), cr1(other.cr1), cr2(other.cr2),
51  slope(other.slope), tiresFrictionCoefficient(other.tiresFrictionCoefficient), engineEfficiency(other.engineEfficiency),
52  massFactor(other.massFactor), cylinders(other.cylinders), dt(other.dt), minRpm(other.minRpm), maxRpm(other.maxRpm),
53  brakesTau_s(other.brakesTau_s), tauEx_s(other.tauEx_s), tauBurn_s(other.tauBurn_s), fixedTauBurn(other.fixedTauBurn) {
54  id = other.id;
55  gearRatios = new double[nGears];
56  for (int i = 0; i < nGears; i++) {
57  gearRatios[i] = other.gearRatios[i];
58  }
60  for (int i = 0; i < engineMapping.degree; i++) {
61  engineMapping.x[i] = other.engineMapping.x[i];
62  }
66 }
68  id = other.id;
69  nGears = other.nGears;
72  mass_kg = other.mass_kg;
73  cAir = other.cAir;
74  a_m2 = other.a_m2;
75  rho_kgpm3 = other.rho_kgpm3;
76  cr1 = other.cr1;
77  cr2 = other.cr2;
78  slope = other.slope;
81  massFactor = other.massFactor;
82  cylinders = other.cylinders;
83  dt = other.dt;
84  minRpm = other.minRpm;
85  maxRpm = other.maxRpm;
86  delete [] gearRatios;
87  gearRatios = new double[nGears];
88  for (int i = 0; i < nGears; i++) {
89  gearRatios[i] = other.gearRatios[i];
90  }
92  for (int i = 0; i < engineMapping.degree; i++) {
93  engineMapping.x[i] = other.engineMapping.x[i];
94  }
97  brakesTau_s = other.brakesTau_s;
98  tauBurn_s = other.tauBurn_s;
99  tauEx_s = other.tauEx_s;
100  fixedTauBurn = other.fixedTauBurn;
102  return *this;
103 }
104 
106  delete [] gearRatios;
107 }
108 
113  __gravity = mass_kg * massFactor * GRAVITY_MPS2 * sin(slope / 180 * M_PI);
119  __brakesAlpha = dt / (brakesTau_s + dt);
121  __engineTau1 = (420.0 * cylinders - 240.0) / (2.0 * cylinders);
122  __engineTau2 = (120.0 * cylinders - 120.0) / cylinders;
124 }
125 
126 void EngineParameters::dumpParameters(std::ostream& out) {
127  out << "ID: " << id.c_str() << std::endl;
128 
129  out << "Gearbox:\n";
130  out << "\tGears number: " << (int)nGears << std::endl;
131  for (int i = 0; i < nGears; i++) {
132  out << std::setprecision(4) << "\tRatio of gear " << (i + 1) << ": " << gearRatios[i] << std::endl;
133  }
134  out << std::setprecision(4) << "\tFinal drive ratio: " << differentialRatio << std::endl;
135 
136  out << "Wheels:\n";
137  out << std::setprecision(3) << "\tDiameter: " << wheelDiameter_m << " m\n";
138  out << std::setprecision(3) << "\tFriction coefficient: " << tiresFrictionCoefficient << std::endl;
139  out << std::setprecision(10) << "\tcr1: " << cr1 << std::endl;
140  out << std::setprecision(10) << "\tcr2: " << cr2 << std::endl;
141 
142  out << "Mass:\n";
143  out << std::setprecision(2) << "\tMass: " << mass_kg << " kg\n";
144  out << std::setprecision(4) << "\tMass factor: " << massFactor << std::endl;
145 
146  out << "Air drag:\n";
147  out << std::setprecision(4) << "\tDrag coefficient: " << cAir << std::endl;
148  out << std::setprecision(3) << "\tMax section: " << a_m2 << " m^2\n";
149 
150  out << "Engine:\n";
151  out << "\tEfficiency: " << engineEfficiency << std::endl;
152  out << "\tCylinders: " << cylinders << std::endl;
153  out << "\tMinimum rpm: " << minRpm << std::endl;
154  out << "\tMaximum rpm: " << maxRpm << std::endl;
155  out << "\tMapping (rpm to hp) degree: " << engineMapping.degree << std::endl;
156  for (int i = 0; i < engineMapping.degree; i++) {
157  out << "\t\tMapping coefficient x" << i << ": " << engineMapping.x[i] << std::endl;
158  }
159  out << "\tShifting rpm: " << shiftingRule.rpm << std::endl;
160  out << "\tShifting delta: " << shiftingRule.deltaRpm << std::endl;
161 
162  out << "Brakes:\n";
163  out << "\tTime constant (s): " << brakesTau_s << std::endl;
164 
165  out << "Vehicle unrelated parameters:\n";
166  out << std::setprecision(4) << "\tAir density: " << rho_kgpm3 << " kg/m^3\n";
167  out << "\tRoad slope: " << slope << " degrees\n";
168  out << std::setprecision(3) << "\tSimulation sampling time: " << dt << " s\n";
169 }
EngineParameters::shiftingRule
struct GearShiftingRules shiftingRule
Definition: EngineParameters.h:89
EngineParameters::__rpmToSpeedCoefficient
double __rpmToSpeedCoefficient
Definition: EngineParameters.h:107
EngineParameters::cr2
double cr2
Definition: EngineParameters.h:75
EngineParameters::__airFrictionCoefficient
double __airFrictionCoefficient
Definition: EngineParameters.h:73
EngineParameters::gearRatios
double * gearRatios
Definition: EngineParameters.h:63
EngineParameters::__cr1
double __cr1
Definition: EngineParameters.h:77
EngineParameters::differentialRatio
double differentialRatio
Definition: EngineParameters.h:65
EngineParameters::rho_kgpm3
double rho_kgpm3
Definition: EngineParameters.h:71
EngineParameters::GearShiftingRules::rpm
double rpm
Definition: EngineParameters.h:54
EngineParameters::engineEfficiency
double engineEfficiency
Definition: EngineParameters.h:91
EngineParameters::id
std::string id
Definition: EngineParameters.h:59
EngineParameters::wheelDiameter_m
double wheelDiameter_m
Definition: EngineParameters.h:67
EngineParameters::EngineParameters
EngineParameters()
Definition: EngineParameters.cpp:23
EngineParameters::__speedToRpmCoefficient
double __speedToRpmCoefficient
Definition: EngineParameters.h:108
EngineParameters::__engineTauDe_s
double __engineTauDe_s
Definition: EngineParameters.h:113
EngineParameters::dt
double dt
Definition: EngineParameters.h:97
EngineParameters::__cr2
double __cr2
Definition: EngineParameters.h:77
EngineParameters::mass_kg
double mass_kg
Definition: EngineParameters.h:69
EngineParameters::minRpm
double minRpm
Definition: EngineParameters.h:99
EngineParameters::tauBurn_s
double tauBurn_s
Definition: EngineParameters.h:103
EngineParameters::tiresFrictionCoefficient
double tiresFrictionCoefficient
Definition: EngineParameters.h:83
EngineParameters::cAir
double cAir
Definition: EngineParameters.h:71
GRAVITY_MPS2
#define GRAVITY_MPS2
Definition: EngineParameters.h:23
EngineParameters::operator=
EngineParameters & operator=(const EngineParameters &other)
Definition: EngineParameters.cpp:67
EngineParameters::__brakesOneMinusAlpha
double __brakesOneMinusAlpha
Definition: EngineParameters.h:115
EngineParameters::massFactor
double massFactor
Definition: EngineParameters.h:93
EngineParameters::__brakesAlpha
double __brakesAlpha
Definition: EngineParameters.h:114
EngineParameters::tauEx_s
double tauEx_s
Definition: EngineParameters.h:103
EngineParameters::cylinders
int cylinders
Definition: EngineParameters.h:95
EngineParameters::PolynomialEngineModelRpmToHp::x
double x[MAX_POLY_DEGREE]
Definition: EngineParameters.h:43
EngineParameters.h
EngineParameters::~EngineParameters
virtual ~EngineParameters()
Definition: EngineParameters.cpp:105
EngineParameters::slope
double slope
Definition: EngineParameters.h:79
EngineParameters::__engineTau1
double __engineTau1
Definition: EngineParameters.h:111
EngineParameters::nGears
int nGears
Definition: EngineParameters.h:61
EngineParameters::PolynomialEngineModelRpmToHp::degree
int degree
Definition: EngineParameters.h:42
EngineParameters::maxRpm
double maxRpm
Definition: EngineParameters.h:99
EngineParameters
Definition: EngineParameters.h:31
EngineParameters::fixedTauBurn
bool fixedTauBurn
Definition: EngineParameters.h:105
M_PI
#define M_PI
Definition: odrSpiral.cpp:40
EngineParameters::computeCoefficients
void computeCoefficients()
Definition: EngineParameters.cpp:109
EngineParameters::__engineTau2
double __engineTau2
Definition: EngineParameters.h:112
HP_TO_W
#define HP_TO_W
Definition: EngineParameters.h:25
config.h
GeomHelper.h
EngineParameters::a_m2
double a_m2
Definition: EngineParameters.h:71
EngineParameters::dumpParameters
void dumpParameters(std::ostream &out)
Definition: EngineParameters.cpp:126
EngineParameters::cr1
double cr1
Definition: EngineParameters.h:75
EngineParameters::__maxAccelerationCoefficient
double __maxAccelerationCoefficient
Definition: EngineParameters.h:110
EngineParameters::GearShiftingRules::deltaRpm
double deltaRpm
Definition: EngineParameters.h:55
EngineParameters::__speedToThrustCoefficient
double __speedToThrustCoefficient
Definition: EngineParameters.h:109
EngineParameters::__maxNoSlipAcceleration
double __maxNoSlipAcceleration
Definition: EngineParameters.h:85
EngineParameters::brakesTau_s
double brakesTau_s
Definition: EngineParameters.h:101
EngineParameters::engineMapping
struct PolynomialEngineModelRpmToHp engineMapping
Definition: EngineParameters.h:87
EngineParameters::__gravity
double __gravity
Definition: EngineParameters.h:81