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

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

refactoring lorry rundata factory: do not store comonent data in fields,...

refactoring lorry rundata factory: do not store comonent data in fields, introduce property for driver data (only create once, avoid reading multiple times from the .vacc stream)
IEPC-E Testcase runs successfully
parent 40688d96
No related branches found
No related tags found
No related merge requests found
Showing
with 112 additions and 300 deletions
......@@ -327,6 +327,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public override ConsumerTechnology AdBlueDosing => ConsumerTechnology.Unknown;
public override bool EngineWasteGasHeatExchanger => false;
}
// ---------------------------------------------------------------------------------------
......
......@@ -192,7 +192,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24
public override bool Articulated => GetBool(XMLNames.Vehicle_Articulated);
public override VectoSimulationJobType VehicleType => VectoSimulationJobType.BatteryElectricVehicle;
public override VectoSimulationJobType VehicleType => VectoSimulationJobType.IEPC_E;
#endregion
......
......@@ -316,6 +316,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
public class PEV_E_IEPC : BatteryElectric
{
protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new IEPCGearboxDataAdapter();
}
......
......@@ -806,7 +806,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
var electricUserInputs =
GetElectricalUserConfig(mission, primaryVehicle, actuations, runData.VehicleData.VehicleClass);
electricUserInputs.ConnectESToREESS = true;
if (primaryVehicle.VehicleType.IsOneOf(VectoSimulationJobType.BatteryElectricVehicle,
VectoSimulationJobType.IEPC_E)) {
electricUserInputs.ConnectESToREESS = true;
}
var retVal = new AuxiliaryConfig
{
......
......@@ -23,23 +23,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
protected readonly IDeclarationInputDataProvider InputDataProvider;
protected IDeclarationReport Report;
//protected abstract IDeclarationDataAdapter DataAdapter { get; }
protected Segment _segment;
protected bool _allowVocational;
protected DriverData _driverdata;
protected AirdragData _airdragData;
protected AxleGearData _axlegearData;
protected AngledriveData _angledriveData;
protected GearboxData _gearboxData;
protected RetarderData _retarderData;
protected PTOData _ptoTransmissionData;
protected PTOData _municipalPtoTransmissionData;
//protected Exception InitException;
protected ShiftStrategyParameters _gearshiftData;
protected bool _allowVocational;
private DriverData _driverdata;
protected AbstractDeclarationVectoRunDataFactory(
IDeclarationInputDataProvider dataProvider, IDeclarationReport report, bool checkJobType = true)
{
......@@ -55,16 +45,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
Report = report;
_allowVocational = true;
//try {
// Initialize();
// if (Report != null) {
// InitializeReport();
// }
//} catch (Exception e) {
// InitException = e;
//}
}
protected DriverData DriverData => _driverdata ?? (_driverdata = CreateDriverData(_segment));
protected abstract DriverData CreateDriverData(Segment segment);
public virtual IEnumerable<VectoRunData> NextRun()
{
......@@ -93,15 +78,5 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
protected abstract VectoRunData GetPowertrainConfigForReportInit();
//protected virtual PTOData CreateDefaultPTOData()
//{
// return new PTOData() {
// TransmissionType = DeclarationData.PTO.DefaultPTOTechnology,
// LossMap = PTOIdleLossMapReader.ReadFromStream(RessourceHelper.ReadStream(DeclarationData.PTO.DefaultPTOIdleLosses)),
// PTOCycle =
// DrivingCycleDataReader.ReadFromStream(RessourceHelper.ReadStream(DeclarationData.PTO.DefaultPTOActivationCycle),
// CycleType.PTO, "PTO", false)
// };
//}
}
}
\ No newline at end of file
......@@ -27,18 +27,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
public IDeclarationInputDataProvider InputDataProvider { get; }
public IDeclarationReport Report { get; }
protected DriverData _driverdata;
protected AirdragData _airdragData;
protected AxleGearData _axlegearData;
protected AngledriveData _angledriveData;
protected GearboxData _gearboxData;
protected RetarderData _retarderData;
protected PTOData _ptoTransmissionData;
protected PTOData _municipalPtoTransmissionData;
protected ShiftStrategyParameters _gearshiftData;
private bool _allowVocational;
protected LorryBase(IDeclarationInputDataProvider dataProvider, IDeclarationReport report,
ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, false)
{
......@@ -47,6 +35,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
Report = report;
}
#region Overrides of AbstractDeclarationVectoRunDataFactory
protected override DriverData CreateDriverData(Segment segment)
{
return DataAdapter.CreateDriverData(segment);
}
#endregion
/// <summary>
/// Sets <see cref="VectoRunData.Loading"/>
/// ,<see cref="VectoRunData.JobName"/>
......@@ -140,27 +137,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
_segment = GetSegment(vehicle);
_driverdata = DataAdapter.CreateDriverData(_segment);
_airdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData,
_segment.Missions.First(), _segment);
if (InputDataProvider.JobInputData.Vehicle.AxleConfiguration.AxlegearIncludedInGearbox())
{
_axlegearData = DataAdapter.CreateDummyAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.GearboxInputData);
}
else
{
_axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData);
}
_angledriveData = DataAdapter.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.Components.AngledriveInputData);
_retarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
_ptoTransmissionData = DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
_municipalPtoTransmissionData = DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData);
}
protected abstract void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle,
......@@ -183,12 +160,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
protected override VectoRunData GetPowertrainConfigForReportInit()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
return GetNextRun().First(x => x != null);
//return _segment.Missions.Select(
// mission => CreateVectoRunData(
// vehicle, mission, mission.Loadings.First(), 0))
// .FirstOrDefault(x => x != null);
}
#endregion
......@@ -238,11 +210,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
public Conventional(IDeclarationInputDataProvider dataProvider, IDeclarationReport report,
ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
protected override void Initialize()
{
base.Initialize();
}
#region Overrides of LorryBase
protected override IEnumerable<VectoRunData> GetNextRun()
{
......@@ -283,8 +250,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
simulationRunData.VehicleData =
DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
......@@ -297,25 +262,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
simulationRunData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
CreateGearboxAndGearshiftData(vehicle, simulationRunData);
simulationRunData.AngledriveData = _angledriveData;
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);
simulationRunData.Retarder = _retarderData;
simulationRunData.DriverData = _driverdata;
simulationRunData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
simulationRunData.DriverData = DriverData;
simulationRunData.PTO = mission.MissionType == MissionType.MunicipalUtility
? _municipalPtoTransmissionData
: _ptoTransmissionData;
? 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;
......@@ -342,7 +303,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
vehicle.VehicleType);
runData.AxleGearData = _axlegearData;
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,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
......@@ -404,11 +369,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
int? modeIdx = null,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
//_segment = GetSegment(vehicle);
var result = CreateCommonRunData(vehicle, mission, loading, _segment);
result.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
result.DriverData = DataAdapter.CreateDriverData(_segment);
result.DriverData = DriverData;
DataAdapter.CreateREESSData(
componentsElectricStorage: vehicle.Components.ElectricStorage,
......@@ -478,7 +442,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
InputDataProvider.JobInputData.Vehicle.LegislativeClass.ToString());
}
_segment = GetSegment(InputDataProvider.JobInputData.Vehicle, true);
}
#endregion
......
......@@ -12,8 +12,6 @@ using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Declaration.IterativeRunStrategies;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies;
using TUGraz.VectoCore.OutputData;
......@@ -103,7 +101,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
int? modeIdx,
VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
//_segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false);
CheckMaxChargingPowerPresent(vehicle);
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
......@@ -112,7 +109,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
runData.DriverData = DataAdapter.CreateDriverData(_segment);
runData.DriverData = DriverData;
runData.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
......@@ -124,15 +121,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
((batteryData) => runData.BatteryData = batteryData),
((sCdata => runData.SuperCapData = sCdata)));
runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
runData.BatteryData.CalculateAverageVoltage());
if (vehicle.VehicleType == VectoSimulationJobType.IEPC_S) {
var iepcData = DataAdapter.CreateIEPCElectricMachines(vehicle.Components.IEPC,
runData.BatteryData.CalculateAverageVoltage());
......@@ -149,10 +141,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
_segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles,
VectoSimulationJobType.SerialHybridVehicle);
CreateGearboxAndGearshiftData(vehicle, runData);
runData.HybridStrategyParameters =
DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass, ovcMode, loading.Key, runData.VehicleData.VehicleClass, mission.MissionType);
......@@ -166,16 +156,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
}
}
var ptoTransmissionData = DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
var municipalPtoData = DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData);
runData.PTO = mission.MissionType == MissionType.MunicipalUtility
? municipalPtoData
: ptoTransmissionData;
? 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) {
......@@ -204,16 +187,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
#endregion
#region Overrides of LorryBase
protected override void Initialize()
{
_segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false);
}
#endregion
}
public class ParallelHybrid : Hybrid
......@@ -223,20 +196,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
declarationDataAdapter) { }
#region Overrides of AbstractDeclarationVectoRunDataFactory
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
{
//_segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false);
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);
runData.DriverData = DataAdapter.CreateDriverData(_segment);
runData.DriverData = DriverData;
runData.AirdragData =
DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
......@@ -295,16 +264,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
runData.IterativeRunStrategy = new OVCHevIterativeRunStrategy();
}
var ptoTransmissionData = DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData, vehicle.Components.GearboxInputData);
var municipalPtoTransmissionData = DataAdapter.CreatePTOCycleData(vehicle.Components.GearboxInputData, vehicle.Components.PTOTransmissionInputData);
runData.PTO = mission.MissionType == MissionType.MunicipalUtility
? municipalPtoTransmissionData
: ptoTransmissionData;
? 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)
......@@ -315,14 +277,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
return runData;
}
#region Overrides of LorryBase
protected override void Initialize()
{
//throw new NotImplementedException("ParallelHybrid not implemented");
_segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false);
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
{
runData.GearshiftParameters =
......@@ -343,9 +300,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
{
return true;
}
#endregion
#endregion
}
public class HEV_S2 : SerialHybrid
......
......@@ -11,9 +11,7 @@ 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;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies;
using TUGraz.VectoCore.OutputData;
......@@ -38,13 +36,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
Report = report;
}
#region Overrides of AbstractDeclarationVectoRunDataFactory
protected override DriverData CreateDriverData(Segment segment)
{
return DataAdapter.CreateDriverData(segment);
}
#endregion
protected override VectoRunData GetPowertrainConfigForReportInit()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
//return _segment.Missions.Select(
// mission => CreateVectoRunData(
// vehicle, mission, mission.Loadings.First(), 0))
// .FirstOrDefault(x => x != null);
return GetNextRun().First(x => x != null);
}
......@@ -78,23 +80,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
}
_segment = GetSegment(vehicle);
_driverdata = DataAdapter.CreateDriverData(_segment);
var tempVehicle = DataAdapter.CreateVehicleData(vehicle, _segment, _segment.Missions.First(),
_segment.Missions.First().Loadings.First(), _allowVocational);
_airdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData,
_segment.Missions.First(), _segment);
if (InputDataProvider.JobInputData.Vehicle.AxleConfiguration.AxlegearIncludedInGearbox())
{
_axlegearData = DataAdapter.CreateDummyAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.GearboxInputData);
}
else
{
_axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData);
}
_angledriveData = DataAdapter.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.Components.AngledriveInputData);
_retarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
}
#endregion
......@@ -123,22 +109,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
VehicleDesignSpeed = segment.DesignSpeed,
Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
ExecutionMode = ExecutionMode.Declaration,
//VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational),
//AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment()),
////EngineData = DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, mission),
//ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>(),
//GearboxData = _gearboxData,
//AxleGearData = _axlegearData,
//AngledriveData = _angledriveData,
//Aux = DataAdapter.CreateAuxiliaryData(
// vehicle.Components.AuxiliaryInputData,
// vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
// vehicle.Length ?? mission.BusParameter.VehicleLength,
// vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType),
//Retarder = _retarderData,
//DriverData = _driverdata,
//GearshiftParameters = _gearshiftData,
};
return simulationRunData;
......@@ -212,25 +182,22 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
var engineModes = engine.EngineModes;
var engineMode = engineModes[modeIdx.Value];
var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false));
var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
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.GearboxData = _gearboxData;
simulationRunData.AxleGearData = _axlegearData;
simulationRunData.AngledriveData = _angledriveData;
simulationRunData.Aux = DataAdapter.CreateAuxiliaryData(
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 = _retarderData;
simulationRunData.DriverData = _driverdata;
simulationRunData.GearshiftParameters = _gearshiftData;
simulationRunData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
simulationRunData.DriverData = DriverData;
simulationRunData.EngineData.FuelMode = modeIdx.Value;
simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
......@@ -325,15 +292,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
public HEV_S2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report,
IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
//#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
//#endregion
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
{
if (vehicle.ArchitectureID != ArchitectureID.E2) {
......@@ -362,20 +320,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
public HEV_S3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report,
IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
#endregion
}
public class HEV_S4 : SerialHybrid
{
public HEV_S4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
#endregion
}
public class HEV_S_IEPC : SerialHybrid
......@@ -409,15 +359,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
{
protected ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
#endregion
protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
......@@ -447,54 +388,31 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
{
public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
#endregion
}
public class HEV_P2 : ParallelHybrid
{
public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
#endregion
}
public class HEV_P2_5 : ParallelHybrid
{
public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
#endregion
}
public class HEV_P3 : ParallelHybrid
{
public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
#endregion
}
public class HEV_P4 : ParallelHybrid
{
public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
#endregion
}
public abstract class BatteryElectric : PrimaryBusBase
......@@ -503,11 +421,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
protected override IEnumerable<VectoRunData> GetNextRun()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
......@@ -535,30 +448,29 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
(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.BatteryData.CalculateAverageVoltage());
} else {
result.ElectricMachinesData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines,
vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null);
}
result.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
result.AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment());
result.ElectricMachinesData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null);
result.GearboxData = _gearboxData;
if (AxleGearRequired() || vehicle.Components.AxleGearInputData != null) {
result.AxleGearData = _axlegearData;
result.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
}
result.AngledriveData = _angledriveData;
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 = _retarderData;
result.DriverData = _driverdata;
result.GearshiftParameters = _gearshiftData;
result.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
result.DriverData = DriverData;
result.VehicleData.VehicleClass = _segment.VehicleClass;
result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
......@@ -591,11 +503,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
{
if (vehicle.ArchitectureID != ArchitectureID.E2) {
......@@ -624,42 +531,64 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
{
public PEV_E3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
#endregion
}
public class PEV_E4 : BatteryElectric
{
public PEV_E4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
#endregion
}
public class PEV_E_IEPC : BatteryElectric
{
public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { }
#region Overrides of PrimaryBusBase
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// throw new NotImplementedException();
//}
protected override bool AxleGearRequired()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
var iepcInput = vehicle.Components.IEPC;
var axleGearRequired = !iepcInput.DifferentialIncluded && !iepcInput.DesignTypeWheelMotor;
if (axleGearRequired && vehicle.Components.AxleGearInputData == null) {
throw new VectoException(
$"Axlegear reqhired for selected type of IEPC! DifferentialIncluded: {iepcInput.DifferentialIncluded}, DesignTypeWheelMotor: {iepcInput.DesignTypeWheelMotor}");
}
var numGearsPowermap =
iepcInput.VoltageLevels.Select(x => Tuple.Create(x.VoltageLevel, x.PowerMap.Count)).ToArray();
var gearCount = iepcInput.Gears.Count;
var numGearsDrag = iepcInput.DragCurves.Count;
#endregion
if (numGearsPowermap.Any(x => x.Item2 != gearCount)) {
throw new VectoException(
$"Number of gears for voltage levels does not match! PowerMaps: {numGearsPowermap.Select(x => $"{x.Item1}: {x.Item2}").Join()}; Gear count: {gearCount}");
}
if (numGearsDrag > 1 && numGearsDrag != gearCount) {
throw new VectoException(
$"Number of gears drag curve does not match gear count! DragCurve {numGearsDrag}; Gear count: {gearCount}");
}
return axleGearRequired || vehicle.Components.AxleGearInputData != null;
}
protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
{
runData.GearshiftParameters =
DataAdapter.CreateGearshiftData(
runData.AxleGearData?.AxleGear.Ratio ?? 1.0,
null,
GearboxType.APTN,
vehicle.Components.IEPC.Gears.Count
);
var shiftStrategyName =
PowertrainBuilder.GetShiftStrategyName(GearboxType.APTN,
vehicle.VehicleType);
runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData,
ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters));
}
}
public class Exempted : PrimaryBusBase
......@@ -679,21 +608,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
throw new NotImplementedException();
}
//protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
//{
// yield return new VectoRunData {
// InputData = DataProvider,
// Exempted = true,
// Report = Report,
// Mission = new Mission { MissionType = MissionType.ExemptedMission },
// 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
// };
//}
protected override IEnumerable<VectoRunData> GetNextRun()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
......
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