diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AbstractGearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AbstractGearbox.cs index 2f584ce2fa9763d4cb3c65237d75957e150cd870..3498a21ba2bc8a44401a9b6084f5ce9d4987564c 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AbstractGearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AbstractGearbox.cs @@ -10,15 +10,10 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { - public abstract class AbstractGearbox<TStateType> : StatefulVectoSimulationComponent<TStateType>, ITnInProvider, - ITnOutProvider, ITnOutPort, ITnInPort, - IGearboxInfo where TStateType : GearboxState, new() + public abstract class AbstractGearbox<TStateType> : + StatefulProviderComponent<TStateType, ITnOutPort, ITnInPort, ITnOutPort>, ITnInProvider, + ITnOutProvider, ITnOutPort, ITnInPort, IGearboxInfo where TStateType : GearboxState, new() { - /// <summary> - /// The next port. - /// </summary> - protected ITnOutPort NextComponent; - /// <summary> /// The data and settings for the gearbox. /// </summary> @@ -29,25 +24,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ModelData = gearboxModelData; } - #region ITnInProvider - - public ITnInPort InPort() - { - return this; - } - - #endregion - - #region ITnOutProvider - - [DebuggerHidden] - public ITnOutPort OutPort() - { - return this; - } - - #endregion - #region ITnOutPort public abstract IResponse Request(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, @@ -57,15 +33,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl #endregion - #region ITnInPort - - public void Connect(ITnOutPort other) - { - NextComponent = other; - } - - #endregion - #region IGearboxCockpit public GearboxType GearboxType diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs index 461a257749f03197f8a0ddebb3ee4f81166e057f..21fc7a86a65dc6f44f2ba08419dd66f7969000cf 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleGearbox.cs @@ -48,9 +48,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public class CycleGearbox : AbstractGearbox<GearboxState>, IGearbox, ITnOutPort, ITnInPort, IClutchInfo { - public CycleGearbox(IVehicleContainer container, GearboxData gearboxModelData) : base(container, gearboxModelData) {} + public override IResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity) { var dt = Constants.SimulationSettings.TargetTimeInterval; @@ -251,38 +251,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl base.DoCommitSimulationStep(); } - #region IGearboxCockpit - - /// <summary> - /// The current gear. - /// </summary> - public uint Gear { get; private set; } - - [DebuggerHidden] - public MeterPerSecond StartSpeed - { - get { return ModelData.StartSpeed; } - } - - [DebuggerHidden] - public MeterPerSquareSecond StartAcceleration - { - get { return ModelData.StartAcceleration; } - } - - public FullLoadCurve GearFullLoadCurve - { - get { return Gear == 0 ? null : ModelData.Gears[Gear].FullLoadCurve; } - } - - public Watt GearboxLoss() - { - return (PreviousState.TransmissionTorqueLoss + - PreviousState.InertiaTorqueLossOut / ModelData.Gears[PreviousState.Gear].Ratio) * PreviousState.InAngularVelocity; - } - - #endregion - #region ICluchInfo public bool ClutchClosed(Second absTime) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index e8e09bbcbe6f951ddc85fec8976462a691c5220f..cc5b0d99013f99c7ba4130e74bf2f974c859ee9e 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -29,6 +29,7 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System.Diagnostics; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; @@ -44,10 +45,7 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { - public class Gearbox : AbstractGearbox<GearboxState>, IGearbox, ITnOutPort, ITnInPort, - public class Gearbox : StatefulProviderComponent<Gearbox.GearboxState, ITnOutPort, ITnInPort, ITnOutPort>, IGearbox, - IClutchInfo - ITnOutPort, ITnInPort, IClutchInfo + public class Gearbox : AbstractGearbox<GearboxState>, IGearbox, IClutchInfo { /// <summary> /// The shift strategy. @@ -401,41 +399,5 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } base.DoCommitSimulationStep(); } - - #region IGearboxCockpit - - /// <summary> - /// The current gear. - /// </summary> - public uint Gear { get; set; } - - [DebuggerHidden] - public MeterPerSecond StartSpeed - { - get { return ModelData.StartSpeed; } - } - - [DebuggerHidden] - public MeterPerSquareSecond StartAcceleration - { - get { return ModelData.StartAcceleration; } - } - - public FullLoadCurve GearFullLoadCurve - { - get { return Gear == 0 ? null : ModelData.Gears[Gear].FullLoadCurve; } - } - - public Watt GearboxLoss() - { - //var outTorque = ModelData.Gears[Gear].LossMap.GetOutTorque(inAngularVelocity, inTorque, true); - //var torqueLoss = inTorque - outTorque * ModelData.Gears[Gear].Ratio; - - //return torqueLoss * inAngularVelocity; - return (PreviousState.TransmissionTorqueLoss + - PreviousState.InertiaTorqueLossOut / ModelData.Gears[PreviousState.Gear].Ratio) * PreviousState.InAngularVelocity; - } - - #endregion } } \ No newline at end of file diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 57c97f2fc7ee4f3d3700d31f05784bfd28cf0883..037ff19b54d93802766c92863cecfbab9b3f3365 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -143,6 +143,7 @@ <Compile Include="Models\SimulationComponent\Impl\AbstractGearbox.cs" /> <Compile Include="Models\SimulationComponent\Impl\ATGearbox.cs" /> <Compile Include="Models\SimulationComponent\Impl\ATShiftStrategy.cs" /> + <Compile Include="Models\SimulationComponent\Impl\TorqueConverter.cs" /> <Compile Include="Utils\ProviderExtensions.cs" /> <Compile Include="Models\Declaration\AirDrag.cs" /> <Compile Include="Models\Declaration\Fan.cs" />