Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 006664b8 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

refactor: use new IFuelMap Interface

parent af031df2
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,6 @@
' See the LICENSE.txt for the specific language governing permissions and limitations.
Public Interface IVectoInputs
''' <summary>
''' Vehicle Mass (KG)
''' </summary>
......@@ -18,6 +17,7 @@ Public Interface IVectoInputs
''' <returns></returns>
''' <remarks></remarks>
Property VehicleWeightKG As Single
''' <summary>
''' Cycle ( Urban, Interurban etc )
''' </summary>
......@@ -25,6 +25,7 @@ Public Interface IVectoInputs
''' <returns></returns>
''' <remarks></remarks>
Property Cycle As String
''' <summary>
''' PowerNet Voltage (V) Volts available on the bus by Batteries
''' </summary>
......@@ -32,19 +33,20 @@ Public Interface IVectoInputs
''' <returns></returns>
''' <remarks></remarks>
Property PowerNetVoltage As Single
''' <summary>
''' Fuel Map Used in Vecto.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property FuelMap As String
Property FuelMap As IFuelConsumptionMap
''' <summary>
''' Fuel density used in Vecto.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property FuelDensity As String
Property FuelDensity As Double
End Interface
......@@ -35,7 +35,7 @@ Public Class AdvancedAuxiliaries
Private WithEvents alternatorMap As IAlternatorMap
Private WithEvents actuationsMap As IPneumaticActuationsMAP
Private WithEvents fuelMap As IFUELMAP
Private fuelMap As IFuelConsumptionMap
'Classes which compose the model.
Private WithEvents M0 As IM0_NonSmart_AlternatorsSetEfficiency
......@@ -60,14 +60,14 @@ Public Class AdvancedAuxiliaries
Private hvacConstants As HVACConstants
'Event Handler top level bubble.
Public Sub VectoEventHandler(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Handles compressorMap.AuxiliaryEvent, alternatorMap.AuxiliaryEvent, ssmTool.Message, ssmToolModule14.Message
Public Sub VectoEventHandler(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) _
Handles CompressorMap.AuxiliaryEvent, AlternatorMap.AuxiliaryEvent, SSMTOOL.Message, ssmToolModule14.Message
If Signals.AuxiliaryEventReportingLevel <= messageType Then
RaiseEvent AuxiliaryEvent(sender, message, messageType)
End If
End Sub
'Constructor
......@@ -75,7 +75,6 @@ Public Class AdvancedAuxiliaries
VectoInputs = New VectoInputs()
Signals = New Signals()
End Sub
'Initialise Model
......@@ -97,27 +96,31 @@ Public Class AdvancedAuxiliaries
Signals.SmartPneumatics = auxConfig.PneumaticUserInputsConfig.SmartAirCompression
Signals.PneumaticOverrunUtilisation = auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction
alternatorMap = New CombinedAlternator(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.ElectricalUserInputsConfig.AlternatorMap), Signals)
alternatorMap = New CombinedAlternator(
FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.ElectricalUserInputsConfig.AlternatorMap), Signals)
actuationsMap = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.ActuationsMap))
actuationsMap = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory,
auxConfig.PneumaticUserInputsConfig.ActuationsMap))
compressorMap = New CompressorMap(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.CompressorMap))
compressorMap = New CompressorMap(FilePathUtils.ResolveFilePath(vectoDirectory,
auxConfig.PneumaticUserInputsConfig.CompressorMap))
compressorMap.Initialise()
fuelMap = New cMAP()
fuelMap.FilePath = FilePathUtils.ResolveFilePath(vectoDirectory, VectoInputs.FuelMap)
If Not fuelMap.ReadFile() Then
MessageBox.Show("Unable to read fuel map, aborting.")
Return
End If
fuelMap.Triangulate()
'fuelMap = New cMAP()
'fuelMap.FilePath = FilePathUtils.ResolveFilePath(vectoDirectory, VectoInputs.FuelMap)
'If Not fuelMap.ReadFile() Then
' MessageBox.Show("Unable to read fuel map, aborting.")
' Return
'End If
'fuelMap.Triangulate()
fuelMap = VectoInputs.FuelMap
auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.DoorDutyCycleFraction = GetDoorActuationTimeFraction()
'SSM HVAC
Dim ssmPath As String = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.SSMFilePath)
Dim BusDatabase As String = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.BusDatabasePath)
Dim BusDatabase As String = FilePathUtils.ResolveFilePath(vectoDirectory,
auxConfig.HvacUserInputsConfig.BusDatabasePath)
ssmTool = New SSMTOOL(ssmPath, hvacConstants, auxConfig.HvacUserInputsConfig.SSMDisabled)
'This duplicate SSM is being created for use in M14 as its properties will be dynamically changed at that point
......@@ -161,7 +164,6 @@ Public Class AdvancedAuxiliaries
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, Signals)
M3 = New M3_AveragePneumaticLoadDemand(auxConfig.PneumaticUserInputsConfig,
auxConfig.PneumaticAuxillariesConfig,
actuationsMap,
......@@ -170,8 +172,10 @@ Public Class AdvancedAuxiliaries
VectoInputs.Cycle,
Signals)
M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio, auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals)
M5 = New M5__SmartAlternatorSetGeneration(M05, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency)
M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio,
auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals)
M5 = New M5__SmartAlternatorSetGeneration(M05, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,
auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency)
M6 = New M6(M1, M2, M3, M4, M5, Signals)
M7 = New M7(M5, M6, Signals)
M8 = New M8(M1, M6, M7, Signals)
......@@ -181,8 +185,6 @@ Public Class AdvancedAuxiliaries
M12 = New M12(M10, M11, Signals)
M13 = New M13(M10, M11, M12, Signals)
M14 = New M14(M13, ssmToolModule14, hvacConstants, Signals)
End Sub
#Region "Interface implementation"
......@@ -190,9 +192,11 @@ Public Class AdvancedAuxiliaries
Public Property Signals As ISignals Implements IAdvancedAuxiliaries.Signals
Public Property VectoInputs As IVectoInputs Implements IAdvancedAuxiliaries.VectoInputs
Public Event AuxiliaryEvent(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Implements IAdvancedAuxiliaries.AuxiliaryEvent
Public Event AuxiliaryEvent(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) _
Implements IAdvancedAuxiliaries.AuxiliaryEvent
Public Function Configure(filePath As String, vectoFilePath As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.Configure
Public Function Configure(filePath As String, vectoFilePath As String) As Boolean _
Implements VectoAuxiliaries.IAdvancedAuxiliaries.Configure
Try
......@@ -221,10 +225,10 @@ Public Class AdvancedAuxiliaries
Return True
End Function
Public Function CycleStep(seconds As Integer, ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.CycleStep
Public Function CycleStep(seconds As Integer, ByRef message As String) As Boolean _
Implements VectoAuxiliaries.IAdvancedAuxiliaries.CycleStep
Try
......@@ -240,9 +244,7 @@ Public Class AdvancedAuxiliaries
End Try
Return True
End Function
Public ReadOnly Property Running As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.Running
......@@ -251,7 +253,8 @@ Public Class AdvancedAuxiliaries
End Get
End Property
Public Function RunStart(ByVal auxFilePath As String, ByVal vectoFilePath As String, ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.RunStart
Public Function RunStart(ByVal auxFilePath As String, ByVal vectoFilePath As String) As Boolean _
Implements VectoAuxiliaries.IAdvancedAuxiliaries.RunStart
Try
......@@ -264,7 +267,6 @@ Public Class AdvancedAuxiliaries
End Try
Return True
End Function
Public Function RunStop(ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.RunStop
......@@ -282,8 +284,6 @@ Public Class AdvancedAuxiliaries
Return 0
End If
End Get
End Property
......@@ -319,7 +319,8 @@ Public Class AdvancedAuxiliaries
'Helpers
Private Function GetDoorActuationTimeFraction() As Single
Dim actuationsMap As PneumaticActuationsMAP = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.ActuationsMap))
Dim actuationsMap As PneumaticActuationsMAP = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory,
auxConfig.PneumaticUserInputsConfig.ActuationsMap))
Dim actuationsKey As ActuationsKey = New ActuationsKey("Park brake + 2 doors", VectoInputs.Cycle)
Dim numActuations As Single = actuationsMap.GetNumActuations(actuationsKey)
......@@ -328,10 +329,10 @@ Public Class AdvancedAuxiliaries
Dim doorDutyCycleFraction As Single = (numActuations * secondsPerActuation) / Signals.TotalCycleTimeSeconds
Return doorDutyCycleFraction
End Function
Public Function ValidateAAUXFile(filePath As String, ByRef message As String) As Boolean Implements IAdvancedAuxiliaries.ValidateAAUXFile
Public Function ValidateAAUXFile(filePath As String, ByRef message As String) As Boolean _
Implements IAdvancedAuxiliaries.ValidateAAUXFile
Dim validResult As Boolean = FilePathUtils.ValidateFilePath(filePath, ".aaux", message)
......@@ -340,12 +341,12 @@ Public Class AdvancedAuxiliaries
Return True
End Function
'Diagnostics outputs for testing purposes in Vecto.
'Eventually this can be removed or rendered non effective to reduce calculation load on the model.
Public ReadOnly Property AA_NonSmartAlternatorsEfficiency As Single? Implements IAdvancedAuxiliaries.AA_NonSmartAlternatorsEfficiency
Public ReadOnly Property AA_NonSmartAlternatorsEfficiency As Single? _
Implements IAdvancedAuxiliaries.AA_NonSmartAlternatorsEfficiency
Get
Return M0.AlternatorsEfficiency
End Get
......@@ -357,37 +358,43 @@ Public Class AdvancedAuxiliaries
End Get
End Property
Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Single? Implements IAdvancedAuxiliaries.AA_SmartIdleAlternatorsEfficiency
Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Single? _
Implements IAdvancedAuxiliaries.AA_SmartIdleAlternatorsEfficiency
Get
Return M05.AlternatorsEfficiencyIdleResultCard
End Get
End Property
Public ReadOnly Property AA_SmartTractionCurrent_Amps As Single? Implements IAdvancedAuxiliaries.AA_SmartTractionCurrent_Amps
Public ReadOnly Property AA_SmartTractionCurrent_Amps As Single? _
Implements IAdvancedAuxiliaries.AA_SmartTractionCurrent_Amps
Get
Return M05.SmartTractionCurrent
End Get
End Property
Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Single? Implements IAdvancedAuxiliaries.AA_SmartTractionAlternatorEfficiency
Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Single? _
Implements IAdvancedAuxiliaries.AA_SmartTractionAlternatorEfficiency
Get
Return M05.AlternatorsEfficiencyTractionOnResultCard
End Get
End Property
Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Single? Implements IAdvancedAuxiliaries.AA_SmartOverrunCurrent_Amps
Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Single? _
Implements IAdvancedAuxiliaries.AA_SmartOverrunCurrent_Amps
Get
Return M05.SmartOverrunCurrent
End Get
End Property
Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Single? Implements IAdvancedAuxiliaries.AA_SmartOverrunAlternatorEfficiency
Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Single? _
Implements IAdvancedAuxiliaries.AA_SmartOverrunAlternatorEfficiency
Get
Return M05.AlternatorsEfficiencyOverrunResultCard
End Get
End Property
Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As Single? Implements IAdvancedAuxiliaries.AA_CompressorFlowRate_LitrePerSec
Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As Single? _
Implements IAdvancedAuxiliaries.AA_CompressorFlowRate_LitrePerSec
Get
Return M4.GetFlowRate
End Get
......@@ -402,8 +409,9 @@ Public Class AdvancedAuxiliaries
Public ReadOnly Property AA_EngineIdleFlag As Integer? Implements IAdvancedAuxiliaries.AA_EngineIdleFlag
Get
Return If(signals.EngineSpeed <= _signals.EngineIdleSpeed AndAlso (Not signals.ClutchEngaged OrElse signals.InNeutral), 1, 0)
Return _
If _
(signals.EngineSpeed <= _signals.EngineIdleSpeed AndAlso (Not signals.ClutchEngaged OrElse signals.InNeutral), 1, 0)
End Get
End Property
......@@ -425,38 +433,50 @@ Public Class AdvancedAuxiliaries
End Get
End Property
Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Single Implements IAdvancedAuxiliaries.AuxiliaryPowerAtCrankWatts
Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Single _
Implements IAdvancedAuxiliaries.AuxiliaryPowerAtCrankWatts
Get
Return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankHVACMechanicals As Single? Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACMechanicals
Public ReadOnly Property AA_AveragePowerDemandCrankHVACMechanicals As Single? _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACMechanicals
Get
Return M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts()
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankHVACElectricals As Single? Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACElectricals
Public ReadOnly Property AA_AveragePowerDemandCrankHVACElectricals As Single? _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACElectricals
Get
Return M1.AveragePowerDemandAtCrankFromHVACElectricsWatts()
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankElectrics As Single? Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankElectrics
Public ReadOnly Property AA_AveragePowerDemandCrankElectrics As Single? _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankElectrics
Get
Return M2.GetAveragePowerAtCrankFromElectrics()
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankPneumatics As Single? Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankPneumatics
Public ReadOnly Property AA_AveragePowerDemandCrankPneumatics As Single? _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankPneumatics
Get
Return M3.GetAveragePowerDemandAtCrankFromPneumatics()
End Get
End Property
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOff As Single? Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOff
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOff As Single? _
Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOff
Get
Return M9.TotalCycleFuelConsumptionCompressorOffContinuously
End Get
End Property
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOn As Single? Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOn
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOn As Single? _
Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOn
Get
Return M9.TotalCycleFuelConsumptionCompressorOnContinuously
End Get
......@@ -471,45 +491,52 @@ Public Class AdvancedAuxiliaries
Return M12.INTRP1
End Get
End Property
Public ReadOnly Property AA_D_M10_INTERP2 As Single Implements IAdvancedAuxiliaries.AA_D_M12_INTERP2
Get
Return M12.INTRP2
End Get
End Property
Public ReadOnly Property AA_D_M12_P1X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P1X
Get
Return M12.P1X
End Get
End Property
Public ReadOnly Property AA_D_M12_P1Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P1Y
Get
Return M12.P1Y
End Get
End Property
Public ReadOnly Property AA_D_M12_P2X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P2X
Get
Return M12.P2X
End Get
End Property
Public ReadOnly Property AA_D_M12_P2Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P2Y
Get
Return M12.P2Y
End Get
End Property
Public ReadOnly Property AA_D_M12_P3X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P3X
Get
Return M12.P3X
End Get
End Property
Public ReadOnly Property AA_D_M12_P3Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P3Y
Get
Return M12.P3Y
End Get
End Property
Public ReadOnly Property AA_D_M12_XTAIN As Single Implements IAdvancedAuxiliaries.AA_D_M12_XTAIN
Get
Return M12.XTAIN
End Get
End Property
End Class
......@@ -14,7 +14,6 @@ Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M11
Implements IM11
......@@ -29,6 +28,7 @@ Namespace DownstreamModules
Private AG5 As Single
Private AG6 As Single
Private AG7 As Single
#End Region
#Region "Private Fields Assigned by Constructor."
......@@ -37,7 +37,7 @@ Namespace DownstreamModules
Private M3 As IM3_AveragePneumaticLoadDemand
Private M6 As IM6
Private M8 As IM8
Private fmap As IFUELMAP
Private fmap As IFuelConsumptionMap
Private signals As ISignals
#End Region
......@@ -48,99 +48,105 @@ Namespace DownstreamModules
If rpm < 1 Then rpm = 1
Return rpm / RPM_to_RadiansPerSecond
End Function
Private ReadOnly Property Sum1 As Single
Get
Return m6.OverrunFlag * m8.SmartElectricalAlternatorPowerGenAtCrank
End Get
End Property
Private ReadOnly Property Sum2 As Single
Get
Return m3.GetAveragePowerDemandAtCrankFromPneumatics + m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
End Get
End Property
Private ReadOnly Property Sum3 As Single
Get
Return m8.SmartElectricalAlternatorPowerGenAtCrank / Sum0(signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property Sum4 As Single
Get
Return Sum2 / Sum0(signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property Sum5 As Single
Get
Return Sum4 + Sum9
End Get
End Property
Private ReadOnly Property Sum6 As Single
Get
Return Sum3 + Sum5
End Get
End Property
Private ReadOnly Property Sum7 As Single
Get
'SCM 3_02
Dim intrp1 As Single = fmap.fFCdelaunay_Intp(signals.EngineSpeed, sum6)
Dim intrp1 As Single = fmap.GetFuelConsumption(sum6, signals.EngineSpeed)
intrp1 = If(Not Single.IsNaN(intrp1) AndAlso intrp1 > 0, intrp1, 0)
Return intrp1
End Get
End Property
Private ReadOnly Property Sum8 As Single
Get
'SCHM 3_2
Dim intrp2 As Single = fmap.fFCdelaunay_Intp(signals.EngineSpeed, sum5)
Dim intrp2 As Single = fmap.GetFuelConsumption(Sum5, signals.EngineSpeed)
intrp2 = If(Not Single.IsNaN(intrp2) AndAlso intrp2 > 0, intrp2, 0)
Return intrp2
End Get
End Property
Private ReadOnly Property Sum9 As Single
Get
Return signals.EngineDrivelineTorque + ((signals.PreExistingAuxPower * 1000) / Sum0(signals.EngineSpeed))
End Get
End Property
Private ReadOnly Property Sum10 As Single
Get
Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC \ Sum0(signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property Sum11 As Single
Get
Return Sum5 + Sum10
End Get
End Property
Private ReadOnly Property Sum12 As Single
Get
'SCHM 3_2
Dim intrp3 As Single = fmap.fFCdelaunay_Intp(signals.EngineSpeed, Sum11)
Dim intrp3 As Single = fmap.GetFuelConsumption(Sum11, signals.EngineSpeed)
intrp3 = If(Not Single.IsNaN(intrp3) AndAlso intrp3 > 0, intrp3, 0)
Return intrp3
End Get
End Property
'OUT1
Public ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Single Implements IM11.SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly
Public ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Single _
Implements IM11.SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly
Get
Return AG1
End Get
End Property
'OUT2
Public ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Single Implements IM11.SmartElectricalTotalCycleEletricalEnergyGenerated
Public ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Single _
Implements IM11.SmartElectricalTotalCycleEletricalEnergyGenerated
Get
Return AG2
End Get
......@@ -152,25 +158,29 @@ Namespace DownstreamModules
End Get
End Property
'OUT4
Public ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Single Implements IM11.TotalCycleFuelConsumptionSmartElectricalLoad
Public ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Single _
Implements IM11.TotalCycleFuelConsumptionSmartElectricalLoad
Get
Return AG4
End Get
End Property
'OUT5
Public ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Single Implements IM11.TotalCycleFuelConsumptionZeroElectricalLoad
Public ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Single _
Implements IM11.TotalCycleFuelConsumptionZeroElectricalLoad
Get
Return AG5
End Get
End Property
'OUT6
Public ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Single Implements IM11.StopStartSensitiveTotalCycleElectricalDemand
Public ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Single _
Implements IM11.StopStartSensitiveTotalCycleElectricalDemand
Get
Return AG6
End Get
End Property
'OUT7
Public ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Single Implements IM11.TotalCycleFuelConsuptionAverageLoads
Public ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Single _
Implements IM11.TotalCycleFuelConsuptionAverageLoads
Get
Return AG7
End Get
......@@ -192,7 +202,6 @@ Namespace DownstreamModules
AG5 = 0
AG6 = 0
AG7 = 0
End Sub
'Add to Aggregates dependent on cycle step time.
......@@ -214,11 +223,11 @@ Namespace DownstreamModules
AG4 += (stepTimeInSeconds * sum7 / 3600 * SW1)
AG5 += (stepTimeInSeconds * Sum8 / 3600 * SW1)
AG7 += (stepTimeInSeconds * Sum12 / 3600 * SW1)
End Sub
'Constructor
Public Sub New(m1 As IM1_AverageHVACLoadDemand, m3 As IM3_AveragePneumaticLoadDemand, m6 As IM6, m8 As IM8, fmap As IFUELMAP, signals As ISignals)
Public Sub New(m1 As IM1_AverageHVACLoadDemand, m3 As IM3_AveragePneumaticLoadDemand, m6 As IM6, m8 As IM8,
fmap As IFuelConsumptionMap, signals As ISignals)
Me.M1 = m1
Me.M3 = m3
......@@ -226,13 +235,8 @@ Namespace DownstreamModules
Me.M8 = m8
Me.fmap = fmap
Me.signals = signals
End Sub
End Class
End Namespace
......@@ -14,7 +14,6 @@ Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M9
Implements IM9
Private Const RPM_TO_RADS_PER_SECOND As Single = 9.55F
......@@ -31,13 +30,14 @@ Namespace DownstreamModules
Private _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate As Single
#End Region
#Region "Constructor Requirements"
Private M1 As IM1_AverageHVACLoadDemand
Private M4 As IM4_AirCompressor
Private M6 As IM6
Private M8 As IM8
Private FMAP As IFUELMAP
Private FMAP As IFuelConsumptionMap
Private PSAC As IPneumaticsAuxilliariesConfig
Private Signals As ISignals
......@@ -46,25 +46,29 @@ Namespace DownstreamModules
#Region "Class Outputs"
'OUT 1
Public ReadOnly Property LitresOfAirCompressorOnContinually As Single Implements IM9.LitresOfAirCompressorOnContinually
Public ReadOnly Property LitresOfAirCompressorOnContinually As Single _
Implements IM9.LitresOfAirCompressorOnContinually
Get
Return _LitresOfAirCompressorOnContinuallyAggregate
End Get
End Property
'OUT 2
Public ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As Single Implements IM9.LitresOfAirCompressorOnOnlyInOverrun
Public ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As Single _
Implements IM9.LitresOfAirCompressorOnOnlyInOverrun
Get
Return _LitresOfAirCompressorOnOnlyInOverrunAggregate
End Get
End Property
'OUT 3
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Single Implements IM9.TotalCycleFuelConsumptionCompressorOffContinuously
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Single _
Implements IM9.TotalCycleFuelConsumptionCompressorOffContinuously
Get
Return _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate
End Get
End Property
'OUT 4
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Single Implements IM9.TotalCycleFuelConsumptionCompressorOnContinuously
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Single _
Implements IM9.TotalCycleFuelConsumptionCompressorOnContinuously
Get
Return _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate
End Get
......@@ -78,7 +82,6 @@ Namespace DownstreamModules
If rpm < 1 Then rpm = 1
Return rpm / RPM_TO_RADS_PER_SECOND
End Function
Private ReadOnly Property S1 As Single
......@@ -86,87 +89,99 @@ Namespace DownstreamModules
Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC + M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
End Get
End Property
Private ReadOnly Property S2 As Single
Get
If S0(Signals.EngineSpeed) = 0 Then Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
If S0(Signals.EngineSpeed) = 0 Then _
Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
Return M4.GetPowerCompressorOn / S0(Signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property S3 As Single
Get
If S0(Signals.EngineSpeed) = 0 Then Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
If S0(Signals.EngineSpeed) = 0 Then _
Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
Return M4.GetPowerCompressorOff / S0(Signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property S4 As Single
Get
If S0(Signals.EngineSpeed) = 0 Then Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
If S0(Signals.EngineSpeed) = 0 Then _
Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
Return S1 / S0(Signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property S5 As Single
Get
Return S2 + S14
End Get
End Property
Private ReadOnly Property S6 As Single
Get
Return S14 + S3
End Get
End Property
Private ReadOnly Property S7 As Single
Get
Return S4 + S5
End Get
End Property
Private ReadOnly Property S8 As Single
Get
Return S4 + S6
End Get
End Property
Private ReadOnly Property S9 As Single
Get
Return M4.GetFlowRate * M6.OverrunFlag * M8.CompressorFlag
End Get
End Property
Private ReadOnly Property S10 As Single
Get
Return S13 * PSAC.OverrunUtilisationForCompressionFraction
End Get
End Property
Private ReadOnly Property S11 As Single
Get
'SCHM 3_02
Dim int1 As Single = FMAP.fFCdelaunay_Intp(Signals.EngineSpeed, s7)
Dim int1 As Single = FMAP.GetFuelConsumption(S7, Signals.EngineSpeed)
int1 = If(int1 > 0 AndAlso Not Single.IsNaN(int1), int1, 0)
Return int1 / 3600
End Get
End Property
Private ReadOnly Property S12 As Single
Get
'SCHM 3_02
Dim int2 As Single = FMAP.fFCdelaunay_Intp(Signals.EngineSpeed, s8)
Dim int2 As Single = FMAP.GetFuelConsumption(S8, Signals.EngineSpeed)
int2 = If(int2 > 0 AndAlso Not Single.IsNaN(int2), int2, 0)
Return int2 / 3600
End Get
End Property
Private ReadOnly Property S13 As Single
Get
Return (Signals.ClutchEngaged * Not (Signals.InNeutral)) * S9
Return (Signals.ClutchEngaged *
Not (Signals.InNeutral)) * S9
End Get
End Property
Private ReadOnly Property S14 As Single
Get
Return Signals.EngineDrivelineTorque + ((Signals.PreExistingAuxPower * 1000) / S0(Signals.EngineSpeed))
End Get
End Property
......@@ -183,20 +198,21 @@ Namespace DownstreamModules
_LitresOfAirCompressorOnOnlyInOverrunAggregate = 0
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate = 0
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate = 0
End Sub
Public Sub CycleStep(Optional stepTimeInSeconds As Single = 0.0) Implements IM9.CycleStep
If Signals.EngineStopped Then Return
_LitresOfAirCompressorOnContinuallyAggregate += stepTimeInSeconds * M4.GetFlowRate * sw1
_LitresOfAirCompressorOnOnlyInOverrunAggregate += stepTimeInSeconds * s10 * sw1
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate += stepTimeInSeconds * s11 * sw1
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate += stepTimeInSeconds * s12 * sw1
_LitresOfAirCompressorOnContinuallyAggregate += stepTimeInSeconds * M4.GetFlowRate * SW1
_LitresOfAirCompressorOnOnlyInOverrunAggregate += stepTimeInSeconds * S10 * SW1
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate += stepTimeInSeconds * S11 * SW1
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate += stepTimeInSeconds * S12 * SW1
End Sub
'Constructor
Public Sub New(m1 As IM1_AverageHVACLoadDemand, m4 As IM4_AirCompressor, m6 As IM6, m8 As IM8, fmap As IFUELMAP, psac As IPneumaticsAuxilliariesConfig, signals As ISignals)
Public Sub New(m1 As IM1_AverageHVACLoadDemand, m4 As IM4_AirCompressor, m6 As IM6, m8 As IM8,
fmap As IFuelConsumptionMap, psac As IPneumaticsAuxilliariesConfig, signals As ISignals)
Me.M1 = m1
Me.M4 = m4
Me.M6 = m6
......@@ -207,12 +223,9 @@ Namespace DownstreamModules
End Sub
'Auxiliary Event
Public Event AuxiliaryEvent(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Implements IAuxiliaryEvent.AuxiliaryEvent
Public Event AuxiliaryEvent(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) _
Implements IAuxiliaryEvent.AuxiliaryEvent
End Class
End Namespace
......@@ -11,7 +11,7 @@
Imports System.Collections.Generic
Public Class cMAP
Implements IFUELMAP
Implements IFuelConsumptionMap
Private LnU As List(Of Single)
Private LTq As List(Of Single)
......@@ -30,7 +30,7 @@ Implements IFUELMAP
FuelMap = New cDelaunayMap
End Sub
Public Function ReadFile(Optional ByVal ShowMsg As Boolean = True) As Boolean Implements IFUELMAP.ReadFile
Public Function ReadFile(Optional ByVal ShowMsg As Boolean = True) As Boolean
Dim file As cFile_V3
Dim line As String()
Dim nU As Double
......@@ -114,10 +114,9 @@ lbEr:
file = Nothing
Return False
End Function
Public Function Triangulate() As Boolean Implements IFUELMAP.Triangulate
Public Function Triangulate() As Boolean
Dim i As Integer
Dim MsgSrc As String
......@@ -130,11 +129,10 @@ lbEr:
Next
Return FuelMap.Triangulate()
End Function
Public Function fFCdelaunay_Intp(ByVal nU As Single, ByVal Tq As Single) As Single Implements IFUELMAP.fFCdelaunay_Intp
Public Function fFCdelaunay_Intp(ByVal nU As Single, ByVal Tq As Single) As Single
Dim val As Single
val = FuelMap.Intpol(nU, Tq)
......@@ -145,12 +143,11 @@ lbEr:
Else
Return val
End If
End Function
#Region "Properties"
Public Property FilePath() As String Implements IFUELMAP.FilePath
Public Property FilePath() As String
Get
Return sFilePath
End Get
......@@ -159,25 +156,25 @@ lbEr:
End Set
End Property
Public ReadOnly Property MapDim As Integer Implements IFUELMAP.MapDim
Public ReadOnly Property MapDim As Integer
Get
Return iMapDim
End Get
End Property
Public ReadOnly Property Tq As List(Of Single) Implements IFUELMAP.Tq
Public ReadOnly Property Tq As List(Of Single)
Get
Return LTq
End Get
End Property
Public ReadOnly Property FC As List(Of Single) Implements IFUELMAP.FC
Public ReadOnly Property FC As List(Of Single)
Get
Return lFC
End Get
End Property
Public ReadOnly Property nU As List(Of Single) Implements IFUELMAP.nU
Public ReadOnly Property nU As List(Of Single)
Get
Return LnU
End Get
......@@ -185,14 +182,10 @@ lbEr:
#End Region
Public Function GetFuelConsumption(torque As Double, angularVelocity As Double) As Double _
Implements IFuelConsumptionMap.GetFuelConsumption
Return fFCdelaunay_Intp(angularVelocity, torque)
End Function
End Class
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment