From 59163859c65d3a3eca185115d85a23afc98a3d63 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Wed, 24 Feb 2016 09:01:53 +0100
Subject: [PATCH] moved pwheel test files

---
 .../Data/DrivingCycleData.cs                  |   5 +
 .../Impl/PowertrainDrivingCycle.cs            |  69 ++++++++----
 .../Models/Simulation/PwheelModeTests.cs      |   6 +-
 .../{Components => }/Pwheel/Atego.vveh        |   0
 .../{Components => }/Pwheel/Atego_ges.v2.vsig |   0
 .../Pwheel/G_85-6_6_7-0_17.vgbx               |   0
 .../Pwheel/Gear2_pt1_rep1_actual.vdri         |   0
 .../{Components => }/Pwheel/OM906.veng        |   0
 VectoCoreTest/TestData/Pwheel/Pwheel.vecto    |  10 +-
 .../TestData/Pwheel/Pwheel_ultimate.vecto     |  10 +-
 .../Pwheel/RD_#1_Pwheel_AuxStd.vdri           |   0
 .../Pwheel/ShiftPolygons_o9061750850E4.vgbs   |   0
 .../{Components => }/Pwheel/Truck.vacc        |   0
 .../axle_losses_r390_80_serie_1306.vtlm       |   0
 .../losses_g85_6_6696_0728_1401_loss_1.vtlm   |   0
 .../losses_g85_6_6696_0728_1401_loss_2.vtlm   |   0
 .../losses_g85_6_6696_0728_1401_loss_3.vtlm   |   0
 .../losses_g85_6_6696_0728_1401_loss_4.vtlm   |   0
 .../losses_g85_6_6696_0728_1401_loss_5.vtlm   |   0
 .../losses_g85_6_6696_0728_1401_loss_6.vtlm   |   0
 .../Pwheel/o9061750850E4.vfld                 |   0
 ...om9062101120_e4e5_b7c_sl2499_20110727.vmap |   0
 VectoCoreTest/VectoCoreTest.csproj            | 100 +++++++++---------
 23 files changed, 113 insertions(+), 87 deletions(-)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/Atego.vveh (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/Atego_ges.v2.vsig (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/G_85-6_6_7-0_17.vgbx (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/Gear2_pt1_rep1_actual.vdri (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/OM906.veng (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/RD_#1_Pwheel_AuxStd.vdri (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/ShiftPolygons_o9061750850E4.vgbs (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/Truck.vacc (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/axle_losses_r390_80_serie_1306.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/losses_g85_6_6696_0728_1401_loss_1.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/losses_g85_6_6696_0728_1401_loss_2.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/losses_g85_6_6696_0728_1401_loss_3.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/losses_g85_6_6696_0728_1401_loss_4.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/losses_g85_6_6696_0728_1401_loss_5.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/losses_g85_6_6696_0728_1401_loss_6.vtlm (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/o9061750850E4.vfld (100%)
 rename VectoCoreTest/TestData/{Components => }/Pwheel/om9062101120_e4e5_b7c_sl2499_20110727.vmap (100%)

diff --git a/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs b/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs
index 9dca737b35..318f23c114 100644
--- a/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs
+++ b/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs
@@ -143,6 +143,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			/// Power on the Wheels (only used in PWheel Mode).
 			/// </summary>
 			public Watt PWheel { get; set; }
+
+			/// <summary>
+			/// The angular velocity at the wheel. only used in PWheelCycle.
+			/// </summary>
+			public PerSecond WheelAngularVelocity;
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
index b86c492511..dc6c096ce4 100644
--- a/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
@@ -101,24 +101,43 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				};
 			}
 
-			var response = NextComponent.Request(absTime, dt, LeftSample.Current.Torque,
-				DataBus.ClutchClosed(absTime) ? LeftSample.Current.AngularVelocity : 0.SI<PerSecond>());
+			return DoHandleRequest(absTime, dt, LeftSample.Current.AngularVelocity);
+		}
 
-			AbsTime = absTime + dt;
+		protected IResponse DoHandleRequest(Second absTime, Second dt, PerSecond angularVelocity)
+		{
+			var response = NextComponent.Request(absTime, dt, LeftSample.Current.Torque, angularVelocity);
+
+			if (response is ResponseGearShift) {
+				response = NextComponent.Request(absTime, dt, LeftSample.Current.Torque, angularVelocity);
+			}
 
 			response.Switch()
 				.Case<ResponseUnderload>(r => {
-					Log.Warn("PowertrainDrivingCycle got an underload response. Using PDrag.");
-					response = new ResponseSuccess();
+					var torqueInterval = -r.Delta / (angularVelocity.IsEqual(0) ? 10.RPMtoRad() : angularVelocity);
+					var torque = SearchAlgorithm.Search(LeftSample.Current.Torque, r.Delta, torqueInterval,
+						getYValue: result => ((ResponseDryRun)result).DeltaDragLoad,
+						evaluateFunction: t => NextComponent.Request(absTime, dt, t, angularVelocity, true),
+						criterion: y =>
+							((ResponseDryRun)y).DeltaDragLoad.IsEqual(0.SI<Watt>(), Constants.SimulationSettings.EnginePowerSearchTolerance));
+					response = NextComponent.Request(absTime, dt, torque, angularVelocity);
 				})
 				.Case<ResponseOverload>(r => {
-					Log.Warn("PowertrainDrivingCycle got an underload response. Using PFullLoad.");
-					response = new ResponseSuccess();
+					angularVelocity = SearchAlgorithm.Search(angularVelocity, r.Delta, 50.RPMtoRad(),
+						getYValue: result => ((ResponseDryRun)result).DeltaFullLoad,
+						evaluateFunction: n => NextComponent.Request(absTime, dt, LeftSample.Current.Torque, n, true),
+						criterion: y => ((ResponseDryRun)y).DeltaFullLoad.Abs() < Constants.SimulationSettings.EnginePowerSearchTolerance);
+					response = NextComponent.Request(absTime, dt, LeftSample.Current.Torque, angularVelocity);
 				})
 				.Case<ResponseSuccess>(() => { })
 				.Default(
-					r => { throw new UnexpectedResponseException("PowertrainDrivingCycle received an unexpected response.", r); });
+					r => { throw new UnexpectedResponseException("MeasuredSpeedDrivingCycle received an unexpected response.", r); });
+
+			if (!(response is ResponseSuccess)) {
+				throw new UnexpectedResponseException("MeasuredSpeedDrivingCycle received an unexpected response.", response);
+			}
 
+			AbsTime = absTime + dt;
 			return response;
 		}
 
@@ -184,7 +203,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 	/// <summary>
 	/// Driving Cycle for the PWheel driving cycle.
 	/// </summary>
-	public class PWheelCycle : PowertrainDrivingCycle, IDriverInfo, IClutchInfo
+	public class PWheelCycle : PowertrainDrivingCycle, IDriverInfo
 	{
 		/// <summary>
 		/// Initializes a new instance of the <see cref="PWheelCycle"/> class.
@@ -194,14 +213,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		/// <param name="axleRatio">The axle ratio.</param>
 		/// <param name="gearRatios"></param>
 		public PWheelCycle(IVehicleContainer container, DrivingCycleData cycle, double axleRatio,
-			IReadOnlyDictionary<uint, double> gearRatios)
-			: base(container, cycle)
+			IDictionary<uint, double> gearRatios) : base(container, cycle)
 		{
+			// just to ensure that null-gear has ratio 1
+			gearRatios[0] = 1;
+
 			foreach (var entry in Data.Entries) {
-				// calculate angularVelocity on Wheel: n / (axelRatio * gearRatio)
-				entry.AngularVelocity = entry.AngularVelocity /
-										(entry.Gear == 0 ? axleRatio : axleRatio * gearRatios[entry.Gear]);
-				entry.Torque = entry.PWheel / entry.AngularVelocity;
+				entry.WheelAngularVelocity = entry.AngularVelocity / (axleRatio * gearRatios[entry.Gear]);
+				entry.Torque = entry.PWheel / entry.WheelAngularVelocity;
 			}
 		}
 
@@ -211,7 +230,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				return new ResponseCycleFinished { Source = this };
 			}
 
-			return base.Request(absTime, dt);
+			// interval exceeded
+			if ((absTime + dt).IsGreater(RightSample.Current.Time)) {
+				return new ResponseFailTimeInterval {
+					AbsTime = absTime,
+					Source = this,
+					DeltaT = RightSample.Current.Time - absTime
+				};
+			}
+
+			return DoHandleRequest(absTime, dt, LeftSample.Current.WheelAngularVelocity);
 		}
 
 
@@ -240,11 +268,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		}
 
 		#endregion
-
-		public virtual bool ClutchClosed(Second absTime)
-		{
-			return LeftSample.Current.Gear != 0;
-		}
 	}
 
 	/// <summary>
@@ -353,10 +376,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				})
 				.Case<ResponseSuccess>(() => { })
 				.Default(
-					r => { throw new UnexpectedResponseException("PowertrainDrivingCycle received an unexpected response.", r); });
+					r => { throw new UnexpectedResponseException("MeasuredSpeedDrivingCycle received an unexpected response.", r); });
 
 			if (!(response is ResponseSuccess)) {
-				throw new UnexpectedResponseException("PowertrainDrivingCycle received an unexpected response.", response);
+				throw new UnexpectedResponseException("MeasuredSpeedDrivingCycle received an unexpected response.", response);
 			}
 
 			AbsTime = absTime + dt;
diff --git a/VectoCoreTest/Models/Simulation/PwheelModeTests.cs b/VectoCoreTest/Models/Simulation/PwheelModeTests.cs
index a7907be469..887b6419cc 100644
--- a/VectoCoreTest/Models/Simulation/PwheelModeTests.cs
+++ b/VectoCoreTest/Models/Simulation/PwheelModeTests.cs
@@ -66,8 +66,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			Assert.AreEqual(container.CycleData.LeftSample.Time, 1.SI<Second>());
 			Assert.AreEqual(container.CycleData.RightSample.Time, 2.SI<Second>());
 
-			Assert.AreEqual(1748.RPMtoRad() / (2.3 * 3.5), container.CycleData.LeftSample.AngularVelocity);
-			Assert.AreEqual(1400.RPMtoRad() / (2.3 * 3.5), container.CycleData.RightSample.AngularVelocity);
+			Assert.AreEqual(1748.RPMtoRad() / (2.3 * 3.5), container.CycleData.LeftSample.WheelAngularVelocity);
+			Assert.AreEqual(1400.RPMtoRad() / (2.3 * 3.5), container.CycleData.RightSample.WheelAngularVelocity);
 
 			Assert.AreEqual(89.SI().Kilo.Watt, container.CycleData.LeftSample.PWheel);
 			Assert.AreEqual(120.SI().Kilo.Watt, container.CycleData.RightSample.PWheel);
@@ -177,7 +177,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 
 			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException)));
 
-			ResultFileHelper.TestModFile(@"TestData\Pwheel\Results\P_wheel_in\Atego_HDVCO2_RD_#1_AuxStd.vmod",
+			ResultFileHelper.TestModFile(@"TestData\Pwheel\Results\Atego_HDVCO2_RD_#1_AuxStd.vmod",
 				@"TestData\Pwheel\Pwheel_ultimate_RD_#1_Pwheel_AuxStd.vmod", testRowCount: false);
 		}
 	}
diff --git a/VectoCoreTest/TestData/Components/Pwheel/Atego.vveh b/VectoCoreTest/TestData/Pwheel/Atego.vveh
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/Atego.vveh
rename to VectoCoreTest/TestData/Pwheel/Atego.vveh
diff --git a/VectoCoreTest/TestData/Components/Pwheel/Atego_ges.v2.vsig b/VectoCoreTest/TestData/Pwheel/Atego_ges.v2.vsig
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/Atego_ges.v2.vsig
rename to VectoCoreTest/TestData/Pwheel/Atego_ges.v2.vsig
diff --git a/VectoCoreTest/TestData/Components/Pwheel/G_85-6_6_7-0_17.vgbx b/VectoCoreTest/TestData/Pwheel/G_85-6_6_7-0_17.vgbx
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/G_85-6_6_7-0_17.vgbx
rename to VectoCoreTest/TestData/Pwheel/G_85-6_6_7-0_17.vgbx
diff --git a/VectoCoreTest/TestData/Components/Pwheel/Gear2_pt1_rep1_actual.vdri b/VectoCoreTest/TestData/Pwheel/Gear2_pt1_rep1_actual.vdri
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/Gear2_pt1_rep1_actual.vdri
rename to VectoCoreTest/TestData/Pwheel/Gear2_pt1_rep1_actual.vdri
diff --git a/VectoCoreTest/TestData/Components/Pwheel/OM906.veng b/VectoCoreTest/TestData/Pwheel/OM906.veng
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/OM906.veng
rename to VectoCoreTest/TestData/Pwheel/OM906.veng
diff --git a/VectoCoreTest/TestData/Pwheel/Pwheel.vecto b/VectoCoreTest/TestData/Pwheel/Pwheel.vecto
index 1a36f8196a..12cfa75fe3 100644
--- a/VectoCoreTest/TestData/Pwheel/Pwheel.vecto
+++ b/VectoCoreTest/TestData/Pwheel/Pwheel.vecto
@@ -7,13 +7,13 @@
   },
   "Body": {
     "SavedInDeclMode": false,
-    "VehicleFile": "..\\Components\\Pwheel\\Atego.vveh",
-    "EngineFile": "..\\Components\\Pwheel\\OM906.veng",
-    "GearboxFile": "..\\Components\\Pwheel\\G_85-6_6_7-0_17.vgbx",
+    "VehicleFile": "Atego.vveh",
+    "EngineFile": "OM906.veng",
+    "GearboxFile": "G_85-6_6_7-0_17.vgbx",
     "Cycles": [
-      "..\\Components\\Pwheel\\Gear2_pt1_rep1_actual.vdri"
+      "Gear2_pt1_rep1_actual.vdri"
     ],
-    "VACC": "..\\Components\\Pwheel\\Truck.vacc",
+    "VACC": "Truck.vacc",
     "EngineOnlyMode": false,
     "StartStop": {
       "Enabled": false,
diff --git a/VectoCoreTest/TestData/Pwheel/Pwheel_ultimate.vecto b/VectoCoreTest/TestData/Pwheel/Pwheel_ultimate.vecto
index 75738a863d..bb14f7c6f2 100644
--- a/VectoCoreTest/TestData/Pwheel/Pwheel_ultimate.vecto
+++ b/VectoCoreTest/TestData/Pwheel/Pwheel_ultimate.vecto
@@ -7,13 +7,13 @@
   },
   "Body": {
     "SavedInDeclMode": false,
-    "VehicleFile": "..\\Components\\Pwheel\\Atego.vveh",
-    "EngineFile": "..\\Components\\Pwheel\\OM906.veng",
-    "GearboxFile": "..\\Components\\Pwheel\\G_85-6_6_7-0_17.vgbx",
+    "VehicleFile": "Atego.vveh",
+    "EngineFile": "OM906.veng",
+    "GearboxFile": "G_85-6_6_7-0_17.vgbx",
     "Cycles": [
-      "..\\Components\\Pwheel\\RD_#1_Pwheel_AuxStd.vdri"
+      "RD_#1_Pwheel_AuxStd.vdri"
     ],
-    "VACC": "..\\Components\\Pwheel\\Truck.vacc",
+    "VACC": "Truck.vacc",
     "EngineOnlyMode": false,
     "StartStop": {
       "Enabled": false,
diff --git a/VectoCoreTest/TestData/Components/Pwheel/RD_#1_Pwheel_AuxStd.vdri b/VectoCoreTest/TestData/Pwheel/RD_#1_Pwheel_AuxStd.vdri
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/RD_#1_Pwheel_AuxStd.vdri
rename to VectoCoreTest/TestData/Pwheel/RD_#1_Pwheel_AuxStd.vdri
diff --git a/VectoCoreTest/TestData/Components/Pwheel/ShiftPolygons_o9061750850E4.vgbs b/VectoCoreTest/TestData/Pwheel/ShiftPolygons_o9061750850E4.vgbs
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/ShiftPolygons_o9061750850E4.vgbs
rename to VectoCoreTest/TestData/Pwheel/ShiftPolygons_o9061750850E4.vgbs
diff --git a/VectoCoreTest/TestData/Components/Pwheel/Truck.vacc b/VectoCoreTest/TestData/Pwheel/Truck.vacc
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/Truck.vacc
rename to VectoCoreTest/TestData/Pwheel/Truck.vacc
diff --git a/VectoCoreTest/TestData/Components/Pwheel/axle_losses_r390_80_serie_1306.vtlm b/VectoCoreTest/TestData/Pwheel/axle_losses_r390_80_serie_1306.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/axle_losses_r390_80_serie_1306.vtlm
rename to VectoCoreTest/TestData/Pwheel/axle_losses_r390_80_serie_1306.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_1.vtlm b/VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_1.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_1.vtlm
rename to VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_1.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_2.vtlm b/VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_2.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_2.vtlm
rename to VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_2.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_3.vtlm b/VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_3.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_3.vtlm
rename to VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_3.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_4.vtlm b/VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_4.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_4.vtlm
rename to VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_4.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_5.vtlm b/VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_5.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_5.vtlm
rename to VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_5.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_6.vtlm b/VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_6.vtlm
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/losses_g85_6_6696_0728_1401_loss_6.vtlm
rename to VectoCoreTest/TestData/Pwheel/losses_g85_6_6696_0728_1401_loss_6.vtlm
diff --git a/VectoCoreTest/TestData/Components/Pwheel/o9061750850E4.vfld b/VectoCoreTest/TestData/Pwheel/o9061750850E4.vfld
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/o9061750850E4.vfld
rename to VectoCoreTest/TestData/Pwheel/o9061750850E4.vfld
diff --git a/VectoCoreTest/TestData/Components/Pwheel/om9062101120_e4e5_b7c_sl2499_20110727.vmap b/VectoCoreTest/TestData/Pwheel/om9062101120_e4e5_b7c_sl2499_20110727.vmap
similarity index 100%
rename from VectoCoreTest/TestData/Components/Pwheel/om9062101120_e4e5_b7c_sl2499_20110727.vmap
rename to VectoCoreTest/TestData/Pwheel/om9062101120_e4e5_b7c_sl2499_20110727.vmap
diff --git a/VectoCoreTest/VectoCoreTest.csproj b/VectoCoreTest/VectoCoreTest.csproj
index 254ef155eb..3da68a2728 100644
--- a/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCoreTest/VectoCoreTest.csproj
@@ -230,57 +230,6 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="TestData\Components\Indirect Gear.vtlm" />
-    <None Include="TestData\Components\Pwheel\Atego.vveh">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\Atego_ges.v2.vsig">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\axle_losses_r390_80_serie_1306.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\Gear2_pt1_rep1_actual.vdri">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\G_85-6_6_7-0_17.vgbx">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\losses_g85_6_6696_0728_1401_loss_1.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\losses_g85_6_6696_0728_1401_loss_2.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\losses_g85_6_6696_0728_1401_loss_3.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\losses_g85_6_6696_0728_1401_loss_4.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\losses_g85_6_6696_0728_1401_loss_5.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\losses_g85_6_6696_0728_1401_loss_6.vtlm">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\o9061750850E4.vfld">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\OM906.veng">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\om9062101120_e4e5_b7c_sl2499_20110727.vmap">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\RD_#1_Pwheel_AuxStd.vdri">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\ShiftPolygons_o9061750850E4.vgbs">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="TestData\Components\Pwheel\Truck.vacc">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
     <None Include="TestData\Components\Retarder.vrlm">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -947,12 +896,57 @@
     <None Include="TestData\MeasuredSpeed\Vehicle.vveh">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Pwheel\Atego.vveh">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\Atego_ges.v2.vsig">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\axle_losses_r390_80_serie_1306.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\Gear2_pt1_rep1_actual.vdri">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\G_85-6_6_7-0_17.vgbx">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\losses_g85_6_6696_0728_1401_loss_1.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\losses_g85_6_6696_0728_1401_loss_2.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\losses_g85_6_6696_0728_1401_loss_3.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\losses_g85_6_6696_0728_1401_loss_4.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\losses_g85_6_6696_0728_1401_loss_5.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\losses_g85_6_6696_0728_1401_loss_6.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\o9061750850E4.vfld">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\OM906.veng">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\om9062101120_e4e5_b7c_sl2499_20110727.vmap">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Pwheel\Pwheel.vecto">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="TestData\Pwheel\Pwheel_ultimate.vecto">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Pwheel\RD_#1_Pwheel_AuxStd.vdri">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Pwheel\Results\Atego_ges.v2.vsum">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -962,6 +956,10 @@
     <None Include="TestData\Pwheel\Results\Atego_HDVCO2_RD_#1_AuxStd.vmod">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Pwheel\ShiftPolygons_o9061750850E4.vgbs">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Pwheel\Truck.vacc" />
     <None Include="TestData\Results\Engineering\24t Coach.vsum">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-- 
GitLab