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

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

removed vehicle parameter in runDataFactory methods etc. - use Vehicle from...

removed vehicle parameter in runDataFactory  methods etc. - use Vehicle from inputDataProvider member
parent 532df2c0
No related branches found
No related tags found
No related merge requests found
Showing
with 360 additions and 374 deletions
......@@ -29,8 +29,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
protected bool _allowVocational;
private DriverData _driverdata;
protected AbstractDeclarationVectoRunDataFactory(
protected virtual IVehicleDeclarationInputData Vehicle => InputDataProvider.JobInputData.Vehicle;
protected AbstractDeclarationVectoRunDataFactory(
IDeclarationInputDataProvider dataProvider, IDeclarationReport report, bool checkJobType = true)
{
InputDataProvider = dataProvider;
......@@ -65,8 +67,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
protected abstract void Initialize();
protected abstract VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected abstract VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable);
......
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Runtime.InteropServices;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies;
using TUGraz.VectoCore.OutputData;
......@@ -33,12 +29,14 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
protected IMultistageVIFInputData DataProvider { get; }
//protected IDeclarationReport Report { get; set; }
protected IVehicleDeclarationInputData PrimaryVehicle =>
protected virtual IVehicleDeclarationInputData PrimaryVehicle =>
DataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle;
protected IVehicleDeclarationInputData CompletedVehicle => DataProvider.MultistageJobInputData.JobInputData
protected virtual IVehicleDeclarationInputData CompletedVehicle => DataProvider.MultistageJobInputData.JobInputData
.ConsolidateManufacturingStage.Vehicle;
protected override IVehicleDeclarationInputData Vehicle => throw new NotImplementedException();
public CompletedBusBase(IMultistageVIFInputData dataProvider, IDeclarationReport report,
ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific,
IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(null, report, false)
......@@ -56,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
return;
}
_segment = GetCompletedSegment(CompletedVehicle, PrimaryVehicle.AxleConfiguration);
_segment = GetCompletedSegment();
}
protected override DriverData CreateDriverData(Segment segment)
......@@ -106,10 +104,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
}
protected virtual Segment GetPrimarySegment(IVehicleDeclarationInputData primaryVehicle)
protected virtual Segment GetPrimarySegment()
{
var primarySegment = DeclarationData.PrimaryBusSegments.Lookup(
primaryVehicle.VehicleCategory, primaryVehicle.AxleConfiguration, primaryVehicle.Articulated);
PrimaryVehicle.VehicleCategory, PrimaryVehicle.AxleConfiguration, PrimaryVehicle.Articulated);
return primarySegment;
}
......@@ -126,7 +124,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
}
// create generic run data
var primarySegment = GetPrimarySegment(PrimaryVehicle);
var primarySegment = GetPrimarySegment();
var primaryMission = primarySegment.Missions.Where(
m => {
return m.BusParameter.DoubleDecker ==
......@@ -145,7 +143,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
throw new NotImplementedException("Not applicable for completed buses");
......@@ -173,17 +172,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
return primaryResult;
}
protected virtual Segment GetCompletedSegment(IVehicleDeclarationInputData vehicle, AxleConfiguration axleConfiguration)
protected virtual Segment GetCompletedSegment()
{
var segment = DeclarationData.CompletedBusSegments.Lookup(
axleConfiguration.NumAxles(), vehicle.VehicleCode, vehicle.RegisteredClass, vehicle.NumberPassengerSeatsLowerDeck,
vehicle.Height, vehicle.LowEntry);
PrimaryVehicle.AxleConfiguration.NumAxles(), CompletedVehicle.VehicleCode, CompletedVehicle.RegisteredClass, CompletedVehicle.NumberPassengerSeatsLowerDeck,
CompletedVehicle.Height, CompletedVehicle.LowEntry);
if (!segment.Found) {
throw new VectoException(
"no segment found for vehicle configruation: vehicle category: {0}, axle configuration: {1}, articulated: {2}, vehicle code: {3}, registered class: {4}, passengersLowerDeck: {5}, height: {6}, lowEntry: {7}. completed",
vehicle.VehicleCategory, axleConfiguration,
vehicle.Articulated, vehicle.VehicleCode, vehicle.RegisteredClass.GetLabel(), vehicle.NumberPassengerSeatsLowerDeck,
vehicle.Height, vehicle.LowEntry);
CompletedVehicle.VehicleCategory, PrimaryVehicle.AxleConfiguration,
CompletedVehicle.Articulated, CompletedVehicle.VehicleCode, CompletedVehicle.RegisteredClass.GetLabel(), CompletedVehicle.NumberPassengerSeatsLowerDeck,
CompletedVehicle.Height, CompletedVehicle.LowEntry);
}
return segment;
......
......@@ -140,8 +140,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
protected abstract void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle,
VectoRunData runData);
protected abstract void CreateGearboxAndGearshiftData(VectoRunData runData);
#region Implementation of IVectoRunDataFactory
......@@ -226,7 +225,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
foreach (var loading in mission.Loadings) {
var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx);
var simulationRunData = CreateVectoRunData(mission, loading, modeIdx);
yield return simulationRunData;
}
......@@ -235,8 +234,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
......@@ -248,13 +246,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
var engineMode = engineModes[modeIdx.Value];
var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
var simulationRunData = CreateCommonRunData(Vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
simulationRunData.VehicleData =
DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
simulationRunData.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
DataAdapter.CreateAirdragData(Vehicle.Components.AirdragInputData, mission, _segment);
simulationRunData.EngineData =
DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode,
......@@ -262,24 +260,24 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
simulationRunData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
CreateGearboxAndGearshiftData(vehicle, simulationRunData);
CreateGearboxAndGearshiftData(simulationRunData);
simulationRunData.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
simulationRunData.AngledriveData = DataAdapter.CreateAngledriveData(Vehicle.Components.AngledriveInputData);
simulationRunData.Aux = DataAdapter.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, vehicle.Length,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
Vehicle.Components.AuxiliaryInputData,
Vehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, Vehicle.Length,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
simulationRunData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
simulationRunData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
simulationRunData.DriverData = DriverData;
simulationRunData.PTO = mission.MissionType == MissionType.MunicipalUtility
? DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData)
: DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
? DataAdapter.CreatePTOCycleData(Vehicle.Components.GearboxInputData, Vehicle.Components.PTOTransmissionInputData)
: DataAdapter.CreatePTOTransmissionData(Vehicle.Components.PTOTransmissionInputData, Vehicle.Components.GearboxInputData);
simulationRunData.EngineData.FuelMode = modeIdx.Value;
simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
simulationRunData.VehicleData.InputData = vehicle;
simulationRunData.VehicleData.InputData = Vehicle;
return simulationRunData;
}
......@@ -289,26 +287,26 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of LorryBase
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
vehicle.EngineIdleSpeed,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count
Vehicle.EngineIdleSpeed,
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type,
Vehicle.VehicleType);
if (InputDataProvider.JobInputData.Vehicle.AxleConfiguration.AxlegearIncludedInGearbox()) {
runData.AxleGearData = DataAdapter.CreateDummyAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.GearboxInputData);
} else {
runData.AxleGearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData);
}
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -356,60 +354,59 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
foreach (var loading in mission.Loadings)
{
var simulationRunData = CreateVectoRunData(vehicle, mission, loading);
var simulationRunData = CreateVectoRunData(mission, loading);
simulationRunData.BatteryData.Batteries.ForEach(t => t.Item2.ChargeSustainingBattery = true);
yield return simulationRunData;
}
}
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var result = CreateCommonRunData(vehicle, mission, loading, _segment);
var result = CreateCommonRunData(Vehicle, mission, loading, _segment);
result.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
DataAdapter.CreateAirdragData(Vehicle.Components.AirdragInputData, mission, _segment);
result.DriverData = DriverData;
DataAdapter.CreateREESSData(
componentsElectricStorage: vehicle.Components.ElectricStorage,
vehicle.VehicleType,
componentsElectricStorage: Vehicle.Components.ElectricStorage,
Vehicle.VehicleType,
true,
(bs) => result.BatteryData = bs,
(sc) => result.SuperCapData = sc);
result.ElectricMachinesData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null);
if (vehicle.VehicleType == VectoSimulationJobType.IEPC_E) {
result.ElectricMachinesData = DataAdapter.CreateIEPCElectricMachines(vehicle.Components.IEPC,
result.ElectricMachinesData = DataAdapter.CreateElectricMachines(Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null);
if (Vehicle.VehicleType == VectoSimulationJobType.IEPC_E) {
result.ElectricMachinesData = DataAdapter.CreateIEPCElectricMachines(Vehicle.Components.IEPC,
result.BatteryData.CalculateAverageVoltage());
}
result.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
if (AxleGearRequired() || vehicle.Components.AxleGearInputData != null) {
result.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
result.AngledriveData = DataAdapter.CreateAngledriveData(Vehicle.Components.AngledriveInputData);
if (AxleGearRequired() || Vehicle.Components.AxleGearInputData != null) {
result.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
}
result.VehicleData =
DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
if (vehicle.Components.RetarderInputData != null) {
result.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData,
if (Vehicle.Components.RetarderInputData != null) {
result.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData,
result.ElectricMachinesData.First(e => e.Item1 != PowertrainPosition.GEN).Item1);
}
CreateGearboxAndGearshiftData(vehicle, result);
CreateGearboxAndGearshiftData(result);
result.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, null,
mission.MissionType, _segment.VehicleClass, vehicle.Length,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
result.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData, null,
mission.MissionType, _segment.VehicleClass, Vehicle.Length,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
var ptoTransmissionData = DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
var ptoTransmissionData = DataAdapter.CreatePTOTransmissionData(Vehicle.Components.PTOTransmissionInputData, Vehicle.Components.GearboxInputData);
var municipalPtoTransmissionData = DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData);
var municipalPtoTransmissionData = DataAdapter.CreatePTOCycleData(Vehicle.Components.GearboxInputData, Vehicle.Components.PTOTransmissionInputData);
result.PTO = mission.MissionType == MissionType.MunicipalUtility
? municipalPtoTransmissionData
......@@ -420,9 +417,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of LorryBase
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID == ArchitectureID.E2) {
if (Vehicle.ArchitectureID == ArchitectureID.E2) {
throw new ArgumentException();
}
runData.GearshiftParameters = new ShiftStrategyParameters()
......@@ -459,25 +456,25 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of BatteryElectric
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID != ArchitectureID.E2) {
throw new ArgumentException(nameof(vehicle));
if (Vehicle.ArchitectureID != ArchitectureID.E2) {
throw new ArgumentException(nameof(Vehicle));
}
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -540,19 +537,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of BatteryElectric
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
GearboxType.APTN,
vehicle.Components.IEPC.Gears.Count
Vehicle.Components.IEPC.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(GearboxType.APTN,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -573,8 +570,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
var vehicle = InputDataProvider.JobInputData.Vehicle;
var simulationRunData = CreateVectoRunData(vehicle,
null,
var simulationRunData = CreateVectoRunData(null,
new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(),
0);
......@@ -586,18 +582,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
protected override VectoRunData GetPowertrainConfigForReportInit()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
return CreateVectoRunData(vehicle, null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0);
return CreateVectoRunData(null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0);
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
throw new NotImplementedException();
}
#endregion
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
......@@ -611,7 +606,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
VehicleData = DataAdapter.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, new Segment(), null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(LoadingType.ReferenceLoad, Tuple.Create<Kilogram, double?>(0.SI<Kilogram>(), null)), _allowVocational),
InputDataHash = InputDataProvider.XMLHash
};
runData.VehicleData.InputData = vehicle;
runData.VehicleData.InputData = Vehicle;
return runData;
}
......
......@@ -55,10 +55,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
throw new VectoException(
"MaxChargingPower has to be greater than 0 if OVC is selected");
}
yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting);
yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
} else {
yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
}
}
}
......@@ -95,53 +95,52 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of Hybrid
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
CheckMaxChargingPowerPresent(vehicle);
CheckMaxChargingPowerPresent(Vehicle);
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
var engineMode = engineModes[modeIdx.Value];
var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
var runData = CreateCommonRunData(Vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
runData.DriverData = DriverData;
runData.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
DataAdapter.CreateAirdragData(Vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission);
runData.EngineData = DataAdapter.CreateEngineData(Vehicle, engineMode, mission);
DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
DataAdapter.CreateREESSData(Vehicle.Components.ElectricStorage, Vehicle.VehicleType, Vehicle.OvcHev,
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage());
if (vehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(vehicle.Components.IEPC,
if (Vehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(Vehicle.Components.IEPC,
runData.BatteryData.CalculateAverageVoltage());
iepcData.ForEach(iepc => runData.ElectricMachinesData.Add(iepc));
}
if (AxleGearRequired()) {
runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
}
runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, null, mission.MissionType,
_segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles,
runData.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData, null, mission.MissionType,
_segment.VehicleClass, Vehicle.Length, Vehicle.Components.AxleWheels.NumSteeredAxles,
VectoSimulationJobType.SerialHybridVehicle);
CreateGearboxAndGearshiftData(vehicle, runData);
CreateGearboxAndGearshiftData(runData);
runData.HybridStrategyParameters =
DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass, ovcMode, loading.Key, runData.VehicleData.VehicleClass, mission.MissionType);
......@@ -157,8 +156,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
runData.PTO = mission.MissionType == MissionType.MunicipalUtility
? DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData)
: DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
? DataAdapter.CreatePTOCycleData(Vehicle.Components.GearboxInputData, Vehicle.Components.PTOTransmissionInputData)
: DataAdapter.CreatePTOTransmissionData(Vehicle.Components.PTOTransmissionInputData, Vehicle.Components.GearboxInputData);
if (ovcMode != VectoRunData.OvcHevMode.NotApplicable && runData.InputData.JobInputData.Vehicle.OvcHev) {
......@@ -174,10 +173,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
return runData;
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID.IsOneOf(ArchitectureID.S2, ArchitectureID.S_IEPC)) {
throw new ArgumentException(nameof(vehicle.ArchitectureID));
if (Vehicle.ArchitectureID.IsOneOf(ArchitectureID.S2, ArchitectureID.S_IEPC)) {
throw new ArgumentException(nameof(Vehicle.ArchitectureID));
}
runData.GearshiftParameters = new ShiftStrategyParameters() {
StartSpeed = DeclarationData.GearboxTCU.StartSpeed,
......@@ -196,43 +195,44 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
declarationDataAdapter) { }
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
CheckMaxChargingPowerPresent(vehicle);
CheckMaxChargingPowerPresent(Vehicle);
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
if (!modeIdx.HasValue) {
throw new VectoException("Engine mode has to be specified for parallel hybrid vehicle");
}
var engineMode = engineModes[modeIdx.Value];
var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
var runData = CreateCommonRunData(Vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
runData.DriverData = DriverData;
runData.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
DataAdapter.CreateAirdragData(Vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission);
DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
runData.EngineData = DataAdapter.CreateEngineData(Vehicle, engineMode, mission);
DataAdapter.CreateREESSData(Vehicle.Components.ElectricStorage, Vehicle.VehicleType, Vehicle.OvcHev,
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
if (vehicle.Components.AxleGearInputData != null)
if (Vehicle.Components.AxleGearInputData != null)
{
runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
}
runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, null, mission.MissionType,
_segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles,
runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData, null, mission.MissionType,
_segment.VehicleClass, Vehicle.Length, Vehicle.Components.AxleWheels.NumSteeredAxles,
VectoSimulationJobType.ParallelHybridVehicle);
CreateGearboxAndGearshiftData(vehicle, runData);
CreateGearboxAndGearshiftData(runData);
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage(), runData.GearboxData.GearList);
runData.HybridStrategyParameters =
......@@ -241,7 +241,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
runData.VehicleData.TotalVehicleMass,
ovcMode, loading.Key,
runData.VehicleData.VehicleClass,
mission.MissionType, vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData, vehicle.ArchitectureID);
mission.MissionType, Vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData, Vehicle.ArchitectureID);
if (ovcMode != VectoRunData.OvcHevMode.NotApplicable) {
if (runData.BatteryData?.InitialSoC != null) {
......@@ -262,8 +262,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
runData.PTO = mission.MissionType == MissionType.MunicipalUtility
? DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData)
: DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
? DataAdapter.CreatePTOCycleData(Vehicle.Components.GearboxInputData, Vehicle.Components.PTOTransmissionInputData)
: DataAdapter.CreatePTOTransmissionData(Vehicle.Components.PTOTransmissionInputData, Vehicle.Components.GearboxInputData);
if (ovcMode != VectoRunData.OvcHevMode.NotApplicable && runData.InputData.JobInputData.Vehicle.OvcHev)
......@@ -277,19 +277,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -312,19 +312,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of SerialHybrid
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -389,30 +389,31 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#region Overrides of SerialHybrid
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
AxleGearRequired();
return base.CreateVectoRunData(vehicle, mission, loading, modeIdx, ovcMode);
return base.CreateVectoRunData(mission, loading, modeIdx, ovcMode);
}
#endregion
#region Overrides of SerialHybrid
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
GearboxType.APTN,
vehicle.Components.IEPC.Gears.Count
Vehicle.Components.IEPC.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(GearboxType.APTN,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......
......@@ -51,22 +51,22 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return GetNextRun().First(x => x != null);
}
protected Segment GetSegment(IVehicleDeclarationInputData vehicle)
protected Segment GetSegment()
{
if (vehicle.VehicleCategory != VehicleCategory.HeavyBusPrimaryVehicle)
if (Vehicle.VehicleCategory != VehicleCategory.HeavyBusPrimaryVehicle)
{
throw new VectoException(
"Invalid vehicle category for bus factory! {0}", vehicle.VehicleCategory.GetCategoryName());
"Invalid vehicle category for bus factory! {0}", Vehicle.VehicleCategory.GetCategoryName());
}
var segment = DeclarationData.PrimaryBusSegments.Lookup(
vehicle.VehicleCategory, vehicle.AxleConfiguration, vehicle.Articulated);
Vehicle.VehicleCategory, Vehicle.AxleConfiguration, Vehicle.Articulated);
if (!segment.Found)
{
throw new VectoException(
"no segment found for vehicle configruation: vehicle category: {0}, axle configuration: {1}, articulated: {2}, primary",
vehicle.VehicleCategory, vehicle.AxleConfiguration,
vehicle.Articulated);
Vehicle.VehicleCategory, Vehicle.AxleConfiguration,
Vehicle.Articulated);
}
return segment;
......@@ -80,25 +80,25 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return;
}
_segment = GetSegment(vehicle);
_segment = GetSegment();
}
#endregion
protected VectoRunData CreateCommonRunData(IVehicleDeclarationInputData vehicle, Mission mission,
protected VectoRunData CreateCommonRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
Segment segment,
IList<IEngineModeDeclarationInputData> engineModes = null, int modeIdx = 0)
{
var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false));
CheckSuperCap(vehicle);
CheckSuperCap(Vehicle);
var simulationRunData = new VectoRunData {
InputData = DataProvider,
Loading = loading.Key,
JobType = vehicle.VehicleType,
JobType = Vehicle.VehicleType,
Mission = mission,
InputDataHash = InputDataProvider.XMLHash,
SimulationType = SimulationType.DistanceCycle,
......@@ -106,7 +106,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
JobName = InputDataProvider.JobInputData.JobName,
ModFileSuffix = $"{(engineModes?.Count > 1 ? $"_EngineMode{modeIdx}_" : "")}" +
$"_{mission.BusParameter.BusGroup.GetClassNumber()}_{loading.Key}",
MaxChargingPower = vehicle.MaxChargingPower,
MaxChargingPower = Vehicle.MaxChargingPower,
VehicleDesignSpeed = segment.DesignSpeed,
Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
ExecutionMode = ExecutionMode.Declaration,
......@@ -115,8 +115,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return simulationRunData;
}
protected abstract void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle,
VectoRunData runData);
protected abstract void CreateGearboxAndGearshiftData(VectoRunData runData);
protected abstract bool AxleGearRequired();
}
......@@ -137,7 +136,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
for (var modeIdx = 0; modeIdx < engineModes.Count; modeIdx++) {
foreach (var mission in _segment.Missions) {
foreach (var loading in mission.Loadings) {
var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx);
var simulationRunData = CreateVectoRunData(mission, loading, modeIdx);
if (simulationRunData == null) {
continue;
}
......@@ -149,32 +148,32 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
#endregion
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var engine = vehicle.Components.EngineInputData;
var engine = Vehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
if (!modeIdx.HasValue) {
throw new VectoException("Engine mode has to be specified for conventional vehicle");
}
var engineMode = engineModes[modeIdx.Value];
var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
var simulationRunData = CreateCommonRunData(mission, loading, _segment, engineModes, modeIdx.Value);
simulationRunData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
simulationRunData.VehicleData = DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
simulationRunData.AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment());
simulationRunData.EngineData = DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, mission);
simulationRunData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
simulationRunData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
simulationRunData.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
simulationRunData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
simulationRunData.AngledriveData = DataAdapter.CreateAngledriveData(Vehicle.Components.AngledriveInputData);
simulationRunData.Aux = DataAdapter.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
vehicle.Length ?? mission.BusParameter.VehicleLength,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
simulationRunData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
Vehicle.Components.AuxiliaryInputData,
Vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
Vehicle.Length ?? mission.BusParameter.VehicleLength,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
simulationRunData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
simulationRunData.DriverData = DriverData;
......@@ -183,24 +182,24 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
simulationRunData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, simulationRunData);
CreateGearboxAndGearshiftData(vehicle, simulationRunData);
CreateGearboxAndGearshiftData(simulationRunData);
return simulationRunData;
}
#region Overrides of PrimaryBusBase
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
var shiftStrategyName = PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type, vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
var shiftStrategyName = PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type, Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
(runData.AxleGearData?.AxleGear.Ratio ?? 1.0) * (runData.AngledriveData?.Angledrive.Ratio ?? 1.0),
vehicle.EngineIdleSpeed,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count);
Vehicle.EngineIdleSpeed,
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count);
}
......@@ -230,10 +229,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
throw new VectoException(
"MaxChargingPower is required and has to be greater than 0 if OVC is selected");
}
yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting);
yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
} else {
yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
}
}
}
......@@ -250,7 +249,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
......@@ -258,45 +257,45 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
var engineMode = engineModes[modeIdx.Value];
var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
var runData = CreateCommonRunData(mission, loading, _segment, engineModes, modeIdx.Value);
runData.DriverData = DriverData;
runData.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
DataAdapter.CreateAirdragData(Vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission);
runData.EngineData = DataAdapter.CreateEngineData(Vehicle, engineMode, mission);
DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
DataAdapter.CreateREESSData(Vehicle.Components.ElectricStorage, Vehicle.VehicleType, Vehicle.OvcHev,
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage());
if (vehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(vehicle.Components.IEPC,
if (Vehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(Vehicle.Components.IEPC,
runData.BatteryData.CalculateAverageVoltage());
iepcData.ForEach(iepc => runData.ElectricMachinesData.Add(iepc));
}
if (AxleGearRequired()) {
runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
}
runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles,
runData.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData,
Vehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, Vehicle.Length, Vehicle.Components.AxleWheels.NumSteeredAxles,
VectoSimulationJobType.SerialHybridVehicle);
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, runData);
CreateGearboxAndGearshiftData(vehicle, runData);
CreateGearboxAndGearshiftData(runData);
runData.HybridStrategyParameters =
DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass,
......@@ -325,10 +324,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return runData;
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID.IsOneOf(ArchitectureID.S2, ArchitectureID.S_IEPC)) {
throw new ArgumentException(nameof(vehicle.ArchitectureID));
if (Vehicle.ArchitectureID.IsOneOf(ArchitectureID.S2, ArchitectureID.S_IEPC)) {
throw new ArgumentException(nameof(Vehicle.ArchitectureID));
}
runData.GearshiftParameters = new ShiftStrategyParameters() {
StartSpeed = DeclarationData.GearboxTCU.StartSpeed,
......@@ -348,24 +347,24 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
public HEV_S2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report,
IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID != ArchitectureID.S2) {
throw new ArgumentException(nameof(vehicle));
if (Vehicle.ArchitectureID != ArchitectureID.S2) {
throw new ArgumentException(nameof(Vehicle));
}
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
(runData.AxleGearData?.AxleGear.Ratio ?? 1.0) * (runData.AngledriveData?.Angledrive.Ratio ?? 1.0),
null,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count);
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -388,11 +387,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
{
public HEV_S_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
AxleGearRequired();
return base.CreateVectoRunData(vehicle, mission, loading, modeIdx, ovcMode);
return base.CreateVectoRunData(mission, loading, modeIdx, ovcMode);
}
protected override bool AxleGearRequired()
......@@ -423,20 +423,20 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return axleGearRequired;
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
(runData.AxleGearData?.AxleGear.Ratio ?? 1.0) * (runData.AngledriveData?.Angledrive.Ratio ?? 1.0),
null,
GearboxType.APTN,
vehicle.Components.IEPC.Gears.Count);
Vehicle.Components.IEPC.Gears.Count);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(GearboxType.APTN,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -446,34 +446,34 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
{
protected ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var engine = vehicle.Components.EngineInputData;
var engine = Vehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
if (!modeIdx.HasValue) {
throw new VectoException("Engine mode has to be specified for parallel hybrid vehicle");
}
var engineMode = engineModes[modeIdx.Value];
var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
var runData = CreateCommonRunData(mission, loading, _segment, engineModes, modeIdx.Value);
runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
runData.VehicleData = DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
runData.AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment());
runData.EngineData = DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, mission);
DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
DataAdapter.CreateREESSData(Vehicle.Components.ElectricStorage, Vehicle.VehicleType, Vehicle.OvcHev,
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
runData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
runData.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
runData.AngledriveData = DataAdapter.CreateAngledriveData(Vehicle.Components.AngledriveInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
vehicle.Length ?? mission.BusParameter.VehicleLength,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
Vehicle.Components.AuxiliaryInputData,
Vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
Vehicle.Length ?? mission.BusParameter.VehicleLength,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
runData.DriverData = DriverData;
......@@ -482,10 +482,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, runData);
CreateGearboxAndGearshiftData(vehicle, runData);
CreateGearboxAndGearshiftData(runData);
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage(), runData.GearboxData.GearList);
runData.HybridStrategyParameters =
......@@ -495,7 +495,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
ovcMode, loading.Key,
//runData.VehicleData.VehicleClass,
mission.BusParameter.BusGroup,
mission.MissionType, vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData, vehicle.ArchitectureID);
mission.MissionType, Vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData, Vehicle.ArchitectureID);
if (ovcMode != VectoRunData.OvcHevMode.NotApplicable) {
if (runData.BatteryData?.InitialSoC != null) {
......@@ -521,18 +521,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return runData;
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
{
var shiftStrategyName = PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type, vehicle.VehicleType);
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
var shiftStrategyName = PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type, Vehicle.VehicleType);
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
(runData.AxleGearData?.AxleGear.Ratio ?? 1.0) * (runData.AngledriveData?.Angledrive.Ratio ?? 1.0),
vehicle.EngineIdleSpeed,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count);
Vehicle.EngineIdleSpeed,
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -586,7 +586,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
var vehicle = InputDataProvider.JobInputData.Vehicle;
foreach (var mission in _segment.Missions) {
foreach (var loading in mission.Loadings) {
var simulationRunData = CreateVectoRunData(vehicle, mission, loading);
var simulationRunData = CreateVectoRunData(mission, loading);
simulationRunData.BatteryData.Batteries.ForEach(t => t.Item2.ChargeSustainingBattery = true);
yield return simulationRunData;
}
......@@ -595,47 +595,48 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
#endregion
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var result = CreateCommonRunData(vehicle, mission, loading, _segment);
var result = CreateCommonRunData(mission, loading, _segment);
DataAdapter.CreateREESSData(
componentsElectricStorage: vehicle.Components.ElectricStorage,
vehicle.VehicleType,
componentsElectricStorage: Vehicle.Components.ElectricStorage,
Vehicle.VehicleType,
true,
(bs) => result.BatteryData = bs,
(sc) => result.SuperCapData = sc);
if (vehicle.VehicleType == VectoSimulationJobType.IEPC_E) {
result.ElectricMachinesData = DataAdapter.CreateIEPCElectricMachines(vehicle.Components.IEPC,
if (Vehicle.VehicleType == VectoSimulationJobType.IEPC_E) {
result.ElectricMachinesData = DataAdapter.CreateIEPCElectricMachines(Vehicle.Components.IEPC,
result.BatteryData.CalculateAverageVoltage());
} else {
result.ElectricMachinesData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines,
vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null);
result.ElectricMachinesData = DataAdapter.CreateElectricMachines(Vehicle.Components.ElectricMachines,
Vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null);
}
result.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
result.VehicleData = DataAdapter.CreateVehicleData(Vehicle, _segment, mission, loading, _allowVocational);
result.AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment());
if (AxleGearRequired() || vehicle.Components.AxleGearInputData != null) {
result.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
if (AxleGearRequired() || Vehicle.Components.AxleGearInputData != null) {
result.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
}
result.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
result.AngledriveData = DataAdapter.CreateAngledriveData(Vehicle.Components.AngledriveInputData);
result.Aux = DataAdapter.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
vehicle.Length ?? mission.BusParameter.VehicleLength,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
result.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
Vehicle.Components.AuxiliaryInputData,
Vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
Vehicle.Length ?? mission.BusParameter.VehicleLength,
Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
result.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData);
result.DriverData = DriverData;
result.VehicleData.VehicleClass = _segment.VehicleClass;
result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, InputDataProvider.JobInputData.Vehicle, result);
CreateGearboxAndGearshiftData(vehicle, result);
CreateGearboxAndGearshiftData(result);
return result;
}
......@@ -644,9 +645,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
return InputDataProvider.JobInputData.Vehicle.ArchitectureID != ArchitectureID.E4;
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID == ArchitectureID.E2) {
if (Vehicle.ArchitectureID == ArchitectureID.E2) {
throw new ArgumentException();
}
runData.GearshiftParameters = new ShiftStrategyParameters() {
......@@ -663,24 +664,24 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
#region Overrides of PrimaryBusBase
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
if (vehicle.ArchitectureID != ArchitectureID.E2) {
throw new ArgumentException(nameof(vehicle));
if (Vehicle.ArchitectureID != ArchitectureID.E2) {
throw new ArgumentException(nameof(Vehicle));
}
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
(runData.AxleGearData?.AxleGear.Ratio ?? 1.0) * (runData.AngledriveData?.Angledrive.Ratio ?? 1.0),
null,
vehicle.Components.GearboxInputData.Type,
vehicle.Components.GearboxInputData.Gears.Count);
Vehicle.Components.GearboxInputData.Type,
Vehicle.Components.GearboxInputData.Gears.Count);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
PowertrainBuilder.GetShiftStrategyName(Vehicle.Components.GearboxInputData.Type,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -733,19 +734,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
GearboxType.APTN,
vehicle.Components.IEPC.Gears.Count
Vehicle.Components.IEPC.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(GearboxType.APTN,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
Vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(Vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -760,10 +761,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
protected override VectoRunData GetPowertrainConfigForReportInit()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
return CreateVectoRunData(vehicle, null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0);
return CreateVectoRunData(null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0);
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
throw new NotImplementedException();
}
......@@ -772,8 +773,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
var simulationRunData = CreateVectoRunData(vehicle,
null,
var simulationRunData = CreateVectoRunData(null,
new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(),
0);
......@@ -782,8 +782,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
#endregion
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
......
......@@ -31,6 +31,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
public ISingleBusInputDataProvider SingleBusDataProvider { get; }
protected virtual IVehicleDeclarationInputData PrimaryVehicle => SingleBusDataProvider.PrimaryVehicle;
protected virtual IVehicleDeclarationInputData CompletedVehicle => SingleBusDataProvider.CompletedVehicle;
protected override IVehicleDeclarationInputData Vehicle => throw new NotImplementedException();
protected SingleBusBase(ISingleBusInputDataProvider dataProvider, IDeclarationReport report,
ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report)
{
......@@ -131,17 +137,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var completedVehicle = SingleBusDataProvider.CompletedVehicle;
var primaryVehicle = SingleBusDataProvider.PrimaryVehicle;
var doubleDecker = completedVehicle.NumberPassengerSeatsUpperDeck > 0;
var doubleDecker = CompletedVehicle.NumberPassengerSeatsUpperDeck > 0;
if (mission.BusParameter.DoubleDecker != doubleDecker) {
return null;
}
var engine = vehicle.Components.EngineInputData;
var engine = PrimaryVehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
var engineMode = engineModes[modeIdx.Value];
......@@ -150,21 +155,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
var runData = CreateCommonRunData(mission, loading);
runData.VehicleData = DataAdapter.CreateVehicleData(SingleBusDataProvider, _segment, mission, loading, _allowVocational); //Primary
runData.AirdragData = DataAdapter.CreateAirdragData(completedVehicle, mission); //Single
runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission); //Primary
runData.AirdragData = DataAdapter.CreateAirdragData(CompletedVehicle, mission); //Single
runData.EngineData = DataAdapter.CreateEngineData(PrimaryVehicle, engineMode, mission); //Primary
runData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
runData.AxleGearData = DataAdapter.CreateAxleGearData(primaryVehicle.Components.AxleGearInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(PrimaryVehicle.Components.AxleGearInputData);
runData.AngledriveData =
DataAdapter.CreateAngledriveData(primaryVehicle.Components.AngledriveInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, vehicle.Length ?? mission.BusParameter.VehicleLength,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(primaryVehicle.Components.RetarderInputData);
DataAdapter.CreateAngledriveData(PrimaryVehicle.Components.AngledriveInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData);
runData.EngineData.FuelMode = modeIdx.Value;
runData.VehicleData.VehicleClass = _segment.VehicleClass;
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(mission, primaryVehicle, completedVehicle, runData);
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, runData);
CreateGearboxAndGearshiftData(runData);
return runData;
......@@ -205,7 +210,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
for (var modeIdx = 0; modeIdx < engineModes.Count; modeIdx++) {
foreach (var mission in _segment.Missions) {
foreach (var loading in mission.Loadings) {
var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx);
var simulationRunData = CreateVectoRunData(mission, loading, modeIdx);
if (simulationRunData == null) {
continue;
}
......@@ -235,10 +240,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
throw new VectoException(
"MaxChargingPower has to be greater than 0 if OVC is selected");
}
yield return CreateVectoRunData(null, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting);
yield return CreateVectoRunData(null, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
} else {
yield return CreateVectoRunData(null, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
yield return CreateVectoRunData(mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining);
}
}
}
......@@ -257,9 +262,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
{
protected SerialHybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { }
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
//CheckMaxChargingPowerPresent(vehicle);
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
......@@ -270,38 +275,38 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
runData.DriverData = DriverData;
runData.AirdragData =
DataAdapter.CreateAirdragData(SingleBusDataProvider.CompletedVehicle, mission);
DataAdapter.CreateAirdragData(CompletedVehicle, mission);
runData.VehicleData = DataAdapter.CreateVehicleData(SingleBusDataProvider, _segment, mission, loading, _allowVocational);
runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission);
runData.EngineData = DataAdapter.CreateEngineData(PrimaryVehicle, engineMode, mission);
DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
DataAdapter.CreateREESSData(PrimaryVehicle.Components.ElectricStorage, PrimaryVehicle.VehicleType, PrimaryVehicle.OvcHev,
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
PrimaryVehicle.Components.ElectricMachines, PrimaryVehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage());
if (vehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(vehicle.Components.IEPC,
if (PrimaryVehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(PrimaryVehicle.Components.IEPC,
runData.BatteryData.CalculateAverageVoltage());
iepcData.ForEach(iepc => runData.ElectricMachinesData.Add(iepc));
}
if (AxleGearRequired()) {
runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(PrimaryVehicle.Components.AxleGearInputData);
}
runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles,
runData.Aux = DataAdapter.CreateAuxiliaryData(PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType,
_segment.VehicleClass, PrimaryVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles,
VectoSimulationJobType.SerialHybridVehicle);
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, SingleBusDataProvider.PrimaryVehicle, SingleBusDataProvider.CompletedVehicle , runData);
mission, PrimaryVehicle, CompletedVehicle , runData);
CreateGearboxAndGearshiftData(runData);
......@@ -394,11 +399,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
{
public ParallelHybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { }
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var engine = vehicle.Components.EngineInputData;
var engine = PrimaryVehicle.Components.EngineInputData;
var engineModes = engine.EngineModes;
if (!modeIdx.HasValue) {
throw new VectoException("Engine mode has to be specified for parallel hybrid vehicle");
......@@ -410,33 +415,33 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
runData.VehicleData =
DataAdapter.CreateVehicleData(SingleBusDataProvider, _segment, mission, loading, _allowVocational);
runData.AirdragData = DataAdapter.CreateAirdragData(SingleBusDataProvider.CompletedVehicle, mission);
runData.AirdragData = DataAdapter.CreateAirdragData(CompletedVehicle, mission);
runData.EngineData =
DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, mission);
DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
DataAdapter.CreateREESSData(PrimaryVehicle.Components.ElectricStorage, PrimaryVehicle.VehicleType, PrimaryVehicle.OvcHev,
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
runData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
runData.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
runData.AxleGearData = DataAdapter.CreateAxleGearData(PrimaryVehicle.Components.AxleGearInputData);
runData.AngledriveData = DataAdapter.CreateAngledriveData(PrimaryVehicle.Components.AngledriveInputData);
runData.Aux = DataAdapter.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData,
vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
vehicle.Length ?? mission.BusParameter.VehicleLength,
vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
PrimaryVehicle.Components.AuxiliaryInputData,
PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength,
PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData);
runData.DriverData = DriverData;
runData.EngineData.FuelMode = modeIdx.Value;
runData.VehicleData.VehicleClass = _segment.VehicleClass;
runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
mission, SingleBusDataProvider.PrimaryVehicle, SingleBusDataProvider.CompletedVehicle, runData);
mission, PrimaryVehicle, CompletedVehicle, runData);
CreateGearboxAndGearshiftData(runData);
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
PrimaryVehicle.Components.ElectricMachines, PrimaryVehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage(), runData.GearboxData.GearList);
runData.HybridStrategyParameters =
......@@ -446,8 +451,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
ovcMode, loading.Key,
//runData.VehicleData.VehicleClass,
mission.BusParameter.BusGroup,
mission.MissionType, vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData,
vehicle.ArchitectureID);
mission.MissionType, PrimaryVehicle.BoostingLimitations, runData.GearboxData, runData.EngineData,
PrimaryVehicle.ArchitectureID);
if (ovcMode != VectoRunData.OvcHevMode.NotApplicable) {
if (runData.BatteryData?.InitialSoC != null) {
......@@ -477,18 +482,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
protected override void CreateGearboxAndGearshiftData(VectoRunData runData)
{
var primaryVehicle = SingleBusDataProvider.PrimaryVehicle;
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(primaryVehicle.Components.GearboxInputData.Type,
primaryVehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(primaryVehicle, runData,
PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type,
PrimaryVehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(PrimaryVehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.GearboxData,
(runData.AxleGearData?.AxleGear.Ratio ?? 1.0) *
(runData.AngledriveData?.Angledrive.Ratio ?? 1.0),
primaryVehicle.EngineIdleSpeed
PrimaryVehicle.EngineIdleSpeed
);
}
......@@ -531,15 +535,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
{
foreach (var mission in _segment.Missions) {
foreach (var loading in mission.Loadings) {
var run = CreateVectoRunData(null, mission, loading);
var run = CreateVectoRunData(mission, loading);
run.BatteryData.Batteries.ForEach(b => b.Item2.ChargeSustainingBattery = true);
yield return run;
}
}
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData _, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
var vehicle = SingleBusDataProvider.PrimaryVehicle;
......@@ -653,7 +658,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
throw new NotImplementedException("Exempted SingleBus Simulation is not supported!");
}
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
throw new NotImplementedException();
......
......@@ -20,8 +20,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
{
internal class MockupMultistageCompletedBusRunDataFactory : DeclarationModeCompletedBusRunDataFactory.CompletedBusBase
{
//DeclarationModeCompletedMultistageBusVectoRunDataFactory
public MockupMultistageCompletedBusRunDataFactory(IMultistageVIFInputData dataProvider,
IDeclarationReport report,
ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific,
......@@ -30,23 +29,10 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
}
#region Overrides of DeclarationModeCompletedMultistageBusVectoRunDataFactory
#endregion
protected override void Initialize()
{
_segment = GetCompletedSegment(CompletedVehicle, PrimaryVehicle.AxleConfiguration);
//base.Initialize();
}
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusCompleted()
//{
// return base.VectoRunDataHeavyBusCompleted();
//}
_segment = GetCompletedSegment();
}
protected override IEnumerable<VectoRunData> GetNextRun()
{
......@@ -86,13 +72,12 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
protected virtual IEnumerable<VectoRunData> VectoRunDataHeavyBusCompleted()
{
var InputDataProvider = DataProvider.MultistageJobInputData;
if (InputDataProvider.JobInputData.PrimaryVehicle.Vehicle.VehicleType ==
if (PrimaryVehicle.VehicleType ==
VectoSimulationJobType.BatteryElectricVehicle) {
foreach (var vectoRunData in CreateVectoRunDataForMissions(0, ""))
yield return vectoRunData;
} else {
var engineModes = InputDataProvider.JobInputData.PrimaryVehicle.Vehicle.Components.EngineInputData
var engineModes = PrimaryVehicle.Components.EngineInputData
?.EngineModes;
for (var modeIdx = 0; modeIdx < engineModes.Count; modeIdx++) {
......@@ -184,7 +169,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
yield return simulationRunData;
}
var primarySegment = GetPrimarySegment(PrimaryVehicle);
var primarySegment = GetPrimarySegment();
var primaryMission = primarySegment.Missions.Where(
m => {
return m.BusParameter.DoubleDecker ==
......
......@@ -34,7 +34,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
{
if (InputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) {
if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) {
yield return CreateVectoRunData(InputDataProvider.JobInputData.Vehicle, null,
yield return CreateVectoRunData(null,
new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0);
} else {
foreach (var vectoRunData in VectoRunDataHeavyBusPrimary()) {
......@@ -72,7 +72,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
var vehicle = InputDataProvider.JobInputData.Vehicle;
foreach (var mission in _segment.Missions) {
foreach (var loading in mission.Loadings) {
var simulationRunData = CreateVectoRunData(vehicle, mission, loading, 0);
var simulationRunData = CreateVectoRunData(mission, loading, 0);
if (simulationRunData == null) {
continue;
}
......@@ -91,7 +91,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
for (var modeIdx = 0; modeIdx < engineModes.Count; modeIdx++) {
foreach (var mission in _segment.Missions) {
foreach (var loading in mission.Loadings) {
var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx);
var simulationRunData = CreateVectoRunData(mission, loading, modeIdx);
if (simulationRunData == null) {
continue;
}
......@@ -103,7 +103,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
protected override void Initialize()
{
_segment = GetSegment(InputDataProvider.JobInputData.Vehicle);
_segment = GetSegment();
}
protected override void InitializeReport()
......@@ -118,14 +118,13 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
var vehicle = InputDataProvider.JobInputData.Vehicle;
if (vehicle.ExemptedVehicle)
{
powertrainConfig = CreateVectoRunData(vehicle, null,
powertrainConfig = CreateVectoRunData(null,
new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0);
}
else
{
powertrainConfig = _segment.Missions.Select(
mission => CreateVectoRunData(
vehicle, mission, mission.Loadings.First(), 0))
mission => CreateVectoRunData(mission, mission.Loadings.First(), 0))
.FirstOrDefault(x => x != null);
}
......@@ -134,8 +133,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
#region Overrides of DeclarationModePrimaryBusVectoRunDataFactory
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle,
Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
protected override VectoRunData CreateVectoRunData(Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
......@@ -148,10 +147,10 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
Exempted = true,
Report = Report,
Mission = new Mission() { MissionType = MissionType.ExemptedMission },
VehicleData = CreateExemptedMockupVehicleData(vehicle, _segment),
VehicleData = CreateExemptedMockupVehicleData(Vehicle, _segment),
InputDataHash = InputDataProvider.XMLHash
};
runData.VehicleData.InputData = vehicle;
runData.VehicleData.InputData = Vehicle;
}
else
{
......@@ -171,13 +170,13 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
Report = Report,
Mission = mission,
SimulationType = SimulationType.DistanceCycle,
VehicleData = CreateMockupVehicleData(vehicle, _segment, loading),
Retarder = CreateMockupRetarder(vehicle),
AxleGearData = CreateMockupAxleGearData(vehicle),
GearboxData = CreateMockupGearboxData(vehicle),
AngledriveData = CreateMockupAngleDriveData(vehicle),
EngineData = CreateMockupEngineData(vehicle, modeIdx),
BusAuxiliaries = CreateMockupBusAux(vehicle),
VehicleData = CreateMockupVehicleData(Vehicle, _segment, loading),
Retarder = CreateMockupRetarder(Vehicle),
AxleGearData = CreateMockupAxleGearData(Vehicle),
GearboxData = CreateMockupGearboxData(Vehicle),
AngledriveData = CreateMockupAngleDriveData(Vehicle),
EngineData = CreateMockupEngineData(Vehicle, modeIdx),
BusAuxiliaries = CreateMockupBusAux(Vehicle),
InputDataHash = InputDataProvider.XMLHash,
};
}
......
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