Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit bce9ff9c authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merging in latest from upstream (VECTO/vecto-sim:refs/heads/develop)

* commit '25cd6aaf':
  updating release notes
  updating version number
  make testcases compile and run
  introduce declaration contants for gearbox shifting parameters
  removed ExecutionMode.EngineOnly (Vecto 3)
  corrected: writing mod data (Vecto 2.2, Engine Only mode)
parents fbf702fd 25cd6aaf
No related branches found
No related tags found
No related merge requests found
Showing
with 123 additions and 101 deletions
No preview for this file type
No preview for this file type
...@@ -2,7 +2,13 @@ ...@@ -2,7 +2,13 @@
**VECTO 3.0.4** **VECTO 3.0.4**
***Build 565 (2016-07-19)***
- Bugfixes
+ AAUX HVAC Dialog does not store path to ActuationsMap and SSMSource
+ GUI: check for axle loads in declaration mode renders editing dialog useless
+ Vecto 2.2: Simulation aborts (Vecto terminates) when simulating EngineOnly cycles
+ Vecto 3: Building SimulationRun EngineOnly simulation failed
***Build 544 (2016-06-28)*** ***Build 544 (2016-06-28)***
......
...@@ -762,11 +762,20 @@ Public Class cMOD ...@@ -762,11 +762,20 @@ Public Class cMOD
If .EngState(t) = tEngState.Stopped Then If .EngState(t) = tEngState.Stopped Then
s.Append(Sepp & "0" & Sepp & "0") s.Append(Sepp & "0" & Sepp & "0")
Else Else
If t = 0 Then If Not VEC.EngOnly Then
s.Append(Sepp & nPeToM(.nU(t), GBX.FLD(Gear).Pfull(.nU(t))) & Sepp & nPeToM(.nU(t), ENG.FLD.Pdrag(.nU(t)))) If t = 0 Then
s.Append(Sepp & nPeToM(.nU(t), GBX.FLD(Gear).Pfull(.nU(t))) & Sepp & nPeToM(.nU(t), ENG.FLD.Pdrag(.nU(t))))
Else
s.Append(
Sepp & nPeToM(.nU(t), GBX.FLD(Gear).Pfull(.nU(t), .Pe(t - 1))) & Sepp & nPeToM(.nU(t), ENG.FLD.Pdrag(.nU(t))))
End If
Else Else
s.Append( If t = 0 Then
Sepp & nPeToM(.nU(t), GBX.FLD(Gear).Pfull(.nU(t), .Pe(t - 1))) & Sepp & nPeToM(.nU(t), ENG.FLD.Pdrag(.nU(t)))) s.Append(Sepp & nPeToM(.nU(t), ENG.FLD.Pfull(.nU(t))) & Sepp & nPeToM(.nU(t), ENG.FLD.Pdrag(.nU(t))))
Else
s.Append(
Sepp & nPeToM(.nU(t), ENG.FLD.Pfull(.nU(t), .Pe(t - 1))) & Sepp & nPeToM(.nU(t), ENG.FLD.Pdrag(.nU(t))))
End If
End If End If
End If End If
...@@ -785,10 +794,18 @@ Public Class cMOD ...@@ -785,10 +794,18 @@ Public Class cMOD
If .EngState(t) = tEngState.Stopped Then If .EngState(t) = tEngState.Stopped Then
s.Append(Sepp & "-" & Sepp & "-") s.Append(Sepp & "-" & Sepp & "-")
Else Else
If t = 0 Then If Not VEC.EngOnly Then
s.Append(Sepp & GBX.FLD(Gear).Pfull(.nU(t)) & Sepp & ENG.FLD.Pdrag(.nU(t))) If t = 0 Then
s.Append(Sepp & GBX.FLD(Gear).Pfull(.nU(t)) & Sepp & ENG.FLD.Pdrag(.nU(t)))
Else
s.Append(Sepp & GBX.FLD(Gear).Pfull(.nU(t), .Pe(t - 1)) & Sepp & ENG.FLD.Pdrag(.nU(t)))
End If
Else Else
s.Append(Sepp & GBX.FLD(Gear).Pfull(.nU(t), .Pe(t - 1)) & Sepp & ENG.FLD.Pdrag(.nU(t))) If t = 0 Then
s.Append(Sepp & ENG.FLD.Pfull(.nU(t)) & Sepp & ENG.FLD.Pdrag(.nU(t)))
Else
s.Append(Sepp & ENG.FLD.Pfull(.nU(t), .Pe(t - 1)) & Sepp & ENG.FLD.Pdrag(.nU(t)))
End If
End If End If
End If End If
...@@ -848,23 +865,23 @@ Public Class cMOD ...@@ -848,23 +865,23 @@ Public Class cMOD
'AA-TB 'AA-TB
'Advanced Auxiliaries 'Advanced Auxiliaries
s.Append( s.Append(
Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_NonSmartAlternatorsEfficiency(t).ToString(), "")) Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_NonSmartAlternatorsEfficiency(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartIdleCurrent_Amps(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartIdleCurrent_Amps(t).ToString(), ""))
s.Append( s.Append(
Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartIdleAlternatorsEfficiency(t).ToString(), "")) Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartIdleAlternatorsEfficiency(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartTractionCurrent_Amps(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartTractionCurrent_Amps(t).ToString(), ""))
s.Append( s.Append(
Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartTractionAlternatorEfficiency(t).ToString(), "")) Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartTractionAlternatorEfficiency(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartOverrunCurrent_Amps(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartOverrunCurrent_Amps(t).ToString(), ""))
s.Append( s.Append(
Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartOverrunAlternatorEfficiency(t).ToString(), "")) Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_SmartOverrunAlternatorEfficiency(t).ToString(), ""))
s.Append( s.Append(
Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_CompressorFlowRate_LitrePerSec(t).ToString(), "")) Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_CompressorFlowRate_LitrePerSec(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_OverrunFlag(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_OverrunFlag(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_EngineIdleFlag(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_EngineIdleFlag(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_CompressorFlag(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_CompressorFlag(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_TotalCycleFC_Grams(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_TotalCycleFC_Grams(t).ToString(), ""))
s.Append(Sepp & If(vecto_global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_TotalCycleFC_Litres(t).ToString(), "")) s.Append(Sepp & If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_TotalCycleFC_Litres(t).ToString(), ""))
s.Append( s.Append(
Sepp & Sepp &
If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_AveragePowerDemandCrankHVACMechanicals(t).ToString(), "")) If(VECTO_Global.VEC.AuxiliaryAssembly <> "CLASSIC", AA_AveragePowerDemandCrankHVACMechanicals(t).ToString(), ""))
......
...@@ -35,6 +35,5 @@ namespace TUGraz.VectoCommon.Models ...@@ -35,6 +35,5 @@ namespace TUGraz.VectoCommon.Models
{ {
Engineering, Engineering,
Declaration, Declaration,
EngineOnly,
} }
} }
\ No newline at end of file
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
*/ */
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.0.3.544")] [assembly: AssemblyVersion("3.0.3.565")]
[assembly: AssemblyFileVersion("3.0.3.544")] [assembly: AssemblyFileVersion("3.0.3.565")]
...@@ -38,6 +38,7 @@ using TUGraz.VectoCommon.InputData; ...@@ -38,6 +38,7 @@ using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils; using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.InputData.Impl;
using TUGraz.VectoCore.Models.Declaration;
namespace TUGraz.VectoCore.InputData.FileIO.JSON namespace TUGraz.VectoCore.InputData.FileIO.JSON
{ {
...@@ -214,7 +215,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -214,7 +215,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get get
{ {
return Body["DownshiftAferUpshiftDelay"] == null return Body["DownshiftAferUpshiftDelay"] == null
? 10.SI<Second>() ? DeclarationData.Gearbox.DownshiftAfterUpshiftDelay
: Body.GetEx<double>("DownshiftAferUpshiftDelay").SI<Second>(); : Body.GetEx<double>("DownshiftAferUpshiftDelay").SI<Second>();
} }
} }
...@@ -224,7 +225,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -224,7 +225,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get get
{ {
return Body["UpshiftAfterDownshiftDelay"] == null return Body["UpshiftAfterDownshiftDelay"] == null
? 10.SI<Second>() ? DeclarationData.Gearbox.UpshiftAfterDownshiftDelay
: Body.GetEx<double>("UpshiftAfterDownshiftDelay").SI<Second>(); : Body.GetEx<double>("UpshiftAfterDownshiftDelay").SI<Second>();
} }
} }
...@@ -234,7 +235,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ...@@ -234,7 +235,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get get
{ {
return Body["UpshiftMinAcceleration"] == null return Body["UpshiftMinAcceleration"] == null
? 0.1.SI<MeterPerSquareSecond>() ? DeclarationData.Gearbox.UpshiftMinAcceleration
: Body.GetEx<double>("UpshiftMinAcceleration").SI<MeterPerSquareSecond>(); : Body.GetEx<double>("UpshiftMinAcceleration").SI<MeterPerSquareSecond>();
} }
} }
......
...@@ -223,9 +223,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -223,9 +223,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
}); });
}).ToDictionary(kv => kv.Key, kv => kv.Value); }).ToDictionary(kv => kv.Key, kv => kv.Value);
retVal.DownshiftAfterUpshiftDelay = 10.SI<Second>(); retVal.DownshiftAfterUpshiftDelay = DeclarationData.Gearbox.DownshiftAfterUpshiftDelay;
retVal.UpshiftAfterDownshiftDelay = 10.SI<Second>(); retVal.UpshiftAfterDownshiftDelay = DeclarationData.Gearbox.UpshiftAfterDownshiftDelay;
retVal.UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>(); retVal.UpshiftMinAcceleration =DeclarationData.Gearbox.UpshiftMinAcceleration;
return retVal; return retVal;
} }
......
...@@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl ...@@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
JobName = InputDataProvider.JobInputData().JobName, JobName = InputDataProvider.JobInputData().JobName,
EngineData = dao.CreateEngineData(InputDataProvider.EngineInputData), EngineData = dao.CreateEngineData(InputDataProvider.EngineInputData),
Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, CycleType.EngineOnly, cycle.Name, false), Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, CycleType.EngineOnly, cycle.Name, false),
ExecutionMode = ExecutionMode.EngineOnly ExecutionMode = ExecutionMode.Engineering
}; };
yield return simulationRunData; yield return simulationRunData;
} }
......
...@@ -262,6 +262,9 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -262,6 +262,9 @@ namespace TUGraz.VectoCore.Models.Declaration
private static double ShiftPolygonEngineFldMargin = 0.98; private static double ShiftPolygonEngineFldMargin = 0.98;
public static readonly Second MinTimeBetweenGearshifts = 2.SI<Second>(); public static readonly Second MinTimeBetweenGearshifts = 2.SI<Second>();
public static readonly Second DownshiftAfterUpshiftDelay = 10.SI<Second>();
public static readonly Second UpshiftAfterDownshiftDelay = 10.SI<Second>();
public static readonly MeterPerSquareSecond UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>();
/// <summary> /// <summary>
/// computes the shift polygons for a single gear according to the whitebook 2016 /// computes the shift polygons for a single gear according to the whitebook 2016
......
...@@ -58,19 +58,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -58,19 +58,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public VehicleContainer Build(VectoRunData data) public VehicleContainer Build(VectoRunData data)
{ {
if (data.ExecutionMode == ExecutionMode.EngineOnly) { switch (data.Cycle.CycleType) {
return BuildEngineOnly(data); case CycleType.EngineOnly:
return BuildEngineOnly(data);
case CycleType.PWheel:
return BuildPWheel(data);
case CycleType.MeasuredSpeed:
return BuildMeasuredSpeed(data);
case CycleType.MeasuredSpeedGear:
return BuildMeasuredSpeedGear(data);
} }
if (data.Cycle.CycleType == CycleType.PWheel) {
return BuildPWheel(data);
}
if (data.Cycle.CycleType == CycleType.MeasuredSpeed) {
return BuildMeasuredSpeed(data);
}
if (data.Cycle.CycleType == CycleType.MeasuredSpeedGear) {
return BuildMeasuredSpeedGear(data);
}
return BuildFullPowertrain(data); return BuildFullPowertrain(data);
} }
...@@ -78,8 +75,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -78,8 +75,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
{ {
if (data.Cycle.CycleType != CycleType.EngineOnly) if (data.Cycle.CycleType != CycleType.EngineOnly)
throw new VectoException("CycleType must be EngineOnly."); throw new VectoException("CycleType must be EngineOnly.");
var container = new VehicleContainer(ExecutionMode.EngineOnly, _modData, _sumWriter) { RunData = data }; var container = new VehicleContainer(ExecutionMode.Engineering, _modData, _sumWriter) { RunData = data };
var cycle = new PowertrainDrivingCycle(container, data.Cycle); var cycle = new PowertrainDrivingCycle(container, data.Cycle);
var directAux = new EngineAuxiliary(container); var directAux = new EngineAuxiliary(container);
......
...@@ -54,6 +54,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -54,6 +54,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
private static int _jobNumberCounter; private static int _jobNumberCounter;
private readonly ExecutionMode _mode; private readonly ExecutionMode _mode;
private readonly bool _engineOnlyMode;
public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer,
DeclarationReport declarationReport = null) DeclarationReport declarationReport = null)
...@@ -80,14 +81,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -80,14 +81,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
if (engDataProvider == null) { if (engDataProvider == null) {
throw new VectoException("InputDataProvider does not implement Engineering interface"); throw new VectoException("InputDataProvider does not implement Engineering interface");
} }
DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider); if (engDataProvider.JobInputData().EngineOnlyMode) {
break; DataReader = new EngineOnlyVectoRunDataFactory(engDataProvider);
case ExecutionMode.EngineOnly: _engineOnlyMode = true;
var engineDataProvider = dataProvider as IEngineeringInputDataProvider; } else {
if (engineDataProvider == null) { DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider);
throw new VectoException("InputDataProvider does not implement Engineering interface");
} }
DataReader = new EngineOnlyVectoRunDataFactory(engineDataProvider);
break; break;
default: default:
throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode); throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode);
...@@ -118,17 +117,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -118,17 +117,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
foreach (var data in DataReader.NextRun()) { foreach (var data in DataReader.NextRun()) {
var d = data; var d = data;
Action<ModalDataContainer> addReportResult = writer => {
if (d.Report != null) {
d.Report.AddResult(d.Loading, d.Mission, writer);
}
};
IModalDataContainer modContainer = IModalDataContainer modContainer =
new ModalDataContainer(data, ModWriter, new ModalDataContainer(data, ModWriter,
addReportResult: writer => { addReportResult: _mode == ExecutionMode.Declaration ? addReportResult : null,
if (d.Report != null) { writeEngineOnly: _engineOnlyMode,
d.Report.AddResult(d.Loading, d.Mission, writer);
}
},
mode: _mode,
filter: modDataFilter) { filter: modDataFilter) {
WriteAdvancedAux = data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced, WriteAdvancedAux = data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced,
WriteModalResults = WriteModalResults WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults
}; };
var current = i++; var current = i++;
var builder = new PowertrainBuilder(modContainer, (writer, mass, loading) => var builder = new PowertrainBuilder(modContainer, (writer, mass, loading) =>
......
...@@ -266,7 +266,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -266,7 +266,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public void CommitSimulationStep(Second time, Second simulationInterval) public void CommitSimulationStep(Second time, Second simulationInterval)
{ {
Log.Info("VehicleContainer committing simulation. time: {0}, dist: {1}, speed: {2}", time, Log.Info("VehicleContainer committing simulation. time: {0}, dist: {1}, speed: {2}", time,
ExecutionMode == ExecutionMode.EngineOnly ? null : Distance, VehicleSpeed); Distance, VehicleSpeed);
foreach (var component in _components) { foreach (var component in _components) {
component.Item2.CommitSimulationStep(ModData); component.Item2.CommitSimulationStep(ModData);
......
...@@ -45,7 +45,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -45,7 +45,7 @@ namespace TUGraz.VectoCore.OutputData
{ {
public class ModalDataContainer : IModalDataContainer public class ModalDataContainer : IModalDataContainer
{ {
private readonly ExecutionMode _mode; private readonly bool _writeEngineOnly;
private readonly IModalDataFilter[] _filters; private readonly IModalDataFilter[] _filters;
private readonly Action<ModalDataContainer> _addReportResult; private readonly Action<ModalDataContainer> _addReportResult;
internal ModalResults Data { get; set; } internal ModalResults Data { get; set; }
...@@ -64,15 +64,15 @@ namespace TUGraz.VectoCore.OutputData ...@@ -64,15 +64,15 @@ namespace TUGraz.VectoCore.OutputData
public bool WriteAdvancedAux { get; set; } public bool WriteAdvancedAux { get; set; }
public ModalDataContainer(string runName, IModalDataWriter writer, ExecutionMode mode) public ModalDataContainer(string runName, IModalDataWriter writer, bool writeEngineOnly = false)
: this(runName, "", "", writer, _ => { }, mode) {} : this(runName, "", "", writer, _ => { }, writeEngineOnly) {}
public ModalDataContainer(VectoRunData runData, IModalDataWriter writer, Action<ModalDataContainer> addReportResult, public ModalDataContainer(VectoRunData runData, IModalDataWriter writer, Action<ModalDataContainer> addReportResult,
ExecutionMode mode, params IModalDataFilter[] filter) bool writeEngineOnly, params IModalDataFilter[] filter)
: this(runData.JobName, runData.Cycle.Name, runData.ModFileSuffix, writer, addReportResult, mode, filter) {} : this(runData.JobName, runData.Cycle.Name, runData.ModFileSuffix, writer, addReportResult, writeEngineOnly, filter) {}
protected ModalDataContainer(string runName, string cycleName, string runSuffix, IModalDataWriter writer, protected ModalDataContainer(string runName, string cycleName, string runSuffix, IModalDataWriter writer,
Action<ModalDataContainer> addReportResult, ExecutionMode mode, params IModalDataFilter[] filters) Action<ModalDataContainer> addReportResult, bool writeEngineOnly, params IModalDataFilter[] filters)
{ {
HasTorqueConverter = false; HasTorqueConverter = false;
...@@ -81,9 +81,9 @@ namespace TUGraz.VectoCore.OutputData ...@@ -81,9 +81,9 @@ namespace TUGraz.VectoCore.OutputData
RunSuffix = runSuffix; RunSuffix = runSuffix;
_writer = writer; _writer = writer;
_mode = mode; _writeEngineOnly = writeEngineOnly;
_filters = filters; _filters = filters;
_addReportResult = addReportResult; _addReportResult = addReportResult ?? (x => { });
Data = new ModalResults(); Data = new ModalResults();
Auxiliaries = new Dictionary<string, DataColumn>(); Auxiliaries = new Dictionary<string, DataColumn>();
...@@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.OutputData
RunStatus = runStatus; RunStatus = runStatus;
if (_mode != ExecutionMode.EngineOnly) { if (!_writeEngineOnly) {
dataColumns.AddRange(new[] { dataColumns.AddRange(new[] {
ModalResultField.simulationInterval, ModalResultField.simulationInterval,
ModalResultField.dist, ModalResultField.dist,
...@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.grad ModalResultField.grad
}); });
} }
if (_mode != ExecutionMode.EngineOnly) { if (!_writeEngineOnly) {
dataColumns.AddRange(new[] { dataColumns.AddRange(new[] {
ModalResultField.Gear, ModalResultField.Gear,
}); });
...@@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.P_aux ModalResultField.P_aux
}); });
if (_mode != ExecutionMode.EngineOnly) { if (!_writeEngineOnly) {
dataColumns.AddRange(new[] { dataColumns.AddRange(new[] {
ModalResultField.P_gbx_in, ModalResultField.P_gbx_in,
ModalResultField.P_gbx_loss, ModalResultField.P_gbx_loss,
...@@ -166,7 +166,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -166,7 +166,7 @@ namespace TUGraz.VectoCore.OutputData
}); });
} }
} }
if (_mode != ExecutionMode.EngineOnly && WriteAdvancedAux) { if (!_writeEngineOnly && WriteAdvancedAux) {
dataColumns.AddRange(new[] { dataColumns.AddRange(new[] {
ModalResultField.AA_NonSmartAlternatorsEfficiency, ModalResultField.AA_NonSmartAlternatorsEfficiency,
ModalResultField.AA_SmartIdleCurrent_Amps, ModalResultField.AA_SmartIdleCurrent_Amps,
...@@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.FCAAUX, ModalResultField.FCFinal ModalResultField.FCAAUX, ModalResultField.FCFinal
}.Select(x => x.GetName())); }.Select(x => x.GetName()));
if (_mode != ExecutionMode.Declaration || WriteModalResults) { if (WriteModalResults) {
var filteredData = Data; var filteredData = Data;
foreach (var filter in _filters) { foreach (var filter in _filters) {
RunSuffix += "_" + filter.ID; RunSuffix += "_" + filter.ID;
...@@ -207,9 +207,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -207,9 +207,7 @@ namespace TUGraz.VectoCore.OutputData
_writer.WriteModData(RunName, CycleName, RunSuffix, new DataView(filteredData).ToTable(false, strCols.ToArray())); _writer.WriteModData(RunName, CycleName, RunSuffix, new DataView(filteredData).ToTable(false, strCols.ToArray()));
} }
if (_mode == ExecutionMode.Declaration) { _addReportResult(this);
_addReportResult(this);
}
} }
public IEnumerable<T> GetValues<T>(DataColumn col) public IEnumerable<T> GetValues<T>(DataColumn col)
......
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
*/ */
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.0.4.544")] [assembly: AssemblyVersion("3.0.4.565")]
[assembly: AssemblyFileVersion("3.0.4.544")] [assembly: AssemblyFileVersion("3.0.4.565")]
...@@ -72,7 +72,7 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -72,7 +72,7 @@ namespace TUGraz.VectoCore.Tests.Integration
bool overspeed = false) bool overspeed = false)
{ {
var fileWriter = new FileOutputWriter(modFileName); var fileWriter = new FileOutputWriter(modFileName);
var modData = new ModalDataContainer(modFileName, fileWriter, ExecutionMode.Engineering) { WriteAdvancedAux = true }; var modData = new ModalDataContainer(modFileName, fileWriter) { WriteAdvancedAux = true };
var container = new VehicleContainer(ExecutionMode.Engineering, modData) { var container = new VehicleContainer(ExecutionMode.Engineering, modData) {
RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData } RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData }
}; };
...@@ -133,9 +133,9 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -133,9 +133,9 @@ namespace TUGraz.VectoCore.Tests.Integration
StartTorqueReserve = 0.2, StartTorqueReserve = 0.2,
SkipGears = true, SkipGears = true,
TorqueReserve = 0.2, TorqueReserve = 0.2,
UpshiftAfterDownshiftDelay = 10.SI<Second>(), DownshiftAfterUpshiftDelay = DeclarationData.Gearbox.DownshiftAfterUpshiftDelay,
DownshiftAfterUpshiftDelay = 10.SI<Second>(), UpshiftAfterDownshiftDelay = DeclarationData.Gearbox.UpshiftAfterDownshiftDelay,
UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>() UpshiftMinAcceleration = DeclarationData.Gearbox.UpshiftMinAcceleration
}; };
} }
......
...@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.Integration
bool overspeed = false, KilogramSquareMeter gearBoxInertia = null) bool overspeed = false, KilogramSquareMeter gearBoxInertia = null)
{ {
var fileWriter = new FileOutputWriter(modFileName); var fileWriter = new FileOutputWriter(modFileName);
var modData = new ModalDataContainer(modFileName, fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer(modFileName, fileWriter);
var container = new VehicleContainer(ExecutionMode.Engineering, modData) { var container = new VehicleContainer(ExecutionMode.Engineering, modData) {
RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData } RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData }
}; };
...@@ -78,8 +78,9 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -78,8 +78,9 @@ namespace TUGraz.VectoCore.Tests.Integration
var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile);
var axleGearData = CreateAxleGearData(); var axleGearData = CreateAxleGearData();
var gearboxData = CreateGearboxData(); var gearboxData = CreateGearboxData();
if (gearBoxInertia != null) if (gearBoxInertia != null) {
gearboxData.Inertia = gearBoxInertia; gearboxData.Inertia = gearBoxInertia;
}
var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); var vehicleData = CreateVehicleData(3300.SI<Kilogram>());
var driverData = CreateDriverData(AccelerationFile, overspeed); var driverData = CreateDriverData(AccelerationFile, overspeed);
...@@ -134,9 +135,9 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -134,9 +135,9 @@ namespace TUGraz.VectoCore.Tests.Integration
StartTorqueReserve = 0.2, StartTorqueReserve = 0.2,
SkipGears = true, SkipGears = true,
TorqueReserve = 0.2, TorqueReserve = 0.2,
UpshiftAfterDownshiftDelay = 10.SI<Second>(), DownshiftAfterUpshiftDelay = DeclarationData.Gearbox.DownshiftAfterUpshiftDelay,
DownshiftAfterUpshiftDelay = 10.SI<Second>(), UpshiftAfterDownshiftDelay = DeclarationData.Gearbox.UpshiftAfterDownshiftDelay,
UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>() UpshiftMinAcceleration = DeclarationData.Gearbox.UpshiftMinAcceleration
}; };
} }
......
...@@ -86,9 +86,9 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle ...@@ -86,9 +86,9 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
var dt = 1.SI<Second>(); var dt = 1.SI<Second>();
var modFile = Path.GetFileNameWithoutExtension(modalResultFile); var modFile = Path.GetFileNameWithoutExtension(modalResultFile);
//Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); // + ".vmod"; //Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); // + ".vmod";
var fileWriter = new FileOutputWriter(modFile); var fileWriter = new FileOutputWriter(modFile);
var modData = new ModalDataContainer(modFile, fileWriter, ExecutionMode.EngineOnly); var modData = new ModalDataContainer(modFile, fileWriter, true) { WriteModalResults = true };
port.Initialize(data.Entries.First().Torque, data.Entries.First().AngularVelocity); port.Initialize(data.Entries.First().Torque, data.Entries.First().AngularVelocity);
foreach (var cycleEntry in data.Entries) { foreach (var cycleEntry in data.Entries) {
...@@ -112,7 +112,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle ...@@ -112,7 +112,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
{ {
var dataWriter = new MockModalDataContainer(); var dataWriter = new MockModalDataContainer();
var vehicleContainer = new VehicleContainer(ExecutionMode.EngineOnly); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering);
var engine = new CombustionEngine(vehicleContainer, MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile)); var engine = new CombustionEngine(vehicleContainer, MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile));
......
...@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
public void Test_FullPowertrain_SimpleGearbox() public void Test_FullPowertrain_SimpleGearbox()
{ {
var fileWriter = new FileOutputWriter("Coach_FullPowertrain_SimpleGearbox"); var fileWriter = new FileOutputWriter("Coach_FullPowertrain_SimpleGearbox");
var modData = new ModalDataContainer("Coach_FullPowertrain_SimpleGearbox", fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer("Coach_FullPowertrain_SimpleGearbox", fileWriter);
var container = new VehicleContainer(ExecutionMode.Engineering, modData); var container = new VehicleContainer(ExecutionMode.Engineering, modData);
var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile);
...@@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
public void Test_FullPowertrain() public void Test_FullPowertrain()
{ {
var fileWriter = new FileOutputWriter("Coach_FullPowertrain"); var fileWriter = new FileOutputWriter("Coach_FullPowertrain");
var modData = new ModalDataContainer("Coach_FullPowertrain", fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer("Coach_FullPowertrain", fileWriter);
var container = new VehicleContainer(ExecutionMode.Engineering, modData); var container = new VehicleContainer(ExecutionMode.Engineering, modData);
var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile);
...@@ -203,7 +203,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -203,7 +203,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
public void Test_FullPowertrain_LowSpeed() public void Test_FullPowertrain_LowSpeed()
{ {
var fileWriter = new FileOutputWriter("Coach_FullPowertrain_LowSpeed"); var fileWriter = new FileOutputWriter("Coach_FullPowertrain_LowSpeed");
var modData = new ModalDataContainer("Coach_FullPowertrain_LowSpeed", fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer("Coach_FullPowertrain_LowSpeed", fileWriter);
var container = new VehicleContainer(ExecutionMode.Engineering, modData); var container = new VehicleContainer(ExecutionMode.Engineering, modData);
var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile);
...@@ -318,9 +318,9 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -318,9 +318,9 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
StartAcceleration = 0.6.SI<MeterPerSquareSecond>(), StartAcceleration = 0.6.SI<MeterPerSquareSecond>(),
StartTorqueReserve = 0.2, StartTorqueReserve = 0.2,
TorqueReserve = 0.2, TorqueReserve = 0.2,
DownshiftAfterUpshiftDelay = 10.SI<Second>(), DownshiftAfterUpshiftDelay = DeclarationData.Gearbox.DownshiftAfterUpshiftDelay,
UpshiftAfterDownshiftDelay = 10.SI<Second>(), UpshiftAfterDownshiftDelay = DeclarationData.Gearbox.UpshiftAfterDownshiftDelay,
UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>() UpshiftMinAcceleration = DeclarationData.Gearbox.UpshiftMinAcceleration
}; };
} }
...@@ -356,9 +356,9 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -356,9 +356,9 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
StartAcceleration = 0.6.SI<MeterPerSquareSecond>(), StartAcceleration = 0.6.SI<MeterPerSquareSecond>(),
StartTorqueReserve = 0.2, StartTorqueReserve = 0.2,
TorqueReserve = 0.2, TorqueReserve = 0.2,
DownshiftAfterUpshiftDelay = 10.SI<Second>(), DownshiftAfterUpshiftDelay = DeclarationData.Gearbox.DownshiftAfterUpshiftDelay,
UpshiftAfterDownshiftDelay = 10.SI<Second>(), UpshiftAfterDownshiftDelay = DeclarationData.Gearbox.UpshiftAfterDownshiftDelay,
UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>() UpshiftMinAcceleration = DeclarationData.Gearbox.UpshiftMinAcceleration
}; };
} }
......
...@@ -74,7 +74,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -74,7 +74,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var driverData = CreateDriverData(AccelerationFile); var driverData = CreateDriverData(AccelerationFile);
var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload"); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload");
var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", fileWriter);
var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData);
var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy()); var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
...@@ -123,7 +123,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -123,7 +123,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var driverData = CreateDriverData(AccelerationFile); var driverData = CreateDriverData(AccelerationFile);
var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain"); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain");
var modData = new ModalDataContainer("Coach_MinimalPowertrain", fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer("Coach_MinimalPowertrain", fileWriter);
var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData);
var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData); var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData);
...@@ -197,7 +197,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns ...@@ -197,7 +197,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
var driverData = CreateDriverData(AccelerationFile2); var driverData = CreateDriverData(AccelerationFile2);
var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload"); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload");
var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", fileWriter, ExecutionMode.Engineering); var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", fileWriter);
var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData);
var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData); var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment