diff --git a/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR.veng b/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR.veng index c9e3103347659c9a35d1427c3d3799db27c43ff4..813f412e81703e1413ec59528f886ffebbe818b0 100644 --- a/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR.veng +++ b/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR.veng @@ -1,7 +1,7 @@ { "Header": { "CreatedBy": "", - "Date": "2019-08-07T08:51:30.3162470Z", + "Date": "2019-09-17T13:36:37.3154176Z", "AppVersion": "3", "FileVersion": 5 }, @@ -11,30 +11,34 @@ "Displacement": "12740", "IdlingSpeed": 600.0, "Inertia": 5.1498, - "Fuels": [ + "Fuels": [ { - "WHTC-Urban": 0.0, - "WHTC-Rural": 0.0, - "WHTC-Motorway": 0.0, - "WHTC-Engineering": 1.0, - "ColdHotBalancingFactor": 0.0, - "CFRegPer": 1.0, - "FuelType": "DieselCI", - "FuelMap": "325kW_WHR.vmap", - } + "WHTC-Urban": 0.0, + "WHTC-Rural": 0.0, + "WHTC-Motorway": 0.0, + "WHTC-Engineering": 1.0, + "ColdHotBalancingFactor": 0.0, + "CFRegPer": 1.0, + "FuelMap": "325kW_WHR.vmap", + "FuelType": "DieselCI" + } ], "RatedPower": 0.0, "RatedSpeed": 0.0, "MaxTorque": 0.0, "FullLoadCurve": "325kW.vfld", - "WHRType": "ElectricalOnly", + "WHRType": [ + "ElectricalOutput" + ], "WHRCorrectionFactors": { - "Urban": 0.0, - "Rural": 0.0, - "Motorway": 0.0, - "ColdHotBalancingFactor": 0.0, - "CFRegPer": 0.0, - "EngineeringCorrectionFactor": 1.02 + "Electrical": { + "Urban": 0.0, + "Rural": 0.0, + "Motorway": 0.0, + "ColdHotBalancingFactor": 0.0, + "CFRegPer": 0.0, + "EngineeringCorrectionFactor": 1.02 + } } } } \ No newline at end of file diff --git a/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR_DF.veng b/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR_DF.veng index f77849e027eb33ea85146079a2a8462f3a992e78..a12510e0346f959ff68b554565364ccd05bc8810 100644 --- a/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR_DF.veng +++ b/Generic Vehicles/Engineering Mode/Class5_Tractor_4x2/Engine_325kW_12.7l_WHR_DF.veng @@ -1,7 +1,7 @@ { "Header": { "CreatedBy": "", - "Date": "2019-08-07T15:06:44.7357177Z", + "Date": "2019-09-17T13:37:57.2352607Z", "AppVersion": "3", "FileVersion": 5 }, @@ -37,14 +37,18 @@ "RatedSpeed": 0.0, "MaxTorque": 0.0, "FullLoadCurve": "325kW.vfld", - "WHRType": "ElectricalOnly", + "WHRType": [ + "ElectricalOutput" + ], "WHRCorrectionFactors": { - "Urban": 0.0, - "Rural": 0.0, - "Motorway": 0.0, - "ColdHotBalancingFactor": 0.0, - "CFRegPer": 0.0, - "EngineeringCorrectionFactor": 1.02 + "Electrical": { + "Urban": 0.0, + "Rural": 0.0, + "Motorway": 0.0, + "ColdHotBalancingFactor": 0.0, + "CFRegPer": 0.0, + "EngineeringCorrectionFactor": 1.02 + } } } } \ No newline at end of file diff --git a/VECTO/GUI/EngineForm.Designer.vb b/VECTO/GUI/EngineForm.Designer.vb index 93a63de6c4286099b5dd2febdabedfb8c8b80135..a030550927d7fffc10ca79946d0cafcb237d1796 100644 --- a/VECTO/GUI/EngineForm.Designer.vb +++ b/VECTO/GUI/EngineForm.Designer.vb @@ -1348,7 +1348,7 @@ Partial Class EngineForm Me.TabPage1.Name = "TabPage1" Me.TabPage1.Size = New System.Drawing.Size(474, 145) Me.TabPage1.TabIndex = 2 - Me.TabPage1.Text = "tbWHRType" + Me.TabPage1.Text = "WHR Type" Me.TabPage1.UseVisualStyleBackColor = true ' 'cbMechWHRInMap diff --git a/VECTO/GUI/EngineForm.vb b/VECTO/GUI/EngineForm.vb index 387e035f177988a90f00a320815fc56abc0372cd..9d768c3235606cabc13d571b248bfa538503fdd9 100644 --- a/VECTO/GUI/EngineForm.vb +++ b/VECTO/GUI/EngineForm.vb @@ -67,8 +67,8 @@ Public Class EngineForm pnWhtcFuel2.Enabled = cfg.DeclMode pnEngCFFuel2.Enabled = not cfg.DeclMode - ElectricalWhrTab = tbWHR.TabPages(0) - MechanicalWhrTab = tbWHR.TabPages(1) + ElectricalWhrTab = tbWHR.TabPages(1) + MechanicalWhrTab = tbWHR.TabPages(2) tbWHR.TabPages.Remove(ElectricalWhrTab) tbWHR.TabPages.Remove(MechanicalWhrTab) @@ -744,7 +744,7 @@ Public Class EngineForm End Sub Private Sub cbElWHR_CheckedChanged(sender As Object, e As EventArgs) Handles cbElWHR.CheckedChanged - + UpdateWHRTabs() End Sub Private Sub UpdateWHRTabs() @@ -753,16 +753,16 @@ Public Class EngineForm tbWHR.TabPages.Remove(tbElectricalWHR) tbWHR.TabPages.Remove(tbMechanicalWHR) - If (whrtype and WHRType.ElectricalOutput) <> 0 Then - if (Not tbWHR.TabPages.Contains(tbElectricalWHR)) then - tbWHR.TabPages.Add(ElectricalWhrTab) - End If - End If if ( whrtype and WHRType.MechanicalOutputDrivetrain) <> 0 Then if (not tbWHR.TabPages.Contains(tbMechanicalWHR)) then tbWHR.TabPages.Add(MechanicalWhrTab) End If End If + If (whrtype and WHRType.ElectricalOutput) <> 0 Then + if (Not tbWHR.TabPages.Contains(tbElectricalWHR)) then + tbWHR.TabPages.Add(ElectricalWhrTab) + End If + End If End Sub private Function GetWHRSelection() As WHRType diff --git a/VECTO/GUI/VectoJobForm.vb b/VECTO/GUI/VectoJobForm.vb index 6f7177091539f1c8248728da75a0a5b05bc9ff2c..c06551579c8d1014597e4f4e3d57cc5c6c1927d7 100644 --- a/VECTO/GUI/VectoJobForm.vb +++ b/VECTO/GUI/VectoJobForm.vb @@ -531,9 +531,9 @@ Public Class VectoJobForm GetRelativePath(driver.Lookahead.CoastingDecisionFactorVelocityDropLookup.Source, _basePath)) End If - tbEngineStopStartActivationDelay.Text = If(driver.EngineStopStartData.ActivationDelay?.ToGUIFormat(), DeclarationData.Driver.EngineStopStart.ActivationDelay.ToGUIFormat()) - tbMaxEngineOffTimespan.Text = If(driver.EngineStopStartData.MaxEngineOffTimespan?.ToGUIFormat(), DeclarationData.Driver.EngineStopStart.MaxEngineOffTimespan.ToGUIFormat()) - tbEssUtility.Text = driver.EngineStopStartData.UtilityFactor.ToGUIFormat() + tbEngineStopStartActivationDelay.Text = If(driver.EngineStopStartData?.ActivationDelay?.ToGUIFormat(), DeclarationData.Driver.EngineStopStart.ActivationDelay.ToGUIFormat()) + tbMaxEngineOffTimespan.Text = If(driver.EngineStopStartData?.MaxEngineOffTimespan?.ToGUIFormat(), DeclarationData.Driver.EngineStopStart.MaxEngineOffTimespan.ToGUIFormat()) + tbEssUtility.Text = If(driver.EngineStopStartData?.UtilityFactor.ToGUIFormat(), DeclarationData.Driver.EngineStopStart.UtilityFactor.ToGUIFormat()) '------------------------------------------------------------- diff --git a/VECTO/OutputData/JSONFileWriter.vb b/VECTO/OutputData/JSONFileWriter.vb index 0a59aa67c594e53792dabb0ffe7d3fd24e9f7906..a3a3ed1cd9441bbd25edcf245f1f1d427893e775 100644 --- a/VECTO/OutputData/JSONFileWriter.vb +++ b/VECTO/OutputData/JSONFileWriter.vb @@ -71,27 +71,30 @@ Public Class JSONFileWriter body.Add("FullLoadCurve", GetRelativePath(eng.EngineModes.First().FullLoadCurve.Source, Path.GetDirectoryName(filename))) + Dim whrtypes as List(Of String) = New List(Of String) + if (eng.WHRType And WHRType.ElectricalOutput) <> 0 + whrtypes.Add(WHRType.ElectricalOutput.ToString()) + End If + if (eng.WHRType And WHRType.MechanicalOutputDrivetrain) <> 0 + whrtypes.Add(WHRType.MechanicalOutputDrivetrain.ToString()) + End If + if (eng.WHRType And WHRType.MechanicalOutputICE) <> 0 + whrtypes.Add(WHRType.MechanicalOutputICE.ToString()) + End If - body.add("WHRType", eng.WHRType.ToString()) + body.add("WHRType", if(whrtypes.Count > 0, whrtypes, New List(Of String)() From { whrtype.None.ToString() })) - If (eng.WHRType.IsElectrical()) then + Dim whrCF As Dictionary(Of String, Object) = New Dictionary(Of String,Object) + If ((eng.WHRType and whrtype.ElectricalOutput) <> 0) then Dim whr As Dictionary(Of String,Object) = GetWhr(eng.EngineModes.First().WasteHeatRecoveryDataElectrical) - dim elWhr as Dictionary(Of String, Object) = New Dictionary(Of String,Object)() - elWhr.Add("Electrical", whr) - if (body.ContainsKey("WHRCorrectionFactors")) then - body.Add("WHRCorrectionFactors", elWhr) - End If + whrCF.Add("Electrical", whr) End If - if (eng.WHRType.IsMechanical()) Then + if ((eng.WHRType and WHRType.MechanicalOutputDrivetrain) <> 0) Then Dim whr As Dictionary(Of String,Object) = GetWhr(eng.EngineModes.First().WasteHeatRecoveryDataMechanical) - dim mechWhr as Dictionary(Of String, Object) = New Dictionary(Of String,Object)() - mechWhr.Add("Mechanical", whr) - if (body.ContainsKey("WHRCorrectionFactors")) then - body.Add("WHRCorrectionFactors", mechWhr) - End If + whrCF.Add("Mechanical", whr) End If - + body.Add("WHRCorrectionFactors", whrCF) WriteFile(header, body, filename) End Sub diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs index 0ace6c6d52ee59b55740ec94532737d4551a1b76..79571e37bdb52649852e00a37370eb2b7f49cf50 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs @@ -96,7 +96,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public override WHRType WHRType { - get { return Body.GetEx<string>("WHRType").ParseEnum<WHRType>(); } + get { + var whr = Body["WHRType"]; + var retVal = WHRType.None; + if (whr == null) { + return retVal; + } + + foreach (var entry in whr) { + retVal |= entry.ToString().ParseEnum<WHRType>(); + } + return retVal; + } } protected override IList<IEngineFuelEngineeringInputData> ReadFuels()