diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb index 19067c0c48262b70f7696477e8852505b33e26f7..cfbd53e137f4f6868fb954dc40df0a6ef4f4bdf2 100644 --- a/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb +++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb @@ -1,58 +1,64 @@  +Imports Microsoft.JScript Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore.BusAuxiliaries.Interfaces.DownstreamModules Imports TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules Public Class M1_Mock - Implements IM1_AverageHVACLoadDemand - - Public _AveragePowerDemandAtAlternatorFromHVACElectricsWatts As Watt - Public _AveragePowerDemandAtCrankFromHVACElectricsWatts As Watt - Public _AveragePowerDemandAtCrankFromHVACMechanicalsWatts As Watt - 'Public _HVACFuelingLitresPerHour As KilogramPerSecond - - Public ReadOnly Property AveragePowerDemandAtAlternatorFromHVACElectrics As Watt _ - Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtAlternatorFromHVACElectrics - Get - Return _AveragePowerDemandAtAlternatorFromHVACElectricsWatts - End Get - - End Property - - Public Function AveragePowerDemandAtCrankFromHVACElectrics() As Watt _ - Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACElectrics - Return _AveragePowerDemandAtCrankFromHVACElectricsWatts - End Function - - Public Function AveragePowerDemandAtCrankFromHVACMechanicals() As Watt _ - Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACMechanicals - Return _AveragePowerDemandAtCrankFromHVACMechanicalsWatts - End Function - - 'Public Function HVACFueling() As KilogramPerSecond _ - ' Implements IM1_AverageHVACLoadDemand.HVACFueling - ' Return _HVACFuelingLitresPerHour - 'End Function - - - Public Sub New() - End Sub - - Public Sub New(AveragePowerDemandAtAlternatorFromHVACElectricsWatts As Double, - AveragePowerDemandAtCrankFromHVACElectricsWatts As Double, - AveragePowerDemandAtCrankFromHVACMechanicalsWatts As Double, - HVACFuelingLitresPerHour As Double) - - 'Assign Values - _AveragePowerDemandAtAlternatorFromHVACElectricsWatts = - AveragePowerDemandAtAlternatorFromHVACElectricsWatts.SI(Of Watt)() - _AveragePowerDemandAtCrankFromHVACElectricsWatts = AveragePowerDemandAtCrankFromHVACElectricsWatts.SI(Of Watt)() - _AveragePowerDemandAtCrankFromHVACMechanicalsWatts = AveragePowerDemandAtCrankFromHVACMechanicalsWatts.SI(Of Watt)() - '_HVACFuelingLitresPerHour = HVACFuelingLitresPerHour.SI(Of KilogramPerSecond)() _ - '(Of LiterPerHour)() - End Sub + Implements IM1_AverageHVACLoadDemand + + Public _AveragePowerDemandAtAlternatorFromHVACElectricsWatts As Watt + Public _AveragePowerDemandAtCrankFromHVACElectricsWatts As Watt + Public _AveragePowerDemandAtCrankFromHVACMechanicalsWatts As Watt + 'Public _HVACFuelingLitresPerHour As KilogramPerSecond + + Public ReadOnly Property AveragePowerDemandAtAlternatorFromHVACElectrics As Watt _ + Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtAlternatorFromHVACElectrics + Get + Return _AveragePowerDemandAtAlternatorFromHVACElectricsWatts + End Get + End Property + + Public ReadOnly Property AveragePowerDemandAtCrankFromHVACElectrics As Watt _ + Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACElectrics + get + Return _AveragePowerDemandAtCrankFromHVACElectricsWatts + End get + End Property + + Public ReadOnly Property AveragePowerDemandAtCrankFromHVACMechanicals As Watt _ + Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACMechanicals + get + Return _AveragePowerDemandAtCrankFromHVACMechanicalsWatts + end get + End property + + 'Public Function HVACFueling() As KilogramPerSecond _ + ' Implements IM1_AverageHVACLoadDemand.HVACFueling + ' Return _HVACFuelingLitresPerHour + 'End Function + + + Public Sub New() + End Sub + + Public Sub New(AveragePowerDemandAtAlternatorFromHVACElectricsWatts As Double, + AveragePowerDemandAtCrankFromHVACElectricsWatts As Double, + AveragePowerDemandAtCrankFromHVACMechanicalsWatts As Double, + HVACFuelingLitresPerHour As Double) + + 'Assign Values + _AveragePowerDemandAtAlternatorFromHVACElectricsWatts = + AveragePowerDemandAtAlternatorFromHVACElectricsWatts.SI (Of Watt)() + _AveragePowerDemandAtCrankFromHVACElectricsWatts = + AveragePowerDemandAtCrankFromHVACElectricsWatts.SI (Of Watt)() + _AveragePowerDemandAtCrankFromHVACMechanicalsWatts = + AveragePowerDemandAtCrankFromHVACMechanicalsWatts.SI (Of Watt)() + '_HVACFuelingLitresPerHour = HVACFuelingLitresPerHour.SI(Of KilogramPerSecond)() _ + '(Of LiterPerHour)() + End Sub Public Sub ResetCalculations() Implements IAbstractModule.ResetCalculations Throw New NotImplementedException diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb index 60127173d3b13a3d535cd05e5556ef63a1f055e8..2c59631023d50ee4f8bbdc776170f51e35da93f4 100644 --- a/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb +++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb @@ -4,38 +4,40 @@ Imports TUGraz.VectoCore.BusAuxiliaries.Interfaces.DownstreamModules Imports TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules Public Class M3_Mock - Implements IM3_AveragePneumaticLoadDemand + Implements IM3_AveragePneumaticLoadDemand - Public _GetAveragePowerDemandAtCrankFromPneumatics As Watt - Public _TotalAirConsumedPerCycle As NormLiterPerSecond - Private _totalAirDemand As NormLiter + Public _GetAveragePowerDemandAtCrankFromPneumatics As Watt + Public _TotalAirConsumedPerCycle As NormLiterPerSecond + Private _totalAirDemand As NormLiter - Public Function GetAveragePowerDemandAtCrankFromPneumatics() As Watt _ - Implements IM3_AveragePneumaticLoadDemand.GetAveragePowerDemandAtCrankFromPneumatics - Return _GetAveragePowerDemandAtCrankFromPneumatics - End Function + Public Function GetAveragePowerDemandAtCrankFromPneumatics() As Watt _ + Implements IM3_AveragePneumaticLoadDemand.GetAveragePowerDemandAtCrankFromPneumatics + Return _GetAveragePowerDemandAtCrankFromPneumatics + End Function - Public ReadOnly Property TotalAirDemand As NormLiter Implements IM3_AveragePneumaticLoadDemand.TotalAirDemand - Get - Return _totalAirDemand - End Get - End Property + Public ReadOnly Property TotalAirDemand As NormLiter Implements IM3_AveragePneumaticLoadDemand.TotalAirDemand + Get + Return _totalAirDemand + End Get + End Property - Public Function AverageAirConsumed() As NormLiterPerSecond _ - Implements IM3_AveragePneumaticLoadDemand.AverageAirConsumed - Return _TotalAirConsumedPerCycle - End Function + Public ReadOnly Property AverageAirConsumed() As NormLiterPerSecond _ + Implements IM3_AveragePneumaticLoadDemand.AverageAirConsumed + get + Return _TotalAirConsumedPerCycle + end get + End property - Public Sub New() - End Sub + Public Sub New() + End Sub - Public Sub New(GetAveragePowerDemandAtCrankFromPneumatics As Double, TotalAirConsumedPerCycle As Double) + Public Sub New(GetAveragePowerDemandAtCrankFromPneumatics As Double, TotalAirConsumedPerCycle As Double) - _GetAveragePowerDemandAtCrankFromPneumatics = GetAveragePowerDemandAtCrankFromPneumatics.SI(Of Watt)() - _TotalAirConsumedPerCycle = TotalAirConsumedPerCycle.SI(Of NormLiterPerSecond)() - End Sub + _GetAveragePowerDemandAtCrankFromPneumatics = GetAveragePowerDemandAtCrankFromPneumatics.SI (Of Watt)() + _TotalAirConsumedPerCycle = TotalAirConsumedPerCycle.SI (Of NormLiterPerSecond)() + End Sub Public Sub ResetCalculations() Implements IAbstractModule.ResetCalculations Throw New NotImplementedException diff --git a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj index 66f4baf353191f69513f14df048783468d53c81a..0bd4c2c6c484408e9b6011a9bb1c06b5ed90989b 100644 --- a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj +++ b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj @@ -66,6 +66,7 @@ <OptionInfer>On</OptionInfer> </PropertyGroup> <ItemGroup> + <Reference Include="Microsoft.JScript" /> <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> <Reference Include="Moq, Version=4.2.1510.2205, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL"> <HintPath>..\..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll</HintPath> diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs index b2da7f68ec57b1ef933b37c7e191a73f33718636..f6c4aadbdf60637d2438a93888e85717588384e6 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs @@ -36,7 +36,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries { IVehicleData VehicleData { get; } - IFuelConsumptionMap FuelMap { get; } + //IFuelConsumptionMap FuelMap { get; } ISignals Signals { get; } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs index dc58f61dc580cc08391d1a5b2eb4b6b49761b7b2..abd4c09068860820c6aa120421064cc31e74779b 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs @@ -23,404 +23,417 @@ using TUGraz.VectoCore.Models.BusAuxiliaries.Util; namespace TUGraz.VectoCore.Models.BusAuxiliaries { - /// <summary> - /// ''' Main entry point for the advanced auxiliary module. - /// ''' This class represents slide number 17 titled Calculations of Cycle FC accounting for Smart Auxiliaries. - /// ''' </summary> - /// ''' <remarks></remarks> - public class BusAuxiliaries : IBusAuxiliaries - { - protected internal IAuxiliaryConfig auxConfig; - - // Supporting classes which may generate event messages - //private ICompressorMap compressorMap; - - //private SSMTOOL ssmTool; - //private SSMTOOL ssmToolModule14; - - //private IAlternatorMap alternatorMap; - - private IFuelConsumptionMap fuelMap; - - // Classes which compose the model. - private IM0_NonSmart_AlternatorsSetEfficiency M0; - - private IM0_5_SmartAlternatorSetEfficiency M0_5; - private IM1_AverageHVACLoadDemand M1; - private IM2_AverageElectricalLoadDemand M2; - private IM3_AveragePneumaticLoadDemand M3; - private IM4_AirCompressor M4; - private IM5_SmartAlternatorSetGeneration M5; - private IM6 M6; - private IM7 M7; - private IM8 M8; - //private IM9 M9; - //private IM10 M10; - //private IM11 M11; - //private IM12 M12; - //private IM13 M13; - //private IM14 M14; - - - public BusAuxiliaries() - { - Signals = new Signals(); - } - - public void Initialise( - IAuxiliaryConfig auxCfg, IFuelProperties fuelProperties /*string IAuxPath, string vectoFilePath*/) - { - Signals.CurrentCycleTimeInSeconds = 0; - auxConfig = auxCfg; //new AuxiliaryConfig(auxPath); - - // Pass some signals from config to Signals. ( These are stored in the configuration but shared in the signal distribution around modules ) - //Signals.SmartElectrics = auxConfig.ElectricalUserInputsConfig.SmartElectrical; - - //Signals.StoredEnergyEfficiency = auxConfig.ElectricalUserInputsConfig.StoredEnergyEfficiency; - //Signals.SmartPneumatics = auxConfig.PneumaticUserInputsConfig.SmartAirCompression; - - //Signals.PneumaticOverrunUtilisation = auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction; - - //var alternatorMap = auxConfig.ElectricalUserInputsConfig.AlternatorMap; - var compressorMap = auxConfig.PneumaticUserInputsConfig.CompressorMap; - - // 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 = auxCfg.FuelMap; - - // SSM HVAC - //var ssmPath = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.SSMFilePath); - //var BusDatabase = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.BusDatabasePath); - var ssmTool = new SSMTOOL(auxConfig.SSMInputs); - - - M0 = new M00Impl(auxConfig.ElectricalUserInputsConfig, Signals, ssmTool.ElectricalWAdjusted); - - var M0_5tmp = new M0_5Impl( - M0, auxConfig.ElectricalUserInputsConfig, Signals); - M0_5 = M0_5tmp; - - M1 = new M01Impl(M0, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, - auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, ssmTool.ElectricalWAdjusted, ssmTool.MechanicalWBaseAdjusted); - - M2 = new M02Impl(M0, auxConfig.ElectricalUserInputsConfig); - - M3 = new M03Impl(auxConfig, compressorMap, auxCfg.Actuations, Signals); - - M4 = new M04Impl( - compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio, - auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals); - M5 = new M05Impl( - M0_5tmp, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, - auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency); - M6 = new M06Impl(auxCfg.ElectricalUserInputsConfig, M1, M2, M3, M4, M5, Signals); - M7 = new M07Impl(M5, M6, Signals); - M8 = new M08Impl(auxConfig, M1, M6, M7, Signals); - - //M9 = new M09Impl(M1, M4, M6, M8, fuelMap, auxConfig.PneumaticAuxillariesConfig, Signals); - //M10 = new M10Impl(M3, M9); - //M11 = new M11Impl(M1, M3, M6, M8, fuelMap, Signals); - //M12 = new M12Impl(M10, M11); - //M13 = new M13Impl(auxCfg, M10, M11, M12, Signals); - - // This duplicate SSM is being created for use in M14 as its properties will be dynamically changed at that point - // to honour EngineWaste Heat Usage in Fueling calculations. - //var ssmToolModule14 = new SSMTOOL(auxCfg.SSMInputs); - - //M14 = new M14Impl(M13, ssmToolModule14, fuelProperties, Signals); - } - - - public ISignals Signals { get; set; } - - public Watt ElectricPowerConsumerSum - { - get { return M1.AveragePowerDemandAtAlternatorFromHVACElectrics + M2.AveragePowerDemandAtAlternatorFromElectrics; } - } - - public Watt ElectricPowerGenerated - { - get { - if (!auxConfig.ElectricalUserInputsConfig.SmartElectrical) { - return ElectricPowerConsumerSum; - } - - var inIdle = Signals.Idle && (!Signals.ClutchEngaged || Signals.InNeutral); - return - (M6.OverrunFlag && Signals.ClutchEngaged && !Signals.InNeutral ? M6.SmartElecOnlyAltPowerGenAtCrank : 0.SI<Watt>()) - + (inIdle ? M5.AlternatorsGenerationPowerAtCrankIdle() : M5.AlternatorsGenerationPowerAtCrankTractionOn()) * - auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency * - auxConfig.ElectricalUserInputsConfig.AlternatorMap.GetEfficiency(Signals.EngineSpeed, 0.SI<Ampere>()); - } - } - - public NormLiter PSDemandConsumer - { - get { return M3.AverageAirConsumed() * Signals.SimulationInterval; } - } - - public NormLiter PSAirGenerated - { - get { - if (!auxConfig.PneumaticUserInputsConfig.SmartAirCompression) { - return PSDemandConsumer; - } - - return M6.OverrunFlag && M8.CompressorFlag && Signals.ClutchEngaged && !Signals.InNeutral - ? M4.GetFlowRate() * - auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction - * Signals.SimulationInterval - : PSDemandConsumer; - } - } - - public NormLiter PSAirGeneratedAlwaysOn - { - get { return M4.GetFlowRate() * Signals.SimulationInterval; } - } - - public NormLiter PSAirGeneratedDrag - { - get { - if (!auxConfig.PneumaticUserInputsConfig.SmartAirCompression) { - return 0.SI<NormLiter>(); - } - - return (M6.OverrunFlag && M8.CompressorFlag && Signals.ClutchEngaged && !Signals.InNeutral - ? M4.GetFlowRate() * - auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction - : 0.SI<NormLiterPerSecond>()) * Signals.SimulationInterval; - } - } - - public Watt PSPowerDemandAirGenerated - { - get { - if (!auxConfig.PneumaticUserInputsConfig.SmartAirCompression) { - return M3.GetAveragePowerDemandAtCrankFromPneumatics(); - } - - return M7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank; - } - } - - public Watt PSPowerCompressorAlwaysOn - { - get { return M4.GetPowerCompressorOn(); } - } - - public Watt PSPowerCompressorDragOnly - { - get { return M4.GetPowerCompressorOff(); } - } - - public Watt HVACMechanicalPowerConsumer - { - get { return M1.AveragePowerDemandAtCrankFromHVACMechanicals(); } - } - - public Watt HVACMechanicalPowerGenerated - { - get { return M1.AveragePowerDemandAtCrankFromHVACMechanicals(); } - } - - public Watt HVACElectricalPowerConsumer - { - get { return M1.AveragePowerDemandAtAlternatorFromHVACElectrics; } - } - - public void CycleStep(Second seconds) - { - try { - //M9.CycleStep(seconds); - //M10.CycleStep(seconds); - //M11.CycleStep(seconds); - - Signals.CurrentCycleTimeInSeconds += seconds.Value(); - } catch (Exception ex) { - //MessageBox.Show("Exception: " + ex.Message + " Stack Trace: " + ex.StackTrace); - throw ex; - } - } - - public bool Running - { - get { throw new NotImplementedException(); } - } - - //public bool RunStart(IAuxiliaryConfig auxCfg, IFuelProperties fuelProperties) - //{ - // try { - // Initialise(auxCfg, fuelProperties); - // } catch (Exception) { - // return false; - // } - - // return true; - //} - - public bool RunStop(ref string message) - { - throw new NotImplementedException(); - } - - public void ResetCalculations() - { - var modules = new List<IAbstractModule>() { M0, M0_5, M1, M2, M3, M4, M5, M6, M7, M8 }; - foreach (var moduel in modules) - moduel.ResetCalculations(); - } - - //public Kilogram TotalFuel - //{ - // get { - // if (M13 != null) - // return M14.TotalCycleFC; - // else - // return 0.SI<Kilogram>(); - // } - //} - - //public Liter TotalFuelLITRES - //{ - // get { - // if (M14 != null) - // return M14.TotalCycleFCLitres; - // else - // return 0.SI<Liter>(); - // } - //} - - public string AuxiliaryName - { - get { return "BusAuxiliaries"; } - } - - public string AuxiliaryVersion - { - get { return "Version 1.0 Beta"; } - } - - - // Helpers - - - //public bool ValidateAAUXFile(string filePath, ref string message) - //{ - // var validResult = FilePathUtils.ValidateFilePath(filePath, ".aaux", ref message); - - // return validResult; - //} - - // Diagnostics outputs for testing purposes in Vecto. - // Eventually this can be removed or rendered non effective to reduce calculation load on the model. - //public double AA_NonSmartAlternatorsEfficiency - //{ - // get { return M0.AlternatorsEfficiency; } - //} - - //public Ampere AA_SmartIdleCurrent_Amps - //{ - // get { return M0_5.SmartIdleCurrent; } - //} - - //public double AA_SmartIdleAlternatorsEfficiency - //{ - // get { return M0_5.AlternatorsEfficiencyIdleResultCard; } - //} - - //public Ampere AA_SmartTractionCurrent_Amps - //{ - // get { return M0_5.SmartTractionCurrent; } - //} - - //public double AA_SmartTractionAlternatorEfficiency - //{ - // get { return M0_5.AlternatorsEfficiencyTractionOnResultCard; } - //} - - //public Ampere AA_SmartOverrunCurrent_Amps - //{ - // get { return M0_5.SmartOverrunCurrent; } - //} - - //public double AA_SmartOverrunAlternatorEfficiency - //{ - // get { return M0_5.AlternatorsEfficiencyOverrunResultCard; } - //} - - //public NormLiterPerSecond AA_CompressorFlowRate_LitrePerSec - //{ - // get { return M4.GetFlowRate(); } - //} - - //public bool AA_OverrunFlag - //{ - // get { return M6.OverrunFlag; } - //} - - //public int? AA_EngineIdleFlag - //{ - // get { - // return Signals.EngineSpeed <= Signals.EngineIdleSpeed && (!Signals.ClutchEngaged || Signals.InNeutral) ? 1 : 0; - // } - //} - - //public bool AA_CompressorFlag - //{ - // get { return M8.CompressorFlag; } - //} - - //public Kilogram AA_TotalCycleFC_Grams - //{ - // get { return M14.TotalCycleFC; } - //} - - //public Liter AA_TotalCycleFC_Litres - //{ - // get { - // return M14.TotalCycleFCLitres; - // } - //} - - public Watt AuxiliaryPowerAtCrankWatts - { - get { return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries; } - } - - //public Watt AA_AveragePowerDemandCrankHVACMechanicals - //{ - // get { return M1.AveragePowerDemandAtCrankFromHVACMechanicals(); } - //} - - //public Watt AA_AveragePowerDemandCrankHVACElectricals - //{ - // get { return M1.AveragePowerDemandAtCrankFromHVACElectrics(); } - //} - - //public Watt AA_AveragePowerDemandCrankElectrics - //{ - // get { return M2.GetAveragePowerAtCrankFromElectrics(); } - //} - - //public Watt AA_AveragePowerDemandCrankPneumatics - //{ - // get { return M3.GetAveragePowerDemandAtCrankFromPneumatics(); } - //} - - //public Kilogram AA_TotalCycleFuelConsumptionCompressorOff - //{ - // get { return M9.TotalCycleFuelConsumptionCompressorOffContinuously; } - //} - - //public Kilogram AA_TotalCycleFuelConsumptionCompressorOn - //{ - // get { return M9.TotalCycleFuelConsumptionCompressorOnContinuously; } - //} - } + /// <summary> + /// ''' Main entry point for the advanced auxiliary module. + /// ''' This class represents slide number 17 titled Calculations of Cycle FC accounting for Smart Auxiliaries. + /// ''' </summary> + /// ''' <remarks></remarks> + public class BusAuxiliaries : IBusAuxiliaries + { + protected internal IAuxiliaryConfig auxConfig; + + // Supporting classes which may generate event messages + //private ICompressorMap compressorMap; + + //private SSMTOOL ssmTool; + //private SSMTOOL ssmToolModule14; + + //private IAlternatorMap alternatorMap; + + //private IFuelConsumptionMap fuelMap; + + // Classes which compose the model. + private IM0_NonSmart_AlternatorsSetEfficiency M0; + + private IM0_5_SmartAlternatorSetEfficiency M0_5; + private IM1_AverageHVACLoadDemand M1; + private IM2_AverageElectricalLoadDemand M2; + private IM3_AveragePneumaticLoadDemand M3; + private IM4_AirCompressor M4; + private IM5_SmartAlternatorSetGeneration M5; + private IM6 M6; + private IM7 M7; + private IM8 M8; + //private IM9 M9; + //private IM10 M10; + //private IM11 M11; + //private IM12 M12; + //private IM13 M13; + //private IM14 M14; + + + public BusAuxiliaries() + { + Signals = new Signals(); + } + + public void Initialise( + IAuxiliaryConfig auxCfg, IFuelProperties fuelProperties /*string IAuxPath, string vectoFilePath*/) + { + Signals.CurrentCycleTimeInSeconds = 0; + auxConfig = auxCfg; //new AuxiliaryConfig(auxPath); + + // Pass some signals from config to Signals. ( These are stored in the configuration but shared in the signal distribution around modules ) + //Signals.SmartElectrics = auxConfig.ElectricalUserInputsConfig.SmartElectrical; + + //Signals.StoredEnergyEfficiency = auxConfig.ElectricalUserInputsConfig.StoredEnergyEfficiency; + //Signals.SmartPneumatics = auxConfig.PneumaticUserInputsConfig.SmartAirCompression; + + //Signals.PneumaticOverrunUtilisation = auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction; + + //var alternatorMap = auxConfig.ElectricalUserInputsConfig.AlternatorMap; + var compressorMap = auxConfig.PneumaticUserInputsConfig.CompressorMap; + + // 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 = auxCfg.FuelMap; + + // SSM HVAC + //var ssmPath = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.SSMFilePath); + //var BusDatabase = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.BusDatabasePath); + var ssmTool = new SSMTOOL(auxConfig.SSMInputs); + + + M0 = new M00Impl(auxConfig.ElectricalUserInputsConfig, Signals, ssmTool.ElectricalWAdjusted); + + M0_5 = new M0_5Impl( + M0, auxConfig.ElectricalUserInputsConfig, Signals); + + M1 = new M01Impl(M0, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, + auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, ssmTool.ElectricalWAdjusted, ssmTool.MechanicalWBaseAdjusted); + + M2 = new M02Impl(M0, auxConfig.ElectricalUserInputsConfig); + + M3 = new M03Impl(auxConfig, compressorMap, auxCfg.Actuations, Signals); + + M4 = new M04Impl( + compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio, + auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals); + M5 = new M05Impl( + M0_5, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, + auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency); + M6 = new M06Impl(auxCfg.ElectricalUserInputsConfig, M1, M2, M3, M4, M5, Signals); + M7 = new M07Impl(M5, M6, Signals); + M8 = new M08Impl(auxConfig, M1, M6, M7, Signals); + + //M9 = new M09Impl(M1, M4, M6, M8, fuelMap, auxConfig.PneumaticAuxillariesConfig, Signals); + //M10 = new M10Impl(M3, M9); + //M11 = new M11Impl(M1, M3, M6, M8, fuelMap, Signals); + //M12 = new M12Impl(M10, M11); + //M13 = new M13Impl(auxCfg, M10, M11, M12, Signals); + + // This duplicate SSM is being created for use in M14 as its properties will be dynamically changed at that point + // to honour EngineWaste Heat Usage in Fueling calculations. + //var ssmToolModule14 = new SSMTOOL(auxCfg.SSMInputs); + + //M14 = new M14Impl(M13, ssmToolModule14, fuelProperties, Signals); + } + + + public ISignals Signals { get; set; } + + public Watt ElectricPowerConsumer + { + get { return M2.AveragePowerDemandAtAlternatorFromElectrics; } + } + + public Watt HVACElectricalPowerConsumer + { + get { return M1.AveragePowerDemandAtAlternatorFromHVACElectrics; } + } + + + public Watt ElectricPowerConsumerSum + { + get { return M1.AveragePowerDemandAtAlternatorFromHVACElectrics + M2.AveragePowerDemandAtAlternatorFromElectrics; } + } + + public Watt ElectricPowerDemandMech + { + get { return M2.GetAveragePowerAtCrankFromElectrics() + M1.AveragePowerDemandAtCrankFromHVACElectrics; } + } + + public Watt ElectricPowerGenerated + { + get { + if (!auxConfig.ElectricalUserInputsConfig.SmartElectrical) { + return ElectricPowerConsumerSum; + } + + var inIdle = Signals.Idle && (!Signals.ClutchEngaged || Signals.InNeutral); + return + (M6.OverrunFlag && Signals.ClutchEngaged && !Signals.InNeutral ? M6.SmartElecOnlyAltPowerGenAtCrank : 0.SI<Watt>()) + + (inIdle ? M5.AlternatorsGenerationPowerAtCrankIdle() : M5.AlternatorsGenerationPowerAtCrankTractionOn()) * + auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency * + auxConfig.ElectricalUserInputsConfig.AlternatorMap.GetEfficiency(Signals.EngineSpeed, 0.SI<Ampere>()); + } + } + + public NormLiter PSDemandConsumer + { + get { return M3.AverageAirConsumed * Signals.SimulationInterval; } + } + + public NormLiter PSAirGenerated + { + get { + if (!auxConfig.PneumaticUserInputsConfig.SmartAirCompression) { + return PSDemandConsumer; + } + + return M6.OverrunFlag && M8.CompressorFlag && Signals.ClutchEngaged && !Signals.InNeutral + ? M4.GetFlowRate() * + auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction + * Signals.SimulationInterval + : PSDemandConsumer; + } + } + + public NormLiter PSAirGeneratedAlwaysOn + { + get { return M4.GetFlowRate() * Signals.SimulationInterval; } + } + + public NormLiter PSAirGeneratedDrag + { + get { + if (!auxConfig.PneumaticUserInputsConfig.SmartAirCompression) { + return 0.SI<NormLiter>(); + } + + return (M6.OverrunFlag && M8.CompressorFlag && Signals.ClutchEngaged && !Signals.InNeutral + ? M4.GetFlowRate() * + auxConfig.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction + : 0.SI<NormLiterPerSecond>()) * Signals.SimulationInterval; + } + } + + public Watt PSPowerDemandAirGenerated + { + get { + if (!auxConfig.PneumaticUserInputsConfig.SmartAirCompression) { + return M3.GetAveragePowerDemandAtCrankFromPneumatics(); + } + + return M7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank; + } + } + + public Watt PSPowerCompressorAlwaysOn + { + get { return M4.GetPowerCompressorOn(); } + } + + public Watt PSPowerCompressorDragOnly + { + get { return M4.GetPowerCompressorOff(); } + } + + public Watt HVACMechanicalPowerConsumer + { + get { return M1.AveragePowerDemandAtCrankFromHVACMechanicals; } + } + + public Watt HVACMechanicalPowerGenerated + { + get { return M1.AveragePowerDemandAtCrankFromHVACMechanicals; } + } + + + + public string AuxiliaryName + { + get { return "BusAuxiliaries"; } + } + + public string AuxiliaryVersion + { + get { return "Version 2.0 DEV"; } + } + + public Watt AuxiliaryPowerAtCrankWatts + { + get { return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries; } + } + + + public void CycleStep(Second seconds) + { + try { + //M9.CycleStep(seconds); + //M10.CycleStep(seconds); + //M11.CycleStep(seconds); + + Signals.CurrentCycleTimeInSeconds += seconds.Value(); + } catch (Exception ex) { + //MessageBox.Show("Exception: " + ex.Message + " Stack Trace: " + ex.StackTrace); + throw ex; + } + } + + //public bool Running + //{ + // get { throw new NotImplementedException(); } + //} + + //public bool RunStart(IAuxiliaryConfig auxCfg, IFuelProperties fuelProperties) + //{ + // try { + // Initialise(auxCfg, fuelProperties); + // } catch (Exception) { + // return false; + // } + + // return true; + //} + + //public bool RunStop(ref string message) + //{ + // throw new NotImplementedException(); + //} + + public void ResetCalculations() + { + var modules = new List<IAbstractModule>() { M0, M0_5, M1, M2, M3, M4, M5, M6, M7, M8 }; + foreach (var moduel in modules) + moduel.ResetCalculations(); + } + + //public Kilogram TotalFuel + //{ + // get { + // if (M13 != null) + // return M14.TotalCycleFC; + // else + // return 0.SI<Kilogram>(); + // } + //} + + //public Liter TotalFuelLITRES + //{ + // get { + // if (M14 != null) + // return M14.TotalCycleFCLitres; + // else + // return 0.SI<Liter>(); + // } + //} + + // Helpers + + + //public bool ValidateAAUXFile(string filePath, ref string message) + //{ + // var validResult = FilePathUtils.ValidateFilePath(filePath, ".aaux", ref message); + + // return validResult; + //} + + // Diagnostics outputs for testing purposes in Vecto. + // Eventually this can be removed or rendered non effective to reduce calculation load on the model. + //public double AA_NonSmartAlternatorsEfficiency + //{ + // get { return M0.AlternatorsEfficiency; } + //} + + //public Ampere AA_SmartIdleCurrent_Amps + //{ + // get { return M0_5.SmartIdleCurrent; } + //} + + //public double AA_SmartIdleAlternatorsEfficiency + //{ + // get { return M0_5.AlternatorsEfficiencyIdleResultCard; } + //} + + //public Ampere AA_SmartTractionCurrent_Amps + //{ + // get { return M0_5.SmartTractionCurrent; } + //} + + //public double AA_SmartTractionAlternatorEfficiency + //{ + // get { return M0_5.AlternatorsEfficiencyTractionOnResultCard; } + //} + + //public Ampere AA_SmartOverrunCurrent_Amps + //{ + // get { return M0_5.SmartOverrunCurrent; } + //} + + //public double AA_SmartOverrunAlternatorEfficiency + //{ + // get { return M0_5.AlternatorsEfficiencyOverrunResultCard; } + //} + + //public NormLiterPerSecond AA_CompressorFlowRate_LitrePerSec + //{ + // get { return M4.GetFlowRate(); } + //} + + //public bool AA_OverrunFlag + //{ + // get { return M6.OverrunFlag; } + //} + + //public int? AA_EngineIdleFlag + //{ + // get { + // return Signals.EngineSpeed <= Signals.EngineIdleSpeed && (!Signals.ClutchEngaged || Signals.InNeutral) ? 1 : 0; + // } + //} + + //public bool AA_CompressorFlag + //{ + // get { return M8.CompressorFlag; } + //} + + //public Kilogram AA_TotalCycleFC_Grams + //{ + // get { return M14.TotalCycleFC; } + //} + + //public Liter AA_TotalCycleFC_Litres + //{ + // get { + // return M14.TotalCycleFCLitres; + // } + //} + + + //public Watt AA_AveragePowerDemandCrankHVACMechanicals + //{ + // get { return M1.AveragePowerDemandAtCrankFromHVACMechanicals(); } + //} + + //public Watt AA_AveragePowerDemandCrankHVACElectricals + //{ + // get { return M1.AveragePowerDemandAtCrankFromHVACElectrics(); } + //} + + //public Watt AA_AveragePowerDemandCrankElectrics + //{ + // get { return M2.GetAveragePowerAtCrankFromElectrics(); } + //} + + //public Watt AA_AveragePowerDemandCrankPneumatics + //{ + // get { return M3.GetAveragePowerDemandAtCrankFromPneumatics(); } + //} + + //public Kilogram AA_TotalCycleFuelConsumptionCompressorOff + //{ + // get { return M9.TotalCycleFuelConsumptionCompressorOffContinuously; } + //} + + //public Kilogram AA_TotalCycleFuelConsumptionCompressorOn + //{ + // get { return M9.TotalCycleFuelConsumptionCompressorOnContinuously; } + //} + } } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs index d821ff076ccd1784b7c91980423713490a6ca96a..08ec6af75033648be8dd2b293d7cca9e442cfc18 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs @@ -15,7 +15,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric protected ISignals _signals; protected Watt _ElectricalPowerW; - private Ampere _totalAverageDemandAmpsIncludingBaseLoad; + //private Ampere _totalAverageDemandAmpsIncludingBaseLoad; + private Ampere _totalDemandAmps; //private IM0_1_AverageElectricLoadDemand _m0_1; @@ -40,10 +41,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric _powernetVoltage = powernetVoltage; - _totalAverageDemandAmpsIncludingBaseLoad = electricConfig.AverageCurrentDemandInclBaseLoad; _signals = signals; _ElectricalPowerW = electricalPowerHVAC; + _totalDemandAmps = electricConfig.AverageCurrentDemandInclBaseLoad + GetHVACElectricalCurrentDemand; } #region Implementation of IM0_NonSmart_AlternatorsSetEfficiency @@ -56,9 +57,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric public double AlternatorsEfficiency { get { - var baseCurrentDemandAmps = _totalAverageDemandAmpsIncludingBaseLoad; // _electricalConsumersList.GetTotalAverageDemandAmps(false); - var totalDemandAmps = baseCurrentDemandAmps + GetHVACElectricalCurrentDemand; - return _alternatorEfficiencyMap.GetEfficiency(_signals.EngineSpeed, totalDemandAmps); + + return _alternatorEfficiencyMap.GetEfficiency(_signals.EngineSpeed, _totalDemandAmps); } } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs index 12bee5f1ebe5c7184d80253551def6b2db733cc4..80781cba0f039be4925de8bdc9bd3a7c7c0a2aac 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs @@ -48,9 +48,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC #region Implementation of IM1_AverageHVACLoadDemand - public Watt AveragePowerDemandAtCrankFromHVACMechanicals() + public Watt AveragePowerDemandAtCrankFromHVACMechanicals { - return _MechanicalPower * (1 / _compressorGearEfficiency); + get { return _MechanicalPower * (1 / _compressorGearEfficiency); } } public Watt AveragePowerDemandAtAlternatorFromHVACElectrics @@ -58,9 +58,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC get { return _ElectricalPower; } } - public Watt AveragePowerDemandAtCrankFromHVACElectrics() + public Watt AveragePowerDemandAtCrankFromHVACElectrics { - return _ElectricalPower * (1 / _m0.AlternatorsEfficiency / _alternatorGearEfficiency); + get { return _ElectricalPower * (1 / _m0.AlternatorsEfficiency / _alternatorGearEfficiency); } } //public KilogramPerSecond HVACFueling() diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M06Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M06Impl.cs index 735351a53fbbe92b3c13db0365ba3a0b4f3d8a83..b085d47db0a710d79e76de39cb1df145796c887d 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M06Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M06Impl.cs @@ -38,9 +38,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl protected override void DoCalculate() { - var sum1 = _m1.AveragePowerDemandAtCrankFromHVACElectrics() + _m2.GetAveragePowerAtCrankFromElectrics(); + var sum1 = _m1.AveragePowerDemandAtCrankFromHVACElectrics + _m2.GetAveragePowerAtCrankFromElectrics(); var sw1 = _smartElectrics ? _m5.AlternatorsGenerationPowerAtCrankTractionOn() : sum1; - var sum2 = _m1.AveragePowerDemandAtCrankFromHVACMechanicals() + sw1 + + var sum2 = _m1.AveragePowerDemandAtCrankFromHVACMechanicals + sw1 + _m3.GetAveragePowerDemandAtCrankFromPneumatics(); var sum3 = _signals.EngineMotoringPower + _signals.InternalEnginePower + sum2; var vc0 = sum3 <= 0; diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M08Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M08Impl.cs index 335ef34c6b831e886644dcbc080cb2224857d46f..a9b54f4f2f7b0d9f7f385a06b02f24bcf747126a 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M08Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M08Impl.cs @@ -39,7 +39,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl var sw2 = _smartPneumatics ? sum3 : sum4; var sw5 = _smartElectrics ? sw1 : sw2; var sw6 = !_signals.EngineStopped; - var sum5 = _m1.AveragePowerDemandAtCrankFromHVACMechanicals() + sw5; + var sum5 = _m1.AveragePowerDemandAtCrankFromHVACMechanicals + sw5; var sum6 = sw6 ? sum5 : 0.SI<Watt>(); var sw3 = _smartPneumatics ? _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank : diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M09Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M09Impl.cs index 71590f168261359f9baabcd0a5ae5f8bf3ab75ed..fe3b4e47408344b61b48aa82b1e07dd0a9f9e7bf 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M09Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M09Impl.cs @@ -84,7 +84,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl throw new DivideByZeroException("Engine speed is zero and cannot be used as a divisor."); } - var s1 = M6.AvgPowerDemandAtCrankFromElectricsIncHVAC + M1.AveragePowerDemandAtCrankFromHVACMechanicals(); + var s1 = M6.AvgPowerDemandAtCrankFromElectricsIncHVAC + M1.AveragePowerDemandAtCrankFromHVACMechanicals; var s2 = M4.GetPowerCompressorOn() / S0(Signals.EngineSpeed); var s3 = M4.GetPowerCompressorOff() / S0(Signals.EngineSpeed); var s4 = s1 / S0(Signals.EngineSpeed); diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M10Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M10Impl.cs index 88e278703c8bd3b4ca2337c89d10d53212fee510..183f6123c20445550f27183fc03a465de68af546 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M10Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M10Impl.cs @@ -94,9 +94,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl public void CycleStep(Second stepTimeInSeconds) { - _AverageAirConsumedLitre += double.IsNaN(M3.AverageAirConsumed().Value()) + _AverageAirConsumedLitre += double.IsNaN(M3.AverageAirConsumed.Value()) ? 0.SI<NormLiter>() - : M3.AverageAirConsumed() * stepTimeInSeconds; + : M3.AverageAirConsumed * stepTimeInSeconds; } #endregion diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M11Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M11Impl.cs index fa9d56e280c61cfbe05314ccc239e2a7476ca020..b5e5f782b8360b21387a91bdea8d18b866b79122 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M11Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M11Impl.cs @@ -110,7 +110,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl AG6 += (M6.AvgPowerDemandAtCrankFromElectricsIncHVAC * stepTimeInSeconds); - var sum2 = M3.GetAveragePowerDemandAtCrankFromPneumatics() + M1.AveragePowerDemandAtCrankFromHVACMechanicals(); + var sum2 = M3.GetAveragePowerDemandAtCrankFromPneumatics() + M1.AveragePowerDemandAtCrankFromHVACMechanicals; var sum3 = M8.SmartElectricalAlternatorPowerGenAtCrank / Sum0(Signals.EngineSpeed); var sum4 = sum2 / Sum0(Signals.EngineSpeed); var sum9 = Signals.EngineDrivelineTorque + diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs index 32e0cc395026f38fdbfd79018423e11517b5508d..74fcfce928798c1336824abcb47f2bce5de8b56a 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs @@ -9,61 +9,56 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati { protected IPneumaticUserInputsConfig _pneumaticUserInputsConfig; protected IPneumaticsConsumersDemand _pneumaticAuxillariesConfig; - protected IActuations Actuations; protected ICompressorMap _pneumaticsCompressorFlowRateMap; protected Kilogram _vehicleMassKG; protected ISignals _signals; - protected NormLiter _totalAirDemand; - + //public M03Impl(IPneumaticUserInputsConfig pneumaticsUserInputConfig, IPneumaticsAuxilliariesConfig pneumaticsAuxillariesConfig, IPneumaticActuationsMap pneumaticsActuationsMap, ICompressorMap pneumaticsCompressorFlowRateMap, Kilogram vehicleMassKG, string cycleName, ISignals signals) public M03Impl(IAuxiliaryConfig auxConfig, ICompressorMap compressorMap, IActuations actuations, ISignals signals) { _pneumaticUserInputsConfig = auxConfig.PneumaticUserInputsConfig; _pneumaticAuxillariesConfig = auxConfig.PneumaticAuxillariesConfig; - Actuations = actuations; _pneumaticsCompressorFlowRateMap = compressorMap; _vehicleMassKG = auxConfig.VehicleData.TotalVehicleMass; _signals = signals; //'Calculate the Total Required Air Delivery Rate L / S - _totalAirDemand = TotalAirDemandCalculation(); + TotalAirDemand = TotalAirDemandCalculation(actuations); + AverageAirConsumed = TotalAirDemand / actuations.CycleTime; } - private NormLiter TotalAirDemandCalculation() + public NormLiter TotalAirDemandCalculation(IActuations actuations) { //'These calculation are done directly from formulae provided from a supplied spreadsheet. - - + //'* * Breaks * * - double numActuationsPerCycle = Actuations.Braking; //'=IF(K10 = "yes", IF(COUNTBLANK(F33), G33, F33), IF(COUNTBLANK(F34), G34, F34)) * K16 var airConsumptionPerActuation = _pneumaticAuxillariesConfig.Braking * _vehicleMassKG; - var breaks = numActuationsPerCycle * airConsumptionPerActuation ; + var breaks = actuations.Braking * airConsumptionPerActuation ; //'* * ParkBrakesBreakplus2Doors * *Park break +2 doors - numActuationsPerCycle = Actuations.ParkBrakeAndDoors; //'=SUM(IF(K14 = "electric", 0, IF(COUNTBLANK(F36), G36, F36)), PRODUCT(K16 * IF(COUNTBLANK(F37), G37, F37))) airConsumptionPerActuation = _pneumaticUserInputsConfig.Doors == ConsumerTechnology.Electrically ? 0.SI<NormLiter>() : _pneumaticAuxillariesConfig.DoorOpening; airConsumptionPerActuation += _pneumaticAuxillariesConfig.StopBrakeActuation * _vehicleMassKG; - var parkBrakesplus2Doors = (numActuationsPerCycle * airConsumptionPerActuation); + var parkBrakesplus2Doors = (actuations.ParkBrakeAndDoors * airConsumptionPerActuation); //'* * Kneeling * * - numActuationsPerCycle = Actuations.Kneeling; + //'=IF(COUNTBLANK(F35), G35, F35) * K11 * K16 airConsumptionPerActuation = _pneumaticAuxillariesConfig.BreakingWithKneeling * _pneumaticUserInputsConfig.KneelingHeight * _vehicleMassKG; - var kneeling = (numActuationsPerCycle * airConsumptionPerActuation); + var kneeling = (actuations.Kneeling * airConsumptionPerActuation); //'* * AdBlue * * // '=IF(K13 = "electric", 0, G39 * F54) - Supplied Spreadsheet var adBlue = _pneumaticUserInputsConfig.AdBlueDosing == ConsumerTechnology.Electrically ? 0.SI<NormLiter>() - : _pneumaticAuxillariesConfig.AdBlueInjection * Actuations.CycleTime; + : _pneumaticAuxillariesConfig.AdBlueInjection * actuations.CycleTime; //'* * Regeneration * * // '=SUM(R6: R9) * IF(K9 = "yes", IF(COUNTBLANK(F41), G41, F41), IF(COUNTBLANK(F40), G40, F40)) - Supplied SpreadSheet @@ -75,22 +70,20 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati //'* * DeadVolBlowOuts * * // '=IF(COUNTBLANK(F43), G43, F43) / (F54 / 60) - Supplied SpreadSheet - //numActuationsPerCycle =; airConsumptionPerActuation = _pneumaticAuxillariesConfig.DeadVolume; var deadVolBlowOuts = (airConsumptionPerActuation * _pneumaticAuxillariesConfig.DeadVolBlowOuts * - Actuations.CycleTime).Cast<NormLiter>(); + actuations.CycleTime).Cast<NormLiter>(); //'* * AirSuspension * * // '=IF(K12 = "electrically", 0, G38 * F54) - Suplied Spreadsheet var airSuspension = _pneumaticUserInputsConfig.AirSuspensionControl == ConsumerTechnology.Electrically ? 0.SI<NormLiter>() - : _pneumaticAuxillariesConfig.AirControlledSuspension * Actuations.CycleTime; + : _pneumaticAuxillariesConfig.AirControlledSuspension * actuations.CycleTime; //'* * Total Air Demand** var totalAirDemand = breaks + parkBrakesplus2Doors + kneeling + adBlue + regeneration + deadVolBlowOuts + airSuspension; - - + return totalAirDemand; } @@ -102,28 +95,17 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati var cmp = _pneumaticsCompressorFlowRateMap.Interpolate( _signals.EngineSpeed * _pneumaticUserInputsConfig.CompressorGearRatio); - var sum1 = _totalAirDemand / Actuations.CycleTime; var sum6 = cmp.FlowRate; - var sum7 = cmp.PowerOn - cmp.PowerOff; - - var sum2 = (sum7 / sum6 * sum1); // ' Watt / Nl/s * Nl/s = Watt + var sum2 = (sum7 / sum6 * AverageAirConsumed); // ' Watt / Nl/s * Nl/s = Watt var sum3 = sum2 + cmp.PowerOff; var sum4 = sum3 * (1 / _pneumaticUserInputsConfig.CompressorGearEfficiency); return sum4; } - public NormLiterPerSecond AverageAirConsumed() - { - var sum1 = _totalAirDemand / Actuations.CycleTime; - return sum1; - } + public NormLiterPerSecond AverageAirConsumed { get; } - public NormLiter TotalAirDemand - { - get { return _totalAirDemand; } - } - + public NormLiter TotalAirDemand { get; } #endregion } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM1_AverageHVACLoadDemand.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM1_AverageHVACLoadDemand.cs index 064c52b65e9ed4185f90ba31d1cb8aa44204ec15..66165fb80bf5a10076fb17a8a1a521d187bd973b 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM1_AverageHVACLoadDemand.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM1_AverageHVACLoadDemand.cs @@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules /// </summary> /// <returns></returns> /// <remarks></remarks> - Watt AveragePowerDemandAtCrankFromHVACMechanicals(); + Watt AveragePowerDemandAtCrankFromHVACMechanicals { get; } /// <summary> /// Average Power Demand At Alternator From HVAC Electrics (W) @@ -35,7 +35,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules /// </summary> /// <returns></returns> /// <remarks></remarks> - Watt AveragePowerDemandAtCrankFromHVACElectrics(); + Watt AveragePowerDemandAtCrankFromHVACElectrics { get; } ///// <summary> ///// HVAC Fueling (L/H) diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM3_AveragePneumaticLoadDemand.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM3_AveragePneumaticLoadDemand.cs index 344e8bcf808d29579a030831f9634eafd379d192..7b526d6c84463fe25450d983ad40558590b033b4 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM3_AveragePneumaticLoadDemand.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM3_AveragePneumaticLoadDemand.cs @@ -17,7 +17,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules { Watt GetAveragePowerDemandAtCrankFromPneumatics(); - NormLiterPerSecond AverageAirConsumed(); + NormLiterPerSecond AverageAirConsumed { get; } NormLiter TotalAirDemand { get; } } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/IBusAuxiliaries.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/IBusAuxiliaries.cs index 403f0b97de21c091b219af4bda5f71c1e9ec430e..249e1764b70808c21216020144e03b768370165a 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/IBusAuxiliaries.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/IBusAuxiliaries.cs @@ -12,8 +12,8 @@ using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Utils; -namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces { - +namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces +{ //public delegate void AuxiliaryEventEventHandler(ref object sender, string message, AdvancedAuxiliaryMessageType messageType); public interface IBusAuxiliaries @@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces { //event AuxiliaryEventEventHandler AuxiliaryEvent; // Information - bool Running { get; } + //bool Running { get; } string AuxiliaryName { get; } string AuxiliaryVersion { get; } @@ -64,7 +64,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces { ///// <returns></returns> ///// <remarks></remarks> //Liter TotalFuelLITRES { get; } - /// <summary> /// Total Power Demans At Crank From Auxuliaries (W) /// </summary> @@ -81,7 +80,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces { /// <returns></returns> /// <remarks></remarks> //IVectoInputs VectoInputs { get; set; } - /// <summary> /// Signals From Vecto /// </summary> @@ -90,19 +88,23 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces { /// <remarks></remarks> ISignals Signals { get; set; } + Watt HVACElectricalPowerConsumer { get; } + + Watt ElectricPowerConsumer { get; } + Watt ElectricPowerConsumerSum { get; } Watt ElectricPowerGenerated { get; } - NormLiter PSDemandConsumer { get; } + Watt ElectricPowerDemandMech { get; } + NormLiter PSDemandConsumer { get; } NormLiter PSAirGenerated { get; } NormLiter PSAirGeneratedAlwaysOn { get; } NormLiter PSAirGeneratedDrag { get; } - Watt PSPowerDemandAirGenerated { get; } - Watt PSPowerCompressorAlwaysOn { get; } - Watt PSPowerCompressorDragOnly { get; } + Watt PSPowerDemandAirGenerated { get; } + Watt PSPowerCompressorAlwaysOn { get; } + Watt PSPowerCompressorDragOnly { get; } Watt HVACMechanicalPowerConsumer { get; } Watt HVACMechanicalPowerGenerated { get; } - Watt HVACElectricalPowerConsumer { get; } ///// <summary> ///// Configure Auxuliaries ( Launches Config Form ) diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs index 8a431c4fec8fdc49e93c240db5a5c6db4ebe1673..a5ea09d349c669398aefaa7c981a3a0ab22165d0 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs @@ -126,15 +126,15 @@ namespace TUGraz.VectoCore.Models.Simulation.Data /// </summary> [ModalResultField(typeof(SI), name: "FC-WHTCc", caption: "FC-WHTCc{0} [g/h]", outputFactor: 3600 * 1000)] FCWHTCc, - /// <summary> - /// [g/h] Fuel consumption after smart auxiliary correction. - /// </summary> - [ModalResultField(typeof(SI), name: "FC-AAUX", caption: "FC-AAUX{0} [g/h]", outputFactor: 3600 * 1000)] FCAAUX, + ///// <summary> + ///// [g/h] Fuel consumption after smart auxiliary correction. + ///// </summary> + //[ModalResultField(typeof(SI), name: "FC-AAUX", caption: "FC-AAUX{0} [g/h]", outputFactor: 3600 * 1000)] FCAAUX, /// <summary> /// [g/h] Fuel consumption after correction for ADAS technologies. (Based on FC-AAUXc.) /// </summary> - [ModalResultField(typeof(SI), name: "FC-ESS", caption: "FC-ESS{0} [g/h]", outputFactor: 3600 * 1000)] FCEngineStopStart, + [ModalResultField(typeof(SI), name: "FC-ESS", caption: "FC-ESS{0} [g/h]", outputFactor: 3600 * 1000)] FCICEStopStart, /// <summary> /// [g/h] Fuel consumption after WHTC Correction. (Based on FC-ADAS.) @@ -250,9 +250,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), caption: "P_trac [kW]", outputFactor: 1e-3)] P_trac, - [ModalResultField(typeof(SI), caption: "P_eng_fcmap [kW]", outputFactor: 1e-3)] P_eng_fcmap, + [ModalResultField(typeof(SI), caption: "P_ice_fcmap [kW]", outputFactor: 1e-3)] P_ice_fcmap, - [ModalResultField(typeof(SI), caption: "P_eng_full_stat [kW]", outputFactor: 1e-3)] P_eng_full_stat, + [ModalResultField(typeof(SI), caption: "P_ice_full_stat [kW]", outputFactor: 1e-3)] P_ice_full_stat, /// <summary> /// [kW] Power demand of Auxiliary with ID xxx. See also Aux Dialog and Driving Cycle. @@ -260,18 +260,23 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), caption: "P_aux_{0} [kW]", outputFactor: 1e-3)] P_aux_, /// Bus Aux Data + [ModalResultField(typeof(SI), caption: "P_busAux_ES_HVAC [kW]", outputFactor: 1e-3)] P_busAux_ES_HVAC, + + [ModalResultField(typeof(SI), caption: "P_busAux_ES_other [kW]", outputFactor: 1e-3)] P_busAux_ES_other, + + [ModalResultField(typeof(SI), caption: "P_busAux_ES_consumer_sum [kW]", outputFactor: 1e-3)] P_busAux_ES_consumer_sum, - [ModalResultField(typeof(SI), caption: "P_busAux_el_consumer_sum [kW]", outputFactor: 1e-3)] P_busAux_ES_consumer_sum, + [ModalResultField(typeof(SI), caption: "P_busAux_ES_gen [kW]", outputFactor: 1e-3)] P_busAux_ES_generated, - [ModalResultField(typeof(SI), caption: "P_busAux_el_gen [kW]", outputFactor: 1e-3)] P_busAux_ES_generated, + [ModalResultField(typeof(SI), caption: "P_busAux_ES_mech [kW]", outputFactor: 1e-3)] P_busAux_ES_sum_mech, - [ModalResultField(typeof(SI), caption: "Nl_busAux_consumer [Nl]")] Nl_busAux_consumer, + [ModalResultField(typeof(SI), caption: "Nl_busAux_consumer [Nl]")] Nl_busAux_PS_consumer, - [ModalResultField(typeof(SI), caption: "Nl_busAux_gen [Nl]")] Nl_busAux_generated, + [ModalResultField(typeof(SI), caption: "Nl_busAux_gen [Nl]")] Nl_busAux_PS_generated, - [ModalResultField(typeof(SI), caption: "Nl_busAux_gen_max [Nl]")] Nl_busAux_generated_alwaysOn, + [ModalResultField(typeof(SI), caption: "Nl_busAux_gen_max [Nl]")] Nl_busAux_PS_generated_alwaysOn, - [ModalResultField(typeof(SI), caption: "Nl_busAux_gen_drag [Nl]")] Nl_busAux_generated_dragOnly, + [ModalResultField(typeof(SI), caption: "Nl_busAux_gen_drag [Nl]")] Nl_busAux_PS_generated_dragOnly, [ModalResultField(typeof(SI), caption: "P_busAux_PS_gen [kW]", outputFactor: 1e-3)] P_busAux_PS_generated, diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index b88340d7a99e3bbe1bced8deef733c723322eabc..b277fb80d4f1a57e1364163a8365b49b99401215 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -429,8 +429,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl private static IGearbox GetGearbox(IVehicleContainer container, VectoRunData runData) { - IShiftStrategy strategy; - strategy = GetShiftStrategy(runData, container); + var strategy = GetShiftStrategy(runData, container); switch (runData.GearboxData.Type) { case GearboxType.AMT: case GearboxType.MT: diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs index 1a8654131c3982d3bb4b9a73df70fc8cb055cc4b..8599356ccca08927daa579030c0514d7f55a6b20 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs @@ -227,6 +227,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var minFc = double.MaxValue; var fcCurrent = double.NaN; + var estimatedVelocityPostShift = VelocityDropData.Interpolate(DataBus.VehicleSpeed, DataBus.RoadGradient ?? 0.SI<Radian>()); + if (estimatedVelocityPostShift.IsSmaller(0)) { + return currentGear; + } + if (response1.EngineTorqueDemand.IsSmaller(DeclarationData.GearboxTCU.DragMarginFactor * fld[currentGear].DragLoadStationaryTorque(response1.EngineSpeed))) { return currentGear; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs index d0b63e58f5660f60a541aa7178b9cb8a5b3b1615..fa6d9becf14af26ec80d85063fad8a2bfd014ad2 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs @@ -171,16 +171,20 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl //CurrentState.TotalFuelConsumption = Auxiliaries.TotalFuel; container[ModalResultField.P_aux] = CurrentState.PowerDemand; + container[ModalResultField.P_busAux_ES_HVAC] = Auxiliaries.HVACElectricalPowerConsumer; + container[ModalResultField.P_busAux_ES_other] = Auxiliaries.ElectricPowerConsumer; container[ModalResultField.P_busAux_ES_consumer_sum] = Auxiliaries.ElectricPowerConsumerSum; container[ModalResultField.P_busAux_ES_generated] = Auxiliaries.ElectricPowerGenerated; + container[ModalResultField.P_busAux_ES_sum_mech] = Auxiliaries.ElectricPowerDemandMech; - container[ModalResultField.Nl_busAux_consumer] = Auxiliaries.PSDemandConsumer; - container[ModalResultField.Nl_busAux_generated] = Auxiliaries.PSAirGenerated; - container[ModalResultField.Nl_busAux_generated_alwaysOn] = Auxiliaries.PSAirGeneratedAlwaysOn; - container[ModalResultField.Nl_busAux_generated_dragOnly] = Auxiliaries.PSAirGeneratedDrag; + container[ModalResultField.Nl_busAux_PS_consumer] = Auxiliaries.PSDemandConsumer; + container[ModalResultField.Nl_busAux_PS_generated] = Auxiliaries.PSAirGenerated; + container[ModalResultField.Nl_busAux_PS_generated_alwaysOn] = Auxiliaries.PSAirGeneratedAlwaysOn; + container[ModalResultField.Nl_busAux_PS_generated_dragOnly] = Auxiliaries.PSAirGeneratedDrag; container[ModalResultField.P_busAux_PS_generated] = Auxiliaries.PSPowerDemandAirGenerated; container[ModalResultField.P_busAux_PS_generated_alwaysOn] = Auxiliaries.PSPowerCompressorAlwaysOn; container[ModalResultField.P_busAux_PS_generated_dragOnly] = Auxiliaries.PSPowerCompressorDragOnly; + container[ModalResultField.P_busAux_HVACmech_consumer] = Auxiliaries.HVACMechanicalPowerConsumer; container[ModalResultField.P_busAux_HVACmech_gen] = Auxiliaries.HVACMechanicalPowerGenerated; @@ -239,10 +243,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl CurrentState = new BusAuxState(); } - protected internal KilogramPerSecond AAuxFuelConsumption - { - get { return (CurrentState.TotalFuelConsumption - PreviousState.TotalFuelConsumption) / CurrentState.dt; } - } + //protected internal KilogramPerSecond AAuxFuelConsumption + //{ + // get { return (CurrentState.TotalFuelConsumption - PreviousState.TotalFuelConsumption) / CurrentState.dt; } + //} private Watt GetBusAuxPowerDemand(Second absTime, Second dt, NewtonMeter torquePowerTrain, NewtonMeter torqueEngine, PerSecond angularSpeed, bool dryRun = false) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs index 7755f4cd3ab8a8f10e31d085dcf1b6de20e7088d..02cf1895b9ce45d7a15f0b332095d90c408d6e57 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs @@ -381,7 +381,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl DataBus.ExecutionMode == ExecutionMode.Engineering ? 20.RPMtoRad() : 1e-3.RPMtoRad())) { Log.Warn("EngineSpeed below idling speed! n_eng_avg: {0}, n_idle: {1}", avgEngineSpeed.AsRPM, EngineIdleSpeed.AsRPM); } - container[ModalResultField.P_eng_fcmap] = CurrentState.EngineTorque * avgEngineSpeed; + container[ModalResultField.P_ice_fcmap] = CurrentState.EngineTorque * avgEngineSpeed; container[ModalResultField.P_ice_out] = container[ModalResultField.P_ice_out] is DBNull ? CurrentState.EngineTorqueOut * avgEngineSpeed : container[ModalResultField.P_ice_out]; @@ -391,7 +391,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl container[ModalResultField.T_ice_fcmap] = CurrentState.EngineTorque; container[ModalResultField.P_ice_full] = CurrentState.DynamicFullLoadTorque * avgEngineSpeed; - container[ModalResultField.P_eng_full_stat] = CurrentState.StationaryFullLoadTorque * avgEngineSpeed; + container[ModalResultField.P_ice_full_stat] = CurrentState.StationaryFullLoadTorque * avgEngineSpeed; container[ModalResultField.P_ice_drag] = CurrentState.FullDragTorque * avgEngineSpeed; container[ModalResultField.T_ice_full] = CurrentState.DynamicFullLoadTorque; container[ModalResultField.T_ice_drag] = CurrentState.FullDragTorque; @@ -420,19 +420,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var fcNCVcorr = fc * fuelData.HeatingValueCorrection; // TODO: wird fcNCVcorr var fcWHTC = fcNCVcorr * WHTCCorrectionFactor(fuel.FuelData); - var fcAAUX = fcWHTC; + //var fcAAUX = fcWHTC; var advancedAux = EngineAux as BusAuxiliariesAdapter; if (advancedAux != null) { advancedAux.DoWriteModalResults(container); - fcAAUX = advancedAux.AAuxFuelConsumption; + //fcAAUX = advancedAux.AAuxFuelConsumption; } - var fcFinal = fcAAUX; + var fcFinal = fcWHTC; // fcAAUX; container[ModalResultField.FCMap, fuelData] = fc; container[ModalResultField.FCNCVc, fuel.FuelData] = fcNCVcorr; container[ModalResultField.FCWHTCc, fuel.FuelData] = fcWHTC; - container[ModalResultField.FCAAUX, fuel.FuelData] = fcAAUX; - container[ModalResultField.FCEngineStopStart, fuel.FuelData] = fcFinal; + //container[ModalResultField.FCAAUX, fuel.FuelData] = fcAAUX; + container[ModalResultField.FCICEStopStart, fuel.FuelData] = fcFinal; container[ModalResultField.FCFinal, fuel.FuelData] = fcFinal; } } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs index be33a489871942b8b038037e651fbd1b4d26fbe4..540c609f94154a5e2f3b8a6c2945d8c27a5ac867 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs @@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { protected virtual void DoWriteEngineOffResults(IModalDataContainer container) { - container[ModalResultField.P_eng_fcmap] = 0.SI<Watt>(); + container[ModalResultField.P_ice_fcmap] = 0.SI<Watt>(); container[ModalResultField.P_ice_out] = 0.SI<Watt>(); container[ModalResultField.P_ice_inertia] = 0.SI<Watt>(); @@ -103,7 +103,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { container[ModalResultField.T_ice_fcmap] = 0.SI<NewtonMeter>(); container[ModalResultField.P_ice_full] = 0.SI<Watt>(); - container[ModalResultField.P_eng_full_stat] = 0.SI<Watt>(); + container[ModalResultField.P_ice_full_stat] = 0.SI<Watt>(); container[ModalResultField.P_ice_drag] = 0.SI<Watt>(); container[ModalResultField.T_ice_full] = 0.SI<NewtonMeter>(); container[ModalResultField.T_ice_drag] = 0.SI<NewtonMeter>(); @@ -121,12 +121,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { var fcNCVcorr = fc * fuel.FuelData.HeatingValueCorrection; // TODO: wird fcNCVcorr var fcWHTC = fcNCVcorr * WHTCCorrectionFactor(fuel.FuelData); - var fcAAUX = fcWHTC; + //var fcAAUX = fcWHTC; var advancedAux = EngineAux as BusAuxiliariesAdapter; if (advancedAux != null) { - throw new VectoException("Engine Stop/Start with advanced auxiliaries not supported!"); - - //advancedAux.DoWriteModalResults(container); + //throw new VectoException("Engine Stop/Start with advanced auxiliaries not supported!"); + advancedAux.DoWriteModalResults(container); //fcAAUX = advancedAux.AAuxFuelConsumption; } @@ -139,8 +138,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { container[ModalResultField.FCMap, fuel.FuelData] = fc; container[ModalResultField.FCNCVc, fuel.FuelData] = fcNCVcorr; container[ModalResultField.FCWHTCc, fuel.FuelData] = fcWHTC; - container[ModalResultField.FCAAUX, fuel.FuelData] = fcAAUX; - container[ModalResultField.FCEngineStopStart, fuel.FuelData] = fcESS; + //container[ModalResultField.FCAAUX, fuel.FuelData] = fcAAUX; + container[ModalResultField.FCICEStopStart, fuel.FuelData] = fcESS; container[ModalResultField.FCFinal, fuel.FuelData] = fcFinal; } } diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index a0a9797bb70956df8618aad1c56e33c7c0ed9c43..d0c222bd1b603735319b74614496f325e6876833 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -306,12 +306,12 @@ namespace TUGraz.VectoCore.OutputData public static WattSecond TotalEngineWorkPositive(this IModalDataContainer data) { - return data.TimeIntegral<WattSecond>(ModalResultField.P_eng_fcmap, x => x > 0); + return data.TimeIntegral<WattSecond>(ModalResultField.P_ice_fcmap, x => x > 0); } public static WattSecond TotalEngineWorkNegative(this IModalDataContainer data) { - return data.TimeIntegral<WattSecond>(ModalResultField.P_eng_fcmap, x => x < 0); + return data.TimeIntegral<WattSecond>(ModalResultField.P_ice_fcmap, x => x < 0); } public static WattSecond WorkAuxiliariesDuringEngineStop(this IModalDataContainer data) @@ -354,7 +354,7 @@ namespace TUGraz.VectoCore.OutputData public static Watt TotalPowerEnginePositiveAverage(this IModalDataContainer data) { var simulationIntervals = data.GetValues<Second>(ModalResultField.simulationInterval); - var values = data.GetValues<Watt>(ModalResultField.P_eng_fcmap) + var values = data.GetValues<Watt>(ModalResultField.P_ice_fcmap) .Zip(simulationIntervals, (value, dt) => new { Dt = dt, Value = value * dt }) .Where(v => v.Value > 0).ToList(); if (values.Any()) { diff --git a/VectoCore/VectoCore/OutputData/ModFilter/ActualModalDataFilter.cs b/VectoCore/VectoCore/OutputData/ModFilter/ActualModalDataFilter.cs index 866ccfd100efb8e72c957407192f4f49ac4b6620..6e6eb67c2ba8c141ef3e94a1e784887f3342dbaa 100644 --- a/VectoCore/VectoCore/OutputData/ModFilter/ActualModalDataFilter.cs +++ b/VectoCore/VectoCore/OutputData/ModFilter/ActualModalDataFilter.cs @@ -97,10 +97,10 @@ namespace TUGraz.VectoCore.OutputData.ModFilter SetConstantValues(current, start, end, ModalResultField.P_ice_full, - ModalResultField.P_eng_full_stat, + ModalResultField.P_ice_full_stat, ModalResultField.P_ice_out, ModalResultField.P_ice_drag, - ModalResultField.P_eng_fcmap, + ModalResultField.P_ice_fcmap, ModalResultField.P_clutch_out, ModalResultField.P_clutch_loss, ModalResultField.P_aux, @@ -128,7 +128,7 @@ namespace TUGraz.VectoCore.OutputData.ModFilter SetConstantValues(current, start, end, ModalResultField.FCMap, ModalResultField.FCNCVc, - ModalResultField.FCAAUX, + //ModalResultField.FCAAUX, ModalResultField.FCWHTCc, ModalResultField.FCFinal); diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index af55d8cfed3a91748259cddc08192b9151b46820..edc47df58c33ece71acac1a12c79cac43d095d89 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -62,8 +62,8 @@ namespace TUGraz.VectoCore.OutputData private Meter _distance; public static readonly IList<ModalResultField> FuelConsumptionSignals = new[] { - ModalResultField.FCMap, ModalResultField.FCNCVc, ModalResultField.FCWHTCc, ModalResultField.FCAAUX, - ModalResultField.FCEngineStopStart, ModalResultField.FCFinal + ModalResultField.FCMap, ModalResultField.FCNCVc, ModalResultField.FCWHTCc, // ModalResultField.FCAAUX, + ModalResultField.FCICEStopStart, ModalResultField.FCFinal }; private readonly Dictionary<String, SI> _timeIntegrals = new Dictionary<string, SI>(); @@ -175,7 +175,7 @@ namespace TUGraz.VectoCore.OutputData GetValues( x => x.Field<bool>(ModalResultField.ICEOn.GetName()) ? new Point( - x.Field<SI>(ModalResultField.P_eng_fcmap.GetName()).Value(), + x.Field<SI>(ModalResultField.P_ice_fcmap.GetName()).Value(), x.Field<SI>(GetColumnName(fuel, ModalResultField.FCFinal)).Value()) : null).Where(x => x != null && x.Y > 0), out k, out d, out r); @@ -197,9 +197,9 @@ namespace TUGraz.VectoCore.OutputData TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCMap)); TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCNCVc)); TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCWHTCc)); - TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCAAUX)); + //TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCAAUX)); TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCMap)); - TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCEngineStopStart)); + TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCICEStopStart)); TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCFinal)); } @@ -346,9 +346,9 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.T_ice_fcmap, ModalResultField.T_ice_full, ModalResultField.T_ice_drag, - ModalResultField.P_eng_fcmap, + ModalResultField.P_ice_fcmap, ModalResultField.P_ice_full, - ModalResultField.P_eng_full_stat, + ModalResultField.P_ice_full_stat, ModalResultField.P_ice_drag, ModalResultField.P_ice_inertia, ModalResultField.P_ice_out, @@ -396,7 +396,25 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.n_gbx_out_avg, ModalResultField.T_gbx_out }); - + if (WriteAdvancedAux) { + dataColumns.AddRange( + new[] { + ModalResultField.P_busAux_ES_HVAC, + ModalResultField.P_busAux_ES_other, + ModalResultField.P_busAux_ES_consumer_sum, + ModalResultField.P_busAux_ES_sum_mech, + ModalResultField.P_busAux_ES_generated, + ModalResultField.P_busAux_HVACmech_consumer, + ModalResultField.P_busAux_HVACmech_gen, + ModalResultField.Nl_busAux_PS_consumer, + ModalResultField.Nl_busAux_PS_generated, + ModalResultField.Nl_busAux_PS_generated_alwaysOn, + ModalResultField.Nl_busAux_PS_generated_dragOnly, + ModalResultField.P_busAux_PS_generated, + ModalResultField.P_busAux_PS_generated_alwaysOn, + ModalResultField.P_busAux_PS_generated_dragOnly, + }); + } if (HasTorqueConverter) { dataColumns.AddRange( new[] { diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index e6ed402822c5c63d6485a0e082ee979e2fcc2170..0503e92ab5c29b64ed60eb419f41ef4abaae1608 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -352,14 +352,14 @@ namespace TUGraz.VectoCore.OutputData row[FcCol(Fields.FCWHTCC_KM, suffix)] = modData.FuelConsumptionPerMeter(ModalResultField.FCWHTCc, fuel)?.ConvertToGrammPerKiloMeter(); - row[FcCol(Fields.FCAAUX_H, suffix)] = - modData.FuelConsumptionPerSecond(ModalResultField.FCAAUX, fuel)?.ConvertToGrammPerHour(); - row[FcCol(Fields.FCAAUX_KM, suffix)] = - modData.FuelConsumptionPerMeter(ModalResultField.FCAAUX, fuel)?.ConvertToGrammPerKiloMeter(); + //row[FcCol(Fields.FCAAUX_H, suffix)] = + // modData.FuelConsumptionPerSecond(ModalResultField.FCAAUX, fuel)?.ConvertToGrammPerHour(); + //row[FcCol(Fields.FCAAUX_KM, suffix)] = + // modData.FuelConsumptionPerMeter(ModalResultField.FCAAUX, fuel)?.ConvertToGrammPerKiloMeter(); - row[FcCol(Fields.FCESS_H, suffix)] = modData.FuelConsumptionPerSecond(ModalResultField.FCEngineStopStart, fuel) + row[FcCol(Fields.FCESS_H, suffix)] = modData.FuelConsumptionPerSecond(ModalResultField.FCICEStopStart, fuel) ?.ConvertToGrammPerHour(); - row[FcCol(Fields.FCESS_KM, suffix)] = modData.FuelConsumptionPerMeter(ModalResultField.FCEngineStopStart, fuel) + row[FcCol(Fields.FCESS_KM, suffix)] = modData.FuelConsumptionPerMeter(ModalResultField.FCICEStopStart, fuel) ?.ConvertToGrammPerKiloMeter(); var fcModSum = modData.TotalFuelConsumption(ModalResultField.FCFinal, fuel); @@ -492,7 +492,7 @@ namespace TUGraz.VectoCore.OutputData foreach (var fuel in modData.FuelData) { eFC += modData.TimeIntegral<Kilogram>(modData.GetColumnName(fuel, ModalResultField.FCFinal)) * fuel.LowerHeatingValueVecto; } - var eIcePos = modData.TimeIntegral<WattSecond>(ModalResultField.P_eng_fcmap, x => x > 0); + var eIcePos = modData.TimeIntegral<WattSecond>(ModalResultField.P_ice_fcmap, x => x > 0); row[Fields.AVERAGE_ENGINE_EFFICIENCY] = eFC.IsEqual(0, 1e-9) ? 0 : (eIcePos / eFC).Value(); if (runData.SimulationType == SimulationType.EngineOnly) { diff --git a/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs index ac26029b430fca5812f737db5e9a620c2241ed59..de7dbf47475bec28a796e0fcb720c5a37b92b3bb 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs @@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration [TestCase()] public void CreateRunDataPrimaryBus() { - var runIdx = 0; + var runIdx = 2; var jobFile = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus.xml"; var writer = new FileOutputWriter(jobFile); @@ -44,12 +44,12 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var jobContainer = new JobContainer(new MockSumWriter()); - //var runs = factory.SimulationRuns().ToArray(); - //jobContainer.AddRun(runs[runIdx]); - //runs[runIdx].Run(); + var runs = factory.SimulationRuns().ToArray(); + jobContainer.AddRun(runs[runIdx]); + runs[runIdx].Run(); - var run = factory.SimulationRuns().First(); - run.Run(); + //var run = factory.SimulationRuns().First(); + //run.Run(); //Assert.IsTrue(runs[runIdx].FinishedWithoutErrors); } diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs index 851e9b1c88e225c7d1a041b702249bc380c6dbba..e628ccc5ef248fc5dbb9b34bce38f01f64892110 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs @@ -183,7 +183,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent protected override void DoWriteModalResults(IModalDataContainer container) { - container[ModalResultField.P_eng_fcmap] = 0.SI<Watt>(); + container[ModalResultField.P_ice_fcmap] = 0.SI<Watt>(); container[ModalResultField.P_ice_out] = 0.SI<Watt>(); container[ModalResultField.P_ice_inertia] = 0.SI<Watt>(); @@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent container[ModalResultField.FCMap] = 0.SI<KilogramPerSecond>(); container[ModalResultField.FCNCVc] = 0.SI<KilogramPerSecond>(); container[ModalResultField.FCWHTCc] = 0.SI<KilogramPerSecond>(); - container[ModalResultField.FCAAUX] = 0.SI<KilogramPerSecond>(); + //container[ModalResultField.FCAAUX] = 0.SI<KilogramPerSecond>(); container[ModalResultField.FCFinal] = 0.SI<KilogramPerSecond>(); } diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs index 2b14ed59254563dd41c4c8aa06b72160272237da..672f97a38a85992aaf44b480639058eed13b22f7 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs @@ -320,7 +320,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent container.CommitSimulationStep(absTime, dt); var row = dataWriter.Data.Rows.Cast<DataRow>().Last(); Assert.AreEqual(100530.96491487339.SI<Watt>().Value(), ((SI)row[ModalResultField.P_ice_out.GetName()]).Value()); - Assert.AreEqual(105530.96491487339.SI<Watt>().Value(), ((SI)row[ModalResultField.P_eng_fcmap.GetName()]).Value()); + Assert.AreEqual(105530.96491487339.SI<Watt>().Value(), ((SI)row[ModalResultField.P_ice_fcmap.GetName()]).Value()); Assert.AreEqual(5000.SI<Watt>(), row[ModalResultField.P_aux.GetName()]); Assert.AreEqual(800.RPMtoRad(), row[ModalResultField.n_ice_avg.GetName()]); diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs index 5b241923e16624856da67708bd17c9981acce5c7..a8cf827f2c76fc40d2445edcd3d05bd8a35be0b1 100644 --- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs +++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs @@ -494,7 +494,7 @@ namespace TUGraz.VectoCore.Tests.Reports time, distance); // check P_eng_FCmap = T_eng_fcmap * n_eng - var pEngFcmap = (SI)row[ModalResultField.P_eng_fcmap.GetName()]; + var pEngFcmap = (SI)row[ModalResultField.P_ice_fcmap.GetName()]; Assert.AreEqual(pEngFcmap.Value(), (tqEngFcmap * nEngFcMap).Value(), 1E-3, "time: {0} distance: {1}", time, distance); @@ -666,7 +666,7 @@ namespace TUGraz.VectoCore.Tests.Reports time, distance); // check P_eng_FCmap = T_eng_fcmap * n_eng - var pEngFcmap = (SI)row[ModalResultField.P_eng_fcmap.GetName()]; + var pEngFcmap = (SI)row[ModalResultField.P_ice_fcmap.GetName()]; Assert.AreEqual(pEngFcmap.Value(), (tqEngFcmap * nEngFcMap).Value(), 1E-3, "time: {0} distance: {1}", time, distance); diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs index e388fd901cf5346797cf7ed7bf5ce4329fc040b8..4455e3b35a8ee22e0f72daa526af4945ae944033 100644 --- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs +++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs @@ -99,7 +99,7 @@ namespace TUGraz.VectoCore.Tests.Reports modData[ModalResultField.acc] = 0.SI<MeterPerSquareSecond>(); modData[ModalResultField.P_ice_out] = (i % 2 == 0 ? 1 : -1) * 3000.SI<Watt>(); - modData[ModalResultField.P_eng_fcmap] = 0.SI<Watt>(); + modData[ModalResultField.P_ice_fcmap] = 0.SI<Watt>(); modData.CommitSimulationStep(); } @@ -161,7 +161,7 @@ namespace TUGraz.VectoCore.Tests.Reports modData[ModalResultField.acc] = 0.SI<MeterPerSquareSecond>(); modData[ModalResultField.P_ice_out] = (i % 2 == 0 ? 1 : -1) * powerDemand[i % powerDemand.Length]; - modData[ModalResultField.P_eng_fcmap] = 0.SI<Watt>(); + modData[ModalResultField.P_ice_fcmap] = 0.SI<Watt>(); modData[ModalResultField.FCFinal] = 0.SI<KilogramPerSecond>(); modData[ModalResultField.ICEOn] = false; modData.CommitSimulationStep();