Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 2b2d2ef6 authored by Michael KRISPER's avatar Michael KRISPER
Browse files

Changed AddComponent extension for CombustionEngine (included PTO Idle Controller)

parent 273767a7
No related branches found
No related tags found
No related merge requests found
......@@ -103,13 +103,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
var gearbox = new CycleGearbox(container, data.GearboxData);
// PWheelCycle --> AxleGear --> CycleClutch --> Engine <-- Aux
new PWheelCycle(container, data.Cycle, data.AxleGearData.AxleGear.Ratio,
var powertrain = new PWheelCycle(container, data.Cycle, data.AxleGearData.AxleGear.Ratio,
gearbox.ModelData.Gears.ToDictionary(g => g.Key, g => g.Value.Ratio))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddComponent(gearbox, data.Retarder, data.PTOTransmission, container)
.AddComponent(new CycleClutch(container))
.AddComponent(new CombustionEngine(container, data.EngineData, pt1Disabled: true))
.AddComponent(gearbox, data.Retarder, data.PTO, container)
.AddComponent(new CycleClutch(container));
var engine = new CombustionEngine(container, data.EngineData, pt1Disabled: true);
var idleController = GetIdleController(data.PTO, engine, container);
powertrain.AddComponent(engine, idleController, container)
.AddAuxiliaries(container, data);
return container;
......@@ -125,17 +128,22 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
// MeasuredSpeedDrivingCycle --> vehicle --> wheels --> brakes
// --> axleGear --> (retarder) --> CycleGearBox --> (retarder) --> CycleClutch --> engine <-- Aux
var powertrain = new MeasuredSpeedDrivingCycle(container, data.Cycle)
var cycle = new MeasuredSpeedDrivingCycle(container, data.Cycle);
var powertrain = cycle
.AddComponent(new Vehicle(container, data.VehicleData))
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddComponent(GetGearbox(container, data.GearboxData), data.Retarder, data.PTOTransmission, container);
.AddComponent(GetGearbox(container, data.GearboxData), data.Retarder, data.PTO, container);
if (data.GearboxData.Type.ManualTransmission()) {
powertrain = powertrain.AddComponent(new Clutch(container, data.EngineData));
}
powertrain.AddComponent(new CombustionEngine(container, data.EngineData))
var engine = new CombustionEngine(container, data.EngineData);
var idleController = GetIdleController(data.PTO, engine, container);
powertrain.AddComponent(engine, idleController, container)
.AddAuxiliaries(container, data);
_modData.HasTorqueConverter = data.GearboxData.Type.AutomaticTransmission();
......@@ -152,15 +160,17 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
// MeasuredSpeedDrivingCycle --> vehicle --> wheels --> brakes
// --> axleGear --> (retarder) --> CycleGearBox --> (retarder) --> CycleClutch --> engine <-- Aux
new MeasuredSpeedDrivingCycle(container, data.Cycle)
var powertrain = new MeasuredSpeedDrivingCycle(container, data.Cycle)
.AddComponent(new Vehicle(container, data.VehicleData))
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddComponent(new CycleGearbox(container, data.GearboxData), data.Retarder, data.PTOTransmission, container)
.AddComponent(new CycleClutch(container))
.AddComponent(new CombustionEngine(container, data.EngineData))
.AddComponent(new CycleGearbox(container, data.GearboxData), data.Retarder, data.PTO, container)
.AddComponent(new CycleClutch(container));
var engine = new CombustionEngine(container, data.EngineData);
powertrain.AddComponent(engine, GetIdleController(data.PTO, engine, container), container)
.AddAuxiliaries(container, data);
return container;
......@@ -176,24 +186,37 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
// DistanceBasedDrivingCycle --> driver --> vehicle --> wheels
// --> axleGear --> (retarder) --> gearBox --> (retarder) --> clutch --> engine <-- Aux
var powertrain = new DistanceBasedDrivingCycle(container, data.Cycle)
.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy()))
var cycle = new DistanceBasedDrivingCycle(container, data.Cycle);
var powertrain = cycle.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy()))
.AddComponent(new Vehicle(container, data.VehicleData))
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddComponent(GetGearbox(container, data.GearboxData), data.Retarder, data.PTOTransmission, container);
.AddComponent(GetGearbox(container, data.GearboxData), data.Retarder, data.PTO, container);
if (data.GearboxData.Type.ManualTransmission()) {
powertrain = powertrain.AddComponent(new Clutch(container, data.EngineData));
}
powertrain.AddComponent(new CombustionEngine(container, data.EngineData)).AddAuxiliaries(container, data);
var engine = new CombustionEngine(container, data.EngineData);
var idleController = GetIdleController(data.PTO, engine, container);
cycle.IdleController = idleController as IdleControllerSwitcher;
powertrain.AddComponent(engine, idleController, container)
.AddAuxiliaries(container, data);
_modData.HasTorqueConverter = data.GearboxData.Type.AutomaticTransmission();
return container;
}
private static IIdleController GetIdleController(PTOData pto, CombustionEngine engine, IVehicleContainer container)
{
return pto == null
? engine.IdleController
: new IdleControllerSwitcher(engine.IdleController, new PTOCycleController(container, pto.PTOCycle));
}
internal static IAuxInProvider CreateAdvancedAuxiliaries(VectoRunData data, IVehicleContainer container)
{
var conventionalAux = CreateAuxiliaries(data, container);
......
......@@ -32,6 +32,7 @@
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader;
using TUGraz.VectoCore.Models.Connector.Ports;
using TUGraz.VectoCore.Models.Declaration;
......@@ -93,30 +94,30 @@ namespace TUGraz.VectoCore.Utils
return next;
}
public static CombustionEngine AddComponent(this IPowerTrainComponent prev, CombustionEngine next)
public static CombustionEngine AddComponent(this IPowerTrainComponent prev, CombustionEngine next,
IIdleController idleController, IVehicleContainer container)
{
prev.InPort().Connect(next.OutPort());
var clutch = prev as IClutch;
if (clutch != null) {
clutch.IdleController = next.IdleController;
clutch.IdleController = idleController;
}
var atGbx = prev as ATGearbox;
if (atGbx != null) {
atGbx.IdleController = next.IdleController;
atGbx.IdleController = idleController;
}
return next;
}
public static IPowerTrainComponent AddComponent(this IPowerTrainComponent prev, IGearbox gearbox, RetarderData data,
PTOTransmissionData pto, IVehicleContainer container)
PTOData pto, IVehicleContainer container)
{
if (pto != null) {
var aux = new GearboxAuxiliary(container);
aux.AddConstant("PTO_TRANSM", DeclarationData.PTOTransmission.Lookup(pto.TransmissionType));
aux.Add("PTO_IDLE", n => pto.LossMap.GetTorqueLoss(n) * n);
gearbox.PTOController = new PTOEngineCycleController(container, pto.PTOCycle);
}
switch (data.Type) {
......@@ -133,4 +134,62 @@ namespace TUGraz.VectoCore.Utils
}
}
}
public class IdleControllerSwitcher : IIdleController
{
private readonly IIdleController _idleController;
private readonly PTOCycleController _ptoController;
private IIdleController _currentController;
public IdleControllerSwitcher(IIdleController idleController, PTOCycleController ptoController)
{
_idleController = idleController;
_ptoController = ptoController;
// default state is idleController
_currentController = _idleController;
}
public IResponse Request(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity,
bool dryRun = false)
{
return _currentController.Request(absTime, dt, outTorque, outAngularVelocity, dryRun);
}
public IResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity)
{
throw new InvalidOperationException(string.Format("{0} cannot initialize.", GetType().FullName));
}
public ITnOutPort RequestPort
{
set
{
_idleController.RequestPort = value;
_ptoController.RequestPort = value;
}
}
public void Reset()
{
_idleController.Reset();
_ptoController.Reset();
_currentController = _idleController;
}
public void ActivatePTO()
{
_currentController = _ptoController;
}
public void ActivateIdle()
{
_currentController = _idleController;
}
public Second GetNextCycleTime()
{
return _ptoController.GetNextCycleTime();
}
}
}
\ No newline at end of file
......@@ -142,7 +142,7 @@
<Compile Include="InputData\Reader\ComponentData\TorqueConverterDataReader.cs" />
<Compile Include="InputData\Reader\ComponentData\AuxiliaryDataReader.cs" />
<Compile Include="Models\SimulationComponent\Data\Engine\FuelConsumptionMapReader.cs" />
<Compile Include="Models\SimulationComponent\Data\PTOTransmissionData.cs" />
<Compile Include="Models\SimulationComponent\Data\PTOData.cs" />
<Compile Include="Models\SimulationComponent\ILossMap.cs" />
<Compile Include="Models\SimulationComponent\Data\PTOLossMap.cs" />
<Compile Include="Models\SimulationComponent\Impl\GearboxAuxiliary.cs" />
......@@ -150,7 +150,7 @@
<Compile Include="Models\SimulationComponent\Impl\ATGearbox.cs" />
<Compile Include="Models\SimulationComponent\Impl\ATShiftStrategy.cs" />
<Compile Include="Models\SimulationComponent\Impl\MeasuredSpeedDrivingCycle.cs" />
<Compile Include="Models\SimulationComponent\Impl\PTOEngineCycleController.cs" />
<Compile Include="Models\SimulationComponent\Impl\PTOCycleController.cs" />
<Compile Include="Models\SimulationComponent\Impl\PWheelCycle.cs" />
<Compile Include="Models\SimulationComponent\Impl\TorqueConverter.cs" />
<Compile Include="Utils\ProviderExtensions.cs" />
......@@ -186,7 +186,7 @@
<Compile Include="Models\SimulationComponent\IAuxiliary.cs" />
<Compile Include="Models\SimulationComponent\IAxlegear.cs" />
<Compile Include="Models\SimulationComponent\IBrakes.cs" />
<Compile Include="Models\SimulationComponent\ICombustionEngineIdleController.cs" />
<Compile Include="Models\SimulationComponent\IIdleController.cs" />
<Compile Include="Models\SimulationComponent\IDriverActions.cs" />
<Compile Include="Models\SimulationComponent\IDriverStrategy.cs" />
<Compile Include="Models\SimulationComponent\IDrivingCycleInfo.cs" />
......
......@@ -32,7 +32,6 @@ namespace TUGraz.VectoCore.Tests.Integration
public const string TorqueConverterPowerSplitFile = @"TestData\Components\AT_GBX\TorqueConverterPowerSplit.vtcc";
public const string GearboxShiftPolygonFile = @"TestData\Components\AT_GBX\AT-Shift.vgbs";
public static VectoRun CreateEngineeringRun(DrivingCycleData cycleData, GearboxType gbxType, string modFileName,
bool overspeed = false, KilogramSquareMeter gearBoxInertia = null)
{
......@@ -72,7 +71,7 @@ namespace TUGraz.VectoCore.Tests.Integration
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new DummyRetarder(container))
.AddComponent(new ATGearbox(container, gearboxData, new ATShiftStrategy(gearboxData, container)))
.AddComponent(engine);
.AddComponent(engine, null, container);
var aux = new EngineAuxiliary(container);
aux.AddConstant("", 0.SI<Watt>());
......@@ -93,20 +92,20 @@ namespace TUGraz.VectoCore.Tests.Integration
return new GearboxData {
Type = gbxType == GearboxType.ATSerial ? GearboxType.ATSerial : GearboxType.ATPowerSplit,
Gears = ratios.Select((ratio, i) =>
Tuple.Create((uint)i,
new GearData {
//MaxTorque = 2300.SI<NewtonMeter>(),
LossMap = ratio.IsEqual(1)
? TransmissionLossMapReader.Create(0.96, ratio, string.Format("Gear {0}", i))
: TransmissionLossMapReader.Create(0.98, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile),
TorqueConverterRatio = i == 0 ? (gbxType == GearboxType.ATPowerSplit ? 1.0 : ratio) : double.NaN,
TorqueConverterGearLossMap = i == 0
? TransmissionLossMapReader.Create(gbxType == GearboxType.ATPowerSplit ? 1.0 : 0.98, ratio,
string.Format("Gear {0}", i))
: null,
}))
Tuple.Create((uint)i,
new GearData {
//MaxTorque = 2300.SI<NewtonMeter>(),
LossMap = ratio.IsEqual(1)
? TransmissionLossMapReader.Create(0.96, ratio, string.Format("Gear {0}", i))
: TransmissionLossMapReader.Create(0.98, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile),
TorqueConverterRatio = i == 0 ? (gbxType == GearboxType.ATPowerSplit ? 1.0 : ratio) : double.NaN,
TorqueConverterGearLossMap = i == 0
? TransmissionLossMapReader.Create(gbxType == GearboxType.ATPowerSplit ? 1.0 : 0.98, ratio,
string.Format("Gear {0}", i))
: null,
}))
.ToDictionary(k => k.Item1 + 1, v => v.Item2),
ShiftTime = 1.SI<Second>(),
Inertia = 0.SI<KilogramSquareMeter>(),
......
......@@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.Integration
.AddComponent(new DummyRetarder(container))
.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
.AddComponent(new Clutch(container, engineData))
.AddComponent(engine);
.AddComponent(engine, null, container);
var aux = new BusAuxiliariesAdapter(container, AdvancedAuxFile, "Coach",
vehicleData.TotalVehicleWeight(), engineData.ConsumptionMap, engineData.IdleSpeed);
......@@ -111,15 +111,15 @@ namespace TUGraz.VectoCore.Tests.Integration
return new GearboxData {
Gears = ratios.Select((ratio, i) =>
Tuple.Create((uint)i,
new GearData {
//MaxTorque = 2300.SI<NewtonMeter>(),
LossMap = ratio.IsEqual(1)
? TransmissionLossMapReader.ReadFromFile(GearboxIndirectLoss, ratio, string.Format("Gear {0}", i))
: TransmissionLossMapReader.ReadFromFile(GearboxDirectLoss, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile)
}))
Tuple.Create((uint)i,
new GearData {
//MaxTorque = 2300.SI<NewtonMeter>(),
LossMap = ratio.IsEqual(1)
? TransmissionLossMapReader.ReadFromFile(GearboxIndirectLoss, ratio, string.Format("Gear {0}", i))
: TransmissionLossMapReader.ReadFromFile(GearboxDirectLoss, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile)
}))
.ToDictionary(k => k.Item1 + 1, v => v.Item2),
ShiftTime = 2.SI<Second>(),
Inertia = 0.SI<KilogramSquareMeter>(),
......
......@@ -98,7 +98,7 @@ namespace TUGraz.VectoCore.Tests.Integration
.AddComponent(new DummyRetarder(container))
.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
.AddComponent(clutch)
.AddComponent(engine);
.AddComponent(engine, null, container);
var aux = new EngineAuxiliary(container);
aux.AddConstant("", 0.SI<Watt>());
......@@ -114,15 +114,15 @@ namespace TUGraz.VectoCore.Tests.Integration
return new GearboxData {
Gears = ratios.Select((ratio, i) =>
Tuple.Create((uint)i,
new GearData {
//MaxTorque = 2300.SI<NewtonMeter>(),
LossMap = ratio.IsEqual(1)
? TransmissionLossMapReader.ReadFromFile(GearboxIndirectLoss, ratio, string.Format("Gear {0}", i))
: TransmissionLossMapReader.ReadFromFile(GearboxDirectLoss, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile)
}))
Tuple.Create((uint)i,
new GearData {
//MaxTorque = 2300.SI<NewtonMeter>(),
LossMap = ratio.IsEqual(1)
? TransmissionLossMapReader.ReadFromFile(GearboxIndirectLoss, ratio, string.Format("Gear {0}", i))
: TransmissionLossMapReader.ReadFromFile(GearboxDirectLoss, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile)
}))
.ToDictionary(k => k.Item1 + 1, v => v.Item2),
ShiftTime = 2.SI<Second>(),
Inertia = 0.SI<KilogramSquareMeter>(),
......
......@@ -90,8 +90,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
.AddComponent(new Clutch(container, engineData))
.AddComponent(new CombustionEngine(container, engineData));
.AddComponent(new CombustionEngine(container, engineData), null, container);
cyclePort.Initialize();
......@@ -147,7 +146,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
.AddComponent(new Clutch(container, engineData))
.AddComponent(new CombustionEngine(container, engineData));
.AddComponent(new CombustionEngine(container, engineData), null, container);
cyclePort.Initialize();
......@@ -217,7 +216,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
.AddComponent(new Clutch(container, engineData))
.AddComponent(new CombustionEngine(container, engineData));
.AddComponent(new CombustionEngine(container, engineData), null, container);
cyclePort.Initialize();
......@@ -293,13 +292,13 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
return new GearboxData {
Gears = ratios.Select((ratio, i) =>
Tuple.Create((uint)i,
new GearData {
MaxTorque = ratio > 5 ? 2300.SI<NewtonMeter>() : null,
LossMap = TransmissionLossMapReader.ReadFromFile(GearboxLossMap, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile)
}))
Tuple.Create((uint)i,
new GearData {
MaxTorque = ratio > 5 ? 2300.SI<NewtonMeter>() : null,
LossMap = TransmissionLossMapReader.ReadFromFile(GearboxLossMap, ratio, string.Format("Gear {0}", i)),
Ratio = ratio,
ShiftPolygon = ShiftPolygonReader.ReadFromFile(GearboxShiftPolygonFile)
}))
.ToDictionary(k => k.Item1 + 1, v => v.Item2),
ShiftTime = 2.SI<Second>(),
Inertia = 0.SI<KilogramSquareMeter>(),
......
......@@ -75,17 +75,17 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload");
var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", fileWriter);
var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData);
var container = new VehicleContainer(ExecutionMode.Engineering, modData);
var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
var engine = new CombustionEngine(vehicleContainer, engineData);
driver.AddComponent(new Vehicle(vehicleContainer, vehicleData))
.AddComponent(new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
.AddComponent(new AxleGear(vehicleContainer, axleGearData))
.AddComponent(new Clutch(vehicleContainer, engineData))
.AddComponent(engine);
var driver = new Driver(container, driverData, new DefaultDriverStrategy());
var engine = new CombustionEngine(container, engineData);
driver.AddComponent(new Vehicle(container, vehicleData))
.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new Clutch(container, engineData))
.AddComponent(engine, null, container);
var gbx = new MockGearbox(vehicleContainer);
var gbx = new MockGearbox(container);
var driverPort = driver.OutPort();
......@@ -99,7 +99,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
// time [s] , dist [m] , v_act [km/h] , v_targ [km/h] , acc [m/s²] , grad [%] , n_eng_avg [1/min] , T_eng_fcmap [Nm] , Tq_clutch [Nm] , Tq_full [Nm] , Tq_drag [Nm] , P_eng_out [kW] , P_eng_full [kW] , P_eng_drag [kW] , P_clutch_out [kW] , Pa Eng [kW] , P_aux [kW] , Gear [-] , Ploss GB [kW] , Ploss Diff [kW] , Ploss Retarder [kW] , Pa GB [kW] , Pa Veh [kW] , P_roll [kW] , P_air [kW] , P_slope [kW] , P_wheel_in [kW] , P_brake_loss [kW] , FC-Map [g/h] , FC-AUXc [g/h] , FC-WHTCc [g/h]
// 1.5 , 5 , 18 , 18 , 0 , 2.842372 , 964.1117 , 323.7562 , 323.7562 , 2208.664 , -158.0261 , 32.68693 , 222.9902 , -15.95456 , 32.68693 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 5.965827 , 0.2423075 , 26.47879 , 32.68693 , 0 , 7574.113 , - , -
AssertHelper.AreRelativeEqual(964.1117.RPMtoRad().Value(), vehicleContainer.Engine.EngineSpeed.Value());
AssertHelper.AreRelativeEqual(964.1117.RPMtoRad().Value(), container.Engine.EngineSpeed.Value());
Assert.AreEqual(2208.664, engine.PreviousState.StationaryFullLoadTorque.Value(), Tolerance);
Assert.AreEqual(-158.0261, engine.PreviousState.FullDragTorque.Value(), Tolerance);
......@@ -121,20 +121,20 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain");
var modData = new ModalDataContainer("Coach_MinimalPowertrain", fileWriter);
var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData);
var container = new VehicleContainer(ExecutionMode.Engineering, modData);
var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData);
var cycle = new DistanceBasedDrivingCycle(container, cycleData);
cycle.AddComponent(new Driver(vehicleContainer, driverData, new DefaultDriverStrategy()))
.AddComponent(new Vehicle(vehicleContainer, vehicleData))
.AddComponent(new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
.AddComponent(new Brakes(vehicleContainer))
.AddComponent(new AxleGear(vehicleContainer, axleGearData))
.AddComponent(new Clutch(vehicleContainer, engineData))
.AddComponent(new CombustionEngine(vehicleContainer, engineData));
cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
.AddComponent(new Vehicle(container, vehicleData))
.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new Clutch(container, engineData))
.AddComponent(new CombustionEngine(container, engineData), null, container);
//engine.IdleController.RequestPort = clutch.IdleControlPort;
var gbx = new MockGearbox(vehicleContainer);
var gbx = new MockGearbox(container);
var cyclePort = cycle.OutPort();
......@@ -146,23 +146,23 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var ds = Constants.SimulationSettings.DriveOffDistance;
var response = cyclePort.Request(absTime, ds);
Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
vehicleContainer.CommitSimulationStep(absTime, response.SimulationInterval);
container.CommitSimulationStep(absTime, response.SimulationInterval);
absTime += response.SimulationInterval;
gbx.Gear = 1;
var cnt = 0;
while (!(response is ResponseCycleFinished) && vehicleContainer.Distance < 17000) {
while (!(response is ResponseCycleFinished) && container.Distance < 17000) {
response = cyclePort.Request(absTime, ds);
response.Switch().
Case<ResponseDrivingCycleDistanceExceeded>(r => ds = r.MaxDistance).
Case<ResponseCycleFinished>(r => { }).
Case<ResponseSuccess>(r => {
vehicleContainer.CommitSimulationStep(absTime, r.SimulationInterval);
container.CommitSimulationStep(absTime, r.SimulationInterval);
absTime += r.SimulationInterval;
ds = vehicleContainer.VehicleSpeed.IsEqual(0)
ds = container.VehicleSpeed.IsEqual(0)
? Constants.SimulationSettings.DriveOffDistance
: (Constants.SimulationSettings.TargetTimeInterval * vehicleContainer.VehicleSpeed)
: (Constants.SimulationSettings.TargetTimeInterval * container.VehicleSpeed)
.Cast<Meter>();
if (cnt++ % 100 == 0) {
......@@ -193,19 +193,19 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload");
var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", fileWriter);
var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData);
var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData);
cycle.AddComponent(new Driver(vehicleContainer, driverData, new DefaultDriverStrategy()))
.AddComponent(new Vehicle(vehicleContainer, vehicleData))
.AddComponent(new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
.AddComponent(new Brakes(vehicleContainer))
.AddComponent(new AxleGear(vehicleContainer, axleGearData))
.AddComponent(new Clutch(vehicleContainer, engineData))
.AddComponent(new CombustionEngine(vehicleContainer, engineData));
var container = new VehicleContainer(ExecutionMode.Engineering, modData);
var cycle = new DistanceBasedDrivingCycle(container, cycleData);
cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
.AddComponent(new Vehicle(container, vehicleData))
.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, axleGearData))
.AddComponent(new Clutch(container, engineData))
.AddComponent(new CombustionEngine(container, engineData), null, container);
//engine.IdleController.RequestPort = clutch.IdleControlPort;
var gbx = new MockGearbox(vehicleContainer);
var gbx = new MockGearbox(container);
var cyclePort = cycle.OutPort();
......@@ -217,17 +217,17 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
gbx.Gear = 1;
var ds = Constants.SimulationSettings.DriveOffDistance;
while (vehicleContainer.Distance < 100) {
while (container.Distance < 100) {
var response = cyclePort.Request(absTime, ds);
response.Switch().
Case<ResponseDrivingCycleDistanceExceeded>(r => ds = r.MaxDistance).
Case<ResponseSuccess>(r => {
vehicleContainer.CommitSimulationStep(absTime, r.SimulationInterval);
container.CommitSimulationStep(absTime, r.SimulationInterval);
absTime += r.SimulationInterval;
ds = vehicleContainer.VehicleSpeed.IsEqual(0)
ds = container.VehicleSpeed.IsEqual(0)
? Constants.SimulationSettings.DriveOffDistance
: (Constants.SimulationSettings.TargetTimeInterval * vehicleContainer.VehicleSpeed)
: (Constants.SimulationSettings.TargetTimeInterval * container.VehicleSpeed)
.Cast<Meter>();
modData.Finish(VectoRun.Status.Success);
......
......@@ -119,7 +119,7 @@ namespace TUGraz.VectoCore.Tests.Integration
.AddComponent(new DummyRetarder(container))
.AddComponent(new Gearbox(container, gearboxData, gbxStrategy))
.AddComponent(clutch)
.AddComponent(engine);
.AddComponent(engine, null, container);
var aux = new EngineAuxiliary(container);
aux.AddConstant("", 0.SI<Watt>());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment