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 76ccf9dd authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Pull request #12: Feature/VECTO-1588 implement iepc s

Merge in VECTO/mq_vecto-dev from feature/VECTO-1588-implement-iepc-s to develop

* commit '46d545b8':
  implement powertrain builder for IEPC-S, necessary adaptations for IEPC-S simulations
  correcting iepc-s testjobs
  removed no longer needed classes
  allow to run all jobs in IEPC tests
  started implementation of IEPC-S
  adding testcases for IEPC-S
  adding testdata for IEPC-S
parents f59d8e1e 46d545b8
Branches
Tags
No related merge requests found
Showing
with 1059 additions and 55 deletions
...@@ -1159,7 +1159,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -1159,7 +1159,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
? null ? null
: JSONInputDataFactory.ReadShiftParameters(Path.Combine(BasePath, Body.GetEx<string>("TCU")), false); : JSONInputDataFactory.ReadShiftParameters(Path.Combine(BasePath, Body.GetEx<string>("TCU")), false);
public override VectoSimulationJobType JobType => VectoSimulationJobType.IEPC_E; public override VectoSimulationJobType JobType => VehicleData.VehicleType;
} }
// -------------------------- // --------------------------
......
...@@ -58,6 +58,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -58,6 +58,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public override IIEPCDeclarationInputData IEPC => JSONInputDataFactory.ReadIEPCEngineeringInputData( public override IIEPCDeclarationInputData IEPC => JSONInputDataFactory.ReadIEPCEngineeringInputData(
Path.Combine(BasePath, Body.GetEx<string>("IEPC")), false); Path.Combine(BasePath, Body.GetEx<string>("IEPC")), false);
#region Overrides of JSONVehicleDataV10_HEV_BEV
public override TableData BoostingLimitations => null;
#endregion
} }
public class JSONVehicleDataV10_HEV_BEV : JSONVehicleDataV9 public class JSONVehicleDataV10_HEV_BEV : JSONVehicleDataV9
...@@ -93,6 +99,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -93,6 +99,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
case "BatteryElectric": return VectoSimulationJobType.BatteryElectricVehicle; case "BatteryElectric": return VectoSimulationJobType.BatteryElectricVehicle;
case "SerialHybrid": return VectoSimulationJobType.SerialHybridVehicle; case "SerialHybrid": return VectoSimulationJobType.SerialHybridVehicle;
case "IEPC": return VectoSimulationJobType.IEPC_E; case "IEPC": return VectoSimulationJobType.IEPC_E;
case "IEPC-S": return VectoSimulationJobType.IEPC_S;
default: throw new VectoException("Invalid parameter value {0}", Body.GetEx<String>("PowertrainConfiguration")); default: throw new VectoException("Invalid parameter value {0}", Body.GetEx<String>("PowertrainConfiguration"));
} }
} }
...@@ -133,9 +140,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -133,9 +140,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
switch (VehicleType) { switch (VehicleType) {
case VectoSimulationJobType.BatteryElectricVehicle: case VectoSimulationJobType.BatteryElectricVehicle:
case VectoSimulationJobType.IEPC_E:
return _adasInputData = new JSONADASInputDataV10BEV(this); return _adasInputData = new JSONADASInputDataV10BEV(this);
case VectoSimulationJobType.ParallelHybridVehicle: case VectoSimulationJobType.ParallelHybridVehicle:
case VectoSimulationJobType.SerialHybridVehicle: case VectoSimulationJobType.SerialHybridVehicle:
case VectoSimulationJobType.IEPC_S:
return _adasInputData = new JSONADASInputDataV10HEV(this); return _adasInputData = new JSONADASInputDataV10HEV(this);
default: default:
return base.GetADS(); return base.GetADS();
......
...@@ -81,6 +81,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -81,6 +81,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
case VectoSimulationJobType.BatteryElectricVehicle: return BuildBatteryElectricPowertrain(data); case VectoSimulationJobType.BatteryElectricVehicle: return BuildBatteryElectricPowertrain(data);
case VectoSimulationJobType.EngineOnlySimulation: return BuildEngineOnly(data); case VectoSimulationJobType.EngineOnlySimulation: return BuildEngineOnly(data);
case VectoSimulationJobType.IEPC_E: return BuildFullPowertrainIEPCE(data); case VectoSimulationJobType.IEPC_E: return BuildFullPowertrainIEPCE(data);
case VectoSimulationJobType.IEPC_S: return BuildFullPowertrainIEPCSerial(data);
default: throw new ArgumentOutOfRangeException($"Powertrain Builder cannot build Powertrain for JobType: {data.JobType}"); default: throw new ArgumentOutOfRangeException($"Powertrain Builder cannot build Powertrain for JobType: {data.JobType}");
} }
case CycleType.EngineOnly: return BuildEngineOnly(data); case CycleType.EngineOnly: return BuildEngineOnly(data);
...@@ -763,7 +764,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -763,7 +764,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
container.ModData?.AddElectricMotor(pos); container.ModData?.AddElectricMotor(pos);
ctl.AddElectricMotor(pos, motorData.Item2); ctl.AddElectricMotor(pos, motorData.Item2);
var motor = new ElectricMotor(container, motorData.Item2, ctl.ElectricMotorControl(pos), pos); var motor = pos == PowertrainPosition.IEPC
? new IEPC(container, motorData.Item2, ctl.ElectricMotorControl(pos), pos)
: new ElectricMotor(container, motorData.Item2, ctl.ElectricMotorControl(pos), pos);
if (pos == PowertrainPosition.GEN) { if (pos == PowertrainPosition.GEN) {
es.Connect(new GensetChargerAdapter(motor)); es.Connect(new GensetChargerAdapter(motor));
} else { } else {
...@@ -799,9 +802,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -799,9 +802,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
/// └AxleGear /// └AxleGear
/// │ ├(AxlegearInputRetarder) /// │ ├(AxlegearInputRetarder)
/// | ├Singlespeed Gearbox /// | ├Singlespeed Gearbox
/// | └Engine Ex /// | └Engine IEPC
/// └ APTNGearbox /// └ APTNGearbox
/// └Engine E2 /// └Engine IEPC
/// </code> /// </code>
/// </summary> /// </summary>
private IVehicleContainer BuildFullPowertrainIEPCE(VectoRunData data) private IVehicleContainer BuildFullPowertrainIEPCE(VectoRunData data)
...@@ -873,6 +876,101 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -873,6 +876,101 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
return container; return container;
} }
/// <summary>
/// Builds a battery electric powertrain for either E4, E3, or E2.
/// <code>
/// DistanceBasedDrivingCycle
/// └Driver
/// └Vehicle
/// └Wheels
/// └Brakes
/// └AxleGear
/// │ ├(AxlegearInputRetarder)
/// | ├Singlespeed Gearbox
/// | └Engine IEPC
/// └ APTNGearbox
/// └Engine IEPC
/// </code>
/// </summary>
private IVehicleContainer BuildFullPowertrainIEPCSerial(VectoRunData data)
{
if (data.Cycle.CycleType != CycleType.DistanceBased) {
throw new VectoException("CycleType must be DistanceBased");
}
if (data.ElectricMachinesData.Count(x => x.Item1 == PowertrainPosition.GEN) != 1) {
throw new VectoException("IEPC vehicle needs exactly one GEN set.");
}
if (data.ElectricMachinesData.Count(x => x.Item1 != PowertrainPosition.GEN) != 1) {
throw new VectoException("IEPC vehicle needs exactly one electric motor.");
}
var container = new VehicleContainer(data.ExecutionMode, _modData, _sumWriter) { RunData = data };
var es = ConnectREESS(data, container);
var strategy = new SerialHybridStrategy(data, container);
var ctl = new SerialHybridController(container, strategy, es);
var engine = new StopStartCombustionEngine(container, data.EngineData);
var idleController = engine.IdleController;
ctl.Engine = engine;
var aux = new ElectricAuxiliary(container);
aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
es.Connect(aux);
var cycle = new DistanceBasedDrivingCycle(container, data.Cycle);
var powertrain = cycle
.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy(container)))
.AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData))
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(ctl)
.AddComponent(new Brakes(container));
var pos = data.ElectricMachinesData.First(x => x.Item1 != PowertrainPosition.GEN).Item1;
IElectricMotor em;
if (pos != PowertrainPosition.IEPC) {
throw new ArgumentOutOfRangeException(nameof(pos), pos, "Invalid engine powertrain position for BatteryElectric Vehicle");
}
//-->AxleGear-->APTNGearbox or SinglespeedGearbox-->Engine E2
var gearbox = data.GearboxData.Gears.Count > 1
? (IGearbox)new APTNGearbox(container, new APTNShiftStrategy(container))
: new SingleSpeedGearbox(container, data.GearboxData);
em = GetElectricMachine(PowertrainPosition.IEPC, data.ElectricMachinesData, container, es, ctl);
powertrain
.AddComponent(data.AxleGearData != null ? new AxleGear(container, data.AxleGearData) : null)
.AddComponent(GetRetarder(RetarderType.AxlegearInputRetarder, data.Retarder, container))
.AddComponent(gearbox)
.AddComponent(em);
new ATClutchInfo(container);
if (data.AxleGearData == null) {
new DummyAxleGearInfo(container);
}
if (data.BusAuxiliaries != null) {
if (!data.BusAuxiliaries.ElectricalUserInputsConfig.ConnectESToREESS) {
throw new VectoException("BusAux must be supplied from REESS!");
}
var auxCfg = data.BusAuxiliaries;
var busAux = new BusAuxiliariesAdapter(container, auxCfg);
var electricStorage = new NoBattery(container);
busAux.ElectricStorage = electricStorage;
var dcdc = new DCDCConverter(container, data.BusAuxiliaries.ElectricalUserInputsConfig.DCDCEfficiency);
busAux.DCDCConverter = dcdc;
es.Connect(dcdc);
em.BusAux = busAux;
}
ctl.GenSet.AddComponent(GetElectricMachine(PowertrainPosition.GEN, data.ElectricMachinesData, container, es, ctl))
.AddComponent(engine, idleController)
.AddAuxiliaries(container, data);
return container;
}
/// <summary> /// <summary>
/// Builds a simple conventional powertrain. /// Builds a simple conventional powertrain.
/// <code> /// <code>
...@@ -1005,6 +1103,59 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -1005,6 +1103,59 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
} }
} }
/// <summary>
/// Builds a simple serial hybrid powertrain with either E4, E3, or E2.
/// <code>
/// Vehicle
/// └Wheels
/// └SimpleHybridController
/// └Brakes
/// │ └Engine E4
/// └AxleGear
/// │ ├(AxlegearInputRetarder)
/// │ └Engine E3
/// ├(AngleDrive)
/// ├(TransmissionOutputRetarder)
/// └Gearbox or APTNGearbox
/// ├(TransmissionInputRetarder)
/// └Engine E2
/// </code>
/// </summary>
public void BuildSimpleIEPCHybridPowertrain(VectoRunData data, VehicleContainer container)
{
var es = ConnectREESS(data, container);
var aux = new ElectricAuxiliary(container);
aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
es.Connect(aux);
es.Connect(new GensetChargerAdapter(null));
var ctl = new SimpleHybridController(container, es);
//Vehicle-->Wheels-->SimpleHybridController-->Brakes
var powertrain = new Vehicle(container, data.VehicleData, data.AirdragData)
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(ctl)
.AddComponent(new Brakes(container));
var pos = data.ElectricMachinesData.First(x => x.Item1 != PowertrainPosition.GEN).Item1;
var gearbox = data.GearboxData.Gears.Count > 1
? (IGearbox)new APTNGearbox(container, ctl.ShiftStrategy)
: new SingleSpeedGearbox(container, data.GearboxData);
var em = GetElectricMachine(PowertrainPosition.IEPC, data.ElectricMachinesData, container, es, ctl);
powertrain
.AddComponent(data.AxleGearData != null ? new AxleGear(container, data.AxleGearData) : null)
.AddComponent(GetRetarder(RetarderType.AxlegearInputRetarder, data.Retarder, container))
.AddComponent(gearbox)
.AddComponent(em);
}
/// <summary>
/// Builds a simple genset
/// <code>
/// Engine Gen
/// └CombustionEngine
/// </code>
/// </summary>
public void BuildSimpleGenSet(VectoRunData data, VehicleContainer container) public void BuildSimpleGenSet(VectoRunData data, VehicleContainer container)
{ {
var es = ConnectREESS(data, container); var es = ConnectREESS(data, container);
......
...@@ -25,8 +25,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -25,8 +25,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
if (dataBus.RunData.VehicleData == null) { if (dataBus.RunData.VehicleData == null) {
return; return;
} }
if (!dataBus.IsTestPowertrain) {
SetupVelocityDropPreprocessor(dataBus); SetupVelocityDropPreprocessor(dataBus);
} }
}
public new static string Name => "APT-N"; public new static string Name => "APT-N";
......
using System.Collections.Generic;
using TUGraz.VectoCommon.Utils;
namespace TUGraz.VectoCore.Models.SimulationComponent.Impl {
public class MaxCardanTorqueLookup
{
public Dictionary<uint, List<KeyValuePair<PerSecond, NewtonMeter>>> Data { protected get; set; }
public NewtonMeter Lookup(uint gear, PerSecond engineSpeed)
{
return Data[gear].Interpolate(x => x.Key.Value(), y => y.Value, engineSpeed.Value());
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.Utils;
namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
{
public class MaxGradabilityLookup
{
protected internal Dictionary<uint, Tuple<Radian, Radian>> _data;
public Dictionary<uint, Tuple<Radian, Radian>> Data
{
set { _data = value; }
}
public Radian GradabilityMaxTorque(uint gear)
{
return _data[gear].Item1;
}
public Radian GradabilityLimitedTorque(uint gear)
{
return _data[gear].Item2;
}
}
}
\ No newline at end of file
...@@ -116,9 +116,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -116,9 +116,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
ratio = DataBus.AxlegearInfo.Ratio; ratio = DataBus.AxlegearInfo.Ratio;
} }
if (pos == PowertrainPosition.BatteryElectricE2) { if (pos == PowertrainPosition.BatteryElectricE2 || pos == PowertrainPosition.IEPC) {
ratio = DataBus.GearboxInfo.GetGearData(DataBus.GearboxInfo.NumGears).Ratio * ratio = DataBus.GearboxInfo.GetGearData(DataBus.GearboxInfo.NumGears).Ratio *
DataBus.AxlegearInfo.Ratio * (DataBus.AxlegearInfo?.Ratio ?? 1.0) *
(DataBus.AngledriveInfo?.Ratio ?? 1.0); (DataBus.AngledriveInfo?.Ratio ?? 1.0);
} }
MaxVehicleSpeed = maxEMSpeed / ratio * DataBus.WheelsInfo.DynamicTyreRadius * 0.995; MaxVehicleSpeed = maxEMSpeed / ratio * DataBus.WheelsInfo.DynamicTyreRadius * 0.995;
......
...@@ -289,7 +289,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies ...@@ -289,7 +289,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
var modData = new ModalDataContainer(runData, null, null); var modData = new ModalDataContainer(runData, null, null);
var builder = new PowertrainBuilder(modData); var builder = new PowertrainBuilder(modData);
var testContainer = new SimplePowertrainContainer(runData); var testContainer = new SimplePowertrainContainer(runData);
if (runData.JobType == VectoSimulationJobType.IEPC_S) {
builder.BuildSimpleIEPCHybridPowertrain(runData, testContainer);
} else {
builder.BuildSimpleSerialHybridPowertrain(runData, testContainer); builder.BuildSimpleSerialHybridPowertrain(runData, testContainer);
}
TestPowertrain = new TestPowertrain<T>(testContainer, DataBus); TestPowertrain = new TestPowertrain<T>(testContainer, DataBus);
......
...@@ -172,6 +172,12 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric ...@@ -172,6 +172,12 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
factory.SumData = sumContainer; factory.SumData = sumContainer;
if (cycleIdx < 0) {
jobContainer.AddRuns(factory);
jobContainer.Execute();
jobContainer.WaitFinished();
Assert.IsTrue(jobContainer.GetProgress().All(x => x.Value.Success));
} else {
var run = factory.SimulationRuns().ToArray()[cycleIdx]; var run = factory.SimulationRuns().ToArray()[cycleIdx];
Assert.NotNull(run); Assert.NotNull(run);
...@@ -182,6 +188,8 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric ...@@ -182,6 +188,8 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
run.Run(); run.Run();
Assert.IsTrue(run.FinishedWithoutErrors); Assert.IsTrue(run.FinishedWithoutErrors);
}
} }
} }
......
using System.IO;
using System.Linq;
using NUnit.Framework;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCore.InputData.FileIO.JSON;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.Tests.Utils;
namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
{
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class IEPC_S_Test
{
protected const string IEPC_S_Gbx3Speed = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed\IEPC-S_ENG_Gbx3.vecto";
protected const string IEPC_S_Gbx3Speed_drag = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed\IEPC-S_ENG_Gbx3_drag.vecto";
protected const string IEPC_S_Gbx3SpeedAxle = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed+Axle\IEPC-S_ENG_Gbx3Axl.vecto";
protected const string IEPC_S_Gbx3SpeedWhl1 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed-Whl1\IEPC-S_ENG_Gbx3Whl1.vecto";
protected const string IEPC_S_Gbx3SpeedWhl2 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed-Whl2\IEPC-S_ENG_Gbx3Whl2.vecto";
protected const string IEPC_S_Gbx1Speed = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed\IEPC-S_ENG_Gbx1.vecto";
protected const string IEPC_S_Gbx1SpeedAxl = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed+Axle\IEPC-S_ENG_Gbx1Axl.vecto";
protected const string IEPC_S_Gbx1SpeedWhl1 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed-Whl1\IEPC-S_ENG_Gbx1Whl1.vecto";
protected const string IEPC_S_Gbx1SpeedWhl2 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed-Whl2\IEPC-S_ENG_Gbx1Whl2.vecto";
[OneTimeSetUp]
public void RunBeforeAnyTests()
{
Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
}
private GraphWriter GetGraphWriter(ModalResultField[] yFields)
{
var graphWriter = new GraphWriter();
//#if TRACE
graphWriter.Enable();
//#else
//graphWriter.Disable();
//#endif
var Yfields = new[] {
ModalResultField.v_act, ModalResultField.altitude, ModalResultField.acc, ModalResultField.Gear,
ModalResultField.REESSStateOfCharge,
}.Concat(yFields).ToArray();
graphWriter.Xfields = new[] { ModalResultField.dist };
graphWriter.Yfields = yFields;
graphWriter.Series1Label = "BEV";
graphWriter.PlotIgnitionState = true;
return graphWriter;
}
[TestCase(IEPC_S_Gbx3Speed, 0, TestName = "IEPC-S Gbx 3speed Job LH"),
TestCase(IEPC_S_Gbx3Speed, 1, TestName = "IEPC-S Gbx 3speed Job Coach"),
TestCase(IEPC_S_Gbx3Speed, 2, TestName = "IEPC-S Gbx 3speed Job CO"),
TestCase(IEPC_S_Gbx3Speed, 3, TestName = "IEPC-S Gbx 3speed Job HU"),
TestCase(IEPC_S_Gbx3Speed, 4, TestName = "IEPC-S Gbx 3speed Job IU"),
TestCase(IEPC_S_Gbx3Speed, 5, TestName = "IEPC-S Gbx 3speed Job RD"),
TestCase(IEPC_S_Gbx3Speed, 6, TestName = "IEPC-S Gbx 3speed Job SU"),
TestCase(IEPC_S_Gbx3Speed, 7, TestName = "IEPC-S Gbx 3speed Job U"),
TestCase(IEPC_S_Gbx3Speed, 8, TestName = "IEPC-S Gbx 3speed Job UD"),
TestCase(IEPC_S_Gbx3Speed_drag, 0, TestName = "IEPC-S Gbx 3speed sep dragCurves Job LH"),
TestCase(IEPC_S_Gbx3Speed_drag, 1, TestName = "IEPC-S Gbx 3speed sep dragCurves Job Coach"),
TestCase(IEPC_S_Gbx3Speed_drag, 2, TestName = "IEPC-S Gbx 3speed sep dragCurves Job CO"),
TestCase(IEPC_S_Gbx3Speed_drag, 3, TestName = "IEPC-S Gbx 3speed sep dragCurves Job HU"),
TestCase(IEPC_S_Gbx3Speed_drag, 4, TestName = "IEPC-S Gbx 3speed sep dragCurves Job IU"),
TestCase(IEPC_S_Gbx3Speed_drag, 5, TestName = "IEPC-S Gbx 3speed sep dragCurves Job RD"),
TestCase(IEPC_S_Gbx3Speed_drag, 6, TestName = "IEPC-S Gbx 3speed sep dragCurves Job SU"),
TestCase(IEPC_S_Gbx3Speed_drag, 7, TestName = "IEPC-S Gbx 3speed sep dragCurves Job U"),
TestCase(IEPC_S_Gbx3Speed_drag, 8, TestName = "IEPC-S Gbx 3speed sep dragCurves Job UD"),
TestCase(IEPC_S_Gbx3SpeedAxle, 0, TestName = "IEPC-S Gbx 3speed + Axle Job LH"),
TestCase(IEPC_S_Gbx3SpeedAxle, 1, TestName = "IEPC-S Gbx 3speed + Axle Job Coach"),
TestCase(IEPC_S_Gbx3SpeedAxle, 2, TestName = "IEPC-S Gbx 3speed + Axle Job CO"),
TestCase(IEPC_S_Gbx3SpeedAxle, 3, TestName = "IEPC-S Gbx 3speed + Axle Job HU"),
TestCase(IEPC_S_Gbx3SpeedAxle, 4, TestName = "IEPC-S Gbx 3speed + Axle Job IU"),
TestCase(IEPC_S_Gbx3SpeedAxle, 5, TestName = "IEPC-S Gbx 3speed + Axle Job RD"),
TestCase(IEPC_S_Gbx3SpeedAxle, 6, TestName = "IEPC-S Gbx 3speed + Axle Job SU"),
TestCase(IEPC_S_Gbx3SpeedAxle, 7, TestName = "IEPC-S Gbx 3speed + Axle Job U"),
TestCase(IEPC_S_Gbx3SpeedAxle, 8, TestName = "IEPC-S Gbx 3speed + Axle Job UD"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 0, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job LH"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 1, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job Coach"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 2, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job CO"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 3, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job HU"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 4, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job IU"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 5, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job RD"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 6, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job SU"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 7, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job U"),
TestCase(IEPC_S_Gbx3SpeedWhl1, 8, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job UD"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 0, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job LH"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 1, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job Coach"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 2, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job CO"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 3, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job HU"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 4, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job IU"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 5, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job RD"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 6, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job SU"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 7, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job U"),
TestCase(IEPC_S_Gbx3SpeedWhl2, 8, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job UD"),
TestCase(IEPC_S_Gbx1Speed, 0, TestName = "IEPC-S Gbx 1speed Job LH"),
TestCase(IEPC_S_Gbx1Speed, 1, TestName = "IEPC-S Gbx 1speed Job Coach"),
TestCase(IEPC_S_Gbx1Speed, 2, TestName = "IEPC-S Gbx 1speed Job CO"),
TestCase(IEPC_S_Gbx1Speed, 3, TestName = "IEPC-S Gbx 1speed Job HU"),
TestCase(IEPC_S_Gbx1Speed, 4, TestName = "IEPC-S Gbx 1speed Job IU"),
TestCase(IEPC_S_Gbx1Speed, 5, TestName = "IEPC-S Gbx 1speed Job RD"),
TestCase(IEPC_S_Gbx1Speed, 6, TestName = "IEPC-S Gbx 1speed Job SU"),
TestCase(IEPC_S_Gbx1Speed, 7, TestName = "IEPC-S Gbx 1speed Job U"),
TestCase(IEPC_S_Gbx1Speed, 8, TestName = "IEPC-S Gbx 1speed Job UD"),
TestCase(IEPC_S_Gbx1SpeedAxl, 0, TestName = "IEPC-S Gbx 1speed + Axle Job LH"),
TestCase(IEPC_S_Gbx1SpeedAxl, 1, TestName = "IEPC-S Gbx 1speed + Axle Job Coach"),
TestCase(IEPC_S_Gbx1SpeedAxl, 2, TestName = "IEPC-S Gbx 1speed + Axle Job CO"),
TestCase(IEPC_S_Gbx1SpeedAxl, 3, TestName = "IEPC-S Gbx 1speed + Axle Job HU"),
TestCase(IEPC_S_Gbx1SpeedAxl, 4, TestName = "IEPC-S Gbx 1speed + Axle Job IU"),
TestCase(IEPC_S_Gbx1SpeedAxl, 5, TestName = "IEPC-S Gbx 1speed + Axle Job RD"),
TestCase(IEPC_S_Gbx1SpeedAxl, 6, TestName = "IEPC-S Gbx 1speed + Axle Job SU"),
TestCase(IEPC_S_Gbx1SpeedAxl, 7, TestName = "IEPC-S Gbx 1speed + Axle Job U"),
TestCase(IEPC_S_Gbx1SpeedAxl, 8, TestName = "IEPC-S Gbx 1speed + Axle Job UD"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 0, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job LH"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 1, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job Coach"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 2, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job CO"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 3, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job HU"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 4, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job IU"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 5, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job RD"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 6, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job SU"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 7, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job U"),
TestCase(IEPC_S_Gbx1SpeedWhl1, 8, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job UD"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 0, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job LH"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 1, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job Coach"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 2, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job CO"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 3, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job HU"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 4, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job IU"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 5, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job RD"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 6, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job SU"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 7, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job U"),
TestCase(IEPC_S_Gbx1SpeedWhl2, 8, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job UD"),
]
public void IEPCRunJob(string jobFile, int cycleIdx)
{
var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile);
var writer = new FileOutputWriter(jobFile);
var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer);
factory.Validate = false;
factory.WriteModalResults = true;
var sumContainer = new SummaryDataContainer(writer);
var jobContainer = new JobContainer(sumContainer);
factory.SumData = sumContainer;
if (cycleIdx < 0) {
jobContainer.AddRuns(factory);
jobContainer.Execute();
jobContainer.WaitFinished();
Assert.IsTrue(jobContainer.GetProgress().All(x => x.Value.Success));
} else {
var run = factory.SimulationRuns().ToArray()[cycleIdx];
Assert.NotNull(run);
var pt = run.GetContainer();
Assert.NotNull(pt);
run.Run();
Assert.IsTrue(run.FinishedWithoutErrors);
}
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": "",
"Date": "2021-06-17T07:29:46.1581600Z",
"AppVersion": "3",
"FileVersion": 5
},
"Body": {
"SavedInDeclMode": false,
"ModelName": "209kW 7.7l Engine",
"Displacement": "7700",
"IdlingSpeed": 600.0,
"Inertia": 3.33,
"Fuels": [
{
"WHTC-Urban": 0.0,
"WHTC-Rural": 0.0,
"WHTC-Motorway": 0.0,
"WHTC-Engineering": 1.0090832895,
"ColdHotBalancingFactor": 0.0,
"CFRegPer": 1.0,
"FuelMap": "209kW_ICE_Map.vmap",
"FuelType": "DieselCI"
}
],
"RatedPower": 209000,
"RatedSpeed": 2550.0,
"MaxTorque": 1100,
"FullLoadCurve": "209kW_ICE_fld.vfld",
"WHRType": [
"None"
],
"WHRCorrectionFactors": {}
}
}
\ No newline at end of file
engine speed [rpm], torque [Nm], fuel consumption [g/h]
600.00,0.00,648.214
600.00,68.85,1626.915
600.00,98.35,2053.103
600.00,195.48,3383.983
600.00,293.83,4726.347
600.00,392.18,6058.504
600.00,489.31,8107.779
600.00,587.66,10186.402
600.00,684.78,12239.042
600.00,783.14,14317.665
600.00,881.49,16396.288
600.00,978.61,18448.929
600.00,1076.96,20527.552
600.00,1175.32,22606.175
851.61,0.00,928.937
851.61,64.67,1892.325
851.61,92.39,2405.282
851.61,183.63,4070.477
851.61,276.02,5758.641
851.61,368.41,7453.185
851.61,459.65,9663.237
851.61,552.04,11837.561
851.61,643.28,13995.297
851.61,735.67,16050.952
851.61,828.06,18103.130
851.61,919.30,20129.657
851.61,1011.69,22181.836
851.61,1104.09,24234.015
1103.23,0.00,1209.659
1103.23,62.41,2157.736
1103.23,89.15,2758.737
1103.23,177.19,4758.248
1103.23,266.34,6792.210
1103.23,355.49,8847.865
1103.23,443.52,11219.971
1103.23,532.67,13488.720
1103.23,620.71,15726.845
1103.23,709.86,17966.245
1103.23,799.01,20229.890
1103.23,887.05,22492.259
1103.23,976.20,24743.508
1103.23,1065.35,26994.757
1354.84,0.00,1490.382
1354.84,60.98,2421.870
1354.84,87.11,3112.193
1354.84,173.14,5444.742
1354.84,260.25,7824.504
1354.84,347.36,10242.546
1354.84,433.39,12776.705
1354.84,520.50,15141.155
1354.84,606.52,17457.117
1354.84,693.63,19881.539
1354.84,780.75,22341.689
1354.84,866.77,24801.840
1354.84,953.88,27249.231
1354.84,1041.00,30075.597
1606.45,0.00,1964.218
1606.45,60.00,2898.713
1606.45,85.71,3701.160
1606.45,170.35,6375.138
1606.45,256.07,9132.915
1606.45,341.78,11916.086
1606.45,426.42,14629.424
1606.45,512.14,17373.235
1606.45,596.78,20240.205
1606.45,682.49,23084.322
1606.45,768.20,25784.963
1606.45,852.85,28443.704
1606.45,938.56,31162.121
1606.45,1024.27,33987.192
1858.06,0.00,2405.472
1858.06,59.28,3395.960
1858.06,84.69,4296.748
1858.06,168.33,7298.534
1858.06,253.02,10456.979
1858.06,337.71,13614.161
1858.06,421.35,16806.717
1858.06,506.04,19948.738
1858.06,589.67,23098.339
1858.06,674.37,26265.628
1858.06,759.06,29333.109
1858.06,842.69,32242.669
1858.06,927.39,35435.225
1858.06,1012.08,38645.468
2109.68,0.00,2908.296
2109.68,58.74,4008.698
2109.68,83.92,4995.396
2109.68,166.78,8282.706
2109.68,250.70,11854.275
2109.68,334.61,15399.314
2109.68,417.48,18962.040
2109.68,501.40,22400.954
2109.68,584.26,25903.038
2109.68,668.18,29565.571
2109.68,752.10,33148.511
2109.68,834.96,36787.039
2109.68,918.88,40596.124
2109.68,1002.79,44447.432
2361.29,0.00,3517.244
2361.29,58.31,4836.211
2361.29,83.30,5889.868
2361.29,165.57,9403.322
2361.29,248.87,13398.123
2361.29,332.18,17295.644
2361.29,414.44,21267.704
2361.29,497.74,25214.497
2361.29,580.01,29106.965
2361.29,663.31,33230.630
2361.29,746.62,37409.885
2361.29,828.88,41464.064
2361.29,912.18,45307.994
2361.29,995.49,49151.923
2612.90,0.00,4272.744
2612.90,57.97,5567.707
2612.90,82.81,6727.488
2612.90,164.59,10597.214
2612.90,247.40,14941.971
2612.90,330.21,19262.724
2612.90,411.98,23531.678
2612.90,494.79,27996.455
2612.90,576.57,32694.958
2612.90,659.38,37346.716
2612.90,742.19,41862.028
2612.90,823.97,46367.264
2612.90,906.78,50929.527
2612.90,989.59,55491.791
2864.52,0.00,4975.182
2864.52,57.68,6271.408
2864.52,82.40,7570.161
2864.52,163.78,11901.020
2864.52,246.18,16541.408
2864.52,328.59,21435.734
2864.52,409.96,26482.929
2864.52,492.36,31523.807
2864.52,573.74,36936.118
2864.52,656.14,42358.536
2864.52,738.54,47310.978
2864.52,819.92,52201.514
2864.52,902.32,57153.955
2864.52,984.73,62106.397
535.00,-48.25,0.000
795.00,-53.16,0.000
1055.00,-59.37,0.000
1315.00,-66.29,0.000
1575.00,-73.79,0.000
1835.00,-81.42,0.000
2095.00,-88.73,0.000
2355.00,-95.54,0.000
2615.00,-102.74,0.000
2875.00,-110.97,0.000
3005.00,-115.10,0.000
535.00,-117.19,0.000
795.00,-115.02,0.000
1055.00,-117.63,0.000
1315.00,-122.38,0.000
1575.00,-128.43,0.000
1835.00,-135.02,0.000
2095.00,-141.54,0.000
2355.00,-147.74,0.000
2615.00,-154.45,0.000
2875.00,-162.29,0.000
3005.00,-166.24,0.000
engine speed [1/min], full load torque [Nm], motoring torque [Nm]
600.00,385.00,-55.851
1321.50,1100.00,-61.072
1867.50,1100.00,-75.131
2550.00,782.67,-97.074
3291.00,0.00,-144.231
n [rpm] , T [Nm] , P_el [kW]
0.00,-1030.00,0.000
0.00,-978.50,0.000
0.00,-927.00,0.000
0.00,-875.50,0.000
0.00,-824.00,0.000
0.00,-772.50,0.000
0.00,-721.00,-0.220
0.00,-669.50,-0.510
0.00,-618.00,-0.671
0.00,-566.50,-0.765
0.00,-515.00,-0.813
0.00,-463.50,-0.826
0.00,-412.00,-0.811
0.00,-360.50,-0.771
0.00,-309.00,-0.710
0.00,-257.50,-0.629
0.00,-206.00,-0.531
0.00,-154.50,-0.416
0.00,-103.00,-0.287
0.00,-51.50,-0.143
0.00,-10.30,-0.015
0.00,10.30,0.059
0.00,51.50,0.264
0.00,103.00,0.527
0.00,154.50,0.800
0.00,206.00,1.080
0.00,257.50,1.370
0.00,309.00,1.667
0.00,360.50,1.972
0.00,412.00,2.285
0.00,463.50,2.606
0.00,515.00,2.935
0.00,566.50,3.270
0.00,618.00,3.613
0.00,669.50,3.964
0.00,721.00,4.321
0.00,772.50,4.685
0.00,824.00,5.056
0.00,875.50,5.433
0.00,927.00,5.818
0.00,978.50,6.209
0.00,1030.00,6.606
37.00,-1030.00,0.000
37.00,-978.50,0.000
37.00,-927.00,0.000
37.00,-875.50,0.000
37.00,-824.00,0.000
37.00,-772.50,0.000
37.00,-721.00,-0.447
37.00,-669.50,-0.678
37.00,-618.00,-0.798
37.00,-566.50,-0.860
37.00,-515.00,-0.883
37.00,-463.50,-0.876
37.00,-412.00,-0.845
37.00,-360.50,-0.792
37.00,-309.00,-0.721
37.00,-257.50,-0.633
37.00,-206.00,-0.530
37.00,-154.50,-0.413
37.00,-103.00,-0.283
37.00,-51.50,-0.141
37.00,-10.30,-0.015
37.00,10.30,0.055
37.00,51.50,0.248
37.00,103.00,0.495
37.00,154.50,0.749
37.00,206.00,1.011
37.00,257.50,1.280
37.00,309.00,1.556
37.00,360.50,1.840
37.00,412.00,2.129
37.00,463.50,2.426
37.00,515.00,2.729
37.00,566.50,3.039
37.00,618.00,3.355
37.00,669.50,3.677
37.00,721.00,4.005
37.00,772.50,4.340
37.00,824.00,4.680
37.00,875.50,5.026
37.00,927.00,5.378
37.00,978.50,5.735
37.00,1030.00,6.098
370.00,-1030.00,-36.344
370.00,-978.50,-34.617
370.00,-927.00,-32.881
370.00,-875.50,-31.134
370.00,-824.00,-29.376
370.00,-772.50,-27.609
370.00,-721.00,-25.831
370.00,-669.50,-24.043
370.00,-618.00,-22.244
370.00,-566.50,-20.436
370.00,-515.00,-18.617
370.00,-463.50,-16.789
370.00,-412.00,-14.950
370.00,-360.50,-13.102
370.00,-309.00,-11.244
370.00,-257.50,-9.375
370.00,-206.00,-7.497
370.00,-154.50,-5.609
370.00,-103.00,-3.711
370.00,-51.50,-1.802
370.00,-10.30,-0.248
370.00,10.30,0.515
370.00,51.50,2.185
370.00,103.00,4.271
370.00,154.50,6.366
370.00,206.00,8.470
370.00,257.50,10.584
370.00,309.00,12.707
370.00,360.50,14.839
370.00,412.00,16.982
370.00,463.50,19.133
370.00,515.00,21.294
370.00,566.50,23.465
370.00,618.00,25.644
370.00,669.50,27.833
370.00,721.00,30.032
370.00,772.50,32.239
370.00,824.00,34.456
370.00,875.50,36.682
370.00,927.00,38.918
370.00,978.50,41.162
370.00,1030.00,43.415
740.00,-1030.00,-74.961
740.00,-978.50,-71.312
740.00,-927.00,-67.651
740.00,-875.50,-63.979
740.00,-824.00,-60.294
740.00,-772.50,-56.597
740.00,-721.00,-52.889
740.00,-669.50,-49.169
740.00,-618.00,-45.436
740.00,-566.50,-41.693
740.00,-515.00,-37.937
740.00,-463.50,-34.170
740.00,-412.00,-30.391
740.00,-360.50,-26.600
740.00,-309.00,-22.798
740.00,-257.50,-18.984
740.00,-206.00,-15.158
740.00,-154.50,-11.321
740.00,-103.00,-7.471
740.00,-51.50,-3.607
740.00,-10.30,-0.452
740.00,10.30,1.051
740.00,51.50,4.367
740.00,103.00,8.495
740.00,154.50,12.632
740.00,206.00,16.780
740.00,257.50,20.940
740.00,309.00,25.111
740.00,360.50,29.294
740.00,412.00,33.488
740.00,463.50,37.693
740.00,515.00,41.910
740.00,566.50,46.139
740.00,618.00,50.379
740.00,669.50,54.630
740.00,721.00,58.893
740.00,772.50,63.167
740.00,824.00,67.452
740.00,875.50,71.749
740.00,927.00,76.057
740.00,978.50,80.377
740.00,1030.00,84.707
1110.00,-1030.00,-113.264
1110.00,-978.50,-107.719
1110.00,-927.00,-102.159
1110.00,-875.50,-96.584
1110.00,-824.00,-90.994
1110.00,-772.50,-85.390
1110.00,-721.00,-79.770
1110.00,-669.50,-74.136
1110.00,-618.00,-68.486
1110.00,-566.50,-62.822
1110.00,-515.00,-57.144
1110.00,-463.50,-51.450
1110.00,-412.00,-45.742
1110.00,-360.50,-40.018
1110.00,-309.00,-34.281
1110.00,-257.50,-28.528
1110.00,-206.00,-22.760
1110.00,-154.50,-16.978
1110.00,-103.00,-11.179
1110.00,-51.50,-5.359
1110.00,-10.30,-0.563
1110.00,10.30,1.626
1110.00,51.50,6.595
1110.00,103.00,12.768
1110.00,154.50,18.951
1110.00,206.00,25.148
1110.00,257.50,31.359
1110.00,309.00,37.584
1110.00,360.50,43.824
1110.00,412.00,50.078
1110.00,463.50,56.347
1110.00,515.00,62.631
1110.00,566.50,68.929
1110.00,618.00,75.242
1110.00,669.50,81.569
1110.00,721.00,87.911
1110.00,772.50,94.268
1110.00,824.00,100.638
1110.00,875.50,107.024
1110.00,927.00,113.423
1110.00,978.50,119.838
1110.00,1030.00,126.266
1480.00,-1030.00,-151.257
1480.00,-978.50,-143.841
1480.00,-927.00,-136.405
1480.00,-875.50,-128.950
1480.00,-824.00,-121.475
1480.00,-772.50,-113.982
1480.00,-721.00,-106.469
1480.00,-669.50,-98.937
1480.00,-618.00,-91.386
1480.00,-566.50,-83.815
1480.00,-515.00,-76.226
1480.00,-463.50,-68.618
1480.00,-412.00,-60.990
1480.00,-360.50,-53.344
1480.00,-309.00,-45.678
1480.00,-257.50,-37.993
1480.00,-206.00,-30.289
1480.00,-154.50,-22.565
1480.00,-103.00,-14.819
1480.00,-51.50,-7.042
1480.00,-10.30,-0.493
1480.00,10.30,2.246
1480.00,51.50,8.883
1480.00,103.00,17.106
1480.00,154.50,25.338
1480.00,206.00,33.588
1480.00,257.50,41.855
1480.00,309.00,50.141
1480.00,360.50,58.446
1480.00,412.00,66.770
1480.00,463.50,75.112
1480.00,515.00,83.474
1480.00,566.50,91.854
1480.00,618.00,100.253
1480.00,669.50,108.671
1480.00,721.00,117.108
1480.00,772.50,125.563
1480.00,824.00,134.038
1480.00,875.50,142.531
1480.00,927.00,151.043
1480.00,978.50,159.573
1480.00,1030.00,168.122
1850.00,-1030.00,-188.930
1850.00,-978.50,-179.665
1850.00,-927.00,-170.376
1850.00,-875.50,-161.062
1850.00,-824.00,-151.723
1850.00,-772.50,-142.360
1850.00,-721.00,-132.971
1850.00,-669.50,-123.558
1850.00,-618.00,-114.120
1850.00,-566.50,-104.657
1850.00,-515.00,-95.170
1850.00,-463.50,-85.659
1850.00,-412.00,-76.122
1850.00,-360.50,-66.561
1850.00,-309.00,-56.976
1850.00,-257.50,-47.365
1850.00,-206.00,-37.729
1850.00,-154.50,-28.067
1850.00,-103.00,-18.376
1850.00,-51.50,-8.638
1850.00,-10.30,0.000
1850.00,10.30,2.921
1850.00,51.50,11.243
1850.00,103.00,21.520
1850.00,154.50,31.807
1850.00,206.00,42.113
1850.00,257.50,52.443
1850.00,309.00,62.797
1850.00,360.50,73.174
1850.00,412.00,83.576
1850.00,463.50,94.003
1850.00,515.00,104.453
1850.00,566.50,114.928
1850.00,618.00,125.427
1850.00,669.50,135.950
1850.00,721.00,146.498
1850.00,772.50,157.070
1850.00,824.00,167.666
1850.00,875.50,178.286
1850.00,927.00,188.931
1850.00,978.50,199.599
1850.00,1030.00,210.291
2220.00,-1030.00,-226.266
2220.00,-978.50,-215.178
2220.00,-927.00,-204.058
2220.00,-875.50,-192.907
2220.00,-824.00,-181.723
2220.00,-772.50,-170.509
2220.00,-721.00,-159.262
2220.00,-669.50,-147.984
2220.00,-618.00,-136.675
2220.00,-566.50,-125.334
2220.00,-515.00,-113.962
2220.00,-463.50,-102.558
2220.00,-412.00,-91.123
2220.00,-360.50,-79.656
2220.00,-309.00,-68.158
2220.00,-257.50,-56.628
2220.00,-206.00,-45.066
2220.00,-154.50,-33.469
2220.00,-103.00,-21.833
2220.00,-51.50,-10.128
2220.00,-10.30,0.000
2220.00,10.30,3.656
2220.00,51.50,13.687
2220.00,103.00,26.025
2220.00,154.50,38.369
2220.00,206.00,50.739
2220.00,257.50,63.137
2220.00,309.00,75.565
2220.00,360.50,88.023
2220.00,412.00,100.512
2220.00,463.50,113.032
2220.00,515.00,125.583
2220.00,566.50,138.165
2220.00,618.00,150.778
2220.00,669.50,163.421
2220.00,721.00,176.096
2220.00,772.50,188.801
2220.00,824.00,201.537
2220.00,875.50,214.304
2220.00,927.00,227.101
2220.00,978.50,239.929
2220.00,1030.00,252.787
2590.00,-1030.00,-263.249
2590.00,-978.50,-250.362
2590.00,-927.00,-237.434
2590.00,-875.50,-224.467
2590.00,-824.00,-211.460
2590.00,-772.50,-198.413
2590.00,-721.00,-185.327
2590.00,-669.50,-172.200
2590.00,-618.00,-159.035
2590.00,-566.50,-145.830
2590.00,-515.00,-132.585
2590.00,-463.50,-119.301
2590.00,-412.00,-105.977
2590.00,-360.50,-92.614
2590.00,-309.00,-79.211
2590.00,-257.50,-65.768
2590.00,-206.00,-52.283
2590.00,-154.50,-38.755
2590.00,-103.00,-25.173
2590.00,-51.50,-11.490
2590.00,-10.30,0.000
2590.00,10.30,4.457
2590.00,51.50,16.224
2590.00,103.00,30.631
2590.00,154.50,45.039
2590.00,206.00,59.477
2590.00,257.50,73.949
2590.00,309.00,88.458
2590.00,360.50,103.005
2590.00,412.00,117.591
2590.00,463.50,132.215
2590.00,515.00,146.877
2590.00,566.50,161.579
2590.00,618.00,176.319
2590.00,669.50,191.097
2590.00,721.00,205.914
2590.00,772.50,220.770
2590.00,824.00,235.664
2590.00,875.50,250.596
2590.00,927.00,265.567
2590.00,978.50,280.576
2590.00,1030.00,295.623
\ No newline at end of file
n [rpm] , T_drag [Nm]
0, -1.89
37, -2.01
370, -3.02
740, -4.14
1110, -5.26
1480, -6.38
1850, -7.5
2220, -8.62
2590, -9.74
n [rpm] , T_drive [Nm] , T_drag [Nm]
0, 1030.00, -1030.00
37, 1030.00, -1030.00
370, 1030.00, -1030.00
740, 1030.00, -1030.00
1110, 1030.00, -1030.00
1480, 1030.00, -1030.00
1850, 1030.00, -1030.00
2220, 858.33, -858.33
2590, 735.71, -735.71
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T08:54:28.7387223Z",
"AppVersion": "3",
"FileVersion": 1
},
"Body": {
"SavedInDeclMode": false,
"Model": "Generic Battery",
"InternalResistanceCurve": "GenericBattery.vbatr",
"SOC_min": 10,
"SOC_max": 90,
"MaxCurrentMap": "MaxCurrent.vimax",
"Capacity": 68,
"SoCCurve": "GenericBattery.vbatv"
}
}
\ No newline at end of file
SoC, Ri
0, 0.04
100, 0.04
\ No newline at end of file
SOC, V
0, 673.5
10, 700.2
20, 715.4
30, 723.6
40, 727.7
50, 730.0
60, 731.6
70, 733.8
80, 737.1
90, 742.2
100, 750.2
\ No newline at end of file
{
"Header": {
"CreatedBy": "",
"Date": "2021-08-05T14:49:40.5920495Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": false,
"Model": "Generic Electric Motor",
"Inertia": 0.134,
"ContinuousTorque": 798,
"ContinuousTorqueSpeed": 1850,
"OverloadTorque": 1030,
"OverloadTorqueSpeed": 1850,
"OverloadTime": 120,
"ThermalOverloadRecoveryFactor": 0.9,
"VoltageLevels": [
{
"Voltage": 0.0,
"FullLoadCurve": "Gen_fld.vemp",
"DragCurve": "Gen_drag.vemd",
"EfficiencyMap": "Gen_Map.vemo"
},
{
"Voltage": 1000.0,
"FullLoadCurve": "Gen_fld.vemp",
"DragCurve": "Gen_drag.vemd",
"EfficiencyMap": "Gen_Map.vemo"
}
]
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment