Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

updating testcase documentation and busaux test descriptions

parent 21b723c9
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -64,9 +64,9 @@ namespace TUGraz.VectoCore.Tests.Reports ...@@ -64,9 +64,9 @@ namespace TUGraz.VectoCore.Tests.Reports
// constant driving // constant driving
var n_ice = 800.RPMtoRad(); var n_ice = 800.RPMtoRad();
var t_ice = 400.SI<NewtonMeter>(); var t_ice = 400.SI<NewtonMeter>();
var T1 = 0.SI<Second>(); var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
var T2 = 0.SI<Second>(); var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
var T3 = 0.SI<Second>(); var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
var P_off = 300.SI<Watt>(); var P_off = 300.SI<Watt>();
var P_on = 900.SI<Watt>(); var P_on = 900.SI<Watt>();
...@@ -221,9 +221,9 @@ namespace TUGraz.VectoCore.Tests.Reports ...@@ -221,9 +221,9 @@ namespace TUGraz.VectoCore.Tests.Reports
// constant driving // constant driving
var n_ice = 800.RPMtoRad(); var n_ice = 800.RPMtoRad();
var t_ice = 400.SI<NewtonMeter>(); var t_ice = 400.SI<NewtonMeter>();
var T1 = 0.SI<Second>(); var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
var T2 = 0.SI<Second>(); var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
var T3 = 0.SI<Second>(); var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
var P_off = 300.SI<Watt>(); var P_off = 300.SI<Watt>();
var P_on = 900.SI<Watt>(); var P_on = 900.SI<Watt>();
...@@ -355,6 +355,169 @@ namespace TUGraz.VectoCore.Tests.Reports ...@@ -355,6 +355,169 @@ namespace TUGraz.VectoCore.Tests.Reports
Assert.AreEqual(fcModSum + fcEssDrivingOff + fcEssDrivingOn, f.FcFinal.Value(), 1e-6); Assert.AreEqual(fcModSum + fcEssDrivingOff + fcEssDrivingOn, f.FcFinal.Value(), 1e-6);
} }
[TestCase()]
public void TestAuxESSEngineStart_ModDataCorrection()
{
var runData = GetRunData();
runData.JobName = new StackTrace().GetFrame(0).GetMethod().Name;
var writer = new FileOutputWriter(".");
var modData = new ModalDataContainer(runData, writer, null) {
WriteModalResults = true
};
var fuel = runData.EngineData.Fuels[0];
var absTime = 0.SI<Second>();
var rnd = new Random(210629);
Second dt;
var i = 0;
// constant driving
var n_ice = 800.RPMtoRad();
var t_ice = 400.SI<NewtonMeter>();
var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
Second tStart = null;
var P_off = 300.SI<Watt>();
var P_on = 900.SI<Watt>();
var P_ICEStart = 20000.SI<Watt>();
for (; i < 100; i++) {
dt = (rnd.NextDouble() * 0.2 + 0.4).SI<Second>();
T1 += dt;
modData[ModalResultField.time] = absTime + dt / 2;
modData[ModalResultField.simulationInterval] = dt;
modData[ModalResultField.v_act] = 50.KMPHtoMeterPerSecond();
modData[ModalResultField.ICEOn] = true;
modData[ModalResultField.n_ice_avg] = n_ice;
modData[ModalResultField.P_ice_fcmap] = n_ice * t_ice;
var fc = fuel.ConsumptionMap.GetFuelConsumption(t_ice, n_ice).Value *
fuel.FuelConsumptionCorrectionFactor;
modData[ModalResultField.FCWHTCc] = fc;
modData[ModalResultField.FCFinal] = fc;
modData[ModalResultField.P_aux_ESS_mech_ice_off] = 0.SI<Watt>();
modData[ModalResultField.P_aux_ESS_mech_ice_on] = 0.SI<Watt>();
// WHR
modData[ModalResultField.P_WHR_el_corr] = 0.SI<Watt>();
modData[ModalResultField.P_WHR_mech_corr] = 0.SI<Watt>();
modData.CommitSimulationStep();
absTime += dt;
}
// standstill
for (; i < 200; i++) {
dt = (rnd.NextDouble() * 0.2 + 0.4).SI<Second>();
T2 += dt;
modData[ModalResultField.time] = absTime + dt / 2;
modData[ModalResultField.simulationInterval] = dt;
modData[ModalResultField.v_act] = 0.KMPHtoMeterPerSecond();
modData[ModalResultField.ICEOn] = false;
modData[ModalResultField.n_ice_avg] = 0.RPMtoRad();
modData[ModalResultField.P_ice_fcmap] = 0.SI<Watt>();
modData[ModalResultField.FCWHTCc] = 0.SI<KilogramPerSecond>();
modData[ModalResultField.FCFinal] = 0.SI<KilogramPerSecond>();
modData[ModalResultField.P_aux_ESS_mech_ice_off] = P_off;
modData[ModalResultField.P_aux_ESS_mech_ice_on] = P_on;
// WHR
modData[ModalResultField.P_WHR_el_corr] = 0.SI<Watt>();
modData[ModalResultField.P_WHR_mech_corr] = 0.SI<Watt>();
modData.CommitSimulationStep();
absTime += dt;
}
// constant driving different speed
modData[ModalResultField.P_ice_start] = P_ICEStart;
n_ice = 1200.RPMtoRad();
for (; i < 300; i++) {
dt = (rnd.NextDouble() * 0.2 + 0.4).SI<Second>();
T3 += dt;
if (tStart == null) tStart = dt;
modData[ModalResultField.time] = absTime + dt / 2;
modData[ModalResultField.simulationInterval] = dt;
modData[ModalResultField.v_act] = 50.KMPHtoMeterPerSecond();
modData[ModalResultField.ICEOn] = true;
modData[ModalResultField.n_ice_avg] = n_ice;
modData[ModalResultField.P_ice_fcmap] = n_ice * t_ice;
var fc = fuel.ConsumptionMap.GetFuelConsumption(400.SI<NewtonMeter>(), n_ice).Value *
fuel.FuelConsumptionCorrectionFactor;
modData[ModalResultField.FCWHTCc] = fc;
modData[ModalResultField.FCFinal] = fc;
modData[ModalResultField.P_aux_ESS_mech_ice_off] = 0.SI<Watt>();
modData[ModalResultField.P_aux_ESS_mech_ice_on] = 0.SI<Watt>();
// WHR
modData[ModalResultField.P_WHR_el_corr] = 0.SI<Watt>();
modData[ModalResultField.P_WHR_mech_corr] = 0.SI<Watt>();
modData.CommitSimulationStep();
absTime += dt;
}
modData.Finish(VectoRun.Status.Success);
var corr = modData.CorrectedModalData as CorrectedModalData;
var fcIdle =
fuel.ConsumptionMap.GetFuelConsumption(0.SI<NewtonMeter>(), runData.EngineData.IdleSpeed).Value
.Value() * fuel.FuelConsumptionCorrectionFactor; // 0.0002929177777777778
var k_engline = 2.6254521511724e-8;
var E_auxICEOnStandstill = (P_on * T2).Value(); // 46054.609042105534
var E_auxICEOffStandstill = (P_off * T2).Value(); // 15351.536347368512
var E_ICEStart = (P_ICEStart * tStart).Value(); // 11525.53891554733
var fcEssStandStillOff = E_auxICEOffStandstill * k_engline * UF_ESS_Standstill; // 0.0003034945726763096
var fcEssStandStillOn =
(E_auxICEOnStandstill * k_engline + (fcIdle * T2).Value()) * (1 - UF_ESS_Standstill); // 0.00400097222027925
var fcEngineStart = E_ICEStart * k_engline; // 0.00030259750939244944
var fcModSum = 0.195725;
Assert.AreEqual(k_engline, modData.EngineLineCorrectionFactor(fuel.FuelData).Value(), 1e-15);
Assert.AreEqual(0, corr.WorkWHREl.Value());
Assert.AreEqual(0, corr.WorkWHRElMech.Value());
Assert.AreEqual(0, corr.WorkWHRMech.Value());
Assert.AreEqual(E_auxICEOnStandstill, corr.EnergyAuxICEOnStandstill.Value(), 1e-3);
Assert.AreEqual(E_auxICEOffStandstill, corr.EnergyAuxICEOffStandstill.Value(), 1e-3);
Assert.AreEqual(E_ICEStart, modData.WorkEngineStart().Value());
Assert.AreEqual(0, corr.EnergyAuxICEOnDriving.Value(), 1e-3);
Assert.AreEqual(0, corr.EnergyAuxICEOffDriving.Value(), 1e-3);
var f = corr.FuelCorrection[fuel.FuelData.FuelType] as FuelConsumptionCorrection;
Assert.AreEqual(fcEssStandStillOff, f.FcESS_AuxStandstill_ICEOff.Value(), 1e-12);
Assert.AreEqual(fcEssStandStillOn, f.FcESS_AuxStandstill_ICEOn.Value(), 1e-12);
Assert.AreEqual(fcEngineStart, f.FcESS_EngineStart.Value(), 1e-12);
Assert.AreEqual(0, f.FcESS_AuxDriving_ICEOff.Value(), 1e-12);
Assert.AreEqual(0, f.FcESS_AuxDriving_ICEOn.Value(), 1e-12);
Assert.AreEqual(fcModSum, modData.TotalFuelConsumption(ModalResultField.FCWHTCc, fuel.FuelData).Value(), 1e-6);
Assert.AreEqual(fcModSum + fcEssStandStillOff + fcEssStandStillOn + fcEngineStart, f.FcEssCorr.Value(), 1e-6);
Assert.AreEqual(fcModSum + fcEssStandStillOff + fcEssStandStillOn + fcEngineStart, f.FcFinal.Value(), 1e-6);
}
[TestCase()] [TestCase()]
public void TestBusAuxPsESSStandstill_ModDataCorrection() public void TestBusAuxPsESSStandstill_ModDataCorrection()
{ {
...@@ -590,9 +753,9 @@ namespace TUGraz.VectoCore.Tests.Reports ...@@ -590,9 +753,9 @@ namespace TUGraz.VectoCore.Tests.Reports
var n_ice2 = 1200.RPMtoRad(); var n_ice2 = 1200.RPMtoRad();
var n_ice = n_ice1; var n_ice = n_ice1;
var t_ice = 400.SI<NewtonMeter>(); var t_ice = 400.SI<NewtonMeter>();
var T1 = 0.SI<Second>(); var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
var T2 = 0.SI<Second>(); var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
var T3 = 0.SI<Second>(); var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
var Nl_consumed = 0.7.SI<NormLiterPerSecond>(); var Nl_consumed = 0.7.SI<NormLiterPerSecond>();
var Nl_generated = Nl_consumed; var Nl_generated = Nl_consumed;
...@@ -1670,10 +1833,10 @@ namespace TUGraz.VectoCore.Tests.Reports ...@@ -1670,10 +1833,10 @@ namespace TUGraz.VectoCore.Tests.Reports
var k_engline = 2.6254521511724e-8; var k_engline = 2.6254521511724e-8;
var airDemand = (NlConsumedCorrected * (T1 + T2)); // var airDemand = (NlConsumedCorrected * (T1 + T2)); // 75.750978609710458 ["Nl"]
// 106.05137005359464 ["Nl"] // 106.05137005359464 ["Nl"]
// 121.20156577553674 ["Nl"] // 121.20156577553674 ["Nl"]
var deltaAir = (airDemand - Nl_generated * (T1 + T2)).Value(); // var deltaAir = (airDemand - Nl_generated * (T1 + T2)).Value(); // -30.30039144388418
// 0 // 0
// 15.150195721942097 // 15.150195721942097
...@@ -1686,7 +1849,7 @@ namespace TUGraz.VectoCore.Tests.Reports ...@@ -1686,7 +1849,7 @@ namespace TUGraz.VectoCore.Tests.Reports
var kAir = ((workCompOn - workCompOff) / airOn).Value(); // 641347.63479804085 var kAir = ((workCompOn - workCompOff) / airOn).Value(); // 641347.63479804085
var E_busAuxPS = kAir * deltaAir / 1e3; // convert Nl to m^3 -19433.084385989911 var E_busAuxPS = kAir * deltaAir / 1e3; // -19433.084385989911 convert Nl to m^3
// 0 // 0
// 9716.54219299496 // 9716.54219299496
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment