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