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

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

add 'conventional' auxiliaries to the advanced auxiliaries

* engineAuxiliary only writes P_aux into mod data if not already present (e.g. by advanced auxiliaries)
* AdvancedAuxiliaries take into account EngineAuxiliaries
* Powertrain Builder connects EngineAuxiliaries to AdvancedAuxiliaries
parent 85ee65c0
No related branches found
No related tags found
No related merge requests found
......@@ -291,7 +291,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
// connect aux --> engine
if (data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced) {
engine.Connect(CreateBusAuxiliaries(data, container).Port());
engine.Connect(CreateAdvancedAuxiliaries(data, container).Port());
} else {
if (data.Aux != null) {
engine.Connect(CreateAuxiliaries(data, container).Port());
......@@ -303,10 +303,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
return container;
}
private IEngineAuxInProvider CreateBusAuxiliaries(VectoRunData data, VehicleContainer container)
private IEngineAuxInProvider CreateAdvancedAuxiliaries(VectoRunData data, VehicleContainer container)
{
var conventionalAux = CreateAuxiliaries(data, container);
var busAux = new BusAuxiliariesAdapter(container, data.AdvancedAux.AdvancedAuxiliaryFilePath, data.Cycle.Name,
data.VehicleData.TotalVehicleWeight(), data.EngineData.ConsumptionMap, data.EngineData.IdleSpeed);
data.VehicleData.TotalVehicleWeight(), data.EngineData.ConsumptionMap, data.EngineData.IdleSpeed, conventionalAux);
return busAux;
}
......
......@@ -52,18 +52,21 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
protected internal BusAuxState CurrentState;
protected internal BusAuxState PreviousState;
protected internal IEngineAuxPort AdditionalAux;
protected IAdvancedAuxiliaries Auxiliaries;
private readonly FuelConsumptionAdapter _fcMapAdapter;
public BusAuxiliariesAdapter(IDataBus container, string aauxFile, string cycleName, Kilogram vehicleWeight,
FuelConsumptionMap fcMap, PerSecond engineIdleSpeed)
FuelConsumptionMap fcMap, PerSecond engineIdleSpeed, IEngineAuxPort additionalAux = null)
{
// mAAUX_Global.advancedAuxModel.Signals.DeclarationMode = Cfg.DeclMode
// mAAUX_Global.advancedAuxModel.Signals.WHTC = Declaration.WHTCcorrFactor
CurrentState = new BusAuxState();
PreviousState = new BusAuxState();
AdditionalAux = additionalAux;
DataBus = container;
var tmpAux = new AdvancedAuxiliaries();
......@@ -129,6 +132,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
{
PreviousState.TotalFuelConsumption = 0.SI<Kilogram>();
PreviousState.AngularSpeed = angularSpeed;
CurrentState.AngularSpeed = angularSpeed;
if (AdditionalAux != null) {
AdditionalAux.Initialize(torque, angularSpeed);
}
PreviousState.PowerDemand = GetBusAuxPowerDemand(0.SI<Second>(), 1.SI<Second>(), torque, torque, angularSpeed);
return PreviousState.PowerDemand / angularSpeed;
}
......@@ -245,7 +252,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
}
Auxiliaries.Signals.EngineMotoringPower = -DataBus.EngineDragPower(angularSpeed);
Auxiliaries.Signals.EngineSpeed = angularSpeed;
Auxiliaries.Signals.PreExistingAuxPower = 0.SI<Watt>(); //mAAUX_Global.PreExistingAuxPower;
var avgAngularSpeed = (PreviousState.AngularSpeed + CurrentState.AngularSpeed) / 2;
Auxiliaries.Signals.PreExistingAuxPower = AdditionalAux != null
? AdditionalAux.PowerDemand(absTime, dt, torquePowerTrain, torqueEngine, angularSpeed, dryRun) * avgAngularSpeed
: 0.SI<Watt>();
; //mAAUX_Global.PreExistingAuxPower;
Auxiliaries.Signals.Idle = DataBus.VehicleStopped;
Auxiliaries.Signals.InNeutral = DataBus.Gear == 0;
Auxiliaries.Signals.RunningCalc = true;
......@@ -253,7 +264,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
//mAAUX_Global.Internal_Engine_Power;
//'Power coming out of Advanced Model is in Watts.
return Auxiliaries.AuxiliaryPowerAtCrankWatts;
return Auxiliaries.AuxiliaryPowerAtCrankWatts + Auxiliaries.Signals.PreExistingAuxPower;
}
protected class FuelConsumptionAdapter : IFuelConsumptionMap
......
......@@ -81,7 +81,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
foreach (var kv in _powerDemands.Where(kv => !string.IsNullOrWhiteSpace(kv.Key))) {
container[kv.Key] = kv.Value;
}
container[ModalResultField.P_aux] = _powerDemands.Values.Sum(p => p);
if (container[ModalResultField.P_aux] == null) {
// don't overwrite if someone else already wrote the total aux power
container[ModalResultField.P_aux] = _powerDemands.Values.Sum(p => p);
}
}
protected override void DoCommitSimulationStep()
......
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