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

Skip to content
Snippets Groups Projects
Commit fb4aa8f9 authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

refactor declarationrundatafactory: simplify nextrun() method

parent 084b86ab
No related branches found
No related tags found
No related merge requests found
......@@ -55,56 +55,78 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
protected IDeclarationInputDataProvider InputDataProvider;
protected IDeclarationReport Report;
private DeclarationDataAdapter _dao;
private Segment _segment;
private DriverData _driverdata;
private AirdragData _airdragData;
private CombustionEngineData _engineData;
private AxleGearData _axlegearData;
private AngledriveData _angledriveData;
private GearboxData _gearboxData;
private RetarderData _retarderData;
private PTOData _ptoTransmissionData;
private PTOData _municipalPtoTransmissionData;
internal DeclarationModeVectoRunDataFactory(IDeclarationInputDataProvider dataProvider, IDeclarationReport report)
{
InputDataProvider = dataProvider;
Report = report;
}
public IEnumerable<VectoRunData> NextRun()
Initialize();
if (Report != null) {
InitializeReport();
}
}
private void Initialize()
{
var dao = new DeclarationDataAdapter();
var segment = GetVehicleClassification(InputDataProvider.VehicleInputData.VehicleCategory,
_dao = new DeclarationDataAdapter();
_segment = GetVehicleClassification(InputDataProvider.VehicleInputData.VehicleCategory,
InputDataProvider.VehicleInputData.AxleConfiguration,
InputDataProvider.VehicleInputData.GrossVehicleMassRating, InputDataProvider.VehicleInputData.CurbMassChassis);
var driverdata = dao.CreateDriverData(InputDataProvider.DriverInputData);
driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
_driverdata = _dao.CreateDriverData(InputDataProvider.DriverInputData);
_driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile);
var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(),
segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight);
var airdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, segment.Missions.First(),segment);
var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.VehicleInputData.EngineIdleSpeed,
var tempVehicle = _dao.CreateVehicleData(InputDataProvider.VehicleInputData, _segment.Missions.First(),
_segment.Missions.First().Loadings.First().Value, _segment.MunicipalBodyWeight);
_airdragData = _dao.CreateAirdragData(InputDataProvider.AirdragInputData, _segment.Missions.First(), _segment);
_engineData = _dao.CreateEngineData(InputDataProvider.EngineInputData,
InputDataProvider.VehicleInputData.EngineIdleSpeed,
InputDataProvider.GearboxInputData, InputDataProvider.VehicleInputData.TorqueLimits);
var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false);
var angledriveData = dao.CreateAngledriveData(InputDataProvider.AngledriveInputData, false);
var gearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData, axlegearData.AxleGear.Ratio,
_axlegearData = _dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false);
_angledriveData = _dao.CreateAngledriveData(InputDataProvider.AngledriveInputData, false);
_gearboxData = _dao.CreateGearboxData(InputDataProvider.GearboxInputData, _engineData, _axlegearData.AxleGear.Ratio,
tempVehicle.DynamicTyreRadius, false);
var retarderData = dao.CreateRetarderData(InputDataProvider.RetarderInputData);
_retarderData = _dao.CreateRetarderData(InputDataProvider.RetarderInputData);
var ptoTransmissionData = dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData);
_ptoTransmissionData = _dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData);
var municipalPtoTransmissionData = CreateDefaultPTOData();
if (Report != null) {
var powertrainConfig = new VectoRunData() {
VehicleData =
dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(),
segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight),
AirdragData = airdragData,
EngineData = engineData,
GearboxData = gearboxData,
AxleGearData = axlegearData,
Retarder = retarderData,
Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), segment.Missions.First().MissionType,
segment.VehicleClass),
InputDataHash = InputDataProvider.XMLHash
};
Report.InitializeReport(powertrainConfig, segment);
}
_municipalPtoTransmissionData = CreateDefaultPTOData();
}
foreach (var mission in segment.Missions) {
private void InitializeReport()
{
var powertrainConfig = new VectoRunData() {
VehicleData =
_dao.CreateVehicleData(InputDataProvider.VehicleInputData, _segment.Missions.First(),
_segment.Missions.First().Loadings.First().Value, _segment.MunicipalBodyWeight),
AirdragData = _airdragData,
EngineData = _engineData,
GearboxData = _gearboxData,
AxleGearData = _axlegearData,
Retarder = _retarderData,
Aux = _dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), _segment.Missions.First().MissionType,
_segment.VehicleClass),
InputDataHash = InputDataProvider.XMLHash
};
Report.InitializeReport(powertrainConfig, _segment);
}
public IEnumerable<VectoRunData> NextRun()
{
foreach (var mission in _segment.Missions) {
if (mission.MissionType.IsEMS() &&
engineData.RatedPowerDeclared.IsSmaller(DeclarationData.MinEnginePowerForEMS)) {
_engineData.RatedPowerDeclared.IsSmaller(DeclarationData.MinEnginePowerForEMS)) {
continue;
}
DrivingCycleData cycle;
......@@ -120,32 +142,31 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
var simulationRunData = new VectoRunData {
Loading = loading.Key,
VehicleData =
dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value, segment.MunicipalBodyWeight),
AirdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, mission, segment),
EngineData = engineData.Copy(),
GearboxData = gearboxData,
AxleGearData = axlegearData,
AngledriveData = angledriveData,
Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), mission.MissionType,
segment.VehicleClass),
_dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value, _segment.MunicipalBodyWeight),
AirdragData = _dao.CreateAirdragData(InputDataProvider.AirdragInputData, mission, _segment),
EngineData = _engineData.Copy(),
GearboxData = _gearboxData,
AxleGearData = _axlegearData,
AngledriveData = _angledriveData,
Aux = _dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), mission.MissionType,
_segment.VehicleClass),
Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
Retarder = retarderData,
DriverData = driverdata,
Retarder = _retarderData,
DriverData = _driverdata,
ExecutionMode = ExecutionMode.Declaration,
JobName = InputDataProvider.JobInputData().JobName,
ModFileSuffix = loading.Key.ToString(),
Report = Report,
Mission = mission,
PTO = mission.MissionType == MissionType.MunicipalUtility
? municipalPtoTransmissionData
: ptoTransmissionData,
? _municipalPtoTransmissionData
: _ptoTransmissionData,
InputDataHash = InputDataProvider.XMLHash
};
simulationRunData.EngineData.FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(
mission.MissionType.GetNonEMSMissionType(), engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) *
engineData.ColdHotCorrectionFactor;
//simulationRunData.Cycle.Name = mission.MissionType.ToString();
simulationRunData.VehicleData.VehicleClass = segment.VehicleClass;
mission.MissionType.GetNonEMSMissionType(), _engineData.WHTCRural, _engineData.WHTCUrban, _engineData.WHTCMotorway) *
_engineData.ColdHotCorrectionFactor;
simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
yield return simulationRunData;
}
}
......
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