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

Skip to content
Snippets Groups Projects
Commit 71814ea3 authored by Harald MARTINI's avatar Harald MARTINI
Browse files

report was written before the simulation was finished in charge sustaining it mode

parent 9251b474
No related branches found
No related tags found
No related merge requests found
...@@ -192,7 +192,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ...@@ -192,7 +192,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
Run(); Run();
}, },
this, this,
() => Container.FinishSingleSimulationRun()) ?? false; () => {
Container.RunData.Report.PrepareResult(null); //<- increase number of expected results;
Container.FinishSingleSimulationRun();
}) ?? false;
if (!runAgain) { if (!runAgain) {
Container.FinishSimulationRun(); Container.FinishSimulationRun();
WritingResultsDone = true; WritingResultsDone = true;
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
*/ */
using System.Runtime.CompilerServices;
using Ninject.Extensions.Factory; using Ninject.Extensions.Factory;
using Ninject.Modules; using Ninject.Modules;
using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.InputData;
...@@ -65,7 +66,7 @@ namespace TUGraz.VectoCore.Models.Simulation ...@@ -65,7 +66,7 @@ namespace TUGraz.VectoCore.Models.Simulation
internal class NullDeclarationReport : IDeclarationReport internal class NullDeclarationReport : IDeclarationReport
{ {
#region Implementation of IDeclarationReport #region Implementation of IDeclarationReport
private int _addedResults = 0;
public void InitializeReport(VectoRunData modelData) public void InitializeReport(VectoRunData modelData)
{ {
...@@ -76,9 +77,10 @@ namespace TUGraz.VectoCore.Models.Simulation ...@@ -76,9 +77,10 @@ namespace TUGraz.VectoCore.Models.Simulation
} }
[MethodImpl(MethodImplOptions.Synchronized)]
public void AddResult(VectoRunData runData, IModalDataContainer modData) public void AddResult(VectoRunData runData, IModalDataContainer modData)
{ {
_addedResults++;
} }
public IPrimaryVehicleInformationInputDataProvider PrimaryResults { get; set; } public IPrimaryVehicleInformationInputDataProvider PrimaryResults { get; set; }
......
...@@ -185,7 +185,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -185,7 +185,7 @@ namespace TUGraz.VectoCore.OutputData
/// <summary> /// <summary>
/// Class for creating a declaration report. /// Class for creating a declaration report.
/// </summary> /// </summary>
public abstract class DeclarationReport<T> : IDeclarationReport where T : IResultEntry, new() public abstract class DeclarationReport<T> : IDeclarationReport where T : class, IResultEntry, new()
{ {
public class ResultContainer<TEntry> public class ResultContainer<TEntry>
{ {
...@@ -250,8 +250,15 @@ namespace TUGraz.VectoCore.OutputData ...@@ -250,8 +250,15 @@ namespace TUGraz.VectoCore.OutputData
var entry = new T(); var entry = new T();
entry.Initialize(runData); entry.Initialize(runData);
lock (Results) { lock (Results) {
var exístingResult = Results.SingleOrDefault(e =>
e.Mission == entry.Mission && e.LoadingType == entry.LoadingType && e.OVCMode == entry.OVCMode);
if (exístingResult != null) {
//We already have a result for this run stored, this can happen with iterative runs, in this case we have to remove the old result
Results.Remove(exístingResult);
}
Results.Add(entry); Results.Add(entry);
} }
DoStoreResult(entry, runData, modData); DoStoreResult(entry, runData, modData);
} }
......
...@@ -113,7 +113,7 @@ public class LorrySimulation ...@@ -113,7 +113,7 @@ public class LorrySimulation
[TestCase(@"MediumLorry\PEV\Group5_ PEV_E3_ES_Standard.xml")] [TestCase(@"MediumLorry\PEV\Group5_ PEV_E3_ES_Standard.xml")]
public void MediumLorrySimulationTest(string jobFile) public void MediumLorrySimulationTest(string jobFile)
{ {
RunSimulation(jobFile, true); RunSimulation(jobFile, true, false);
} }
[TestCase(@"HeavyLorry\Exempted\exempted_heavy_lorry.xml")] [TestCase(@"HeavyLorry\Exempted\exempted_heavy_lorry.xml")]
...@@ -234,6 +234,7 @@ public class LorrySimulation ...@@ -234,6 +234,7 @@ public class LorrySimulation
} }
} }
#region VSUM_HELPER
private void GetEmptySumAndModData(string jobFile, out SummaryDataContainer sumDataContainer, out IVectoRun run, private void GetEmptySumAndModData(string jobFile, out SummaryDataContainer sumDataContainer, out IVectoRun run,
out TableData modData, out TableData sumData) out TableData modData, out TableData sumData)
{ {
...@@ -450,7 +451,7 @@ public class LorrySimulation ...@@ -450,7 +451,7 @@ public class LorrySimulation
SearchForPattern(sumData,GbxTimeShareFields()); SearchForPattern(sumData,GbxTimeShareFields());
} }
} }
#endregion
[TestCase(@"HeavyLorry\S-HEV\Group2_HEV_S4_invalid_pto.xml")] [TestCase(@"HeavyLorry\S-HEV\Group2_HEV_S4_invalid_pto.xml")]
[TestCase(@"HeavyLorry\PEV\PEV_heavyLorry_E3_pto_transmission_invalid.xml")] [TestCase(@"HeavyLorry\PEV\PEV_heavyLorry_E3_pto_transmission_invalid.xml")]
...@@ -505,7 +506,8 @@ public class LorrySimulation ...@@ -505,7 +506,8 @@ public class LorrySimulation
[TestCase(Group5_HEV_P3_OVC, 20)] [TestCase(Group5_HEV_P3_OVC, 20)]
[TestCase(Group5_HEV_P4_OVC, 20)] [TestCase(Group5_HEV_P4_OVC, 20)]
[TestCase(Group5_HEV_P2_5_OVC, 20)] [TestCase(Group5_HEV_P2_5_OVC, 20)]
public void PHEV_ChargeSustainingIt(string jobFile, int nrRuns) [TestCase(@"MediumLorry\P-HEV\Group5_HEV_P3_ovc.xml", 8, MissionType.UrbanDelivery, LoadingType.LowLoading)]
public void PHEV_ChargeSustainingIt(string jobFile, int nrRuns, MissionType? missionType = MissionType.UrbanDelivery, LoadingType? loadingType = LoadingType.ReferenceLoad)
{ {
var jobContainer = GetJobContainer(jobFile, nrRuns, out var fileWriter, out var runs, out var sumDataContainer); var jobContainer = GetJobContainer(jobFile, nrRuns, out var fileWriter, out var runs, out var sumDataContainer);
...@@ -514,7 +516,7 @@ public class LorrySimulation ...@@ -514,7 +516,7 @@ public class LorrySimulation
runs = runs.Where(run => { runs = runs.Where(run => {
var rd = run.GetContainer().RunData; var rd = run.GetContainer().RunData;
return rd.OVCMode == VectoRunData.OvcHevMode.ChargeSustaining && return rd.OVCMode == VectoRunData.OvcHevMode.ChargeSustaining &&
rd.Mission.MissionType == MissionType.UrbanDelivery && rd.Loading == LoadingType.ReferenceLoad; rd.Mission.MissionType == MissionType.UrbanDelivery && rd.Loading == loadingType;
}).ToList(); }).ToList();
jobContainer.AddRun(runs.Single()); jobContainer.AddRun(runs.Single());
...@@ -557,18 +559,17 @@ public class LorrySimulation ...@@ -557,18 +559,17 @@ public class LorrySimulation
[TestCase(@"HeavyLorry\P-HEV\Group5_HEV_IHPC.xml", 20)] [TestCase(@"HeavyLorry\P-HEV\Group5_HEV_IHPC.xml", 20)]
[TestCase(@"HeavyLorry\P-HEV\Group5_HEV_P2_OVC_stefan.xml", 20, MissionType.UrbanDelivery, LoadingType.LowLoading)] [TestCase(@"HeavyLorry\P-HEV\Group5_HEV_P2_OVC_stefan.xml", 20, MissionType.UrbanDelivery, LoadingType.LowLoading)]
[TestCase(@"HeavyLorry\P-HEV\Group5_HEV_P3_OVC_stefan.xml", 20)] [TestCase(@"HeavyLorry\P-HEV\Group5_HEV_P3_OVC_stefan.xml", 20)]
public void PHEV_ChargeDepleting(string jobFile, int nrRuns, MissionType? missionType = null, LoadingType? loadingType = null) public void PHEV_ChargeDepleting(string jobFile, int nrRuns, MissionType? missionType = MissionType.UrbanDelivery, LoadingType? loadingType = LoadingType.ReferenceLoad)
{ {
var jobContainer = GetJobContainer(jobFile, nrRuns, out var fileWriter, out var runs, out var sumDataContainer); var jobContainer = GetJobContainer(jobFile, nrRuns, out var fileWriter, out var runs, out var sumDataContainer);
var mission = missionType ?? MissionType.UrbanDelivery;
var loading = loadingType ?? LoadingType.ReferenceLoad;
Assert.AreEqual(0, runs.Count(r => r.GetContainer().RunData.OVCMode == VectoRunData.OvcHevMode.NotApplicable)); Assert.AreEqual(0, runs.Count(r => r.GetContainer().RunData.OVCMode == VectoRunData.OvcHevMode.NotApplicable));
runs = runs.Where(run => { runs = runs.Where(run => {
var rd = run.GetContainer().RunData; var rd = run.GetContainer().RunData;
return rd.OVCMode == VectoRunData.OvcHevMode.ChargeDepleting && return rd.OVCMode == VectoRunData.OvcHevMode.ChargeDepleting &&
rd.Mission.MissionType == mission && rd.Loading == loading; rd.Mission.MissionType == missionType && rd.Loading == loadingType;
}).ToList(); }).ToList();
jobContainer.AddRun(runs.Single()); jobContainer.AddRun(runs.Single());
......
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