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

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

clear shiftlossenergy if remaining shift time is non-negative; check TC...

clear shiftlossenergy if remaining shift time is non-negative; check TC operating point if possibe for engine (case creeping)
parent cfaaf2c3
No related branches found
No related tags found
No related merge requests found
......@@ -303,8 +303,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var avgEngineSpeed = (DataBus.EngineSpeed + outAngularVelocity * effectiveRatio) / 2;
powershiftLoss = aliquotEnergyLoss / dt / avgEngineSpeed;
inTorque += powershiftLoss;
//inTorque += CurrentState.PowershiftLossEnergy;
} else {
_powershiftLossEnergy = null;
}
}
......
......@@ -245,7 +245,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var nextGearboxInTorque = outTorque / nextGear.TorqueConverterRatio;
var shiftLosses = _gearbox.ComputeShiftLosses(outTorque, outAngularVelocity, gear + 1) / ModelData.PowershiftShiftTime / nextGearboxInSpeed;
nextGearboxInTorque += shiftLosses;
var tcOperatingPoint = _gearbox.TorqueConverter.FindOperatingPoint(nextGearboxInTorque, nextGearboxInSpeed);
var tcOperatingPoint = _gearbox.TorqueConverter.FindOperatingPoint(absTime, dt, nextGearboxInTorque, nextGearboxInSpeed);
var engineSpeedOverMin = tcOperatingPoint.InAngularVelocity.IsGreater(minEngineSpeed);
var avgSpeed = (DataBus.EngineSpeed + tcOperatingPoint.InAngularVelocity) / 2;
......
......@@ -102,7 +102,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity,
bool dryRun = false)
{
var operatingPoint = FindOperatingPoint(outTorque, outAngularVelocity);
var operatingPoint = FindOperatingPoint(absTime, dt, outTorque, outAngularVelocity);
var inTorque = CalculateAverageInTorque(operatingPoint);
if (dryRun) {
......@@ -316,7 +316,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return retVal;
}
protected internal TorqueConverterOperatingPoint FindOperatingPoint(
protected internal TorqueConverterOperatingPoint FindOperatingPoint(Second absTime, Second dt,
NewtonMeter outTorque,
PerSecond outAngularVelocity)
{
......@@ -324,6 +324,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
if (operatingPointList.Count == 0) {
Log.Debug("TorqueConverter: Failed to find torque converter operating point, fallback: creeping");
var tqOperatingPoint = ModelData.FindOperatingPoint(DataBus.EngineIdleSpeed, outAngularVelocity);
var engineResponse = (ResponseDryRun)
NextComponent.Request(absTime, dt, tqOperatingPoint.InTorque, tqOperatingPoint.InAngularVelocity, true);
var engineOK = engineResponse.DeltaDragLoad.IsGreaterOrEqual(0) && engineResponse.DeltaFullLoad.IsSmallerOrEqual(0);
if (!engineOK) {
tqOperatingPoint = ModelData.FindOperatingPoint(VectoMath.Max(DataBus.EngineIdleSpeed, DataBus.EngineSpeed * 0.9), outAngularVelocity);
}
tqOperatingPoint.Creeping = true;
return tqOperatingPoint;
}
......
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