diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs index 551faa4fe7efbd5f526783283063a1299f5bcf63..4b5eb1a8618484a142264da52d13b04a3bc75467 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs @@ -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; } }