From 176cfc965e58bb033b05061bcaaa5fb27f3bc2ae Mon Sep 17 00:00:00 2001
From: "Burns, Terry" <Terry.Burns@ricardo.com>
Date: Mon, 9 Mar 2015 15:37:27 +0000
Subject: [PATCH] WIP SSMHVAC SAVEPOINT

git-tfs-id: [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C1815
---
 .../VectoAuxiliaries/Hvac/ISSMCalculate.vb    |   8 +
 .../VectoAuxiliaries/Hvac/SSMCalculate.vb     | 335 ++++++++++++++++--
 2 files changed, 317 insertions(+), 26 deletions(-)

diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb
index 2d6a457b08..0be483a350 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb
@@ -6,6 +6,14 @@
        Property Run2 As ISSMRun
 
 
+       ReadOnly Property ElectricalWBase As Single
+       ReadOnly Property MechanicalWBase As Single
+       ReadOnly Property FuelLPerHBase As Single
+       
+       ReadOnly Property ElectricalWAdjusted As Single
+       ReadOnly Property MechanicalWBaseAdjusted As Single
+       ReadOnly Property FuelLPerHBaseAdjusted As Single
+
 
        'BaseValues
        '- Heating
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
index 67d6df7701..fcc8be163d 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
@@ -5,15 +5,12 @@ Public Class SSMCalculate
   Implements ISSMCalculate
 
 
-         Private ssmTOOL As ISSMTOOL
-
-
-         private Property Run1 As ISSMRun Implements ISSMCalculate.Run1
-
-
-        Public  Property Run2 As ISSMRun Implements ISSMCalculate.Run2
-
+        'Private Fields
+        Private  ssmTOOL   As ISSMTOOL
+        Private  Property  Run1  As ISSMRun Implements ISSMCalculate.Run1
+        Private  Property  Run2  As ISSMRun Implements ISSMCalculate.Run2
 
+        'Constructor
         Sub new( ssmTool As ISSMTOOL)
 
           Me.ssmTOOL = ssmTool
@@ -22,7 +19,134 @@ Public Class SSMCalculate
 
         End Sub
 
+        #Region "Main Outputs"
+
+        'BASE RESULTS
+        Public ReadOnly Property ElectricalWBase As Single Implements ISSMCalculate.ElectricalWBase
+            Get
+            '=(SUM(H84)/C33)+SUM(I83:I85)
+
+            Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+
+            'Dim H84  As Double = BaseHeatingW_ElectricalCoolingHeating
+            'Dim C33  As Double = gen.BC_COP   
+            Dim BaseVentilation As Double  =  BaseHeatingW_ElectricalVentilation+ BaseCoolingW_ElectricalVentilation + BaseVentilationW_ElectricalVentilation   ' SUM(I83:I85)        
+
+            Return  (BaseHeatingW_ElectricalCoolingHeating/gen.BC_COP)+BaseVentilation
+
+
+            End Get
+        End Property
+        Public ReadOnly Property MechanicalWBase As Single Implements ISSMCalculate.MechanicalWBase
+            Get
+            '=F84/C33
+
+             Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+            
+            'Dim F84 As Double = BaseCoolingW_Mechanical
+            'Dim C33  As Double = gen.BC_COP 
+
+             Return BaseCoolingW_Mechanical/gen.BC_COP 
+
+            End Get
+        End Property
+        Public ReadOnly Property FuelLPerHBase As Single Implements ISSMCalculate.FuelLPerHBase
+            Get
+
+            '=ABS((J83/1000)*(1/(C36*C35))/C34)
+
+            Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+            'Dim J83 As Double = BaseCoolingW_FuelFiredHeating
+            'Dim C34 As Double = gen.BC_AuxHeaterEfficiency
+            'Dim C35 As Double = gen.BC_GCVDieselOrHeatingOil
+            'Dim C36 As Double = gen.BC_VolumicMassDieselOrHeatingOil
+
+            Return Math.Abs((BaseCoolingW_FuelFiredHeating/1000)*(1/(gen.BC_VolumicMassDieselOrHeatingOil*gen.BC_GCVDieselOrHeatingOil))/gen.BC_AuxHeaterEfficiency)
+
+
+
+            End Get
+        End Property
+
+
+        'ADJUSTED RESULTS
+        Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMCalculate.ElectricalWAdjusted
+            Get
+            '=((H84*(1-H90))/C33)+(I83*(1-I89))+(I84*(1-I90))+(I85*(1-I91)) + IF('TECH LIST INPUT'!D36="electrical",-'TECH LIST INPUT'!R93*1000,0)
 
+               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+               Dim tl As ISSMTechList = ssmTOOL.TechList
+
+               Dim DACElectrical As Boolean = tl.TechLines.Where( Function(f) f.LineType= TechLineType.DriverACElectrical).Count()=1
+               Dim AdjustedAddition As Double =  If( Not DACElectrical,0, tl.CValueVariationKW*1000)
+
+              'Dim H84  As Double = BaseHeatingW_ElectricalCoolingHeating
+              'Dim H90  As Double = TechListAdjustedCoolingW_ElectricalCoolingHeating
+              'Dim C33  As Double = gen.BC_COP 
+              
+              'Dim I83  As Double = BaseHeatingW_ElectricalVentilation
+              'Dim I84  As Double = BaseCoolingW_ElectricalVentilation
+              'Dim I85  As Double = BaseVentilationW_ElectricalVentilation
+              'Dim I89  As Double = TechListAdjustedHeatingW_ElectricalVentilation
+              'Dim I90  As Double = TechListAdjustedCoolingW_ElectricalVentilation
+              'Dim I91  As Double = TechListAdjustedVentilationW_ElectricalVentilation
+
+
+              Return ((BaseHeatingW_ElectricalCoolingHeating*(1-TechListAdjustedCoolingW_ElectricalCoolingHeating))/gen.BC_COP) + _
+                            (BaseHeatingW_ElectricalVentilation*(1-TechListAdjustedHeatingW_ElectricalVentilation))+ _ 
+                            (BaseCoolingW_ElectricalVentilation*(1-TechListAdjustedCoolingW_ElectricalVentilation))+ _ 
+                            (BaseVentilationW_ElectricalVentilation*(1-TechListAdjustedVentilationW_ElectricalVentilation)) +
+                            AdjustedAddition
+
+
+            End Get
+        End Property
+        Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMCalculate.MechanicalWBaseAdjusted
+            Get
+
+              '=(F84*(1-F90)/C33) + IF('TECH LIST INPUT'!D36="mechanical",-'TECH LIST INPUT'!R93*1000,0)
+
+               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+               Dim tl As ISSMTechList = ssmTOOL.TechList
+
+               Dim DACMechanical As Boolean = tl.TechLines.Where( Function(f) f.LineType= TechLineType.DriverACMechanical).Count()=1
+               Dim AdjustedAddition As Double =  If( Not DACMechanical,0, tl.CValueVariationKW*1000)
+
+               Dim F84 As Double  = BaseCoolingW_Mechanical
+               Dim F90 As Double  = TechListAdjustedCoolingW_Mechanical
+               Dim C33 As Double  = gen.BC_COP
+
+               Return (F84*(1-F90)/C33) + AdjustedAddition
+
+            End Get
+
+        End Property
+        Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMCalculate.FuelLPerHBaseAdjusted
+            Get
+            '=ABS((IF(AND(M79<0,M80<0),VLOOKUP(MAX(M79:M80),M79:P80,4),0)/1000)*(1/(C36*C35))/C34)
+
+             Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+
+             Dim C34 As Double = gen.BC_AuxHeaterEfficiency
+             Dim C35 As Double = gen.BC_GCVDieselOrHeatingOil
+             Dim C36 As Double = gen.BC_VolumicMassDieselOrHeatingOil
+             Dim result As Double
+
+             If  Run1.TotalW<0 AndAlso Run1.TotalW<0 then
+                 result = If(Run1.TotalW>Run2.TotalW, Run1.TechListAmendedFuelW, Run2.TechListAmendedFuelW)/1000
+                Else
+                 result = 0
+             End If
+            
+             Return Math.Abs( result * (1/(gen.BC_VolumicMassDieselOrHeatingOil*gen.BC_GCVDieselOrHeatingOil))/gen.BC_AuxHeaterEfficiency  )
+            
+            End Get
+        End Property
+
+
+        #End Region
+
+        #Region "Staging Calculations"
 
         'Base Values
         Public ReadOnly Property BaseHeatingW_Mechanical As Double Implements ISSMCalculate.BaseHeatingW_Mechanical
@@ -32,67 +156,152 @@ Public Class SSMCalculate
         End Property
         Public ReadOnly Property BaseHeatingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseHeatingW_ElectricalCoolingHeating
             Get
-
+               Return  nothing
             End Get
         End Property
         Public ReadOnly Property BaseHeatingW_ElectricalVentilation As Double Implements ISSMCalculate.BaseHeatingW_ElectricalVentilation
             Get
-             Return nothing
-            End Get
-        End Property
-        Public ReadOnly Property BaseHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseHeatingW_FuelFiredHeating
-            Get
-            '=IF(AND(M79<0,M80<0),IF(AND(C52="yes",C56="high"),C30,IF(AND(C52="yes",C56="low"),C31,0)),0)
+              '=IF(AND(M79<0,M80<0),IF(AND(C52="yes",C56="high"),C30,IF(AND(C52="yes",C56="low"),C31,0)),0)
 
-            Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
 
+              'Dim C30 = gen.BC_HighVentPowerW
+              'Dim C31 = gen.BC_LowVentPowerW
+              'Dim C52 = gen.VEN_VentilationONDuringHeating
+              'Dim C56 = gen.VEN_VentilationDuringHeating
+              'Dim M79 = Me.Run1.TotalW
+              'Dim M80 = Me.Run2.TotalW
 
+              Dim res As Double
+              
+              res  = IF( Run1.TotalW <0 AndAlso Run2.TotalW<0  ,  _
+                      IF(gen.VEN_VentilationONDuringHeating AndAlso gen.VEN_VentilationDuringHeating="high" ,  _
+                                        gen.BC_HighVentPowerW,  _
+                                        IF(gen.VEN_VentilationONDuringHeating AndAlso gen.VEN_VentilationDuringHeating="low",gen.BC_LowVentPowerW,0) ),  0)
 
 
+              Return res
 
+            End Get
 
+        End Property
+        Public ReadOnly Property BaseHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseHeatingW_FuelFiredHeating
+
+            Get
+
+               '=IF(AND(M79<0,M80<0),VLOOKUP(MAX(M79:M80),M79:O80,3),0)
+               
+               'Dim M79 = Me.Run1.TotalW
+               'Dim M80 = Me.Run2.TotalW
+               'VLOOKUP(MAX(M79:M80),M79:O80  => VLOOKUP ( lookupValue, tableArray, colIndex, rangeLookup )
+                      
+               'If both Run TotalW values are >=0 then return FuelW from Run with largest TotalW value, else return 0
+               If( Run1.TotalW<0 AndAlso Run2.TotalW <0) then
+               
+                  return  If( Run1.TotalW > Run2.TotalW, Run1.FuelW, Run2.FuelW)
+               
+               Else   
+                    
+                 return   0
+               
+               End If
+                    
             End Get
+
         End Property
 
         Public ReadOnly Property BaseCoolingW_Mechanical As Double Implements ISSMCalculate.BaseCoolingW_Mechanical
             Get
+               '=IF(C48="mechanical", IF(AND(M79>0,M80>0),MIN(M79:M80),0),0)
+
+               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+
+              'Dim C48 = gen.AC_CompressorType 
+              'Dim M79 = Me.Run1.TotalW
+              'Dim M80 = Me.Run2.TotalW
+
+
+              Return IF(gen.AC_CompressorType.ToLower ="mechanical", IF((Run1.TotalW>0 AndAlso Run2.TotalW>0),Math.Min(Run1.TotalW,Run2.TotalW),0),0)
+
+
 
             End Get
         End Property
         Public ReadOnly Property BaseCoolingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseCoolingW_ElectricalCoolingHeating
             Get
+            '=IF(C48="mechanical",0,IF(AND(M79>0,M80>0),MIN(M79:M80),0))
+
+               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+
+               'Dim C48 = gen.AC_CompressorType 
+               'Dim M79 = Me.Run1.TotalW
+               'Dim M80 = Me.Run2.TotalW
+
+
+               Return IF(gen.AC_CompressorType .ToLower="mechanical",0,IF((Run1.TotalW>0 AndAlso Run2.TotalW>0),Math.Min(Run1.TotalW,Run2.TotalW),0))
+
 
             End Get
         End Property
         Public ReadOnly Property BaseCoolingW_ElectricalVentilation As Double Implements ISSMCalculate.BaseCoolingW_ElectricalVentilation
             Get
+             '=IF(AND(M79>0,M80>0),IF(AND(C54="yes",C57="high"),C30,IF(AND(C54="yes",C57="low"),C31,0)),0)
+
+               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+
+               'Dim C30 = gen.BC_HighVentPowerW
+               'Dim C31 = gen.BC_LowVentPowerW
+               'Dim C54 = gen.VEN_VentilationDuringAC
+               'Dim C57 = gen.VEN_VentilationDuringCooling
+               'Dim M79 = Me.Run1.TotalW
+               'Dim M80 = Me.Run2.TotalW
+
+
+               Return IF(Run1.TotalW>0 AndAlso Run2.TotalW>0, _
+                           IF(gen.VEN_VentilationDuringAC AndAlso gen.VEN_VentilationDuringCooling.ToLower="high",gen.BC_HighVentPowerW, _
+                                    IF(gen.VEN_VentilationDuringAC AndAlso gen.VEN_VentilationDuringCooling.ToLower="low",gen.BC_LowVentPowerW,0)),0)
+
 
             End Get
         End Property
         Public ReadOnly Property BaseCoolingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseCoolingW_FuelFiredHeating
             Get
-
+               Return  0
             End Get
         End Property
 
         Public ReadOnly Property BaseVentilationW_Mechanical As Double Implements ISSMCalculate.BaseVentilationW_Mechanical
             Get
-
+             Return nothing
             End Get
         End Property
         Public ReadOnly Property BaseVentilationW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseVentilationW_ElectricalCoolingHeating
             Get
-
+              Return nothing
             End Get
         End Property
         Public ReadOnly Property BaseVentilationW_ElectricalVentilation As Double Implements ISSMCalculate.BaseVentilationW_ElectricalVentilation
             Get
+             '=IF(AND(M79>0,M80<0),IF(AND(C53="yes",C55="high"),C30,IF(AND(C53="yes",C55="low"),C31,0)),0)
+
+             Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+
+            'Dim C30 = gen.BC_HighVentPowerW
+            'Dim C31 = gen.BC_LowVentPowerW
+            'Dim C53 = gen.VEN_VentilationWhenBothHeatingAndACInactive
+            'Dim C55 = gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive
+            'Dim M79 = Me.Run1.TotalW
+            'Dim M80 = Me.Run2.TotalW
+
+
+             Return IF((Run1.TotalW>0 AndAlso Run2.TotalW<0), IF(gen.VEN_VentilationWhenBothHeatingAndACInactive AndAlso gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive.ToLower="high",gen.BC_HighVentPowerW, _
+                               IF(gen.VEN_VentilationWhenBothHeatingAndACInactive AndAlso gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive.ToLower="low",gen.BC_LowVentPowerW,0)),0)
 
             End Get
         End Property
         Public ReadOnly Property BaseVentilationW_FuelFiredHeating As Double Implements ISSMCalculate.BaseVentilationW_FuelFiredHeating
             Get
-
+             Return 0
             End Get
         End Property
 
@@ -100,67 +309,141 @@ Public Class SSMCalculate
         'Adjusted Values
         Public ReadOnly Property TechListAdjustedHeatingW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedHeatingW_Mechanical
             Get
-
+             Return nothing
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedHeatingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedHeatingW_ElectricalCoolingHeating
             Get
-
+             Return nothing
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedHeatingW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedHeatingW_ElectricalVentilation
             Get
+            '=IF('TECH LIST INPUT'!O92>0,MIN('TECH LIST INPUT'!O92,C40),MAX('TECH LIST INPUT'!O92,-C40))
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList   = ssmTOOL.TechList
+
+             'TECH LIST INPUT'!O92
+             'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+             'Dim TLO92 As Double = tl.VHValueVariation
+
+
+             Return IF(tl.VHValueVariation>0,Math.MIN(tl.VHValueVariation,gen.BC_MaxPossibleBenefitFromTechnologyList),Math.MAX(tl.VHValueVariation,-gen.BC_MaxPossibleBenefitFromTechnologyList))
 
             End Get
+
         End Property
         Public ReadOnly Property TechListAdjustedHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedHeatingW_FuelFiredHeating
             Get
+            '=IF('TECH LIST INPUT'!N92>0,MIN('TECH LIST INPUT'!N92,C40),MAX('TECH LIST INPUT'!N92,-C40))
+
+
+              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+              Dim tl As ISSMTechList   = ssmTOOL.TechList
+
+             'TECH LIST INPUT'!N92
+             'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+             'Dim TLN92 As Double =  tl.HValueVariation
+
+
+             Return IF(tl.HValueVariation>0,Math.MIN(tl.HValueVariation,gen.BC_MaxPossibleBenefitFromTechnologyList),Math.MAX(tl.HValueVariation,-gen.BC_MaxPossibleBenefitFromTechnologyList))
+
 
             End Get
+
         End Property
 
         Public ReadOnly Property TechListAdjustedCoolingW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedCoolingW_Mechanical
             Get
+              '=IF(IF(C48="mechanical",'TECH LIST INPUT'!R92,0)>0,MIN(IF(C48="mechanical",'TECH LIST INPUT'!R92,0),C40),MAX(IF(C48="mechanical",'TECH LIST INPUT'!R92,0),-C40))
+
+              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+              Dim tl As ISSMTechList   = ssmTOOL.TechList
+
+              'Dim TLR92 As Double =  tl.CValueVariation 'TECH LIST INPUT'!R92
+              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+              'Dim C48 As string   =  gen.AC_CompressorType
+
+              Return IF(   IF(gen.AC_CompressorType.ToLower="mechanical",tl.CValueVariation,0)>0, _
+                              Math.MIN(IF(gen.AC_CompressorType="mechanical",tl.CValueVariation,0),gen.BC_MaxPossibleBenefitFromTechnologyList), _
+                              Math.MAX(IF(gen.AC_CompressorType="mechanical",tl.CValueVariation,0),-gen.BC_MaxPossibleBenefitFromTechnologyList))
 
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedCoolingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedCoolingW_ElectricalCoolingHeating
             Get
+            '=IF(IF(C48="mechanical",0,'TECH LIST INPUT'!R92)>0,MIN(IF(C48="mechanical",0,'TECH LIST INPUT'!R92),C40),MAX(IF(C48="mechanical",0,'TECH LIST INPUT'!R92),-C40))
+
+            
+              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+              Dim tl As ISSMTechList   = ssmTOOL.TechList
+
+              'Dim TLR92 As Double =  tl.CValueVariation 'TECH LIST INPUT'!R92
+              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+              'Dim C48 As string   =  gen.AC_CompressorType
+
+              Return IF(IF(gen.AC_CompressorType.ToLower="mechanical",0,tl.CValueVariation)>0, _
+                            Math.MIN(IF(gen.AC_CompressorType.ToLower="mechanical",0,tl.CValueVariation),gen.BC_MaxPossibleBenefitFromTechnologyList), _
+                            Math.MAX(IF(gen.AC_CompressorType.ToLower="mechanical",0,tl.CValueVariation),-gen.BC_MaxPossibleBenefitFromTechnologyList))
+
 
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedCoolingW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedCoolingW_ElectricalVentilation
             Get
 
+              '=IF('TECH LIST INPUT'!Q92>0,MIN('TECH LIST INPUT'!Q92,C40),MAX('TECH LIST INPUT'!Q92,-C40))
+                      
+              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+              Dim tl As ISSMTechList   = ssmTOOL.TechList
+
+              'Dim TLQ92 As Double =  tl.VCValueVariation'TECH LIST INPUT'!Q92
+              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+
+               Return IF(tl.VCValueVariation>0, _
+                      Math.MIN(tl.VCValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), _
+                      Math.MAX(tl.VCValueVariation,-gen.BC_MaxPossibleBenefitFromTechnologyList))
+
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedCoolingW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedCoolingW_FuelFiredHeating
             Get
-
+             Return 0
             End Get
         End Property
 
         Public ReadOnly Property TechListAdjustedVentilationW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedVentilationW_Mechanical
             Get
-
+             Return nothing
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedVentilationW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedVentilationW_ElectricalCoolingHeating
             Get
-
+             Return nothing
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedVentilationW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedVentilationW_ElectricalVentilation
             Get
+            '=IF('TECH LIST INPUT'!P92>0,MIN('TECH LIST INPUT'!P92,C40),MAX('TECH LIST INPUT'!P92,-C40))
+
+              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+              Dim tl As ISSMTechList   = ssmTOOL.TechList
+
+              'Dim TLP92 As Double =  tl.VVValueVariation  'TECH LIST INPUT'!P92
+              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+
+
+              Return IF(tl.VVValueVariation>0,Math.MIN(tl.VVValueVariation,gen.BC_MaxPossibleBenefitFromTechnologyList),Math.MAX(tl.VVValueVariation,-gen.BC_MaxPossibleBenefitFromTechnologyList))
 
             End Get
         End Property
         Public ReadOnly Property TechListAdjustedVentilationW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedVentilationW_FuelFiredHeating
             Get
-
+              Return 0
             End Get
         End Property
 
+        #End Region 
 
 
 End Class
-- 
GitLab