diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs index a17d3d7fefc41399853cac5a9ccbfa443abb3555..9c0a8d1a2ed55643fb7800e07e19abf4cf9ef32b 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs @@ -170,6 +170,57 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter }; } + internal AngularGearData CreateAngularGearData(IAngularGearInputData data, bool useEfficiencyFallback) + { + try { + var type = AngularGearType.None; + try { + type = data.Type; + } catch (Exception) { + Log.Info("AngularGear not found. Assuming None."); + // ignored + } + + var angularGear = new AngularGearData { + SavedInDeclarationMode = data.SavedInDeclarationMode, + Vendor = data.Vendor, + ModelName = data.ModelName, + Creator = data.Creator, + Date = data.Date, + TypeId = data.TypeId, + DigestValue = data.DigestValue, + IntegrityStatus = data.IntegrityStatus, + Type = type, + AngularGear = new TransmissionData() + }; + + switch (angularGear.Type) { + case AngularGearType.SeparateAngularGear: + try { + angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.LossMap, data.Ratio, "AngularGear"); + } catch (InvalidFileFormatException) { + if (useEfficiencyFallback) + angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.Efficiency, data.Ratio, "AngularGear"); + else { + throw; + } + } + angularGear.AngularGear.Ratio = data.Ratio; + break; + + case AngularGearType.LossesIncludedInGearbox: + case AngularGearType.None: + angularGear.AngularGear.Ratio = 1; + break; + default: + throw new ArgumentOutOfRangeException("data", "Unknown AngularGearType."); + } + return angularGear; + } catch (Exception e) { + throw new VectoException("Error while reading AngularGear data: {0}", e.Message); + } + } + /// <summary> /// Intersects full load curves. /// </summary>