Code development platform for open source projects from the European Union institutions

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

updating expected values in testfiles, correcting typos, reordering...

updating expected values in testfiles, correcting typos, reordering sum-fields, adding missing sum-fields
parent aaec245e
No related branches found
No related tags found
No related merge requests found
Showing with 161 additions and 55 deletions
......@@ -33,6 +33,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.Exceptions;
......@@ -116,7 +117,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
ModalResultField.P_gbx_in,
ModalResultField.P_gbx_inertia,
ModalResultField.P_gbx_loss,
ModalResultField.P_gbx_shift_loss,
//ModalResultField.P_gbx_shift_loss, // only for APT-S and APT-P
ModalResultField.T_gbx_in,
ModalResultField.T_gbx_out,
ModalResultField.n_gbx_out_avg,
......@@ -124,6 +125,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
ModalResultField.Gear
};
public static readonly ModalResultField[] GearboxSignals_AT =
GearboxSignals.Concat(new[] { ModalResultField.P_gbx_shift_loss }).ToArray();
// ------------------------------------------------------------------------------------
public static readonly ModalResultField[] TorqueConverterSignals = {
ModalResultField.TC_Locked,
......@@ -331,8 +335,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
case IClutch _:
CreateColumns(ClutchSignals);
break;
case IGearbox _ when runData.JobType != VectoSimulationJobType.IEPC_E && runData.JobType != VectoSimulationJobType.IEPC_S:
CreateColumns(GearboxSignals);
case IGearbox _ when runData.JobType != VectoSimulationJobType.IEPC_E && runData.JobType != VectoSimulationJobType.IEPC_S:
CreateColumns(runData.GearboxData.Type.IsOneOf(GearboxType.ATPowerSplit, GearboxType.ATSerial)
? GearboxSignals_AT
: GearboxSignals);
break;
case IGearbox _ when runData.JobType == VectoSimulationJobType.IEPC_E:
case IGearbox _ when runData.JobType == VectoSimulationJobType.IEPC_S:
......
......@@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.OutputData
public const string E_BusAux_PS_corr = "E_BusAux_PS_corr [kWh]";
public const string E_BusAux_ES_mech_corr = "E_BusAux_ES_mech_corr [kWh]";
public const string E_BusAux_AuxHeater = "E_BusAux_AuxhHeater [kWh]";
public const string E_BusAux_AuxHeater = "E_BusAux_AuxHeater [kWh]";
public const string E_AIR = "E_air [kWh]";
public const string E_ROLL = "E_roll [kWh]";
......@@ -330,8 +330,8 @@ namespace TUGraz.VectoCore.OutputData
{ STATUS, SumFunc((r, m) => m.RunStatus)},
{ TIME, SumFunc((r,m) => (ConvertedSI)m.Duration)},
{ DISTANCE, SumFunc((r, m) => m.Distance.ConvertToKiloMeter())},
{ SPEED, SumFunc((r, m) => m.Speed().ConvertToKiloMeterPerHour())},
{ DISTANCE, SumFunc((r, m) => m.Distance?.ConvertToKiloMeter())},
{ SPEED, SumFunc((r, m) => m.Speed()?.ConvertToKiloMeterPerHour())},
{ ALTITUDE_DELTA, SumFunc((r, m) => (ConvertedSI)m.AltitudeDelta())},
......
......@@ -98,6 +98,7 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.ACC, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.ACC_POS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.ACC_NEG, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_POS_ACC, typeof(ConvertedSI)),
// Engine Infos
Tuple.Create(SumDataFields.ENGINE_MANUFACTURER, typeof(string)),
Tuple.Create(SumDataFields.ENGINE_MODEL, typeof(string)),
......@@ -114,7 +115,6 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.ENGINE_ACTUAL_CORRECTION_FACTOR, typeof(string)),
Tuple.Create(SumDataFields.VEHICLE_FUEL_TYPE, typeof(string)),
Tuple.Create(SumDataFields.ENGINE_CERTIFICATION_NUMBER, typeof(string)),
Tuple.Create(SumDataFields.AVERAGE_ENGINE_EFFICIENCY, typeof(double)),
// Vehicle Infos
Tuple.Create(SumDataFields.VEHICLE_MANUFACTURER, typeof(string)),
Tuple.Create(SumDataFields.VIN_NUMBER, typeof(string)),
......@@ -122,6 +122,8 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.HDV_CO2_VEHICLE_CLASS, typeof(string)),
Tuple.Create(SumDataFields.AIRDRAG_MODEL, typeof(string)),
Tuple.Create(SumDataFields.AIRDRAG_CERTIFICATION_NUMBER, typeof(string)),
Tuple.Create(SumDataFields.AIRDRAG_CERTIFICATION_METHOD, typeof(string)),
Tuple.Create(SumDataFields.CD_x_A_DECLARED, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.CD_x_A, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.SLEEPER_CAB, typeof(string)),
......@@ -141,12 +143,15 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.NUM_AXLES_TRAILER, typeof(int)),
Tuple.Create(SumDataFields.GEARBOX_MANUFACTURER, typeof(string)),
Tuple.Create(SumDataFields.GEARBOX_MODEL, typeof(string)),
Tuple.Create(SumDataFields.GEARBOX_CERTIFICATION_METHOD, typeof(string)),
Tuple.Create(SumDataFields.GEARBOX_CERTIFICATION_NUMBER, typeof(string)),
Tuple.Create(SumDataFields.GEARBOX_TYPE, typeof(string)),
Tuple.Create(SumDataFields.AVERAGE_GEARBOX_EFFICIENCY, typeof(double)),
Tuple.Create(SumDataFields.GEAR_RATIO_FIRST_GEAR, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.GEAR_RATIO_LAST_GEAR, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.TORQUECONVERTER_MANUFACTURER, typeof(string)),
Tuple.Create(SumDataFields.TORQUECONVERTER_MODEL, typeof(string)),
Tuple.Create(SumDataFields.TORQUE_CONVERTER_CERTIFICATION_METHOD, typeof(string)),
Tuple.Create(SumDataFields.TORQUE_CONVERTER_CERTIFICATION_NUMBER, typeof(string)),
Tuple.Create(SumDataFields.RETARDER_MANUFACTURER, typeof(string)),
Tuple.Create(SumDataFields.RETARDER_MODEL, typeof(string)),
Tuple.Create(SumDataFields.RETARDER_TYPE, typeof(string)),
......@@ -157,13 +162,11 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.ANGLEDRIVE_RATIO, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.ANGLEDRIVE_CERTIFICATION_METHOD, typeof(string)),
Tuple.Create(SumDataFields.ANGLEDRIVE_CERTIFICATION_NUMBER, typeof(string)),
Tuple.Create(SumDataFields.AVERAGE_ANGLEDRIVE_EFFICIENCY, typeof(double)),
Tuple.Create(SumDataFields.AXLE_MANUFACTURER, typeof(string)),
Tuple.Create(SumDataFields.AXLE_MODEL, typeof(string)),
Tuple.Create(SumDataFields.AXLE_RATIO, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AXLEGEAR_CERTIFICATION_METHOD, typeof(string)),
Tuple.Create(SumDataFields.AXLEGEAR_CERTIFICATION_NUMBER, typeof(string)),
Tuple.Create(SumDataFields.AVERAGE_AXLEGEAR_EFFICIENCY, typeof(double)),
Tuple.Create(string.Format(SumDataFields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.SteeringPump), typeof(string)),
Tuple.Create(string.Format(SumDataFields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.Fan), typeof(string)),
Tuple.Create(string.Format(SumDataFields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition), typeof(string)),
......@@ -192,6 +195,13 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.P_FCMAP_POS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_FCMAP_POS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_FCMAP_NEG, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.MAX_ENGINE_SPEED, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVG_ENGINE_SPEED, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_WHR_EL, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_WHR_MECH, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_ICE_START, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_AUX_ESS_missing, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_ENGINE_EFFICIENCY, typeof(double)),
};
public static readonly Tuple<string, Type>[] VehilceColumns = {
......@@ -200,6 +210,14 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.E_ROLL, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_GRAD, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_POWERTRAIN_INERTIA, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.MAX_ACCELERATION, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.MAX_DECELERATION, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.MAX_SPEED, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.TOTAL_VEHICLE_MASS, typeof(ConvertedSI)),
};
public static readonly Tuple<string, Type>[] BusVehicleColumns = {
Tuple.Create(SumDataFields.PassengerCount, typeof(double)),
};
public static readonly Tuple<string, Type>[] ClutchColumns = {
......@@ -208,21 +226,32 @@ namespace TUGraz.VectoCore.OutputData
public static readonly Tuple<string, Type>[] GearboxColumns = {
Tuple.Create(SumDataFields.NUM_GEARSHIFTS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_GBX_LOSS, typeof(ConvertedSI))
Tuple.Create(SumDataFields.E_GBX_LOSS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_GEARBOX_EFFICIENCY, typeof(double)),
};
public static readonly Tuple<string, Type>[] GearboxColumns_AT = {
Tuple.Create(SumDataFields.NUM_GEARSHIFTS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_GBX_LOSS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_SHIFT_LOSS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_GEARBOX_EFFICIENCY, typeof(double)),
};
public static readonly Tuple<string, Type>[] IEPCTransmissionColumns = { };
public static readonly Tuple<string, Type>[] TorqueConverterColumns = {
Tuple.Create(SumDataFields.E_TC_LOSS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP, typeof(double)),
Tuple.Create(SumDataFields.AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP, typeof(double)),
};
public static readonly Tuple<string, Type>[] AngledriveColumns = {
Tuple.Create(SumDataFields.E_ANGLE_LOSS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_ANGLEDRIVE_EFFICIENCY, typeof(double)),
};
public static readonly Tuple<string, Type>[] AxlegearColumns = {
Tuple.Create(SumDataFields.E_AXL_LOSS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AVERAGE_AXLEGEAR_EFFICIENCY, typeof(double)),
};
public static readonly Tuple<string, Type>[] RetarderColumns = {
......@@ -288,10 +317,35 @@ namespace TUGraz.VectoCore.OutputData
Tuple.Create(SumDataFields.E_WHEEL, typeof(ConvertedSI)),
};
public static readonly Tuple<string, Type>[] BusAuxiliariesSignals = {
Tuple.Create(SumDataFields.AirGenerated, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.AirConsumed, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_AuxHeater, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_ES_consumed, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_ES_generated, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_ES_mech_corr, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_HVAC_El, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_HVAC_Mech, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_BusAux_PS_corr, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_PS_CompressorOff, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.E_PS_CompressorOn, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.Delta_E_BusAux_Battery, typeof(ConvertedSI)),
};
public static readonly Tuple<string, Type>[] PWheelCycleColumns = {
Tuple.Create(SumDataFields.P_WHEEL, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.P_WHEEL_POS, typeof(ConvertedSI)),
Tuple.Create(SumDataFields.TOTAL_VEHICLE_MASS, typeof(ConvertedSI)),
};
private object _tableLock = new object();
internal readonly DataTable Table;
private readonly ISummaryWriter _sumWriter;
private List<string> fcCols = new List<string>();
protected HashSet<string> FcCols = new HashSet<string>();
protected HashSet<string> GearColumns = new HashSet<string>();
protected HashSet<string> AuxColumns = new HashSet<string>();
/// <summary>
/// Initializes a new instance of the <see cref="SummaryDataContainer"/> class.
......@@ -313,13 +367,18 @@ namespace TUGraz.VectoCore.OutputData
CreateColumns(CombustionEngineColumns);
UpdateTableColumns(runData.EngineData);
break;
case BusAuxiliariesAdapter _:
CreateColumns(BusAuxiliariesSignals);
break;
case EngineAuxiliary _:
break;
case IClutch _:
CreateColumns(ClutchColumns);
break;
case IGearbox _ when runData.JobType != VectoSimulationJobType.IEPC_E && runData.JobType != VectoSimulationJobType.IEPC_S:
CreateColumns(GearboxColumns);
CreateColumns(runData.GearboxData.Type.IsOneOf(GearboxType.ATPowerSplit, GearboxType.ATSerial)
? GearboxColumns_AT
: GearboxColumns);
CreateGearTimeShareColumns(runData.GearboxData.GearList);
break;
case IGearbox _ when runData.JobType == VectoSimulationJobType.IEPC_E:
......@@ -351,8 +410,14 @@ namespace TUGraz.VectoCore.OutputData
case IDriver _:
//CreateColumns(DriverSignals);
break;
case PWheelCycle _:
CreateColumns(PWheelCycleColumns);
break;
case IVehicle _:
CreateColumns(VehilceColumns);
if (runData.VehicleData.VehicleCategory.IsBus()) {
CreateColumns(BusVehicleColumns);
}
break;
case IElectricMotor c3 when c3.Position == PowertrainPosition.IEPC:
CreateElectricMotorColumns(c3, runData, IEPCColumns);
......@@ -386,6 +451,7 @@ namespace TUGraz.VectoCore.OutputData
return;
}
Table.Columns.Add(colName, typeof(ConvertedSI));
AuxColumns.Add(colName);
}
}
......@@ -402,14 +468,20 @@ namespace TUGraz.VectoCore.OutputData
private void CreateGearTimeShareColumns(GearList gears)
{
lock (Table) {
Table.Columns.AddRange(gears
var gearColNames = gears
.Select(x => string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, x.Gear))
.Concat(new [] {string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, 0)}).Distinct()
.Concat(new[] { string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, 0) }).Distinct()
.Where(x => !Table.Columns.Contains(x)).Select(x => new DataColumn(x, typeof(ConvertedSI)))
.ToArray());
.ToArray();
Table.Columns.AddRange(gearColNames);
foreach (var gearColName in gearColNames) {
GearColumns.Add(gearColName.ColumnName);
}
// gearColNames.Select(x => GearColumns.Add(x.ColumnName));
}
}
protected internal void CreateColumns(Tuple<string, Type>[] cols)
{
lock (Table) {
......@@ -422,7 +494,6 @@ namespace TUGraz.VectoCore.OutputData
{
var cols = new List<string>();
cols.AddRange(new[] {
SumDataFields.SORT,
SumDataFields.JOB,
SumDataFields.INPUTFILE,
SumDataFields.CYCLE,
......@@ -486,11 +557,11 @@ namespace TUGraz.VectoCore.OutputData
SumDataFields.AXLE_MODEL,
SumDataFields.AXLE_RATIO
});
cols.AddRange(new[] {
Constants.Auxiliaries.IDs.SteeringPump, Constants.Auxiliaries.IDs.Fan,
Constants.Auxiliaries.IDs.HeatingVentilationAirCondition,
Constants.Auxiliaries.IDs.PneumaticSystem, Constants.Auxiliaries.IDs.ElectricSystem
}.Select(x => string.Format(SumDataFields.E_AUX_FORMAT, x)));
cols.AddRange(new[] {
Constants.Auxiliaries.IDs.SteeringPump, Constants.Auxiliaries.IDs.Fan,
Constants.Auxiliaries.IDs.HeatingVentilationAirCondition,
Constants.Auxiliaries.IDs.PneumaticSystem, Constants.Auxiliaries.IDs.ElectricSystem
}.Select(x => string.Format(SumDataFields.AUX_TECH_FORMAT, x)));
cols.AddRange(new[] {
SumDataFields.TCU_MODEL,
......@@ -504,20 +575,23 @@ namespace TUGraz.VectoCore.OutputData
SumDataFields.ALTITUDE_DELTA,
});
cols.AddRange(fcCols);
cols.AddRange(FcCols);
cols.AddRange(new[] {
SumDataFields.CO2_KM,
SumDataFields.CO2_TKM,
SumDataFields.CO2_M3KM,
SumDataFields.CO2_PKM,
cols.AddRange(new[] {
SumDataFields.CO2_KM,
SumDataFields.CO2_TKM,
SumDataFields.CO2_M3KM,
SumDataFields.CO2_PKM,
SumDataFields.P_WHEEL,
SumDataFields.P_WHEEL_POS,
SumDataFields.P_FCMAP,
SumDataFields.P_WHEEL_POS,
SumDataFields.P_FCMAP,
SumDataFields.P_FCMAP_POS,
SumDataFields.E_FCMAP_POS,
SumDataFields.E_FCMAP_NEG,
SumDataFields.E_POWERTRAIN_INERTIA,
SumDataFields.E_FCMAP_POS,
SumDataFields.E_FCMAP_NEG,
SumDataFields.E_POWERTRAIN_INERTIA,
});
cols.AddRange(AuxColumns.OrderBy(x => x));
cols.AddRange(new[] {
SumDataFields.E_AUX,
SumDataFields.E_AUX_EL_HV,
SumDataFields.E_CLUTCH_LOSS,
......@@ -589,6 +663,7 @@ namespace TUGraz.VectoCore.OutputData
SumDataFields.AIRDRAG_CERTIFICATION_NUMBER,
SumDataFields.AIRDRAG_CERTIFICATION_METHOD,
});
cols.AddRange(GearColumns.OrderBy(x => x));
return cols.Where(x => Table.Columns.Contains(x)).ToArray();
}
......@@ -753,7 +828,7 @@ namespace TUGraz.VectoCore.OutputData
var col = new DataColumn(colName, typeof(ConvertedSI));
Table.Columns.Add(col);
col.SetOrdinal(Table.Columns.IndexOf(SumDataFields.ALTITUDE_DELTA) + 1);
fcCols.Add(colName);
FcCols.Add(colName);
}
}
}
......
......@@ -567,10 +567,10 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
Assert.IsTrue(run.FinishedWithoutErrors);
Assert.IsTrue(modData.Rows.Count > 0);
Assert.That(modData.Columns.Contains(ModalResultField.P_ret_loss.GetName()));
Assert.That(modData.Columns.Contains(ModalResultField.P_retarder_in.GetName()));
Assert.That(modData.Rows.Cast<DataRow>().All(r => r.Field<Watt>(ModalResultField.P_ret_loss.GetName()) is null));
Assert.That(modData.Rows.Cast<DataRow>().All(r => r.Field<Watt>(ModalResultField.P_retarder_in.GetName()) is null));
Assert.IsFalse(modData.Columns.Contains(ModalResultField.P_ret_loss.GetName()));
Assert.IsFalse(modData.Columns.Contains(ModalResultField.P_retarder_in.GetName()));
//Assert.That(modData.Rows.Cast<DataRow>().All(r => r.Field<Watt>(ModalResultField.P_ret_loss.GetName()) is null));
//Assert.That(modData.Rows.Cast<DataRow>().All(r => r.Field<Watt>(ModalResultField.P_retarder_in.GetName()) is null));
}
[TestCase]
......
......@@ -90,6 +90,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>(),
Cycle = new DrivingCycleData() {
Name = "MockCycle",
CycleType = CycleType.DistanceBased
},
DriverData = new DriverData() {
EngineStopStart = new DriverData.EngineStopStartData(),
......@@ -103,10 +104,11 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
modData.AddAuxiliary("STP");
modData.AddAuxiliary("ES");
modData.AddAuxiliary("AC");
modData.Data.CreateColumns(ModalResults.DriverSignals);
//modData.Data.CreateColumns(ModalResults.DriverSignals);
modData.Data.CreateCombustionEngineColumns(runData);
var sumWriter = new SummaryDataContainer(fileWriter);
sumWriter.UpdateTableColumns(runData.EngineData);
var container = new VehicleContainer(ExecutionMode.Declaration, modData,
sumWriter) { RunData = runData};
var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\LongHaul_short.vdri", CycleType.DistanceBased, false);
......
......@@ -165,7 +165,12 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
IdleSpeed = 560.RPMtoRad(),
Inertia = 1.SI<KilogramSquareMeter>(),
EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime,
FullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>() { { 0, fullLoadCurve }, { 1, fullLoadCurve } }
FullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>() { { 0, fullLoadCurve }, { 1, fullLoadCurve } },
Fuels = new List<CombustionEngineFuelData>() {
new CombustionEngineFuelData() {
FuelData = FuelData.Diesel
}
}
},
GearboxData = new GearboxData { Gears = new Dictionary<uint, GearData> { { 2, new GearData { Ratio = 3.5 } } } },
Retarder = new RetarderData(),
......
......@@ -1805,6 +1805,13 @@ namespace TUGraz.VectoCore.Tests.Reports
var modData = new ModalDataContainer(runData, writer, null) {
WriteModalResults = true
};
modData.Data.CreateCombustionEngineColumns(runData);
modData.Data.CreateColumns(ModalResults.DriverSignals);
modData.Data.CreateColumns(ModalResults.WheelSignals);
modData.Data.CreateColumns(ModalResults.DCDCConverterSignals);
modData.Data.CreateColumns(ModalResults.BusAuxiliariesSignals);
modData.Data.CreateElectricMotorColumns(runData.ElectricMachinesData.FirstOrDefault().Item1, null, ModalResults.ElectricMotorSignals);
modData.Data.CreateColumns(ModalResults.BatterySignals);
var fuel = runData.EngineData.Fuels[0];
......
......@@ -388,6 +388,7 @@ namespace TUGraz.VectoCore.Tests.Reports
jobContainer.AddRuns(runsFactory);
var modData = new List<Tuple<ModalResults, double>>();
VectoRunData runData = null;
foreach (var run in jobContainer.Runs) {
var distanceCycle = ((VehicleContainer)run.Run.GetContainer()).DrivingCycleInfo as DistanceBasedDrivingCycle;
if (distanceCycle != null) {
......@@ -398,6 +399,9 @@ namespace TUGraz.VectoCore.Tests.Reports
if (cycle != null)
modData.Add(Tuple.Create(((ModalDataContainer)run.Run.GetContainer().ModalData).Data,
cycle.Data.Entries.Last().Time.Value()));
if (runData == null) {
runData = run.Run.GetContainer().RunData;
}
}
var auxKeys =
new Dictionary<string, DataColumn>(
......@@ -432,10 +436,11 @@ namespace TUGraz.VectoCore.Tests.Reports
}
}
AssertSumDataIntegrity(sumData, mode, disatanceBased);
AssertSumDataIntegrity(sumData, mode, disatanceBased, runData);
}
private static void AssertSumDataIntegrity(SummaryDataContainer sumData, ExecutionMode mode, bool distanceBased)
private static void AssertSumDataIntegrity(SummaryDataContainer sumData, ExecutionMode mode,
bool distanceBased, VectoRunData runData)
{
Assert.IsTrue(sumData.Table.Rows.Count > 0);
......@@ -469,11 +474,11 @@ namespace TUGraz.VectoCore.Tests.Reports
var eFcMapNeg = ((ConvertedSI)row[SumDataFields.E_FCMAP_NEG]);
var ePowertrainInertia = distanceBased ? ((ConvertedSI)row[SumDataFields.E_POWERTRAIN_INERTIA]) : new ConvertedSI(0, "");
var eAux = ((ConvertedSI)row[SumDataFields.E_AUX]);
var eClutchLoss = ((ConvertedSI)row[SumDataFields.E_CLUTCH_LOSS]);
var eClutchLoss = runData.GearboxData.Type.AutomaticTransmission() ? new ConvertedSI(0, "") : ((ConvertedSI)row[SumDataFields.E_CLUTCH_LOSS]);
var eTcLoss = row.Table.Columns.Contains(SumDataFields.E_TC_LOSS) ? ((ConvertedSI)row[SumDataFields.E_TC_LOSS]) : new ConvertedSI(0, "");
//var eShiftLoss = ((SI)row[SummaryDataContainer.E_SHIFT_LOSS]);
var eGbxLoss = ((ConvertedSI)row[SumDataFields.E_GBX_LOSS]);
var eRetLoss = ((ConvertedSI)row[SumDataFields.E_RET_LOSS]);
var eRetLoss = runData.Retarder.Type.IsDedicatedComponent() ? ((ConvertedSI)row[SumDataFields.E_RET_LOSS]) : new ConvertedSI(0, "");
var eAngleLoss = row.Table.Columns.Contains(SumDataFields.E_ANGLE_LOSS) ? ((ConvertedSI)row[SumDataFields.E_ANGLE_LOSS]) : new ConvertedSI(0, "");
var eAxlLoss = ((ConvertedSI)row[SumDataFields.E_AXL_LOSS]);
var eBrakeLoss = distanceBased ? ((ConvertedSI)row[SumDataFields.E_BRAKE]) : new ConvertedSI(0, "");
......@@ -873,10 +878,14 @@ namespace TUGraz.VectoCore.Tests.Reports
jobContainer.AddRuns(runsFactory);
var modData = new List<Tuple<ModalResults, Meter>>();
VectoRunData runData = null;
foreach (var run in jobContainer.Runs) {
modData.Add(Tuple.Create(((ModalDataContainer)run.Run.GetContainer().ModalData).Data,
((DistanceBasedDrivingCycle)((VehicleContainer)run.Run.GetContainer()).DrivingCycleInfo).Data.Entries.Last()
.Distance));
if (runData == null) {
runData = run.Run.GetContainer().RunData;
}
}
var auxKeys =
new Dictionary<string, DataColumn>(
......@@ -889,14 +898,14 @@ namespace TUGraz.VectoCore.Tests.Reports
modalResults.Item1, auxKeys, modalResults.Item2,
FuelConsumptionMapReader.Create(
((IEngineeringInputDataProvider)inputData)
.JobInputData.Vehicle.Components.EngineInputData.EngineModes.First().Fuels.First().FuelConsumptionMap), true);
.JobInputData.Vehicle.Components.EngineInputData.EngineModes.First().Fuels.First().FuelConsumptionMap), true, runData);
}
AssertSumDataIntegrity(sumData, ExecutionMode.Engineering, true);
AssertSumDataIntegrity(sumData, ExecutionMode.Engineering, true, runData);
}
private static void AssertModDataIntegrityAT(ModalResults modData, Dictionary<string, DataColumn> auxKeys,
Meter totalDistance, FuelConsumptionMap consumptionMap, bool atGbx)
Meter totalDistance, FuelConsumptionMap consumptionMap, bool atGbx, VectoRunData runData)
{
Assert.IsTrue(modData.Rows.Count > 0);
......@@ -936,12 +945,12 @@ namespace TUGraz.VectoCore.Tests.Reports
var pLossGbx = (Watt)row[ModalResultField.P_gbx_loss.GetName()];
var pGbxIn = (Watt)row[ModalResultField.P_gbx_in.GetName()];
var pLossAxle = (Watt)row[ModalResultField.P_axle_loss.GetName()];
var pLossAngle = row[ModalResultField.P_angle_loss.GetName()] is DBNull
var pLossAngle = runData.AngledriveData?.Type != AngledriveType.SeparateAngledrive
? 0.SI<Watt>()
: (Watt)row[ModalResultField.P_angle_loss.GetName()];
var pAxleIn = (Watt)row[ModalResultField.P_axle_in.GetName()];
var pLossRet = row[ModalResultField.P_ret_loss.GetName()] is DBNull ? 0.SI<Watt>() : (Watt)row[ModalResultField.P_ret_loss.GetName()];
var pRetIn = row[ModalResultField.P_retarder_in.GetName()] is DBNull ? pAxleIn : (Watt)row[ModalResultField.P_retarder_in.GetName()];
var pLossRet = runData.Retarder.Type.IsDedicatedComponent() ? (Watt)row[ModalResultField.P_ret_loss.GetName()] : 0.SI<Watt>();
var pRetIn = runData.Retarder.Type.IsDedicatedComponent() ? (Watt)row[ModalResultField.P_retarder_in.GetName()] : pAxleIn;
var pGbxInertia = (Watt)row[ModalResultField.P_gbx_inertia.GetName()];
var pShiftLoss = row[ModalResultField.P_gbx_shift_loss.GetName()] is DBNull
? 0.SI<Watt>()
......
......@@ -107,11 +107,12 @@ namespace TUGraz.VectoCore.Tests.Utils
}
CollectionAssert.AreEqual(expectedCols, actualCols,
"Moddata {0}: Columns differ:\nExpected: {1}\nMissing:{2},\nToo Much:{3}",
"Moddata {0}: Columns differ:\nActual: {4}\nExpected: {1}\nMissing:{2},\nToo Much:{3}",
result.actualFile,
expectedCols.Join(),
expectedCols.Except(actualCols).Join(),
actualCols.Except(expectedCols).Join());
actualCols.Except(expectedCols).Join(),
actualCols.Join());
for (var i = 0; testRowcount && i < expected.Rows.Count; i++) {
var expectedRow = expected.Rows[i];
......@@ -139,11 +140,12 @@ namespace TUGraz.VectoCore.Tests.Utils
var expectedCols = expected.Columns.Cast<DataColumn>().Select(x => x.ColumnName).OrderBy(x => x).ToList();
CollectionAssert.AreEqual(expectedCols, actualCols,
"SUM FILE {0}: Columns differ:\nExpected: {1}\nMissing:{2},\nToo Much:{3}",
"SUM FILE {0}: Columns differ:\nActual: {4}\nExpected: {1}\nMissing:{2},\nToo Much:{3}",
actualFile,
expectedCols.Join(),
expectedCols.Except(actualCols).Join(),
actualCols.Except(expectedCols).Join());
actualCols.Except(expectedCols).Join(),
actualCols.Join());
for (var i = 0; i < expected.Rows.Count; i++) {
var expectedRow = expected.Rows[i];
......
......@@ -168,7 +168,7 @@ namespace TUGraz.VectoCore.Tests.XML
TestPrimaryBusParametersSequenceGroup(vehicle);
Assert.AreEqual(600.RPMtoRad(), vehicle.EngineIdleSpeed);
TestRetarderSequenceGroup(vehicle);
Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType);
Assert.AreEqual(AngledriveType.None, vehicle.AngledriveType);
Assert.AreEqual(true, vehicle.ZeroEmissionVehicle);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment