From a1917869d314962de0e978e146d24cdc89063b7f Mon Sep 17 00:00:00 2001
From: Dippold Martin <dippold@ivt.tugraz.at>
Date: Tue, 9 Jun 2015 13:03:45 +0200
Subject: [PATCH] * new criteria delta_n_eng for LS/HS included

---
 CSE/CSE_Globals.vb                       |  55 +++++++
 CSE/Calculation/Signal_identification.vb |  38 ++++-
 CSE/Calculation/main_calculation_call.vb |  27 ++--
 CSE/Calculation/sub_linear_regression.vb |  14 +-
 CSE/GUI/F_Main.Designer.vb               | 192 ++++++++++++++++-------
 CSE/GUI/F_Main.vb                        |   4 +
 CSE/IO/cCriteria.vb                      |  18 ++-
 CSE/IO/output.vb                         |   6 +
 8 files changed, 272 insertions(+), 82 deletions(-)

diff --git a/CSE/CSE_Globals.vb b/CSE/CSE_Globals.vb
index cc7bee0..54f3f13 100644
--- a/CSE/CSE_Globals.vb
+++ b/CSE/CSE_Globals.vb
@@ -80,6 +80,9 @@ Module CSE_Globals
         t_amp_stat
         p_amp_stat
         rh_stat
+        n_eng
+        n_eng_1s
+        n_eng_float
     End Enum
 
     Public Enum tCompErg
@@ -103,6 +106,12 @@ Module CSE_Globals
         used
         calcT
         n_eng
+        n_eng_1s
+        n_eng_float
+        n_eng_1s_max
+        n_eng_1s_min
+        n_eng_float_max
+        n_eng_float_min
         v_wind_avg
         v_wind_1s
         v_wind_1s_max
@@ -151,7 +160,9 @@ Module CSE_Globals
         val_tq_1s
         val_beta
         val_dist
+        val_n_eng
         CdxAß_singleDS
+        r_dyn
     End Enum
 
     Public Enum tCompErgReg
@@ -442,6 +453,12 @@ Module CSE_Globals
                 Return "p_amp_stat"
             Case tCompCali.rh_stat
                 Return "rh_stat"
+            Case tCompCali.n_eng
+                Return "n_eng"
+            Case tCompCali.n_eng_1s
+                Return "n_eng_1s"
+            Case tCompCali.n_eng_float
+                Return "n_eng_float"
             Case Else
                 Return "ERROR"
         End Select
@@ -525,6 +542,12 @@ Module CSE_Globals
                 Return "[mbar]"
             Case tCompCali.rh_stat
                 Return "[%]"
+            Case tCompCali.n_eng
+                Return "[rpm]"
+            Case tCompCali.n_eng_1s
+                Return "[rpm]"
+            Case tCompCali.n_eng_float
+                Return "[rpm]"
             Case Else
                 Return "ERROR"
         End Select
@@ -572,6 +595,18 @@ Module CSE_Globals
                 Return "calcT"
             Case tCompErg.n_eng
                 Return "n_eng"
+            Case tCompErg.n_eng_1s
+                Return "n_eng_1s"
+            Case tCompErg.n_eng_float
+                Return "n_eng_float"
+            Case tCompErg.n_eng_1s_max
+                Return "n_eng_1s_max"
+            Case tCompErg.n_eng_1s_min
+                Return "n_eng_1s_min"
+            Case tCompErg.n_eng_float_max
+                Return "n_eng_float_max"
+            Case tCompErg.n_eng_float_min
+                Return "n_eng_float_min"
             Case tCompErg.v_wind_avg
                 Return "v_wind_avg"
             Case tCompErg.v_wind_1s
@@ -668,8 +703,12 @@ Module CSE_Globals
                 Return "val_beta"
             Case tCompErg.val_dist
                 Return "val_dist"
+            Case tCompErg.val_n_eng
+                Return "val_n_eng"
             Case tCompErg.CdxAß_singleDS
                 Return "CdxA(ß)_singleDS"
+            Case tCompErg.r_dyn
+                Return "r_dyn"
             Case Else
                 Return "ERROR"
         End Select
@@ -717,6 +756,18 @@ Module CSE_Globals
                 Return "[-]"
             Case tCompErg.n_eng
                 Return "[rpm]"
+            Case tCompErg.n_eng_1s
+                Return "[rpm]"
+            Case tCompErg.n_eng_float
+                Return "[rpm]"
+            Case tCompErg.n_eng_1s_max
+                Return "[rpm]"
+            Case tCompErg.n_eng_1s_min
+                Return "[rpm]"
+            Case tCompErg.n_eng_float_max
+                Return "[rpm]"
+            Case tCompErg.n_eng_float_min
+                Return "[rpm]"
             Case tCompErg.v_wind_avg
                 Return "[m/s]"
             Case tCompErg.v_wind_1s
@@ -813,8 +864,12 @@ Module CSE_Globals
                 Return "[-]"
             Case tCompErg.val_dist
                 Return "[-]"
+            Case tCompErg.val_n_eng
+                Return "[-]"
             Case tCompErg.CdxAß_singleDS
                 Return "[m2]"
+            Case tCompErg.r_dyn
+                Return "[m]"
             Case Else
                 Return "ERROR"
         End Select
diff --git a/CSE/Calculation/Signal_identification.vb b/CSE/Calculation/Signal_identification.vb
index c1ffeed..9aa665f 100644
--- a/CSE/Calculation/Signal_identification.vb
+++ b/CSE/Calculation/Signal_identification.vb
@@ -679,7 +679,7 @@ Module Signal_identification
     End Function
 
     ' Calculate the corrected vehicle speed
-    Public Function fCalcSpeedVal(ByVal orgMSCX As cMSC, ByVal vehicleX As cVehicle, ByVal coastingSeq As Integer) As Boolean
+    Public Function fCalcSpeedVal(ByVal orgMSCX As cMSC, ByVal vehicleX As cVehicle, ByVal coastingSeq As Integer, ByRef r_dyn_ref As Double) As Boolean
         ' Declaration
         Dim i, j, run, anz, RunIDx As Integer
         Dim firstIn As Boolean = True
@@ -721,10 +721,12 @@ Module Signal_identification
                 CalcData(tCompCali.t_float)(i) = Crt.dist_float / (CalcData(tCompCali.v_veh_c)(i) / 3.6)
             End If
 
+            ' n_eng
+            CalcData(tCompCali.n_eng)(i) = InputData(tComp.n_eng)(i)
+
             ' F trac raw
             CalcData(tCompCali.F_trac)(i) = (InputData(tComp.tq_l)(i) + InputData(tComp.tq_r)(i)) * CalcData(tCompCali.omega_wh)(i) / (CalcData(tCompCali.v_veh_c)(i) / 3.6)
 
-
             If Crt.gradient_correction Then
                 If CalcData(tCompCali.SecID)(i) <> 0 Then
                     ' Altitude
@@ -766,6 +768,8 @@ Module Signal_identification
         fMoveAve(CalcData(tCompCali.t), CalcData(tCompCali.v_veh_c), CalcData(tCompCali.v_veh_1s))
         fMoveAve(CalcData(tCompCali.t), CalcData(tCompCali.v_veh_c), CalcData(tCompCali.v_veh_acc), Crt.acc_corr_avg)
         fMoveAve(CalcData(tCompCali.t), CalcData(tCompCali.v_veh_c), CalcData(tCompCali.v_veh_float), CalcData(tCompCali.t_float))
+        fMoveAve(CalcData(tCompCali.t), CalcData(tCompCali.n_eng), CalcData(tCompCali.n_eng_1s))
+        fMoveAve(CalcData(tCompCali.t), CalcData(tCompCali.n_eng), CalcData(tCompCali.n_eng_float), CalcData(tCompCali.t_float))
 
         ' Calculate the remaining values
         For i = 0 To CalcData(tCompCali.SecID).Count - 1
@@ -840,6 +844,10 @@ Module Signal_identification
                     ErgValues(tCompErg.tq_sum_1s_min)(run) = (CalcData(tCompCali.tq_sum_1s)(i))
                     ErgValues(tCompErg.tq_sum_float_max)(run) = (CalcData(tCompCali.tq_sum_float)(i))
                     ErgValues(tCompErg.tq_sum_float_min)(run) = (CalcData(tCompCali.tq_sum_float)(i))
+                    ErgValues(tCompErg.n_eng_1s_max)(run) = (CalcData(tCompCali.n_eng_1s)(i))
+                    ErgValues(tCompErg.n_eng_1s_min)(run) = (CalcData(tCompCali.n_eng_1s)(i))
+                    ErgValues(tCompErg.n_eng_float_max)(run) = (CalcData(tCompCali.n_eng_float)(i))
+                    ErgValues(tCompErg.n_eng_float_min)(run) = (CalcData(tCompCali.n_eng_float)(i))
                     ErgValues(tCompErg.t_tire)(run) = (InputData(tComp.t_tire)(i))
                     If OptPar(1) Then ErgValues(tCompErg.p_tire)(run) = (InputData(tComp.p_tire)(i))
 
@@ -876,6 +884,10 @@ Module Signal_identification
                         If ErgValues(tCompErg.tq_sum_1s_min)(run) > CalcData(tCompCali.tq_sum_1s)(i) Then ErgValues(tCompErg.tq_sum_1s_min)(run) = CalcData(tCompCali.tq_sum_1s)(i)
                         If ErgValues(tCompErg.tq_sum_float_max)(run) < CalcData(tCompCali.tq_sum_float)(i) Then ErgValues(tCompErg.tq_sum_float_max)(run) = CalcData(tCompCali.tq_sum_float)(i)
                         If ErgValues(tCompErg.tq_sum_float_min)(run) > CalcData(tCompCali.tq_sum_float)(i) Then ErgValues(tCompErg.tq_sum_float_min)(run) = CalcData(tCompCali.tq_sum_float)(i)
+                        If ErgValues(tCompErg.n_eng_1s_max)(run) < CalcData(tCompCali.n_eng_1s)(i) Then ErgValues(tCompErg.n_eng_1s_max)(run) = CalcData(tCompCali.n_eng_1s)(i)
+                        If ErgValues(tCompErg.n_eng_1s_min)(run) > CalcData(tCompCali.n_eng_1s)(i) Then ErgValues(tCompErg.n_eng_1s_min)(run) = CalcData(tCompCali.n_eng_1s)(i)
+                        If ErgValues(tCompErg.n_eng_float_max)(run) < CalcData(tCompCali.n_eng_float)(i) Then ErgValues(tCompErg.n_eng_float_max)(run) = CalcData(tCompCali.n_eng_float)(i)
+                        If ErgValues(tCompErg.n_eng_float_min)(run) > CalcData(tCompCali.n_eng_float)(i) Then ErgValues(tCompErg.n_eng_float_min)(run) = CalcData(tCompCali.n_eng_float)(i)
                         ErgValues(tCompErg.t_tire)(run) += (InputData(tComp.t_tire)(i))
                         If OptPar(1) Then ErgValues(tCompErg.p_tire)(run) += (InputData(tComp.p_tire)(i))
                         anz += 1
@@ -911,6 +923,7 @@ Module Signal_identification
                         End If
                         ErgValues(tCompErg.t_tire)(run) = ErgValues(tCompErg.t_tire)(run) / anz
                         If OptPar(1) Then ErgValues(tCompErg.p_tire)(run) = ErgValues(tCompErg.p_tire)(run) / anz
+                        ErgValues(tCompErg.r_dyn)(run) = (30 * igear * vehicleX.axleRatio * ErgValues(tCompErg.v_veh)(run) / 3.6) / (ErgValues(tCompErg.n_eng)(run) * Math.PI)
 
                         ' Add a new Section to the resultfile
                         run += 1
@@ -944,6 +957,10 @@ Module Signal_identification
                         ErgValues(tCompErg.tq_sum_1s_min)(run) = (CalcData(tCompCali.tq_sum_1s)(i))
                         ErgValues(tCompErg.tq_sum_float_max)(run) = (CalcData(tCompCali.tq_sum_float)(i))
                         ErgValues(tCompErg.tq_sum_float_min)(run) = (CalcData(tCompCali.tq_sum_float)(i))
+                        ErgValues(tCompErg.n_eng_1s_max)(run) = (CalcData(tCompCali.n_eng_1s)(i))
+                        ErgValues(tCompErg.n_eng_1s_min)(run) = (CalcData(tCompCali.n_eng_1s)(i))
+                        ErgValues(tCompErg.n_eng_float_max)(run) = (CalcData(tCompCali.n_eng_float)(i))
+                        ErgValues(tCompErg.n_eng_float_min)(run) = (CalcData(tCompCali.n_eng_float)(i))
                         ErgValues(tCompErg.t_tire)(run) = (InputData(tComp.t_tire)(i))
                         If OptPar(1) Then ErgValues(tCompErg.p_tire)(run) = (InputData(tComp.p_tire)(i))
                     End If
@@ -982,6 +999,7 @@ Module Signal_identification
                     End If
                     ErgValues(tCompErg.t_tire)(run) = ErgValues(tCompErg.t_tire)(run) / anz
                     If OptPar(1) Then ErgValues(tCompErg.p_tire)(run) = ErgValues(tCompErg.p_tire)(run) / anz
+                    ErgValues(tCompErg.r_dyn)(run) = (30 * igear * vehicleX.axleRatio * ErgValues(tCompErg.v_veh)(run) / 3.6) / (ErgValues(tCompErg.n_eng)(run) * Math.PI)
 
                     anz = 0
                     run += 1
@@ -990,6 +1008,22 @@ Module Signal_identification
             End If
         Next i
 
+        ' Calculate r_dyn_ref
+        anz = 0
+        If coastingSeq = 0 Then
+            For i = 0 To ErgValues(tCompErg.valid).Count - 1
+                If ErgValues(tCompErg.valid)(i) = 1 Then
+                    r_dyn_ref += ErgValues(tCompErg.r_dyn)(i)
+                    anz += 1
+                End If
+            Next i
+            If anz > 0 Then
+                r_dyn_ref = r_dyn_ref / anz
+            Else
+                r_dyn_ref = 0
+            End If
+        End If
+
         Return True
     End Function
 
diff --git a/CSE/Calculation/main_calculation_call.vb b/CSE/Calculation/main_calculation_call.vb
index 824f705..6bfd44c 100644
--- a/CSE/Calculation/main_calculation_call.vb
+++ b/CSE/Calculation/main_calculation_call.vb
@@ -65,6 +65,7 @@ Public Module main_calculation_call
             ' Declaration
             Dim MSC As New cMSC
             Dim vMSC As New cVirtMSC
+            Dim r_dyn_ref As Double
 
             ' Output on the GUI
             logme(7, False, "Calculating the speed runs...")
@@ -109,7 +110,7 @@ Public Module main_calculation_call
                 If BWorker.CancellationPending Then Return
 
                 ' Calculate the run
-                fCalcRun(MSC, vehicle, i)
+                fCalcRun(MSC, vehicle, i, r_dyn_ref)
 
                 ' Exit function if error is detected
                 If BWorker.CancellationPending Then Return
@@ -224,7 +225,7 @@ Public Module main_calculation_call
     End Sub
 
     ' Calculate the speed run parameter
-    Function fCalcRun(ByVal MSCX As cMSC, ByVal vehicleX As cVehicle, ByVal coastingSeq As Integer) As Boolean
+    Function fCalcRun(ByVal MSCX As cMSC, ByVal vehicleX As cVehicle, ByVal coastingSeq As Integer, ByRef r_dyn_ref As Double) As Boolean
         ' Declaration
         Dim run As Integer
         Dim Change As Boolean = True
@@ -236,11 +237,9 @@ Public Module main_calculation_call
             Job.fv_veh_opt2 = 0
             Job.fv_pe = 0
             run = 0
+            r_dyn_ref = 0
         End If
 
-        ' Evaluate the valid sections
-        'fCalcValidSec(MSCX, coastingSeq, run, Change)
-
         Do While Change
             If coastingSeq = 0 Then
                 ' Initialise Parameter
@@ -248,6 +247,7 @@ Public Module main_calculation_call
                 Job.fv_veh_opt2 = 0
                 Job.fv_pe = 0
                 run += 1
+                r_dyn_ref = 0
             End If
 
             ' Calculate fv_veh
@@ -269,10 +269,10 @@ Public Module main_calculation_call
             fWindBetaAirErg()
 
             ' Calculate the other speed run relevant values
-            fCalcSpeedVal(MSCX, vehicleX, coastingSeq)
+            fCalcSpeedVal(MSCX, vehicleX, coastingSeq, r_dyn_ref)
 
             ' Evaluate the valid sections
-            fCalcValidSec(MSCX, coastingSeq, run, Change)
+            fCalcValidSec(MSCX, vehicleX, coastingSeq, run, r_dyn_ref, Change)
 
             ' Error
             If run > 10 Then
@@ -808,10 +808,11 @@ Public Module main_calculation_call
     End Sub
 
     ' Evaluate the Valid sections
-    Sub fCalcValidSec(ByVal MSCX As cMSC, ByVal coastingSeq As Integer, ByVal Run As Integer, ByRef Change As Boolean)
+    Sub fCalcValidSec(ByVal MSCX As cMSC, ByVal vehicleX As cVehicle, ByVal coastingSeq As Integer, ByVal Run As Integer, ByVal r_dyn_ref As Double, ByRef Change As Boolean)
         ' Declaration
         Dim i As Integer
         Dim OldValid(ErgValues(tCompErg.SecID).Count - 1), OldUse(ErgValues(tCompErg.SecID).Count - 1) As Boolean
+        Dim igear As Double
 
         ' Initialisation
         Change = False
@@ -819,6 +820,7 @@ Public Module main_calculation_call
         ' Evaluation
         Select Case coastingSeq
             Case 1, 2 ' Low speed test
+                igear = vehicleX.gearRatio_low
                 For i = 0 To ErgValues(tCompErg.SecID).Count - 1
                     ' Identify whitch criteria is not valid
                     If ErgValues(tCompErg.user_valid)(i) = 1 Then ErgValues(tCompErg.val_User)(i) = 1
@@ -830,12 +832,14 @@ Public Module main_calculation_call
                        ErgValues(tCompErg.v_veh_float_min)(i) > (ErgValues(tCompErg.v_veh)(i) - Crt.v_veh_float_delta_LS) Then ErgValues(tCompErg.val_vVeh_f)(i) = 1
                     If ErgValues(tCompErg.tq_sum_float_max)(i) < (ErgValues(tCompErg.tq_sum)(i) * (1 + Crt.tq_sum_float_delta_LS)) And _
                        ErgValues(tCompErg.tq_sum_float_min)(i) > (ErgValues(tCompErg.tq_sum)(i) * (1 - Crt.tq_sum_float_delta_LS)) Then ErgValues(tCompErg.val_tq_f)(i) = 1
+                    If ErgValues(tCompErg.n_eng_float_max)(i) < ((30 * igear * vehicleX.axleRatio * (ErgValues(tCompErg.v_veh)(i) + Crt.v_veh_float_delta_LS) / 3.6) / (r_dyn_ref * Math.PI)) * (1 + Crt.delta_n_eng_LS) And _
+                       ErgValues(tCompErg.n_eng_float_min)(i) > ((30 * igear * vehicleX.axleRatio * (ErgValues(tCompErg.v_veh)(i) - Crt.v_veh_float_delta_LS) / 3.6) / (r_dyn_ref * Math.PI)) * (1 - Crt.delta_n_eng_LS) Then ErgValues(tCompErg.val_n_eng)(i) = 1
                     If ErgValues(tCompErg.dist)(i) < fSecLen(MSCX, ErgValues(tCompErg.SecID)(i), ErgValues(tCompErg.DirID)(i)) + Crt.leng_crit And _
                        ErgValues(tCompErg.dist)(i) > fSecLen(MSCX, ErgValues(tCompErg.SecID)(i), ErgValues(tCompErg.DirID)(i)) - Crt.leng_crit Then ErgValues(tCompErg.val_dist)(i) = 1
 
                     ' Check if all criterias are valid
                     If ErgValues(tCompErg.val_User)(i) = 1 And ErgValues(tCompErg.val_vVeh_avg)(i) = 1 And ErgValues(tCompErg.val_vWind)(i) = 1 And _
-                       ErgValues(tCompErg.val_vWind_1s)(i) = 1 And ErgValues(tCompErg.val_vVeh_f)(i) = 1 And ErgValues(tCompErg.val_tq_f)(i) = 1 And ErgValues(tCompErg.val_dist)(i) = 1 Then
+                       ErgValues(tCompErg.val_vWind_1s)(i) = 1 And ErgValues(tCompErg.val_vVeh_f)(i) = 1 And ErgValues(tCompErg.val_tq_f)(i) = 1 And ErgValues(tCompErg.val_n_eng)(i) = 1 And ErgValues(tCompErg.val_dist)(i) = 1 Then
                         ErgValues(tCompErg.valid)(i) = 1
                         ErgValues(tCompErg.used)(i) = 1
                     Else
@@ -849,6 +853,7 @@ Public Module main_calculation_call
                     ErgValues(tCompErg.val_tq_1s)(i) = 1
                 Next i
             Case Else ' high speed test
+                igear = vehicleX.gearRatio_high
                 ' Save the old values
                 For i = 0 To ErgValues(tCompErg.SecID).Count - 1
                     OldValid(i) = ErgValues(tCompErg.valid)(i)
@@ -867,12 +872,14 @@ Public Module main_calculation_call
                        ErgValues(tCompErg.v_veh_1s_min)(i) > (ErgValues(tCompErg.v_veh)(i) - Crt.v_veh_1s_delta_HS) Then ErgValues(tCompErg.val_vVeh_1s)(i) = 1
                     If ErgValues(tCompErg.tq_sum_1s_max)(i) < (ErgValues(tCompErg.tq_sum)(i) * (1 + Crt.tq_sum_1s_delta_HS)) And _
                        ErgValues(tCompErg.tq_sum_1s_min)(i) > (ErgValues(tCompErg.tq_sum)(i) * (1 - Crt.tq_sum_1s_delta_HS)) Then ErgValues(tCompErg.val_tq_1s)(i) = 1
+                    If ErgValues(tCompErg.n_eng_1s_max)(i) < ((30 * igear * vehicleX.axleRatio * (ErgValues(tCompErg.v_veh)(i) + Crt.v_veh_1s_delta_HS) / 3.6) / (r_dyn_ref * Math.PI)) * (1 + Crt.delta_n_eng_HS) And _
+                       ErgValues(tCompErg.n_eng_1s_min)(i) > ((30 * igear * vehicleX.axleRatio * (ErgValues(tCompErg.v_veh)(i) - Crt.v_veh_1s_delta_HS) / 3.6) / (r_dyn_ref * Math.PI)) * (1 - Crt.delta_n_eng_HS) Then ErgValues(tCompErg.val_n_eng)(i) = 1
                     If ErgValues(tCompErg.dist)(i) < fSecLen(MSCX, ErgValues(tCompErg.SecID)(i), ErgValues(tCompErg.DirID)(i)) + Crt.leng_crit And _
                        ErgValues(tCompErg.dist)(i) > fSecLen(MSCX, ErgValues(tCompErg.SecID)(i), ErgValues(tCompErg.DirID)(i)) - Crt.leng_crit Then ErgValues(tCompErg.val_dist)(i) = 1
 
                     ' Check if all criterias are valid
                     If ErgValues(tCompErg.val_User)(i) = 1 And ErgValues(tCompErg.val_vVeh_avg)(i) = 1 And ErgValues(tCompErg.val_vWind)(i) = 1 And ErgValues(tCompErg.val_vWind_1s)(i) = 1 And _
-                       ErgValues(tCompErg.val_beta)(i) = 1 And ErgValues(tCompErg.val_vVeh_1s)(i) = 1 And ErgValues(tCompErg.val_tq_1s)(i) = 1 And ErgValues(tCompErg.val_dist)(i) = 1 Then
+                       ErgValues(tCompErg.val_beta)(i) = 1 And ErgValues(tCompErg.val_vVeh_1s)(i) = 1 And ErgValues(tCompErg.val_tq_1s)(i) = 1 And ErgValues(tCompErg.val_n_eng)(i) = 1 And ErgValues(tCompErg.val_dist)(i) = 1 Then
                         ErgValues(tCompErg.valid)(i) = 1
                         ErgValues(tCompErg.used)(i) = 1
                     Else
diff --git a/CSE/Calculation/sub_linear_regression.vb b/CSE/Calculation/sub_linear_regression.vb
index ef896ed..e7926de 100644
--- a/CSE/Calculation/sub_linear_regression.vb
+++ b/CSE/Calculation/sub_linear_regression.vb
@@ -297,13 +297,13 @@ Module sub_linear_regression
                     Job.CdxA0_opt2 += ErgValuesReg(tCompErgReg.CdxA0_singleMS)(lauf)
                 Else
                     ' Clear the data in the result dictionary
-                    ErgValuesReg(tCompErgReg.SecID).RemoveAt(lauf)
-                    ErgValuesReg(tCompErgReg.DirID).RemoveAt(lauf)
-                    ErgValuesReg(tCompErgReg.beta_ave_singleMS).RemoveAt(lauf)
-                    ErgValuesReg(tCompErgReg.t_tire_ave_HS_max).RemoveAt(lauf)
-                    ErgValuesReg(tCompErgReg.t_tire_ave_HS_min).RemoveAt(lauf)
-                    ErgValuesReg(tCompErgReg.t_tire_ave_LS_max).RemoveAt(lauf)
-                    ErgValuesReg(tCompErgReg.t_tire_ave_LS_min).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.SecID).Count > 0 Then ErgValuesReg(tCompErgReg.SecID).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.DirID).Count > 0 Then ErgValuesReg(tCompErgReg.DirID).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.beta_ave_singleMS).Count > 0 Then ErgValuesReg(tCompErgReg.beta_ave_singleMS).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.t_tire_ave_HS_max).Count > 0 Then ErgValuesReg(tCompErgReg.t_tire_ave_HS_max).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.t_tire_ave_HS_min).Count > 0 Then ErgValuesReg(tCompErgReg.t_tire_ave_HS_min).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.t_tire_ave_LS_max).Count > 0 Then ErgValuesReg(tCompErgReg.t_tire_ave_LS_max).RemoveAt(lauf)
+                    If ErgValuesReg(tCompErgReg.t_tire_ave_LS_min).Count > 0 Then ErgValuesReg(tCompErgReg.t_tire_ave_LS_min).RemoveAt(lauf)
                     lauf -= 1
                 End If
             End If
diff --git a/CSE/GUI/F_Main.Designer.vb b/CSE/GUI/F_Main.Designer.vb
index 0442a4a..179d205 100644
--- a/CSE/GUI/F_Main.Designer.vb
+++ b/CSE/GUI/F_Main.Designer.vb
@@ -80,11 +80,11 @@ Partial Class F_Main
         Me.ButtonMSCC = New System.Windows.Forms.Button()
         Me.ButtonSelectMSCC = New System.Windows.Forms.Button()
         Me.GroupBox3 = New System.Windows.Forms.GroupBox()
-        Me.Label17 = New System.Windows.Forms.Label()
         Me.Label16 = New System.Windows.Forms.Label()
-        Me.Label15 = New System.Windows.Forms.Label()
         Me.Label9 = New System.Windows.Forms.Label()
         Me.TextBoxRBetaMis = New System.Windows.Forms.TextBox()
+        Me.Label17 = New System.Windows.Forms.Label()
+        Me.Label15 = New System.Windows.Forms.Label()
         Me.Label8 = New System.Windows.Forms.Label()
         Me.TextBoxRAirPos = New System.Windows.Forms.TextBox()
         Me.Label7 = New System.Windows.Forms.Label()
@@ -99,6 +99,8 @@ Partial Class F_Main
         Me.TextBoxVeh = New System.Windows.Forms.TextBox()
         Me.TabControl1 = New System.Windows.Forms.TabControl()
         Me.TPMain = New System.Windows.Forms.TabPage()
+        Me.GroupBox4 = New System.Windows.Forms.GroupBox()
+        Me.GroupBox2 = New System.Windows.Forms.GroupBox()
         Me.TPCriteria = New System.Windows.Forms.TabPage()
         Me.GroupBox7 = New System.Windows.Forms.GroupBox()
         Me.Label26 = New System.Windows.Forms.Label()
@@ -215,8 +217,12 @@ Partial Class F_Main
         Me.Label20 = New System.Windows.Forms.Label()
         Me.LRhoAirRef = New System.Windows.Forms.Label()
         Me.TB_rho_air_ref = New System.Windows.Forms.TextBox()
-        Me.GroupBox2 = New System.Windows.Forms.GroupBox()
-        Me.GroupBox4 = New System.Windows.Forms.GroupBox()
+        Me.Label3 = New System.Windows.Forms.Label()
+        Me.TB_delta_n_eng_LS = New System.Windows.Forms.TextBox()
+        Me.Label4 = New System.Windows.Forms.Label()
+        Me.Label5 = New System.Windows.Forms.Label()
+        Me.TB_delta_n_eng_HS = New System.Windows.Forms.TextBox()
+        Me.Label6 = New System.Windows.Forms.Label()
         Me.MenuStrip1.SuspendLayout()
         Me.GroupBoxJob.SuspendLayout()
         Me.GB_hz_out.SuspendLayout()
@@ -231,6 +237,8 @@ Partial Class F_Main
         Me.TabPageErr.SuspendLayout()
         Me.TabControl1.SuspendLayout()
         Me.TPMain.SuspendLayout()
+        Me.GroupBox4.SuspendLayout()
+        Me.GroupBox2.SuspendLayout()
         Me.TPCriteria.SuspendLayout()
         Me.GroupBox7.SuspendLayout()
         Me.GroupBox8.SuspendLayout()
@@ -242,8 +250,6 @@ Partial Class F_Main
         CType(Me.PBInfoIconCrt, System.ComponentModel.ISupportInitialize).BeginInit()
         Me.GroupBox14.SuspendLayout()
         Me.GroupBox10.SuspendLayout()
-        Me.GroupBox2.SuspendLayout()
-        Me.GroupBox4.SuspendLayout()
         Me.SuspendLayout()
         '
         'MenuStrip1
@@ -826,15 +832,6 @@ Partial Class F_Main
         Me.GroupBox3.TabStop = False
         Me.GroupBox3.Text = "From calibration"
         '
-        'Label17
-        '
-        Me.Label17.AutoSize = True
-        Me.Label17.Location = New System.Drawing.Point(108, 19)
-        Me.Label17.Name = "Label17"
-        Me.Label17.Size = New System.Drawing.Size(16, 13)
-        Me.Label17.TabIndex = 35
-        Me.Label17.Text = "[-]"
-        '
         'Label16
         '
         Me.Label16.AutoSize = True
@@ -844,15 +841,6 @@ Partial Class F_Main
         Me.Label16.TabIndex = 34
         Me.Label16.Text = "[°]"
         '
-        'Label15
-        '
-        Me.Label15.AutoSize = True
-        Me.Label15.Location = New System.Drawing.Point(270, 19)
-        Me.Label15.Name = "Label15"
-        Me.Label15.Size = New System.Drawing.Size(16, 13)
-        Me.Label15.TabIndex = 33
-        Me.Label15.Text = "[-]"
-        '
         'Label9
         '
         Me.Label9.AutoSize = True
@@ -872,6 +860,24 @@ Partial Class F_Main
         Me.TextBoxRBetaMis.TabIndex = 31
         Me.TextBoxRBetaMis.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
         '
+        'Label17
+        '
+        Me.Label17.AutoSize = True
+        Me.Label17.Location = New System.Drawing.Point(108, 19)
+        Me.Label17.Name = "Label17"
+        Me.Label17.Size = New System.Drawing.Size(16, 13)
+        Me.Label17.TabIndex = 35
+        Me.Label17.Text = "[-]"
+        '
+        'Label15
+        '
+        Me.Label15.AutoSize = True
+        Me.Label15.Location = New System.Drawing.Point(270, 19)
+        Me.Label15.Name = "Label15"
+        Me.Label15.Size = New System.Drawing.Size(16, 13)
+        Me.Label15.TabIndex = 33
+        Me.Label15.Text = "[-]"
+        '
         'Label8
         '
         Me.Label8.AutoSize = True
@@ -920,11 +926,11 @@ Partial Class F_Main
         Me.TabControlOutMsg.Controls.Add(Me.TabPageWar)
         Me.TabControlOutMsg.Controls.Add(Me.TabPageErr)
         Me.TabControlOutMsg.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
-        Me.TabControlOutMsg.Location = New System.Drawing.Point(8, 510)
+        Me.TabControlOutMsg.Location = New System.Drawing.Point(8, 520)
         Me.TabControlOutMsg.Margin = New System.Windows.Forms.Padding(2)
         Me.TabControlOutMsg.Name = "TabControlOutMsg"
         Me.TabControlOutMsg.SelectedIndex = 0
-        Me.TabControlOutMsg.Size = New System.Drawing.Size(925, 187)
+        Me.TabControlOutMsg.Size = New System.Drawing.Size(925, 177)
         Me.TabControlOutMsg.TabIndex = 34
         '
         'TabPageMSG
@@ -935,7 +941,7 @@ Partial Class F_Main
         Me.TabPageMSG.Margin = New System.Windows.Forms.Padding(2)
         Me.TabPageMSG.Name = "TabPageMSG"
         Me.TabPageMSG.Padding = New System.Windows.Forms.Padding(2)
-        Me.TabPageMSG.Size = New System.Drawing.Size(917, 161)
+        Me.TabPageMSG.Size = New System.Drawing.Size(917, 151)
         Me.TabPageMSG.TabIndex = 0
         Me.TabPageMSG.Text = "Messages(0)"
         Me.TabPageMSG.UseVisualStyleBackColor = True
@@ -952,7 +958,7 @@ Partial Class F_Main
         Me.ListBoxMSG.Margin = New System.Windows.Forms.Padding(2)
         Me.ListBoxMSG.Name = "ListBoxMSG"
         Me.ListBoxMSG.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple
-        Me.ListBoxMSG.Size = New System.Drawing.Size(913, 160)
+        Me.ListBoxMSG.Size = New System.Drawing.Size(913, 147)
         Me.ListBoxMSG.TabIndex = 23
         '
         'TabPageWar
@@ -1027,7 +1033,7 @@ Partial Class F_Main
         Me.TabControl1.Location = New System.Drawing.Point(8, 72)
         Me.TabControl1.Name = "TabControl1"
         Me.TabControl1.SelectedIndex = 0
-        Me.TabControl1.Size = New System.Drawing.Size(925, 433)
+        Me.TabControl1.Size = New System.Drawing.Size(925, 443)
         Me.TabControl1.TabIndex = 35
         '
         'TPMain
@@ -1039,11 +1045,37 @@ Partial Class F_Main
         Me.TPMain.Location = New System.Drawing.Point(4, 22)
         Me.TPMain.Name = "TPMain"
         Me.TPMain.Padding = New System.Windows.Forms.Padding(3)
-        Me.TPMain.Size = New System.Drawing.Size(917, 407)
+        Me.TPMain.Size = New System.Drawing.Size(917, 417)
         Me.TPMain.TabIndex = 0
         Me.TPMain.Text = "Main"
         Me.TPMain.UseVisualStyleBackColor = True
         '
+        'GroupBox4
+        '
+        Me.GroupBox4.Controls.Add(Me.GroupBox3)
+        Me.GroupBox4.Controls.Add(Me.GroupBox2)
+        Me.GroupBox4.Location = New System.Drawing.Point(202, 166)
+        Me.GroupBox4.Name = "GroupBox4"
+        Me.GroupBox4.Size = New System.Drawing.Size(444, 70)
+        Me.GroupBox4.TabIndex = 35
+        Me.GroupBox4.TabStop = False
+        Me.GroupBox4.Text = "Results"
+        '
+        'GroupBox2
+        '
+        Me.GroupBox2.Controls.Add(Me.Label17)
+        Me.GroupBox2.Controls.Add(Me.Label8)
+        Me.GroupBox2.Controls.Add(Me.TextBoxRVeh)
+        Me.GroupBox2.Controls.Add(Me.Label15)
+        Me.GroupBox2.Controls.Add(Me.Label7)
+        Me.GroupBox2.Controls.Add(Me.TextBoxRAirPos)
+        Me.GroupBox2.Location = New System.Drawing.Point(147, 18)
+        Me.GroupBox2.Name = "GroupBox2"
+        Me.GroupBox2.Size = New System.Drawing.Size(294, 46)
+        Me.GroupBox2.TabIndex = 34
+        Me.GroupBox2.TabStop = False
+        Me.GroupBox2.Text = "From High-speed test"
+        '
         'TPCriteria
         '
         Me.TPCriteria.Controls.Add(Me.GroupBox7)
@@ -1056,7 +1088,7 @@ Partial Class F_Main
         Me.TPCriteria.Location = New System.Drawing.Point(4, 22)
         Me.TPCriteria.Name = "TPCriteria"
         Me.TPCriteria.Padding = New System.Windows.Forms.Padding(3)
-        Me.TPCriteria.Size = New System.Drawing.Size(917, 407)
+        Me.TPCriteria.Size = New System.Drawing.Size(917, 417)
         Me.TPCriteria.TabIndex = 1
         Me.TPCriteria.Text = "Criteria"
         Me.TPCriteria.UseVisualStyleBackColor = True
@@ -1254,7 +1286,7 @@ Partial Class F_Main
         Me.GroupBox9.Controls.Add(Me.GroupBox13)
         Me.GroupBox9.Location = New System.Drawing.Point(456, 6)
         Me.GroupBox9.Name = "GroupBox9"
-        Me.GroupBox9.Size = New System.Drawing.Size(455, 397)
+        Me.GroupBox9.Size = New System.Drawing.Size(455, 405)
         Me.GroupBox9.TabIndex = 44
         Me.GroupBox9.TabStop = False
         Me.GroupBox9.Text = "Dataset validity criteria"
@@ -1326,7 +1358,7 @@ Partial Class F_Main
         Me.GroupBox15.Controls.Add(Me.GroupBox11)
         Me.GroupBox15.Location = New System.Drawing.Point(6, 152)
         Me.GroupBox15.Name = "GroupBox15"
-        Me.GroupBox15.Size = New System.Drawing.Size(442, 233)
+        Me.GroupBox15.Size = New System.Drawing.Size(442, 249)
         Me.GroupBox15.TabIndex = 81
         Me.GroupBox15.TabStop = False
         Me.GroupBox15.Text = "Low and high speed test"
@@ -1359,6 +1391,9 @@ Partial Class F_Main
         '
         'GroupBox12
         '
+        Me.GroupBox12.Controls.Add(Me.Label5)
+        Me.GroupBox12.Controls.Add(Me.TB_delta_n_eng_HS)
+        Me.GroupBox12.Controls.Add(Me.Label6)
         Me.GroupBox12.Controls.Add(Me.Label74)
         Me.GroupBox12.Controls.Add(Me.TB_tq_sum_1s_delta_HS)
         Me.GroupBox12.Controls.Add(Me.LB_tq_sum_1s_delta_HS)
@@ -1379,7 +1414,7 @@ Partial Class F_Main
         Me.GroupBox12.Controls.Add(Me.Label61)
         Me.GroupBox12.Location = New System.Drawing.Point(223, 45)
         Me.GroupBox12.Name = "GroupBox12"
-        Me.GroupBox12.Size = New System.Drawing.Size(211, 176)
+        Me.GroupBox12.Size = New System.Drawing.Size(211, 200)
         Me.GroupBox12.TabIndex = 78
         Me.GroupBox12.TabStop = False
         Me.GroupBox12.Text = "High speed test"
@@ -1542,6 +1577,9 @@ Partial Class F_Main
         '
         'GroupBox11
         '
+        Me.GroupBox11.Controls.Add(Me.Label3)
+        Me.GroupBox11.Controls.Add(Me.TB_delta_n_eng_LS)
+        Me.GroupBox11.Controls.Add(Me.Label4)
         Me.GroupBox11.Controls.Add(Me.Label72)
         Me.GroupBox11.Controls.Add(Me.TB_tq_sum_float_delta_LS)
         Me.GroupBox11.Controls.Add(Me.LB_tq_sum_float_delta_LS)
@@ -1562,7 +1600,7 @@ Partial Class F_Main
         Me.GroupBox11.Controls.Add(Me.TB_v_veh_avg_min_LS)
         Me.GroupBox11.Location = New System.Drawing.Point(6, 45)
         Me.GroupBox11.Name = "GroupBox11"
-        Me.GroupBox11.Size = New System.Drawing.Size(211, 178)
+        Me.GroupBox11.Size = New System.Drawing.Size(211, 200)
         Me.GroupBox11.TabIndex = 77
         Me.GroupBox11.TabStop = False
         Me.GroupBox11.Text = "Low speed test"
@@ -1824,7 +1862,7 @@ Partial Class F_Main
         Me.TBInfoCrt.Location = New System.Drawing.Point(37, 347)
         Me.TBInfoCrt.Multiline = True
         Me.TBInfoCrt.Name = "TBInfoCrt"
-        Me.TBInfoCrt.Size = New System.Drawing.Size(413, 56)
+        Me.TBInfoCrt.Size = New System.Drawing.Size(413, 64)
         Me.TBInfoCrt.TabIndex = 83
         '
         'PBInfoIconCrt
@@ -2176,31 +2214,57 @@ Partial Class F_Main
         Me.TB_rho_air_ref.TabIndex = 1
         Me.TB_rho_air_ref.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
         '
-        'GroupBox2
+        'Label3
         '
-        Me.GroupBox2.Controls.Add(Me.Label17)
-        Me.GroupBox2.Controls.Add(Me.Label8)
-        Me.GroupBox2.Controls.Add(Me.TextBoxRVeh)
-        Me.GroupBox2.Controls.Add(Me.Label15)
-        Me.GroupBox2.Controls.Add(Me.Label7)
-        Me.GroupBox2.Controls.Add(Me.TextBoxRAirPos)
-        Me.GroupBox2.Location = New System.Drawing.Point(147, 18)
-        Me.GroupBox2.Name = "GroupBox2"
-        Me.GroupBox2.Size = New System.Drawing.Size(294, 46)
-        Me.GroupBox2.TabIndex = 34
-        Me.GroupBox2.TabStop = False
-        Me.GroupBox2.Text = "From High-speed test"
+        Me.Label3.AutoSize = True
+        Me.Label3.Location = New System.Drawing.Point(173, 179)
+        Me.Label3.Name = "Label3"
+        Me.Label3.Size = New System.Drawing.Size(16, 13)
+        Me.Label3.TabIndex = 85
+        Me.Label3.Text = "[-]"
         '
-        'GroupBox4
+        'TB_delta_n_eng_LS
         '
-        Me.GroupBox4.Controls.Add(Me.GroupBox3)
-        Me.GroupBox4.Controls.Add(Me.GroupBox2)
-        Me.GroupBox4.Location = New System.Drawing.Point(202, 166)
-        Me.GroupBox4.Name = "GroupBox4"
-        Me.GroupBox4.Size = New System.Drawing.Size(444, 70)
-        Me.GroupBox4.TabIndex = 35
-        Me.GroupBox4.TabStop = False
-        Me.GroupBox4.Text = "Results"
+        Me.TB_delta_n_eng_LS.Location = New System.Drawing.Point(128, 176)
+        Me.TB_delta_n_eng_LS.Name = "TB_delta_n_eng_LS"
+        Me.TB_delta_n_eng_LS.Size = New System.Drawing.Size(45, 20)
+        Me.TB_delta_n_eng_LS.TabIndex = 84
+        Me.TB_delta_n_eng_LS.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+        '
+        'Label4
+        '
+        Me.Label4.AutoSize = True
+        Me.Label4.Location = New System.Drawing.Point(6, 179)
+        Me.Label4.Name = "Label4"
+        Me.Label4.Size = New System.Drawing.Size(85, 13)
+        Me.Label4.TabIndex = 83
+        Me.Label4.Text = "delta_n_eng_LS"
+        '
+        'Label5
+        '
+        Me.Label5.AutoSize = True
+        Me.Label5.Location = New System.Drawing.Point(173, 177)
+        Me.Label5.Name = "Label5"
+        Me.Label5.Size = New System.Drawing.Size(16, 13)
+        Me.Label5.TabIndex = 97
+        Me.Label5.Text = "[-]"
+        '
+        'TB_delta_n_eng_HS
+        '
+        Me.TB_delta_n_eng_HS.Location = New System.Drawing.Point(128, 174)
+        Me.TB_delta_n_eng_HS.Name = "TB_delta_n_eng_HS"
+        Me.TB_delta_n_eng_HS.Size = New System.Drawing.Size(45, 20)
+        Me.TB_delta_n_eng_HS.TabIndex = 96
+        Me.TB_delta_n_eng_HS.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+        '
+        'Label6
+        '
+        Me.Label6.AutoSize = True
+        Me.Label6.Location = New System.Drawing.Point(6, 177)
+        Me.Label6.Name = "Label6"
+        Me.Label6.Size = New System.Drawing.Size(87, 13)
+        Me.Label6.TabIndex = 95
+        Me.Label6.Text = "delta_n_eng_HS"
         '
         'F_Main
         '
@@ -2240,6 +2304,9 @@ Partial Class F_Main
         Me.TabPageErr.ResumeLayout(False)
         Me.TabControl1.ResumeLayout(False)
         Me.TPMain.ResumeLayout(False)
+        Me.GroupBox4.ResumeLayout(False)
+        Me.GroupBox2.ResumeLayout(False)
+        Me.GroupBox2.PerformLayout()
         Me.TPCriteria.ResumeLayout(False)
         Me.TPCriteria.PerformLayout()
         Me.GroupBox7.ResumeLayout(False)
@@ -2261,9 +2328,6 @@ Partial Class F_Main
         Me.GroupBox14.PerformLayout()
         Me.GroupBox10.ResumeLayout(False)
         Me.GroupBox10.PerformLayout()
-        Me.GroupBox2.ResumeLayout(False)
-        Me.GroupBox2.PerformLayout()
-        Me.GroupBox4.ResumeLayout(False)
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -2462,5 +2526,11 @@ Partial Class F_Main
     Friend WithEvents CreateActivationFileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
     Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
     Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
+    Friend WithEvents Label5 As System.Windows.Forms.Label
+    Friend WithEvents TB_delta_n_eng_HS As System.Windows.Forms.TextBox
+    Friend WithEvents Label6 As System.Windows.Forms.Label
+    Friend WithEvents Label3 As System.Windows.Forms.Label
+    Friend WithEvents TB_delta_n_eng_LS As System.Windows.Forms.TextBox
+    Friend WithEvents Label4 As System.Windows.Forms.Label
 
 End Class
diff --git a/CSE/GUI/F_Main.vb b/CSE/GUI/F_Main.vb
index b87cbd2..78c715a 100644
--- a/CSE/GUI/F_Main.vb
+++ b/CSE/GUI/F_Main.vb
@@ -573,6 +573,7 @@ Public Class F_Main
         Crt.v_veh_avg_min_LS = TB_v_veh_avg_min_LS.Text
         Crt.v_veh_float_delta_LS = TB_v_veh_float_delta_LS.Text
         Crt.tq_sum_float_delta_LS = TB_tq_sum_float_delta_LS.Text
+        Crt.delta_n_eng_LS = TB_delta_n_eng_LS.Text
         ' High speed test
         Crt.v_wind_avg_max_HS = TB_v_wind_avg_max_HS.Text
         Crt.v_wind_1s_max_HS = TB_v_wind_1s_max_HS.Text
@@ -580,6 +581,7 @@ Public Class F_Main
         Crt.beta_avg_max_HS = TB_beta_avg_max_HS.Text
         Crt.v_veh_1s_delta_HS = TB_v_veh_1s_delta_HS.Text
         Crt.tq_sum_1s_delta_HS = TB_tq_sum_1s_delta_HS.Text
+        Crt.delta_n_eng_HS = TB_delta_n_eng_HS.Text
     End Sub
 
     Sub UI_PopulateFromJob()
@@ -638,6 +640,7 @@ Public Class F_Main
         TB_v_veh_avg_max_LS.Text = Crt.v_veh_avg_max_LS
         TB_v_veh_float_delta_LS.Text = Crt.v_veh_float_delta_LS
         TB_tq_sum_float_delta_LS.Text = Crt.tq_sum_float_delta_LS
+        TB_delta_n_eng_LS.Text = Crt.delta_n_eng_LS
         ' High speed test
         TB_v_wind_avg_max_HS.Text = Crt.v_wind_avg_max_HS
         TB_v_wind_1s_max_HS.Text = Crt.v_wind_1s_max_HS
@@ -645,6 +648,7 @@ Public Class F_Main
         TB_beta_avg_max_HS.Text = Crt.beta_avg_max_HS
         TB_v_veh_1s_delta_HS.Text = Crt.v_veh_1s_delta_HS
         TB_tq_sum_1s_delta_HS.Text = Crt.tq_sum_1s_delta_HS
+        TB_delta_n_eng_HS.Text = Crt.delta_n_eng_HS
         ' Evaluation box
         CB_accel_correction.Checked = Crt.accel_correction
         CB_gradient_correction.Checked = Crt.gradient_correction
diff --git a/CSE/IO/cCriteria.vb b/CSE/IO/cCriteria.vb
index 4213256..42100ea 100644
--- a/CSE/IO/cCriteria.vb
+++ b/CSE/IO/cCriteria.vb
@@ -61,8 +61,9 @@ Public Class cCriteria
         g.v_wind_1s_max_LS = 8
         g.v_veh_avg_min_LS = 9
         g.v_veh_avg_max_LS = 16
-        g.v_veh_float_delta_LS = 0.15
+        g.v_veh_float_delta_LS = 0.5
         g.tq_sum_float_delta_LS = 0.1
+        g.delta_n_eng_LS = 0.05
 
         g.v_wind_avg_max_HS = 5
         g.v_wind_1s_max_HS = 8
@@ -70,6 +71,7 @@ Public Class cCriteria
         g.v_veh_avg_min_HS = 80
         g.v_veh_1s_delta_HS = 0.3
         g.tq_sum_1s_delta_HS = 0.1
+        g.delta_n_eng_HS = 0.05
 
         g.delta_t_tyre_max = 5
         g.delta_rr_corr_max = 0.3
@@ -198,7 +200,10 @@ Public Class cCriteria
                             "units": "km/h", 
                         },
                         "tq_sum_float_delta_LS": {"type": "number", "required": true, 
-                            "description": "+/- maximum relative deviation of floating average torque from average torque over entire section (low speed)", 
+                            "description": "+/- maximum relative deviation of variance of engine speed compared to variance in vehicle speed (used as plausibility check for engine speed signal) (low speed test)", 
+                        },
+                        "delta_n_eng_LS": {"type": "number", "required": true, 
+                            "description": "+/- maximum relative deviation of n_eng (low speed)", 
                         },
 
                         "v_wind_avg_max_HS": {"type": "number", "required": true, 
@@ -224,6 +229,9 @@ Public Class cCriteria
                         "tq_sum_1s_delta_HS": {"type": "number", "required": true, 
                             "description": "+/- maximum relative deviation of 1s average torque from average torque over entire section (high speed).", 
                         },
+                        "delta_n_eng_HS": {"type": "number", "required": true, 
+                            "description": "+/- maximum relative deviation of variance of engine speed compared to variance in vehicle speed (used as plausibility check for engine speed signal) (high speed test).", 
+                        },
 
                         "delta_t_tyre_max": {"type": "number", "required": true, 
                             "description": "Maximum variation of tyre temperature between high speeds and low speeds.", 
@@ -328,12 +336,14 @@ Public Class cCriteria
     Public v_veh_avg_min_LS As Single
     Public v_veh_float_delta_LS As Single
     Public tq_sum_float_delta_LS As Single
+    Public delta_n_eng_LS As Single
     Public v_wind_avg_max_HS As Single
     Public v_wind_1s_max_HS As Single
     Public v_veh_avg_min_HS As Single
     Public beta_avg_max_HS As Single
     Public v_veh_1s_delta_HS As Single
     Public tq_sum_1s_delta_HS As Single
+    Public delta_n_eng_HS As Single
     Public delta_t_tyre_max As Single
     Public delta_rr_corr_max As Single
     Public t_amb_min As Single
@@ -379,6 +389,7 @@ Public Class cCriteria
         Me.v_veh_avg_min_LS = g("v_veh_avg_min_LS")
         Me.v_veh_float_delta_LS = g("v_veh_float_delta_LS")
         Me.tq_sum_float_delta_LS = g("tq_sum_float_delta_LS")
+        Me.delta_n_eng_LS = g("delta_n_eng_LS")
 
         Me.v_wind_avg_max_HS = g("v_wind_avg_max_HS")
         Me.v_veh_avg_min_HS = g("v_veh_avg_min_HS")
@@ -386,6 +397,7 @@ Public Class cCriteria
         Me.beta_avg_max_HS = g("beta_avg_max_HS")
         Me.v_veh_1s_delta_HS = g("v_veh_1s_delta_HS")
         Me.tq_sum_1s_delta_HS = g("tq_sum_1s_delta_HS")
+        Me.delta_n_eng_HS = g("delta_n_eng_HS")
 
         Me.delta_t_tyre_max = g("delta_t_tyre_max")
         Me.delta_rr_corr_max = g("delta_rr_corr_max")
@@ -436,6 +448,7 @@ Public Class cCriteria
         g.v_veh_avg_max_LS = Me.v_veh_avg_max_LS
         g.v_veh_float_delta_LS = Me.v_veh_float_delta_LS
         g.tq_sum_float_delta_LS = Me.tq_sum_float_delta_LS
+        g.delta_n_eng_LS = Me.delta_n_eng_LS
 
         g.v_wind_avg_max_HS = Me.v_wind_avg_max_HS
         g.v_wind_1s_max_HS = Me.v_wind_1s_max_HS
@@ -443,6 +456,7 @@ Public Class cCriteria
         g.v_veh_avg_min_HS = Me.v_veh_avg_min_HS
         g.v_veh_1s_delta_HS = Me.v_veh_1s_delta_HS
         g.tq_sum_1s_delta_HS = Me.tq_sum_1s_delta_HS
+        g.delta_n_eng_HS = Me.delta_n_eng_HS
 
         g.delta_t_tyre_max = Me.delta_t_tyre_max
         g.delta_rr_corr_max = Me.delta_rr_corr_max
diff --git a/CSE/IO/output.vb b/CSE/IO/output.vb
index 9d8ef0b..40f0874 100644
--- a/CSE/IO/output.vb
+++ b/CSE/IO/output.vb
@@ -387,6 +387,7 @@ Module output
             AddToErg(tCompErg.val_tq_f, fCompName(tCompErg.val_tq_f), fCompUnit(tCompErg.val_tq_f), "ErgValues")
             AddToErg(tCompErg.val_tq_1s, fCompName(tCompErg.val_tq_1s), fCompUnit(tCompErg.val_tq_1s), "ErgValues")
             AddToErg(tCompErg.val_beta, fCompName(tCompErg.val_beta), fCompUnit(tCompErg.val_beta), "ErgValues")
+            AddToErg(tCompErg.val_n_eng, fCompName(tCompErg.val_n_eng), fCompUnit(tCompErg.val_n_eng), "ErgValues")
             AddToErg(tCompErg.val_dist, fCompName(tCompErg.val_dist), fCompUnit(tCompErg.val_dist), "ErgValues")
         End If
 
@@ -400,6 +401,11 @@ Module output
             AddToErg(tCompErg.beta_abs, fCompName(tCompErg.beta_abs), fCompUnit(tCompErg.beta_abs), "ErgValues")
             AddToErg(tCompErg.v_air_sq, fCompName(tCompErg.v_air_sq), fCompUnit(tCompErg.v_air_sq), "ErgValues")
             AddToErg(tCompErg.n_eng, fCompName(tCompErg.n_eng), fCompUnit(tCompErg.n_eng), "ErgValues")
+            AddToErg(tCompErg.n_eng_1s_max, fCompName(tCompErg.n_eng_1s_max), fCompUnit(tCompErg.n_eng_1s_max), "ErgValues")
+            AddToErg(tCompErg.n_eng_1s_min, fCompName(tCompErg.n_eng_1s_min), fCompUnit(tCompErg.n_eng_1s_min), "ErgValues")
+            AddToErg(tCompErg.n_eng_float_max, fCompName(tCompErg.n_eng_float_max), fCompUnit(tCompErg.n_eng_float_max), "ErgValues")
+            AddToErg(tCompErg.n_eng_float_min, fCompName(tCompErg.n_eng_float_min), fCompUnit(tCompErg.n_eng_float_min), "ErgValues")
+            AddToErg(tCompErg.r_dyn, fCompName(tCompErg.r_dyn), fCompUnit(tCompErg.r_dyn), "ErgValues")
             AddToErg(tCompErg.omega_wh, fCompName(tCompErg.omega_wh), fCompUnit(tCompErg.omega_wh), "ErgValues")
             AddToErg(tCompErg.omega_p_wh, fCompName(tCompErg.omega_p_wh), fCompUnit(tCompErg.omega_p_wh), "ErgValues")
             AddToErg(tCompErg.tq_sum, fCompName(tCompErg.tq_sum), fCompUnit(tCompErg.tq_sum), "ErgValues")
-- 
GitLab