From 6360a47bb7511b10d3868ebc70c53a24f4b103ed Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 26 Sep 2016 10:34:08 +0200
Subject: [PATCH] disable 1hz filter for time-based cycles, fix: log method:
 changed class name in app.config, fix: plotting shift polygons in job form,
 fix: plotting path for cycles in gui, not name

---
 VECTO/GUI/MainForm.Designer.vb                 |  2 +-
 VECTO/GUI/VectoJobForm.vb                      | 14 +++++++-------
 VECTO/app.config                               |  2 +-
 .../Models/Simulation/Impl/SimulatorFactory.cs | 18 +++++++++++++-----
 .../Data/DrivingCycleData.cs                   |  8 ++++++++
 .../VectoCore/OutputData/ModalDataContainer.cs |  2 +-
 6 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/VECTO/GUI/MainForm.Designer.vb b/VECTO/GUI/MainForm.Designer.vb
index 9bb73f5934..3919df2b4f 100644
--- a/VECTO/GUI/MainForm.Designer.vb
+++ b/VECTO/GUI/MainForm.Designer.vb
@@ -776,7 +776,7 @@ Partial Class MainForm
 		Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(198, 22)
 		Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder"
 		'
-		'F_MAINForm
+		'MainForm
 		'
 		Me.AcceptButton = Me.btStartV3
 		Me.ClientSize = New System.Drawing.Size(1045, 670)
diff --git a/VECTO/GUI/VectoJobForm.vb b/VECTO/GUI/VectoJobForm.vb
index 6b3457089f..34b75f2b06 100644
--- a/VECTO/GUI/VectoJobForm.vb
+++ b/VECTO/GUI/VectoJobForm.vb
@@ -451,7 +451,7 @@ Public Class VectoJobForm
 		Dim sb As ICycleData
 		For Each sb In vectoJob.Cycles
 			Dim lv0 As ListViewItem = New ListViewItem
-			lv0.Text = sb.Name
+			lv0.Text = GetRelativePath(sb.CycleData.Source, Path.GetDirectoryName(Path.GetFullPath(file))) 'sb.Name
 			LvCycles.Items.Add(lv0)
 		Next
 
@@ -1006,7 +1006,6 @@ lbDlog:
 	Public Sub UpdatePic()
 
 
-
 		TbHVCclass.Text = ""
 		TbVehCat.Text = ""
 		TbMass.Text = ""
@@ -1119,8 +1118,8 @@ lbDlog:
 				If gear.ShiftPolygon Is Nothing OrElse gear.ShiftPolygon.Rows.Count = 0 Then Continue For
 				Dim shiftPolygon As ShiftPolygon = ShiftPolygonReader.Create(gear.ShiftPolygon)
 				s = New Series
-				s.Points.DataBindXY(shiftPolygon.Upshift.Select(Function(x) x.AngularSpeed),
-									shiftPolygon.Upshift.Select(Function(x) x.Torque))
+				s.Points.DataBindXY(shiftPolygon.Upshift.Select(Function(x) x.AngularSpeed.AsRPM).ToArray(),
+									shiftPolygon.Upshift.Select(Function(x) x.Torque.Value()).ToArray())
 				s.ChartType = SeriesChartType.FastLine
 				s.BorderWidth = 2
 				s.Color = Color.DarkRed
@@ -1128,8 +1127,8 @@ lbDlog:
 				' MyChart.Series.Add(s) 'MQ 2016-06-20: do not plot shift lines in engine dialog
 
 				s = New Series
-				s.Points.DataBindXY(shiftPolygon.Downshift.Select(Function(x) x.AngularSpeed),
-									shiftPolygon.Downshift.Select(Function(x) x.Torque))
+				s.Points.DataBindXY(shiftPolygon.Downshift.Select(Function(x) x.AngularSpeed.AsRPM).ToArray(),
+									shiftPolygon.Downshift.Select(Function(x) x.Torque.Value()).ToArray())
 				s.ChartType = SeriesChartType.FastLine
 				s.BorderWidth = 2
 				s.Color = Color.DarkRed
@@ -1194,7 +1193,8 @@ lbDlog:
 		pmax = fullLoadCurve.MaxPower.Value() / 1000 'FLD0.Pfull(FLD0.EngineRatedSpeed)
 
 
-		TbEngTxt.Text = String.Format("{0} l {1} kw {2}", (engine.Displacement.Value() * 1000).ToString("0.0"), pmax.ToString("#"), engine.ModelName)
+		TbEngTxt.Text = String.Format("{0} l {1} kw {2}", (engine.Displacement.Value() * 1000).ToString("0.0"),
+									pmax.ToString("#"), engine.ModelName)
 
 		Dim fuelConsumptionMap As FuelConsumptionMap = FuelConsumptionMapReader.Create(engine.FuelConsumptionMap)
 
diff --git a/VECTO/app.config b/VECTO/app.config
index 45ad93e0f0..ab35e83a9d 100644
--- a/VECTO/app.config
+++ b/VECTO/app.config
@@ -12,7 +12,7 @@
 				internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
 		<targets async="true">
 			<target xsi:type="Console" name="ConsoleLogger" error="true" />
-			<target name="WarningLogger" xsi:type="MethodCall" className="VECTO.F_MAINForm, VECTO" methodName="LogMethod">
+			<target name="WarningLogger" xsi:type="MethodCall" className="TUGraz.VECTO.MainForm, VECTO" methodName="LogMethod">
 				<parameter layout="${level}" />
 				<parameter layout="${message}" />
 			</target>
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index f3646d7ad3..8a0c5358ff 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -112,7 +112,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var i = 0;
 			var modDataFilter = ModalResults1Hz
 				? new IModalDataFilter[] { new ModalDataContainer.ModalData1HzFilter() }
-				: new IModalDataFilter[0];
+				: null;
+
+			var warning1Hz = false;
 
 			foreach (var data in DataReader.NextRun()) {
 				var d = data;
@@ -121,14 +123,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						d.Report.AddResult(d.Loading, d.Mission, writer);
 					}
 				};
+				if (!data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz && !warning1Hz) {
+					Log.Error("Output filter for 1Hz results is only available for distance-based cycles!");
+					warning1Hz = true;
+				}
 				IModalDataContainer modContainer =
 					new ModalDataContainer(data, ModWriter,
 						addReportResult: _mode == ExecutionMode.Declaration ? addReportResult : null,
 						writeEngineOnly: _engineOnlyMode,
-						filter: modDataFilter) {
-						WriteAdvancedAux = data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced,
-						WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults
-					};
+						filter: data.Cycle.CycleType.IsDistanceBased() ? modDataFilter : null) {
+							WriteAdvancedAux = data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced,
+							WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults
+						};
 				var current = i++;
 				var builder = new PowertrainBuilder(modContainer, (writer, mass, loading) =>
 					SumData.Write(modContainer, d.JobName, string.Format("{0}-{1}", JobNumber, current),
@@ -146,6 +152,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					case CycleType.MeasuredSpeedGear:
 						run = new TimeRun(builder.Build(data));
 						break;
+					case CycleType.PTO:
+						throw new VectoException("PTO Cycle can not be used as main cycle!");
 					default:
 						throw new ArgumentOutOfRangeException("CycleType unknown:" + data.Cycle.CycleType);
 				}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs
index 75d461fe74..cfbca148fa 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/DrivingCycleData.cs
@@ -46,6 +46,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		PTO
 	}
 
+	public static class CycleTypeHelper
+	{
+		public static bool IsDistanceBased(this CycleType type)
+		{
+			return type == CycleType.DistanceBased;
+		}
+	}
+
 	public class DrivingCycleData : SimulationComponentData
 	{
 		internal DrivingCycleData() {}
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index dd02c872da..3bb27c3ef3 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -80,7 +80,7 @@ namespace TUGraz.VectoCore.OutputData
 			_writer = writer;
 
 			_writeEngineOnly = writeEngineOnly;
-			_filters = filters;
+			_filters = filters ?? new IModalDataFilter[0];
 			_addReportResult = addReportResult ?? (x => { });
 
 			Data = new ModalResults();
-- 
GitLab