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

Skip to content
Snippets Groups Projects
Commit 79b62c6f authored by Harald Martini's avatar Harald Martini
Browse files

split IDeclarationDataAdapter interface to separate interfaces,

added DeclarationDataAdapter factory,
updated RunDataFactory and DeclarationDataAdapter implementations
parent 5d3326f0
No related branches found
No related tags found
No related merge requests found
Showing
with 1782 additions and 1541 deletions
......@@ -9,6 +9,7 @@ using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents;
using TUGraz.VectoCore.Models.BusAuxiliaries;
using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
......@@ -80,12 +81,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
var averageCurrentDemandWithoutBaseLoad = elData["ElectricalConsumers"]
.GetEx<double>("AverageCurrentDemandWithoutBaseLoad").SI<Ampere>();
electricalUserInputsConfig.ElectricalConsumers = new Dictionary<string, ElectricConsumerEntry>();
electricalUserInputsConfig.ElectricalConsumers["BaseLoad"] = new ElectricConsumerEntry() {
electricalUserInputsConfig.ElectricalConsumers = new Dictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry>();
electricalUserInputsConfig.ElectricalConsumers["BaseLoad"] = new AuxiliaryDataAdapter.ElectricConsumerEntry() {
BaseVehicle = true,
Current = averageCurrentDemandInclBaseLoad - averageCurrentDemandWithoutBaseLoad };
electricalUserInputsConfig.ElectricalConsumers["Consumers"] = new ElectricConsumerEntry() {
electricalUserInputsConfig.ElectricalConsumers["Consumers"] = new AuxiliaryDataAdapter.ElectricConsumerEntry() {
BaseVehicle = false,
Current = averageCurrentDemandWithoutBaseLoad
};
......
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
......@@ -11,93 +12,115 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Generic
{
public abstract class DeclarationDataAdapterGenericCompletedBus
public abstract class DeclarationDeclarationDataAdapterGenericCompletedBusDeclaration
{
public abstract class CompletedBusBase : IGenericCompletedBusDataAdapter
public abstract class CompletedBusDeclarationBase : IGenericCompletedBusDeclarationDataAdapter
{
private readonly IRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
#region Implementation of IDeclarationDataAdapter
private static readonly GearboxType[] SupportedGearboxTypes =
{ GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial };
#region ComponentDataAdapter
protected readonly IVehicleDataAdapter _vehicleDataAdapter = new CompletedBusGenericVehicleDataAdapter();
private readonly IRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
private readonly IEngineDataAdapter _engineDataAdapter = new GenericCombustionEngineComponentDataAdapter();
private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
private readonly IDriverDataAdapter _driverDataAdapter = new CompletedBusGenericDriverDataAdapter();
public DriverData CreateDriverData()
{
return _driverDataAdapter.CreateDriverData();
}
public VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
throw new NotImplementedException();
}
public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment)
{
throw new NotImplementedException();
}
public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
{
throw new NotImplementedException();
}
public AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData)
{
throw new NotImplementedException();
}
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData engineMode,
Mission mission)
{
throw new NotImplementedException();
}
public GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc)
{
throw new NotImplementedException();
}
public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed)
{
throw new NotImplementedException();
}
public RetarderData CreateRetarderData(IRetarderInputData retarderData)
private readonly IAxleGearDataAdapter _axleGearDataAdapter = new GenericCompletedBusAxleGearDataAdapter();
private readonly IAngledriveDataAdapter _angledriveDataAdapter = new GenericAngledriveDataAdapter();
private readonly IGearboxDataAdapter _gearboxDataAdapter = new GearboxDataAdapter(new GenericCompletedBusTorqueConverterDataAdapter());
private readonly IPrimaryBusAuxiliaryDataAdapter _auxDataAdapter = new PrimaryBusAuxiliaryDataAdapter();
#endregion
#region Implementation of IGenericCompletedBusDeclarationDataAdapter
public virtual VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
return _vehicleDataAdapter.CreateVehicleData(vehicle, segment, mission, loading.Value.Item1,
loading.Value.Item2, allowVocational);
}
public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment)
{
return _airdragDataAdapter.CreateAirdragData(airdragData, mission, segment);
}
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission)
{
return _engineDataAdapter.CreateEngineData(primaryVehicle, modeIdx, mission);
}
public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
{
return _auxDataAdapter.CreateAuxiliaryData(auxData, busAuxData, missionType, vehicleClass, vehicleLength,
numSteeredAxles);
}
public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
{
return _axleGearDataAdapter.CreateAxleGearData(axlegearData);
}
public AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData)
{
return _angledriveDataAdapter.CreateAngledriveData(angledriveData);
}
public GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc)
{
return _gearboxDataAdapter.CreateGearboxData(inputData, runData, shiftPolygonCalc, supportedGearboxTypes:SupportedGearboxTypes);
}
public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed)
{
return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed);
}
public RetarderData CreateRetarderData(IRetarderInputData retarderData)
{
return _retarderDataAdapter.CreateRetarderData(retarderData);
}
public PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData)
{
throw new NotImplementedException();
}
public DriverData CreateDriverData()
{
return _driverDataAdapter.CreateDriverData();
}
public IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData vehicleData,
VectoRunData runData)
{
return _auxDataAdapter.CreateBusAuxiliariesData(mission, vehicleData, runData);
}
#endregion
}
public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
{
throw new NotImplementedException();
}
public class Conventional : CompletedBusDeclarationBase { }
public class HEV_S2 : CompletedBusDeclarationBase { }
public class HEV_S3 : CompletedBusDeclarationBase { }
public class HEV_S4 : CompletedBusDeclarationBase { }
public class HEV_S_IEPC : CompletedBusDeclarationBase { }
public class HEV_P1 : CompletedBusDeclarationBase { }
public class HEV_P2 : CompletedBusDeclarationBase { }
public class HEV_P2_5 : CompletedBusDeclarationBase { }
public class HEV_P3 : CompletedBusDeclarationBase { }
public class HEV_P4 : CompletedBusDeclarationBase { }
public class PEV_E2 : CompletedBusDeclarationBase { }
public class PEV_E3 : CompletedBusDeclarationBase { }
public class PEV_E4 : CompletedBusDeclarationBase { }
public class PEV_E_IEPC : CompletedBusDeclarationBase { }
public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
{
throw new NotImplementedException();
}
public class Exempted : CompletedBusDeclarationBase
{
#region Overrides of CompletedBusBase
public override VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
return _vehicleDataAdapter.CreateExemptedVehicleData(vehicle);
}
#endregion
#endregion
}
public class Conventional : CompletedBusBase { }
public class HEV_S2 : CompletedBusBase { }
public class HEV_S3 : CompletedBusBase { }
public class HEV_S4 : CompletedBusBase { }
public class HEV_S_IEPC : CompletedBusBase { }
public class HEV_P1 : CompletedBusBase { }
public class HEV_P2 : CompletedBusBase { }
public class HEV_P2_5 : CompletedBusBase { }
public class HEV_P3 : CompletedBusBase { }
public class HEV_P4 : CompletedBusBase { }
public class PEV_E2 : CompletedBusBase { }
public class PEV_E3 : CompletedBusBase { }
public class PEV_E4 : CompletedBusBase { }
public class PEV_E_IEPC : CompletedBusBase { }
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
......@@ -13,93 +14,70 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Speci
{
public abstract class DeclarationDataAdapterSpecificCompletedBus
{
public abstract class CompletedBusBase : ISpecificCompletedBusDataAdapter
public abstract class CompletedBusDeclarationBase : AbstractSimulationDataAdapter, ISpecificCompletedBusDeclarationDataAdapter
{
private readonly IDriverDataAdapter _driverDataAdapter = new CompletedBusSpecificDriverDataAdapter();
#region Implementation of IDeclarationDataAdapter
private readonly ICompletedBusAuxiliaryDataAdapter _auxDataAdapter =
new SpecificCompletedBusAuxiliaryDataAdapter(new PrimaryBusAuxiliaryDataAdapter());
public DriverData CreateDriverData()
#region Implementation of ISpecificCompletedBusDeclarationDataAdapter
public IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData primaryVehicle,
IVehicleDeclarationInputData completedVehicle, VectoRunData runData)
{
return _driverDataAdapter.CreateDriverData();
throw new NotImplementedException();
}
public VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
throw new NotImplementedException();
}
public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment)
{
throw new NotImplementedException();
}
public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
{
throw new NotImplementedException();
}
public AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData)
{
throw new NotImplementedException();
}
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData engineMode,
Mission mission)
{
throw new NotImplementedException();
}
public GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc)
{
throw new NotImplementedException();
}
public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed)
{
throw new NotImplementedException();
}
public VehicleData CreateVehicleData(IVehicleDeclarationInputData primaryVehicle,
IVehicleDeclarationInputData completedVehicle, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading)
{
throw new NotImplementedException();
}
public RetarderData CreateRetarderData(IRetarderInputData retarderData)
{
throw new NotImplementedException();
}
public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
{
throw new NotImplementedException();
}
public PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData)
{
throw new NotImplementedException();
}
public AirdragData CreateAirdragData(IVehicleDeclarationInputData completedVehicle, Mission mission)
{
throw new NotImplementedException();
}
public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
{
throw new NotImplementedException();
}
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission)
{
throw new NotImplementedException();
}
public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
{
throw new NotImplementedException();
}
#endregion
#endregion
}
#region Implementation of IDeclarationDataAdapter
public VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
throw new NotImplementedException();
}
public class Conventional : CompletedBusBase { }
public class HEV_S2 : CompletedBusBase { }
public class HEV_S3 : CompletedBusBase { }
public class HEV_S4 : CompletedBusBase { }
public class HEV_S_IEPC : CompletedBusBase { }
public class HEV_P1 : CompletedBusBase { }
public class HEV_P2 : CompletedBusBase { }
public class HEV_P2_5 : CompletedBusBase { }
public class HEV_P3 : CompletedBusBase { }
public class HEV_P4 : CompletedBusBase { }
public class PEV_E2 : CompletedBusBase { }
public class PEV_E3 : CompletedBusBase { }
public class PEV_E4 : CompletedBusBase { }
public class PEV_E_IEPC : CompletedBusBase { }
#endregion
}
public class Conventional : CompletedBusDeclarationBase { }
public class HEV_S2 : CompletedBusDeclarationBase { }
public class HEV_S3 : CompletedBusDeclarationBase { }
public class HEV_S4 : CompletedBusDeclarationBase { }
public class HEV_S_IEPC : CompletedBusDeclarationBase { }
public class HEV_P1 : CompletedBusDeclarationBase { }
public class HEV_P2 : CompletedBusDeclarationBase { }
public class HEV_P2_5 : CompletedBusDeclarationBase { }
public class HEV_P3 : CompletedBusDeclarationBase { }
public class HEV_P4 : CompletedBusDeclarationBase { }
public class PEV_E2 : CompletedBusDeclarationBase { }
public class PEV_E3 : CompletedBusDeclarationBase { }
public class PEV_E4 : CompletedBusDeclarationBase { }
public class PEV_E_IEPC : CompletedBusDeclarationBase { }
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1" MembersFormat="FullSignature">
<Interface Name="TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.IDeclarationDataAdapter">
<Position X="0.5" Y="1.5" Width="13" />
<TypeIdentifier>
<HashCode>AAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>InputData\Reader\DataObjectAdapter\IDeclarationDataAdapter.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.ILorryDeclarationDataAdapter">
<Position X="0.5" Y="7.25" Width="13" />
<TypeIdentifier>
<HashCode>AAEAAAgAACAgAAAAAAEAAgIAAAAAAAAEAAAAQAABQAA=</HashCode>
<FileName>InputData\Reader\DataObjectAdapter\IDeclarationDataAdapter.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.IPrimaryBusDeclarationDataAdapter">
<Position X="0.5" Y="5.25" Width="13" />
<TypeIdentifier>
<HashCode>AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAABQAA=</HashCode>
<FileName>InputData\Reader\DataObjectAdapter\IDeclarationDataAdapter.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.IGenericCompletedBusDeclarationDataAdapter">
<Position X="1.25" Y="10.75" Width="12.25" />
<TypeIdentifier>
<HashCode>AAEAAAgAACAgAAAAAAEAAgAAAAAAAAAAAAAAQAABQAA=</HashCode>
<FileName>InputData\Reader\DataObjectAdapter\IDeclarationDataAdapter.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.ISpecificCompletedBusDeclarationDataAdapter">
<Position X="2.75" Y="3" Width="10.75" />
<TypeIdentifier>
<HashCode>AAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAABQAA=</HashCode>
<FileName>InputData\Reader\DataObjectAdapter\IDeclarationDataAdapter.cs</FileName>
</TypeIdentifier>
</Interface>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>
\ No newline at end of file
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.GenericModelData;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{
public class DeclarationDataAdapterCompletedBusGeneric : DeclarationDataAdapterPrimaryBus
{
private readonly GenericTransmissionComponentData _genericPowertrainData = new GenericTransmissionComponentData();
private readonly GenericBusRetarderData _genericRetarderData = new GenericBusRetarderData();
private readonly GenericTorqueConverterData _genericTorqueConverterData = new GenericTorqueConverterData();
public const double GearEfficiencyDirectGear = 0.98;
public const double GearEfficiencyIndirectGear = 0.96;
public const double GearEfficiencyAT = 0.925;
#region Overrides of DeclarationDataAdapterPrimaryBus
public new DriverData CreateDriverData()
{
var retVal = base.CreateDriverData();
retVal.LookAheadCoasting.Enabled = false;
retVal.OverSpeed.Enabled = false;
return retVal;
}
public override VehicleData CreateVehicleData(
IVehicleDeclarationInputData data, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
var retVal = base.CreateVehicleData(data, segment, mission, loading, allowVocational);
retVal.GrossVehicleMass = data.GrossVehicleMassRating;
if (retVal.TotalVehicleMass.IsGreater(retVal.GrossVehicleMass)) {
throw new VectoException("Total Vehicle Mass exceeds Gross Vehicle Mass for completed bus generic ({0}/{1})", retVal.TotalVehicleMass, retVal.GrossVehicleMass);
}
return retVal;
}
#endregion
// The model parameters for the completed bus with generic power train and generic body is basically the same as the primary bus
// only powertrain components are different
//using System;
//using System.Collections.Generic;
//using TUGraz.VectoCommon.Exceptions;
//using TUGraz.VectoCommon.InputData;
//using TUGraz.VectoCommon.Models;
//using TUGraz.VectoCommon.Utils;
//using TUGraz.VectoCore.InputData.Reader.ComponentData;
//using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus;
//using TUGraz.VectoCore.Models.Declaration;
//using TUGraz.VectoCore.Models.GenericModelData;
//using TUGraz.VectoCore.Models.SimulationComponent.Data;
//using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
//namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
//{
//public class DeclarationDataAdapterCompletedBusGeneric : DeclarationDataAdapterPrimaryBus
//{
// private readonly GenericTransmissionComponentData _genericPowertrainData = new GenericTransmissionComponentData();
// private readonly GenericBusRetarderData _genericRetarderData = new GenericBusRetarderData();
// private readonly GenericTorqueConverterData _genericTorqueConverterData = new GenericTorqueConverterData();
// public const double GearEfficiencyDirectGear = 0.98;
// public const double GearEfficiencyIndirectGear = 0.96;
// public const double GearEfficiencyAT = 0.925;
// #region Overrides of DeclarationDataAdapterPrimaryBus
// public new DriverData CreateDriverData()
// {
// var retVal = base.CreateDriverData();
// retVal.LookAheadCoasting.Enabled = false;
// retVal.OverSpeed.Enabled = false;
// return retVal;
// }
// public override VehicleData CreateVehicleData(
// IVehicleDeclarationInputData data, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
// {
// var retVal = base.CreateVehicleData(data, segment, mission, loading, allowVocational);
// retVal.GrossVehicleMass = data.GrossVehicleMassRating;
// if (retVal.TotalVehicleMass.IsGreater(retVal.GrossVehicleMass)) {
// throw new VectoException("Total Vehicle Mass exceeds Gross Vehicle Mass for completed bus generic ({0}/{1})", retVal.TotalVehicleMass, retVal.GrossVehicleMass);
// }
// return retVal;
// }
// #endregion
// // The model parameters for the completed bus with generic power train and generic body is basically the same as the primary bus
// // only powertrain components are different
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission)
{
return GenericBusEngineData.Instance.CreateGenericBusEngineData(primaryVehicle, modeIdx, mission);
}
// public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission)
// {
// return GenericBusEngineData.Instance.CreateGenericBusEngineData(primaryVehicle, modeIdx, mission);
// }
#region Overrides of DeclarationDataAdapterHeavyLorry
// #region Overrides of DeclarationDataAdapterHeavyLorry
public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
{
return _genericPowertrainData.CreateGenericBusAxlegearData(axlegearData);
}
// public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
// {
// return _genericPowertrainData.CreateGenericBusAxlegearData(axlegearData);
// }
public AngledriveData CreateAngledriveData(IAngledriveInputData data)
{
return _genericPowertrainData.CreateGenericBusAngledriveData(data);
}
// public AngledriveData CreateAngledriveData(IAngledriveInputData data)
// {
// return _genericPowertrainData.CreateGenericBusAngledriveData(data);
// }
public RetarderData CreateRetarderData(IRetarderInputData retarder)
{
return _genericRetarderData.CreateGenericBusRetarderData(retarder);
}
// public RetarderData CreateRetarderData(IRetarderInputData retarder)
// {
// return _genericRetarderData.CreateGenericBusRetarderData(retarder);
// }
#endregion
// #endregion
#region Overrides of AbstractSimulationDataAdapter
// #region Overrides of AbstractSimulationDataAdapter
protected override TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i, bool useEfficiencyFallback, VehicleCategory vehicleCategory, GearboxType gearboxType)
{
if (gearboxType.AutomaticTransmission()) {
return TransmissionLossMapReader.Create(GearEfficiencyAT, gear.Ratio, $"Gear {i + 1}");
}
return TransmissionLossMapReader.Create(
gear.Ratio.IsEqual(1) ? GearEfficiencyDirectGear : GearEfficiencyIndirectGear, gear.Ratio, $"Gear {i + 1}");
}
// protected override TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i, bool useEfficiencyFallback, VehicleCategory vehicleCategory, GearboxType gearboxType)
// {
// if (gearboxType.AutomaticTransmission()) {
// return TransmissionLossMapReader.Create(GearEfficiencyAT, gear.Ratio, $"Gear {i + 1}");
// }
// return TransmissionLossMapReader.Create(
// gear.Ratio.IsEqual(1) ? GearEfficiencyDirectGear : GearEfficiencyIndirectGear, gear.Ratio, $"Gear {i + 1}");
// }
protected void CretateTCFirstGearATPowerSplit(GearData gearData, uint i, ShiftPolygon shiftPolygon)
{
gearData.TorqueConverterRatio = 1;
//gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(GearEfficiencyIndirectGear, 1, string.Format("TCGear {0}", i + 1));
gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(1.0, 1, $"TCGear {i + 1}");
gearData.TorqueConverterShiftPolygon = shiftPolygon;
}
// protected void CretateTCFirstGearATPowerSplit(GearData gearData, uint i, ShiftPolygon shiftPolygon)
// {
// gearData.TorqueConverterRatio = 1;
// //gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(GearEfficiencyIndirectGear, 1, string.Format("TCGear {0}", i + 1));
// gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(1.0, 1, $"TCGear {i + 1}");
// gearData.TorqueConverterShiftPolygon = shiftPolygon;
// }
#endregion
// #endregion
#region Overrides of DeclarationDataAdapterHeavyLorry
// #region Overrides of DeclarationDataAdapterHeavyLorry
protected override TorqueConverterData CreateTorqueConverterData(GearboxType gearboxType,
ITorqueConverterDeclarationInputData torqueConverter, double ratio, CombustionEngineData engineData)
{
// protected override TorqueConverterData CreateTorqueConverterData(GearboxType gearboxType,
// ITorqueConverterDeclarationInputData torqueConverter, double ratio, CombustionEngineData engineData)
// {
if (torqueConverter != null && torqueConverter.TCData != null) {
return TorqueConverterDataReader.Create(
torqueConverter.TCData,
DeclarationData.TorqueConverter.ReferenceRPM, DeclarationData.TorqueConverter.MaxInputSpeed,
ExecutionMode.Engineering, ratio,
DeclarationData.TorqueConverter.CLUpshiftMinAcceleration,
DeclarationData.TorqueConverter.CCUpshiftMinAcceleration);
}
return _genericTorqueConverterData.CreateTorqueConverterData(gearboxType, ratio, engineData);
}
#endregion
// if (torqueConverter != null && torqueConverter.TCData != null) {
// return TorqueConverterDataReader.Create(
// torqueConverter.TCData,
// DeclarationData.TorqueConverter.ReferenceRPM, DeclarationData.TorqueConverter.MaxInputSpeed,
// ExecutionMode.Engineering, ratio,
// DeclarationData.TorqueConverter.CLUpshiftMinAcceleration,
// DeclarationData.TorqueConverter.CCUpshiftMinAcceleration);
// }
// return _genericTorqueConverterData.CreateTorqueConverterData(gearboxType, ratio, engineData);
// }
// #endregion
}
}
// }
//}
using System.Linq;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.BusAuxiliaries;
using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
//using System.Linq;
//using TUGraz.VectoCommon.BusAuxiliaries;
//using TUGraz.VectoCommon.Exceptions;
//using TUGraz.VectoCommon.InputData;
//using TUGraz.VectoCommon.Models;
//using TUGraz.VectoCommon.Utils;
//using TUGraz.VectoCore.Models.BusAuxiliaries;
//using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
//using TUGraz.VectoCore.Models.Declaration;
//using TUGraz.VectoCore.Models.Simulation.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{
public class DeclarationDataAdapterMultistageBus : DeclarationDataAdapterCompletedBusSpecific
{
//namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
//{
// public class DeclarationDataAdapterMultistageBus : DeclarationDataAdapterCompletedBusSpecific
// {
public override IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission,
IVehicleDeclarationInputData primaryVehicle, IVehicleDeclarationInputData completedVehicle,
VectoRunData runData)
{
var actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries;
// public override IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission,
// IVehicleDeclarationInputData primaryVehicle, IVehicleDeclarationInputData completedVehicle,
// VectoRunData runData)
// {
// var actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
// var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries;
return new AuxiliaryConfig
{
InputData = completedVehicle.Components.BusAuxiliaries,
ElectricalUserInputsConfig = CreateElectricsUserInputsConfig(
primaryVehicle, completedVehicle, mission, actuations, runData.VehicleData.VehicleClass),
PneumaticUserInputsConfig = CreatePneumaticUserInputsConfig(
primaryBusAuxiliaries, completedVehicle),
PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type),
Actuations = actuations,
SSMInputs = GetCompletedSSMInput(mission, completedVehicle, primaryVehicle, runData.Loading),
VehicleData = runData.VehicleData
};
}
// return new AuxiliaryConfig
// {
// InputData = completedVehicle.Components.BusAuxiliaries,
// ElectricalUserInputsConfig = CreateElectricsUserInputsConfig(
// primaryVehicle, completedVehicle, mission, actuations, runData.VehicleData.VehicleClass),
// PneumaticUserInputsConfig = CreatePneumaticUserInputsConfig(
// primaryBusAuxiliaries, completedVehicle),
// PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type),
// Actuations = actuations,
// SSMInputs = GetCompletedSSMInput(mission, completedVehicle, primaryVehicle, runData.Loading),
// VehicleData = runData.VehicleData
// };
// }
protected override ElectricsUserInputsConfig CreateElectricsUserInputsConfig(IVehicleDeclarationInputData primaryVehicle,
IVehicleDeclarationInputData completedVehicle, Mission mission, IActuations actuations, VehicleClass vehicleClass)
{
var currentDemand = GetElectricConsumers(mission, completedVehicle, actuations, vehicleClass);
// protected override ElectricsUserInputsConfig CreateElectricsUserInputsConfig(IVehicleDeclarationInputData primaryVehicle,
// IVehicleDeclarationInputData completedVehicle, Mission mission, IActuations actuations, VehicleClass vehicleClass)
// {
// var currentDemand = GetElectricConsumers(mission, completedVehicle, actuations, vehicleClass);
// add electrical steering pump or electric fan defined in primary vehicle
foreach (var entry in GetElectricAuxConsumersPrimary(mission, completedVehicle, vehicleClass, primaryVehicle.Components.BusAuxiliaries))
{
currentDemand[entry.Key] = entry.Value;
}
// // add electrical steering pump or electric fan defined in primary vehicle
// foreach (var entry in GetElectricAuxConsumersPrimary(mission, completedVehicle, vehicleClass, primaryVehicle.Components.BusAuxiliaries))
// {
// currentDemand[entry.Key] = entry.Value;
// }
var retVal = GetDefaultElectricalUserConfig();
// var retVal = GetDefaultElectricalUserConfig();
var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries;
retVal.AlternatorType = primaryVehicle.VehicleType == VectoSimulationJobType.BatteryElectricVehicle
? AlternatorType.None
: primaryBusAuxiliaries.ElectricSupply.AlternatorTechnology;
retVal.ElectricalConsumers = currentDemand;
// var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries;
// retVal.AlternatorType = primaryVehicle.VehicleType == VectoSimulationJobType.BatteryElectricVehicle
// ? AlternatorType.None
// : primaryBusAuxiliaries.ElectricSupply.AlternatorTechnology;
// retVal.ElectricalConsumers = currentDemand;
retVal.AlternatorMap = new SimpleAlternator(
CalculateAlternatorEfficiency(primaryBusAuxiliaries.ElectricSupply.Alternators));
// retVal.AlternatorMap = new SimpleAlternator(
// CalculateAlternatorEfficiency(primaryBusAuxiliaries.ElectricSupply.Alternators));
switch (retVal.AlternatorType) {
case AlternatorType.Smart when primaryBusAuxiliaries.ElectricSupply.Alternators.Count == 0:
throw new VectoException("at least one alternator is required when specifying smart electrics!");
case AlternatorType.Smart when primaryBusAuxiliaries.ElectricSupply.ElectricStorage.Count == 0:
throw new VectoException("at least one electric storage (battery or capacitor) is required when specifying smart electrics!");
}
// switch (retVal.AlternatorType) {
// case AlternatorType.Smart when primaryBusAuxiliaries.ElectricSupply.Alternators.Count == 0:
// throw new VectoException("at least one alternator is required when specifying smart electrics!");
// case AlternatorType.Smart when primaryBusAuxiliaries.ElectricSupply.ElectricStorage.Count == 0:
// throw new VectoException("at least one electric storage (battery or capacitor) is required when specifying smart electrics!");
// }
retVal.MaxAlternatorPower = primaryBusAuxiliaries.ElectricSupply.Alternators.Sum(x => x.RatedVoltage * x.RatedCurrent);
retVal.ElectricStorageCapacity = primaryBusAuxiliaries.ElectricSupply.ElectricStorage.Sum(x => x.ElectricStorageCapacity) ?? 0.SI<WattSecond>();
// retVal.MaxAlternatorPower = primaryBusAuxiliaries.ElectricSupply.Alternators.Sum(x => x.RatedVoltage * x.RatedCurrent);
// retVal.ElectricStorageCapacity = primaryBusAuxiliaries.ElectricSupply.ElectricStorage.Sum(x => x.ElectricStorageCapacity) ?? 0.SI<WattSecond>();
return retVal;
}
}
}
// return retVal;
// }
// }
//}
using System;
using System.Collections.Generic;
using System.Linq;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.Impl;
using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{
public class DeclarationDataAdapterSingleBus : DeclarationDataAdapterCompletedBusSpecific
{
#region Implementation of IDeclarationDataAdapter
//public override VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
//{
// var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(
// CompletedVehicle.Length,
// CompletedVehicle.Width);
// var passengerCountRef = busFloorArea * (loading.Key == LoadingType.LowLoading
// ? mission.BusParameter.PassengerDensityLow
// : mission.BusParameter.PassengerDensityRef);
// var passengerCountDecl = CompletedVehicle.NumberPassengerSeatsUpperDeck +
// CompletedVehicle.NumberPassengerSeatsLowerDeck
// + (mission.MissionType == MissionType.Coach
// ? 0
// : CompletedVehicle.NumberPassengersStandingLowerDeck +
// CompletedVehicle.NumberPassengersStandingUpperDeck);
// //var refLoad = passengerCount * mission.MissionType.GetAveragePassengerMass();
// if (loading.Key != LoadingType.ReferenceLoad && loading.Key != LoadingType.LowLoading) {
// throw new VectoException("Unhandled loading type: {0}", loading.Key);
// }
// var passengerCountCalc = loading.Key == LoadingType.ReferenceLoad
// ? VectoMath.Min(passengerCountRef, (int)passengerCountDecl)
// : passengerCountRef * mission.MissionType.GetLowLoadFactorBus();
// var payload = passengerCountCalc * mission.MissionType.GetAveragePassengerMass();
// var retVal = CreateNonExemptedVehicleData(vehicle, segment, mission, payload, passengerCountCalc, allowVocational);
// retVal.CurbMass = CompletedVehicle.CurbMassChassis;
// return retVal;
//}
#endregion
//public override CombustionEngineData CreateEngineData(
// IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode, Mission mission)
//{
// throw new NotImplementedException();
// var engine = vehicle.Components.EngineInputData;
// var gearbox = vehicle.Components.GearboxInputData;
// if (!engine.SavedInDeclarationMode) {
// WarnDeclarationMode("EngineData");
// }
// var retVal = SetCommonCombustionEngineData(engine, SingleBusInputData.CompletedVehicle.TankSystem);
// retVal.IdleSpeed = VectoMath.Max(mode.IdleSpeed, vehicle.EngineIdleSpeed);
// retVal.Fuels = new List<CombustionEngineFuelData>();
// foreach (var fuel in mode.Fuels) {
// retVal.Fuels.Add(
// new CombustionEngineFuelData() {
// WHTCUrban = fuel.WHTCUrban,
// WHTCRural = fuel.WHTCRural,
// WHTCMotorway = fuel.WHTCMotorway,
// ColdHotCorrectionFactor = fuel.ColdHotBalancingFactor,
// CorrectionFactorRegPer = fuel.CorrectionFactorRegPer,
// FuelData = DeclarationData.FuelData.Lookup(fuel.FuelType, SingleBusInputData.CompletedVehicle.TankSystem),
// ConsumptionMap = FuelConsumptionMapReader.Create(fuel.FuelConsumptionMap),
// FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(
// mission.MissionType.GetNonEMSMissionType(), fuel.WHTCRural, fuel.WHTCUrban,
// fuel.WHTCMotorway) * fuel.ColdHotBalancingFactor * fuel.CorrectionFactorRegPer,
// });
// }
// retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement, gearbox.Type);
// retVal.EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime;
// var limits = vehicle.TorqueLimits.ToDictionary(e => e.Gear);
// var numGears = gearbox.Gears.Count;
// var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1);
// fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true);
// fullLoadCurves[0].EngineData = retVal;
// foreach (var gear in gearbox.Gears) {
// var maxTorque = VectoMath.Min(
// GbxMaxTorque(gear, numGears, fullLoadCurves[0].MaxTorque),
// VehMaxTorque(gear, numGears, limits, fullLoadCurves[0].MaxTorque));
// fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque);
// }
// retVal.FullLoadCurves = fullLoadCurves;
// retVal.WHRType = engine.WHRType;
// if ((retVal.WHRType & WHRType.ElectricalOutput) != 0) {
// retVal.ElectricalWHR = CreateWHRData(
// mode.WasteHeatRecoveryDataElectrical, mission.MissionType, WHRType.ElectricalOutput);
// }
// if ((retVal.WHRType & WHRType.MechanicalOutputDrivetrain) != 0) {
// retVal.MechanicalWHR = CreateWHRData(
// mode.WasteHeatRecoveryDataMechanical, mission.MissionType, WHRType.MechanicalOutputDrivetrain);
// }
// return retVal;
//}
protected override TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i, bool useEfficiencyFallback, VehicleCategory vehicleCategory, GearboxType gearboxType)
{
return TransmissionLossMapReader.Create(gear.LossMap, gear.Ratio, $"Gear {i + 1}", true);
}
protected override TorqueConverterData CreateTorqueConverterData(GearboxType gearboxType,
ITorqueConverterDeclarationInputData torqueConverter, double ratio, CombustionEngineData engineData)
{
return TorqueConverterDataReader.Create(
torqueConverter.TCData,
DeclarationData.TorqueConverter.ReferenceRPM, DeclarationData.TorqueConverter.MaxInputSpeed,
ExecutionMode.Declaration, ratio,
DeclarationData.TorqueConverter.CLUpshiftMinAcceleration,
DeclarationData.TorqueConverter.CCUpshiftMinAcceleration);
}
public override AxleGearData CreateAxleGearData(IAxleGearInputData data)
{
var retVal = SetCommonAxleGearData(data);
retVal.AxleGear.LossMap = ReadAxleLossMap(data, false);
return retVal;
}
#region Overrides of DeclarationDataAdapterCompletedBusGeneric
//public override RetarderData CreateRetarderData(IRetarderInputData retarder)
//{
// return SetCommonRetarderData(retarder);
//}
#endregion
public ISingleBusInputDataProvider SingleBusInputData { get; set; }
protected IVehicleDeclarationInputData CompletedVehicle => SingleBusInputData?.CompletedVehicle;
}
}
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using TUGraz.VectoCommon.BusAuxiliaries;
//using TUGraz.VectoCommon.Exceptions;
//using TUGraz.VectoCommon.InputData;
//using TUGraz.VectoCommon.Models;
//using TUGraz.VectoCommon.Utils;
//using TUGraz.VectoCore.Configuration;
//using TUGraz.VectoCore.InputData.Reader.ComponentData;
//using TUGraz.VectoCore.InputData.Reader.Impl;
//using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
//using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
//using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics;
//using TUGraz.VectoCore.Models.Declaration;
//using TUGraz.VectoCore.Models.Simulation.Data;
//using TUGraz.VectoCore.Models.SimulationComponent;
//using TUGraz.VectoCore.Models.SimulationComponent.Data;
//using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
//using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
//namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
//{
// public class DeclarationDataAdapterSingleBus : DeclarationDataAdapterCompletedBusSpecific
// {
// #region Implementation of IDeclarationDataAdapter
// //public override VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
// //{
// // var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(
// // CompletedVehicle.Length,
// // CompletedVehicle.Width);
// // var passengerCountRef = busFloorArea * (loading.Key == LoadingType.LowLoading
// // ? mission.BusParameter.PassengerDensityLow
// // : mission.BusParameter.PassengerDensityRef);
// // var passengerCountDecl = CompletedVehicle.NumberPassengerSeatsUpperDeck +
// // CompletedVehicle.NumberPassengerSeatsLowerDeck
// // + (mission.MissionType == MissionType.Coach
// // ? 0
// // : CompletedVehicle.NumberPassengersStandingLowerDeck +
// // CompletedVehicle.NumberPassengersStandingUpperDeck);
// // //var refLoad = passengerCount * mission.MissionType.GetAveragePassengerMass();
// // if (loading.Key != LoadingType.ReferenceLoad && loading.Key != LoadingType.LowLoading) {
// // throw new VectoException("Unhandled loading type: {0}", loading.Key);
// // }
// // var passengerCountCalc = loading.Key == LoadingType.ReferenceLoad
// // ? VectoMath.Min(passengerCountRef, (int)passengerCountDecl)
// // : passengerCountRef * mission.MissionType.GetLowLoadFactorBus();
// // var payload = passengerCountCalc * mission.MissionType.GetAveragePassengerMass();
// // var retVal = CreateNonExemptedVehicleData(vehicle, segment, mission, payload, passengerCountCalc, allowVocational);
// // retVal.CurbMass = CompletedVehicle.CurbMassChassis;
// // return retVal;
// //}
// #endregion
// //public override CombustionEngineData CreateEngineData(
// // IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode, Mission mission)
// //{
// // throw new NotImplementedException();
// // var engine = vehicle.Components.EngineInputData;
// // var gearbox = vehicle.Components.GearboxInputData;
// // if (!engine.SavedInDeclarationMode) {
// // WarnDeclarationMode("EngineData");
// // }
// // var retVal = SetCommonCombustionEngineData(engine, SingleBusInputData.CompletedVehicle.TankSystem);
// // retVal.IdleSpeed = VectoMath.Max(mode.IdleSpeed, vehicle.EngineIdleSpeed);
// // retVal.Fuels = new List<CombustionEngineFuelData>();
// // foreach (var fuel in mode.Fuels) {
// // retVal.Fuels.Add(
// // new CombustionEngineFuelData() {
// // WHTCUrban = fuel.WHTCUrban,
// // WHTCRural = fuel.WHTCRural,
// // WHTCMotorway = fuel.WHTCMotorway,
// // ColdHotCorrectionFactor = fuel.ColdHotBalancingFactor,
// // CorrectionFactorRegPer = fuel.CorrectionFactorRegPer,
// // FuelData = DeclarationData.FuelData.Lookup(fuel.FuelType, SingleBusInputData.CompletedVehicle.TankSystem),
// // ConsumptionMap = FuelConsumptionMapReader.Create(fuel.FuelConsumptionMap),
// // FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(
// // mission.MissionType.GetNonEMSMissionType(), fuel.WHTCRural, fuel.WHTCUrban,
// // fuel.WHTCMotorway) * fuel.ColdHotBalancingFactor * fuel.CorrectionFactorRegPer,
// // });
// // }
// // retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement, gearbox.Type);
// // retVal.EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime;
// // var limits = vehicle.TorqueLimits.ToDictionary(e => e.Gear);
// // var numGears = gearbox.Gears.Count;
// // var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1);
// // fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true);
// // fullLoadCurves[0].EngineData = retVal;
// // foreach (var gear in gearbox.Gears) {
// // var maxTorque = VectoMath.Min(
// // GbxMaxTorque(gear, numGears, fullLoadCurves[0].MaxTorque),
// // VehMaxTorque(gear, numGears, limits, fullLoadCurves[0].MaxTorque));
// // fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque);
// // }
// // retVal.FullLoadCurves = fullLoadCurves;
// // retVal.WHRType = engine.WHRType;
// // if ((retVal.WHRType & WHRType.ElectricalOutput) != 0) {
// // retVal.ElectricalWHR = CreateWHRData(
// // mode.WasteHeatRecoveryDataElectrical, mission.MissionType, WHRType.ElectricalOutput);
// // }
// // if ((retVal.WHRType & WHRType.MechanicalOutputDrivetrain) != 0) {
// // retVal.MechanicalWHR = CreateWHRData(
// // mode.WasteHeatRecoveryDataMechanical, mission.MissionType, WHRType.MechanicalOutputDrivetrain);
// // }
// // return retVal;
// //}
// protected override TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i, bool useEfficiencyFallback, VehicleCategory vehicleCategory, GearboxType gearboxType)
// {
// return TransmissionLossMapReader.Create(gear.LossMap, gear.Ratio, $"Gear {i + 1}", true);
// }
// protected override TorqueConverterData CreateTorqueConverterData(GearboxType gearboxType,
// ITorqueConverterDeclarationInputData torqueConverter, double ratio, CombustionEngineData engineData)
// {
// return TorqueConverterDataReader.Create(
// torqueConverter.TCData,
// DeclarationData.TorqueConverter.ReferenceRPM, DeclarationData.TorqueConverter.MaxInputSpeed,
// ExecutionMode.Declaration, ratio,
// DeclarationData.TorqueConverter.CLUpshiftMinAcceleration,
// DeclarationData.TorqueConverter.CCUpshiftMinAcceleration);
// }
// public override AxleGearData CreateAxleGearData(IAxleGearInputData data)
// {
// var retVal = SetCommonAxleGearData(data);
// retVal.AxleGear.LossMap = ReadAxleLossMap(data, false);
// return retVal;
// }
// #region Overrides of DeclarationDataAdapterCompletedBusGeneric
// //public override RetarderData CreateRetarderData(IRetarderInputData retarder)
// //{
// // return SetCommonRetarderData(retarder);
// //}
// #endregion
// public ISingleBusInputDataProvider SingleBusInputData { get; set; }
// protected IVehicleDeclarationInputData CompletedVehicle => SingleBusInputData?.CompletedVehicle;
// }
//}
......@@ -50,15 +50,15 @@ using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
{
public partial class DeclarationDataAdapterHeavyLorry : AbstractSimulationDataAdapter, IDeclarationDataAdapter
public partial class DeclarationDataAdapterHeavyLorry
{
public abstract class LorryBase : AbstractSimulationDataAdapter, IDeclarationDataAdapter
public abstract class LorryBase : AbstractSimulationDataAdapter, ILorryDeclarationDataAdapter
{
#region Implementation of IDeclarationDataAdapter
private readonly IDriverDataAdapter _driverDataAdapter = new LorryDriverDataAdapter();
protected readonly IVehicleDataAdapter _vehicleDataAdapter = new LorryVehicleDataAdapter();
private readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapterBase();
private readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
private readonly IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter();
private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
private readonly IPTODataAdapter _ptoDataAdapter = new PTODataAdapterLorry();
......@@ -144,25 +144,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
return _engineDataAdapter.CreateEngineData(vehicle, mode, mission);
}
public GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
public override GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc)
{
return _gearboxDataAdapter.CreateGearboxData(inputData, runData, shiftPolygonCalc, SupportedGearboxTypes);
}
protected virtual TorqueConverterData CreateTorqueConverterData(GearboxType gearboxType,
ITorqueConverterDeclarationInputData torqueConverter, double ratio,
CombustionEngineData componentsEngineInputData)
{
return TorqueConverterDataReader.Create(
torqueConverter.TCData,
DeclarationData.TorqueConverter.ReferenceRPM, DeclarationData.TorqueConverter.MaxInputSpeed,
ExecutionMode.Declaration, ratio,
DeclarationData.TorqueConverter.CLUpshiftMinAcceleration,
DeclarationData.TorqueConverter.CCUpshiftMinAcceleration);
}
#region Overrides of LorryBase
......
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
{
public partial class DeclarationDataAdapterHeavyLorry
{
[Obsolete("Use DeclarationDataAdapterHeavyLorry.Conventional instead, created automatically with NInject")]
public DeclarationDataAdapterHeavyLorry() { }
private IDeclarationDataAdapter _declarationDataAdapterImplementation = new Conventional();
public static readonly GearboxType[] SupportedGearboxTypes = Conventional.SupportedGearboxTypes;
//public static List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> GetDeclarationAirResistanceCurve(
// string parameterSet, SquareMeter si, Meter meter)
//{
// //return Conventional.GetDeclarationAirResistanceCurve(parameterSet, si, meter);
//}
#region Implementation of IDeclarationDataAdapter
public DriverData CreateDriverData()
{
return _declarationDataAdapterImplementation.CreateDriverData();
}
public VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
{
return _declarationDataAdapterImplementation.CreateVehicleData(vehicle, segment, mission, loading,
allowVocational);
}
public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment)
{
return _declarationDataAdapterImplementation.CreateAirdragData(airdragData, mission, segment);
}
public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
{
return _declarationDataAdapterImplementation.CreateAxleGearData(axlegearData);
}
public AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData)
{
return _declarationDataAdapterImplementation.CreateAngledriveData(angledriveData);
}
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle,
IEngineModeDeclarationInputData engineMode,
Mission mission)
{
return _declarationDataAdapterImplementation.CreateEngineData(vehicle, engineMode, mission);
}
public GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc)
{
return _declarationDataAdapterImplementation.CreateGearboxData(inputData, runData, shiftPolygonCalc);
}
public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio,
PerSecond engineIdlingSpeed)
{
return _declarationDataAdapterImplementation.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed);
}
public RetarderData CreateRetarderData(IRetarderInputData retarderData)
{
return _declarationDataAdapterImplementation.CreateRetarderData(retarderData);
}
public PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData)
{
return _declarationDataAdapterImplementation.CreatePTOTransmissionData(ptoData);
}
public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
IBusAuxiliariesDeclarationData busAuxData,
MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
{
return _declarationDataAdapterImplementation.CreateAuxiliaryData(auxData, busAuxData, missionType,
vehicleClass, vehicleLength, numSteeredAxles);
}
public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
{
return _declarationDataAdapterImplementation.CreateDummyAxleGearData(gbxData);
}
#endregion
}
}
\ No newline at end of file
//using System;
//using System.Collections.Generic;
//using TUGraz.VectoCommon.InputData;
//using TUGraz.VectoCommon.Models;
//using TUGraz.VectoCommon.Utils;
//using TUGraz.VectoCore.InputData.Reader.ComponentData;
//using TUGraz.VectoCore.Models.Declaration;
//using TUGraz.VectoCore.Models.Simulation.Data;
//using TUGraz.VectoCore.Models.SimulationComponent;
//using TUGraz.VectoCore.Models.SimulationComponent.Data;
//namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
//{
// public partial class DeclarationDataAdapterHeavyLorry
// {
// [Obsolete("Use DeclarationDataAdapterHeavyLorry.Conventional instead, created automatically with NInject")]
// public DeclarationDataAdapterHeavyLorry() { }
// private IDeclarationDataAdapter _declarationDataAdapterImplementation = new Conventional();
// public static readonly GearboxType[] SupportedGearboxTypes = Conventional.SupportedGearboxTypes;
// //public static List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> GetDeclarationAirResistanceCurve(
// // string parameterSet, SquareMeter si, Meter meter)
// //{
// // //return Conventional.GetDeclarationAirResistanceCurve(parameterSet, si, meter);
// //}
// #region Implementation of IDeclarationDataAdapter
// public DriverData CreateDriverData()
// {
// return _declarationDataAdapterImplementation.CreateDriverData();
// }
// public VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
// KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
// {
// return _declarationDataAdapterImplementation.CreateVehicleData(vehicle, segment, mission, loading,
// allowVocational);
// }
// public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment)
// {
// return _declarationDataAdapterImplementation.CreateAirdragData(airdragData, mission, segment);
// }
// public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
// {
// return _declarationDataAdapterImplementation.CreateAxleGearData(axlegearData);
// }
// public AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData)
// {
// return _declarationDataAdapterImplementation.CreateAngledriveData(angledriveData);
// }
// public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle,
// IEngineModeDeclarationInputData engineMode,
// Mission mission)
// {
// return _declarationDataAdapterImplementation.CreateEngineData(vehicle, engineMode, mission);
// }
// public GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
// IShiftPolygonCalculator shiftPolygonCalc)
// {
// return _declarationDataAdapterImplementation.CreateGearboxData(inputData, runData, shiftPolygonCalc);
// }
// public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio,
// PerSecond engineIdlingSpeed)
// {
// return _declarationDataAdapterImplementation.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed);
// }
// public RetarderData CreateRetarderData(IRetarderInputData retarderData)
// {
// return _declarationDataAdapterImplementation.CreateRetarderData(retarderData);
// }
// public PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData)
// {
// return _declarationDataAdapterImplementation.CreatePTOTransmissionData(ptoData);
// }
// public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
// IBusAuxiliariesDeclarationData busAuxData,
// MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
// {
// return _declarationDataAdapterImplementation.CreateAuxiliaryData(auxData, busAuxData, missionType,
// vehicleClass, vehicleLength, numSteeredAxles);
// }
// public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
// {
// return _declarationDataAdapterImplementation.CreateDummyAxleGearData(gbxData);
// }
// #endregion
// }
//}
\ No newline at end of file
......@@ -9,38 +9,140 @@ using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter {
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{
public interface IDeclarationDataAdapter
{
DriverData CreateDriverData();
//DriverData CreateDriverData();
VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational);
AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
//AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
//AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData);
//AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData);
//CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData engineMode, Mission mission);
//GearboxData CreateGearboxData(
// IVehicleDeclarationInputData inputData, VectoRunData runData,
// IShiftPolygonCalculator shiftPolygonCalc);
//ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
//RetarderData CreateRetarderData(IRetarderInputData retarderData);
//PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
//IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles);
//AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
}
public interface ILorryDeclarationDataAdapter : IDeclarationDataAdapter
{
DriverData CreateDriverData();
AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData);
AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData);
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData engineMode, Mission mission);
GearboxData CreateGearboxData(
IVehicleDeclarationInputData inputData, VectoRunData runData,
AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData,
VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc);
ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
RetarderData CreateRetarderData(IRetarderInputData retarderData);
PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles);
AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
RetarderData CreateRetarderData(IRetarderInputData retarderData);
ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
//VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
// KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational);
AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle,
IEngineModeDeclarationInputData engineMode, Mission mission);
IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
Meter vehicleLength, int? numSteeredAxles);
}
public interface IPrimaryBusDeclarationDataAdapter : IDeclarationDataAdapter
{
IAuxiliaryConfig CreateBusAuxiliariesData(
Mission mission, IVehicleDeclarationInputData vehicleData, VectoRunData runData);
DriverData CreateDriverData();
AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData);
AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData);
GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData,
VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc);
RetarderData CreateRetarderData(IRetarderInputData retarderData);
PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
//VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
// KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational);
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle,
IEngineModeDeclarationInputData engineMode, Mission mission);
IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
Meter vehicleLength, int? numSteeredAxles);
AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
}
public interface IGenericCompletedBusDataAdapter : IPrimaryBusDeclarationDataAdapter
public interface IGenericCompletedBusDeclarationDataAdapter : IDeclarationDataAdapter
{
//VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
// KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational);
AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx,
Mission mission);
IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
Meter vehicleLength, int? numSteeredAxles);
AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData);
AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData);
GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData,
VectoRunData runData,
IShiftPolygonCalculator shiftPolygonCalc);
ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
RetarderData CreateRetarderData(IRetarderInputData retarderData);
DriverData CreateDriverData();
IAuxiliaryConfig CreateBusAuxiliariesData(
Mission mission, IVehicleDeclarationInputData vehicleData, VectoRunData runData);
}
public interface ISpecificCompletedBusDataAdapter : IPrimaryBusDeclarationDataAdapter
public interface ISpecificCompletedBusDeclarationDataAdapter
{
IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData primaryVehicle,
IVehicleDeclarationInputData completedVehicle, VectoRunData runData);
VehicleData CreateVehicleData(IVehicleDeclarationInputData primaryVehicle,
IVehicleDeclarationInputData completedVehicle, Segment segment, Mission mission,
KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading);
IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
Meter vehicleLength, int? numSteeredAxles);
AirdragData CreateAirdragData(IVehicleDeclarationInputData completedVehicle, Mission mission);
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx,
Mission mission);
}
}
\ No newline at end of file
using TUGraz.VectoCore.Utils.Ninject;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{
public interface IDeclarationDataAdapterFactory
{
IDeclarationDataAdapter CreateDataAdapter(
VehicleTypeAndArchitectureStringHelperRundata.VehicleClassification vehicleClassification);
}
}
......@@ -14,18 +14,17 @@ using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents
{
internal interface IAirdragDataAdapter
public interface IAirdragDataAdapter
{
AirdragData CreateAirdragData(
IAirdragDeclarationInputData airdragInputData, Mission mission,
Segment segment);
}
internal class AirdragDataAdapter : IAirdragDataAdapter
public class AirdragDataAdapter : IAirdragDataAdapter
{
public List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry>
GetDeclarationAirResistanceCurve(
string crosswindCorrectionParameters, SquareMeter aerodynamicDragAera, Meter vehicleHeight)
public List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> GetDeclarationAirResistanceCurve(
string crosswindCorrectionParameters, SquareMeter aerodynamicDragAera, Meter vehicleHeight)
{
var startSpeed = Constants.SimulationSettings.CrosswindCorrection.MinVehicleSpeed;
var maxSpeed = Constants.SimulationSettings.CrosswindCorrection.MaxVehicleSpeed;
......
......@@ -13,6 +13,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
public interface IAngledriveDataAdapter
{
AngledriveData CreateAngledriveData(IAngledriveInputData data, bool useEfficiencyFallback);
AngledriveData CreateAngledriveData(IAngledriveInputData data);
}
public class AngledriveDataAdapter : IAngledriveDataAdapter
......@@ -61,6 +62,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
throw new VectoException("Error while reading Angledrive data: {0}", e.Message, e);
}
}
public AngledriveData CreateAngledriveData(IAngledriveInputData data)
{
return CreateAngledriveData(data, false);
}
}
public class GenericAngledriveDataAdapter : IAngledriveDataAdapter
......@@ -73,6 +79,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
return _genericPowertrainData.CreateGenericBusAngledriveData(data);
}
public AngledriveData CreateAngledriveData(IAngledriveInputData data)
{
return CreateAngledriveData(data, false);
}
#endregion
}
}
\ No newline at end of file
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.Models.GenericModelData;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
......@@ -12,7 +13,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
}
public class AxleGearDataAdapterBase : IAxleGearDataAdapter
public class AxleGearDataAdapter : IAxleGearDataAdapter
{
public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
{
......@@ -68,7 +69,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
AxleGear = new GearData { Ratio = data.Ratio }
};
}
public AxleGearData CreateAxleGearData(IAxleGearInputData data)
public virtual AxleGearData CreateAxleGearData(IAxleGearInputData data)
{
var retVal = SetCommonAxleGearData(data);
......@@ -76,4 +77,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
return retVal;
}
}
public class GenericCompletedBusAxleGearDataAdapter : AxleGearDataAdapter
{
#region Overrides of AxleGearDataAdapterBase
private readonly GenericTransmissionComponentData _genericPowertrainData = new GenericTransmissionComponentData();
public override AxleGearData CreateAxleGearData(IAxleGearInputData data)
{
return _genericPowertrainData.CreateGenericBusAxlegearData(data);
}
#endregion
}
}
\ No newline at end of file
......@@ -15,8 +15,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
{
public interface IEngineDataAdapter
{
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle,
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle,
IEngineModeDeclarationInputData mode, Mission mission);
CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission);
}
public abstract class EngineComponentDataAdapter : ComponentDataAdapterBase, IEngineDataAdapter
{
......@@ -142,13 +144,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
#region Implementation of IEngineDataAdapter
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode,
public CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, IEngineModeDeclarationInputData mode,
Mission mission)
{
CheckDeclarationMode(vehicle.Components.EngineInputData, "EngineData");
return DoCreateEngineData(vehicle, mode, mission);
CheckDeclarationMode(primaryVehicle.Components.EngineInputData, "EngineData");
return DoCreateEngineData(primaryVehicle, mode, mission);
}
public abstract CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx,
Mission mission);
protected abstract CombustionEngineData DoCreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode, Mission mission);
#endregion
......@@ -158,6 +163,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
{
#region Overrides of EngineDataAdapter
public override CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission)
{
throw new NotImplementedException();
}
protected override CombustionEngineData DoCreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode, Mission mission)
{
var engine = vehicle.Components.EngineInputData;
......@@ -219,6 +229,26 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
return retVal;
}
#endregion
}
public class GenericCombustionEngineComponentDataAdapter : EngineComponentDataAdapter
{
GenericBusEngineData busEngineData = GenericBusEngineData.Instance;
#region Overrides of EngineComponentDataAdapter
protected override CombustionEngineData DoCreateEngineData(IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode,
Mission mission)
{
throw new NotImplementedException();
}
public override CombustionEngineData CreateEngineData(IVehicleDeclarationInputData primaryVehicle, int modeIdx, Mission mission)
{
return busEngineData.CreateGenericBusEngineData(primaryVehicle, modeIdx, mission);
}
#endregion
}
......
......@@ -52,7 +52,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
return null;
}
public static void CreateTCSecondGearATSerial(GearData gearData,
protected static void CreateTCSecondGearATSerial(GearData gearData,
ShiftPolygon shiftPolygon)
{
gearData.TorqueConverterRatio = gearData.Ratio;
......@@ -60,7 +60,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
gearData.TorqueConverterShiftPolygon = shiftPolygon;
}
public static void CreateTCFirstGearATSerial(GearData gearData,
protected static void CreateTCFirstGearATSerial(GearData gearData,
ShiftPolygon shiftPolygon)
{
gearData.TorqueConverterRatio = gearData.Ratio;
......@@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
gearData.TorqueConverterShiftPolygon = shiftPolygon;
}
public static void CretateTCFirstGearATPowerSplit(GearData gearData, uint i, ShiftPolygon shiftPolygon)
protected virtual void CretateTCFirstGearATPowerSplit(GearData gearData, uint i, ShiftPolygon shiftPolygon)
{
gearData.TorqueConverterRatio = 1;
gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(1, 1, $"TCGear {i + 1}");
......@@ -108,7 +108,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
}
}
public static TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i,
protected virtual TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i,
bool useEfficiencyFallback, VehicleCategory vehicleCategory, GearboxType gearboxType)
{
if (gear.LossMap != null)
......@@ -380,4 +380,39 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
#endregion
}
public class GenericCompletedBusGearboxDataAdapter : GearboxDataAdapter
{
public const double GearEfficiencyDirectGear = 0.98;
public const double GearEfficiencyIndirectGear = 0.96;
public const double GearEfficiencyAT = 0.925;
public GenericCompletedBusGearboxDataAdapter(ITorqueConverterDataAdapter torqueConverterDataAdapter) : base(
torqueConverterDataAdapter)
{
}
#region Overrides of GearboxDataAdapterBase
protected override TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i, bool useEfficiencyFallback,
VehicleCategory vehicleCategory, GearboxType gearboxType)
{
if (gearboxType.AutomaticTransmission())
{
return TransmissionLossMapReader.Create(GearEfficiencyAT, gear.Ratio, $"Gear {i + 1}");
}
return TransmissionLossMapReader.Create(
gear.Ratio.IsEqual(1) ? GearEfficiencyDirectGear : GearEfficiencyIndirectGear, gear.Ratio, $"Gear {i + 1}");
}
protected override void CretateTCFirstGearATPowerSplit(GearData gearData, uint i, ShiftPolygon shiftPolygon)
{
gearData.TorqueConverterRatio = 1;
//gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(GearEfficiencyIndirectGear, 1, string.Format("TCGear {0}", i + 1));
gearData.TorqueConverterGearLossMap = TransmissionLossMapReader.Create(1.0, 1, $"TCGear {i + 1}");
gearData.TorqueConverterShiftPolygon = shiftPolygon;
}
#endregion
}
}
\ No newline at end of file
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