diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index 01c1773c4c8e6611c1fed57a8ec9934f4ab6c626..e1eb6819e60845f0de82ec733c37d2e80fda6fb9 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -335,48 +335,48 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl DeltaDragLoadTorque = inTorque, DeltaFullLoadTorque = inTorque, }; - } else { - var shiftTimeExceeded = absTime.IsSmaller(EngageTime) && - EngageTime.IsSmaller(absTime + dt, Constants.SimulationSettings.LowerBoundTimeInterval); - // allow 5% tolerance of shift time - if (shiftTimeExceeded && EngageTime - absTime > Constants.SimulationSettings.LowerBoundTimeInterval / 2) { - return new ResponseFailTimeInterval(this) { - DeltaT = EngageTime - absTime, - Gearbox = { + } + + var shiftTimeExceeded = absTime.IsSmaller(EngageTime) && + EngageTime.IsSmaller(absTime + dt, Constants.SimulationSettings.LowerBoundTimeInterval); + // allow 5% tolerance of shift time + if (shiftTimeExceeded && EngageTime - absTime > Constants.SimulationSettings.LowerBoundTimeInterval / 2) { + return new ResponseFailTimeInterval(this) { + DeltaT = EngageTime - absTime, + Gearbox = { PowerRequest = outTorque * (PreviousState.OutAngularVelocity + outAngularVelocity) / 2.0, Gear = new GearshiftPosition(0) } - }; - } + }; + } - var remainingTime = EngageTime - (absTime + dt); - var withinTractionInterruption = absTime.IsSmaller(EngageTime) && (absTime + dt).IsSmaller(EngageTime); - if (withinTractionInterruption && - remainingTime.IsSmaller(Constants.SimulationSettings.LowerBoundTimeInterval) && - remainingTime.IsSmaller(ModelData.TractionInterruption * 0.1)) { - // interval has already been prolonged, but has been overruled. if remaining time is less than 10%, reduce traction interruption time - EngageTime = absTime + dt; - } + var remainingTime = EngageTime - (absTime + dt); + var withinTractionInterruption = absTime.IsSmaller(EngageTime) && (absTime + dt).IsSmaller(EngageTime); + if (withinTractionInterruption && + remainingTime.IsSmaller(Constants.SimulationSettings.LowerBoundTimeInterval) && + remainingTime.IsSmaller(ModelData.TractionInterruption * 0.1)) { + // interval has already been prolonged, but has been overruled. if remaining time is less than 10%, reduce traction interruption time + EngageTime = absTime + dt; + } - //var inTorque = 0.SI<NewtonMeter>(); - if (avgInAngularVelocity.Equals(0.SI<PerSecond>())) { - inTorque = 0.SI<NewtonMeter>(); - } + //var inTorque = 0.SI<NewtonMeter>(); + if (avgInAngularVelocity.Equals(0.SI<PerSecond>())) { + inTorque = 0.SI<NewtonMeter>(); + } - CurrentState.SetState(inTorque, inAngularVelocity, outTorque, outAngularVelocity); - CurrentState.Gear = gear; - CurrentState.TransmissionTorqueLoss = inTorque * ModelData.Gears[gear.Gear].Ratio - outTorque; + CurrentState.SetState(inTorque, inAngularVelocity, outTorque, outAngularVelocity); + CurrentState.Gear = gear; + CurrentState.TransmissionTorqueLoss = inTorque * ModelData.Gears[gear.Gear].Ratio - outTorque; - var response = NextComponent.Request(absTime, dt, inTorque, inAngularVelocity, false); + var response = NextComponent.Request(absTime, dt, inTorque, inAngularVelocity, false); - response.Gearbox.PowerRequest = outTorque * avgAngularVelocity; - response.Gearbox.Gear = new GearshiftPosition(0); - response.Gearbox.InputSpeed = inAngularVelocity; - response.Gearbox.InputTorque = inTorque; - response.Gearbox.OutputTorque = outTorque; - response.Gearbox.OutputSpeed = outAngularVelocity; - return response; - } + response.Gearbox.PowerRequest = outTorque * avgAngularVelocity; + response.Gearbox.Gear = new GearshiftPosition(0); + response.Gearbox.InputSpeed = inAngularVelocity; + response.Gearbox.InputTorque = inTorque; + response.Gearbox.OutputTorque = outTorque; + response.Gearbox.OutputSpeed = outAngularVelocity; + return response; } /// <summary> diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs index da81ea95da38cfce1b120ef5ed6c2d1480716c31..662712a887f29562e50f6022bfa51100ae871a5a 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs @@ -113,10 +113,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl }, DeltaEngineSpeed = 0.RPMtoRad(), }; - } else { - EngineAux?.TorqueDemand(absTime, dt, outTorque, outAngularVelocity); - return new ResponseSuccess(this) { - Engine = { + } + + EngineAux?.TorqueDemand(absTime, dt, outTorque, outAngularVelocity); + return new ResponseSuccess(this) { + Engine = { TorqueOutDemand = outTorque, PowerRequest = 0.SI<Watt>(), DynamicFullLoadPower = 0.SI<Watt>(), @@ -126,8 +127,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl EngineSpeed = 0.RPMtoRad(), AuxiliariesPowerDemand = 0.SI<Watt>(), }, - }; - } + }; } #region Overrides of CombustionEngine diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index b133d57a5912e4ef6bd03fe8a008e44b5bfe0cfd..a7f2c150aa4480e3d801ea23c206b9df0f631afc 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -1862,7 +1862,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies }, evaluateFunction: emTq => { var cfg = new HybridStrategyResponse() { - CombustionEngineOn = nextGear.IsLockedGear(), + CombustionEngineOn = nextGear.IsLockedGear() ? true : false, GearboxInNeutral = false, MechanicalAssistPower = new Dictionary<PowertrainPosition, Tuple<PerSecond, NewtonMeter>>() { { emPos, Tuple.Create(firstResponse.ElectricMotor.AngularVelocity, emTq) } @@ -1901,7 +1901,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies }, evaluateFunction: emTq => { var cfg = new HybridStrategyResponse() { - CombustionEngineOn = nextGear.IsLockedGear(), + CombustionEngineOn = nextGear.IsLockedGear() ? true : false, GearboxInNeutral = false, MechanicalAssistPower = new Dictionary<PowertrainPosition, Tuple<PerSecond, NewtonMeter>>() { { emPos, Tuple.Create(firstResponse.ElectricMotor.AngularVelocity, emTq) } @@ -1957,7 +1957,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies }, evaluateFunction: emTq => { var cfg = new HybridStrategyResponse() { - CombustionEngineOn = nextGear.IsLockedGear(), + CombustionEngineOn = nextGear.IsLockedGear() ? true : false, GearboxInNeutral = false, MechanicalAssistPower = new Dictionary<PowertrainPosition, Tuple<PerSecond, NewtonMeter>>() { { emPos, Tuple.Create(firstResponse.ElectricMotor.AngularVelocity, emTq) } diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete2AxleBusesTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete2AxleBusesTest.cs index bc40d360b8a124a13dc50399a3b24f5430db7f23..ac0839d7ce8b18e245c24a27e2a810c2ea110248 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete2AxleBusesTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete2AxleBusesTest.cs @@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration AssertBusParameters( missionType: mission.MissionType, passengerDensity: new[] { mission.MissionType == MissionType.Interurban ? 2.2 : 3 }, - airDragAllowed: mission.MissionType == MissionType.Interurban, + airDragAllowed: mission.MissionType == MissionType.Interurban ? true : false, doubleDecker: false, busParameters: mission.BusParameter ); diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete3AxleBusesTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete3AxleBusesTest.cs index 9c8fbd5a2bfa2171272c7e55ba0dbb30c18270f6..0af2d107ca230d5a915c21983966758616be3b5c 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete3AxleBusesTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete3AxleBusesTest.cs @@ -112,7 +112,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration AssertBusParameters( missionType: mission.MissionType, passengerDensity: new[] { mission.MissionType == MissionType.Interurban ? 2.2 : 3 }, - airDragAllowed: mission.MissionType == MissionType.Interurban, + airDragAllowed: mission.MissionType == MissionType.Interurban ? true : false, doubleDecker: false, busParameters: mission.BusParameter ); @@ -461,7 +461,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration AssertBusParameters( missionType: mission.MissionType, passengerDensity: new[] { mission.MissionType == MissionType.Interurban ? 2.2 : 3 }, - airDragAllowed: mission.MissionType == MissionType.Interurban, + airDragAllowed: mission.MissionType == MissionType.Interurban ? true : false, doubleDecker: false, busParameters: mission.BusParameter ); diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs index 7af5e1d5c21347fc1d4e34066ddfb72dbb73c04f..57f5cf213896e456e4f74f5b1ae0080cf69b7a1f 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs @@ -107,7 +107,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration AssertBusParameters( missionType: mission.MissionType, passengerDensity: new[] { mission.MissionType == MissionType.Interurban ? 2.2 : 3 }, - airDragAllowed: mission.MissionType == MissionType.Interurban, + airDragAllowed: mission.MissionType == MissionType.Interurban ? true : false, doubleDecker: false, busParameters: mission.BusParameter );