diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb index 772132e67c6ff961d1fd64132cab0042efa0c7b3..11799ebe6e76c35a9b7415d2f7886bb3d9a4310e 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb @@ -40,11 +40,11 @@ Namespace UnitTests End Get End Property - Public ReadOnly Property FuelPerHBase As KilogramPerSecond Implements ISSMTOOL.FuelPerHBase - Get - Throw New NotImplementedException - End Get - End Property + 'Public ReadOnly Property FuelPerHBase As KilogramPerSecond Implements ISSMTOOL.FuelPerHBase + ' Get + ' Throw New NotImplementedException + ' End Get + 'End Property 'Public ReadOnly Property FuelPerHBaseAdjusted As KilogramPerSecond Implements ISSMTOOL.FuelPerHBaseAdjusted ' Get diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs index c6b86581fba9133847f10964a4ad59b65595160e..6ace7b0411608d99601b4cef83fe4faad30e952e 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs @@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var simulationRunData = new VectoRunData { Loading = loading.Key, VehicleData = DataAdapter.CreateVehicleData(vehicle, mission, loading), - AirdragData = _dao.CreateAirdragData(mission), + AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment()), EngineData = DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, mission), GearboxData = _gearboxData, AxleGearData = _axlegearData, diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs index d09a10d0e87b73e2aff3cf24bb28c5c44a91ff8f..c74d9f9787fde98169d6293fee7108009c00a044 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs @@ -72,27 +72,27 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC } } - public KilogramPerSecond FuelPerHBase - { - get { - var FuelLPerHBaseWeightedAverage = 0.0.SI<KilogramPerSecond>(); - var ec = ssmTOOL.SSMInputs.EnvironmentalConditions; + //public KilogramPerSecond FuelPerHBase + //{ + // get { + // var FuelLPerHBaseWeightedAverage = 0.0.SI<KilogramPerSecond>(); + // var ec = ssmTOOL.SSMInputs.EnvironmentalConditions; - // If batch mode is disabled use the EC_EnviromentalTemperature and EC_Solar variables. - // Else if batch is enable calculate the FuelLPerHBase for each input in the AENV file and then calculate the weighted average - if (!ec.BatchMode) - FuelLPerHBaseWeightedAverage = CalculateFuelLPerHBase(ssmTOOL.SSMInputs, ec.DefaultConditions); - else { - foreach (var envCondition in ec.EnvironmentalConditionsMap.GetEnvironmentalConditions()) - FuelLPerHBaseWeightedAverage += CalculateFuelLPerHBase(ssmTOOL.SSMInputs, envCondition); + // // If batch mode is disabled use the EC_EnviromentalTemperature and EC_Solar variables. + // // Else if batch is enable calculate the FuelLPerHBase for each input in the AENV file and then calculate the weighted average + // if (!ec.BatchMode) + // FuelLPerHBaseWeightedAverage = CalculateFuelLPerHBase(ssmTOOL.SSMInputs, ec.DefaultConditions); + // else { + // foreach (var envCondition in ec.EnvironmentalConditionsMap.GetEnvironmentalConditions()) + // FuelLPerHBaseWeightedAverage += CalculateFuelLPerHBase(ssmTOOL.SSMInputs, envCondition); - } + // } - return FuelLPerHBaseWeightedAverage; - } - } + // return FuelLPerHBaseWeightedAverage; + // } + //} // ADJUSTED RESULTS public Watt ElectricalWAdjusted @@ -197,26 +197,26 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC } - public Watt BaseHeatingW_FuelFiredHeating(Kelvin environmentalTemperature, WattPerSquareMeter solar) - { + //public Watt BaseHeatingW_FuelFiredHeating(Kelvin environmentalTemperature, WattPerSquareMeter solar) + //{ - // =IF(AND(M89<0,M90<0),VLOOKUP(MAX(M89:M90),M89:O90,3),0) + // // =IF(AND(M89<0,M90<0),VLOOKUP(MAX(M89:M90),M89:O90,3),0) - // Dim M89 = Me.Run1.TotalW - // Dim M90 = Me.Run2.TotalW - // VLOOKUP(MAX(M89:M90),M89:O90 => VLOOKUP ( lookupValue, tableArray, colIndex, rangeLookup ) + // // Dim M89 = Me.Run1.TotalW + // // Dim M90 = Me.Run2.TotalW + // // VLOOKUP(MAX(M89:M90),M89:O90 => VLOOKUP ( lookupValue, tableArray, colIndex, rangeLookup ) - // If both Run TotalW values are >=0 then return FuelW from Run with largest TotalW value, else return 0 - var run1TotalW = Run1.TotalW(environmentalTemperature, solar); - var run2TotalW = Run2.TotalW(environmentalTemperature, solar); + // // If both Run TotalW values are >=0 then return FuelW from Run with largest TotalW value, else return 0 + // var run1TotalW = Run1.TotalW(environmentalTemperature, solar); + // var run2TotalW = Run2.TotalW(environmentalTemperature, solar); - if ((run1TotalW < 0 && run2TotalW < 0)) { - return run1TotalW > run2TotalW ? Run1.FuelW(environmentalTemperature, solar) : Run2.FuelW(environmentalTemperature, solar); - } + // if ((run1TotalW < 0 && run2TotalW < 0)) { + // return run1TotalW > run2TotalW ? Run1.PowerFuelHeater(environmentalTemperature, solar) : Run2.PowerFuelHeater(environmentalTemperature, solar); + // } - return 0.SI<Watt>(); + // return 0.SI<Watt>(); - } + //} protected Watt BaseCoolingW_Mechanical(Kelvin environmentalTemperature, WattPerSquareMeter solar) { @@ -484,24 +484,24 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC return MechanicalWBaseCurrentResult * env.Weighting; } - private KilogramPerSecond CalculateFuelLPerHBase(ISSMInputs genInputs, IEnvironmentalConditionsMapEntry env) - { - // =(MIN(ABS(J93/1000),C71)/C37)*(1/(C39*C38)) + //private KilogramPerSecond CalculateFuelLPerHBase(ISSMInputs genInputs, IEnvironmentalConditionsMapEntry env) + //{ + // // =(MIN(ABS(J93/1000),C71)/C37)*(1/(C39*C38)) - // Dim J93 = BaseHeatingW_FuelFiredHeating - // Dim C71 = genInputs.AH_FuelFiredHeaterkW - // Dim C37 = genInputs.BC_AuxHeaterEfficiency - // Dim C39 = ssmTOOL.HVACConstants.FuelDensity - // Dim C38 = genInputs.BC_GCVDieselOrHeatingOil + // // Dim J93 = BaseHeatingW_FuelFiredHeating + // // Dim C71 = genInputs.AH_FuelFiredHeaterkW + // // Dim C37 = genInputs.BC_AuxHeaterEfficiency + // // Dim C39 = ssmTOOL.HVACConstants.FuelDensity + // // Dim C38 = genInputs.BC_GCVDieselOrHeatingOil - var fuelLPerHBaseCurrentResult = - VectoMath.Min( - VectoMath.Abs(BaseHeatingW_FuelFiredHeating(env.Temperature, env.Solar)).Value().SI<Watt>(), genInputs.AuxHeater.FuelFiredHeaterPower) / - genInputs.BoundaryConditions.AuxHeaterEfficiency / - (genInputs.BoundaryConditions.GCVDieselOrHeatingOil /* * ssmTOOL.HVACConstants.FuelDensity */); + // var fuelLPerHBaseCurrentResult = + // VectoMath.Min( + // VectoMath.Abs(BaseHeatingW_FuelFiredHeating(env.Temperature, env.Solar)).Value().SI<Watt>(), genInputs.AuxHeater.FuelFiredHeaterPower) / + // genInputs.BoundaryConditions.AuxHeaterEfficiency / + // (genInputs.BoundaryConditions.GCVDieselOrHeatingOil /* * ssmTOOL.HVACConstants.FuelDensity */); - return fuelLPerHBaseCurrentResult * env.Weighting; - } + // return fuelLPerHBaseCurrentResult * env.Weighting; + //} private Watt CalculateElectricalWAdjusted( ISSMInputs genInputs, ISSMTechnologyBenefits tecList, IEnvironmentalConditionsMapEntry env) @@ -562,8 +562,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC result = VectoMath .Abs( run1TotalW > run2TotalW - ? Run1.TechListAmendedFuelW(env.Temperature, env.Solar) - : Run2.TechListAmendedFuelW(env.Temperature, env.Solar)).Value().SI<Watt>(); + ? Run1.TechListAmendedFuelHeater(env.Temperature, env.Solar) + : Run2.TechListAmendedFuelHeater(env.Temperature, env.Solar)).Value().SI<Watt>(); } var auxHeaterPower = VectoMath.Min(result, genInputs.AuxHeater.FuelFiredHeaterPower) / diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs index 38e99e90d49a29f60cbf12a86cce260cb1787713..a29e1f34535b23dfdb9b497097531fcba020648a 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs @@ -5,7 +5,6 @@ using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HVAC; namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC { - // Used By SSMHVAC Class public class SSMRun : ISSMRun { @@ -24,83 +23,85 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC } - public Kelvin TCalc(Kelvin enviromentalTemperature) { - // C24 = BC_HeatingBoundaryTemperature - // C25 = BC_CoolingBoundary Temperature - // C6 = BP_BusFloorType - // C43 = EC_Enviromental Temperature - // C39 = BC_FontAndRearWindowArea - - var gen = ssmTOOL.SSMInputs; - - if (runNumber == 1) { - return gen.BoundaryConditions.HeatingBoundaryTemperature; - } - - return gen.BusParameters.BusFloorType == FloorType.LowFloor - ? VectoMath.Max(gen.BoundaryConditions.CoolingBoundaryTemperature, enviromentalTemperature - gen.BoundaryConditions.MaxTemperatureDeltaForLowFloorBusses) - : gen.BoundaryConditions.CoolingBoundaryTemperature; - + // C24 = BC_HeatingBoundaryTemperature + // C25 = BC_CoolingBoundary Temperature + // C6 = BP_BusFloorType + // C43 = EC_Enviromental Temperature + // C39 = BC_FontAndRearWindowArea + + var gen = ssmTOOL.SSMInputs; + + if (runNumber == 1) { + return gen.BoundaryConditions.HeatingBoundaryTemperature; + } + + return gen.BusParameters.BusFloorType == FloorType.LowFloor + ? VectoMath.Max( + gen.BoundaryConditions.CoolingBoundaryTemperature, + enviromentalTemperature - gen.BoundaryConditions.MaxTemperatureDeltaForLowFloorBusses) + : gen.BoundaryConditions.CoolingBoundaryTemperature; } - - + + public Watt TotalW(Kelvin enviromentalTemperature, WattPerSquareMeter solarFactor) { - // =SUM(J79:L79) or =SUM(J80:L80) // Tanslated to // =Sum ( Me.Qwall ,Me.WattsPerPass,Me.Solar ) - var gen = ssmTOOL.SSMInputs; var qWall = (enviromentalTemperature - TCalc(enviromentalTemperature)) * gen.BusParameters.BusSurfaceArea * gen.BoundaryConditions.UValue; var wattsPerPass = gen.BusParameters.NumberOfPassengers * - gen.BoundaryConditions.HeatPerPassengerIntoCabin(enviromentalTemperature); + gen.BoundaryConditions.HeatPerPassengerIntoCabin(enviromentalTemperature); var solar = solarFactor * gen.BusParameters.BusWindowSurface * gen.BoundaryConditions.GFactor * gen.BoundaryConditions.SolarClouding(enviromentalTemperature) * 0.25; return qWall + wattsPerPass + solar; - } - - public Watt FuelW(Kelvin enviromentalTemperature, WattPerSquareMeter solarFactor) - { - // =IF(AND(N79<0,N79<(C60*-1)),N79-(C60*-1),0)*1000 - // Dim N79 as Double = TotalKW - // Dim C60 As Double = gen.AH_EngineWasteHeatkW + //public Watt PowerFuelHeater(Kelvin enviromentalTemperature, WattPerSquareMeter solarFactor) + //{ + // // =IF(AND(N79<0,N79<(C60*-1)),N79-(C60*-1),0)*1000 - var totalW = TotalW(enviromentalTemperature, solarFactor); - return (totalW < 0 && totalW < (ssmTOOL.EngineWasteHeat * -1)) - ? totalW - (ssmTOOL.EngineWasteHeat * -1) - : 0.SI<Watt>(); + // // Dim N79 as Double = TotalKW + // // Dim C60 As Double = gen.AH_EngineWasteHeatkW - } - public Watt TechListAmendedFuelW(Kelvin enviromentalTemperature, WattPerSquareMeter solarFactor) + // var totalW = TotalW(enviromentalTemperature, solarFactor); + // return (totalW < 0 && totalW < (ssmTOOL.EngineWasteHeat * -1)) + // ? totalW - (ssmTOOL.EngineWasteHeat * -1) + // : 0.SI<Watt>(); + + //} + + + public Watt TechListAmendedFuelHeater(Kelvin enviromentalTemperature, WattPerSquareMeter solarFactor) { - - // =IF(IF(AND((N79*(1-$J$89))<0,(N79*(1-$J$89))<(C60*-1)),(N79*(1-$J$89))-(C60*-1),0)*1000<0,IF(AND((N79*(1-$J$89))<0,(N79*(1-$J$89))<(C60*-1)),(N79*(1-$J$89))-(C60*-1),0)*1000,0) - - var TLFFH = ssmTOOL.Calculate.TechListAdjustedHeatingW_FuelFiredHeating; - // Dim C60 As Double = gen.AH_EngineWasteHeatkW - // Dim N79 As Double = Me.TotalKW - //Return IF( IF(( (TotalKW * (1 - TLFFH)) < 0 AndAlso (TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)), _ - // (TotalKW * (1 - TLFFH)) - (gen.AH_EngineWasteHeatkW * -1), 0)*1000 < 0, _ - //IF(((TotalKW * (1 - TLFFH)) < 0 AndAlso(TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)),(TotalKW * (1 - TLFFH)) - (gen.AH_EngineWasteHeatkW * -1),0)*1000,0) - - var totalW = TotalW(enviromentalTemperature, solarFactor) * (1 - TLFFH); - return (totalW < 0 && totalW < ssmTOOL.EngineWasteHeat * -1? - totalW - ssmTOOL.EngineWasteHeat * -1: 0.SI<Watt>()) < 0 - ? (totalW < 0 && totalW < ssmTOOL.EngineWasteHeat * -1 - ? totalW - ssmTOOL.EngineWasteHeat * -1 - : 0.SI<Watt>()) - : 0.SI<Watt>(); - + // =IF(IF(AND((N79*(1-$J$89))<0,(N79*(1-$J$89))<(C60*-1)),(N79*(1-$J$89))-(C60*-1),0)*1000<0,IF(AND((N79*(1-$J$89))<0,(N79*(1-$J$89))<(C60*-1)),(N79*(1-$J$89))-(C60*-1),0)*1000,0) + + var TLFFH = ssmTOOL.Calculate.TechListAdjustedHeatingW_FuelFiredHeating; + + // Dim C60 As Double = gen.AH_EngineWasteHeatkW + // Dim N79 As Double = Me.TotalKW + //Return IF( IF(( (TotalKW * (1 - TLFFH)) < 0 AndAlso (TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)), _ + // (TotalKW * (1 - TLFFH)) - (gen.AH_EngineWasteHeatkW * -1), 0)*1000 < 0, _ + //IF(((TotalKW * (1 - TLFFH)) < 0 AndAlso(TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)),(TotalKW * (1 - TLFFH)) - (gen.AH_EngineWasteHeatkW * -1),0)*1000,0) + + var totalW = TotalW(enviromentalTemperature, solarFactor) * (1 - TLFFH); + return totalW < 0 && totalW < ssmTOOL.EngineWasteHeat * -1 + ? totalW - ssmTOOL.EngineWasteHeat * -1 + : 0.SI<Watt>(); + + //return (totalW < 0 && totalW < ssmTOOL.EngineWasteHeat * -1? + // totalW - ssmTOOL.EngineWasteHeat * -1: 0.SI<Watt>()) < 0 + // ? (totalW < 0 && totalW < ssmTOOL.EngineWasteHeat * -1 + // ? totalW - ssmTOOL.EngineWasteHeat * -1 + // : 0.SI<Watt>()) + // : 0.SI<Watt>(); } } } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs index 8070353c3b41a798296a4e09e3db56041f7d1749..f54643dd154e0d997dceed1a54e938a629166bce 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs @@ -52,12 +52,12 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC } } - public KilogramPerSecond FuelPerHBase - { - get { - return Calculate.FuelPerHBase; // .SI(Of LiterPerHour)() - } - } + //public KilogramPerSecond FuelPerHBase + //{ + // get { + // return Calculate.FuelPerHBase; // .SI(Of LiterPerHour)() + // } + //} // Adjusted Values public Watt ElectricalWAdjusted diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs index 0b39102998ee2c4446e8bb51113f000b68283b04..5ee3ce92781118e6df949b5152168d3cd92943f9 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs @@ -7,7 +7,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HV Watt ElectricalWBase { get; } Watt MechanicalWBase { get; } - KilogramPerSecond FuelPerHBase { get; } + //KilogramPerSecond FuelPerHBase { get; } Watt ElectricalWAdjusted { get; } Watt MechanicalWBaseAdjusted { get; } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMRun.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMRun.cs index 199df290699b11822babc46c6c994876dae93a32..b1449abff180fb3a273e8b06b08cbfcbf56d1b76 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMRun.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMRun.cs @@ -6,7 +6,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HV { Watt TotalW(Kelvin environmentTemperature, WattPerSquareMeter solarFactor); - Watt FuelW(Kelvin environmentTemperature, WattPerSquareMeter solarFactor); - Watt TechListAmendedFuelW(Kelvin environmentTemperature, WattPerSquareMeter solarFactor); + //Watt PowerFuelHeater(Kelvin environmentTemperature, WattPerSquareMeter solarFactor); + Watt TechListAmendedFuelHeater(Kelvin environmentTemperature, WattPerSquareMeter solarFactor); } } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs index 6f32348f04fe1eca2e827c477c8e365109830155..9eea66426aa1e910acbc95aa8b9abb3416af0b60 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs @@ -11,7 +11,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HV Watt ElectricalWBase { get; } // Watt Watt MechanicalWBase { get; } // Watt - KilogramPerSecond FuelPerHBase { get; } // LiterPerHour + //KilogramPerSecond FuelPerHBase { get; } // LiterPerHour Watt ElectricalWAdjusted { get; } // Watt Watt MechanicalWBaseAdjusted { get; } // Watt