Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

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

add ratio property to retarder

parent 25f7f1fc
No related branches found
No related tags found
No related merge requests found
......@@ -85,12 +85,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
switch (data.Retarder.Type) {
case RetarderData.RetarderType.Primary:
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap, data.Retarder.Ratio));
tmp = AddComponent(tmp, gearbox);
break;
case RetarderData.RetarderType.Secondary:
tmp = AddComponent(tmp, gearbox);
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap, data.Retarder.Ratio));
break;
case RetarderData.RetarderType.None:
tmp = AddComponent(tmp, new DummyRetarder(container));
......@@ -158,12 +158,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
switch (data.Retarder.Type) {
case RetarderData.RetarderType.Primary:
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap, data.Retarder.Ratio));
tmp = AddComponent(tmp, gearbox);
break;
case RetarderData.RetarderType.Secondary:
tmp = AddComponent(tmp, gearbox);
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap, data.Retarder.Ratio));
break;
case RetarderData.RetarderType.None:
tmp = AddComponent(tmp, gearbox);
......@@ -236,12 +236,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
switch (data.Retarder.Type) {
case RetarderData.RetarderType.Primary:
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap, data.Retarder.Ratio));
tmp = AddComponent(tmp, GetGearbox(container, data.GearboxData));
break;
case RetarderData.RetarderType.Secondary:
tmp = AddComponent(tmp, GetGearbox(container, data.GearboxData));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap));
tmp = AddComponent(tmp, new Retarder(container, data.Retarder.LossMap, data.Retarder.Ratio));
break;
case RetarderData.RetarderType.None:
tmp = AddComponent(tmp, GetGearbox(container, data.GearboxData));
......
......@@ -20,6 +20,7 @@ using System;
using TUGraz.VectoCore.Models.Connector.Ports;
using TUGraz.VectoCore.Models.Simulation;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.Utils;
......@@ -32,10 +33,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
protected ITnOutPort NextComponent;
private readonly RetarderLossMap _lossMap;
private double _ratio;
public Retarder(IVehicleContainer cockpit, RetarderLossMap lossMap) : base(cockpit)
public Retarder(IVehicleContainer cockpit, RetarderLossMap lossMap, double ratio) : base(cockpit)
{
_lossMap = lossMap;
_ratio = ratio;
}
protected override void DoWriteModalResults(IModalDataContainer container)
......@@ -68,7 +71,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return NextComponent.Request(absTime, dt, torque, null, dryRun);
}
var avgAngularSpeed = (PreviousState.InAngularVelocity + angularVelocity) / 2.0;
var retarderTorqueLoss = _lossMap.RetarderLoss(avgAngularSpeed);
var retarderTorqueLoss =
_lossMap.RetarderLoss(avgAngularSpeed * _ratio, DataBus.ExecutionMode != ExecutionMode.Declaration) / _ratio;
CurrentState.SetState(torque + retarderTorqueLoss, angularVelocity, torque, angularVelocity);
return NextComponent.Request(absTime, dt, torque + retarderTorqueLoss, angularVelocity, dryRun);
......@@ -76,7 +80,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
public IResponse Initialize(NewtonMeter torque, PerSecond angularVelocity)
{
var retarderTorqueLoss = _lossMap.RetarderLoss(angularVelocity);
var retarderTorqueLoss =
_lossMap.RetarderLoss(angularVelocity * _ratio, DataBus.ExecutionMode != ExecutionMode.Declaration) / _ratio;
PreviousState.SetState(torque + retarderTorqueLoss, angularVelocity, torque, angularVelocity);
return NextComponent.Initialize(torque + retarderTorqueLoss, angularVelocity);
......
......@@ -37,7 +37,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
{
var vehicle = new VehicleContainer();
var retarderData = RetarderLossMap.ReadFromFile(RetarderLossMapFile);
var retarder = new Retarder(vehicle, retarderData);
var retarder = new Retarder(vehicle, retarderData, 1.0);
var nextRequest = new MockTnOutPort();
......
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