From 6aa2f93f961f76b17af0122ab3c15b773337f2a7 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Fri, 15 Feb 2019 09:47:09 +0100 Subject: [PATCH] sum data: for new columns handle case no data for efficiency calculation is available --- .../OutputData/SummaryDataContainer.cs | 287 ++++++++++-------- 1 file changed, 154 insertions(+), 133 deletions(-) diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 0efb634007..9548c7b2bc 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -37,6 +37,7 @@ using System.Runtime.CompilerServices; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.InputData.Reader.Impl; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data; @@ -54,6 +55,7 @@ namespace TUGraz.VectoCore.OutputData { // ReSharper disable InconsistentNaming public const string INTERNAL_PREFIX = "INTERNAL"; + public const string SORT = INTERNAL_PREFIX + " Sorting"; public const string JOB = "Job [-]"; public const string INPUTFILE = "Input File [-]"; @@ -109,7 +111,9 @@ namespace TUGraz.VectoCore.OutputData public const string HDV_CO2_VEHICLE_CLASS = "HDV CO2 vehicle class [-]"; public const string TOTAL_VEHICLE_MASS = "Total vehicle mass [kg]"; public const string CD_x_A_DECLARED = "Declared CdxA [m²]"; + public const string CD_x_A = "CdxA [m²]"; + //public const string ROLLING_RESISTANCE_COEFFICIENT = "weighed RRC [-]"; public const string R_DYN = "r_dyn [m]"; @@ -203,15 +207,22 @@ namespace TUGraz.VectoCore.OutputData public const string DECLARED_RRC_AXLE4 = "Declared RRC axle 4 [-]"; public const string DECLARED_FZISO_AXLE4 = "Declared FzISO axle 4 [N]"; public const string ADAS_TECHNOLOGY_COMBINATION = "ADAS technology combination [-]"; + public const string PTO_TECHNOLOGY = "PTOShaftsGearWheels"; + //public const string PTO_OTHER_ELEMENTS = "PTOOtherElements"; public const string ENGINE_CERTIFICATION_NUMBER = "Engine certification number"; public const string AVERAGE_ENGINE_EFFICIENCY = "Average engine efficiency [%]"; public const string TORQUE_CONVERTER_CERTIFICATION_NUMBER = "TorqueConverter certification number"; public const string TORQUE_CONVERTER_CERTIFICATION_METHOD = "Torque converter certification option"; - public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP = "Average torque converter efficiency with lockup [%]"; - public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP = "Average torque converter efficiency w/o lockup [%]"; + + public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP = + "Average torque converter efficiency with lockup [%]"; + + public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP = + "Average torque converter efficiency w/o lockup [%]"; + public const string GEARBOX_CERTIFICATION_NUMBER = "Gearbox certification number"; public const string GEARBOX_CERTIFICATION_METHOD = "Gearbox certification option"; public const string AVERAGE_GEARBOX_EFFICIENCY = "Average gearbox efficiency [%]"; @@ -231,133 +242,137 @@ namespace TUGraz.VectoCore.OutputData internal readonly DataTable Table; private readonly ISummaryWriter _sumWriter; - protected SummaryDataContainer() {} + protected SummaryDataContainer() { } /// <summary> /// Initializes a new instance of the <see cref="SummaryDataContainer"/> class. /// </summary> /// <param name="writer"></param> - public SummaryDataContainer(ISummaryWriter writer) { _sumWriter = writer; - + Table = new DataTable(); - Table.Columns.AddRange(new[] { - Tuple.Create(SORT, typeof(int)), - Tuple.Create(JOB, typeof(string)), - Tuple.Create(INPUTFILE, typeof(string)), - Tuple.Create(CYCLE, typeof(string)), - Tuple.Create(STATUS, typeof(string)), - Tuple.Create(VEHICLE_MANUFACTURER, typeof(string)), - Tuple.Create(VIN_NUMBER, typeof(string)), - Tuple.Create(VEHICLE_MODEL, typeof(string)), - Tuple.Create(HDV_CO2_VEHICLE_CLASS, typeof(string)), - Tuple.Create(CURB_MASS, typeof(ConvertedSI)), - Tuple.Create(LOADING, typeof(ConvertedSI)), - Tuple.Create(TOTAL_VEHICLE_MASS, typeof(ConvertedSI)), - Tuple.Create(ENGINE_MANUFACTURER, typeof(string)), - Tuple.Create(ENGINE_MODEL, typeof(string)), - Tuple.Create(ENGINE_FUEL_TYPE, typeof(string)), - Tuple.Create(ENGINE_RATED_POWER, typeof(ConvertedSI)), - Tuple.Create(ENGINE_IDLING_SPEED, typeof(ConvertedSI)), - Tuple.Create(ENGINE_RATED_SPEED, typeof(ConvertedSI)), - Tuple.Create(ENGINE_DISPLACEMENT, typeof(ConvertedSI)), - Tuple.Create(ENGINE_WHTC_URBAN, typeof(double)), - Tuple.Create(ENGINE_WHTC_RURAL, typeof(double)), - Tuple.Create(ENGINE_WHTC_MOTORWAY, typeof(double)), - Tuple.Create(ENGINE_BF_COLD_HOT, typeof(double)), - Tuple.Create(ENGINE_CF_REG_PER, typeof(double)), - Tuple.Create(ENGINE_ACTUAL_CORRECTION_FACTOR, typeof(double)), - Tuple.Create(VEHICLE_FUEL_TYPE, typeof(string)), - Tuple.Create(AIRDRAG_MODEL, typeof(string)), - Tuple.Create(CD_x_A_DECLARED, typeof(ConvertedSI)), - Tuple.Create(CD_x_A, typeof(ConvertedSI)), - Tuple.Create(SLEEPER_CAB, typeof(string)), - Tuple.Create(DECLARED_RRC_AXLE1, typeof(double)), - Tuple.Create(DECLARED_FZISO_AXLE1, typeof(ConvertedSI)), - Tuple.Create(DECLARED_RRC_AXLE2, typeof(double)), - Tuple.Create(DECLARED_FZISO_AXLE2, typeof(ConvertedSI)), - Tuple.Create(DECLARED_RRC_AXLE3, typeof(double)), - Tuple.Create(DECLARED_FZISO_AXLE3, typeof(ConvertedSI)), - Tuple.Create(DECLARED_RRC_AXLE4, typeof(double)), - Tuple.Create(DECLARED_FZISO_AXLE4, typeof(ConvertedSI)), - Tuple.Create(ROLLING_RESISTANCE_COEFFICIENT_W_TRAILER, typeof(double)), - Tuple.Create(ROLLING_RESISTANCE_COEFFICIENT_WO_TRAILER, typeof(double)), - Tuple.Create(R_DYN, typeof(ConvertedSI)), - Tuple.Create(NUM_AXLES_DRIVEN, typeof(int)), - Tuple.Create(NUM_AXLES_NON_DRIVEN, typeof(int)), - Tuple.Create(NUM_AXLES_TRAILER, typeof(int)), - Tuple.Create(GEARBOX_MANUFACTURER, typeof(string)), - Tuple.Create(GEARBOX_MODEL, typeof(string)), - Tuple.Create(GEARBOX_TYPE, typeof(string)), - Tuple.Create(GEAR_RATIO_FIRST_GEAR, typeof(ConvertedSI)), - Tuple.Create(GEAR_RATIO_LAST_GEAR, typeof(ConvertedSI)), - Tuple.Create(TORQUECONVERTER_MANUFACTURER, typeof(string)), - Tuple.Create(TORQUECONVERTER_MODEL, typeof(string)), - Tuple.Create(RETARDER_MANUFACTURER, typeof(string)), - Tuple.Create(RETARDER_MODEL, typeof(string)), - Tuple.Create(RETARDER_TYPE, typeof(string)), - Tuple.Create(ANGLEDRIVE_MANUFACTURER, typeof(string)), - Tuple.Create(ANGLEDRIVE_MODEL, typeof(string)), - Tuple.Create(ANGLEDRIVE_RATIO, typeof(string)), - Tuple.Create(AXLE_MANUFACTURER, typeof(string)), - Tuple.Create(AXLE_MODEL, typeof(string)), - Tuple.Create(AXLE_RATIO, typeof(ConvertedSI)), - Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.SteeringPump), typeof(string)), - Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.Fan), typeof(string)), - Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition), - typeof(string)), - Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem), typeof(string)), - Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem), typeof(string)), - Tuple.Create(ADAS_TECHNOLOGY_COMBINATION, typeof(string)), - Tuple.Create(PTO_TECHNOLOGY, typeof(string)), - //Tuple.Create(PTO_OTHER_ELEMENTS, typeof(string)), - }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); - - Table.Columns.AddRange(new[] { - CARGO_VOLUME, - TIME, DISTANCE, - SPEED, ALTITUDE_DELTA, - FCMAP_H, FCMAP_KM, - FCNCVC_H, FCNCVC_KM, - FCWHTCC_H, FCWHTCC_KM, - FCAAUX_H, FCAAUX_KM, - FCADAS_H, FCADAS_KM, - FCFINAL_H, FCFINAL_KM, - FCFINAL_LITERPER100KM, FCFINAL_LITERPER100TKM, FCFINAL_LiterPer100M3KM,SPECIFIC_FC, - CO2_KM, CO2_TKM, CO2_M3KM, - P_WHEEL_POS, P_FCMAP_POS, - E_FCMAP_POS, E_FCMAP_NEG, E_POWERTRAIN_INERTIA, - E_AUX, E_CLUTCH_LOSS, E_TC_LOSS, E_SHIFT_LOSS, E_GBX_LOSS, - E_RET_LOSS, E_ANGLE_LOSS, E_AXL_LOSS, E_BRAKE, E_VEHICLE_INERTIA, E_WHEEL , E_AIR, E_ROLL, E_GRAD , - ACC, ACC_POS, ACC_NEG, ACC_TIMESHARE, DEC_TIMESHARE, CRUISE_TIMESHARE, - MAX_SPEED, MAX_ACCELERATION, MAX_DECELERATION, AVG_ENGINE_SPEED, MAX_ENGINE_SPEED, NUM_GEARSHIFTS, - STOP_TIMESHARE, ENGINE_FULL_LOAD_TIME_SHARE, COASTING_TIME_SHARE, BRAKING_TIME_SHARE - }.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray()); - - Table.Columns.AddRange(new[] { - Tuple.Create(ENGINE_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(AVERAGE_ENGINE_EFFICIENCY, typeof(double)), - Tuple.Create(TORQUE_CONVERTER_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(TORQUE_CONVERTER_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP, typeof(double)), - Tuple.Create(AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP, typeof(double)), - Tuple.Create(GEARBOX_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(GEARBOX_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(AVERAGE_GEARBOX_EFFICIENCY, typeof(double)), - Tuple.Create(RETARDER_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(RETARDER_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(ANGLEDRIVE_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(ANGLEDRIVE_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(AVERAGE_ANGLEDRIVE_EFFICIENCY, typeof(double)), - Tuple.Create(AXLEGEAR_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(AXLEGEAR_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(AVERAGE_AXLEGEAR_EFFICIENCY, typeof(double)), - Tuple.Create(AIRDRAG_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(AIRDRAG_CERTIFICATION_METHOD, typeof(string)), - }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); + Table.Columns.AddRange( + new[] { + Tuple.Create(SORT, typeof(int)), + Tuple.Create(JOB, typeof(string)), + Tuple.Create(INPUTFILE, typeof(string)), + Tuple.Create(CYCLE, typeof(string)), + Tuple.Create(STATUS, typeof(string)), + Tuple.Create(VEHICLE_MANUFACTURER, typeof(string)), + Tuple.Create(VIN_NUMBER, typeof(string)), + Tuple.Create(VEHICLE_MODEL, typeof(string)), + Tuple.Create(HDV_CO2_VEHICLE_CLASS, typeof(string)), + Tuple.Create(CURB_MASS, typeof(ConvertedSI)), + Tuple.Create(LOADING, typeof(ConvertedSI)), + Tuple.Create(TOTAL_VEHICLE_MASS, typeof(ConvertedSI)), + Tuple.Create(ENGINE_MANUFACTURER, typeof(string)), + Tuple.Create(ENGINE_MODEL, typeof(string)), + Tuple.Create(ENGINE_FUEL_TYPE, typeof(string)), + Tuple.Create(ENGINE_RATED_POWER, typeof(ConvertedSI)), + Tuple.Create(ENGINE_IDLING_SPEED, typeof(ConvertedSI)), + Tuple.Create(ENGINE_RATED_SPEED, typeof(ConvertedSI)), + Tuple.Create(ENGINE_DISPLACEMENT, typeof(ConvertedSI)), + Tuple.Create(ENGINE_WHTC_URBAN, typeof(double)), + Tuple.Create(ENGINE_WHTC_RURAL, typeof(double)), + Tuple.Create(ENGINE_WHTC_MOTORWAY, typeof(double)), + Tuple.Create(ENGINE_BF_COLD_HOT, typeof(double)), + Tuple.Create(ENGINE_CF_REG_PER, typeof(double)), + Tuple.Create(ENGINE_ACTUAL_CORRECTION_FACTOR, typeof(double)), + Tuple.Create(VEHICLE_FUEL_TYPE, typeof(string)), + Tuple.Create(AIRDRAG_MODEL, typeof(string)), + Tuple.Create(CD_x_A_DECLARED, typeof(ConvertedSI)), + Tuple.Create(CD_x_A, typeof(ConvertedSI)), + Tuple.Create(SLEEPER_CAB, typeof(string)), + Tuple.Create(DECLARED_RRC_AXLE1, typeof(double)), + Tuple.Create(DECLARED_FZISO_AXLE1, typeof(ConvertedSI)), + Tuple.Create(DECLARED_RRC_AXLE2, typeof(double)), + Tuple.Create(DECLARED_FZISO_AXLE2, typeof(ConvertedSI)), + Tuple.Create(DECLARED_RRC_AXLE3, typeof(double)), + Tuple.Create(DECLARED_FZISO_AXLE3, typeof(ConvertedSI)), + Tuple.Create(DECLARED_RRC_AXLE4, typeof(double)), + Tuple.Create(DECLARED_FZISO_AXLE4, typeof(ConvertedSI)), + Tuple.Create(ROLLING_RESISTANCE_COEFFICIENT_W_TRAILER, typeof(double)), + Tuple.Create(ROLLING_RESISTANCE_COEFFICIENT_WO_TRAILER, typeof(double)), + Tuple.Create(R_DYN, typeof(ConvertedSI)), + Tuple.Create(NUM_AXLES_DRIVEN, typeof(int)), + Tuple.Create(NUM_AXLES_NON_DRIVEN, typeof(int)), + Tuple.Create(NUM_AXLES_TRAILER, typeof(int)), + Tuple.Create(GEARBOX_MANUFACTURER, typeof(string)), + Tuple.Create(GEARBOX_MODEL, typeof(string)), + Tuple.Create(GEARBOX_TYPE, typeof(string)), + Tuple.Create(GEAR_RATIO_FIRST_GEAR, typeof(ConvertedSI)), + Tuple.Create(GEAR_RATIO_LAST_GEAR, typeof(ConvertedSI)), + Tuple.Create(TORQUECONVERTER_MANUFACTURER, typeof(string)), + Tuple.Create(TORQUECONVERTER_MODEL, typeof(string)), + Tuple.Create(RETARDER_MANUFACTURER, typeof(string)), + Tuple.Create(RETARDER_MODEL, typeof(string)), + Tuple.Create(RETARDER_TYPE, typeof(string)), + Tuple.Create(ANGLEDRIVE_MANUFACTURER, typeof(string)), + Tuple.Create(ANGLEDRIVE_MODEL, typeof(string)), + Tuple.Create(ANGLEDRIVE_RATIO, typeof(string)), + Tuple.Create(AXLE_MANUFACTURER, typeof(string)), + Tuple.Create(AXLE_MODEL, typeof(string)), + Tuple.Create(AXLE_RATIO, typeof(ConvertedSI)), + Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.SteeringPump), typeof(string)), + Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.Fan), typeof(string)), + Tuple.Create( + string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition), + typeof(string)), + Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem), typeof(string)), + Tuple.Create(string.Format(AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem), typeof(string)), + Tuple.Create(ADAS_TECHNOLOGY_COMBINATION, typeof(string)), + Tuple.Create(PTO_TECHNOLOGY, typeof(string)), + + //Tuple.Create(PTO_OTHER_ELEMENTS, typeof(string)), + }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); + + Table.Columns.AddRange( + new[] { + CARGO_VOLUME, + TIME, DISTANCE, + SPEED, ALTITUDE_DELTA, + FCMAP_H, FCMAP_KM, + FCNCVC_H, FCNCVC_KM, + FCWHTCC_H, FCWHTCC_KM, + FCAAUX_H, FCAAUX_KM, + FCADAS_H, FCADAS_KM, + FCFINAL_H, FCFINAL_KM, + FCFINAL_LITERPER100KM, FCFINAL_LITERPER100TKM, FCFINAL_LiterPer100M3KM, SPECIFIC_FC, + CO2_KM, CO2_TKM, CO2_M3KM, + P_WHEEL_POS, P_FCMAP_POS, + E_FCMAP_POS, E_FCMAP_NEG, E_POWERTRAIN_INERTIA, + E_AUX, E_CLUTCH_LOSS, E_TC_LOSS, E_SHIFT_LOSS, E_GBX_LOSS, + E_RET_LOSS, E_ANGLE_LOSS, E_AXL_LOSS, E_BRAKE, E_VEHICLE_INERTIA, E_WHEEL, E_AIR, E_ROLL, E_GRAD, + ACC, ACC_POS, ACC_NEG, ACC_TIMESHARE, DEC_TIMESHARE, CRUISE_TIMESHARE, + MAX_SPEED, MAX_ACCELERATION, MAX_DECELERATION, AVG_ENGINE_SPEED, MAX_ENGINE_SPEED, NUM_GEARSHIFTS, + STOP_TIMESHARE, ENGINE_FULL_LOAD_TIME_SHARE, COASTING_TIME_SHARE, BRAKING_TIME_SHARE + }.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray()); + + Table.Columns.AddRange( + new[] { + Tuple.Create(ENGINE_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(AVERAGE_ENGINE_EFFICIENCY, typeof(double)), + Tuple.Create(TORQUE_CONVERTER_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(TORQUE_CONVERTER_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP, typeof(double)), + Tuple.Create(AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP, typeof(double)), + Tuple.Create(GEARBOX_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(GEARBOX_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(AVERAGE_GEARBOX_EFFICIENCY, typeof(double)), + Tuple.Create(RETARDER_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(RETARDER_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(ANGLEDRIVE_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(ANGLEDRIVE_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(AVERAGE_ANGLEDRIVE_EFFICIENCY, typeof(double)), + Tuple.Create(AXLEGEAR_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(AXLEGEAR_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(AVERAGE_AXLEGEAR_EFFICIENCY, typeof(double)), + Tuple.Create(AIRDRAG_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(AIRDRAG_CERTIFICATION_METHOD, typeof(string)), + }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); } /// <summary> @@ -379,6 +394,7 @@ namespace TUGraz.VectoCore.OutputData foreach (var dataColumn in toRemove) { view.Columns.Remove(dataColumn); } + _sumWriter.WriteSumData(view); } } @@ -461,7 +477,8 @@ namespace TUGraz.VectoCore.OutputData WriteGearshiftStats(modData, row, gearCount); } - private static void WriteFuelconsumptionEntries(IModalDataContainer modData, DataRow row, Kilogram vehicleLoading, + private static void WriteFuelconsumptionEntries( + IModalDataContainer modData, DataRow row, Kilogram vehicleLoading, CubicMeter cargoVolume, bool vtpCycle) { var tmp = modData.FCMapPerSecond(); @@ -501,7 +518,8 @@ namespace TUGraz.VectoCore.OutputData } if (vtpCycle) { - row[SPECIFIC_FC] = (modData.TimeIntegral<Kilogram>(ModalResultField.FCFinal) / modData.WorkWheelsPos()).ConvertToGramPerKiloWattHour(); + row[SPECIFIC_FC] = (modData.TimeIntegral<Kilogram>(ModalResultField.FCFinal) / modData.WorkWheelsPos()) + .ConvertToGramPerKiloWattHour(); } } @@ -518,6 +536,7 @@ namespace TUGraz.VectoCore.OutputData if (!Table.Columns.Contains(colName)) { var col = Table.Columns.Add(colName, typeof(ConvertedSI)); + // move the new column to correct position col.SetOrdinal(Table.Columns[E_AUX].Ordinal); } @@ -572,19 +591,23 @@ namespace TUGraz.VectoCore.OutputData var eFC = modData.TimeIntegral<Kilogram>(ModalResultField.FCFinal) * modData.FuelData.LowerHeatingValueVecto; var eIcePos = modData.TimeIntegral<WattSecond>(ModalResultField.P_eng_fcmap, x => x > 0); - row[AVERAGE_ENGINE_EFFICIENCY] = (eIcePos / eFC).Value(); + row[AVERAGE_ENGINE_EFFICIENCY] = eFC.IsEqual(0, 1e-9) ? 0 : (eIcePos / eFC).Value(); + + if (runData.SimulationType == SimulationType.EngineOnly) { + return; + } var gbxOutSignal = runData.Retarder.Type == RetarderType.TransmissionOutputRetarder ? ModalResultField.P_retarder_in : (runData.AngledriveData == null ? ModalResultField.P_axle_in : ModalResultField.P_angle_in); var eGbxIn = modData.TimeIntegral<WattSecond>(ModalResultField.P_gbx_in, x => x > 0); var eGbxOut = modData.TimeIntegral<WattSecond>(gbxOutSignal, x => x > 0); - row[AVERAGE_GEARBOX_EFFICIENCY] = (eGbxOut / eGbxIn).Value(); + row[AVERAGE_GEARBOX_EFFICIENCY] = eGbxIn.IsEqual(0, 1e-9) ? 0 : (eGbxOut / eGbxIn).Value(); if (runData.GearboxData.Type.AutomaticTransmission()) { var eTcIn = modData.TimeIntegral<WattSecond>(ModalResultField.P_TC_in, x => x > 0); var eTcOut = eGbxIn; - row[AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP] = (eTcOut / eTcIn).Value(); + row[AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP] = eTcIn.IsEqual(0, 1e-9) ? 0 : (eTcOut / eTcIn).Value(); var tcData = modData.GetValues( x => new { @@ -600,7 +623,7 @@ namespace TUGraz.VectoCore.OutputData eTcOut += entry.dt * entry.P_TCout; } - row[AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP] = (eTcOut / eTcIn).Value(); + row[AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP] = eTcIn.IsEqual(0, 1e-9) ? 0 : (eTcOut / eTcIn).Value(); } if (runData.AngledriveData != null) { @@ -612,7 +635,7 @@ namespace TUGraz.VectoCore.OutputData var eAxlIn = modData.TimeIntegral<WattSecond>(ModalResultField.P_axle_in, x => x > 0); var eAxlOut = modData.TimeIntegral<WattSecond>(ModalResultField.P_brake_in, x => x > 0); - row[AVERAGE_AXLEGEAR_EFFICIENCY] = (eAxlOut / eAxlIn).Value(); + row[AVERAGE_AXLEGEAR_EFFICIENCY] = eAxlIn.IsEqual(0, 1e-9) ? 0 : (eAxlOut / eAxlIn).Value(); } private static void WriteWorkEntries(IModalDataContainer modData, DataRow row, bool vtpMode) @@ -643,12 +666,11 @@ namespace TUGraz.VectoCore.OutputData WriteVehicleData(runData.VehicleData, row); row[PTO_TECHNOLOGY] = runData.PTO?.TransmissionType ?? ""; - WriteEngineData(runData.EngineData, row); WriteGearboxData(runData.GearboxData, row); - + WriteRetarderData(runData.Retarder, row); WriteAngledriveData(runData.AngledriveData, row); @@ -660,7 +682,6 @@ namespace TUGraz.VectoCore.OutputData WriteAxleWheelsData(runData.VehicleData.AxleData, row); WriteAirdragData(runData.AirdragData, row); - } private static void WriteVehicleData(VehicleData data, DataRow row) @@ -687,7 +708,7 @@ namespace TUGraz.VectoCore.OutputData row[R_DYN] = (ConvertedSI)data.DynamicTyreRadius; - row[ADAS_TECHNOLOGY_COMBINATION] = DeclarationData.ADASCombinations.Lookup(data.ADAS).ID; + row[ADAS_TECHNOLOGY_COMBINATION] = data.ADAS != null ? DeclarationData.ADASCombinations.Lookup(data.ADAS).ID : ""; } private static void WriteAirdragData(AirdragData data, DataRow row) @@ -743,7 +764,6 @@ namespace TUGraz.VectoCore.OutputData row[NUM_AXLES_DRIVEN] = data.Count(x => x.AxleType == AxleType.VehicleDriven); row[NUM_AXLES_NON_DRIVEN] = data.Count(x => x.AxleType == AxleType.VehicleNonDriven); row[NUM_AXLES_TRAILER] = data.Count(x => x.AxleType == AxleType.Trailer); - } private static void WriteAxlegearData(AxleGearData data, DataRow row) @@ -763,10 +783,12 @@ namespace TUGraz.VectoCore.OutputData if (aux.ID == Constants.Auxiliaries.IDs.PTOConsumer || aux.ID == Constants.Auxiliaries.IDs.PTOTransmission) { continue; } + var colName = string.Format(AUX_TECH_FORMAT, aux.ID); if (!Table.Columns.Contains(colName)) { var col = Table.Columns.Add(colName, typeof(string)); + // move the new column to correct position col.SetOrdinal(Table.Columns[CARGO_VOLUME].Ordinal); } @@ -837,7 +859,6 @@ namespace TUGraz.VectoCore.OutputData ? "" : data.TorqueConverterData.CertificationNumber; row[TORQUE_CONVERTER_CERTIFICATION_METHOD] = data.TorqueConverterData.CertificationMethod.GetName(); - } else { row[GEAR_RATIO_FIRST_GEAR] = data.Gears.Count > 0 ? (ConvertedSI)data.Gears.First().Value.Ratio.SI<Scalar>() @@ -870,4 +891,4 @@ namespace TUGraz.VectoCore.OutputData } } } -} \ No newline at end of file +} -- GitLab