From 9d220472bba10aa95ae569658b94e2f6bc3ecd0e Mon Sep 17 00:00:00 2001
From: "Zarb, Glenn" <STC\GZ1>
Date: Wed, 8 Jul 2015 12:57:56 +0000
Subject: [PATCH] git-tfs-id:
 [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C2008

---
 .../VectoAuxiliaries/AdvancedAuxiliaries.vb   |   1 -
 .../VectoAuxiliaries/DownstreamModules/M6.vb  | 506 +++++++++---------
 .../VectoAuxiliaries/Electrics/Alternator.vb  |   2 +-
 .../Hvac/EnvironmentalConditionsMap.vb        |  21 +-
 .../Hvac/IEnvironmentalConditionsMap.vb       |   2 +-
 .../VectoAuxiliaries/Hvac/SSMCalculate.vb     |  14 +-
 .../VectoAuxiliaries/Hvac/SSMGenInputs.vb     |   9 +-
 VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb     |   2 +-
 VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb |   7 +-
 .../Hvac/TechListBenefitLine.vb               |   2 -
 .../Pneumatics/PneumaticUserInputsConfig.vb   |  78 ++-
 .../PneumaticsAuxilliariesConfig.vb           |  71 ++-
 VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb   |   4 +-
 13 files changed, 354 insertions(+), 365 deletions(-)

diff --git a/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb b/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb
index 2c6753bf1f..4759cb96f9 100644
--- a/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb
+++ b/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb
@@ -162,7 +162,6 @@ Public Class AdvancedAuxiliaries
                 VectoInputs.Cycle,
                 Signals)
 
-
         M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio, auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals)
         M5 = New M5__SmartAlternatorSetGeneration(M05, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency)
         M6 = New M6(M1, M2, M3, M4, M5, Signals)
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb
index c620a9db7f..c917cdd5d9 100644
--- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb
@@ -15,259 +15,259 @@ Imports VectoAuxiliaries.Hvac
 
 Namespace DownstreamModules
 
-  Public Class M6
-Implements IM6
-
-   #Region "Private Field - Constructor requirements"
-  private _m1      As IM1_AverageHVACLoadDemand
-  private _m2      As IM2_AverageElectricalLoadDemand
-  private _m3      As IM3_AveragePneumaticLoadDemand
-  Private _m4      As IM4_AirCompressor
-  Private _m5      As IM5_SmartAlternatorSetGeneration
-  Private _signals As ISignals
- #End Region
-   
-   'OUT1
-   Public ReadOnly Property OverrunFlag As Integer Implements IM6.OverrunFlag
-        
-        Get                
-          Return  VC0
-        End Get
-    End Property
-   'OUT2
-   Public ReadOnly Property SmartElecAndPneumaticsCompressorFlag As integer Implements IM6.SmartElecAndPneumaticsCompressorFlag
-        Get
-         Return VC2
-        End Get
-    End Property
-   'OUT3
-   Public ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAltPowerGenAtCrank
-        Get
-        'Multiply * 1 @ Engineering Request
-         Return Max1 * -1
-        End Get
-    End Property
-   'OUT4
-   Public ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAirCompPowerGenAtCrank
-        Get
-        Return Sum16
-        End Get
-End Property
-   'OUT5
-   Public ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Single Implements IM6.SmartElecOnlyAltPowerGenAtCrank
-        Get
-         'Multiply * -1 @ Engineering request.
-         Return Max2 * -1
-        End Get
-    End Property
-   'OUT6
-   Public ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Single Implements IM6.AveragePowerDemandAtCrankFromPneumatics
-        Get
-         Return _m3.GetAveragePowerDemandAtCrankFromPneumatics
-        End Get
-    End Property
-   'OUT7
-   Public ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Single Implements IM6.SmartPneumaticOnlyAirCompPowerGenAtCrank
-        Get
-         Return Sum19
-        End Get
-    End Property
-   'OUT8
-   Public ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Single Implements IM6.AvgPowerDemandAtCrankFromElectricsIncHVAC
-        Get
- 
-          Return Sum1
-
-        End Get
-
-    End Property
-   'OUT9
-   Public ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Integer Implements IM6.SmartPneumaticsOnlyCompressorFlag
-        Get
-         Return VC4
-        End Get
-    End Property
-
-   'Internal Staging Calculations
-   'switches
-   Private ReadOnly Property SW1 As Single
-    Get
-
-    Return If( _signals.SmartElectrics, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts,Sum1)
-
-    End Get
-End Property
-   
-   'Max of Sum5 vs Sum10
-   Public ReadOnly Property Max1 As Single
-    Get
-       Return If( Sum5 > Sum10, Sum5, Sum10) 
-    End Get
-End Property
-   'Max of Sum10 vs Sum7
-   Public ReadOnly Property Max2 As Single
-    Get
-        Return If( Sum7 > Sum10, Sum7, Sum10) 
-    End Get
-End Property
-   
-   'Value Choices
-   Public ReadOnly Property VC0 As Single
-    Get
-    Return  If( Sum3<=0,1,0)
-    End Get
-End Property
-   Public ReadOnly Property VC1 As Single
-    Get
-     Return If( Sum12>0,1,0)
-    End Get
-End Property
-   Public ReadOnly Property VC2 As Single
-    Get
-    Return If( Sum12<0 orelse Sum12=0,1,0)
-    End Get
-End Property
-   Public ReadOnly Property VC3 As Single
-    Get
-    Return If( Sum13>0,1,0)
-    End Get
-End Property
-   Public ReadOnly Property VC4 As Single
-    Get
-    Return If( Sum13<0 orelse Sum13=0, 1,0)
-    End Get
-End Property
-
-   'Sums
-   Public ReadOnly Property Sum1 As Single
-    Get
-      Return  _m1.AveragePowerDemandAtCrankFromHVACElectricsWatts() + _m2.GetAveragePowerAtCrankFromElectrics()
-    End Get
-End Property
-   Public ReadOnly Property Sum2 As Single
-    Get
-
-
-    Dim returnValue As Single =  _signals.PreExistingAuxPower +_m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW1 + _m3.GetAveragePowerDemandAtCrankFromPneumatics
-
-    Return  returnValue
-
-           
-
-    End Get
-End Property
-   Public ReadOnly Property Sum3 As Single
-    Get
-
-    Return (_signals.EngineMotoringPower  * 1000)  + _
-           (_signals.EngineDrivelinePower * 1000) + _
-           Sum2 
-
-    End Get
-End Property
-   Public ReadOnly Property Sum4 As Single
-    Get
-
-      Return Sum3 - SW1 - _m3.GetAveragePowerDemandAtCrankFromPneumatics + _m4.GetPowerCompressorOff
-
-    End Get
-End Property
-   Public ReadOnly Property Sum5 As Single
-    Get
-      Return OverrunFlag * Sum4
-    End Get
-End Property
-   Public ReadOnly Property Sum6 As Single 
-    Get
-     Return Sum4  -  _m4.GetPowerCompressorOff + _m3.GetAveragePowerDemandAtCrankFromPneumatics
-    End Get
-End Property
-   Public ReadOnly Property Sum7 As Single
-    Get
-     Return VC0 * Sum6
-    End Get
-End Property
-   Public ReadOnly Property Sum8 As Single
-    Get
-    Return  Sum4 + SW1
-    End Get
-End Property
-   Public ReadOnly Property Sum9 As Single
-    Get
-    Return VC0 * Sum8
-    End Get
-End Property
-   Public ReadOnly Property Sum10 As Single
-    Get
-    Return -1 * _m5.AlternatorsGenerationPowerAtCrankOverrunWatts
-    End Get
-End Property
-   Public ReadOnly Property Sum11 As Single
-    Get
-      Return Sum5 - Max1
-    End Get
-End Property
-   Public ReadOnly Property Sum12 As Single
-    Get
-    Return _m4.GetPowerDifference + Sum11
-    End Get
-End Property
-   Public ReadOnly Property Sum13 As Single
-    Get
-     Return Sum9 + _m4.GetPowerDifference
-    End Get
-End Property
-   Public ReadOnly Property Sum14 As Single
-    Get
-    Return VC1 * _m4.GetPowerCompressorOff
-    End Get
-End Property
-   Public ReadOnly Property Sum15 As Single
-    Get
-      Return VC2 * ( _m4.GetPowerCompressorOn * 0.97 )
-    End Get
-End Property
-   Public ReadOnly property Sum16 as single
-    Get
-      Return Sum14 + Sum15
-    End Get
-End Property
-   Public ReadOnly Property Sum17 As Single
-    Get
-    Return _m4.GetPowerCompressorOff * VC3
-    End Get
-End Property
-   Public ReadOnly Property Sum18 As Single
-    Get
-    Return VC4 *  ( _m4.GetPowerCompressorOn * 0.97 )
-    End Get
-End Property
-   Public ReadOnly Property Sum19 As Single
-    Get
-    Return Sum17 + Sum18
-    end get
-End Property
-
-
-   'Constructor
-   Public Sub new ( m1 As IM1_AverageHVACLoadDemand,
-                  m2 As IM2_AverageElectricalLoadDemand,
-                  m3 As IM3_AveragePneumaticLoadDemand,
-                  m4 As IM4_AirCompressor,
-                  m5 As IM5_SmartAlternatorSetGeneration ,
-                  signals As ISignals )
-
-      _m1=m1
-      _m2=m2
-      _m3=m3
-      _m4=m4
-      _m5=m5
-      _signals= signals
-                  
- End Sub
-   
-
-End Class
+    Public Class M6
+        Implements IM6
+
+#Region "Private Field - Constructor requirements"
+        Private _m1 As IM1_AverageHVACLoadDemand
+        Private _m2 As IM2_AverageElectricalLoadDemand
+        Private _m3 As IM3_AveragePneumaticLoadDemand
+        Private _m4 As IM4_AirCompressor
+        Private _m5 As IM5_SmartAlternatorSetGeneration
+        Private _signals As ISignals
+#End Region
+
+        'OUT1
+        Public ReadOnly Property OverrunFlag As Integer Implements IM6.OverrunFlag
+
+            Get
+                Return VC0
+            End Get
+        End Property
+        'OUT2
+        Public ReadOnly Property SmartElecAndPneumaticsCompressorFlag As Integer Implements IM6.SmartElecAndPneumaticsCompressorFlag
+            Get
+                Return VC2
+            End Get
+        End Property
+        'OUT3
+        Public ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAltPowerGenAtCrank
+            Get
+                'Multiply * 1 @ Engineering Request
+                Return Max1 * -1
+            End Get
+        End Property
+        'OUT4
+        Public ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAirCompPowerGenAtCrank
+            Get
+                Return Sum16
+            End Get
+        End Property
+        'OUT5
+        Public ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Single Implements IM6.SmartElecOnlyAltPowerGenAtCrank
+            Get
+                'Multiply * -1 @ Engineering request.
+                Return Max2 * -1
+            End Get
+        End Property
+        'OUT6
+        Public ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Single Implements IM6.AveragePowerDemandAtCrankFromPneumatics
+            Get
+                Return _m3.GetAveragePowerDemandAtCrankFromPneumatics
+            End Get
+        End Property
+        'OUT7
+        Public ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Single Implements IM6.SmartPneumaticOnlyAirCompPowerGenAtCrank
+            Get
+                Return Sum19
+            End Get
+        End Property
+        'OUT8
+        Public ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Single Implements IM6.AvgPowerDemandAtCrankFromElectricsIncHVAC
+            Get
+
+                Return Sum1
+
+            End Get
+
+        End Property
+        'OUT9
+        Public ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Integer Implements IM6.SmartPneumaticsOnlyCompressorFlag
+            Get
+                Return VC4
+            End Get
+        End Property
+
+        'Internal Staging Calculations
+        'switches
+        Private ReadOnly Property SW1 As Single
+            Get
+
+                Return If(_signals.SmartElectrics, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts, Sum1)
+
+            End Get
+        End Property
+
+        'Max of Sum5 vs Sum10
+        Public ReadOnly Property Max1 As Single
+            Get
+                Return If(Sum5 > Sum10, Sum5, Sum10)
+            End Get
+        End Property
+        'Max of Sum10 vs Sum7
+        Public ReadOnly Property Max2 As Single
+            Get
+                Return If(Sum7 > Sum10, Sum7, Sum10)
+            End Get
+        End Property
+
+        'Value Choices
+        Public ReadOnly Property VC0 As Single
+            Get
+                Return If(Sum3 <= 0, 1, 0)
+            End Get
+        End Property
+        Public ReadOnly Property VC1 As Single
+            Get
+                Return If(Sum12 > 0, 1, 0)
+            End Get
+        End Property
+        Public ReadOnly Property VC2 As Single
+            Get
+                Return If(Sum12 < 0 OrElse Sum12 = 0, 1, 0)
+            End Get
+        End Property
+        Public ReadOnly Property VC3 As Single
+            Get
+                Return If(Sum13 > 0, 1, 0)
+            End Get
+        End Property
+        Public ReadOnly Property VC4 As Single
+            Get
+                Return If(Sum13 < 0 OrElse Sum13 = 0, 1, 0)
+            End Get
+        End Property
+
+        'Sums
+        Public ReadOnly Property Sum1 As Single
+            Get
+                Return _m1.AveragePowerDemandAtCrankFromHVACElectricsWatts() + _m2.GetAveragePowerAtCrankFromElectrics()
+            End Get
+        End Property
+        Public ReadOnly Property Sum2 As Single
+            Get
+
+
+                Dim returnValue As Single = _signals.PreExistingAuxPower + _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW1 + _m3.GetAveragePowerDemandAtCrankFromPneumatics
+
+                Return returnValue
+
+
+
+            End Get
+        End Property
+        Public ReadOnly Property Sum3 As Single
+            Get
+
+                Return (_signals.EngineMotoringPower * 1000) + _
+                       (_signals.EngineDrivelinePower * 1000) + _
+                       Sum2
+
+            End Get
+        End Property
+        Public ReadOnly Property Sum4 As Single
+            Get
+
+                Return Sum3 - SW1 - _m3.GetAveragePowerDemandAtCrankFromPneumatics + _m4.GetPowerCompressorOff
+
+            End Get
+        End Property
+        Public ReadOnly Property Sum5 As Single
+            Get
+                Return OverrunFlag * Sum4
+            End Get
+        End Property
+        Public ReadOnly Property Sum6 As Single
+            Get
+                Return Sum4 - _m4.GetPowerCompressorOff + _m3.GetAveragePowerDemandAtCrankFromPneumatics
+            End Get
+        End Property
+        Public ReadOnly Property Sum7 As Single
+            Get
+                Return VC0 * Sum6
+            End Get
+        End Property
+        Public ReadOnly Property Sum8 As Single
+            Get
+                Return Sum4 + SW1
+            End Get
+        End Property
+        Public ReadOnly Property Sum9 As Single
+            Get
+                Return VC0 * Sum8
+            End Get
+        End Property
+        Public ReadOnly Property Sum10 As Single
+            Get
+                Return -1 * _m5.AlternatorsGenerationPowerAtCrankOverrunWatts
+            End Get
+        End Property
+        Public ReadOnly Property Sum11 As Single
+            Get
+                Return Sum5 - Max1
+            End Get
+        End Property
+        Public ReadOnly Property Sum12 As Single
+            Get
+                Return _m4.GetPowerDifference + Sum11
+            End Get
+        End Property
+        Public ReadOnly Property Sum13 As Single
+            Get
+                Return Sum9 + _m4.GetPowerDifference
+            End Get
+        End Property
+        Public ReadOnly Property Sum14 As Single
+            Get
+                Return VC1 * _m4.GetPowerCompressorOff
+            End Get
+        End Property
+        Public ReadOnly Property Sum15 As Single
+            Get
+                Return VC2 * (_m4.GetPowerCompressorOn * 0.97)
+            End Get
+        End Property
+        Public ReadOnly Property Sum16 As Single
+            Get
+                Return Sum14 + Sum15
+            End Get
+        End Property
+        Public ReadOnly Property Sum17 As Single
+            Get
+                Return _m4.GetPowerCompressorOff * VC3
+            End Get
+        End Property
+        Public ReadOnly Property Sum18 As Single
+            Get
+                Return VC4 * (_m4.GetPowerCompressorOn * 0.97)
+            End Get
+        End Property
+        Public ReadOnly Property Sum19 As Single
+            Get
+                Return Sum17 + Sum18
+            End Get
+        End Property
+
+
+        'Constructor
+        Public Sub New(m1 As IM1_AverageHVACLoadDemand,
+                        m2 As IM2_AverageElectricalLoadDemand,
+                       m3 As IM3_AveragePneumaticLoadDemand,
+                       m4 As IM4_AirCompressor,
+                       m5 As IM5_SmartAlternatorSetGeneration,
+                       signals As ISignals)
+
+            _m1 = m1
+            _m2 = m2
+            _m3 = m3
+            _m4 = m4
+            _m5 = m5
+            _signals = signals
+
+        End Sub
+
+
+    End Class
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/Alternator.vb b/VECTOAux/VectoAuxiliaries/Electrics/Alternator.vb
index acd6702cfb..9ba282733c 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/Alternator.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/Alternator.vb
@@ -70,11 +70,11 @@ Namespace Electrics
             End Get
         End Property
 
-
         'Constructors
         Sub New()
 
         End Sub
+
         Sub New(isignals As ICombinedAlternatorSignals, inputs As List(Of ICombinedAlternatorMapRow))
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb b/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb
index 488226447d..9e79090a8e 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb
@@ -5,21 +5,26 @@ Namespace Hvac
     Public Class EnvironmentalConditionsMap
         Implements IEnvironmentalConditionsMap
 
-        Private ReadOnly filePath As String
+        Private filePath As String
+        Private vectoDirectory As String
 
         Private _map As New List(Of IEnvironmentalCondition)
 
-        Public Sub New(filepath As String)
+        Public Sub New(filepath As String, vectoDirectory As String)
 
             Me.filePath = filepath
+            Me.vectoDirectory = vectoDirectory
 
             Initialise()
 
         End Sub
 
-        Public Sub Initialise() Implements IEnvironmentalConditionsMap.Initialise
+        Public Function Initialise() As Boolean Implements IEnvironmentalConditionsMap.Initialise
 
             If (Not String.IsNullOrWhiteSpace(filePath)) Then
+
+                filePath = FilePathUtils.ResolveFilePath(vectoDirectory, filePath)
+
                 If File.Exists(filePath) Then
                     Using sr As StreamReader = New StreamReader(filePath)
 
@@ -28,7 +33,7 @@ Namespace Hvac
 
                         'Must have at least 1 entries to make it usable [dont forget the header row]
                         If (lines.Count() < 2) Then
-                            Throw New ArgumentException("Insufficient rows to build conditions")
+                            Return False
                         End If
 
                         Dim firstline As Boolean = True
@@ -41,7 +46,7 @@ Namespace Hvac
 
                                 '3 entries per line required
                                 If (elements.Length <> 4) Then
-                                    Throw New ArgumentException("Incorrect number of values in file")
+                                    Return False
                                 End If
 
                                 'Add environment condition
@@ -56,11 +61,13 @@ Namespace Hvac
                     End Using
 
                 Else
-                    Throw New ArgumentException("File not found")
+                    Return False
                 End If
             End If
 
-        End Sub
+            Return True
+
+        End Function
 
         Public Function GetEnvironmentalConditions() As List(Of IEnvironmentalCondition) Implements IEnvironmentalConditionsMap.GetEnvironmentalConditions
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb b/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb
index 705a27077b..2b873ff82f 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb
@@ -2,7 +2,7 @@
 
     Public Interface IEnvironmentalConditionsMap
 
-        Sub Initialise()
+        Function Initialise() As Boolean
 
         Function GetEnvironmentalConditions() As List(Of IEnvironmentalCondition)
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
index 904add607f..42d0d56202 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
@@ -607,14 +607,11 @@ Namespace Hvac
 
         Private Function CalculateElectricalWAdjusted(genInputs As ISSMGenInputs, tecList As ISSMTechList, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
 
-            '=(MIN((H94*(1-H100)),C54*1000)/C59)+(I93*(1-I99))+(I94*(1-I100))+(I95*(1-I101)) + IF('TECH LIST INPUT'!D36="electrical",-'TECH LIST INPUT'!R93*1000,0)
+            '=(MIN((H94*(1-H100)),C54*1000)/C59)+(I93*(1-I99))+(I94*(1-I100))+(I95*(1-I101))
             
             genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
             genInputs.EC_Solar = Solar
 
-            Dim DACElectrical As Boolean = tecList.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACElectrical AndAlso f.OnVehicle).Count() = 1
-            Dim AdjustedAddition As Double = If(Not DACElectrical, 0, -tecList.CValueVariationKW * 1000)
-
             Dim H94 As Double = BaseCoolingW_ElectricalCoolingHeating
             Dim H100 As Double = TechListAdjustedCoolingW_ElectricalCoolingHeating
             Dim C54 As Double = genInputs.AC_CompressorCapacitykW
@@ -627,7 +624,7 @@ Namespace Hvac
             Dim I100 As Double = TechListAdjustedCoolingW_ElectricalVentilation
             Dim I101 As Double = TechListAdjustedVentilationW_ElectricalVentilation
 
-            Dim ElectricalWAdjusted As Single = (Math.Min((H94 * (1 - H100)), C54 * 1000) / C59) + (I93 * (1 - I99)) + (I94 * (1 - I100)) + (I95 * (1 - I101)) + AdjustedAddition
+            Dim ElectricalWAdjusted As Single = (Math.Min((H94 * (1 - H100)), C54 * 1000) / C59) + (I93 * (1 - I99)) + (I94 * (1 - I100)) + (I95 * (1 - I101))
 
             Return ElectricalWAdjusted * Weight
 
@@ -635,20 +632,17 @@ Namespace Hvac
 
         Private Function CalculateMechanicalWBaseAdjusted(genInputs As ISSMGenInputs, tecList As ISSMTechList, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
 
-            '=(MIN((F94*(1-F100)),C54*1000)/C59) + IF('TECH LIST INPUT'!D36="mechanical",-'TECH LIST INPUT'!R93*1000,0)
+            '=(MIN((F94*(1-F100)),C54*1000)/C59)
             
             genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
             genInputs.EC_Solar = Solar
 
-            Dim DACMechanical As Boolean = tecList.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACMechanical AndAlso f.OnVehicle).Count() = 1
-            Dim AdjustedAddition As Double = If(Not DACMechanical, 0, tecList.CValueVariationKW * 1000)
-
             Dim F94 As Double = BaseCoolingW_Mechanical
             Dim F100 As Double = TechListAdjustedCoolingW_Mechanical
             Dim C54 As Double = genInputs.AC_CompressorCapacitykW
             Dim C59 As Double = genInputs.AC_COP
 
-            Dim MechanicalWBaseAdjusted As Single = (Math.Min((F94 * (1 - F100)), C54 * 1000) / C59) + AdjustedAddition
+            Dim MechanicalWBaseAdjusted As Single = (Math.Min((F94 * (1 - F100)), C54 * 1000) / C59)
 
             Return MechanicalWBaseAdjusted * Weight
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb
index 14b3b231db..71fe1de89e 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb
@@ -8,11 +8,13 @@ Namespace Hvac
 
         Private _EC_EnviromentalConditions_BatchFile As String
         Private _EC_EnvironmentalConditionsMap As IEnvironmentalConditionsMap
+        Private _vectoDir As String
 
 #Region "Constructors"
 
-        Sub New(Optional initialiseDefaults As Boolean = False)
+        Sub New(Optional initialiseDefaults As Boolean = False, Optional vectoDir As String = "")
 
+            _vectoDir = vectoDir
             If initialiseDefaults Then SetDefaults()
 
         End Sub
@@ -251,7 +253,7 @@ Namespace Hvac
                 Return _EC_EnviromentalConditions_BatchFile
             End Get
             Set(value As String)
-                _EC_EnvironmentalConditionsMap = New EnvironmentalConditionsMap(value)
+                _EC_EnvironmentalConditionsMap = New EnvironmentalConditionsMap(value, _vectoDir)
                 _EC_EnviromentalConditions_BatchFile = value
             End Set
         End Property
@@ -376,7 +378,8 @@ Namespace Hvac
             '************************
             EC_EnviromentalTemperature = 25.0R
             EC_Solar = 400.0R
-            EC_EnviromentalConditions_BatchEnabled = False
+            EC_EnviromentalConditions_BatchEnabled = True
+            EC_EnviromentalConditions_BatchFile = "DefaultClimatic.aenv"
 
             'AC SYSTEM
             '*********
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
index 034d498c72..198b313acb 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
@@ -76,7 +76,7 @@ Namespace Hvac
             Me.SSMDisabled = isDisabled
             Me.HVACConstants = hvacConstants
 
-            GenInputs = New SSMGenInputs(useTestValues)
+            GenInputs = New SSMGenInputs(useTestValues, fPATH(filePath))
             TechList = New SSMTechList(filePath, GenInputs, useTestValues)
 
             Calculate = New SSMCalculate(Me)
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb
index fc1d712ad1..191c7b6146 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb
@@ -498,18 +498,19 @@ Public Class SSMTechList
                 .BenefitName = "Fan control strategy (serial/parallel)"
                 .LowFloorH = 0
                 .LowFloorC = 0
-                .LowFloorV = 0
+                .LowFloorV = 0.02
                 .SemiLowFloorH = 0
                 .SemiLowFloorC = 0
-                .SemiLowFloorV = 0
+                .SemiLowFloorV = 0.02
                 .RaisedFloorH = 0
                 .RaisedFloorC = 0
-                .RaisedFloorV = 0
+                .RaisedFloorV = 0.02
                 .ActiveVH = 0.02
                 .ActiveVV = 0.02
                 .ActiveVC = 0.02
                 .OnVehicle = False
                 .Units = "fraction"
+                .LineType = TechLineType.HVCActiveSelection
             End With
 
             Dim feedback As String = String.Empty
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb
index 71ad863a17..57456a9378 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb
@@ -4,8 +4,6 @@ Namespace Hvac
     Public Enum TechLineType
 
         Normal
-        DriverACMechanical
-        DriverACElectrical
         HVCActiveSelection
 
     End Enum
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb
index 7410b197b1..a8682572d9 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb
@@ -11,64 +11,54 @@
 
 Namespace Pneumatics
 
-Public Class PneumaticUserInputsConfig
-Implements IPneumaticUserInputsConfig
+    Public Class PneumaticUserInputsConfig
+        Implements IPneumaticUserInputsConfig
 
+        Public Property CompressorMap As String Implements IPneumaticUserInputsConfig.CompressorMap
+        Public Property CompressorGearRatio As Single Implements IPneumaticUserInputsConfig.CompressorGearRatio
+        Public Property CompressorGearEfficiency As Single Implements IPneumaticUserInputsConfig.CompressorGearEfficiency
 
+        'pnmeumatic or electric
+        Public Property AdBlueDosing As String Implements IPneumaticUserInputsConfig.AdBlueDosing
 
+        'mechanical or electrical
+        Public Property AirSuspensionControl As String Implements IPneumaticUserInputsConfig.AirSuspensionControl
 
+        'pneumatic or electric
+        Public Property Doors As String Implements IPneumaticUserInputsConfig.Doors
+        Public Property KneelingHeightMillimeters As Single Implements IPneumaticUserInputsConfig.KneelingHeightMillimeters
 
-'pnmeumatic or electric
-Public Property AdBlueDosing As String Implements IPneumaticUserInputsConfig.AdBlueDosing
-'mechanical or electrical
-Public Property AirSuspensionControl As String Implements IPneumaticUserInputsConfig.AirSuspensionControl
+        'PneumaticActuationsMap
+        Public Property ActuationsMap As String Implements IPneumaticUserInputsConfig.ActuationsMap
 
-Public Property CompressorMap As String Implements IPneumaticUserInputsConfig.CompressorMap
-Public Property CompressorGearEfficiency As Single Implements IPneumaticUserInputsConfig.CompressorGearEfficiency
-Public Property CompressorGearRatio As Single Implements IPneumaticUserInputsConfig.CompressorGearRatio
+        Public Property RetarderBrake As Boolean Implements IPneumaticUserInputsConfig.RetarderBrake
+        Public Property SmartAirCompression As Boolean Implements IPneumaticUserInputsConfig.SmartAirCompression
+        Public Property SmartRegeneration As Boolean Implements IPneumaticUserInputsConfig.SmartRegeneration
 
-'PneumaticActuationsMap
-Public Property ActuationsMap As String Implements IPneumaticUserInputsConfig.ActuationsMap
 
-'pneumatic or electric
-Public Property Doors As String Implements IPneumaticUserInputsConfig.Doors
-Public Property KneelingHeightMillimeters As Single Implements IPneumaticUserInputsConfig.KneelingHeightMillimeters
-Public Property RetarderBrake As Boolean Implements IPneumaticUserInputsConfig.RetarderBrake
-Public Property SmartAirCompression As Boolean Implements IPneumaticUserInputsConfig.SmartAirCompression
-Public Property SmartRegeneration As Boolean Implements IPneumaticUserInputsConfig.SmartRegeneration
+        Public Sub New(Optional setToDefaults As Boolean = False)
 
+            If setToDefaults Then SetPropertiesToDefaults()
 
-Public Sub New( optional setToDefaults As Boolean = False)
-
-
-If setToDefaults then SetPropertiesToDefaults()
-
-End Sub
-
-Public sub SetPropertiesToDefaults()
-
-
-            ActuationsMap="testPneumaticActuationsMap_GOODMAP.apac"
-            AdBlueDosing="Pneumatic"
-            AirSuspensionControl="Electrically"
-            CompressorGearEfficiency=0.8
-            CompressorGearRatio=1.0
-            CompressorMap="testCompressorMap.acmp"
-            Doors="Pneumatic"
-            KneelingHeightMillimeters=80
-            RetarderBrake=True
-            SmartAirCompression=True
-            SmartRegeneration=True  
-
-End Sub
-
-
-
-End Class
+        End Sub
 
+        Public Sub SetPropertiesToDefaults()
 
+            CompressorMap = String.Empty
+            CompressorGearRatio = 1.0
+            CompressorGearEfficiency = 0.97
+            AdBlueDosing = "Pneumatic"
+            AirSuspensionControl = "Mechanically"
+            Doors = "Pneumatic"
+            KneelingHeightMillimeters = 70
+            ActuationsMap = "testPneumaticActuationsMap.apac"
+            RetarderBrake = True
+            SmartAirCompression = False
+            SmartRegeneration = False
 
+        End Sub
 
+    End Class
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb
index 83907b11ae..217356c954 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb
@@ -15,43 +15,40 @@ Public Class PneumaticsAuxilliariesConfig
 Implements IPneumaticsAuxilliariesConfig
 
 
-Public Property AdBlueNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AdBlueNIperMinute
-Public Property AirControlledSuspensionNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AirControlledSuspensionNIperMinute
-Public Property BrakingNoRetarderNIperKG As Single Implements IPneumaticsAuxilliariesConfig.BrakingNoRetarderNIperKG
-Public Property BrakingWithRetarderNIperKG As Single Implements IPneumaticsAuxilliariesConfig.BrakingWithRetarderNIperKG
-Public Property BreakingPerKneelingNIperKGinMM As Single Implements IPneumaticsAuxilliariesConfig.BreakingPerKneelingNIperKGinMM
-Public Property DeadVolBlowOutsPerLitresperHour As Single Implements IPneumaticsAuxilliariesConfig.DeadVolBlowOutsPerLitresperHour
-Public Property DeadVolumeLitres As Single Implements IPneumaticsAuxilliariesConfig.DeadVolumeLitres
-Public Property NonSmartRegenFractionTotalAirDemand As Single Implements IPneumaticsAuxilliariesConfig.NonSmartRegenFractionTotalAirDemand
-Public Property OverrunUtilisationForCompressionFraction As Single Implements IPneumaticsAuxilliariesConfig.OverrunUtilisationForCompressionFraction
-Public Property PerDoorOpeningNI As Single Implements IPneumaticsAuxilliariesConfig.PerDoorOpeningNI
-Public Property PerStopBrakeActuationNIperKG As Single Implements IPneumaticsAuxilliariesConfig.PerStopBrakeActuationNIperKG
-Public Property SmartRegenFractionTotalAirDemand As Single Implements IPneumaticsAuxilliariesConfig.SmartRegenFractionTotalAirDemand
-
-
-Public Sub New(Optional setToDefaults As Boolean = False)
-
-If setToDefaults Then SetDefaults()
-
-
-End Sub
-
-Public Sub SetDefaults()
-
-     OverrunUtilisationForCompressionFraction = 0.97
-     BrakingWithRetarderNIperKG = 0.0005
-     BrakingNoRetarderNIperKG = 0.00081
-     BreakingPerKneelingNIperKGinMM = 0.000066
-     PerDoorOpeningNI = 12.7
-     PerStopBrakeActuationNIperKG = 0.00064
-     AirControlledSuspensionNIperMinute = 15
-     AdBlueNIperMinute = 21.25
-     NonSmartRegenFractionTotalAirDemand = 0.26
-     SmartRegenFractionTotalAirDemand = 0.12
-     DeadVolumeLitres = 30
-     DeadVolBlowOutsPerLitresperHour = 24
-
-End Sub
+        Public Property AdBlueNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AdBlueNIperMinute
+        Public Property AirControlledSuspensionNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AirControlledSuspensionNIperMinute
+        Public Property BrakingNoRetarderNIperKG As Single Implements IPneumaticsAuxilliariesConfig.BrakingNoRetarderNIperKG
+        Public Property BrakingWithRetarderNIperKG As Single Implements IPneumaticsAuxilliariesConfig.BrakingWithRetarderNIperKG
+        Public Property BreakingPerKneelingNIperKGinMM As Single Implements IPneumaticsAuxilliariesConfig.BreakingPerKneelingNIperKGinMM
+        Public Property DeadVolBlowOutsPerLitresperHour As Single Implements IPneumaticsAuxilliariesConfig.DeadVolBlowOutsPerLitresperHour
+        Public Property DeadVolumeLitres As Single Implements IPneumaticsAuxilliariesConfig.DeadVolumeLitres
+        Public Property NonSmartRegenFractionTotalAirDemand As Single Implements IPneumaticsAuxilliariesConfig.NonSmartRegenFractionTotalAirDemand
+        Public Property OverrunUtilisationForCompressionFraction As Single Implements IPneumaticsAuxilliariesConfig.OverrunUtilisationForCompressionFraction
+        Public Property PerDoorOpeningNI As Single Implements IPneumaticsAuxilliariesConfig.PerDoorOpeningNI
+        Public Property PerStopBrakeActuationNIperKG As Single Implements IPneumaticsAuxilliariesConfig.PerStopBrakeActuationNIperKG
+        Public Property SmartRegenFractionTotalAirDemand As Single Implements IPneumaticsAuxilliariesConfig.SmartRegenFractionTotalAirDemand
+
+
+        Public Sub New(Optional setToDefaults As Boolean = False)
+
+            If setToDefaults Then SetDefaults()
+
+        End Sub
+
+        Public Sub SetDefaults()
+            AdBlueNIperMinute = 21.25
+            AirControlledSuspensionNIperMinute = 15
+            BrakingNoRetarderNIperKG = 0.00081
+            BrakingWithRetarderNIperKG = 0.0006
+            BreakingPerKneelingNIperKGinMM = 0.000066
+            DeadVolBlowOutsPerLitresperHour = 24
+            DeadVolumeLitres = 30
+            NonSmartRegenFractionTotalAirDemand = 0.26
+            OverrunUtilisationForCompressionFraction = 0.97
+            PerDoorOpeningNI = 12.7
+            PerStopBrakeActuationNIperKG = 0.00064
+            SmartRegenFractionTotalAirDemand = 0.12
+        End Sub
 
 
 End Class
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb
index ca25c9f817..4d1d2d4557 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb
+++ b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb
@@ -557,7 +557,7 @@ Public Class frmHVACTool
         IsTextBoxNumber(txtAH_FuelFiredHeaterkW, "Please enter a number ( Fuel fired heater )", result)
 
         Try
-            Dim environmentalConditionsMap As IEnvironmentalConditionsMap = New EnvironmentalConditionsMap(txtEC_EnvironmentConditionsFilePath.Tag)
+            Dim environmentalConditionsMap As IEnvironmentalConditionsMap = New EnvironmentalConditionsMap(txtEC_EnvironmentConditionsFilePath.Tag, fPATH(vectoFile))
             ErrorProvider1.SetError(txtEC_EnvironmentConditionsFilePath, String.Empty)
             ssmTOOL.GenInputs.EC_EnviromentalConditions_BatchFile = txtEC_EnvironmentConditionsFilePath.Tag
         Catch ex As Exception
@@ -1204,7 +1204,7 @@ Public Class frmHVACTool
         tl.Category = StrConv(cboCategory.Text, vbProperCase)
         tl.BenefitName = txtBenefitName.Text
         tl.Units = cboUnits.Text
-        tl.LineType = If(cboLineType.Text = "Normal", 0, 3)
+        tl.LineType = If(cboLineType.Text = "Normal", 0, 1)
         tl.LowFloorH = txtLowFloorH.Text
         tl.LowFloorV = txtLowFloorV.Text
         tl.LowFloorC = txtLowFloorC.Text
-- 
GitLab