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

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

segmentation for primary buses works

parent 8ab1d7f9
No related branches found
No related tags found
No related merge requests found
Showing
with 965 additions and 705 deletions
......@@ -1324,7 +1324,7 @@ lbDlog:
Dim s0 As Segment = Nothing
Try
s0 = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, maxMass, 0.SI(Of Kilogram),
s0 = DeclarationData.TruckSegments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, maxMass, 0.SI(Of Kilogram),
False)
Catch
End Try
......
......@@ -674,7 +674,7 @@ Public Class VectoVTPJobForm
Dim s0 As Segment = Nothing
Try
s0 = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, maxMass,
s0 = DeclarationData.TruckSegments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, maxMass,
0.SI (Of Kilogram),
False)
Catch
......
......@@ -83,7 +83,7 @@ Public Class VehicleForm
CbAxleConfig.ValueMember = "Value"
CbAxleConfig.DisplayMember = "Label"
If (cfg.DeclMode) Then
CbAxleConfig.DataSource = DeclarationData.Segments.GetAxleConfigurations() _
CbAxleConfig.DataSource = DeclarationData.TruckSegments.GetAxleConfigurations() _
.Cast(Of AxleConfiguration) _
.Select(Function(category) New With {Key .Value = category, .Label = category.GetName()}).ToList()
else
......@@ -150,7 +150,7 @@ Public Class VehicleForm
_hdVclass = "-"
Dim s0 As Segment = Nothing
Try
s0 = DeclarationData.Segments.Lookup(vehC, axlC, maxMass, 0.SI(Of Kilogram), False)
s0 = DeclarationData.TruckSegments.Lookup(vehC, axlC, maxMass, 0.SI(Of Kilogram), False)
Catch
' no segment found - ignore
......@@ -179,7 +179,7 @@ Public Class VehicleForm
Dim s0 As Segment = Nothing
Try
s0 = DeclarationData.Segments.Lookup(vehC, axlC, maxMass, 0.SI(Of Kilogram), False)
s0 = DeclarationData.TruckSegments.Lookup(vehC, axlC, maxMass, 0.SI(Of Kilogram), False)
Catch
' no segment found - ignore
End Try
......
......@@ -14,6 +14,7 @@ Imports System.IO
Imports System.Linq
Imports Newtonsoft.Json.Linq
Imports TUGraz.VECTO.Input_Files
Imports TUGraz.VectoCommon.BusAuxiliaries
Imports TUGraz.VectoCommon.Exceptions
Imports TUGraz.VectoCommon.InputData
Imports TUGraz.VectoCommon.Models
......@@ -210,7 +211,7 @@ Public Class Engine
Try
If mode = ExecutionMode.Declaration Then
Dim doa As DeclarationDataAdapter = New DeclarationDataAdapter()
Dim doa As DeclarationDataAdapterTruck = New DeclarationDataAdapterTruck()
Dim dummyGearboxData As IGearboxDeclarationInputData = New Gearbox() With {
.Type = GearboxType.AMT,
.MaxTorque = New List(Of String),
......@@ -612,7 +613,8 @@ Public Class DummyVehicle
Public ReadOnly Property NuberOfPassengersUpperDeck As Integer Implements IVehicleDeclarationInputData.NuberOfPassengersUpperDeck
Public ReadOnly Property NumberOfPassengersLowerDeck As Integer Implements IVehicleDeclarationInputData.NumberOfPassengersLowerDeck
Public ReadOnly Property VehicleCode As VehicleCode Implements IVehicleDeclarationInputData.VehicleCode
Public ReadOnly Property LowEntry As Boolean Implements IVehicleDeclarationInputData.LowEntry
Public ReadOnly Property FloorType As FloorType Implements IVehicleDeclarationInputData.FloorType
Public ReadOnly Property Articulated As Boolean Implements IVehicleDeclarationInputData.Articulated
Public ReadOnly Property IVehicleDeclarationInputData_Height As Meter Implements IVehicleDeclarationInputData.Height
Public ReadOnly Property CurbMassExtra As Kilogram Implements IVehicleEngineeringInputData.CurbMassExtra
Public ReadOnly Property Loading As Kilogram Implements IVehicleEngineeringInputData.Loading
......
......@@ -211,7 +211,7 @@ Public Class Gearbox
vehiclecategory = vehiclecategory.RigidTruck
End Try
If mode = ExecutionMode.Declaration Then
Dim doa As DeclarationDataAdapter = New DeclarationDataAdapter()
Dim doa As DeclarationDataAdapterTruck = New DeclarationDataAdapterTruck()
Try
engine = doa.CreateEngineData(inputData.JobInputData.Vehicle, inputData.JobInputData.Vehicle.Components.EngineInputData.EngineModes.First(), New Mission() With {.MissionType = MissionType.LongHaul})
......
......@@ -427,7 +427,7 @@ Public Class VectoJob
New ValidationResult("Vecto Job Configuration is invalid. ", result.Select(Function(r) r.ErrorMessage).ToList())
End If
Dim dataFactory As DeclarationModeVectoRunDataFactory = New DeclarationModeVectoRunDataFactory(vectoJob, Nothing)
Dim dataFactory As DeclarationModeTruckVectoRunDataFactory = New DeclarationModeTruckVectoRunDataFactory(vectoJob, Nothing)
jobData = dataFactory.NextRun().First()
Else
......
......@@ -15,6 +15,7 @@ Imports System.ComponentModel.DataAnnotations
Imports System.IO
Imports System.Linq
Imports TUGraz.VECTO.Input_Files
Imports TUGraz.VectoCommon.BusAuxiliaries
Imports TUGraz.VectoCommon.InputData
Imports TUGraz.VectoCommon.Models
Imports TUGraz.VectoCommon.Utils
......@@ -108,8 +109,8 @@ Public Class Vehicle
Try
If mode = ExecutionMode.Declaration Then
Dim doa As DeclarationDataAdapter = New DeclarationDataAdapter()
Dim segment As Segment = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration,
Dim doa As DeclarationDataAdapterTruck = New DeclarationDataAdapterTruck()
Dim segment As Segment = DeclarationData.TruckSegments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis, false)
vehicleData = doa.CreateVehicleData(vehicle, segment.Missions.First(),
segment.Missions.First().Loadings.First().Value)
......@@ -406,9 +407,10 @@ Public Class Vehicle
End Get
End Property
Public ReadOnly Property LowEntry As Boolean Implements IVehicleDeclarationInputData.LowEntry
Public ReadOnly Property IVehicleDeclarationInputData_Height As Meter Implements IVehicleDeclarationInputData.Height
Public ReadOnly Property Articulated As Boolean Implements IVehicleDeclarationInputData.Articulated
Public ReadOnly Property Height As Meter Implements IVehicleEngineeringInputData.Height
Get
Return VehicleHeight.SI(Of Meter)()
......@@ -752,6 +754,7 @@ Public Class Vehicle
Public ReadOnly Property NuberOfPassengersUpperDeck As Integer Implements IVehicleDeclarationInputData.NuberOfPassengersUpperDeck
Public ReadOnly Property NumberOfPassengersLowerDeck As Integer Implements IVehicleDeclarationInputData.NumberOfPassengersLowerDeck
Public ReadOnly Property VehicleCode As VehicleCode Implements IVehicleDeclarationInputData.VehicleCode
Public ReadOnly Property FloorType As FloorType Implements IVehicleDeclarationInputData.FloorType
Public ReadOnly Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
get
......
......@@ -53,8 +53,8 @@ Namespace UnitTests
'_defaultInputConfig.RetarderBrake = True
_defaultInputConfig.KneelingHeightMillimeters = 80.SI(Unit.SI.Milli.Meter).Cast (of Meter)
_defaultInputConfig.AirSuspensionControl = ConsumerTechnology.Electrically ' "Electrically"
_defaultInputConfig.AdBlueDosing = ConsumerTechnology.Pneumatic ' "Pneumatic"
_defaultInputConfig.Doors = ConsumerTechnology.Pneumatic ' "Pneumatic"
_defaultInputConfig.AdBlueDosing = ConsumerTechnology.Pneumatically ' "Pneumatic"
_defaultInputConfig.Doors = ConsumerTechnology.Pneumatically ' "Pneumatic"
_defaultInputConfig.SmartAirCompression = True
'_Signals.TotalCycleTimeSeconds = 3114
......@@ -68,10 +68,10 @@ Namespace UnitTests
Dim psUserInputsConfig = New PneumaticUserInputsConfig()
psUserInputsConfig.AirSuspensionControl = ConsumerTechnology.Mechanically ' "Mechanically"
psUserInputsConfig.Doors = ConsumerTechnology.Pneumatic '"Pneumatic"
psUserInputsConfig.AdBlueDosing = ConsumerTechnology.Pneumatic ' "Pneumatic"
psUserInputsConfig.Doors = ConsumerTechnology.Pneumatically '"Pneumatic"
psUserInputsConfig.AdBlueDosing = ConsumerTechnology.Pneumatically ' "Pneumatic"
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -93,7 +93,7 @@ Namespace UnitTests
initialise()
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -119,7 +119,7 @@ Namespace UnitTests
initialise()
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
......@@ -149,7 +149,7 @@ Namespace UnitTests
_defaultInputConfig.CompressorGearEfficiency = 0.8
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -173,7 +173,7 @@ Namespace UnitTests
initialise()
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -204,7 +204,7 @@ Namespace UnitTests
_defaultInputConfig.SmartRegeneration = False
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -233,7 +233,7 @@ Namespace UnitTests
'_defaultInputConfig.RetarderBrake = False
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.None)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.None)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -262,7 +262,7 @@ Namespace UnitTests
_defaultInputConfig.KneelingHeightMillimeters = 100.SI(Unit.si.Milli.Meter).Cast (Of Meter)
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -288,7 +288,7 @@ Namespace UnitTests
_defaultInputConfig.AirSuspensionControl = ConsumerTechnology.Mechanically
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -314,9 +314,9 @@ Namespace UnitTests
initialise()
_defaultInputConfig.AdBlueDosing = ConsumerTechnology.Pneumatic
_defaultInputConfig.AdBlueDosing = ConsumerTechnology.Pneumatically
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......@@ -345,7 +345,7 @@ Namespace UnitTests
_defaultInputConfig.Doors = ConsumerTechnology.Electrically
Dim psAuxConfig = New DeclarationDataAdapter().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psAuxConfig = New DeclarationDataAdapterTruck().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
Dim psActuationsMap = ActuationsMapReader.Read(_actuationsMapPath)
Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath)
......
......@@ -71,7 +71,7 @@ Namespace UnitTests
<TestCase("AuxHeater")>
Public Sub InstantiateDefaultSSMGenInputsTest(section As String)
Dim dao = New declarationDataAdapter()
Dim dao = New DeclarationDataAdapterTruck()
Dim target As ISSMInputs = dao.CreateSSMModelParameters(Utils.GetDefaultVehicleData(), FuelData.Diesel)
If section = "BusParameterisation" Then
......@@ -560,7 +560,7 @@ Namespace UnitTests
Const filePath As String = "SSMTOOLTestSaveRetreive.json"
Dim success As Boolean
Dim dao = New DeclarationDataAdapter()
Dim dao = New DeclarationDataAdapterTruck()
Dim target As SSMTOOL = New SSMTOOL(dao.CreateSSMModelParameters(Utils.GetDefaultVehicleData(),
FuelData.Diesel))
......
......@@ -164,7 +164,9 @@ namespace TUGraz.VectoCommon.InputData
int NumberOfPassengersLowerDeck { get; }
VehicleCode VehicleCode { get; }
bool LowEntry { get; }
FloorType FloorType { get; }
bool Articulated { get; }
Meter Height { get; }
......
......@@ -190,6 +190,13 @@ namespace TUGraz.VectoCore.Configuration
}
}
public static class BusParameters
{
public static readonly Meter DriverCompartmentLength = 1.2.SI<Meter>();
public static readonly Kilogram PassengerWeightLow = 68.SI<Kilogram>();
public static readonly Kilogram PassengerWeightHigh = 71.SI<Kilogram>();
}
public static class FileExtensions
{
public const string PDFReport = ".pdf";
......@@ -281,6 +288,20 @@ namespace TUGraz.VectoCore.Configuration
public static readonly MeterPerSecond HighwaySpeedThreshold = 70.KMPHtoMeterPerSecond();
public static readonly MeterPerSecond RuralSpeedThreshold = 50.KMPHtoMeterPerSecond();
public static class CrosswindCorrection
{
public const int MinVehicleSpeed = 60; // km/h
public const int MaxVehicleSpeed = 130; // km/h
public const int VehicleSpeedStep = 5; // km/h
public const int MaxAlpha = 180; // degree
public const int AlphaStep = 5; // degree
public const int MinHeight = 5; // percent
public const int MaxHeight = 100; // percent
public const int HeightStep = 10; // percent
}
}
public static class XML
......
......@@ -33,6 +33,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Resources;
......@@ -212,15 +213,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get { return VehicleData.DynamicTyreRadius; }
}
public bool LowEntry { get; set; }
public bool Articulated { get { return VehicleData.Articulated; } }
public Meter Height
{
get { return VehicleData.Height; }
}
public Meter Length { get { return null; } }
public Meter Width { get { return null; } }
public Meter Length { get { return VehicleData.Length; } }
public Meter Width { get { return VehicleData.Width; } }
IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
{
......@@ -387,6 +389,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public int NuberOfPassengersUpperDeck { get { return 0; } }
public int NumberOfPassengersLowerDeck { get { return 0; } }
public VehicleCode VehicleCode { get { return VehicleCode.NOT_APPLICABLE; } }
public FloorType FloorType { get { return VehicleData.FloorType; } }
IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components
{
......
......@@ -58,6 +58,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get { return this; }
}
#region Overrides of JSONVehicleDataV7
public override bool Articulated
{
get { return Body.GetEx<bool>("Articulated"); }
}
#endregion
#endregion
#region Implementation of IBusAuxiliariesDeclarationData
......@@ -205,6 +214,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
#endregion
}
// ###################################################################
// ###################################################################
public class JSONVehicleDataV8 : JSONVehicleDataV7
{
public JSONVehicleDataV8(JObject data, string fileName, IJSONVehicleComponents job, bool tolerateMissing = false) :
......@@ -236,6 +248,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
#endregion
}
// ###################################################################
// ###################################################################
public class JSONVehicleDataV7 : JSONFile, IVehicleEngineeringInputData, IRetarderInputData, IAngledriveInputData,
IPTOTransmissionInputData, IAirdragEngineeringInputData, IAdvancedDriverAssistantSystemDeclarationInputData,
......@@ -329,7 +344,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get { return Body.GetEx<double>(JsonKeys.Vehicle_DynamicTyreRadius).SI(Unit.SI.Milli.Meter).Cast<Meter>(); }
}
public virtual bool LowEntry { get; set; }
public virtual bool Articulated { get { return false; } }
public virtual Meter Height
{
......@@ -574,6 +589,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
get { return VehicleCode.NOT_APPLICABLE; }
}
public virtual FloorType FloorType { get { return FloorType.Unknown; } }
IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components
{
get { return this; }
......
......@@ -33,6 +33,7 @@ using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Resources;
......@@ -271,7 +272,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public virtual int NuberOfPassengersUpperDeck { get { return 0; } }
public virtual int NumberOfPassengersLowerDeck { get { return 0; } }
public virtual VehicleCode VehicleCode { get { return VehicleCode.NOT_APPLICABLE; } }
public virtual bool LowEntry { get { return false; } }
public virtual FloorType FloorType { get { return FloorType.Unknown; } }
public virtual bool Articulated { get { return false; } }
public virtual Meter Height { get { return null; } }
public virtual Meter Length { get { return null; } }
public virtual Meter Width { get { return null; } }
......
......@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
using TUGraz.IVT.VectoXML;
using TUGraz.VectoCommon.BusAuxiliaries;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Resources;
......@@ -167,7 +168,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
public virtual int NuberOfPassengersUpperDeck { get { return 0; } }
public virtual int NumberOfPassengersLowerDeck { get { return 0; } }
public virtual VehicleCode VehicleCode { get { return VehicleCode.NOT_APPLICABLE; } }
public virtual bool LowEntry { get { return false; } }
public virtual FloorType FloorType { get { return FloorType.Unknown; } }
public virtual bool Articulated { get { return false; } }
public virtual Meter Width { get { return null; } }
......
using System;
using System.Collections.Generic;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter {
public class DeclarationDataAdapterPrimaryBus : DeclarationDataAdapterTruck
{
public AirdragData CreateAirdragData(Mission mission)
{
throw new NotImplementedException();
}
public IEnumerable<VectoRunData.AuxData> CreateAuxiliaryData()
{
throw new NotImplementedException();
}
#region Overrides of DeclarationDataAdapterTruck
public override VehicleData CreateVehicleData(IVehicleDeclarationInputData data, Mission mission, Kilogram loading)
{
var retVal = base.CreateVehicleData(data, mission, loading);
retVal.CurbWeight = mission.CurbMass;
return retVal;
}
#endregion
}
}
\ No newline at end of file
......@@ -123,14 +123,14 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
break;
case CrossWindCorrectionMode.DeclarationModeCorrection:
var airDragArea = airdragData.AirDragArea ??
DeclarationData.Segments.LookupCdA(
DeclarationData.TruckSegments.LookupCdA(
data.VehicleCategory, data.AxleConfiguration, data.GrossVehicleMassRating, false);
var height = data.Height ?? DeclarationData.Segments.LookupHeight(
var height = data.Height ?? DeclarationData.TruckSegments.LookupHeight(
data.VehicleCategory, data.AxleConfiguration,
data.GrossVehicleMassRating, false);
retVal.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(
airDragArea,
DeclarationDataAdapter.GetDeclarationAirResistanceCurve(
DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve(
GetAirdragParameterSet(
data.VehicleCategory, data.AxleConfiguration, data.Components.AxleWheels.AxlesEngineering.Count), airDragArea,
height),
......
using System.Collections.Generic;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter {
public interface IDeclarationDataAdapter
{
DriverData CreateDriverData();
VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Mission mission, Kilogram loading);
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(
IGearboxDeclarationInputData gearboxData, CombustionEngineData engineData, double axleGearRatio, Meter rDyn,
VehicleCategory vehicleCategory, ITorqueConverterDeclarationInputData torqueConverterData);
RetarderData CreateRetarderData(IRetarderInputData retarderData);
PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, MissionType missionType, VehicleClass vehicleClass);
}
}
\ No newline at end of file
using System.Collections.Generic;
using System.Linq;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.Reader.Impl {
public abstract class AbstractDeclarationVectoRunDataFactory : LoggingObject, IVectoRunDataFactory
{
protected static readonly object CyclesCacheLock = new object();
protected static readonly Dictionary<MissionType, DrivingCycleData> CyclesCache =
new Dictionary<MissionType, DrivingCycleData>();
protected readonly IDeclarationInputDataProvider InputDataProvider;
protected IDeclarationReport Report;
protected abstract IDeclarationDataAdapter DataAdapter { get; }
protected Segment _segment;
protected DriverData _driverdata;
protected AirdragData _airdragData;
protected AxleGearData _axlegearData;
protected AngledriveData _angledriveData;
protected GearboxData _gearboxData;
protected RetarderData _retarderData;
protected PTOData _ptoTransmissionData;
protected PTOData _municipalPtoTransmissionData;
//protected Exception InitException;
protected AbstractDeclarationVectoRunDataFactory(
IDeclarationInputDataProvider dataProvider, IDeclarationReport report)
{
InputDataProvider = dataProvider;
Report = report;
//try {
// Initialize();
// if (Report != null) {
// InitializeReport();
// }
//} catch (Exception e) {
// InitException = e;
//}
}
public IEnumerable<VectoRunData> NextRun()
{
Initialize();
if (Report != null) {
InitializeReport();
}
return GetNextRun();
}
protected abstract IEnumerable<VectoRunData> GetNextRun();
protected virtual void Initialize()
{
var vehicle = InputDataProvider.JobInputData.Vehicle;
if (vehicle.ExemptedVehicle) {
return;
}
_segment = GetSegment(vehicle);
_driverdata = DataAdapter.CreateDriverData();
_driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile);
var tempVehicle = DataAdapter.CreateVehicleData(vehicle, _segment.Missions.First(),
_segment.Missions.First().Loadings.First().Value);
_airdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData,
_segment.Missions.First(), _segment);
_axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData);
_angledriveData = DataAdapter.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.Components.AngledriveInputData);
var tmpEngine = DataAdapter.CreateEngineData(
vehicle, vehicle.Components.EngineInputData.EngineModes[0], _segment.Missions.First());
_gearboxData = DataAdapter.CreateGearboxData(vehicle.Components.GearboxInputData, tmpEngine,
_axlegearData.AxleGear.Ratio,
tempVehicle.DynamicTyreRadius, tempVehicle.VehicleCategory, vehicle.Components.TorqueConverterInputData);
_retarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
_ptoTransmissionData = DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData);
_municipalPtoTransmissionData = CreateDefaultPTOData();
}
protected abstract Segment GetSegment(IVehicleDeclarationInputData vehicle);
protected virtual void InitializeReport()
{
VectoRunData powertrainConfig;
List<List<FuelData.Entry>> fuels;
if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) {
powertrainConfig = new VectoRunData() {
Exempted = true,
VehicleData = DataAdapter.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, null, null),
InputDataHash = InputDataProvider.XMLHash
};
fuels = new List<List<FuelData.Entry>>();
} else {
var vehicle = InputDataProvider.JobInputData.Vehicle;
powertrainConfig = new VectoRunData() {
VehicleData =
DataAdapter.CreateVehicleData(
InputDataProvider.JobInputData.Vehicle, _segment.Missions.First(),
_segment.Missions.First().Loadings.First().Value),
AirdragData = _airdragData,
EngineData = DataAdapter.CreateEngineData(vehicle, vehicle.Components.EngineInputData.EngineModes[0], _segment.Missions.First()),
GearboxData = _gearboxData,
AxleGearData = _axlegearData,
Retarder = _retarderData,
Aux =
DataAdapter.CreateAuxiliaryData(
InputDataProvider.JobInputData.Vehicle.Components.AuxiliaryInputData,
_segment.Missions.First().MissionType,
_segment.VehicleClass),
PTO = _ptoTransmissionData,
InputDataHash = InputDataProvider.XMLHash
};
powertrainConfig.VehicleData.VehicleClass = _segment.VehicleClass;
fuels = vehicle.Components.EngineInputData.EngineModes.Select(x => x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, vehicle.TankSystem)).ToList())
.ToList();
}
Report.InitializeReport(powertrainConfig, fuels);
}
protected virtual PTOData CreateDefaultPTOData()
{
return new PTOData() {
TransmissionType = DeclarationData.PTO.DefaultPTOTechnology,
LossMap = PTOIdleLossMapReader.ReadFromStream(RessourceHelper.ReadStream(DeclarationData.PTO.DefaultPTOIdleLosses)),
PTOCycle =
DrivingCycleDataReader.ReadFromStream(RessourceHelper.ReadStream(DeclarationData.PTO.DefaultPTOActivationCycle),
CycleType.PTO, "PTO", false)
};
}
}
}
\ 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