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

Skip to content
Snippets Groups Projects
Commit 99e89a0c authored by Michael KRISPER's avatar Michael KRISPER
Browse files

add angular gear only if needed, adapt JSON input that angular gear is optional

parent 903b698d
No related branches found
No related tags found
No related merge requests found
......@@ -211,13 +211,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public IAngularGearInputData AngularGearInputData
{
get
{
if (AngularGear == null) {
throw new InvalidFileFormatException("AngularGear not found");
}
return AngularGear;
}
get { return AngularGear; }
}
IEngineDeclarationInputData IDeclarationInputDataProvider.EngineInputData
......
......@@ -30,7 +30,6 @@
*/
using System;
using System.Collections.Generic;
using System.Linq;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
......@@ -170,6 +169,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
};
}
/// <summary>
/// Creates an AngularGearData or returns null if there is no angular gear.
/// </summary>
/// <param name="data"></param>
/// <param name="useEfficiencyFallback">if true, the Efficiency value is used if no LossMap is found.</param>
/// <returns></returns>
internal AngularGearData CreateAngularGearData(IAngularGearInputData data, bool useEfficiencyFallback)
{
try {
......@@ -178,47 +183,41 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
type = data.Type;
} catch (Exception) {
Log.Info("AngularGear not found. Assuming None.");
// ignored
}
var angularGear = new AngularGearData {
SavedInDeclarationMode = data.SavedInDeclarationMode,
Vendor = data.Vendor,
ModelName = data.ModelName,
Creator = data.Creator,
Date = data.Date,
TypeId = data.TypeId,
DigestValue = data.DigestValue,
IntegrityStatus = data.IntegrityStatus,
Type = type,
AngularGear = new TransmissionData()
};
switch (angularGear.Type) {
switch (type) {
case AngularGearType.SeparateAngularGear:
var angularGear = new AngularGearData {
SavedInDeclarationMode = data.SavedInDeclarationMode,
Vendor = data.Vendor,
ModelName = data.ModelName,
Creator = data.Creator,
Date = data.Date,
TypeId = data.TypeId,
DigestValue = data.DigestValue,
IntegrityStatus = data.IntegrityStatus,
Type = type,
AngularGear = new TransmissionData { Ratio = data.Ratio }
};
try {
angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.LossMap, data.Ratio, "AngularGear");
} catch (VectoException) {
if (useEfficiencyFallback)
} catch (VectoException ex) {
Log.Info("AngularGear Loss Map not found.");
if (useEfficiencyFallback) {
Log.Info("AngularGear Trying with Efficiency instead of Loss Map.");
angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.Efficiency, data.Ratio, "AngularGear");
else {
throw;
} else {
throw new VectoException("AngularGear: LossMap or Efficiency not found.", ex);
}
}
angularGear.AngularGear.Ratio = data.Ratio;
break;
return angularGear;
case AngularGearType.LossesIncludedInGearbox:
case AngularGearType.None:
angularGear.AngularGear.Ratio = 1;
// if no angular gear or already included: Create LossMap with 100% efficiency
angularGear.AngularGear.LossMap = TransmissionLossMap.Create(1, angularGear.AngularGear.Ratio,
"Zero Losses AngularGear");
break;
return null;
default:
throw new ArgumentOutOfRangeException("data", "Unknown AngularGear Type.");
}
return angularGear;
} catch (Exception e) {
throw new VectoException("Error while reading AngularGear data: {0}", e.Message);
}
......
......@@ -104,7 +104,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
new PWheelCycle(container, data.Cycle, data.AxleGearData.AxleGear.Ratio,
gearbox.ModelData.Gears.ToDictionary(g => g.Key, g => g.Value.Ratio))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(new AngularGear(container, data.AngularGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddRetarderAndGearbox(data.Retarder, gearbox, container)
.AddComponent(new CycleClutch(container))
.AddComponent(new CombustionEngine(container, data.EngineData, pt1Disabled: true))
......@@ -128,7 +128,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(new AngularGear(container, data.AngularGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddRetarderAndGearbox(data.Retarder, GetGearbox(container, data.GearboxData), container)
.AddComponent(new Clutch(container, data.EngineData, engine.IdleController))
.AddComponent(engine)
......@@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(new AngularGear(container, data.AngularGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddRetarderAndGearbox(data.Retarder, new CycleGearbox(container, data.GearboxData), container)
.AddComponent(new CycleClutch(container))
.AddComponent(new CombustionEngine(container, data.EngineData))
......@@ -178,7 +178,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
.AddComponent(new Brakes(container))
.AddComponent(new AxleGear(container, data.AxleGearData))
.AddComponent(new AngularGear(container, data.AngularGearData))
.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
.AddRetarderAndGearbox(data.Retarder, GetGearbox(container, data.GearboxData), container)
.AddComponent(new Clutch(container, data.EngineData, engine.IdleController))
.AddComponent(engine)
......
......@@ -83,6 +83,9 @@ namespace TUGraz.VectoCore.Utils
public static IPowerTrainComponent AddComponent(this IPowerTrainComponent prev, IPowerTrainComponent next)
{
if (next == null)
return prev;
prev.InPort().Connect(next.OutPort());
return next;
}
......
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