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

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

removed ExecutionMode.EngineOnly (Vecto 3)

parent 03bd8d6e
No related branches found
No related tags found
No related merge requests found
......@@ -35,6 +35,5 @@ namespace TUGraz.VectoCommon.Models
{
Engineering,
Declaration,
EngineOnly,
}
}
\ No newline at end of file
......@@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
JobName = InputDataProvider.JobInputData().JobName,
EngineData = dao.CreateEngineData(InputDataProvider.EngineInputData),
Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, CycleType.EngineOnly, cycle.Name, false),
ExecutionMode = ExecutionMode.EngineOnly
ExecutionMode = ExecutionMode.Engineering
};
yield return simulationRunData;
}
......
......@@ -59,25 +59,22 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public VehicleContainer Build(VectoRunData data)
{
if (data.ExecutionMode == ExecutionMode.EngineOnly) {
return BuildEngineOnly(data);
switch (data.Cycle.CycleType) {
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);
}
private VehicleContainer BuildEngineOnly(VectoRunData data)
{
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 directAux = new EngineAuxiliary(container);
......@@ -244,7 +241,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
private VehicleContainer BuildFullPowertrain(VectoRunData data)
{
if (data.Cycle.CycleType != CycleType.DistanceBased) {
throw new VectoSimulationException("Powertrain Builder cannot build FullPowertrain for Cycle Type {0}",
throw new VectoSimulationException("Powertrain Builder cannot build FullPowertrain for cycle type {0}",
data.Cycle.CycleType);
}
......
......@@ -54,6 +54,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
private static int _jobNumberCounter;
private readonly ExecutionMode _mode;
private readonly bool _engineOnlyMode;
public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer,
DeclarationReport declarationReport = null)
......@@ -80,14 +81,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
if (engDataProvider == null) {
throw new VectoException("InputDataProvider does not implement Engineering interface");
}
DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider);
break;
case ExecutionMode.EngineOnly:
var engineDataProvider = dataProvider as IEngineeringInputDataProvider;
if (engineDataProvider == null) {
throw new VectoException("InputDataProvider does not implement Engineering interface");
if (engDataProvider.JobInputData().EngineOnlyMode) {
DataReader = new EngineOnlyVectoRunDataFactory(engDataProvider);
_engineOnlyMode = true;
} else {
DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider);
}
DataReader = new EngineOnlyVectoRunDataFactory(engineDataProvider);
break;
default:
throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode);
......@@ -118,17 +117,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
foreach (var data in DataReader.NextRun()) {
var d = data;
Action<ModalDataContainer> addReportResult = writer => {
if (d.Report != null) {
d.Report.AddResult(d.Loading, d.Mission, writer);
}
};
IModalDataContainer modContainer =
new ModalDataContainer(data, ModWriter,
addReportResult: writer => {
if (d.Report != null) {
d.Report.AddResult(d.Loading, d.Mission, writer);
}
},
mode: _mode,
addReportResult: _mode == ExecutionMode.Declaration ? addReportResult : null,
writeEngineOnly: _engineOnlyMode,
filter: modDataFilter) {
WriteAdvancedAux = data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced,
WriteModalResults = WriteModalResults
WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults
};
var current = i++;
var builder = new PowertrainBuilder(modContainer, (writer, mass, loading) =>
......
......@@ -266,7 +266,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public void CommitSimulationStep(Second time, Second simulationInterval)
{
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) {
component.Item2.CommitSimulationStep(ModData);
......
......@@ -45,7 +45,7 @@ namespace TUGraz.VectoCore.OutputData
{
public class ModalDataContainer : IModalDataContainer
{
private readonly ExecutionMode _mode;
private readonly bool _writeEngineOnly;
private readonly IModalDataFilter[] _filters;
private readonly Action<ModalDataContainer> _addReportResult;
internal ModalResults Data { get; set; }
......@@ -64,15 +64,15 @@ namespace TUGraz.VectoCore.OutputData
public bool WriteAdvancedAux { get; set; }
public ModalDataContainer(string runName, IModalDataWriter writer, ExecutionMode mode)
: this(runName, "", "", writer, _ => { }, mode) {}
public ModalDataContainer(string runName, IModalDataWriter writer, bool writeEngineOnly = false)
: this(runName, "", "", writer, _ => { }, writeEngineOnly) {}
public ModalDataContainer(VectoRunData runData, IModalDataWriter writer, Action<ModalDataContainer> addReportResult,
ExecutionMode mode, params IModalDataFilter[] filter)
: this(runData.JobName, runData.Cycle.Name, runData.ModFileSuffix, writer, addReportResult, mode, filter) {}
bool writeEngineOnly, params IModalDataFilter[] filter)
: this(runData.JobName, runData.Cycle.Name, runData.ModFileSuffix, writer, addReportResult, writeEngineOnly, filter) {}
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;
......@@ -81,9 +81,9 @@ namespace TUGraz.VectoCore.OutputData
RunSuffix = runSuffix;
_writer = writer;
_mode = mode;
_writeEngineOnly = writeEngineOnly;
_filters = filters;
_addReportResult = addReportResult;
_addReportResult = addReportResult ?? (x => { });
Data = new ModalResults();
Auxiliaries = new Dictionary<string, DataColumn>();
......@@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.OutputData
RunStatus = runStatus;
if (_mode != ExecutionMode.EngineOnly) {
if (!_writeEngineOnly) {
dataColumns.AddRange(new[] {
ModalResultField.simulationInterval,
ModalResultField.dist,
......@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.grad
});
}
if (_mode != ExecutionMode.EngineOnly) {
if (!_writeEngineOnly) {
dataColumns.AddRange(new[] {
ModalResultField.Gear,
});
......@@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.P_aux
});
if (_mode != ExecutionMode.EngineOnly) {
if (!_writeEngineOnly) {
dataColumns.AddRange(new[] {
ModalResultField.P_gbx_in,
ModalResultField.P_gbx_loss,
......@@ -164,7 +164,7 @@ namespace TUGraz.VectoCore.OutputData
});
}
}
if (_mode != ExecutionMode.EngineOnly && WriteAdvancedAux) {
if (!_writeEngineOnly && WriteAdvancedAux) {
dataColumns.AddRange(new[] {
ModalResultField.AA_NonSmartAlternatorsEfficiency,
ModalResultField.AA_SmartIdleCurrent_Amps,
......@@ -196,7 +196,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.FCAAUX, ModalResultField.FCFinal
}.Select(x => x.GetName()));
if (_mode != ExecutionMode.Declaration || WriteModalResults) {
if (WriteModalResults) {
var filteredData = Data;
foreach (var filter in _filters) {
RunSuffix += "_" + filter.ID;
......@@ -205,9 +205,7 @@ namespace TUGraz.VectoCore.OutputData
_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)
......
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