From 5b85adb4ec2a9add418d0457613780089b13c90e Mon Sep 17 00:00:00 2001 From: "Zarb, Glenn" <STC\GZ1> Date: Tue, 21 Jul 2015 15:29:53 +0000 Subject: [PATCH] Alternator seperate calculation for Pre run to improve performance git-tfs-id: [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C2021 --- AdvancedAuxiliaryInterfaces/ISignals.vb | 8 +++- AdvancedAuxiliaryInterfaces/Signals.vb | 1 + VECTO/MODcalc/cPower.vb | 4 +- .../VectoAuxiliaries/AdvancedAuxiliaries.vb | 2 +- .../Electrics/CombinedAlternator.vb | 39 ++++++++++++++++--- 5 files changed, 45 insertions(+), 9 deletions(-) diff --git a/AdvancedAuxiliaryInterfaces/ISignals.vb b/AdvancedAuxiliaryInterfaces/ISignals.vb index d5d792df2b..258df85404 100644 --- a/AdvancedAuxiliaryInterfaces/ISignals.vb +++ b/AdvancedAuxiliaryInterfaces/ISignals.vb @@ -144,5 +144,11 @@ Public Interface ISignals ''' <returns></returns> ''' <remarks></remarks> Property StoredEnergyEfficiency As Single - + ''' <summary> + ''' Running Calc + ''' </summary> + ''' <value></value> + ''' <returns></returns> + ''' <remarks></remarks> + Property RunningCalc As Boolean End Interface diff --git a/AdvancedAuxiliaryInterfaces/Signals.vb b/AdvancedAuxiliaryInterfaces/Signals.vb index 4f4ff6aa4b..4045539b2a 100644 --- a/AdvancedAuxiliaryInterfaces/Signals.vb +++ b/AdvancedAuxiliaryInterfaces/Signals.vb @@ -51,6 +51,7 @@ Implements ISignals Public Property EngineIdleSpeed As Single Implements ISignals.EngineIdleSpeed Public Property PneumaticOverrunUtilisation As Single Implements ISignals.PneumaticOverrunUtilisation Public Property StoredEnergyEfficiency As Single Implements ISignals.StoredEnergyEfficiency + Public Property RunningCalc As Boolean Implements ISignals.RunningCalc End Class diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index d5d5d6a622..a5b184f000 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -2568,10 +2568,10 @@ lb10: 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.PreExistingAuxPower = mAAUX_Global.PreExistingAuxPower mAAUX_Global.advancedAuxModel.Signals.Idle = mAAUX_Global.Idle mAAUX_Global.advancedAuxModel.Signals.InNeutral = mAAUX_Global.InNeutral - + mAAUX_Global.advancedAuxModel.Signals.RunningCalc = mAAUX_Global.RunningCalc 'Power coming out of Advanced Model is in Watts. power = (advancedAuxModel.AuxiliaryPowerAtCrankWatts /1000) diff --git a/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb b/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb index f1920d28f5..fa6098b33f 100644 --- a/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb +++ b/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb @@ -91,7 +91,7 @@ Public Class AdvancedAuxiliaries Signals.SmartPneumatics = auxConfig.PneumaticUserInputsConfig.SmartAirCompression Signals.PneumaticOverrunUtilisation = auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction - alternatorMap = New CombinedAlternator(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.ElectricalUserInputsConfig.AlternatorMap)) + alternatorMap = New CombinedAlternator(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.ElectricalUserInputsConfig.AlternatorMap), Signals) actuationsMap = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.ActuationsMap)) diff --git a/VECTOAux/VectoAuxiliaries/Electrics/CombinedAlternator.vb b/VECTOAux/VectoAuxiliaries/Electrics/CombinedAlternator.vb index 209920fa5e..8284637754 100644 --- a/VECTOAux/VectoAuxiliaries/Electrics/CombinedAlternator.vb +++ b/VECTOAux/VectoAuxiliaries/Electrics/CombinedAlternator.vb @@ -23,7 +23,8 @@ Public Class CombinedAlternator Private OriginalAlternators As New List(Of IAlternator) Private FilePath As String Private altSignals As ICombinedAlternatorSignals - + Private Signals As ISignals + Private AverageAlternatorsEfficiency As AlternatorMapValues 'Interface Implementation Public Function GetEfficiency(ByVal CrankRPM As Single, ByVal Amps As Single) As AlternatorMapValues Implements IAlternatorMap.GetEfficiency @@ -31,7 +32,15 @@ Public Class CombinedAlternator altSignals.CrankRPM = CrankRPM altSignals.CurrentDemandAmps = Amps / Alternators.Count - Dim alternatorMapValues As New AlternatorMapValues(Convert.ToSingle(Alternators.Average(Function(a) a.Efficiency) / 100)) + Dim alternatorMapValues As AlternatorMapValues = Nothing + + If Signals Is Nothing OrElse Signals.RunningCalc Then + 'If running calc cycle get efficiency from interpolation function + alternatorMapValues = New AlternatorMapValues(Convert.ToSingle(Alternators.Average(Function(a) a.Efficiency) / 100)) + Else + 'If running Pre calc cycle get an average of inputs + alternatorMapValues = AverageAlternatorsEfficiency + End If If alternatorMapValues.Efficiency <= 0 Then alternatorMapValues = New AlternatorMapValues(0.01) @@ -66,9 +75,10 @@ Public Class CombinedAlternator End Function 'Constructors - Public Sub New(filePath As String) + Public Sub New(filePath As String, Optional signals As ISignals = Nothing) Dim feedback As String = String.Empty + Me.Signals = signals If Not FilePathUtils.ValidateFilePath(filePath, ".aalt", feedback) Then Throw New ArgumentException(String.Format("Combined Alternator requires a valid .AALT filename. : {0}", feedback)) @@ -85,13 +95,32 @@ Public Class CombinedAlternator If File.Exists(filePath) AndAlso InitialiseMap(filePath) Then Initialise() Else - 'Create Default Map CreateDefaultMap() Initialise() - End If + ' Calculate alternators average which is used only in the pre-run + Dim efficiencySum As Single + Dim efficiencyAverage As Single + + For Each alt As IAlternator In Alternators + efficiencySum += alt.InputTable2000.ElementAt(1).Eff + efficiencySum += alt.InputTable2000.ElementAt(2).Eff + efficiencySum += alt.InputTable2000.ElementAt(3).Eff + + efficiencySum += alt.InputTable4000.ElementAt(1).Eff + efficiencySum += alt.InputTable4000.ElementAt(2).Eff + efficiencySum += alt.InputTable4000.ElementAt(3).Eff + + efficiencySum += alt.InputTable6000.ElementAt(1).Eff + efficiencySum += alt.InputTable6000.ElementAt(2).Eff + efficiencySum += alt.InputTable6000.ElementAt(3).Eff + Next + + efficiencyAverage = efficiencySum / (Alternators.Count * 9) + AverageAlternatorsEfficiency = New AlternatorMapValues(efficiencyAverage / 100) + End Sub 'Helpers -- GitLab