From 5d92b56a5c7bafe07af8fd9f170765944616844b Mon Sep 17 00:00:00 2001
From: Raphael Luz <luz@ivt.tugraz.at>
Date: Wed, 4 Feb 2015 08:58:33 +0100
Subject: [PATCH] - Pwheel input in driving cycle. Overwrites Pwheel
 calculation.

---
 VECTO/Input Files/cDRI.vb |   6 +++
 VECTO/MODcalc/cMOD.vb     |  37 +++++++++----
 VECTO/MODcalc/cPower.vb   | 106 ++++++++++++++++++++++++++++----------
 VECTO/MODcalc/cVh.vb      |  33 ++++++++++--
 VECTO/M_MAIN.vb           |  15 ++++--
 VECTO/VECTO_Global.vb     |   5 +-
 VECTO/VECTO_Types.vb      |   1 +
 VECTO/cVSUM.vb            |  88 +++++++++++++------------------
 8 files changed, 192 insertions(+), 99 deletions(-)

diff --git a/VECTO/Input Files/cDRI.vb b/VECTO/Input Files/cDRI.vb
index 899209c01a..91b0f2e397 100644
--- a/VECTO/Input Files/cDRI.vb	
+++ b/VECTO/Input Files/cDRI.vb	
@@ -58,6 +58,9 @@ Public Class cDRI
     ''' <remarks></remarks>
     Public Pvorg As Boolean
 
+
+    Public PwheelVorg As Boolean
+
     ''' <summary>
     ''' True= Cycle includes additional auxiliary power demand (not to be confused with auxiliary supply power). Defined in ReadFile.
     ''' </summary>
@@ -125,6 +128,7 @@ Public Class cDRI
         Nvorg = False
         Gvorg = False
         Pvorg = False
+        PwheelVorg = False
         tDim = -1
         t0 = 1  'Default if no time steps are defined in driving cycle
         AuxDef = False
@@ -196,6 +200,7 @@ Public Class cDRI
         DRIcheck.Add(tDriComp.s, False)
         DRIcheck.Add(tDriComp.StopTime, False)
         DRIcheck.Add(tDriComp.Torque, False)
+        DRIcheck.Add(tDriComp.Pwheel, False)
 
         If file.EndOfFile Then
             WorkerMsg(tMsgID.Err, "Driving cycle invalid!", MsgSrc)
@@ -276,6 +281,7 @@ Public Class cDRI
         GradVorg = DRIcheck(tDriComp.Grad)
         VairVorg = DRIcheck(tDriComp.VairVres) And DRIcheck(tDriComp.VairBeta)
         Mvorg = DRIcheck(tDriComp.Torque)
+        PwheelVorg = DRIcheck(tDriComp.Pwheel)
 
         If Mvorg And Pvorg Then
             WorkerMsg(tMsgID.Warn, "Engine torque and power defined in cycle! Torque will be ignored!", MsgSrc)
diff --git a/VECTO/MODcalc/cMOD.vb b/VECTO/MODcalc/cMOD.vb
index 23fc42ae09..212640681c 100644
--- a/VECTO/MODcalc/cMOD.vb
+++ b/VECTO/MODcalc/cMOD.vb
@@ -618,18 +618,37 @@ Public Class cMOD
 
                 If Not VEC.EngOnly Then
 
-                    'distance
-                    dist += .Vh.V(t)
-                    s.Append(Sepp & dist)
+                    If DRI.Vvorg Then
 
-                    'Actual-speed.
-                    s.Append(Sepp & .Vh.V(t) * 3.6)
+                        'distance
+                        dist += .Vh.V(t)
+                        s.Append(Sepp & dist)
 
-                    'Target-speed
-                    s.Append(Sepp & .Vh.Vsoll(t) * 3.6)
+                        'Actual-speed.
+                        s.Append(Sepp & .Vh.V(t) * 3.6)
+
+                        'Target-speed
+                        s.Append(Sepp & .Vh.Vsoll(t) * 3.6)
+
+                        'Acc.
+                        s.Append(Sepp & .Vh.a(t))
+
+                    Else
+
+                        'distance
+                        s.Append(Sepp & "-")
+
+                        'Actual-speed.
+                        s.Append(Sepp & "-")
+
+                        'Target-speed
+                        s.Append(Sepp & "-")
+
+                        'Acc.
+                        s.Append(Sepp & "-")
+
+                    End If
 
-                    'Acc.
-                    s.Append(Sepp & .Vh.a(t))
 
                     'Slope
                     s.Append(Sepp & .Grad(t))
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 76a5cb3d32..28f846d15b 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -45,6 +45,9 @@ Public Class cPower
 
     Private EngSideInertia As Single
 
+    Private PwheelVorg As Boolean
+
+
     Public Function PreRun() As Boolean
         Dim i As Integer
         Dim i0 As Integer
@@ -492,11 +495,13 @@ Public Class cPower
         MsgSrc = "Power/Calc"
 
         'Abort if no speed given
-        If Not DRI.Vvorg Then
-            WorkerMsg(tMsgID.Err, "Driving cycle is not valid! Vehicle Speed required.", MsgSrc)
+        If Not DRI.Vvorg And Not (DRI.PwheelVorg And DRI.Nvorg And DRI.Gvorg) Then
+            WorkerMsg(tMsgID.Err, "Driving cycle is not valid! Vehicle Speed required or Pwheel + Gear + Engine Speed.", MsgSrc)
             Return False
         End If
 
+        PwheelVorg = DRI.PwheelVorg
+
         'Messages
         If Not Cfg.DistCorr Then WorkerMsg(tMsgID.Warn, "Distance Correction is disabled!", MsgSrc)
 
@@ -579,8 +584,11 @@ lbGschw:
 
             'Calculate Speed​/Acceleration -------------------
             'Now through DRI-class
-            Vact = Vh.V(jz)
-            aact = Vh.a(jz)
+
+            If Not PwheelVorg Then
+                Vact = Vh.V(jz)
+                aact = Vh.a(jz)
+            End If
 
             'distance 
             dist = dist0 + Vact
@@ -638,23 +646,37 @@ lbGschw:
             End If
             '---------------
 
+   
+            'Power demand at wheels
+            Pwheel = fPwheel(jz, Vh.fGrad(dist))
+
             'Determine Driving-state  -------------------------
             Pplus = False
             Pminus = False
-
-            If Vact < 0.0001 Then
-                VehState0 = tVehState.Stopped
+            If PwheelVorg Then
+                Select Case Pwheel
+                    Case Is > 0.0001
+                        VehState0 = tVehState.Acc
+                    Case Is < -0.0001
+                        VehState0 = tVehState.Dec
+                    Case Else
+                        VehState0 = tVehState.Stopped
+                End Select
             Else
-                If aact >= 0.01 Then
-                    VehState0 = tVehState.Acc
-                ElseIf aact < -0.01 Then
-                    VehState0 = tVehState.Dec
+                If Vact < 0.0001 Then
+                    VehState0 = tVehState.Stopped
                 Else
-                    VehState0 = tVehState.Cruise
+                    If aact >= 0.01 Then
+                        VehState0 = tVehState.Acc
+                    ElseIf aact < -0.01 Then
+                        VehState0 = tVehState.Dec
+                    Else
+                        VehState0 = tVehState.Cruise
+                    End If
                 End If
+
             End If
 
-            Pwheel = fPwheel(jz, Vh.fGrad(dist))
 
             Select Case Pwheel
                 Case Is > 0.0001
@@ -695,7 +717,7 @@ lbGschw:
             Else
 
                 'Check whether Clutch will slip (important for Gear-shifting model):
-                If Not GBX.TCon AndAlso fnn(Vact, 1, False) < ClutchNorm And Pplus Then
+                If Not GBX.TCon AndAlso fnn(Vact, 1, False) < ClutchNorm And Pplus And Not PwheelVorg Then
                     Clutch = tEngClutch.Slipping
                 Else
                     Clutch = tEngClutch.Closed
@@ -730,7 +752,7 @@ lbGschw:
 
                 Else
 
-                    If Not GBX.TCon AndAlso fnn(Vact, Gear, False) < ClutchNorm And Pplus And Not VehState0 = tVehState.Dec Then
+                    If Not GBX.TCon AndAlso fnn(Vact, Gear, False) < ClutchNorm And Pplus And Not VehState0 = tVehState.Dec And Not PwheelVorg Then
                         Clutch = tEngClutch.Slipping
                     Else
                         Clutch = tEngClutch.Closed
@@ -933,6 +955,10 @@ lb_nOK:
             '************************************ Determine Engine-state ************************************
             ' nU is final here!
 
+            If PwheelVorg Then
+                Vact = fV(nU, Gear)
+            End If
+
             'Power at clutch
             Select Case Clutch
                 Case tEngClutch.Opened
@@ -1128,7 +1154,9 @@ lb_nOK:
             'Check whether P above Full-load => Reduce Speed
             If P > Pmax Then
                 If EngState0 = tEngState.Load Or EngState0 = tEngState.FullLoad Then
-                    If Vact > 0.01 Then
+                    If PwheelVorg Then
+                        P = Pmax
+                    ElseIf Vact > 0.01 Then
                         Vh.ReduceSpeed(jz, 0.9999)
                         FirstSecItar = False
                         GoTo lbGschw
@@ -1137,6 +1165,7 @@ lb_nOK:
                         WorkerMsg(tMsgID.Err, "Speed reduction failed!", MsgSrc & "/t= " & jz + 1)
                         Return False
                     End If
+
                 Else 'tEngState.Idle, tEngState.Stopped, tEngState.Drag
                     'ERROR:  Engine not in Drivetrain ... can it be?
                     If FirstSecItar Then
@@ -1165,11 +1194,12 @@ lb_nOK:
                             TracIntrIs = 1
                         End If
 
-                        Vrollout = fRolloutSpeed(jz, TracIntrIs, Vh.fGrad(dist))
-
-                        If Vrollout < Vact Or VehState0 <> tVehState.Dec Then Vh.SetSpeed(jz, Vrollout)
+                        If Not PwheelVorg Then
+                            Vrollout = fRolloutSpeed(jz, TracIntrIs, Vh.fGrad(dist))
+                            If Vrollout < Vact Or VehState0 <> tVehState.Dec Then Vh.SetSpeed(jz, Vrollout)
+                            GoTo lbGschw
+                        End If
 
-                        GoTo lbGschw
 
                     End If
 
@@ -1211,10 +1241,18 @@ lb_nOK:
 
             MODdata.EngState.Add(EngState0)
 
-            MODdata.Pa.Add(fPaFZ(MODdata.Vh.V(jz), MODdata.Vh.a(jz)))
-            MODdata.Pair.Add(fPair(MODdata.Vh.V(jz), jz))
-            MODdata.Proll.Add(fPr(MODdata.Vh.V(jz), Vh.fGrad(dist)))
-            MODdata.Pstg.Add(fPs(MODdata.Vh.V(jz), Vh.fGrad(dist)))
+            If DRI.PwheelVorg Then
+                MODdata.Pa.Add(0)
+                MODdata.Pair.Add(0)
+                MODdata.Proll.Add(0)
+                MODdata.Pstg.Add(0)
+            Else
+                MODdata.Pa.Add(fPaFZ(MODdata.Vh.V(jz), MODdata.Vh.a(jz)))
+                MODdata.Pair.Add(fPair(MODdata.Vh.V(jz), jz))
+                MODdata.Proll.Add(fPr(MODdata.Vh.V(jz), Vh.fGrad(dist)))
+                MODdata.Pstg.Add(fPs(MODdata.Vh.V(jz), Vh.fGrad(dist)))
+            End If
+
             MODdata.Pbrake.Add(Pbrake)
             MODdata.Psum.Add(Pwheel)
             MODdata.PauxSum.Add(Paux)
@@ -1289,14 +1327,18 @@ lb_nOK:
                         TracIntrIs = 1
                     End If
 
-                    Vrollout = fRolloutSpeed(jz + 1, TracIntrIs, Vh.fGrad(dist))
-                    If Vrollout < Vh.V(jz + 1) Or VehState0 <> tVehState.Dec Then Vh.SetSpeed(jz + 1, Vrollout)
+                    If Not PwheelVorg Then
+                        Vrollout = fRolloutSpeed(jz + 1, TracIntrIs, Vh.fGrad(dist))
+                        If Vrollout < Vh.V(jz + 1) Or VehState0 <> tVehState.Dec Then Vh.SetSpeed(jz + 1, Vrollout)
+                    End If
 
                 End If
 
             End If
 
-            If Vh.Vsoll(jz) - Vact > 1.5 Then SecSpeedRed += 1
+            If Not PwheelVorg Then
+                If Vh.Vsoll(jz) - Vact > 1.5 Then SecSpeedRed += 1
+            End If
 
 
             LastGearChange = -1
@@ -2224,6 +2266,10 @@ lb10:
         Return U
     End Function
 
+    Private Function fV(ByVal nU As Single, ByVal Gear As Integer) As Single
+        Return nU * (2 * VEH.rdyn * Math.PI / 1000) / (60.0 * GBX.Igetr(0) * GBX.Igetr(Gear))
+    End Function
+
     Private Function fnUout(ByVal V As Single, ByVal Gear As Integer) As Single
         Return V * 60.0 * GBX.Igetr(0) * GBX.Igetr(Gear) / (2 * VEH.rdyn * Math.PI / 1000)
     End Function
@@ -2234,7 +2280,11 @@ lb10:
 
     '--------------Power before Diff = At Wheel -------------
     Private Function fPwheel(ByVal t As Integer, ByVal Grad As Single) As Single
-        Return fPr(MODdata.Vh.V(t), Grad) + fPair(MODdata.Vh.V(t), t) + fPaFZ(MODdata.Vh.V(t), MODdata.Vh.a(t)) + fPs(MODdata.Vh.V(t), Grad)
+        If PwheelVorg Then
+            Return MODdata.Vh.Pwheel(t)
+        Else
+            Return fPr(MODdata.Vh.V(t), Grad) + fPair(MODdata.Vh.V(t), t) + fPaFZ(MODdata.Vh.V(t), MODdata.Vh.a(t)) + fPs(MODdata.Vh.V(t), Grad)
+        End If
     End Function
 
     Private Function fPwheel(ByVal t As Integer, ByVal v As Single, ByVal a As Single, ByVal Grad As Single) As Single
diff --git a/VECTO/MODcalc/cVh.vb b/VECTO/MODcalc/cVh.vb
index ca257cd9ef..e83d0cc55c 100644
--- a/VECTO/MODcalc/cVh.vb
+++ b/VECTO/MODcalc/cVh.vb
@@ -20,6 +20,7 @@ Public Class cVh
     Private lPadd As List(Of Single)
     Private lVairVres As List(Of Single)
     Private lVairBeta As List(Of Single)
+    Public Pwheel As List(Of Single)
     Public EcoRoll As List(Of Boolean)
 
     'Calculated
@@ -50,6 +51,7 @@ Public Class cVh
         Weg = New List(Of Double)
         lVairVres = New List(Of Single)
         lVairBeta = New List(Of Single)
+        Pwheel = New List(Of Single)
         EcoRoll = New List(Of Boolean)
         NoDistCorr = New List(Of Boolean)
         iAlt = 1
@@ -69,6 +71,7 @@ Public Class cVh
         lVairVres = Nothing
         lVairBeta = Nothing
         EcoRoll = Nothing
+        Pwheel = Nothing
         NoDistCorr = Nothing
     End Sub
 
@@ -111,7 +114,7 @@ Public Class cVh
         End If
 
         'Altitude / distance
-        If Not DRI.Scycle Then
+        If Not DRI.Scycle And DRI.Vvorg Then
             L = DRI.Values(tDriComp.Alt)
             lAlt0.Add(0)
             ls0.Add(lV0(0))
@@ -178,6 +181,13 @@ Public Class cVh
 
         End If
 
+        If DRI.PwheelVorg Then
+            L = DRI.Values(tDriComp.Pwheel)
+            For s = 0 To MODdata.tDim
+                Pwheel.Add(L(s))
+            Next
+        End If
+
         For s = 0 To MODdata.tDim
             EcoRoll.Add(False)
             NoDistCorr.Add(False)
@@ -356,9 +366,17 @@ Public Class cVh
         End If
     End Sub
 
-    Public Sub DistCorrInit()
+    Public Function DistCorrInit() As Boolean
         Dim i As Int16
 
+        If Not Cfg.DistCorr Then Return True
+
+        If Not DRI.Vvorg Then
+            WorkerMsg(tMsgID.Err, "Distance Correction not possible without speed input!", "DistCorrInit")
+            Return False
+        End If
+
+
         WegX = 0
         dWegIst = 0
 
@@ -368,11 +386,15 @@ Public Class cVh
             WegV.Add(lV0(i))
         Next
 
-    End Sub
+        Return True
+
+    End Function
 
     Public Function DistCorrection(ByVal t As Integer, ByVal VehState As tVehState) As Boolean
         Dim v As Single
 
+        If Not DRI.Vvorg Then Return False
+
         v = lV(t)
         dWegIst += v
 
@@ -441,6 +463,7 @@ Public Class cVh
         lGears.Insert(t, lGears(t))
         lPadd.Insert(t, lPadd(t))
         EcoRoll.Insert(t, EcoRoll(t))
+        Pwheel.Insert(t, Pwheel(t))
         NoDistCorr.Insert(t, NoDistCorr(t))
 
         If DRI.VairVorg Then
@@ -471,6 +494,7 @@ Public Class cVh
         lGears.Insert(t, lGears(t))
         lPadd.Insert(t, lPadd(t))
         EcoRoll.Insert(t, EcoRoll(t))
+        Pwheel.Insert(t, Pwheel(t))
         NoDistCorr.Insert(t, NoDistCorr(t))
 
         If DRI.VairVorg Then
@@ -503,6 +527,7 @@ Public Class cVh
         lGears.RemoveAt(t)
         lPadd.RemoveAt(t)
         EcoRoll.RemoveAt(t)
+        Pwheel.RemoveAt(t)
         NoDistCorr.RemoveAt(t)
 
         If DRI.VairVorg Then
@@ -572,6 +597,8 @@ Public Class cVh
         Dim dh As Single
         Dim ds As Single
 
+        If Not DRI.Vvorg Then Return 0
+
         If ls0(0) >= s Then
             i = 1
             GoTo lbInt
diff --git a/VECTO/M_MAIN.vb b/VECTO/M_MAIN.vb
index 33953d1ead..7862ed8fa6 100644
--- a/VECTO/M_MAIN.vb
+++ b/VECTO/M_MAIN.vb
@@ -439,9 +439,11 @@ lbSkip0:
 
                        
                             If MsgOut Then WorkerMsg(tMsgID.Normal, "Driving Cycle Preprocessing", MsgSrc)
-                            If Not MODdata.Px.PreRun Then
-                                CyclAbrtedByErr = True
-                                GoTo lbAusg
+                            If DRI.Vvorg Then
+                                If Not MODdata.Px.PreRun Then
+                                    CyclAbrtedByErr = True
+                                    GoTo lbAusg
+                                End If
                             End If
 
                             If VECTOworker.CancellationPending Then GoTo lbAbort
@@ -450,7 +452,10 @@ lbSkip0:
 
                             If MsgOut Then WorkerMsg(tMsgID.Normal, "Vehicle Calc", MsgSrc)
 
-                            MODdata.Vh.DistCorrInit()
+                            If Not MODdata.Vh.DistCorrInit() Then
+                                CyclAbrtedByErr = True
+                                GoTo lbAusg
+                            End If
 
                             If Not MODdata.Px.Calc() Then
                                 CyclAbrtedByErr = True
@@ -461,7 +466,7 @@ lbSkip0:
                             If VECTOworker.CancellationPending Then GoTo lbAbort
 
                             'Calculate CycleKin (for erg/sum, etc.)
-                            MODdata.CylceKin.Calc()
+                            If DRI.Vvorg Then MODdata.CylceKin.Calc()
 
                         End If
                         '----------------------------------------------------------------------------
diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb
index e1a4a4ad24..ffe16bd9dd 100644
--- a/VECTO/VECTO_Global.vb
+++ b/VECTO/VECTO_Global.vb
@@ -12,7 +12,7 @@ Imports System.Collections.Generic
 
 Module VECTO_Global
 
-    Public Const VECTOvers As String = "2.0.4-beta3"
+    Public Const VECTOvers As String = "2.0.4-beta3 PwheelTest-1"
     Public Const LicSigAppCode As String = "VECTO-Release-0093C61E0A2E4BFA9A7ED7E729C56AE4"
     Public MyAppPath As String
     Public MyConfPath As String
@@ -121,6 +121,8 @@ Module VECTO_Global
                 Return tDriComp.Torque
             Case sKey.DRI.Alt
                 Return tDriComp.Alt
+            Case sKey.DRI.Pwheel
+                Return tDriComp.Pwheel
             Case Else
                 Return tDriComp.Undefined
 
@@ -639,6 +641,7 @@ Public Class csKey
         Public s As String = "<S>"
         Public StopTime As String = "<STOP>"
         Public Torque As String = "<ME>"
+        Public Pwheel As String = "<PWHEEL>"
     End Class
 
     Public Class csKeyAux
diff --git a/VECTO/VECTO_Types.vb b/VECTO/VECTO_Types.vb
index a9e3c58457..7dd59020ab 100644
--- a/VECTO/VECTO_Types.vb
+++ b/VECTO/VECTO_Types.vb
@@ -67,6 +67,7 @@ Public Enum tDriComp
     s
     StopTime
     Torque
+    Pwheel
 End Enum
 
 Public Enum tVehState
diff --git a/VECTO/cVSUM.vb b/VECTO/cVSUM.vb
index 1a580798b3..70f522d149 100644
--- a/VECTO/cVSUM.vb
+++ b/VECTO/cVSUM.vb
@@ -89,18 +89,21 @@ Class cVSUM
         If Not VEC.EngOnly Then
 
             'Average-Speed. calculation
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Vh.V(t)
-            Next
-            Vquer = 3.6 * sum / (t1 + 1)
-
-            VSUMentries("\\S").ValueString = (Vquer * (t1 + 1) / 3600)
-            VSUMentries("\\V").ValueString = Vquer
+            If DRI.Vvorg Then
+                sum = 0
+                For t = 0 To t1
+                    sum += MODdata.Vh.V(t)
+                Next
+                Vquer = 3.6 * sum / (t1 + 1)
 
-            'altitude change
-            VSUMentries("\\G").ValueString = MODdata.Vh.AltIntp(Vquer * (t1 + 1) / 3.6, False) - MODdata.Vh.AltIntp(0, False)
+                VSUMentries("\\S").ValueString = (Vquer * (t1 + 1) / 3600)
+                VSUMentries("\\V").ValueString = Vquer
 
+                'altitude change
+                VSUMentries("\\G").ValueString = MODdata.Vh.AltIntp(Vquer * (t1 + 1) / 3.6, False) - MODdata.Vh.AltIntp(0, False)
+            
+            End If
+   
             'Auxiliary energy consumption
             If VEC.AuxDef Then
                 For Each key In VEC.AuxPaths.Keys
@@ -118,33 +121,26 @@ Class cVSUM
         'FC
         If MODdata.FCerror Then
 
-            If VEC.EngOnly Then
-                VSUMentries("FC_h").ValueString = "ERROR"
-            Else
-                VSUMentries("FC_km").ValueString = "ERROR"
-            End If
+            VSUMentries("FC_h").ValueString = "ERROR"
+
+            If Not VEC.EngOnly Then VSUMentries("FC_km").ValueString = "ERROR"
 
             If MODdata.FCAUXcSet Then
-                If VEC.EngOnly Then
-                    VSUMentries("FC-AUXc_h").ValueString = "ERROR"
-                Else
-                    VSUMentries("FC-AUXc_km").ValueString = "ERROR"
-                End If
+                VSUMentries("FC-AUXc_h").ValueString = "ERROR"
+                If Not VEC.EngOnly Then VSUMentries("FC-AUXc_km").ValueString = "ERROR"
             End If
 
             If Cfg.DeclMode Then
-                If VEC.EngOnly Then
-                    VSUMentries("FC-WHTCc_h").ValueString = "ERROR"
-                Else
-                    VSUMentries("FC-WHTCc_km").ValueString = "ERROR"
-                End If
+                VSUMentries("FC-WHTCc_h").ValueString = "ERROR"
+                If Not VEC.EngOnly Then VSUMentries("FC-WHTCc_km").ValueString = "ERROR"
             End If
 
         Else
 
-            If VEC.EngOnly Then
-                VSUMentries("FC_h").ValueString = MODdata.FCavg
-            Else
+            VSUMentries("FC_h").ValueString = MODdata.FCavg
+
+            If Not VEC.EngOnly And DRI.Vvorg Then
+
                 VSUMentries("FC_km").ValueString = (MODdata.FCavg / Vquer)
 
                 VSUMentries("FCl_km").ValueString = (100 * MODdata.FCavgFinal / Vquer) / (Cfg.FuelDens * 1000)  '[l/100km]
@@ -160,26 +156,15 @@ Class cVSUM
             End If
 
             If MODdata.FCAUXcSet Then
-                If VEC.EngOnly Then
-                    VSUMentries("FC-AUXc_h").ValueString = MODdata.FCavgAUXc
-                Else
-                    VSUMentries("FC-AUXc_km").ValueString = (MODdata.FCavgAUXc / Vquer)
-                End If
+                VSUMentries("FC-AUXc_h").ValueString = MODdata.FCavgAUXc
+                If Not VEC.EngOnly Then VSUMentries("FC-AUXc_km").ValueString = (MODdata.FCavgAUXc / Vquer)
             End If
 
             If Cfg.DeclMode Then
-                If VEC.EngOnly Then
-                    VSUMentries("FC-WHTCc_h").ValueString = MODdata.FCavgWHTCc
-                Else
-                    VSUMentries("FC-WHTCc_km").ValueString = (MODdata.FCavgWHTCc / Vquer)
-                End If
+                VSUMentries("FC-WHTCc_h").ValueString = MODdata.FCavgWHTCc
+                If Not VEC.EngOnly Then VSUMentries("FC-WHTCc_km").ValueString = (MODdata.FCavgWHTCc / Vquer)
             End If
 
-
-
-
-
-
         End If
 
         'Power, Revolutions
@@ -452,11 +437,7 @@ Class cVSUM
         End If
     End Sub
 
-    ''' <summary>
-    ''' Initializes the specified job file.
-    ''' </summary>
-    ''' <param name="JobFile">The job file.</param>
-    ''' <returns></returns>
+
     Public Function Init(ByVal JobFile As String) As Boolean
         Dim JobFiles As New List(Of String)
         Dim str As String
@@ -640,11 +621,12 @@ Class cVSUM
                 Return False
             End Try
 
-            If VEC0.EngOnly Then
-                AddToVSUM("FC_h", "FC", "[g/h]")
-                AddToVSUM("FC-AUXc_h", "FC-AUXc", "[g/h]")
-                AddToVSUM("FC-WHTCc_h", "FC-WHTCc", "[g/h]")
-            Else
+            AddToVSUM("FC_h", "FCh", "[g/h]")
+            AddToVSUM("FC-AUXc_h", "FCh-AUXc", "[g/h]")
+            AddToVSUM("FC-WHTCc_h", "FCh-WHTCc", "[g/h]")
+
+            If Not VEC0.EngOnly Then
+
                 AddToVSUM("FC_km", "FC", "[g/km]")
                 AddToVSUM("FC-AUXc_km", "FC-AUXc", "[g/km]")
                 AddToVSUM("FC-WHTCc_km", "FC-WHTCc", "[g/km]")
-- 
GitLab