From 42ef0e3baf362df85cca1c5e4e606aeadd1035b3 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 8 Aug 2016 13:03:30 +0200
Subject: [PATCH] adapt gui to new input structure, remove / comment out  tc
 from vecto 2.2

---
 VECTO/GUI/F_GBX.Designer.vb |   2 +-
 VECTO/GUI/F_GBX.vb          |  73 ++++++++++++-------------
 VECTO/Input Files/cGBX.vb   | 104 ++++++++++++++++++------------------
 VECTO/MODcalc/cPower.vb     |  18 ++++---
 VECTO/VECTO_Global.vb       |  12 +++--
 VECTO/VECTO_Types.vb        |  18 ++++++-
 VECTO/cDeclaration.vb       |   2 +-
 7 files changed, 126 insertions(+), 103 deletions(-)

diff --git a/VECTO/GUI/F_GBX.Designer.vb b/VECTO/GUI/F_GBX.Designer.vb
index 7d8d28905e..a80601d94e 100644
--- a/VECTO/GUI/F_GBX.Designer.vb
+++ b/VECTO/GUI/F_GBX.Designer.vb
@@ -1006,7 +1006,7 @@ Partial Class F_GBX
     Friend WithEvents PnTC As System.Windows.Forms.Panel
     Friend WithEvents PnTorqRes As System.Windows.Forms.Panel
     Friend WithEvents BtAddGear As System.Windows.Forms.Button
-    Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
+	Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
     Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
     Friend WithEvents Label32 As System.Windows.Forms.Label
     Friend WithEvents PnInertiaTI As System.Windows.Forms.Panel
diff --git a/VECTO/GUI/F_GBX.vb b/VECTO/GUI/F_GBX.vb
index 9e391c2f87..190e1326e9 100644
--- a/VECTO/GUI/F_GBX.vb
+++ b/VECTO/GUI/F_GBX.vb
@@ -55,7 +55,8 @@ Public Class F_GBX
 		Me.CbGStype.Items.Add("Manual Transmission (MT)")
 		Me.CbGStype.Items.Add("Automated Manual Transmission (AMT)")
 		If Not Cfg.DeclMode Then
-			Me.CbGStype.Items.Add("Automatic Transmission (AT)")
+			Me.CbGStype.Items.Add("Automatic Transmission - Serial (AT-S)")
+			Me.CbGStype.Items.Add("Automatic Transmission - PowerSplit (AT-P)")
 			Me.CbGStype.Items.Add("Custom")
 		End If
 
@@ -243,15 +244,15 @@ Public Class F_GBX
 				lv0 = New ListViewItem(i.ToString("00"))
 			End If
 
-			If Me.ChTCon.Checked And i > 0 Then
-				If GBX0.IsTCgear(i) Then
-					lv0.SubItems.Add("on")
-				Else
-					lv0.SubItems.Add("off")
-				End If
-			Else
-				lv0.SubItems.Add("-")
-			End If
+			'If Me.ChTCon.Checked And i > 0 Then
+			'	If False Then ' GBX0.IsTCgear(i) Then
+			'		lv0.SubItems.Add("on")
+			'	Else
+			'		lv0.SubItems.Add("off")
+			'	End If
+			'Else
+			lv0.SubItems.Add("-")
+			'End If
 			lv0.SubItems.Add(GBX0.Igetr(i))
 			lv0.SubItems.Add(GBX0.GetrMap(i, True))
 			lv0.SubItems.Add(GBX0.gsFile(i, True))
@@ -322,7 +323,7 @@ Public Class F_GBX
 		GBX0.GbxInertia = fTextboxToNumString(Me.TBI_getr.Text)
 
 		For i = 0 To Me.LvGears.Items.Count - 1
-			GBX0.IsTCgear.Add(Me.LvGears.Items(i).SubItems(1).Text = "on" And i > 0)
+			'GBX0.IsTCgear.Add(Me.LvGears.Items(i).SubItems(1).Text = "on" And i > 0)
 			GBX0.Igetr.Add(CSng(Me.LvGears.Items(i).SubItems(2).Text))
 			GBX0.GetrMaps.Add(New cSubPath)
 			GBX0.GetrMap(i) = Me.LvGears.Items(i).SubItems(3).Text
@@ -497,7 +498,7 @@ Public Class F_GBX
 		If GStype <> tGearbox.Custom Then
 			Me.ChShiftInside.Checked = Declaration.ShiftInside(GStype)
 			Me.ChSkipGears.Checked = Declaration.SkipGears(GStype)
-			Me.ChTCon.Checked = (GStype = tGearbox.Automatic)
+			Me.ChTCon.Checked = (GStype = tGearbox.AutomaticSerial OrElse GStype = tGearbox.AutomaticPowerSplit)
 		End If
 	End Sub
 
@@ -542,7 +543,7 @@ Public Class F_GBX
 
 		Do
 
-			GearDia.ChIsTCgear.Enabled = (Me.ChTCon.Checked And Me.LvGears.SelectedIndices(0) > 0)
+			'GearDia.ChIsTCgear.Enabled = (Me.ChTCon.Checked And Me.LvGears.SelectedIndices(0) > 0)
 			GearDia.PnShiftPoly.Enabled = (Not Cfg.DeclMode And Me.LvGears.SelectedIndices(0) > 0)
 			GearDia.PnFld.Enabled = (Me.LvGears.SelectedIndices(0) > 0)
 			GearDia.GbxPath = fPATH(GbxFile)
@@ -567,15 +568,15 @@ Public Class F_GBX
 
 			If GearDia.ShowDialog = Windows.Forms.DialogResult.OK Then
 
-				If GearDia.ChIsTCgear.Checked Then
-					Me.LvGears.SelectedItems(0).SubItems(1).Text = "on"
-				Else
-					If Me.ChTCon.Checked Then
-						Me.LvGears.SelectedItems(0).SubItems(1).Text = "off"
-					Else
-						Me.LvGears.SelectedItems(0).SubItems(1).Text = "-"
-					End If
-				End If
+				'If GearDia.ChIsTCgear.Checked Then
+				'	Me.LvGears.SelectedItems(0).SubItems(1).Text = "on"
+				'Else
+				'	If Me.ChTCon.Checked Then
+				'		Me.LvGears.SelectedItems(0).SubItems(1).Text = "off"
+				'	Else
+				Me.LvGears.SelectedItems(0).SubItems(1).Text = "-"
+				'	End If
+				'End If
 
 				Me.LvGears.SelectedItems(0).SubItems(2).Text = GearDia.TbRatio.Text
 				Me.LvGears.SelectedItems(0).SubItems(3).Text = GearDia.TbMapPath.Text
@@ -609,11 +610,11 @@ Public Class F_GBX
 		Dim lvi As ListViewItem
 
 		lvi = New ListViewItem(Me.LvGears.Items.Count.ToString("00"))
-		If Me.ChTCon.Checked Then
-			lvi.SubItems.Add("off")
-		Else
-			lvi.SubItems.Add("-")
-		End If
+		'If Me.ChTCon.Checked Then
+		'	lvi.SubItems.Add("off")
+		'Else
+		lvi.SubItems.Add("-")
+		'End If
 		lvi.SubItems.Add("")
 		lvi.SubItems.Add("")
 		lvi.SubItems.Add("")
@@ -977,15 +978,15 @@ Public Class F_GBX
 
 			If lv0.SubItems(0).Text = "Axle" Then Continue For
 
-			If Me.ChTCon.Checked Then
-				If lv0.Index = 1 Then
-					lv0.SubItems(1).Text = "on"
-				Else
-					lv0.SubItems(1).Text = "off"
-				End If
-			Else
-				lv0.SubItems(1).Text = "-"
-			End If
+			'If Me.ChTCon.Checked Then
+			'	If lv0.Index = 1 Then
+			'		lv0.SubItems(1).Text = "on"
+			'	Else
+			'		lv0.SubItems(1).Text = "off"
+			'	End If
+			'Else
+			lv0.SubItems(1).Text = "-"
+			'End If
 		Next
 	End Sub
 
diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb
index e3212d3854..d9abb0a251 100644
--- a/VECTO/Input Files/cGBX.vb	
+++ b/VECTO/Input Files/cGBX.vb	
@@ -11,7 +11,7 @@
 Imports System.Collections.Generic
 
 Public Class cGBX
-	Private Const FormatVersion As Short = 5
+	Private Const FormatVersion As Short = 6
 	Private FileVersion As Short
 
 	Private MyPath As String
@@ -23,7 +23,7 @@ Public Class cGBX
 
 	Public Igetr As List(Of Single)
 	Public GetrMaps As List(Of cSubPath)
-	Public IsTCgear As List(Of Boolean)
+	'Public IsTCgear As List(Of Boolean)
 
 	Private MyGBmaps As List(Of cDelaunayMap)
 	Private GetrEffDef As List(Of Boolean)
@@ -117,7 +117,7 @@ Public Class cGBX
 		TracIntrSi = 0
 
 		Igetr = New List(Of Single)
-		IsTCgear = New List(Of Boolean)
+		'IsTCgear = New List(Of Boolean)
 		GetrMaps = New List(Of cSubPath)
 		gs_files = New List(Of cSubPath)
 		FldFiles = New List(Of cSubPath)
@@ -183,7 +183,7 @@ Public Class cGBX
 				dic0.Add("LossMap", GetrMaps(i).PathOrDummy)
 			End If
 			If i > 0 Then
-				dic0.Add("TCactive", IsTCgear(i))
+				'dic0.Add("TCactive", IsTCgear(i))
 				dic0.Add("ShiftPolygon", gs_files(i).PathOrDummy)
 				dic0.Add("FullLoadCurve", FldFiles(i).PathOrDummy)
 			End If
@@ -263,11 +263,11 @@ Public Class cGBX
 				FldFiles.Add(New cSubPath)
 
 				If i = 0 Then
-					IsTCgear.Add(False)
+					'IsTCgear.Add(False)
 					gs_files(i).Init(MyPath, sKey.NoFile)
 					FldFiles(i).Init(MyPath, sKey.NoFile)
 				Else
-					IsTCgear.Add(dic("TCactive"))
+					'IsTCgear.Add(dic("TCactive"))
 					If FileVersion < 2 Then
 						gs_files(i).Init(MyPath, JSON.Content("Body")("ShiftPolygons"))
 					Else
@@ -333,7 +333,7 @@ Public Class cGBX
 
 		MsgSrc = "GBX/DeclInit"
 
-		If gs_Type = tGearbox.Custom Or gs_Type = tGearbox.Automatic Then
+		If gs_Type = tGearbox.Custom Or tGearboxExtension.AutomaticTransmission(gs_Type) Then
 			WorkerMsg(tMsgID.Err, "Invalid gearbox type for Declaration Mode!", MsgSrc)
 			Return False
 		End If
@@ -352,7 +352,7 @@ Public Class cGBX
 		DownshiftAfterUpshift = 10
 		UpshiftMinAcceleration = 0.1
 
-		TCon = (gs_Type = tGearbox.Automatic)
+		TCon = (AutomaticTransmission(gs_Type))
 
 		For i = 1 To GearCount()
 			Shiftpolygons(i).SetGenericShiftPoly(FLD(i), ENG.Nidle)
@@ -773,7 +773,7 @@ lbInt:
 		If gs_Type <> tGearbox.Custom Then
 
 			gs_ShiftInside = Declaration.ShiftInside(gs_Type)
-			TCon = (gs_Type = tGearbox.Automatic)
+			TCon = AutomaticTransmission(gs_Type)
 			gs_SkipGears = Declaration.SkipGears(gs_Type)
 
 		End If
@@ -926,71 +926,71 @@ lbInt:
 				'Calculate average efficiency for fast approx. calculation
 				If i > 0 Then
 
-					If GBX.IsTCgear(i) Then
+					'If GBX.IsTCgear(i) Then
 
-						GetrEff(i) = -1
+					'	GetrEff(i) = -1
 
-					Else
-
-						EffSum = 0
-						Anz = 0
+					'Else
 
-						dnU = (2 / 3) * (ENG.Nrated - ENG.Nidle) / 10
-						nU = ENG.Nidle + dnU
+					EffSum = 0
+					Anz = 0
 
-						Do While nU <= ENG.Nrated
+					dnU = (2 / 3) * (ENG.Nrated - ENG.Nidle) / 10
+					nU = ENG.Nidle + dnU
 
-							dM = nPeToM(nU, (2 / 3) * FLD(i).Pfull(nU) / 10)
-							M_in = nPeToM(nU, (1 / 3) * FLD(i).Pfull(nU))
+					Do While nU <= ENG.Nrated
 
-							Do While M_in <= nPeToM(nU, FLD(i).Pfull(nU))
+						dM = nPeToM(nU, (2 / 3) * FLD(i).Pfull(nU) / 10)
+						M_in = nPeToM(nU, (1 / 3) * FLD(i).Pfull(nU))
 
-								P_In = nMtoPe(nU, M_in)
+						Do While M_in <= nPeToM(nU, FLD(i).Pfull(nU))
 
-								P_Loss = IntpolPeLossFwd(i, nU, P_In, False)
+							P_In = nMtoPe(nU, M_in)
 
-								EffSum += (P_In - P_Loss) / P_In
-								Anz += 1
+							P_Loss = IntpolPeLossFwd(i, nU, P_In, False)
 
+							EffSum += (P_In - P_Loss) / P_In
+							Anz += 1
 
-								plossG = P_Loss
-								MinG = M_in
 
+							plossG = P_Loss
+							MinG = M_in
 
-								'Axle
-								P_In -= P_Loss
-								P_Loss = IntpolPeLossFwd(0, nU / GBX.Igetr(i), P_In, False)
-								EffDiffSum += (P_In - P_Loss) / P_In
-								AnzDiff += 1
 
-								If MODdata.ModErrors.TrLossMapExtr <> "" Then
-									WorkerMsg(tMsgID.Err, "Transmission loss map does not cover full engine operating range!", MsgSrc)
-									WorkerMsg(tMsgID.Err, MODdata.ModErrors.TrLossMapExtr, MsgSrc)
-									WorkerMsg(tMsgID.Err, "nU_In(GB)=" & nU & " [1/min]", MsgSrc)
-									WorkerMsg(tMsgID.Err, "M_In(GB)=" & MinG & " [Nm]", MsgSrc)
-									WorkerMsg(tMsgID.Err, "P_Loss(GB)=" & plossG & " [kW]", MsgSrc)
-									WorkerMsg(tMsgID.Err, "nU_In(axle)=" & CStr(nU / Igetr(i)) & " [1/min]", MsgSrc)
-									WorkerMsg(tMsgID.Err, "M_In(axle)=" & CStr(nPeToM(nU / Igetr(i), P_In)) & " [Nm]", MsgSrc)
-									WorkerMsg(tMsgID.Err, "P_Loss(axle)=" & P_Loss & " [kW]", MsgSrc)
-									Return False
-								End If
-
-								M_in += dM
-							Loop
+							'Axle
+							P_In -= P_Loss
+							P_Loss = IntpolPeLossFwd(0, nU / GBX.Igetr(i), P_In, False)
+							EffDiffSum += (P_In - P_Loss) / P_In
+							AnzDiff += 1
 
+							If MODdata.ModErrors.TrLossMapExtr <> "" Then
+								WorkerMsg(tMsgID.Err, "Transmission loss map does not cover full engine operating range!", MsgSrc)
+								WorkerMsg(tMsgID.Err, MODdata.ModErrors.TrLossMapExtr, MsgSrc)
+								WorkerMsg(tMsgID.Err, "nU_In(GB)=" & nU & " [1/min]", MsgSrc)
+								WorkerMsg(tMsgID.Err, "M_In(GB)=" & MinG & " [Nm]", MsgSrc)
+								WorkerMsg(tMsgID.Err, "P_Loss(GB)=" & plossG & " [kW]", MsgSrc)
+								WorkerMsg(tMsgID.Err, "nU_In(axle)=" & CStr(nU / Igetr(i)) & " [1/min]", MsgSrc)
+								WorkerMsg(tMsgID.Err, "M_In(axle)=" & CStr(nPeToM(nU / Igetr(i), P_In)) & " [Nm]", MsgSrc)
+								WorkerMsg(tMsgID.Err, "P_Loss(axle)=" & P_Loss & " [kW]", MsgSrc)
+								Return False
+							End If
 
-							nU += dnU
+							M_in += dM
 						Loop
 
-						If Anz = 0 Then
-							WorkerMsg(tMsgID.Err, "Failed to calculate approx. transmission losses!", MsgSrc)
-							Return False
-						End If
 
-						GetrEff(i) = EffSum / Anz
+						nU += dnU
+					Loop
 
+					If Anz = 0 Then
+						WorkerMsg(tMsgID.Err, "Failed to calculate approx. transmission losses!", MsgSrc)
+						Return False
 					End If
 
+					GetrEff(i) = EffSum / Anz
+
+					'	End If
+
 				End If
 
 
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 627cffe900..1dc7024ca2 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -989,7 +989,7 @@ lbCheck:
 
 			Else
 
-				If GBX.TCon And GBX.IsTCgear(Gear) Then
+				If GBX.TCon And False Then 'GBX.IsTCgear(Gear) Then
 
 					PlossGB = fPlossGB(Pwheel, Vact, Gear, False)
 					PlossDiff = fPlossDiff(Pwheel, Vact, False)
@@ -1121,7 +1121,7 @@ lb_nOK:
 					PaGbx = 0
 				Case tEngClutch.Closed
 
-					If GBX.TCon And GBX.IsTCgear(Gear) Then
+					If GBX.TCon And False Then ' GBX.IsTCgear(Gear) Then
 
 						Pclutch = nMtoPe(nU, GBX.TCMin)
 
@@ -1258,7 +1258,9 @@ lb_nOK:
 
 				If EngState0 = tEngState.Load Then
 					Pbrake = 0
-					If GBX.TCon And GBX.IsTCgear(Gear) Then Pbrake = GBX.TC_PeBrake
+					If GBX.TCon And False Then 'GBX.IsTCgear(Gear) Then
+						Pbrake = GBX.TC_PeBrake
+					End If
 					If Math.Abs(P / Pmax - 1) < 0.02 Then EngState0 = tEngState.FullLoad
 				Else ' tEngState.Drag (tEngState.Idle, tEngState.Stopped kann's hier nicht geben weil Clutch <> Closed)
 					If P < Pmin Then
@@ -1450,7 +1452,7 @@ lb_nOK:
 
 			'Torque Converter output
 			If GBX.TCon Then
-				If GBX.IsTCgear(Gear) Then
+				If False Then 'GBX.IsTCgear(Gear) Then
 					If nU = 0 Then
 						MODdata.TCnu.Add(0)
 					Else
@@ -2201,19 +2203,19 @@ lb_nOK:
 		If LastGear = 0 Then Return 1
 
 		If LastGear < GBX.GearCount Then
-			PlusGearLockUp = Not GBX.IsTCgear(LastGear + 1)
+			PlusGearLockUp = True 'Not GBX.IsTCgear(LastGear + 1)
 		Else
 			PlusGearLockUp = False
 		End If
 
 		If LastGear > 1 Then
-			MinusGearTC = GBX.IsTCgear(LastGear - 1)
+			MinusGearTC = False	'GBX.IsTCgear(LastGear - 1)
 		Else
 			MinusGearTC = False
 		End If
 
 		'2C-to-1C
-		If MinusGearTC And GBX.IsTCgear(LastGear) Then
+		If MinusGearTC And False Then ' GBX.IsTCgear(LastGear) Then
 			If fnUout(Vact, LastGear) <= ENG.Nidle Then
 				Return LastGear - 1
 			End If
@@ -2226,7 +2228,7 @@ lb_nOK:
 		End If
 
 		'nU
-		If GBX.IsTCgear(LastGear) Then
+		If False Then 'GBX.IsTCgear(LastGear) Then
 			n = MODdata.TCnu(t - 1)
 			nU = (Vact * 60.0 * GBX.Igetr(0) * GBX.Igetr(LastGear) / (2 * VEH.rdyn * Math.PI / 1000)) / n
 		Else
diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb
index da0443713b..0f08bf71e0 100644
--- a/VECTO/VECTO_Global.vb
+++ b/VECTO/VECTO_Global.vb
@@ -85,8 +85,10 @@ Public Module VECTO_Global
 		Select Case Gearbox
 			Case tGearbox.Manual
 				Return "MT"
-			Case tGearbox.Automatic
-				Return "AT"
+			Case tGearbox.AutomaticSerial
+				Return "ATSerial"
+			Case tGearbox.AutomaticPowerSplit
+				Return "ATPowerSplit"
 			Case tGearbox.SemiAutomatic
 				Return "AMT"
 			Case Else 'tGearbox.Custom
@@ -99,7 +101,11 @@ Public Module VECTO_Global
 			Case "MT"
 				Return tGearbox.Manual
 			Case "AT"
-				Return tGearbox.Automatic
+				Return tGearbox.AutomaticSerial
+			Case "ATSERIAL"
+				Return tGearbox.AutomaticSerial
+			Case "ATPOWERSPLIT"
+				Return tGearbox.AutomaticPowerSplit
 			Case "AMT"
 				Return tGearbox.SemiAutomatic
 			Case Else '"Custom"
diff --git a/VECTO/VECTO_Types.vb b/VECTO/VECTO_Types.vb
index e9e8b68d66..bc848ef2b4 100644
--- a/VECTO/VECTO_Types.vb
+++ b/VECTO/VECTO_Types.vb
@@ -8,6 +8,7 @@
 '   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 '
 ' See the LICENSE.txt for the specific language governing permissions and limitations.
+Imports System.Runtime.CompilerServices
 
 ''' <summary>
 ''' Determines how file extensions are set in the File Browser
@@ -114,10 +115,23 @@ End Enum
 Public Enum tGearbox
 	Manual = 0
 	SemiAutomatic = 1
-	Automatic = 2
-	Custom = 3
+	AutomaticSerial = 2
+	AutomaticPowerSplit = 3
+	Custom = 4
 End Enum
 
+<Extension>
+Module tGearboxExtension
+	Public Function AutomaticTransmission(type As tGearbox) As Boolean
+		Return type = tGearbox.AutomaticPowerSplit OrElse type = tGearbox.AutomaticSerial
+	End Function
+
+
+	Public Function ManualTransmission(type As tGearbox) As Boolean
+		Return type = tGearbox.Manual OrElse type = tGearbox.SemiAutomatic
+	End Function
+End Module
+
 Public Enum tVehCat As Integer
 	Undef = 0
 	RigidTruck = 1
diff --git a/VECTO/cDeclaration.vb b/VECTO/cDeclaration.vb
index 046ef91cc8..def711d20a 100644
--- a/VECTO/cDeclaration.vb
+++ b/VECTO/cDeclaration.vb
@@ -695,7 +695,7 @@ Public Class cDeclaration
 	End Function
 
 	Public Function SkipGears(Gearbox As tGearbox) As Boolean
-		If Gearbox = tGearbox.Automatic Then
+		If AutomaticTransmission(Gearbox) Then
 			Return False
 		Else
 			Return True
-- 
GitLab