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

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

started working on data adapter for IEPC

parent 647a1130
Branches
Tags
No related merge requests found
......@@ -59,6 +59,7 @@ namespace TUGraz.VectoCommon.InputData
SerialHybridVehicle,
BatteryElectricVehicle,
EngineOnlySimulation,
IEPCVehicle
}
public interface IHybridStrategyParameters
......
......@@ -78,11 +78,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
return GetBatteryElectricVehicleRunData();
case VectoSimulationJobType.SerialHybridVehicle:
return GetSerialHybridRunData();
case VectoSimulationJobType.IEPCVehicle:
return GetIEPCRunData();
default:
throw new ArgumentOutOfRangeException($"Invalid JobType {InputDataProvider.JobInputData.JobType}");
}
}
private IEnumerable<VectoRunData> GetSerialHybridRunData()
{
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
......@@ -336,6 +340,93 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
}
}
private IEnumerable<VectoRunData> GetIEPCRunData()
{
foreach (var cycle in InputDataProvider.JobInputData.Cycles) {
var dao = new EngineeringDataAdapter();
var driver = dao.CreateDriverData(InputDataProvider.DriverInputData);
var vehicle = InputDataProvider.JobInputData.Vehicle;
var axlegearData = vehicle.Components.AxleGearInputData != null
? dao.CreateAxleGearData(vehicle.Components.AxleGearInputData)
: null;
var batteryData = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC);
var supercapData = dao.CreateSuperCapData(vehicle.Components.ElectricStorage, vehicle.InitialSOC);
var averageVoltage = batteryData != null ? CalculateAverageVoltage(batteryData) : null;
var electricMachinesData = dao.CreateElectricMachines(vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, averageVoltage);
var powertrainPosition = electricMachinesData.First(e => e.Item1 != PowertrainPosition.GEN).Item1;
GearboxData gearboxData = null;
ShiftStrategyParameters gearshiftParams = null;
var angledriveData = dao.CreateAngledriveData(vehicle.Components.AngledriveInputData);
if (electricMachinesData.Any(x => x.Item1 == PowertrainPosition.BatteryElectricE2)) {
// gearbox required!
gearshiftParams = dao.CreateGearshiftData(
InputDataProvider.JobInputData.Vehicle.Components.GearboxInputData.Type, InputDataProvider.DriverInputData.GearshiftInputData,
axlegearData.AxleGear.Ratio * (angledriveData?.Angledrive.Ratio ?? 1.0), null);
var tmpRunData = new VectoRunData() {
JobType = VectoSimulationJobType.BatteryElectricVehicle,
GearboxData = new GearboxData() {
Type = vehicle.Components.GearboxInputData.Type,
},
GearshiftParameters = gearshiftParams,
ElectricMachinesData = electricMachinesData,
//VehicleData = dao.CreateVehicleData(vehicle)
};
var tempVehicle = dao.CreateVehicleData(vehicle);
var tmpStrategy = PowertrainBuilder.GetShiftStrategy(new SimplePowertrainContainer(tmpRunData));
gearboxData = dao.CreateGearboxData(
InputDataProvider, new VectoRunData() {
JobType = VectoSimulationJobType.BatteryElectricVehicle,
VehicleData = tempVehicle,
AxleGearData = axlegearData,
ElectricMachinesData = electricMachinesData
}, tmpStrategy);
angledriveData = dao.CreateAngledriveData(vehicle.Components.AngledriveInputData);
}
if (gearshiftParams == null) {
gearshiftParams = new ShiftStrategyParameters() {
StartSpeed = DeclarationData.GearboxTCU.StartSpeed,
StartAcceleration = DeclarationData.GearboxTCU.StartAcceleration
};
}
var crossWindRequired = vehicle.Components.AirdragInputData.CrossWindCorrectionMode ==
CrossWindCorrectionMode.VAirBetaLookupTable;
//var ptoTransmissionData = dao.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData);
var drivingCycle = GetDrivingCycle(cycle, crossWindRequired);
var vehicleData = dao.CreateVehicleData(vehicle);
yield return new VectoRunData {
JobName = InputDataProvider.JobInputData.JobName,
JobType = VectoSimulationJobType.BatteryElectricVehicle,
GearboxData = gearboxData,
AxleGearData = axlegearData,
AngledriveData = angledriveData,
VehicleData = vehicleData,
AirdragData = dao.CreateAirdragData(vehicle.Components.AirdragInputData, vehicle),
DriverData = driver,
Aux = dao.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData),
BusAuxiliaries = dao.CreateBusAuxiliariesData(vehicle.Components.AuxiliaryInputData, vehicleData, VectoSimulationJobType.BatteryElectricVehicle),
Retarder = dao.CreateRetarderData(vehicle.Components.RetarderInputData, powertrainPosition),
//PTO = ptoTransmissionData,
Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name),
ExecutionMode = ExecutionMode.Engineering,
ElectricMachinesData = electricMachinesData,
//HybridStrategyParameters = dao.CreateHybridStrategyParameters(InputDataProvider.JobInputData.HybridStrategyParameters),
BatteryData = batteryData,
SuperCapData = supercapData,
SimulationType = SimulationType.DistanceCycle | SimulationType.MeasuredSpeedCycle | SimulationType.PWheel,
GearshiftParameters = gearshiftParams,
ElectricAuxDemand = InputDataProvider.JobInputData.Vehicle.Components.AuxiliaryInputData.Auxiliaries.ElectricPowerDemand,
};
}
}
protected virtual IEnumerable<VectoRunData> GetConventionalVehicleRunData()
{
var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment