diff --git a/VECTO/Input Files/cMAP.vb b/VECTO/Input Files/cMAP.vb index f2ecc200596fc52ef0b12bc61856a66a85e48cba..3e0e97e4399a75b492ed946bae94b5c4720d96bd 100644 --- a/VECTO/Input Files/cMAP.vb +++ b/VECTO/Input Files/cMAP.vb @@ -10,6 +10,7 @@ ' See the LICENSE.txt for the specific language governing permissions and limitations. Imports System.Collections.Generic Imports TUGraz.VectoCommon.Utils +Imports TUGraz.VectoCore.Configuration Imports VectoAuxiliaries Public Class cMAP @@ -188,10 +189,10 @@ lbEr: #End Region - Public Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As Double) As KilogramPerSecond _ + Public Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As PerSecond) As KilogramPerSecond _ Implements IFuelConsumptionMap.GetFuelConsumption 'MQ: TODO: check units! - Return (fFCdelaunay_Intp(angularVelocity, torque.Value()) / 3600).SI(Of KilogramPerSecond)() + Return (fFCdelaunay_Intp(angularVelocity.Value() / Constants.RPMToRad, torque.Value()) / 3600).SI(Of KilogramPerSecond)() End Function End Class diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index bbff12df6a5dff4991a5214154aac52cff4cbd18..e1c8e498a03a705b8493da6a960fc407eeea5d17 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -1556,7 +1556,8 @@ lb_nOK: End If mAAUX_Global.EngineDrivelineTorque = nPeToM(nU, P) - (((Paux) * 1000) / (EngineSpeed / 9.55)) - mAAUX_Global.advancedAuxModel.Signals.EngineDrivelineTorque = mAAUX_Global.EngineDrivelineTorque + mAAUX_Global.advancedAuxModel.Signals.EngineDrivelineTorque = + mAAUX_Global.EngineDrivelineTorque.SI(Of NewtonMeter)() advancedAuxModel.CycleStep(1.SI(Of Second), message) @@ -2747,15 +2748,16 @@ lb10: Try mAAUX_Global.advancedAuxModel.Signals.ClutchEngaged = mAAUX_Global.ClutchEngaged - mAAUX_Global.advancedAuxModel.Signals.EngineDrivelinePower = mAAUX_Global.EngineDrivelinePower - mAAUX_Global.advancedAuxModel.Signals.EngineDrivelineTorque = mAAUX_Global.EngineDrivelineTorque - mAAUX_Global.advancedAuxModel.Signals.EngineMotoringPower = mAAUX_Global.EngineMotoringPower - mAAUX_Global.advancedAuxModel.Signals.EngineSpeed = mAAUX_Global.EngineSpeed - mAAUX_Global.advancedAuxModel.Signals.PreExistingAuxPower = mAAUX_Global.PreExistingAuxPower + mAAUX_Global.advancedAuxModel.Signals.EngineDrivelinePower = (mAAUX_Global.EngineDrivelinePower * 1000).SI(Of Watt)() + mAAUX_Global.advancedAuxModel.Signals.EngineDrivelineTorque = + mAAUX_Global.EngineDrivelineTorque.SI(Of NewtonMeter)() + mAAUX_Global.advancedAuxModel.Signals.EngineMotoringPower = (mAAUX_Global.EngineMotoringPower * 1000).SI(Of Watt)() + mAAUX_Global.advancedAuxModel.Signals.EngineSpeed = mAAUX_Global.EngineSpeed.RPMtoRad() + mAAUX_Global.advancedAuxModel.Signals.PreExistingAuxPower = (mAAUX_Global.PreExistingAuxPower * 1000).SI(Of Watt)() mAAUX_Global.advancedAuxModel.Signals.Idle = mAAUX_Global.Idle mAAUX_Global.advancedAuxModel.Signals.InNeutral = mAAUX_Global.InNeutral mAAUX_Global.advancedAuxModel.Signals.RunningCalc = mAAUX_Global.RunningCalc - mAAUX_Global.advancedAuxModel.Signals.Internal_Engine_Power = mAAUX_Global.Internal_Engine_Power + mAAUX_Global.advancedAuxModel.Signals.InternalEnginePower = (mAAUX_Global.Internal_Engine_Power * 1000).SI(Of Watt)() 'Power coming out of Advanced Model is in Watts. power = (advancedAuxModel.AuxiliaryPowerAtCrankWatts().Value() / 1000) diff --git a/VECTO/mAAUX_Global.vb b/VECTO/mAAUX_Global.vb index 76cad83e19a3b5a99b9a13cd8cf37502a44c77ad..19a2d421c3fd64c677a869af82083f1690c8a08d 100644 --- a/VECTO/mAAUX_Global.vb +++ b/VECTO/mAAUX_Global.vb @@ -67,7 +67,7 @@ Module mAAUX_Global 'Set Signals advancedAuxModel.Signals.TotalCycleTimeSeconds = CycleTimeInSeconds - advancedAuxModel.Signals.EngineIdleSpeed = ENG.Nidle + advancedAuxModel.Signals.EngineIdleSpeed = ENG.Nidle.RPMtoRad() advancedAuxModel.RunStart(aauxFile, VEC.FilePath) diff --git a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb index d7f3d83ceab362ade3cd56ec93732da3fb6b1ab6..3f95ec9bf666ca24d28037ec069e532b0c76b704 100644 --- a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb +++ b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb @@ -41,6 +41,7 @@ Public Class AuxiliaryConfig Public Property HvacUserInputsConfig As IHVACUserInputsConfig Implements IAuxiliaryConfig.HvacUserInputsConfig 'Vecto Signals + <JsonIgnore> Public Property Signals As ISignals 'Constructors @@ -84,9 +85,10 @@ Public Class AuxiliaryConfig 'Set Default Values Private Sub setDefaults() - Dim tmp As VectoInputs = New VectoInputs With {.Cycle = "Urban", .VehicleWeightKG = 16500.SI(Of Kilogram)(), .PowerNetVoltage = 28.3.SI(Of Volt)()} + Dim tmp As VectoInputs = New VectoInputs _ + With {.Cycle = "Urban", .VehicleWeightKG = 16500.SI(Of Kilogram)(), .PowerNetVoltage = 28.3.SI(Of Volt)()} VectoInputs = tmp - Signals = New Signals With {.EngineSpeed = 2000, .TotalCycleTimeSeconds = 3114, .ClutchEngaged = False} + Signals = New Signals With {.EngineSpeed = 2000.RPMtoRad(), .TotalCycleTimeSeconds = 3114, .ClutchEngaged = False} 'Pneumatics set deault values PneumaticUserInputsConfig = New PneumaticUserInputsConfig(True) diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb index 504dac2b530a3501c971b17d373246bda7ae24b1..c14e8c4462fb30c9d6de2e3268a588f5b535e585 100644 --- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb +++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb @@ -45,11 +45,11 @@ Namespace DownstreamModules 'Staging Calculations - Private Function Sum0(ByVal rpm As Double) As PerSecond + Private Function Sum0(ByVal rpm As PerSecond) As PerSecond - If rpm < 1 Then rpm = 1 + If rpm < 1 Then rpm = 1.RPMtoRad() - Return rpm.RPMtoRad() ' / RPM_to_RadiansPerSecond + Return rpm ' / RPM_to_RadiansPerSecond End Function Private ReadOnly Property Sum1 As Watt @@ -113,8 +113,8 @@ Namespace DownstreamModules Get Return _ - signals.EngineDrivelineTorque.SI(Of NewtonMeter)() + - ((signals.PreExistingAuxPower * 1000).SI(Of Watt)() / Sum0(signals.EngineSpeed)) + signals.EngineDrivelineTorque + + (signals.PreExistingAuxPower / Sum0(signals.EngineSpeed)) End Get End Property @@ -228,7 +228,7 @@ Namespace DownstreamModules 'MQ: No longer needed - already per Second 'These need to be divided by 3600 as the Fuel Map output is in Grams/Second. AG4 += (Sum7 * stepTimeInSeconds) '/ 3600 AG5 += (Sum8 * stepTimeInSeconds) ' / 3600 - AG7 += (Sum12 * stepTimeInSeconds) '/ 3600 + AG7 += (Sum12 * stepTimeInSeconds) '/ 3600 End If End Sub diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb index 0ef0fea22a4b747455ff4e0f3e1e5e41d1a66633..0748fc3fa57d993b4a163bdfc99860083fc98c41 100644 --- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb +++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb @@ -166,9 +166,8 @@ Namespace DownstreamModules Public ReadOnly Property Sum3 As Watt Get - - Return (_signals.EngineMotoringPower * 1000).SI(Of Watt)() + - (_signals.Internal_Engine_Power * 1000).SI(Of Watt)() + + Return (_signals.EngineMotoringPower) + + (_signals.InternalEnginePower) + Sum2 End Get End Property diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M9.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M9.vb index 238a9b1eb20b229af5b4c3ba3469fac0281dd230..bb5c089ad316ae83ed041b4bcad9c4578c56ae73 100644 --- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M9.vb +++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M9.vb @@ -78,11 +78,11 @@ Namespace DownstreamModules #End Region 'Staging Calculations - Private Function S0(ByVal rpm As Double) As PerSecond + Private Function S0(ByVal rpm As PerSecond) As PerSecond - If rpm < 1 Then rpm = 1 + If rpm < 1 Then rpm = 1.RPMtoRad() - Return rpm.RPMtoRad() ' / RPM_TO_RADS_PER_SECOND + Return rpm ' / RPM_TO_RADS_PER_SECOND End Function Private ReadOnly Property S1 As Watt @@ -180,10 +180,9 @@ Namespace DownstreamModules Private ReadOnly Property S14 As NewtonMeter Get - Return _ - SIBase(Of NewtonMeter).Create(Signals.EngineDrivelineTorque) + - (SIBase(Of Watt).Create(Signals.PreExistingAuxPower * 1000) / S0(Signals.EngineSpeed)) + Signals.EngineDrivelineTorque + + Signals.PreExistingAuxPower / S0(Signals.EngineSpeed) End Get End Property diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/cMAP.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/cMAP.vb index ce28e88848736b2a0fa6e5b1c5eff9199d186385..c1ebf4fe23d4d5f186545206f12575a7e1d22e45 100644 --- a/VECTOAux/VectoAuxiliaries/DownstreamModules/cMAP.vb +++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/cMAP.vb @@ -184,10 +184,10 @@ lbEr: #End Region - Public Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As Double) As KilogramPerSecond _ + Public Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As PerSecond) As KilogramPerSecond _ Implements IFuelConsumptionMap.GetFuelConsumption Return _ - (fFCdelaunay_Intp(CType(angularVelocity, Single), CType(torque.Value(), Single)) / 3600.0 / 1000.0).SI(Of KilogramPerSecond)() + (fFCdelaunay_Intp(CType(angularVelocity.AsRPM, Single), CType(torque.Value(), Single)) / 3600.0 / 1000.0).SI(Of KilogramPerSecond)() End Function End Class diff --git a/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb index 8edc83c6447d7689ca8f0fc9a881921751c992c0..c516b3c7b9ec26f40587525fe1bfb80aa32b2ca7 100644 --- a/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb +++ b/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb @@ -71,7 +71,7 @@ Namespace Electrics Public ReadOnly Property AlternatorsEfficiencyIdleResultCard() As Double _ Implements IM0_5_SmartAlternatorSetEfficiency.AlternatorsEfficiencyIdleResultCard Get - Return _alternatorMap.GetEfficiency(_signals.EngineSpeed, SmartIdleCurrent()).Efficiency + Return _alternatorMap.GetEfficiency(_signals.EngineSpeed.AsRPM, SmartIdleCurrent()).Efficiency End Get End Property @@ -85,7 +85,7 @@ Namespace Electrics Public ReadOnly Property AlternatorsEfficiencyTractionOnResultCard() As Double _ Implements IM0_5_SmartAlternatorSetEfficiency.AlternatorsEfficiencyTractionOnResultCard Get - Return _alternatorMap.GetEfficiency(CType(_signals.EngineSpeed, Single), SmartTractionCurrent()).Efficiency + Return _alternatorMap.GetEfficiency(CType(_signals.EngineSpeed.AsRPM, Single), SmartTractionCurrent()).Efficiency End Get End Property @@ -99,7 +99,7 @@ Namespace Electrics Public ReadOnly Property AlternatorsEfficiencyOverrunResultCard() As Double _ Implements IM0_5_SmartAlternatorSetEfficiency.AlternatorsEfficiencyOverrunResultCard Get - Return _alternatorMap.GetEfficiency(CType(_signals.EngineSpeed, Single), SmartOverrunCurrent()).Efficiency + Return _alternatorMap.GetEfficiency(CType(_signals.EngineSpeed.AsRPM, Single), SmartOverrunCurrent()).Efficiency End Get End Property diff --git a/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb index f59b541c296474c28b9441f4cc4d4d983edb091c..0d24142c6b4ddea2538a8635a823124663f719f8 100644 --- a/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb +++ b/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb @@ -57,7 +57,7 @@ Namespace Electrics Dim baseCurrentDemandAmps As Ampere = _electricalConsumersList.GetTotalAverageDemandAmps(False) _ ' ElectricConstants.StoredEnergyEfficiency Dim totalDemandAmps As Ampere = baseCurrentDemandAmps + GetHVACElectricalPowerDemandAmps - Return _alternatorEfficiencyMap.GetEfficiency(_signals.EngineSpeed, totalDemandAmps).Efficiency + Return _alternatorEfficiencyMap.GetEfficiency(_signals.EngineSpeed.AsRPM, totalDemandAmps).Efficiency End Get End Property diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb index 7275513accffe1c36419fd41066d7fd13e0744b3..dea3a4e6b81a494ef0552ef294bb76d63e2f6345 100644 --- a/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb +++ b/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb @@ -45,7 +45,7 @@ Namespace Pneumatics Return _ Sum2 + _pneumaticsCompressorFlowRateMap.GetPowerCompressorOff( - _signals.EngineSpeed * _pneumaticUserInputsConfig.CompressorGearRatio) + _signals.EngineSpeed.AsRPM * _pneumaticUserInputsConfig.CompressorGearRatio) End Get End Property @@ -64,7 +64,8 @@ Namespace Pneumatics Private ReadOnly Property Sum6 As NormLiterPerSecond Get Return _ - _pneumaticsCompressorFlowRateMap.GetFlowRate(_signals.EngineSpeed * _pneumaticUserInputsConfig.CompressorGearRatio) / + _pneumaticsCompressorFlowRateMap.GetFlowRate( + _signals.EngineSpeed.AsRPM * _pneumaticUserInputsConfig.CompressorGearRatio) / 60 End Get End Property @@ -74,10 +75,10 @@ Namespace Pneumatics Dim pon As Watt = _pneumaticsCompressorFlowRateMap.GetPowerCompressorOn( - _signals.EngineSpeed * _pneumaticUserInputsConfig.CompressorGearRatio) + _signals.EngineSpeed.AsRPM * _pneumaticUserInputsConfig.CompressorGearRatio) Dim poff As Watt = _pneumaticsCompressorFlowRateMap.GetPowerCompressorOff( - _signals.EngineSpeed * _pneumaticUserInputsConfig.CompressorGearRatio) + _signals.EngineSpeed.AsRPM * _pneumaticUserInputsConfig.CompressorGearRatio) Dim diff As Watt = pon - poff Return diff End Get diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/M4_AirCompressor.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/M4_AirCompressor.vb index cf62c41f41c59913de98b435a850a451b0107855..8184910f54757e14c91a55b801abdad58b74e0aa 100644 --- a/VECTOAux/VectoAuxiliaries/Pneumatics/M4_AirCompressor.vb +++ b/VECTOAux/VectoAuxiliaries/Pneumatics/M4_AirCompressor.vb @@ -111,7 +111,7 @@ Namespace Pneumatics ''' <returns></returns> ''' <remarks></remarks> Public Function GetFlowRate() As NormLiterPerSecond Implements IM4_AirCompressor.GetFlowRate - Dim compressorRpm As Double = _signals.EngineSpeed * PulleyGearRatio + Dim compressorRpm As Double = _signals.EngineSpeed.AsRPM * PulleyGearRatio ''Flow Rate in the map is Litres/min so divide by 60 to get Units per second. Return _map.GetFlowRate(compressorRpm) / 60 @@ -153,7 +153,7 @@ Namespace Pneumatics ''' <returns></returns> ''' <remarks></remarks> Private Function GetCompressorPower(ByVal compressorOn As Boolean) As Watt - Dim compressorRpm As Double = _signals.EngineSpeed * PulleyGearRatio + Dim compressorRpm As Double = _signals.EngineSpeed.AsRPM * PulleyGearRatio If compressorOn Then Return _map.GetPowerCompressorOn(compressorRpm) Else diff --git a/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb b/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb index d0830d37155bb9783db0a4e2bd492dc4f5223b82..64636bb7cbcc3a98544d05bcb178c23798c53689 100644 --- a/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb +++ b/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb @@ -30,21 +30,21 @@ Namespace IntegrationTests aux.Signals.TotalCycleTimeSeconds = 15000 - aux.Signals.EngineIdleSpeed = 560 + aux.Signals.EngineIdleSpeed = 560.RPMtoRad() aux.Initialise(Path.GetFileName(auxFilePath), Path.GetDirectoryName(Path.GetFullPath(auxFilePath)) + "\") aux.Signals.ClutchEngaged = True - aux.Signals.EngineDrivelinePower = driveLinePower 'kW - aux.Signals.EngineSpeed = engineSpeed 'rpm - aux.Signals.EngineDrivelineTorque = driveLinePower * 1000 / (engineSpeed * 2 * Math.PI / 60) - aux.Signals.EngineMotoringPower = 24 'kW - has to be positive + aux.Signals.EngineDrivelinePower = (driveLinePower * 1000).SI(Of Watt)() 'kW + aux.Signals.EngineSpeed = engineSpeed.RPMtoRad() 'rpm + aux.Signals.EngineDrivelineTorque = (driveLinePower * 1000).SI(Of Watt)() / (engineSpeed.RPMtoRad()) + aux.Signals.EngineMotoringPower = (24 * 1000).SI(Of Watt)() 'kW - has to be positive - aux.Signals.PreExistingAuxPower = 6.1 + aux.Signals.PreExistingAuxPower = (6.1 * 1000).SI(Of Watt)() aux.Signals.Idle = False aux.Signals.InNeutral = False aux.Signals.RunningCalc = True - aux.Signals.Internal_Engine_Power = internalPower 'kW + aux.Signals.InternalEnginePower = (internalPower * 1000).SI(Of Watt)() 'kW Dim power As Watt = aux.AuxiliaryPowerAtCrankWatts() @@ -76,21 +76,21 @@ Namespace IntegrationTests aux.Signals.TotalCycleTimeSeconds = 15000 - aux.Signals.EngineIdleSpeed = 560 + aux.Signals.EngineIdleSpeed = 560.RPMtoRad() aux.Initialise(Path.GetFileName(auxFilePath), Path.GetDirectoryName(Path.GetFullPath(auxFilePath)) + "\") aux.Signals.ClutchEngaged = True - aux.Signals.EngineDrivelinePower = driveLinePower 'kW - aux.Signals.EngineSpeed = engineSpeed 'rpm - aux.Signals.EngineDrivelineTorque = driveLinePower * 1000 / (1256 * 2 * Math.PI / 60) - aux.Signals.EngineMotoringPower = 24 'kW - has to be positive + aux.Signals.EngineDrivelinePower = (driveLinePower * 1000).SI(Of Watt)() 'kW + aux.Signals.EngineSpeed = engineSpeed.RPMtoRad() 'rpm + aux.Signals.EngineDrivelineTorque = (driveLinePower * 1000).SI(Of Watt)() / (1256.RPMtoRad()) + aux.Signals.EngineMotoringPower = (24 * 1000).SI(Of Watt)() 'kW - has to be positive - aux.Signals.PreExistingAuxPower = 0 + aux.Signals.PreExistingAuxPower = 0.SI(Of Watt)() aux.Signals.Idle = False aux.Signals.InNeutral = False aux.Signals.RunningCalc = True - aux.Signals.Internal_Engine_Power = internalPower 'kW + aux.Signals.InternalEnginePower = (internalPower * 1000).SI(Of Watt)() 'kW Dim msg As String = String.Empty For i As Integer = 0 To 9 @@ -101,9 +101,9 @@ Namespace IntegrationTests Assert.AreEqual(79.303.SI().Gramm.Value(), aux.AA_TotalCycleFC_Grams().Value(), 0.0001) - aux.Signals.EngineDrivelinePower = -15 - aux.Signals.EngineDrivelineTorque = aux.Signals.EngineDrivelinePower * 1000 / (1256 * 2 * Math.PI / 60) - aux.Signals.Internal_Engine_Power = -50 + aux.Signals.EngineDrivelinePower = (-15 * 1000).SI(Of Watt)() + aux.Signals.EngineDrivelineTorque = aux.Signals.EngineDrivelinePower / (1256.RPMtoRad()) + aux.Signals.InternalEnginePower = (-50 * 1000).SI(Of Watt)() For i As Integer = 0 To 9 Assert.AreEqual(8954.1435, aux.AuxiliaryPowerAtCrankWatts().Value(), 0.001) @@ -113,9 +113,9 @@ Namespace IntegrationTests Assert.AreEqual(82.5783.SI().Gramm.Value(), aux.AA_TotalCycleFC_Grams().Value(), 0.0001) - aux.Signals.EngineDrivelinePower = driveLinePower - aux.Signals.EngineDrivelineTorque = aux.Signals.EngineDrivelinePower * 1000 / (1256 * 2 * Math.PI / 60) - aux.Signals.Internal_Engine_Power = internalPower + aux.Signals.EngineDrivelinePower = (driveLinePower * 1000).SI(Of Watt)() + aux.Signals.EngineDrivelineTorque = aux.Signals.EngineDrivelinePower / (1256.RPMtoRad()) + aux.Signals.InternalEnginePower = (internalPower * 1000).SI(Of Watt)() 'kW For i As Integer = 0 To 9 Assert.AreEqual(6087.0317, aux.AuxiliaryPowerAtCrankWatts().Value(), 0.001) diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/MockFuel50PC.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/MockFuel50PC.vb index c481c5cf136e8c2ed13e117b2dcbd2388efd6bbf..0c46f104e4bd1bb1d10426391ed241842553ee99 100644 --- a/VECTOAux/VectoAuxiliariesTests/Mocks/MockFuel50PC.vb +++ b/VECTOAux/VectoAuxiliariesTests/Mocks/MockFuel50PC.vb @@ -15,9 +15,9 @@ Public Class MockFuel50PC End Function - Public Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As Double) As KilogramPerSecond _ + Public Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As PerSecond) As KilogramPerSecond _ Implements IFuelConsumptionMap.GetFuelConsumption - Return (fFCdelaunay_Intp(angularVelocity, torque.Value()) / 3600 / 1000).SI(Of KilogramPerSecond)() + Return (fFCdelaunay_Intp(angularVelocity.AsRPM, torque.Value()) / 3600 / 1000).SI(Of KilogramPerSecond)() End Function End Class diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AirCompressorTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AirCompressorTests.vb index d83fa84603499901f66009ca3394ce2d829b875e..d001e7c1ede54fc76758b484351f8cee1c0705ad 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AirCompressorTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AirCompressorTests.vb @@ -26,8 +26,7 @@ Namespace UnitTests Public Sub New() - - _signals.EngineSpeed = 100 + _signals.EngineSpeed = 100.RPMtoRad() End Sub @@ -52,7 +51,7 @@ Namespace UnitTests <Test()> Public Sub CreateNewJustPathTest() Dim map As ICompressorMap = GetNonFailingCompressorMapMock() - _signals.EngineSpeed = 100 + _signals.EngineSpeed = 100.RPMtoRad() Dim target As M4_AirCompressor = New M4_AirCompressor(map, 2, 0.8, _signals) Assert.IsNotNull(target) End Sub @@ -68,7 +67,7 @@ Namespace UnitTests <Test()> Public Sub InitialiseTest() Dim map As ICompressorMap = GetNonFailingCompressorMapMock() - _signals.EngineSpeed = 100 + _signals.EngineSpeed = 100.RPMtoRad() Dim target As M4_AirCompressor = New M4_AirCompressor(map, 2, 0.8, _signals) Assert.IsTrue(target.Initialise()) End Sub @@ -76,7 +75,7 @@ Namespace UnitTests <Test(), ExpectedException("System.ArgumentException")> Public Sub InitialiseInvalidMapTest() Dim map As ICompressorMap = GetFailingCompressorMapMock() - _signals.EngineSpeed = 100 + _signals.EngineSpeed = 100.RPMtoRad() Dim target As M4_AirCompressor = New M4_AirCompressor(map, 2, 0.8, _signals) target.Initialise() End Sub diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb index 3c173461cb210d6bff410a912ecfcdee5aee3b93..f21248343a08496c1201f51952d344b8ba921688 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb @@ -47,7 +47,7 @@ Namespace UnitTests _Signals.TotalCycleTimeSeconds = 3114 - _Signals.EngineSpeed = 3000 + _Signals.EngineSpeed = 3000.RPMtoRad() End Sub diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb index c95a2a6effc2badff8273dd9514d4fa3af05aba3..c8bb4610d3731cae15c7d1756ffd1ad56faf3c03 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb @@ -43,7 +43,7 @@ Namespace UnitTests alternatoMap.Initialise() Dim signals = New Signals() - signals.EngineSpeed = 2000 + signals.EngineSpeed = 2000.RPMtoRad() Dim m0 As New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, alternatoMap, 26.3.SI(Of Volt), signals, ssm) @@ -57,7 +57,7 @@ Namespace UnitTests Dim overrunResult As New ResultCard(readings) - signals.EngineSpeed = 2000 + signals.EngineSpeed = 2000.RPMtoRad() target = New M0_5_SmartAlternatorSetEfficiency(m0, elecConsumers, alternatoMap, idleResult, tractionResult, overrunResult, signals) End Sub diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb index 86e950a2d2e290c09da36f7782bb4569bdc5c1c3..d4a8990c6523d47000ad8cf13958fda2ac2bf4e0 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb @@ -32,7 +32,7 @@ Namespace UnitTests Public Sub New() - signals.EngineSpeed = 2000 + signals.EngineSpeed = 2000.RPMtoRad() 'Setup consumers and HVAC ( 1 Consumer in Test Category ) elecConsumers = CType(New ElectricalConsumerList(0.096, 26.3), IElectricalConsumerList) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M11Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M11Tests.vb index 8f3437b768770f233b5dfa1eb89147b4cee0e017..349ad34dfb3110030d042cc90b08fe14163dd2da 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M11Tests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M11Tests.vb @@ -44,10 +44,11 @@ Namespace UnitTests m6Mock.Setup(Function(x) x.OverrunFlag).Returns(IP1) m8Mock.Setup(Function(x) x.SmartElectricalAlternatorPowerGenAtCrank).Returns(IP2.SI(Of Watt)) m6Mock.Setup(Function(x) x.AvgPowerDemandAtCrankFromElectricsIncHVAC).Returns(IP3.SI(Of Watt)) - sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP4) + sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP4.SI(Of NewtonMeter)) + sgnlsMock.Setup(Function(x) x.PreExistingAuxPower).Returns(0.SI(Of Watt)) m3Mock.Setup(Function(x) x.GetAveragePowerDemandAtCrankFromPneumatics).Returns(IP5.SI(Of Watt)) m1Mock.Setup(Function(x) x.AveragePowerDemandAtCrankFromHVACMechanicalsWatts).Returns(IP6.SI(Of Watt)) - sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP7) + sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP7.RPMtoRad()) sgnlsMock.Setup(Function(x) x.EngineStopped).Returns(IP8) @@ -100,10 +101,10 @@ Namespace UnitTests m6Mock.Setup(Function(x) x.OverrunFlag).Returns(IP1) m8Mock.Setup(Function(x) x.SmartElectricalAlternatorPowerGenAtCrank).Returns(IP2.SI(Of Watt)) m6Mock.Setup(Function(x) x.AvgPowerDemandAtCrankFromElectricsIncHVAC).Returns(IP3.SI(Of Watt)) - sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP4) + sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP4.SI(Of NewtonMeter)) m3Mock.Setup(Function(x) x.GetAveragePowerDemandAtCrankFromPneumatics).Returns(IP5.SI(Of Watt)) m1Mock.Setup(Function(x) x.AveragePowerDemandAtCrankFromHVACMechanicalsWatts).Returns(IP6.SI(Of Watt)) - sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP7) + sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP7.RPMtoRad()) sgnlsMock.Setup(Function(x) x.EngineStopped).Returns(IP8) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb index 17b5dc2e47fafd01e0b6f8bdbf0ce816cdf78aef..02251b0ee0c4d5e00c763385c5da3df17519c670 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb @@ -13,7 +13,7 @@ Namespace UnitTests Private Const _SSMMAP As String = "TestFiles\ssm.Ahsm" Private Const _BusDatabase As String = "TestFiles\BusDatabase.abdb" - Private signals As ISignals = New Signals With {.EngineSpeed = 2000} + Private signals As ISignals = New Signals With {.EngineSpeed = 2000.RPMtoRad()} Private powernetVoltage As Double = 26.3 Private ssm As ISSMTOOL = New SSMTOOL(_SSMMAP, New HVACConstants()) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb index d2b4ed7e5ee76fb3cc5b5a7c5d133ce7fafcd7b4..4aba3ace562def96f5a1c8d23dc12f7eafe5e290 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb @@ -33,7 +33,7 @@ Namespace UnitTests Private Function GetAverageElectricalDemandInstance() As M2_AverageElectricalLoadDemand - signals.EngineSpeed = 2000 + signals.EngineSpeed = 2000.RPMtoRad() Dim consumers As IElectricalConsumerList = CType(New ElectricalConsumerList(26.3, 0.096, True), diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb index cf312c5c89277067be0b9f155abf2e2cf6978e78..42fe64dcda9c37dd5e04504b1aef96ddf016d2e7 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb @@ -40,7 +40,7 @@ Namespace UnitTests Private Sub Initialise() - _signals.EngineSpeed = 2000 + _signals.EngineSpeed = 2000.RPMtoRad() Dim elecConsumers As New ElectricalConsumerList(_powerNetVoltage, 0.096, True) @@ -61,7 +61,7 @@ Namespace UnitTests Dim overrunResult As New ResultCard(readings) Dim signals As ISignals = New Signals - signals.EngineSpeed = 2000 + signals.EngineSpeed = 2000.RPMtoRad() _m05 = New M0_5_SmartAlternatorSetEfficiency(m0, elecConsumers, alternatoMap, idleResult, tractionResult, overrunResult, signals) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M6Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M6Tests.vb index bdfb63952c0ae793e7c73587e9e44eefbbfc1916..b3dc1caa4129040d077e3beaa3eb9cef74ea9374 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M6Tests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M6Tests.vb @@ -30,9 +30,9 @@ Namespace UnitTests Public Sub New() - Signals.EngineMotoringPower = 100 - Signals.EngineDrivelinePower = 150 - Signals.PreExistingAuxPower = 30 + Signals.EngineMotoringPower = 100000.SI(Of Watt)() + Signals.EngineDrivelinePower = 150000.SI(Of Watt)() + Signals.PreExistingAuxPower = 30000.SI(Of Watt)() End Sub <Test()> @@ -46,8 +46,12 @@ Namespace UnitTests 'Test Cases Supplied by Mike Preston. <Test()> _ - <TestCase(100, 100, 100, 100, 20, 20, 40, 100, 100, 100, 0.1F, -0.55, False, False, False, 0, 20, 0, 100, 20, 200, False)> _ - <TestCase(100, 100, 100, 100, 20, 20, 40, 100, 100, 100, 100, -550, True, False, False, 0, 20, 0, 100, 20, 200, False)> + < + TestCase _ + (100, 100, 100, 100, 20, 20, 40, 100, 100, 100, 0.1F, -0.55, False, False, False, 0, 20, 0, 100, 20, 200, False)> _ + < + TestCase _ + (100, 100, 100, 100, 20, 20, 40, 100, 100, 100, 100, -550, True, False, False, 0, 20, 0, 100, 20, 200, False)> Public Sub MikesConditionsTest(M1_1 As Double, M1_2 As Double, M2_1 As Double, @@ -92,9 +96,10 @@ Namespace UnitTests M5._AlternatorsGenerationPowerAtCrankOverrunWatts = M5_2.SI(Of Watt)() - signals.EngineMotoringPower = EMP - signals.PreExistingAuxPower = AUX - signals.EngineDrivelinePower = EDP + signals.EngineMotoringPower = (EMP * 1000).SI(Of Watt)() + signals.InternalEnginePower = 0.SI(Of Watt)() + signals.PreExistingAuxPower = (AUX * 1000).SI(Of Watt)() + signals.EngineDrivelinePower = (EDP * 1000).SI(Of Watt)() signals.SmartElectrics = SM diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M7Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M7Tests.vb index f87c43e7eb24da191e38bc911681113ddc9abf68..a984dacfe80db2fdb52f0d0c8197fffc5f4b4ed6 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M7Tests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M7Tests.vb @@ -73,6 +73,8 @@ Namespace UnitTests M6._OverrunFlag = IP4 Signals.ClutchEngaged = IP5 Signals.InNeutral = IP6 + Signals.EngineSpeed = 0.RPMtoRad() + Signals.EngineIdleSpeed = 0.RPMtoRad() M6._SmartElecAndPneumaticAltPowerGenAtCrank = IP7.SI(Of Watt)() M6._SmartElecAndPneumaticAirCompPowerGenAtCrank = IP8.SI(Of Watt)() M6._SmartElecOnlyAltPowerGenAtCrank = IP9.SI(Of Watt)() diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M9Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M9Tests.vb index 08211892dc8f6cfdba219fdd594c697aa6de0e5e..9a6c23400a93ffbc1b2044909ce96d85ced4872e 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M9Tests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M9Tests.vb @@ -44,8 +44,9 @@ Namespace UnitTests m1Mock.Setup(Function(x) x.AveragePowerDemandAtCrankFromHVACMechanicalsWatts).Returns(IP2.SI(Of Watt)) m4Mock.Setup(Function(x) x.GetPowerCompressorOn).Returns(IP3.SI(Of Watt)) m4Mock.Setup(Function(x) x.GetPowerCompressorOff).Returns(IP4.SI(Of Watt)) - sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP5) - sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP6) + sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP5.SI(Of NewtonMeter)) + sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP6.RPMtoRad()) + sgnlsMock.Setup(Function(x) x.PreExistingAuxPower).Returns(0.SI(Of Watt)) m4Mock.Setup(Function(x) x.GetFlowRate).Returns(IP7.SI(Of NormLiterPerSecond)) m6Mock.Setup(Function(x) x.OverrunFlag).Returns(IP8) m8Mock.Setup(Function(x) x.CompressorFlag).Returns(IP9) @@ -91,14 +92,15 @@ Namespace UnitTests Dim sgnlsMock As New Mock(Of ISignals) Dim psac As New Mock(Of IPneumaticsAuxilliariesConfig) - fMapMock.Setup(Function(x) x.GetFuelConsumption(1.SI(Of NewtonMeter), 1)).Returns( + fMapMock.Setup(Function(x) x.GetFuelConsumption(1.SI(Of NewtonMeter), 1.RPMtoRad())).Returns( (-1 / 1000).SI(Of KilogramPerSecond)()) m6Mock.Setup(Function(x) x.AvgPowerDemandAtCrankFromElectricsIncHVAC).Returns(IP1.SI(Of Watt)) m1Mock.Setup(Function(x) x.AveragePowerDemandAtCrankFromHVACMechanicalsWatts).Returns(IP2.SI(Of Watt)) m4Mock.Setup(Function(x) x.GetPowerCompressorOn).Returns(IP3.SI(Of Watt)) m4Mock.Setup(Function(x) x.GetPowerCompressorOff).Returns(IP4.SI(Of Watt)) - sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP5) - sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP6) + sgnlsMock.Setup(Function(x) x.EngineDrivelineTorque).Returns(IP5.SI(Of NewtonMeter)) + sgnlsMock.Setup(Function(x) x.EngineSpeed).Returns(IP6.RPMtoRad()) + sgnlsMock.Setup(Function(x) x.PreExistingAuxPower).Returns(0.SI(Of Watt)) m4Mock.Setup(Function(x) x.GetFlowRate).Returns(IP7.SI(Of NormLiterPerSecond)) m6Mock.Setup(Function(x) x.OverrunFlag).Returns(IP8) m8Mock.Setup(Function(x) x.CompressorFlag).Returns(IP9) diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/IFuelConsumptionMap.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/IFuelConsumptionMap.vb index 8b21811128dde5389105fdc0b94e70f8bc972de1..3d5d0a3e3e2e64748680372c98ac37128e6804b1 100644 --- a/VectoCommon/AdvancedAuxiliaryInterfaces/IFuelConsumptionMap.vb +++ b/VectoCommon/AdvancedAuxiliaryInterfaces/IFuelConsumptionMap.vb @@ -8,5 +8,5 @@ Public Interface IFuelConsumptionMap ''' <param name="angularVelocity"></param> ''' <returns></returns> ''' <remarks></remarks> - Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As Double) As KilogramPerSecond + Function GetFuelConsumption(torque As NewtonMeter, angularVelocity As PerSecond) As KilogramPerSecond End Interface \ No newline at end of file diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb index 4d56a11c93e9f787fa54bb8877f6f097b6bada0a..c1c6f361faaf10d2d4025b100b1e49f919a2d86a 100644 --- a/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb +++ b/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb @@ -8,6 +8,7 @@ ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' ' See the LICENSE.txt for the specific language governing permissions and limitations. +Imports TUGraz.VectoCommon.Utils Public Interface ISignals ''' <summary> @@ -16,7 +17,7 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks>Vecto Input</remarks> - Property PreExistingAuxPower As Double + Property PreExistingAuxPower As Watt ''' <summary> ''' Engine Motoring Power (KW) @@ -24,7 +25,7 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks>Vecto Input</remarks> - Property EngineMotoringPower As Double + Property EngineMotoringPower As Watt ''' <summary> ''' Engine Driveline Power (KW) @@ -32,7 +33,7 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> - Property EngineDrivelinePower As Double + Property EngineDrivelinePower As Watt ''' <summary> ''' Smart Electrics @@ -55,8 +56,8 @@ Public Interface ISignals ''' </summary> ''' <value></value> ''' <returns></returns> - ''' <remarks>RPM in old money - Vecto Input</remarks> - Property EngineSpeed As Double + ''' + Property EngineSpeed As PerSecond ''' <summary> ''' Smart Pneumatics @@ -88,7 +89,7 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks>Vecto Input</remarks> - Property EngineDrivelineTorque As Double + Property EngineDrivelineTorque As NewtonMeter ''' <summary> ''' Engine Idle @@ -144,7 +145,7 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> - Property EngineIdleSpeed As Double + Property EngineIdleSpeed As PerSecond ''' <summary> ''' Pneumatic Overrun Utilisation @@ -176,5 +177,5 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> - Property Internal_Engine_Power As Single + Property InternalEnginePower As Watt End Interface diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb index 5ee6450f5ea808dc336b15236f031c8753d1176b..e90d59cb8b4ec87dc85bef713914994adae1b7c4 100644 --- a/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb +++ b/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb @@ -8,7 +8,7 @@ ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' ' See the LICENSE.txt for the specific language governing permissions and limitations. - +Imports TUGraz.VectoCommon.Utils Public Class Signals Implements ISignals @@ -18,10 +18,10 @@ Public Class Signals Private _smartElectrics As Boolean Public Property ClutchEngaged As Boolean Implements ISignals.ClutchEngaged - Public Property EngineDrivelinePower As Double Implements ISignals.EngineDrivelinePower - Public Property EngineDrivelineTorque As Double Implements ISignals.EngineDrivelineTorque - Public Property EngineMotoringPower As Double Implements ISignals.EngineMotoringPower - Public Property EngineSpeed As Double Implements ISignals.EngineSpeed + Public Property EngineDrivelinePower As Watt Implements ISignals.EngineDrivelinePower + Public Property EngineDrivelineTorque As NewtonMeter Implements ISignals.EngineDrivelineTorque + Public Property EngineMotoringPower As Watt Implements ISignals.EngineMotoringPower + Public Property EngineSpeed As PerSecond Implements ISignals.EngineSpeed Public Property SmartElectrics As Boolean Implements ISignals.SmartElectrics Get @@ -35,7 +35,7 @@ Public Class Signals Public Property SmartPneumatics As Boolean Implements ISignals.SmartPneumatics Public Property TotalCycleTimeSeconds As Integer Implements ISignals.TotalCycleTimeSeconds Public Property CurrentCycleTimeInSeconds As Double Implements ISignals.CurrentCycleTimeInSeconds - Public Property PreExistingAuxPower As Double Implements ISignals.PreExistingAuxPower + Public Property PreExistingAuxPower As Watt Implements ISignals.PreExistingAuxPower Public Property Idle As Boolean Implements ISignals.Idle Public Property InNeutral As Boolean Implements ISignals.InNeutral @@ -54,11 +54,11 @@ Public Class Signals End Get End Property - Public Property EngineIdleSpeed As Double Implements ISignals.EngineIdleSpeed + Public Property EngineIdleSpeed As PerSecond Implements ISignals.EngineIdleSpeed Public Property PneumaticOverrunUtilisation As Double Implements ISignals.PneumaticOverrunUtilisation Public Property StoredEnergyEfficiency As Double Implements ISignals.StoredEnergyEfficiency Public Property RunningCalc As Boolean Implements ISignals.RunningCalc - Public Property Internal_Engine_Power As Single Implements ISignals.Internal_Engine_Power + Public Property InternalEnginePower As Watt Implements ISignals.InternalEnginePower End Class diff --git a/VectoCommon/VectoCommon/Utils/DoubleExtensionMethods.cs b/VectoCommon/VectoCommon/Utils/DoubleExtensionMethods.cs index 2829377e57687f7ddfb4482b0cabbd24b2d9ded3..d9329db771fad24a1dabeba6bb63b7ffcc72de10 100644 --- a/VectoCommon/VectoCommon/Utils/DoubleExtensionMethods.cs +++ b/VectoCommon/VectoCommon/Utils/DoubleExtensionMethods.cs @@ -152,6 +152,16 @@ namespace TUGraz.VectoCommon.Utils return SI<PerSecond>(self * 2 * Math.PI / 60.0); } + /// <summary> + /// Converts the double-value from RPM (rounds per minute) to the SI Unit PerSecond. + /// </summary> + /// <param name="self"></param> + /// <returns></returns> + public static PerSecond RPMtoRad(this float self) + { + return SI<PerSecond>(self * 2 * Math.PI / 60.0); + } + /// <summary> /// Converts the value from rounds per minute to the SI Unit PerSecond /// </summary> diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs index 1c86329c28d3aa769a8144460f55c0896db9f84f..48a1334157e5729c022714113e6b233d166f8f75 100644 --- a/VectoCommon/VectoCommon/Utils/SI.cs +++ b/VectoCommon/VectoCommon/Utils/SI.cs @@ -584,6 +584,11 @@ namespace TUGraz.VectoCommon.Utils [DebuggerHidden] private PerSecond(double val) : base(val, new Unit[0], DenominatorDefault) {} + + public double AsRPM + { + get { return Val * 60 / (2 * Math.PI); } + } } /// <summary> diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs index 0968285e11bf72a469a6af6c6b3780e35e097b99..5022dc43883e4df637c491b45cdc75f58c8fa8ee 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs @@ -43,7 +43,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine public class FuelConsumptionMap : SimulationComponentData, IDisposable { [Required, ValidateObject] private readonly DelaunayMap _fuelMap = new DelaunayMap("FuelConsumptionMap"); - + private FuelConsumptionMap() {} public static FuelConsumptionMap ReadFromFile(string fileName) @@ -126,7 +126,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine { // delaunay map needs is initialised with rpm, therefore the angularVelocity has to be converted. return - _fuelMap.Interpolate(torque.Value(), angularVelocity.ConvertTo().Rounds.Per.Minute.Value(), allowExtrapolation) + _fuelMap.Interpolate(torque.Value(), angularVelocity.AsRPM, allowExtrapolation) .SI().Kilo.Gramm.Per.Second.Cast<KilogramPerSecond>(); } @@ -235,8 +235,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine protected virtual void Dispose(bool disposing) { - if (disposing) + if (disposing) { _fuelMap.Dispose(); + } } #endregion diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs index 4f5540a0bc0243c1d36bc5bed7651f9472348c09..a170bb82787c1d6526bea6173927398c75ff2bce 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs @@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl tmpAux.VectoInputs.FuelDensity = Physics.FuelDensity; //'Set Signals - tmpAux.Signals.EngineIdleSpeed = (float)(engineIdleSpeed.Value() / Constants.RPMToRad); + tmpAux.Signals.EngineIdleSpeed = engineIdleSpeed; tmpAux.Initialise(Path.GetFileName(aauxFile), Path.GetDirectoryName(Path.GetFullPath(aauxFile)) + @"\"); Auxiliaries = tmpAux; @@ -205,29 +205,27 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl _fcMapAdapter.AllowExtrapolation = true; Auxiliaries.Signals.ClutchEngaged = DataBus.ClutchClosed(absTime); - Auxiliaries.Signals.EngineDrivelinePower = (float)(torquePowerTrain * angularSpeed / 1000).Value(); - Auxiliaries.Signals.EngineDrivelineTorque = (float)torquePowerTrain.Value(); - Auxiliaries.Signals.Internal_Engine_Power = - (float)((torqueEngine * angularSpeed - DataBus.BrakePower) / 1000).Value(); + Auxiliaries.Signals.EngineDrivelinePower = torquePowerTrain * angularSpeed; + Auxiliaries.Signals.EngineDrivelineTorque = torquePowerTrain; + Auxiliaries.Signals.InternalEnginePower = torqueEngine * angularSpeed - DataBus.BrakePower; if (DataBus.DriverBehavior == DrivingBehavior.Coasting) { // make sure smart aux are _not_ enabled for now // set internal_engine_power a little bit lower so there is no excessive power for smart aux - Auxiliaries.Signals.Internal_Engine_Power = - (float)((0.9 * torqueEngine * angularSpeed /*- DataBus.BrakePower*/) / 1000).Value(); + Auxiliaries.Signals.InternalEnginePower = 0.9 * torqueEngine * angularSpeed /*- DataBus.BrakePower*/; // if smart aux should be on during coasting use the following line // set internal_engine_power to a large value (*10) so that there's excessive power for smart aux (alreadin during search operating point) //(float)DataBus.EngineDragPower(angularSpeed).Value() / 100; } else { if (DataBus.DriverBehavior != DrivingBehavior.Braking) { - Auxiliaries.Signals.Internal_Engine_Power = 0; + Auxiliaries.Signals.InternalEnginePower = 0.SI<Watt>(); //(float)((0.9 * torqueEngine * angularSpeed - DataBus.BrakePower) / 1000).Value(); } else { // smart aux should be on during braking } } - Auxiliaries.Signals.EngineMotoringPower = (float)(-DataBus.EngineDragPower(angularSpeed).Value() / 1000); - Auxiliaries.Signals.EngineSpeed = angularSpeed.Value() / Constants.RPMToRad; - Auxiliaries.Signals.PreExistingAuxPower = 0; //mAAUX_Global.PreExistingAuxPower; + Auxiliaries.Signals.EngineMotoringPower = -DataBus.EngineDragPower(angularSpeed); + Auxiliaries.Signals.EngineSpeed = angularSpeed; + Auxiliaries.Signals.PreExistingAuxPower = 0.SI<Watt>(); //mAAUX_Global.PreExistingAuxPower; Auxiliaries.Signals.Idle = DataBus.VehicleStopped; Auxiliaries.Signals.InNeutral = DataBus.Gear == 0; Auxiliaries.Signals.RunningCalc = true; @@ -244,9 +242,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public bool AllowExtrapolation { get; set; } - public KilogramPerSecond GetFuelConsumption(NewtonMeter torque, double angularVelocity) + public KilogramPerSecond GetFuelConsumption(NewtonMeter torque, PerSecond angularVelocity) { - return FcMap.GetFuelConsumption(torque, angularVelocity.RPMtoRad(), AllowExtrapolation); + return FcMap.GetFuelConsumption(torque, angularVelocity, AllowExtrapolation); } }