Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit fefb087d authored by Stefanos DOUMPOULAKIS's avatar Stefanos DOUMPOULAKIS
Browse files

Merge branch 'fix/660_retarderlossmap_rb' into 'amdm2/develop'

Fix retarder loss map error in completed vehicle simulation

See merge request vecto/vecto!228
parents 563eb181 905844ca
No related branches found
No related tags found
No related merge requests found
Showing
with 177 additions and 86 deletions
...@@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener ...@@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener
private readonly IDriverDataAdapterBus _driverDataAdapter = new CompletedBusGenericDriverDataAdapter(); private readonly IDriverDataAdapterBus _driverDataAdapter = new CompletedBusGenericDriverDataAdapter();
//protected readonly IVehicleDataAdapter _vehicleDataAdapter = new CompletedBusGenericVehicleDataAdapter(); //protected readonly IVehicleDataAdapter _vehicleDataAdapter = new CompletedBusGenericVehicleDataAdapter();
private readonly IAxleGearDataAdapter _axleGearDataAdapter = new GenericCompletedBusAxleGearDataAdapter(); private readonly IAxleGearDataAdapter _axleGearDataAdapter = new GenericCompletedBusAxleGearDataAdapter();
private readonly IRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter(); private readonly IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter(); private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
private readonly IAngledriveDataAdapter _angledriveDataAdapter = new GenericAngledriveDataAdapter(); private readonly IAngledriveDataAdapter _angledriveDataAdapter = new GenericAngledriveDataAdapter();
#endregion #endregion
...@@ -106,7 +106,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener ...@@ -106,7 +106,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener
public RetarderData CreateRetarderData(IRetarderInputData retarderData, ArchitectureID archID, public RetarderData CreateRetarderData(IRetarderInputData retarderData, ArchitectureID archID,
IIEPCDeclarationInputData iepcInputData) IIEPCDeclarationInputData iepcInputData)
{ {
return _retarderDataAdapter.CreateRetarderData(retarderData, archID, iepcInputData); throw new NotImplementedException("No longer applicable to buses.");
}
public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
{
return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
} }
public virtual IList<Tuple<PowertrainPosition, ElectricMotorData>> CreateElectricMachines(IElectricMachinesDeclarationInputData electricMachines, IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> torqueLimits, public virtual IList<Tuple<PowertrainPosition, ElectricMotorData>> CreateElectricMachines(IElectricMachinesDeclarationInputData electricMachines, IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> torqueLimits,
......
...@@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry ...@@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
private readonly IDriverDataAdapter _driverDataAdapter = new LorryDriverDataAdapter(); private readonly IDriverDataAdapter _driverDataAdapter = new LorryDriverDataAdapter();
//protected readonly IVehicleDataAdapter _vehicleDataAdapter = new LorryVehicleDataAdapter(); //protected readonly IVehicleDataAdapter _vehicleDataAdapter = new LorryVehicleDataAdapter();
private readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter(); private readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
private readonly IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter(); private readonly IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter(); private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
private IAngledriveDataAdapter _angleDriveDataAdapter = new AngledriveDataAdapter(); private IAngledriveDataAdapter _angleDriveDataAdapter = new AngledriveDataAdapter();
...@@ -219,6 +219,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry ...@@ -219,6 +219,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
{ {
return ElectricMachinesDataAdapter.CreateIEPCElectricMachines(iepc, averageVoltage); return ElectricMachinesDataAdapter.CreateIEPCElectricMachines(iepc, averageVoltage);
} }
public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
{
return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
}
} }
public class Conventional : LorryBase public class Conventional : LorryBase
......
...@@ -16,8 +16,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -16,8 +16,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{ {
public interface IDeclarationDataAdapter public interface IDeclarationDataAdapter
{ {
VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission first, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> keyValuePair, bool allowVocational); VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission first, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> keyValuePair, bool allowVocational);
GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData,
...@@ -108,6 +106,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -108,6 +106,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
GearboxData gearboxData, CombustionEngineData engineData, GearboxData gearboxData, CombustionEngineData engineData,
IList<Tuple<PowertrainPosition, ElectricMotorData>> runDataElectricMachinesData, IList<Tuple<PowertrainPosition, ElectricMotorData>> runDataElectricMachinesData,
ArchitectureID architectureId); ArchitectureID architectureId);
RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun);
} }
public interface IGenericCompletedBusDeclarationDataAdapter : IDeclarationDataAdapter public interface IGenericCompletedBusDeclarationDataAdapter : IDeclarationDataAdapter
...@@ -135,6 +135,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -135,6 +135,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
GearboxData gearboxData, CombustionEngineData engineData, GearboxData gearboxData, CombustionEngineData engineData,
IList<Tuple<PowertrainPosition, ElectricMotorData>> runDataElectricMachinesData, ArchitectureID architectureId); IList<Tuple<PowertrainPosition, ElectricMotorData>> runDataElectricMachinesData, ArchitectureID architectureId);
RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun);
} }
public interface ISpecificCompletedBusDeclarationDataAdapter public interface ISpecificCompletedBusDeclarationDataAdapter
...@@ -177,5 +178,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -177,5 +178,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
SuperCapData runDataSuperCapData, Kilogram vehicleMass, OvcHevMode ovcMode, SuperCapData runDataSuperCapData, Kilogram vehicleMass, OvcHevMode ovcMode,
LoadingType loading, VehicleClass vehicleClass, MissionType missionType, TableData boostingLimitations, LoadingType loading, VehicleClass vehicleClass, MissionType missionType, TableData boostingLimitations,
GearboxData gearboxData, CombustionEngineData engineData, IList<Tuple<PowertrainPosition, ElectricMotorData>> emData, ArchitectureID architectureId); GearboxData gearboxData, CombustionEngineData engineData, IList<Tuple<PowertrainPosition, ElectricMotorData>> emData, ArchitectureID architectureId);
RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun);
} }
} }
\ No newline at end of file
...@@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus ...@@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
//protected readonly IVehicleDataAdapter _vehicleDataAdapter = new PrimaryBusVehicleDataAdapter(); //protected readonly IVehicleDataAdapter _vehicleDataAdapter = new PrimaryBusVehicleDataAdapter();
protected readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter(); protected readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
//protected readonly IPrimaryBusAuxiliaryDataAdapter _auxDataAdapter = new PrimaryBusAuxiliaryDataAdapter(); //protected readonly IPrimaryBusAuxiliaryDataAdapter _auxDataAdapter = new PrimaryBusAuxiliaryDataAdapter();
protected readonly IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter(); protected readonly IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
protected readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter(); protected readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
private readonly IAngledriveDataAdapter _angledriveDataAdapter = new AngledriveDataAdapter(); private readonly IAngledriveDataAdapter _angledriveDataAdapter = new AngledriveDataAdapter();
...@@ -169,6 +169,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus ...@@ -169,6 +169,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
{ {
return AuxDataAdapter.CreateBusAuxiliariesData(mission, vehicleData, runData); return AuxDataAdapter.CreateBusAuxiliariesData(mission, vehicleData, runData);
} }
public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
{
return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
}
} }
public class Conventional : PrimaryBusBase public class Conventional : PrimaryBusBase
......
using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces
...@@ -8,4 +9,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen ...@@ -8,4 +9,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
RetarderData CreateRetarderData(IRetarderInputData retarder, ArchitectureID architecture, RetarderData CreateRetarderData(IRetarderInputData retarder, ArchitectureID architecture,
IIEPCDeclarationInputData iepcInputData); IIEPCDeclarationInputData iepcInputData);
} }
public interface IGenericRetarderDataAdapter : IRetarderDataAdapter
{
RetarderData CreateGenericRetarderData(IRetarderInputData retarder, VectoRunData vehicleData);
}
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ using TUGraz.VectoCommon.Utils; ...@@ -6,6 +6,7 @@ using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces;
using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents
...@@ -122,9 +123,26 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen ...@@ -122,9 +123,26 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
} }
public class GenericRetarderDataAdapter : IRetarderDataAdapter public class GenericRetarderDataAdapter : IGenericRetarderDataAdapter
{ {
private readonly GenericBusRetarderData _genericRetarderData = new GenericBusRetarderData(); private readonly GenericBusRetarderData _genericRetarderData = new GenericBusRetarderData();
public RetarderData CreateGenericRetarderData(IRetarderInputData retarder, VectoRunData vehicleData)
{
bool isBatteryElectric =
vehicleData.JobType == VectoSimulationJobType.BatteryElectricVehicle
|| vehicleData.JobType == VectoSimulationJobType.IEPC_E;
PerSecond maxMotorSpeed = isBatteryElectric
? vehicleData.ElectricMachinesData[0].Item2.EfficiencyData.MaxSpeed
: vehicleData.EngineData.FullLoadCurves[0].MaxSpeed;
double maxGbxRatio = vehicleData.GearboxData?.Gears[(uint)vehicleData.GearboxData.Gears.Count].Ratio ?? 1;
double combinedRatios = isBatteryElectric ? maxGbxRatio * vehicleData.ElectricMachinesData[0].Item2.RatioADC : maxGbxRatio;
return _genericRetarderData.CreateGenericBusRetarderData(retarder, maxMotorSpeed, combinedRatios);
}
public RetarderData CreateRetarderData(IRetarderInputData retarder, ArchitectureID architecture, public RetarderData CreateRetarderData(IRetarderInputData retarder, ArchitectureID architecture,
IIEPCDeclarationInputData iepcInputData) IIEPCDeclarationInputData iepcInputData)
{ {
......
...@@ -30,7 +30,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus ...@@ -30,7 +30,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
private IDriverDataAdapterBus _driverDataAdapter = new PrimaryBusDriverDataAdapter(); private IDriverDataAdapterBus _driverDataAdapter = new PrimaryBusDriverDataAdapter();
private SingleBusVehicleDataAdapter _vehicleDataAdapter = new SingleBusVehicleDataAdapter(); private SingleBusVehicleDataAdapter _vehicleDataAdapter = new SingleBusVehicleDataAdapter();
private IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter(); private IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
private IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter(); private IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
private IAirdragDataAdapter _airdragDataAdapter = new SingleBusAirdragDataAdapter(); private IAirdragDataAdapter _airdragDataAdapter = new SingleBusAirdragDataAdapter();
private IAngledriveDataAdapter _angledriveDataAdapter = new AngledriveDataAdapter(); private IAngledriveDataAdapter _angledriveDataAdapter = new AngledriveDataAdapter();
...@@ -175,6 +175,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus ...@@ -175,6 +175,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
VectoSimulationJobType jobType, bool ovc, Action<BatterySystemData> setBatteryData, VectoSimulationJobType jobType, bool ovc, Action<BatterySystemData> setBatteryData,
Action<SuperCapData> setSuperCapData); Action<SuperCapData> setSuperCapData);
public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
{
return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
}
#endregion #endregion
} }
......
...@@ -265,13 +265,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -265,13 +265,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType, PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType,
primarySegment.VehicleClass, mission.BusParameter.VehicleLength, primarySegment.VehicleClass, mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
simulationRunData.Retarder =
DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
simulationRunData.EngineData.FuelMode = 0; simulationRunData.EngineData.FuelMode = 0;
simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
simulationRunData.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, simulationRunData);
var shiftStrategyName = var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type, PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type,
PrimaryVehicle.VehicleType); PrimaryVehicle.VehicleType);
...@@ -282,6 +278,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -282,6 +278,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
DataAdapterGeneric.CreateGearshiftData((simulationRunData.AxleGearData?.AxleGear.Ratio ?? 1.0) * DataAdapterGeneric.CreateGearshiftData((simulationRunData.AxleGearData?.AxleGear.Ratio ?? 1.0) *
(simulationRunData.AngledriveData?.Angledrive.Ratio ?? 1.0), (simulationRunData.AngledriveData?.Angledrive.Ratio ?? 1.0),
PrimaryVehicle.EngineIdleSpeed, gbx.Type, gbx.Gears.Count); PrimaryVehicle.EngineIdleSpeed, gbx.Type, gbx.Gears.Count);
simulationRunData.Retarder =
DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, simulationRunData);
simulationRunData.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, simulationRunData);
return simulationRunData; return simulationRunData;
} }
...@@ -305,14 +305,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -305,14 +305,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.AuxiliaryInputData, PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
simulationRunData.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
simulationRunData.EngineData.FuelMode = 0; simulationRunData.EngineData.FuelMode = 0;
simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
simulationRunData.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
simulationRunData);
CreateGearboxAndGearshiftData(simulationRunData); CreateGearboxAndGearshiftData(simulationRunData);
simulationRunData.Retarder =
DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, simulationRunData);
simulationRunData.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, simulationRunData);
return simulationRunData; return simulationRunData;
} }
...@@ -457,9 +458,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -457,9 +458,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
iepcData.ForEach(iepc => rd.ElectricMachinesData.Add(iepc)); iepcData.ForEach(iepc => rd.ElectricMachinesData.Add(iepc));
} }
var primaryBusAuxiliaries = PrimaryVehicle.Components.BusAuxiliaries; var primaryBusAuxiliaries = PrimaryVehicle.Components.BusAuxiliaries;
rd.VehicleData = rd.VehicleData =
...@@ -476,15 +474,14 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -476,15 +474,14 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType, PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType,
primarySegment.VehicleClass, mission.BusParameter.VehicleLength, primarySegment.VehicleClass, mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
rd.Retarder =
DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
rd.EngineData.FuelMode = 0; rd.EngineData.FuelMode = 0;
rd.VehicleData.VehicleClass = _segment.VehicleClass; rd.VehicleData.VehicleClass = _segment.VehicleClass;
rd.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
CreateGearboxAndGearshiftData(rd); CreateGearboxAndGearshiftData(rd);
rd.Retarder =
DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
rd.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
rd.HybridStrategyParameters = rd.HybridStrategyParameters =
DataAdapterGeneric.CreateHybridStrategy(rd.BatteryData, rd.SuperCapData, rd.VehicleData.TotalVehicleMass, DataAdapterGeneric.CreateHybridStrategy(rd.BatteryData, rd.SuperCapData, rd.VehicleData.TotalVehicleMass,
...@@ -543,12 +540,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -543,12 +540,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.AuxiliaryInputData, PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
rd.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
rd.EngineData.FuelMode = 0; rd.EngineData.FuelMode = 0;
rd.VehicleData.VehicleClass = _segment.VehicleClass; rd.VehicleData.VehicleClass = _segment.VehicleClass;
rd.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
rd);
CreateGearboxAndGearshiftData(rd); CreateGearboxAndGearshiftData(rd);
...@@ -560,6 +553,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -560,6 +553,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
rd.Loading, rd.Loading,
rd.VehicleData.VehicleClass, rd.VehicleData.VehicleClass,
rd.Mission.MissionType); rd.Mission.MissionType);
rd.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
rd.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
rd);
SetOvcModeProperties(ovcMode, rd); SetOvcModeProperties(ovcMode, rd);
...@@ -693,13 +690,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -693,13 +690,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType, PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType,
primarySegment.VehicleClass, mission.BusParameter.VehicleLength, primarySegment.VehicleClass, mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
rd.Retarder =
DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
rd.EngineData.FuelMode = 0; rd.EngineData.FuelMode = 0;
rd.VehicleData.VehicleClass = _segment.VehicleClass; rd.VehicleData.VehicleClass = _segment.VehicleClass;
rd.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
var shiftStrategyName = var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type, PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type,
PrimaryVehicle.VehicleType); PrimaryVehicle.VehicleType);
...@@ -710,6 +702,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -710,6 +702,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
DataAdapterGeneric.CreateGearshiftData((rd.AxleGearData?.AxleGear.Ratio ?? 1.0) * DataAdapterGeneric.CreateGearshiftData((rd.AxleGearData?.AxleGear.Ratio ?? 1.0) *
(rd.AngledriveData?.Angledrive.Ratio ?? 1.0), (rd.AngledriveData?.Angledrive.Ratio ?? 1.0),
PrimaryVehicle.EngineIdleSpeed, gbx.Type, gbx.Gears.Count); PrimaryVehicle.EngineIdleSpeed, gbx.Type, gbx.Gears.Count);
rd.Retarder =
DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
rd.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
rd.HybridStrategyParameters = DataAdapterGeneric.CreateHybridStrategy( rd.HybridStrategyParameters = DataAdapterGeneric.CreateHybridStrategy(
rd.BatteryData, rd.BatteryData,
rd.SuperCapData, rd.SuperCapData,
...@@ -763,12 +760,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -763,12 +760,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.AuxiliaryInputData, PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
rd.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
rd.EngineData.FuelMode = 0; rd.EngineData.FuelMode = 0;
rd.VehicleData.VehicleClass = _segment.VehicleClass; rd.VehicleData.VehicleClass = _segment.VehicleClass;
rd.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
rd);
CreateGearboxAndGearshiftData(rd); CreateGearboxAndGearshiftData(rd);
rd.HybridStrategyParameters = DataAdapterGeneric.CreateHybridStrategy( rd.HybridStrategyParameters = DataAdapterGeneric.CreateHybridStrategy(
...@@ -785,6 +778,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -785,6 +778,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
rd.ElectricMachinesData, rd.ElectricMachinesData,
PrimaryVehicle.ArchitectureID PrimaryVehicle.ArchitectureID
); );
rd.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
rd.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
rd);
SetOvcModeProperties(ovcMode, rd); SetOvcModeProperties(ovcMode, rd);
if (ovcMode == OvcHevMode.ChargeSustaining) { if (ovcMode == OvcHevMode.ChargeSustaining) {
rd.IterativeRunStrategy = new HevChargeSustainingIterativeRunStrategy(); rd.IterativeRunStrategy = new HevChargeSustainingIterativeRunStrategy();
...@@ -905,16 +903,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -905,16 +903,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles,
PrimaryVehicle.VehicleType); PrimaryVehicle.VehicleType);
result.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
result.MaxChargingPower = PrimaryVehicle.MaxChargingPower; result.MaxChargingPower = PrimaryVehicle.MaxChargingPower;
//result.EngineData.FuelMode = 0; //result.EngineData.FuelMode = 0;
result.VehicleData.VehicleClass = _segment.VehicleClass; result.VehicleData.VehicleClass = _segment.VehicleClass;
CreateGearboxAndGearshiftData(result);
result.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, result);
result.BusAuxiliaries = result.BusAuxiliaries =
DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
result); result);
CreateGearboxAndGearshiftData(result);
return result; return result;
} }
...@@ -953,16 +952,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun ...@@ -953,16 +952,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles,
PrimaryVehicle.VehicleType); PrimaryVehicle.VehicleType);
result.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
result.MaxChargingPower = PrimaryVehicle.MaxChargingPower; result.MaxChargingPower = PrimaryVehicle.MaxChargingPower;
//result.EngineData.FuelMode = 0; //result.EngineData.FuelMode = 0;
result.VehicleData.VehicleClass = _segment.VehicleClass; result.VehicleData.VehicleClass = _segment.VehicleClass;
CreateGearboxAndGearshiftData(result);
result.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, result);
result.BusAuxiliaries = result.BusAuxiliaries =
DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
result); result);
CreateGearboxAndGearshiftData(result);
return result; return result;
} }
......
...@@ -181,16 +181,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa ...@@ -181,16 +181,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
Vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, Vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
Vehicle.Length ?? mission.BusParameter.VehicleLength, Vehicle.Length ?? mission.BusParameter.VehicleLength,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType); Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
simulationRunData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.ArchitectureID, null);
simulationRunData.DriverData = DriverData; simulationRunData.DriverData = DriverData;
simulationRunData.EngineData.FuelMode = modeIdx.Value; simulationRunData.EngineData.FuelMode = modeIdx.Value;
simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
CreateGearboxAndGearshiftData(simulationRunData);
simulationRunData.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, simulationRunData);
simulationRunData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData( simulationRunData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, simulationRunData); mission, InputDataProvider.JobInputData.Vehicle, simulationRunData);
CreateGearboxAndGearshiftData(simulationRunData);
return simulationRunData; return simulationRunData;
} }
...@@ -301,7 +303,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa ...@@ -301,7 +303,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData); runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
} }
runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.ArchitectureID, Vehicle.Components.IEPC); CreateGearboxAndGearshiftData(runData);
runData.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, runData);
runData.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData, runData.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData,
Vehicle.Components.BusAuxiliaries, mission.MissionType, Vehicle.Components.BusAuxiliaries, mission.MissionType,
...@@ -310,7 +313,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa ...@@ -310,7 +313,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData( runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, runData); mission, InputDataProvider.JobInputData.Vehicle, runData);
CreateGearboxAndGearshiftData(runData);
runData.HybridStrategyParameters = runData.HybridStrategyParameters =
DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass, DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass,
...@@ -495,16 +497,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa ...@@ -495,16 +497,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
Vehicle.Length ?? mission.BusParameter.VehicleLength, Vehicle.Length ?? mission.BusParameter.VehicleLength,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.Components.AxleWheels.NumSteeredAxles,
VectoSimulationJobType.ParallelHybridVehicle);//Hardcode to override IHPC VectoSimulationJobType.ParallelHybridVehicle);//Hardcode to override IHPC
runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : Vehicle.ArchitectureID, null);
runData.DriverData = DriverData; runData.DriverData = DriverData;
runData.EngineData.FuelMode = modeIdx.Value; runData.EngineData.FuelMode = modeIdx.Value;
runData.VehicleData.VehicleClass = _segment.VehicleClass; runData.VehicleData.VehicleClass = _segment.VehicleClass;
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, runData);
CreateGearboxAndGearshiftData(runData); CreateGearboxAndGearshiftData(runData);
runData.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, runData);
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, runData);
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines( runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits, Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits,
...@@ -668,13 +670,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa ...@@ -668,13 +670,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
Vehicle.Length ?? mission.BusParameter.VehicleLength, Vehicle.Length ?? mission.BusParameter.VehicleLength,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType); Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
var emPos = result.ElectricMachinesData.First(x => x.Item1 != PowertrainPosition.GEN).Item1; var emPos = result.ElectricMachinesData.First(x => x.Item1 != PowertrainPosition.GEN).Item1;
result.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.ArchitectureID, Vehicle.Components.IEPC);
result.DriverData = DriverData; result.DriverData = DriverData;
result.VehicleData.VehicleClass = _segment.VehicleClass; result.VehicleData.VehicleClass = _segment.VehicleClass;
CreateGearboxAndGearshiftData(result);
result.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, result);
result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData( result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, result); mission, InputDataProvider.JobInputData.Vehicle, result);
CreateGearboxAndGearshiftData(result);
return result; return result;
} }
......
...@@ -167,13 +167,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus ...@@ -167,13 +167,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength, _segment.VehicleClass, PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, null);
runData.EngineData.FuelMode = modeIdx.Value; runData.EngineData.FuelMode = modeIdx.Value;
runData.VehicleData.VehicleClass = _segment.VehicleClass; runData.VehicleData.VehicleClass = _segment.VehicleClass;
CreateGearboxAndGearshiftData(runData);
runData.Retarder = DataAdapter.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, runData);
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, runData); runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, runData);
CreateGearboxAndGearshiftData(runData);
return runData; return runData;
} }
...@@ -307,7 +307,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus ...@@ -307,7 +307,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
runData.AxleGearData = DataAdapter.CreateAxleGearData(PrimaryVehicle.Components.AxleGearInputData); runData.AxleGearData = DataAdapter.CreateAxleGearData(PrimaryVehicle.Components.AxleGearInputData);
} }
runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC); CreateGearboxAndGearshiftData(runData);
runData.Retarder = DataAdapter.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, runData);
runData.Aux = DataAdapter.CreateAuxiliaryData(PrimaryVehicle.Components.AuxiliaryInputData, runData.Aux = DataAdapter.CreateAuxiliaryData(PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType,
...@@ -316,8 +317,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus ...@@ -316,8 +317,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData( runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, PrimaryVehicle, CompletedVehicle , runData); mission, PrimaryVehicle, CompletedVehicle , runData);
CreateGearboxAndGearshiftData(runData);
runData.HybridStrategyParameters = runData.HybridStrategyParameters =
DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass, DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass,
ovcMode, loading.Key, runData.VehicleData.VehicleClass, mission.MissionType); ovcMode, loading.Key, runData.VehicleData.VehicleClass, mission.MissionType);
...@@ -504,16 +503,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus ...@@ -504,16 +503,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength, PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType); PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : PrimaryVehicle.ArchitectureID, null);
runData.DriverData = DriverData; runData.DriverData = DriverData;
runData.EngineData.FuelMode = modeIdx.Value; runData.EngineData.FuelMode = modeIdx.Value;
runData.VehicleData.VehicleClass = _segment.VehicleClass; runData.VehicleData.VehicleClass = _segment.VehicleClass;
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, PrimaryVehicle, CompletedVehicle, runData);
CreateGearboxAndGearshiftData(runData); CreateGearboxAndGearshiftData(runData);
runData.Retarder = DataAdapter.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, runData);
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, PrimaryVehicle, CompletedVehicle, runData);
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines( runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
PrimaryVehicle.Components.ElectricMachines, PrimaryVehicle.ElectricMotorTorqueLimits, PrimaryVehicle.Components.ElectricMachines, PrimaryVehicle.ElectricMotorTorqueLimits,
...@@ -675,13 +673,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus ...@@ -675,13 +673,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
vehicle.Length ?? mission.BusParameter.VehicleLength, vehicle.Length ?? mission.BusParameter.VehicleLength,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType); vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
result.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
result.DriverData = DriverData; result.DriverData = DriverData;
result.VehicleData.VehicleClass = _segment.VehicleClass; result.VehicleData.VehicleClass = _segment.VehicleClass;
CreateGearboxAndGearshiftData(result);
result.Retarder = DataAdapter.CreateGenericRetarderData(vehicle.Components.RetarderInputData, result);
result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData( result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, SingleBusDataProvider.PrimaryVehicle, SingleBusDataProvider.CompletedVehicle, result); mission, SingleBusDataProvider.PrimaryVehicle, SingleBusDataProvider.CompletedVehicle, result);
CreateGearboxAndGearshiftData(result);
return result; return result;
} }
......
...@@ -74,11 +74,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl ...@@ -74,11 +74,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
: DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData); : DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData); AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
GearboxData = DataAdapter.CreateGearboxData( var vectoRun = new VectoRunData()
vehicle, new VectoRunData() { EngineData = EngineData, AxleGearData = AxlegearData, {
VehicleData = tempVehicle, Cycle = VTPCycle }, EngineData = EngineData,
null); AxleGearData = AxlegearData,
RetarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData, vehicle.ArchitectureID, vehicle.Components.IEPC); VehicleData = tempVehicle,
Cycle = VTPCycle
};
GearboxData = DataAdapter.CreateGearboxData(vehicle, vectoRun, null);
RetarderData = DataAdapter.CreateGenericRetarderData(vehicle.Components.RetarderInputData, vectoRun);
//PTOTransmissionData = //PTOTransmissionData =
// DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData); // DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData);
......
using System; using System;
using System.Collections.Generic;
using System.Data; using System.Data;
using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Models;
...@@ -11,24 +12,27 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -11,24 +12,27 @@ namespace TUGraz.VectoCore.Models.Declaration
{ {
public class GenericBusRetarderData public class GenericBusRetarderData
{ {
public RetarderData CreateGenericBusRetarderData(IRetarderInputData retarderInput, PerSecond engineSpeed, double gearboxRatio) =>
new RetarderData {
Type = retarderInput?.Type ?? RetarderType.None,
Ratio = retarderInput?.Type.IsDedicatedComponent() ?? false ? retarderInput.Ratio : 1.0,
LossMap = retarderInput?.Type.IsDedicatedComponent() ?? false
? GenerateGenericLossMap(retarderInput, engineSpeed.AsRPM, gearboxRatio) : null
};
public RetarderData CreateGenericBusRetarderData(IRetarderInputData retarderInput) => public RetarderData CreateGenericBusRetarderData(IRetarderInputData retarderInput) =>
new RetarderData { new RetarderData {
Type = retarderInput?.Type ?? RetarderType.None, Type = retarderInput?.Type ?? RetarderType.None,
Ratio = retarderInput?.Type.IsDedicatedComponent() ?? false ? retarderInput.Ratio : 1.0, Ratio = retarderInput?.Type.IsDedicatedComponent() ?? false ? retarderInput.Ratio : 1.0,
LossMap = retarderInput?.Type.IsDedicatedComponent() ?? false LossMap = retarderInput?.Type.IsDedicatedComponent() ?? false
? GenerateGenericLossMap(retarderInput.Ratio) : null ? GenerateGenericLossMap(retarderInput) : null
}; };
private RetarderLossMap GenerateGenericLossMap(double stepUpRatio) private RetarderLossMap GenerateGenericLossMap(IRetarderInputData retarderData, double engineSpeed = 0, double gearboxRatio = 0)
{ {
var retarderSpeeds = new double[] { var retarderSpeeds = GenerateRetarderSpeeds(retarderData, engineSpeed, gearboxRatio);
0, 200 , 400, 600, 900, 1200,
1600, 2000, 2500, 3000, 3500, 4000,
4500, 5000
};
var genericRetarderLosses = GetHydrodynamicRetardersLoss(retarderSpeeds, stepUpRatio); var genericRetarderLosses = GetHydrodynamicRetardersLoss(retarderSpeeds, retarderData.Ratio);
//var genericRetarderLosses = GetMagneticRetarderLoss(retarderSpeeds, stepUpRatio); //var genericRetarderLosses = GetMagneticRetarderLoss(retarderSpeeds, stepUpRatio);
var torqueLoss = new DataTable(); var torqueLoss = new DataTable();
...@@ -47,6 +51,39 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -47,6 +51,39 @@ namespace TUGraz.VectoCore.Models.Declaration
return RetarderLossMapReader.Create(torqueLoss); return RetarderLossMapReader.Create(torqueLoss);
} }
private double[] GenerateRetarderSpeeds(IRetarderInputData retarderData, double engineSpeedRPM, double gearboxRatio)
{
var SMALL_STEP = 200;
var LARGE_STEP = 500;
var LARGE_STEP_THRESHOLD = 1000;
var defaultEngineSpeed = 5000;
var maxRetarderSpeed = retarderData.Ratio * defaultEngineSpeed;
if (engineSpeedRPM != 0 && gearboxRatio != 0)
{
maxRetarderSpeed = retarderData.Ratio * engineSpeedRPM;
if (retarderData.Type == RetarderType.TransmissionOutputRetarder)
{
maxRetarderSpeed = retarderData.Ratio * (engineSpeedRPM / gearboxRatio);
}
}
var step = SMALL_STEP;
var retarderSpeeds = new List<double>();
for (int i = 0; i < maxRetarderSpeed + step; i += step)
{
retarderSpeeds.Add(i);
var currentMaxSpeed = retarderSpeeds.MaxBy(v => v);
if (currentMaxSpeed >= LARGE_STEP_THRESHOLD)
{
step = LARGE_STEP;
}
}
return retarderSpeeds.ToArray();
}
private double[] GetHydrodynamicRetardersLoss(double[] retarderSpeeds, double stepUpRatio) private double[] GetHydrodynamicRetardersLoss(double[] retarderSpeeds, double stepUpRatio)
{ {
var losses = new double[retarderSpeeds.Length]; var losses = new double[retarderSpeeds.Length];
......
...@@ -271,6 +271,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine ...@@ -271,6 +271,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
} }
} }
public PerSecond MaxSpeed => FullLoadEntries.MaxBy(e => e.EngineSpeed).EngineSpeed;
public PerSecond NTq99hSpeed => _nTq99hSpeed ?? (_nTq99hSpeed = FindEnginSpeedForTorque(0.99 * MaxTorque).Last()); public PerSecond NTq99hSpeed => _nTq99hSpeed ?? (_nTq99hSpeed = FindEnginSpeedForTorque(0.99 * MaxTorque).Last());
public PerSecond NTq99lSpeed => _nTq99lSpeed ?? (_nTq99lSpeed = FindEnginSpeedForTorque(0.99 * MaxTorque).First()); public PerSecond NTq99lSpeed => _nTq99lSpeed ?? (_nTq99lSpeed = FindEnginSpeedForTorque(0.99 * MaxTorque).First());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment