Eclipse SUMO - Simulation of Urban MObility
MSCFModel_Rail.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2012-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 // <description missing>
15 /****************************************************************************/
16 #ifndef SUMO_MSCFMODEL_RAIL_H
17 #define SUMO_MSCFMODEL_RAIL_H
18 
19 
20 #include "MSCFModel.h"
21 
22 
23 
24 class MSCFModel_Rail : public MSCFModel {
25 
26 public:
30  MSCFModel_Rail(const MSVehicleType* vtype);
31 
32  double followSpeed(const MSVehicle* const veh, double speed, double gap2pred, double predSpeed,
33  double predMaxDecel, const MSVehicle* const pred = 0) const;
34 
35  virtual int getModelID() const;
36 
37  virtual MSCFModel* duplicate(const MSVehicleType* vtype) const;
38 
39 
40 
41  virtual ~MSCFModel_Rail();
42 
43  virtual double maxNextSpeed(double speed, const MSVehicle* const veh) const;
44 
45  virtual double minNextSpeed(double speed, const MSVehicle* const veh) const;
46 
47  virtual double minNextSpeedEmergency(double speed, const MSVehicle* const veh = 0) const;
48 
49  double getSpeedAfterMaxDecel(double v) const;
50 
52 
53  double finalizeSpeed(MSVehicle* const veh, double vPos) const;
54 
55  double freeSpeed(const MSVehicle* const veh, double speed, double seen, double maxSpeed,
56  const bool onInsertion) const;
57 
58 private:
59 
60 
61  typedef std::map<double, double> LookUpMap;
62 
63  struct TrainParams {
64  double weight;
65  double mf;
66  double length;
67  double decl;
68  double vmax;
69  double recovery;
70  double rotWeight;
73  };
74 
75  double getInterpolatedValueFromLookUpMap(double speed, const LookUpMap* lookUpMap) const;
76 
77 
78 public:
79  double stopSpeed(const MSVehicle* const veh, const double speed, double gap) const;
80 
81 // class VehicleVariables : public MSCFModel::VehicleVariables {
82 //
83 // public:
84 //
85 // const std::string getTrainType() const { return myTrainType; };
86 //
87 // void setTrainType(std::string trainType) { myTrainType = trainType; }
88 //
89 // bool isNotYetInitialized() {
90 // return notYetInitialized;
91 // }
92 //
93 // void setInitialized() {
94 // notYetInitialized = false;
95 // }
96 //
97 // private:
98 // std::string myTrainType;
99 // bool notYetInitialized = true;
100 //
101 //
102 // };
103 
104 private:
105 
106 
108 
109  LookUpMap initNGT400Traction() const { // early version of NGT 400
110  LookUpMap map;
111  map[0] = 716.0;
112  map[10] = 700.0;
113  map[20] = 684.0;
114  map[30] = 669.0;
115  map[40] = 653.0;
116  map[50] = 637.0;
117  map[60] = 622.0;
118  map[70] = 606.0;
119  map[80] = 590.0;
120  map[90] = 574.0;
121  map[100] = 559.0;
122  map[110] = 543.0;
123  map[120] = 527.0;
124  map[130] = 507.0;
125  map[140] = 471.0;
126  map[150] = 439.0;
127  map[160] = 412.0;
128  map[170] = 388.0;
129  map[180] = 366.0;
130  map[190] = 347.0;
131  map[200] = 329.0;
132  map[210] = 314.0;
133  map[220] = 299.0;
134  map[230] = 286.0;
135  map[240] = 275.0;
136  map[250] = 264.0;
137  map[260] = 253.0;
138  map[270] = 244.0;
139  map[280] = 235.0;
140  map[290] = 227.0;
141  map[300] = 220.0;
142  map[310] = 213.0;
143  map[320] = 206.0;
144  map[330] = 200.0;
145  map[340] = 194.0;
146  map[350] = 188.0;
147  map[360] = 183.0;
148  map[370] = 178.0;
149  map[380] = 173.0;
150  map[390] = 169.0;
151  map[400] = 165.0;
152  map[410] = 160.6;
153  map[420] = 156.8;
154  map[430] = 153.2;
155  map[440] = 149.7;
156  map[450] = 146.4;
157  map[460] = 143.2;
158  map[470] = 140.1;
159  map[480] = 137.2;
160  return map;
161  }
162 
163  LookUpMap initNGT400Resistance() const { // early version of NGT 400
164  LookUpMap map;
165  map[0] = 1.9;
166  map[10] = 2.1;
167  map[20] = 2.4;
168  map[30] = 2.9;
169  map[40] = 3.5;
170  map[50] = 4.2;
171  map[60] = 5.0;
172  map[70] = 6.0;
173  map[80] = 7.0;
174  map[90] = 8.2;
175  map[100] = 9.6;
176  map[110] = 11.0;
177  map[120] = 12.6;
178  map[130] = 14.3;
179  map[140] = 16.1;
180  map[150] = 18.0;
181  map[160] = 20.1;
182  map[170] = 22.3;
183  map[180] = 24.6;
184  map[190] = 27.0;
185  map[200] = 29.5;
186  map[210] = 32.2;
187  map[220] = 35.0;
188  map[230] = 37.9;
189  map[240] = 40.9;
190  map[250] = 44.1;
191  map[260] = 47.4;
192  map[270] = 50.8;
193  map[280] = 54.3;
194  map[290] = 58.0;
195  map[300] = 61.7;
196  map[310] = 65.6;
197  map[320] = 69.7;
198  map[330] = 73.8;
199  map[340] = 78.1;
200  map[350] = 82.4;
201  map[360] = 86.9;
202  map[370] = 91.6;
203  map[380] = 96.3;
204  map[390] = 101.2;
205  map[400] = 106.2;
206  map[410] = 111.3;
207  map[420] = 116.6;
208  map[430] = 121.9;
209  map[440] = 127.4;
210  map[450] = 133.0;
211  map[460] = 138.7;
212  map[470] = 144.6;
213  map[480] = 150.6;
214  return map;
215  }
216 
218  TrainParams params;
219  params.weight = 384;
220  params.mf = 1.04;
221  params.length = 200;
222  params.decl = 0.9;
223  params.vmax = 500 / 3.6;
224  params.recovery = 0.6;
225  params.rotWeight = params.weight * params.mf;
226  params.traction = initNGT400Traction();
227  params.resistance = initNGT400Resistance();
228  return params;
229  }
230 
232  LookUpMap map;
233  map[0] = 274.5;
234  map[10] = 274.5;
235  map[20] = 274.5;
236  map[30] = 274.5;
237  map[40] = 274.5;
238  map[50] = 274.5;
239  map[60] = 274.5;
240  map[70] = 274.5;
241  map[80] = 274.5;
242  map[90] = 274.5;
243  map[100] = 274.5;
244  map[110] = 274.5;
245  map[120] = 274.5;
246  map[130] = 274.5;
247  map[140] = 274.5;
248  map[150] = 274.5;
249  map[160] = 274.5;
250  map[170] = 274.5;
251  map[180] = 274.5;
252  map[190] = 274.5;
253  map[200] = 274.5;
254  map[210] = 273;
255  map[220] = 262.3;
256  map[230] = 250;
257  map[240] = 239;
258  map[250] = 229;
259  map[260] = 222;
260  map[270] = 213;
261  map[280] = 205;
262  map[290] = 198;
263  map[300] = 191;
264  map[310] = 186;
265  map[320] = 180;
266  map[330] = 174;
267  map[340] = 169;
268  map[350] = 165;
269  map[360] = 160;
270  map[370] = 155.5;
271  map[380] = 151;
272  map[390] = 148;
273  map[400] = 144;
274  map[410] = 140;
275  map[420] = 136;
276  map[430] = 134;
277  map[440] = 131;
278  map[450] = 128;
279  map[460] = 125;
280  map[470] = 123;
281  return map;
282  }
283 
285  LookUpMap map;
286  map[0] = 5.71;
287  map[10] = 6.01;
288  map[20] = 6.4;
289  map[30] = 7.0;
290  map[40] = 7.51;
291  map[50] = 8.34;
292  map[60] = 9.2;
293  map[70] = 10.4;
294  map[80] = 11.3;
295  map[90] = 12.58;
296  map[100] = 14.05;
297  map[110] = 15.5;
298  map[120] = 16.9;
299  map[130] = 18.75;
300  map[140] = 20.77;
301  map[150] = 22.9;
302  map[160] = 25.0;
303  map[170] = 26.9;
304  map[180] = 29.38;
305  map[190] = 32.0;
306  map[200] = 34.5;
307  map[210] = 37.0;
308  map[220] = 39.91;
309  map[230] = 43.11;
310  map[240] = 46.4;
311  map[250] = 49.3;
312  map[260] = 52.4;
313  map[270] = 56.09;
314  map[280] = 59.8;
315  map[290] = 63.7;
316  map[300] = 66.8;
317  map[310] = 71.0;
318  map[320] = 75.39;
319  map[330] = 79.9;
320  map[340] = 84.1;
321  map[350] = 87.9;
322  map[360] = 92.7;
323  map[370] = 97.6;
324  map[380] = 102.0;
325  map[390] = 107.0;
326  map[400] = 112.0;
327  map[410] = 117.5;
328  map[420] = 123.0;
329  map[430] = 128.3;
330  map[440] = 133.3;
331  map[450] = 139.2;
332  map[460] = 145.5;
333  map[470] = 150.0;
334  return map;
335  }
336 
338  TrainParams params;
339  params.weight = 384;
340  params.mf = 1.04;
341  params.length = 200;
342  params.decl = 0.9;
343  params.vmax = 430 / 3.6;
344  params.recovery = 0.6;
345  params.rotWeight = params.weight * params.mf;
346  params.traction = initNGT400_16Traction();
348  return params;
349  }
350 
352  LookUpMap map;
353  map[0] = 400;
354  map[10] = 394;
355  map[20] = 388;
356  map[30] = 382;
357  map[40] = 377;
358  map[50] = 372;
359  map[60] = 369;
360  map[70] = 366;
361  map[80] = 363;
362  map[90] = 361;
363  map[100] = 349;
364  map[110] = 317;
365  map[120] = 290;
366  map[130] = 268;
367  map[140] = 249;
368  map[150] = 232;
369  map[160] = 217;
370  map[170] = 205;
371  map[180] = 193;
372  map[190] = 183;
373  map[200] = 174;
374  map[210] = 165;
375  map[220] = 158;
376  map[230] = 151;
377  map[240] = 145;
378  map[250] = 139;
379  return map;
380  }
381 
383  LookUpMap map;
384  map[0] = 10.7;
385  map[10] = 12.3;
386  map[20] = 14.2;
387  map[30] = 16.4;
388  map[40] = 18.7;
389  map[50] = 21.3;
390  map[60] = 24.2;
391  map[70] = 27.3;
392  map[80] = 30.6;
393  map[90] = 34.1;
394  map[100] = 37.9;
395  map[110] = 41.9;
396  map[120] = 46.2;
397  map[130] = 50.6;
398  map[140] = 55.4;
399  map[150] = 60.4;
400  map[160] = 65.6;
401  map[170] = 71.1;
402  map[180] = 76.7;
403  map[190] = 82.6;
404  map[200] = 88.8;
405  map[210] = 95.2;
406  map[220] = 101.8;
407  map[230] = 108.7;
408  map[240] = 115.8;
409  map[250] = 123.1;
410  return map;
411  }
412 
414  TrainParams params;
415  params.weight = 876;
416  params.mf = 1.1;
417  params.length = 358;
418  params.decl = 0.5;
419  params.vmax = 250 / 3.6;
420  params.recovery = 0.1;
421  params.rotWeight = params.weight * params.mf;
422  params.traction = initICE1Traction();
423  params.resistance = initICE1Resistance();
424  return params;
425  }
426 
428  TrainParams params;
429  params.weight = 420;
430  params.mf = 1.04;
431  params.length = 200;
432  params.decl = 0.5;
433  params.vmax = 300 / 3.6;
434  params.recovery = 0.6;
435  params.rotWeight = params.weight * params.mf;
436  params.traction = initICE3Traction();
437  params.resistance = initICE3Resistance();
438  return params;
439  }
440 
442  LookUpMap map;
443  map[0] = 300;
444  map[10] = 298;
445  map[20] = 297;
446  map[30] = 295;
447  map[40] = 293;
448  map[50] = 292;
449  map[60] = 290;
450  map[70] = 288;
451  map[80] = 286.5;
452  map[90] = 285;
453  map[100] = 283;
454  map[110] = 262;
455  map[120] = 240;
456  map[130] = 221;
457  map[140] = 206;
458  map[150] = 192;
459  map[160] = 180;
460  map[170] = 169;
461  map[180] = 160;
462  map[190] = 152;
463  map[200] = 144;
464  map[210] = 137;
465  map[220] = 131;
466  map[230] = 125;
467  map[240] = 120;
468  map[250] = 115;
469  map[260] = 111;
470  map[270] = 107;
471  map[280] = 103;
472  map[290] = 99;
473  map[300] = 96;
474  return map;
475  }
476 
478  LookUpMap map;
479  map[0] = 7.4;
480  map[10] = 7.6;
481  map[20] = 8.0;
482  map[30] = 8.4;
483  map[40] = 9.1;
484  map[50] = 9.8;
485  map[60] = 10.7;
486  map[70] = 11.7;
487  map[80] = 12.8;
488  map[90] = 14.1;
489  map[100] = 15.5;
490  map[110] = 17.1;
491  map[120] = 18.8;
492  map[130] = 20.6;
493  map[140] = 22.6;
494  map[150] = 24.6;
495  map[160] = 26.9;
496  map[170] = 29.2;
497  map[180] = 31.7;
498  map[190] = 34.3;
499  map[200] = 37.1;
500  map[210] = 40.0;
501  map[220] = 43.1;
502  map[230] = 46.2;
503  map[240] = 49.6;
504  map[250] = 53.0;
505  map[260] = 56.6;
506  map[270] = 60.3;
507  map[280] = 64.1;
508  map[290] = 68.1;
509  map[300] = 71.8;
510  return map;
511  }
512 
514  TrainParams params;
515  params.weight = 425.5;
516  params.mf = 1.1;
517  params.length = 207;
518  params.decl = 0.5;
519  params.vmax = 160 / 3.6;
520  params.recovery = 0.1;
521  params.rotWeight = params.weight * params.mf;
522  params.traction = initREDosto7Traction();
524  return params;
525  }
526 
528  LookUpMap map;
529  map[0] = 300;
530  map[10] = 300;
531  map[20] = 300;
532  map[30] = 300;
533  map[40] = 300;
534  map[50] = 300;
535  map[60] = 300;
536  map[70] = 289;
537  map[80] = 253;
538  map[90] = 224;
539  map[100] = 202;
540  map[110] = 183;
541  map[120] = 168;
542  map[130] = 155;
543  map[140] = 144;
544  map[150] = 134;
545  map[160] = 125;
546  return map;
547  }
548 
550  LookUpMap map;
551  map[0] = 8.5;
552  map[10] = 8.9;
553  map[20] = 9.5;
554  map[30] = 10.4;
555  map[40] = 11.4;
556  map[50] = 12.7;
557  map[60] = 14.1;
558  map[70] = 15.8;
559  map[80] = 17.7;
560  map[90] = 19.8;
561  map[100] = 22.6;
562  map[110] = 24.6;
563  map[120] = 27.3;
564  map[130] = 30.2;
565  map[140] = 33.3;
566  map[150] = 36.6;
567  map[160] = 40.2;
568  return map;
569  }
570 
572  TrainParams params;
573  params.weight = 72.2;
574  params.mf = 1.04;
575  params.length = 46;
576  params.decl = 0.5;
577  params.vmax = 120 / 3.6;
578  params.recovery = 0;
579  params.rotWeight = params.weight * params.mf;
580  params.traction = initRB628Traction();
581  params.resistance = initRB628Resistance();
582  return params;
583  }
584 
586  LookUpMap map;
587  map[0] = 60;
588  map[10] = 53.8;
589  map[20] = 47.6;
590  map[30] = 36.9;
591  map[40] = 28.7;
592  map[50] = 23.5;
593  map[60] = 20.0;
594  map[70] = 17.5;
595  map[80] = 15.2;
596  map[90] = 13.9;
597  map[100] = 12.8;
598  map[110] = 11.7;
599  map[120] = 10.8;
600  return map;
601  }
602 
604  LookUpMap map;
605  map[0] = 1.29;
606  map[10] = 1.46;
607  map[20] = 1.73;
608  map[30] = 2.08;
609  map[40] = 2.52;
610  map[50] = 3.05;
611  map[60] = 3.66;
612  map[70] = 4.36;
613  map[80] = 5.16;
614  map[90] = 6.03;
615  map[100] = 7.00;
616  map[110] = 8.06;
617  map[120] = 9.2;
618  return map;
619  }
620 
622  TrainParams params;
623  params.weight = 1440;
624  params.mf = 1.06;
625  params.length = 512;
626  params.decl = 0.3;
627  params.vmax = 120 / 3.6;
628  params.recovery = 0.05;
629  params.rotWeight = params.weight * params.mf;
630  params.traction = initFreightTraction();
632  return params;
633  }
634 
636  LookUpMap map;
637  map[0] = 300;
638  map[10] = 296;
639  map[20] = 293;
640  map[30] = 289;
641  map[40] = 286;
642  map[50] = 282;
643  map[60] = 279;
644  map[70] = 275;
645  map[80] = 272;
646  map[90] = 255;
647  map[100] = 230;
648  map[110] = 209;
649  map[120] = 190;//guessed value
650  return map;
651  }
652 
654  LookUpMap map;
655  map[0] = 1.9;
656  map[10] = 4.3;
657  map[20] = 8.5;
658  map[30] = 14.3;
659  map[40] = 21.7;
660  map[50] = 30.8;
661  map[60] = 41.5;
662  map[70] = 53.8;
663  map[80] = 67.8;
664  map[90] = 83.5;
665  map[100] = 110.7;
666  map[110] = 119.6;
667  map[120] = 140.2;
668  return map;
669  }
670 
672  LookUpMap map;
673  map[0] = 150;
674  map[10] = 150;
675  map[20] = 150;
676  map[30] = 150;
677  map[40] = 150;
678  map[50] = 150;
679  map[60] = 140;
680  map[70] = 120;
681  map[80] = 105;
682  map[90] = 93;
683  map[100] = 84;
684  map[110] = 75;
685  map[120] = 70;
686  map[130] = 56;
687  map[140] = 52;
688  map[150] = 46;
689  map[160] = 40;
690  return map;
691  }
692 
694  LookUpMap map;
695  map[0] = 2.6;
696  map[10] = 2.9;
697  map[20] = 3.3;
698  map[30] = 3.7;
699  map[40] = 4.3;
700  map[50] = 4.9;
701  map[60] = 5.7;
702  map[70] = 6.6;
703  map[80] = 7.5;
704  map[90] = 8.6;
705  map[100] = 9.7;
706  map[110] = 11.0;
707  map[120] = 12.3;
708  map[130] = 13.8;
709  map[140] = 15.3;
710  map[150] = 16.9;
711  map[160] = 18.7;
712  return map;
713  }
714 
716  TrainParams params;
717  params.weight = 138;
718  params.mf = 1.04;
719  params.length = 67.5;
720  params.decl = 1.0;
721  params.vmax = 160 / 3.6;
722  params.recovery = 0.6;
723  params.rotWeight = params.weight * params.mf;
724  params.traction = initRB425Traction();
725  params.resistance = initRB425Resistance();
726  return params;
727  }
728 
729 // void initVehicleVariables(const MSVehicle *const pVehicle, MSCFModel_Rail::VehicleVariables *pVariables)const;
730 
731 };
732 
733 
734 #endif //SUMO_MSCFMODEL_RAIL_H
MSCFModel_Rail::initREDosto7Resistance
LookUpMap initREDosto7Resistance() const
Definition: MSCFModel_Rail.h:549
MSVehicleType
The car-following model and parameter.
Definition: MSVehicleType.h:65
MSCFModel_Rail::TrainParams::mf
double mf
Definition: MSCFModel_Rail.h:65
MSCFModel_Rail::getModelID
virtual int getModelID() const
Returns the model's ID; the XML-Tag number is used.
Definition: MSCFModel_Rail.cpp:98
MSCFModel_Rail
Definition: MSCFModel_Rail.h:24
MSCFModel_Rail::initICE3Traction
LookUpMap initICE3Traction() const
Definition: MSCFModel_Rail.h:441
MSCFModel_Rail::createVehicleVariables
MSCFModel::VehicleVariables * createVehicleVariables() const
Returns model specific values which are stored inside a vehicle and must be used with casting.
Definition: MSCFModel_Rail.cpp:215
MSCFModel_Rail::initRB628Params
TrainParams initRB628Params() const
Definition: MSCFModel_Rail.h:571
MSCFModel_Rail::initICE3Params
TrainParams initICE3Params() const
Definition: MSCFModel_Rail.h:427
MSCFModel_Rail::initICE1Params
TrainParams initICE1Params() const
Definition: MSCFModel_Rail.h:413
MSCFModel_Rail::MSCFModel_Rail
MSCFModel_Rail(const MSVehicleType *vtype)
Constructor.
Definition: MSCFModel_Rail.cpp:31
MSCFModel_Rail::initFreightResistance
LookUpMap initFreightResistance() const
Definition: MSCFModel_Rail.h:653
MSCFModel_Rail::TrainParams::recovery
double recovery
Definition: MSCFModel_Rail.h:69
MSCFModel_Rail::initREDosto7Traction
LookUpMap initREDosto7Traction() const
Definition: MSCFModel_Rail.h:527
MSCFModel_Rail::initNGT400Params
TrainParams initNGT400Params() const
Definition: MSCFModel_Rail.h:217
MSCFModel_Rail::initREDosto7Params
TrainParams initREDosto7Params() const
Definition: MSCFModel_Rail.h:513
MSCFModel_Rail::minNextSpeedEmergency
virtual double minNextSpeedEmergency(double speed, const MSVehicle *const veh=0) const
Returns the minimum speed after emergency braking, given the current speed (depends on the numerical ...
Definition: MSCFModel_Rail.cpp:160
MSCFModel_Rail::TrainParams::rotWeight
double rotWeight
Definition: MSCFModel_Rail.h:70
MSCFModel_Rail::getSpeedAfterMaxDecel
double getSpeedAfterMaxDecel(double v) const
Returns the velocity after maximum deceleration.
Definition: MSCFModel_Rail.cpp:203
MSCFModel_Rail::initFreightTraction
LookUpMap initFreightTraction() const
Definition: MSCFModel_Rail.h:635
MSCFModel_Rail::initRB628Resistance
LookUpMap initRB628Resistance() const
Definition: MSCFModel_Rail.h:603
MSCFModel_Rail::getInterpolatedValueFromLookUpMap
double getInterpolatedValueFromLookUpMap(double speed, const LookUpMap *lookUpMap) const
Definition: MSCFModel_Rail.cpp:165
MSCFModel_Rail::initNGT400Traction
LookUpMap initNGT400Traction() const
Definition: MSCFModel_Rail.h:109
MSCFModel_Rail::initICE3Resistance
LookUpMap initICE3Resistance() const
Definition: MSCFModel_Rail.h:477
MSCFModel_Rail::myTrainParams
TrainParams myTrainParams
Definition: MSCFModel_Rail.h:107
MSCFModel_Rail::initNGT400_16Resistance
LookUpMap initNGT400_16Resistance() const
Definition: MSCFModel_Rail.h:284
MSCFModel_Rail::initICE1Resistance
LookUpMap initICE1Resistance() const
Definition: MSCFModel_Rail.h:382
MSCFModel_Rail::TrainParams::weight
double weight
Definition: MSCFModel_Rail.h:64
MSCFModel_Rail::minNextSpeed
virtual double minNextSpeed(double speed, const MSVehicle *const veh) const
Returns the minimum speed given the current speed (depends on the numerical update scheme and its ste...
Definition: MSCFModel_Rail.cpp:141
MSCFModel_Rail::freeSpeed
double freeSpeed(const MSVehicle *const veh, double speed, double seen, double maxSpeed, const bool onInsertion) const
Computes the vehicle's safe speed without a leader.
Definition: MSCFModel_Rail.cpp:225
MSCFModel_Rail::maxNextSpeed
virtual double maxNextSpeed(double speed, const MSVehicle *const veh) const
Returns the maximum speed given the current speed.
Definition: MSCFModel_Rail.cpp:107
MSCFModel_Rail::stopSpeed
double stopSpeed(const MSVehicle *const veh, const double speed, double gap) const
Computes the vehicle's safe speed for approaching a non-moving obstacle (no dawdling)
Definition: MSCFModel_Rail.cpp:257
MSCFModel_Rail::initNGT400_16Traction
LookUpMap initNGT400_16Traction() const
Definition: MSCFModel_Rail.h:231
MSCFModel_Rail::TrainParams::decl
double decl
Definition: MSCFModel_Rail.h:67
MSCFModel_Rail::initNGT400Resistance
LookUpMap initNGT400Resistance() const
Definition: MSCFModel_Rail.h:163
MSCFModel_Rail::initICE1Traction
LookUpMap initICE1Traction() const
Definition: MSCFModel_Rail.h:351
MSCFModel_Rail::LookUpMap
std::map< double, double > LookUpMap
Definition: MSCFModel_Rail.h:61
MSCFModel_Rail::initRB628Traction
LookUpMap initRB628Traction() const
Definition: MSCFModel_Rail.h:585
MSCFModel::VehicleVariables
Definition: MSCFModel.h:60
MSCFModel_Rail::initRB425Resistance
LookUpMap initRB425Resistance() const
Definition: MSCFModel_Rail.h:693
MSCFModel_Rail::TrainParams::vmax
double vmax
Definition: MSCFModel_Rail.h:68
MSCFModel_Rail::finalizeSpeed
double finalizeSpeed(MSVehicle *const veh, double vPos) const
Applies interaction with stops and lane changing model influences. Called at most once per simulation...
Definition: MSCFModel_Rail.cpp:221
MSCFModel.h
MSCFModel_Rail::TrainParams
Definition: MSCFModel_Rail.h:63
MSCFModel
The car-following model abstraction.
Definition: MSCFModel.h:56
MSCFModel_Rail::~MSCFModel_Rail
virtual ~MSCFModel_Rail()
Definition: MSCFModel_Rail.cpp:70
MSCFModel_Rail::followSpeed
double followSpeed(const MSVehicle *const veh, double speed, double gap2pred, double predSpeed, double predMaxDecel, const MSVehicle *const pred=0) const
Computes the vehicle's follow speed (no dawdling)
Definition: MSCFModel_Rail.cpp:72
MSCFModel_Rail::TrainParams::length
double length
Definition: MSCFModel_Rail.h:66
MSCFModel_Rail::TrainParams::resistance
LookUpMap resistance
Definition: MSCFModel_Rail.h:72
MSCFModel_Rail::initRB425Params
TrainParams initRB425Params() const
Definition: MSCFModel_Rail.h:715
MSCFModel_Rail::initRB425Traction
LookUpMap initRB425Traction() const
Definition: MSCFModel_Rail.h:671
MSCFModel_Rail::TrainParams::traction
LookUpMap traction
Definition: MSCFModel_Rail.h:71
MSCFModel_Rail::duplicate
virtual MSCFModel * duplicate(const MSVehicleType *vtype) const
Duplicates the car-following model.
Definition: MSCFModel_Rail.cpp:103
MSCFModel_Rail::initFreightParams
TrainParams initFreightParams() const
Definition: MSCFModel_Rail.h:621
MSCFModel_Rail::initNGT400_16Params
TrainParams initNGT400_16Params() const
Definition: MSCFModel_Rail.h:337
MSVehicle
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:79