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

moving computation of powershift losses to base class

parent a2f674ca
No related branches found
No related tags found
No related merge requests found
...@@ -235,31 +235,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -235,31 +235,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return retVal; return retVal;
} }
protected internal NewtonMeter ComputeShiftLosses(Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity)
{
var torqueGbxIn = outTorque / ModelData.Gears[Gear].Ratio;
var deltaEngineSpeed = DataBus.EngineSpeed - outAngularVelocity * ModelData.Gears[Gear].Ratio;
var deltaClutchSpeed = (DataBus.EngineSpeed - PreviousState.OutAngularVelocity * ModelData.Gears[Gear].Ratio) / 2;
var torqueInertia = EngineInertia * deltaEngineSpeed / dt;
var averageEngineSpeed = (DataBus.EngineSpeed + outAngularVelocity * ModelData.Gears[Gear].Ratio) / 2;
var torqueLoss = (torqueGbxIn + torqueInertia) * deltaClutchSpeed / averageEngineSpeed;
return torqueLoss.Abs();
}
private bool ConsiderShiftLosses(GearInfo nextGear, NewtonMeter torqueOut)
{
if (torqueOut.IsSmaller(0)) {
return false;
}
if (nextGear.Gear == 0) {
return false;
}
if (ModelData.Gears[2].HasTorqueConverter) {
return false; // nextGear.TorqueConverterLocked || nextGear.Gear == 2;
}
return nextGear.TorqueConverterLocked;
}
private IResponse RequestEngaged(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, private IResponse RequestEngaged(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity,
bool dryRun) bool dryRun)
......
...@@ -125,6 +125,35 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -125,6 +125,35 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
#endregion #endregion
public abstract bool ClutchClosed(Second absTime); public abstract bool ClutchClosed(Second absTime);
protected bool ConsiderShiftLosses(GearInfo nextGear, NewtonMeter torqueOut)
{
if (ModelData.Type.ManualTransmission()) {
return false;
}
if (torqueOut.IsSmaller(0)) {
return false;
}
if (nextGear.Gear == 0) {
return false;
}
if (ModelData.Gears[2].HasTorqueConverter) {
return false; // nextGear.TorqueConverterLocked || nextGear.Gear == 2;
}
return nextGear.TorqueConverterLocked;
}
protected internal NewtonMeter ComputeShiftLosses(Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity)
{
var torqueGbxIn = outTorque / ModelData.Gears[Gear].Ratio;
var deltaEngineSpeed = DataBus.EngineSpeed - outAngularVelocity * ModelData.Gears[Gear].Ratio;
var deltaClutchSpeed = (DataBus.EngineSpeed - PreviousState.OutAngularVelocity * ModelData.Gears[Gear].Ratio) / 2;
var torqueInertia = EngineInertia * deltaEngineSpeed / dt;
var averageEngineSpeed = (DataBus.EngineSpeed + outAngularVelocity * ModelData.Gears[Gear].Ratio) / 2;
var torqueLoss = (torqueGbxIn + torqueInertia) * deltaClutchSpeed / averageEngineSpeed;
return torqueLoss.Abs();
}
} }
public class GearboxState : SimpleComponentState public class GearboxState : SimpleComponentState
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment