From db47155a82d8edb7cc7edea7c1ca90b229f9babd Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 27 Apr 2016 15:34:42 +0200
Subject: [PATCH] [BusAux]: change engine speed from integer to double

---
 VECTO/mAAUX_Global.vb                         |   2 +-
 .../VectoAuxiliaries/DownstreamModules/M11.vb |   2 +-
 .../VectoAuxiliaries/DownstreamModules/M8.vb  | 227 +++++++++---------
 .../Pneumatics/CompressorMap.vb               |   8 +-
 .../Pneumatics/ICompressorMap.vb              |   6 +-
 .../Mocks/CompressorMapMock.vb                |   6 +-
 .../AdvancedAuxiliaryInterfaces/ISignals.vb   |   2 +-
 .../AdvancedAuxiliaryInterfaces/Signals.vb    |   2 +-
 .../Impl/BusAuxiliariesAdapter.cs             |   4 +-
 9 files changed, 135 insertions(+), 124 deletions(-)

diff --git a/VECTO/mAAUX_Global.vb b/VECTO/mAAUX_Global.vb
index 1deed0f8a7..1eb3e26e56 100644
--- a/VECTO/mAAUX_Global.vb
+++ b/VECTO/mAAUX_Global.vb
@@ -7,7 +7,7 @@ Module mAAUX_Global
 	Public EngineDrivelinePower As Single
 	Public EngineDrivelineTorque As Single
 	Public EngineMotoringPower As Single
-	Public EngineSpeed As Integer
+	Public EngineSpeed As Single
 	Public PreExistingAuxPower As Single
 	Public Idle As Boolean
 	Public InNeutral As Boolean
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb
index 22f80edd6b..8c500f704b 100644
--- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb
@@ -116,7 +116,7 @@ Namespace DownstreamModules
 		Private ReadOnly Property Sum10 As Single
 			Get
 
-				Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC \ Sum0(signals.EngineSpeed)
+				Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC / Sum0(signals.EngineSpeed)
 			End Get
 		End Property
 
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb
index 9af3bf48c1..20019383d0 100644
--- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb
@@ -15,118 +15,129 @@ Imports VectoAuxiliaries.Pneumatics
 Imports VectoAuxiliaries.Hvac
 
 Namespace DownstreamModules
+	Public Class M8
+		Implements IM8
 
-  Public Class M8
-    Implements IM8
-
-     #Region "Private Fields"
-
-   private _m1 As IM1_AverageHVACLoadDemand
-   private _m6 As IM6
-   private _m7 As IM7
-   private _signals As ISignals
-
-   #End Region
-    
-     #Region "Internal Sums and Switches"   
-
-   'Internal Staged Sums and Switches
-   private ReadOnly Property Sum1 As Single
-    Get
-      Return _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
-    End Get
-End Property
-   private ReadOnly Property Sum2 As Single
-    Get
-     Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank +_m6.AveragePowerDemandAtCrankFromPneumatics
-    End Get
-End Property
-   private ReadOnly Property Sum3 As Single
-    Get
-    Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC
-    End Get
-End Property
-   private ReadOnly Property Sum4 As Single
-    Get
-     Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics
-    End Get
-End Property
-   private ReadOnly Property Sum5 As Single
-    Get
-    Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5
-    End Get
-End Property
-   Private ReadOnly Property Sum6 As Single
-       Get
-       Return Sum5 * SW6
-       End Get
-   End Property
-   Private ReadOnly Property SW1 As Single 
-       Get
-       Return If( _signals.SmartPneumatics, Sum1, Sum2)
-       End Get
-   End Property
-   Private ReadOnly Property SW2 As Single
-    Get
-    Return If( _signals.SmartPneumatics,Sum3,Sum4)
-    End Get
-End Property
-   Private ReadOnly Property SW3 As Single
-    Get
-    Return If(_signals.SmartPneumatics,_m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank,_m7.SmartElectricalOnlyAuxAltPowerGenAtCrank)
-    End Get
-End Property
-   Private ReadOnly Property SW4 As integer
-    Get
-    Return If( _signals.SmartElectrics,_m6.SmartElecAndPneumaticsCompressorFlag,_m6.SmartPneumaticsOnlyCompressorFlag)
-    End Get
-End Property
-   Private ReadOnly Property SW5 As Single
-       Get
-       Return If( _signals.SmartElectrics,SW1,SW2)
-       End Get
-   End Property
-   Private ReadOnly Property SW6 As Single
-       Get
-        Return  If(_signals.EngineStopped, 0 , 1)
-       End Get
-   End Property
+#Region "Private Fields"
+
+		Private _m1 As IM1_AverageHVACLoadDemand
+		Private _m6 As IM6
+		Private _m7 As IM7
+		Private _signals As ISignals
 
 #End Region
-    
-     'OUT1
-     Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
-            Get
-            Return Sum6
-            End Get
-        End Property
-     'OUT2
-     Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single Implements IM8.SmartElectricalAlternatorPowerGenAtCrank
-            Get
-            Return SW3
-            End Get
-        End Property
-     'OUT3
-     Public ReadOnly Property CompressorFlag As Integer Implements IM8.CompressorFlag
-            Get
-            Return SW4
-            End Get
-        End Property
-    
-     'Constructor
-     Public Sub new( m1 As IM1_AverageHVACLoadDemand, m6 As IM6, m7 As IM7, signals As ISignals)
-
-             _m1=m1
-             _m6=m6
-             _m7=m7
-             _signals=signals
-
-        End Sub
-    
-
-End Class
 
-End Namespace
+#Region "Internal Sums and Switches"
+
+		'Internal Staged Sums and Switches
+		Private ReadOnly Property Sum1 As Single
+			Get
+				Return _
+					_m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
+			End Get
+		End Property
+
+		Private ReadOnly Property Sum2 As Single
+			Get
+				Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank + _m6.AveragePowerDemandAtCrankFromPneumatics
+			End Get
+		End Property
+
+		Private ReadOnly Property Sum3 As Single
+			Get
+				Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC
+			End Get
+		End Property
+
+		Private ReadOnly Property Sum4 As Single
+			Get
+				Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics
+			End Get
+		End Property
+
+		Private ReadOnly Property Sum5 As Single
+			Get
+				Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5
+			End Get
+		End Property
+
+		Private ReadOnly Property Sum6 As Single
+			Get
+				Return Sum5 * SW6
+			End Get
+		End Property
+
+		Private ReadOnly Property SW1 As Single
+			Get
+				Return If(_signals.SmartPneumatics, Sum1, Sum2)
+			End Get
+		End Property
+
+		Private ReadOnly Property SW2 As Single
+			Get
+				Return If(_signals.SmartPneumatics, Sum3, Sum4)
+			End Get
+		End Property
+
+		Private ReadOnly Property SW3 As Single
+			Get
+				Return _
+					If _
+						(_signals.SmartPneumatics, _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank,
+						_m7.SmartElectricalOnlyAuxAltPowerGenAtCrank)
+			End Get
+		End Property
+
+		Private ReadOnly Property SW4 As Integer
+			Get
+				Return If(_signals.SmartElectrics, _m6.SmartElecAndPneumaticsCompressorFlag, _m6.SmartPneumaticsOnlyCompressorFlag)
+			End Get
+		End Property
+
+		Private ReadOnly Property SW5 As Single
+			Get
+				Return If(_signals.SmartElectrics, SW1, SW2)
+			End Get
+		End Property
+
+		Private ReadOnly Property SW6 As Single
+			Get
+				Return If(_signals.EngineStopped, 0, 1)
+			End Get
+		End Property
 
+#End Region
+
+		'OUT1
+		Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single _
+			Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
+			Get
+				Return Sum6
+			End Get
+		End Property
+		'OUT2
+		Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single _
+			Implements IM8.SmartElectricalAlternatorPowerGenAtCrank
+			Get
+				Return SW3
+			End Get
+		End Property
+		'OUT3
+		Public ReadOnly Property CompressorFlag As Integer Implements IM8.CompressorFlag
+			Get
+				Return SW4
+			End Get
+		End Property
+
+		'Constructor
+		Public Sub New(m1 As IM1_AverageHVACLoadDemand, m6 As IM6, m7 As IM7, signals As ISignals)
+
+			_m1 = m1
+			_m6 = m6
+			_m7 = m7
+			_signals = signals
+		End Sub
+	End Class
+End Namespace
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb
index a8d2ef5100..1e88f01bcd 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb
@@ -108,7 +108,7 @@ Namespace Pneumatics
 		''' <param name="rpm">compressor rotation speed</param>
 		''' <returns></returns>
 		''' <remarks>Single</remarks>
-		Public Function GetFlowRate(ByVal rpm As Integer) As Single Implements ICompressorMap.GetFlowRate
+		Public Function GetFlowRate(ByVal rpm As Double) As Single Implements ICompressorMap.GetFlowRate
 			Dim val As CompressorMapValues = InterpolatedTuple(rpm)
 			Return val.FlowRate
 		End Function
@@ -119,7 +119,7 @@ Namespace Pneumatics
 		''' <param name="rpm">compressor rotation speed</param>
 		''' <returns></returns>
 		''' <remarks>Single</remarks>
-		Public Function GetPowerCompressorOn(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOn
+		Public Function GetPowerCompressorOn(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOn
 			Dim val As CompressorMapValues = InterpolatedTuple(rpm)
 			Return val.PowerCompressorOn
 		End Function
@@ -130,7 +130,7 @@ Namespace Pneumatics
 		''' <param name="rpm">compressor rotation speed</param>
 		''' <returns></returns>
 		''' <remarks>Single</remarks>
-		Public Function GetPowerCompressorOff(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOff
+		Public Function GetPowerCompressorOff(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOff
 			Dim val As CompressorMapValues = InterpolatedTuple(rpm)
 			Return val.PowerCompressorOff
 		End Function
@@ -140,7 +140,7 @@ Namespace Pneumatics
 		''' </summary>
 		''' <returns>CompressorMapValues</returns>
 		''' <remarks>Throws exception if rpm are outside map</remarks>
-		Private Function InterpolatedTuple(ByVal rpm As Integer) As CompressorMapValues
+		Private Function InterpolatedTuple(ByVal rpm As Double) As CompressorMapValues
 			'check the rpm is within the map
 			Dim min As Integer = map.Keys.Min()
 			Dim max As Integer = map.Keys.Max()
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb
index 683312eb84..42cebc7666 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb
@@ -26,7 +26,7 @@ Namespace Pneumatics
         ''' <param name="rpm">compressor rotation speed</param>
         ''' <returns></returns>
         ''' <remarks>Single</remarks>
-        Function GetFlowRate(ByVal rpm As Integer) As Single
+		Function GetFlowRate(ByVal rpm As Double) As Single
 
         ''' <summary>
         ''' Returns mechanical power at rpm when compressor is on
@@ -34,7 +34,7 @@ Namespace Pneumatics
         ''' <param name="rpm">compressor rotation speed</param>
         ''' <returns></returns>
         ''' <remarks>Single</remarks>
-        Function GetPowerCompressorOn(ByVal rpm As Integer) As Single
+		Function GetPowerCompressorOn(ByVal rpm As Double) As Single
 
         ''' <summary>
         ''' Returns mechanical power at rpm when compressor is off
@@ -42,7 +42,7 @@ Namespace Pneumatics
         ''' <param name="rpm">compressor rotation speed</param>
         ''' <returns></returns>
         ''' <remarks>Single</remarks>
-        Function GetPowerCompressorOff(ByVal rpm As Integer) As Single
+		Function GetPowerCompressorOff(ByVal rpm As Double) As Single
 
         'Returns Average Power Demand Per Compressor Unit FlowRate
         Function GetAveragePowerDemandPerCompressorUnitFlowRate() As Single
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb
index 9fe1764afd..f726848898 100644
--- a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb
@@ -19,15 +19,15 @@ Namespace Mocks
 			End If
 		End Function
 
-		Public Function GetFlowRate(ByVal rpm As Integer) As Single Implements ICompressorMap.GetFlowRate
+		Public Function GetFlowRate(ByVal rpm As Double) As Single Implements ICompressorMap.GetFlowRate
 			Return 2.0
 		End Function
 
-		Public Function GetPowerCompressorOn(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOn
+		Public Function GetPowerCompressorOn(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOn
 			Return 8.0
 		End Function
 
-		Public Function GetPowerCompressorOff(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOff
+		Public Function GetPowerCompressorOff(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOff
 			Return 5.0
 		End Function
 
diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb
index 39ad35d015..76e513745b 100644
--- a/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb
+++ b/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb
@@ -56,7 +56,7 @@ Public Interface ISignals
 	''' <value></value>
 	''' <returns></returns>
 	''' <remarks>RPM in old money - Vecto Input</remarks>
-	Property EngineSpeed As Integer
+	Property EngineSpeed As Double
 
 	''' <summary>
 	''' Smart Pneumatics
diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb
index 5e034fb3cd..0cada55b03 100644
--- a/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb
+++ b/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb
@@ -21,7 +21,7 @@ Public Class Signals
 	Public Property EngineDrivelinePower As Single Implements ISignals.EngineDrivelinePower
 	Public Property EngineDrivelineTorque As Single Implements ISignals.EngineDrivelineTorque
 	Public Property EngineMotoringPower As Single Implements ISignals.EngineMotoringPower
-	Public Property EngineSpeed As Integer Implements ISignals.EngineSpeed
+	Public Property EngineSpeed As Double Implements ISignals.EngineSpeed
 
 	Public Property SmartElectrics As Boolean Implements ISignals.SmartElectrics
 		Get
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs
index a3a4ec3ca5..991e49b884 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs
@@ -194,8 +194,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					// smart aux should be on during braking
 				}
 			}
-			Auxiliaries.Signals.EngineMotoringPower = -(float)DataBus.EngineDragPower(angularSpeed).Value() / 1000;
-			Auxiliaries.Signals.EngineSpeed = (int)(angularSpeed.Value() / Constants.RPMToRad);
+			Auxiliaries.Signals.EngineMotoringPower = (float)(-DataBus.EngineDragPower(angularSpeed).Value() / 1000);
+			Auxiliaries.Signals.EngineSpeed = angularSpeed.Value() / Constants.RPMToRad;
 			Auxiliaries.Signals.PreExistingAuxPower = 0; //mAAUX_Global.PreExistingAuxPower;
 			Auxiliaries.Signals.Idle = DataBus.VehicleStopped;
 			Auxiliaries.Signals.InNeutral = DataBus.Gear == 0;
-- 
GitLab