From edede06158f339c2e7345f410307eb08a6f09250 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 30 Nov 2016 14:47:55 +0100
Subject: [PATCH] write tc limit to json files, limit max input speed for
 torque converter, adapt testcases to limit tc speed

---
 VECTO/OutputData/JSONFileWriter.vb            | 10 ++--
 .../My Project/Resources.Designer.vb          | 51 +++++++++++--------
 .../InputData/FileIO/JSON/JSONGearboxData.cs  |  9 ++--
 .../Impl/TorqueConverter.cs                   | 12 ++---
 .../VectoCoreTest/Integration/ATPowerTrain.cs |  6 ++-
 5 files changed, 49 insertions(+), 39 deletions(-)

diff --git a/VECTO/OutputData/JSONFileWriter.vb b/VECTO/OutputData/JSONFileWriter.vb
index cb48367bb7..e21a275c88 100644
--- a/VECTO/OutputData/JSONFileWriter.vb
+++ b/VECTO/OutputData/JSONFileWriter.vb
@@ -128,11 +128,11 @@ Public Class JSONFileWriter
 		If gbx.Type.AutomaticTransmission() AndAlso Not torqueConverter Is Nothing Then
 			torqueConverterDict.Add("File", GetRelativePath(torqueConverter.TCData.Source, Path.GetDirectoryName(filename)))
 			torqueConverterDict.Add("RefRPM", torqueConverter.ReferenceRPM.AsRPM)
-			torqueConverterDict.Add("Inertia", torqueConverter.Inertia.Value())
-			torqueConverterDict.Add("ShiftPolygon",
-									If _
-										(Not gbx.SavedInDeclarationMode AndAlso Not torqueConverter.ShiftPolygon Is Nothing,
-										GetRelativePath(torqueConverter.ShiftPolygon.Source, Path.GetDirectoryName(filename)), ""))
+            torqueConverterDict.Add("Inertia", torqueConverter.Inertia.Value())
+            torqueConverterDict.Add("MaxTCSpeed", torqueConverter.MaxInputSpeed.AsRPM)
+            torqueConverterDict.Add("ShiftPolygon", If _
+                                        (Not gbx.SavedInDeclarationMode AndAlso Not torqueConverter.ShiftPolygon Is Nothing,
+                                        GetRelativePath(torqueConverter.ShiftPolygon.Source, Path.GetDirectoryName(filename)), ""))
 		End If
 		body.Add("TorqueConverter", torqueConverterDict)
 
diff --git a/VECTOAux/VectoAuxiliaries/My Project/Resources.Designer.vb b/VECTOAux/VectoAuxiliaries/My Project/Resources.Designer.vb
index c28407d64c..f52e514963 100644
--- a/VECTOAux/VectoAuxiliaries/My Project/Resources.Designer.vb	
+++ b/VECTOAux/VectoAuxiliaries/My Project/Resources.Designer.vb	
@@ -1,10 +1,10 @@
 '------------------------------------------------------------------------------
 ' <auto-generated>
-'     Dieser Code wurde von einem Tool generiert.
-'     Laufzeitversion:4.0.30319.42000
+'     This code was generated by a tool.
+'     Runtime Version:4.0.30319.42000
 '
-'     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-'     der Code erneut generiert wird.
+'     Changes to this file may cause incorrect behavior and will be lost if
+'     the code is regenerated.
 ' </auto-generated>
 '------------------------------------------------------------------------------
 
@@ -15,12 +15,12 @@ Imports System
 
 Namespace My.Resources
     
-    'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
-    '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
-    'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
-    'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+    'This class was auto-generated by the StronglyTypedResourceBuilder
+    'class via a tool like ResGen or Visual Studio.
+    'To add or remove a member, edit your .ResX file then rerun ResGen
+    'with the /str option, or rebuild your VS project.
     '''<summary>
-    '''  Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+    '''  A strongly-typed resource class, for looking up localized strings, etc.
     '''</summary>
     <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"),  _
      Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _
@@ -33,7 +33,7 @@ Namespace My.Resources
         Private resourceCulture As Global.System.Globalization.CultureInfo
         
         '''<summary>
-        '''  Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+        '''  Returns the cached ResourceManager instance used by this class.
         '''</summary>
         <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _
         Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -47,8 +47,8 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
-        '''  Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+        '''  Overrides the current thread's CurrentUICulture property for all
+        '''  resource lookups using this strongly typed resource class.
         '''</summary>
         <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _
         Friend Property Culture() As Global.System.Globalization.CultureInfo
@@ -61,7 +61,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property Blank() As System.Drawing.Bitmap
             Get
@@ -71,7 +71,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property Delete() As System.Drawing.Bitmap
             Get
@@ -81,7 +81,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property desktop() As System.Drawing.Bitmap
             Get
@@ -91,7 +91,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property favorites() As System.Drawing.Bitmap
             Get
@@ -101,7 +101,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property file_history() As System.Drawing.Bitmap
             Get
@@ -111,7 +111,16 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized string similar to MaxTCSpeed.
+        '''</summary>
+        Friend ReadOnly Property Gearbox_MaxTCSpeed() As String
+            Get
+                Return ResourceManager.GetString("Gearbox_MaxTCSpeed", resourceCulture)
+            End Get
+        End Property
+        
+        '''<summary>
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property Info() As System.Drawing.Bitmap
             Get
@@ -121,7 +130,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Zeichenfolge, die MaxTCSpeed ähnelt.
+        '''  Looks up a localized string similar to MaxTCSpeed.
         '''</summary>
         Friend ReadOnly Property MaxTCSpeed() As String
             Get
@@ -130,7 +139,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property new_dir() As System.Drawing.Bitmap
             Get
@@ -140,7 +149,7 @@ Namespace My.Resources
         End Property
         
         '''<summary>
-        '''  Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        '''  Looks up a localized resource of type System.Drawing.Bitmap.
         '''</summary>
         Friend ReadOnly Property Open_icon() As System.Drawing.Bitmap
             Get
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
index 7f94d6a2f9..52c22d6c18 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
@@ -195,11 +195,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
-		public PerSecond MaxInputSpeed
-		{
-			get { return Body["MaxTCSpeed"] == null ? 5000.RPMtoRad() : Body.GetEx<double>("MaxTCSpeed").RPMtoRad(); }
-		}
-
 		public Second TractionInterruption
 		{
 			get { return Body.GetEx<double>(JsonKeys.Gearbox_TractionInterruption).SI<Second>(); }
@@ -368,6 +363,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
+        public PerSecond MaxInputSpeed
+        {
+            get { return Body[JsonKeys.Gearbox_TorqueConverter] != null && Body["MaxTCSpeed"] != null ? Body.GetEx(JsonKeys.Gearbox_TorqueConverter).GetEx<double>("MaxTCSpeed").RPMtoRad() : 5000.RPMtoRad(); }
+        }
 		public virtual TableData TCData
 		{
 			get
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
index 89c0ff8714..7b5fb2f9bb 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
@@ -137,8 +137,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				var operatingPoint =
 					ModelData.FindOperatingPointForPowerDemand(engineResponse.DragPower - engineResponse.AuxiliariesPowerDemand,
 						DataBus.EngineSpeed, outAngularVelocity, _engineInertia, dt);
-				if (operatingPoint.InAngularVelocity.IsGreater(DataBus.EngineRatedSpeed)) {
-					operatingPoint = ModelData.FindOperatingPoint(DataBus.EngineRatedSpeed, outAngularVelocity);
+				if (operatingPoint.InAngularVelocity.IsGreater(ModelData.TorqueConverterSpeedLimit)) {
+					operatingPoint = ModelData.FindOperatingPoint(ModelData.TorqueConverterSpeedLimit, outAngularVelocity);
 				}
 				if (operatingPoint.InAngularVelocity.IsSmaller(DataBus.EngineIdleSpeed)) {
 					operatingPoint = ModelData.FindOperatingPoint(DataBus.EngineIdleSpeed, outAngularVelocity);
@@ -159,8 +159,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					ModelData.FindOperatingPointForPowerDemand(
 						engineResponse.DynamicFullLoadPower - engineResponse.AuxiliariesPowerDemand,
 						DataBus.EngineSpeed, outAngularVelocity, _engineInertia, dt);
-				if (operatingPoint.InAngularVelocity.IsGreater(DataBus.EngineRatedSpeed)) {
-					operatingPoint = ModelData.FindOperatingPoint(DataBus.EngineRatedSpeed, outAngularVelocity);
+				if (operatingPoint.InAngularVelocity.IsGreater(ModelData.TorqueConverterSpeedLimit)) {
+					operatingPoint = ModelData.FindOperatingPoint(ModelData.TorqueConverterSpeedLimit, outAngularVelocity);
 				}
 				return operatingPoint;
 			} catch (VectoException ve) {
@@ -185,8 +185,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				throw new VectoException("Invalid operating point, inAngularVelocity below engine's idle speed: {0}",
 					operatingPoint.InAngularVelocity);
 			}
-			if (operatingPoint.InAngularVelocity.IsGreater(DataBus.EngineRatedSpeed)) {
-				operatingPoint = ModelData.FindOperatingPoint(DataBus.EngineRatedSpeed, outAngularVelocity);
+			if (operatingPoint.InAngularVelocity.IsGreater(ModelData.TorqueConverterSpeedLimit)) {
+				operatingPoint = ModelData.FindOperatingPoint(ModelData.TorqueConverterSpeedLimit, outAngularVelocity);
 			}
 			return operatingPoint;
 		}
diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
index 4d47a74a7a..5255253cfc 100644
--- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
@@ -54,7 +54,9 @@ namespace TUGraz.VectoCore.Tests.Integration
 {
 	public class ATPowerTrain
 	{
-		public const string AccelerationFile = @"TestData\Components\Truck.vacc";
+	    protected static readonly PerSecond MaxTcSpeed = 1500.RPMtoRad();
+
+	    public const string AccelerationFile = @"TestData\Components\Truck.vacc";
 		public const string EngineFile = @"TestData\Components\AT_GBX\Engine.veng";
 		//public const string AxleGearLossMap = @"TestData\Components\AT_GBX\Axle.vtlm";
 		//public const string GearboxIndirectLoss = @"TestData\Components\AT_GBX\Indirect Gear.vtlm";
@@ -152,7 +154,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				UpshiftMinAcceleration = DeclarationData.Gearbox.UpshiftMinAcceleration,
 				TorqueConverterData =
 					TorqueConverterDataReader.ReadFromFile(torqueConverterFile, 1000.RPMtoRad(),
-						1800.RPMtoRad(), ExecutionMode.Engineering, gbxType == GearboxType.ATSerial ? 1 : 1/ratios[0])
+						MaxTcSpeed, ExecutionMode.Engineering, gbxType == GearboxType.ATSerial ? 1 : 1/ratios[0])
 			};
 		}
 
-- 
GitLab