From d7e345239310f0ee7e90110943bd72918838bf0b Mon Sep 17 00:00:00 2001 From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at> Date: Tue, 24 May 2022 17:20:28 +0200 Subject: [PATCH] added json writer for ihpc --- VectoCore/VectoCore/JsonKeys.Designer.cs | 119 +++++++++++++++++- VectoCore/VectoCore/JsonKeys.resx | 39 ++++++ .../OutputData/FileIO/JSONFileWriter.cs | 71 +++++++---- 3 files changed, 206 insertions(+), 23 deletions(-) diff --git a/VectoCore/VectoCore/JsonKeys.Designer.cs b/VectoCore/VectoCore/JsonKeys.Designer.cs index 66b4f77c11..62ae58c622 100644 --- a/VectoCore/VectoCore/JsonKeys.Designer.cs +++ b/VectoCore/VectoCore/JsonKeys.Designer.cs @@ -19,7 +19,7 @@ namespace TUGraz.VectoCore { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class JsonKeys { @@ -222,6 +222,105 @@ namespace TUGraz.VectoCore { } } + /// <summary> + /// Looks up a localized string similar to ContinuousTorque. + /// </summary> + internal static string EM_ContinuousTorque { + get { + return ResourceManager.GetString("EM_ContinuousTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ContinuousTorqueSpeed. + /// </summary> + internal static string EM_ContinuousTorqueSpeed { + get { + return ResourceManager.GetString("EM_ContinuousTorqueSpeed", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DragCurve. + /// </summary> + internal static string EM_DragCurve { + get { + return ResourceManager.GetString("EM_DragCurve", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to EfficiencyMap. + /// </summary> + internal static string EM_EfficiencyMap { + get { + return ResourceManager.GetString("EM_EfficiencyMap", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to FullLoadCurve. + /// </summary> + internal static string EM_FullLoadCurve { + get { + return ResourceManager.GetString("EM_FullLoadCurve", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to OverloadTime. + /// </summary> + internal static string EM_OverloadTime { + get { + return ResourceManager.GetString("EM_OverloadTime", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to OverloadTorque. + /// </summary> + internal static string EM_OverloadTorque { + get { + return ResourceManager.GetString("EM_OverloadTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to OverloadTorqueSpeed. + /// </summary> + internal static string EM_OverloadTorqueSpeed { + get { + return ResourceManager.GetString("EM_OverloadTorqueSpeed", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ThermalOverloadRecoveryFactor. + /// </summary> + internal static string EM_ThermalOverloadRecoveryFactor { + get { + return ResourceManager.GetString("EM_ThermalOverloadRecoveryFactor", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Voltage. + /// </summary> + internal static string EM_Voltage { + get { + return ResourceManager.GetString("EM_Voltage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to VoltageLevels. + /// </summary> + internal static string EM_VoltageLevels { + get { + return ResourceManager.GetString("EM_VoltageLevels", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Displacement. /// </summary> @@ -708,6 +807,24 @@ namespace TUGraz.VectoCore { } } + /// <summary> + /// Looks up a localized string similar to CreatedBy. + /// </summary> + internal static string JsonHeader_CreatedBy { + get { + return ResourceManager.GetString("JsonHeader_CreatedBy", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Date. + /// </summary> + internal static string JsonHeader_Date { + get { + return ResourceManager.GetString("JsonHeader_Date", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to FileVersion. /// </summary> diff --git a/VectoCore/VectoCore/JsonKeys.resx b/VectoCore/VectoCore/JsonKeys.resx index d4411838a8..04560f85be 100644 --- a/VectoCore/VectoCore/JsonKeys.resx +++ b/VectoCore/VectoCore/JsonKeys.resx @@ -444,4 +444,43 @@ <data name="IEPC_VoltageLevels" xml:space="preserve"> <value>VoltageLevels</value> </data> + <data name="EM_ContinuousTorque" xml:space="preserve"> + <value>ContinuousTorque</value> + </data> + <data name="EM_ContinuousTorqueSpeed" xml:space="preserve"> + <value>ContinuousTorqueSpeed</value> + </data> + <data name="EM_DragCurve" xml:space="preserve"> + <value>DragCurve</value> + </data> + <data name="EM_EfficiencyMap" xml:space="preserve"> + <value>EfficiencyMap</value> + </data> + <data name="EM_FullLoadCurve" xml:space="preserve"> + <value>FullLoadCurve</value> + </data> + <data name="EM_OverloadTime" xml:space="preserve"> + <value>OverloadTime</value> + </data> + <data name="EM_OverloadTorque" xml:space="preserve"> + <value>OverloadTorque</value> + </data> + <data name="EM_OverloadTorqueSpeed" xml:space="preserve"> + <value>OverloadTorqueSpeed</value> + </data> + <data name="EM_ThermalOverloadRecoveryFactor" xml:space="preserve"> + <value>ThermalOverloadRecoveryFactor</value> + </data> + <data name="EM_Voltage" xml:space="preserve"> + <value>Voltage</value> + </data> + <data name="EM_VoltageLevels" xml:space="preserve"> + <value>VoltageLevels</value> + </data> + <data name="JsonHeader_CreatedBy" xml:space="preserve"> + <value>CreatedBy</value> + </data> + <data name="JsonHeader_Date" xml:space="preserve"> + <value>Date</value> + </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs index d3d1e1f287..49fa5c3a17 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs @@ -71,36 +71,63 @@ public class JSONFileWriter : IOutputFileWriter var header = GetHeader(ElectricMotorFormatVersion); var body = new Dictionary<string, object> { - { "SavedInDeclMode", declMode }, - { "Model", electricMachine.Model }, - { "Inertia", electricMachine.Inertia.Value() }, - { "ThermalOverloadRecoveryFactor", electricMachine.OverloadRecoveryFactor } + { JsonKeys.SavedInDeclMode, declMode }, + { JsonKeys.Component_Model, electricMachine.Model }, + { JsonKeys.Engine_Inertia, electricMachine.Inertia.Value() }, + { JsonKeys.EM_ThermalOverloadRecoveryFactor, electricMachine.OverloadRecoveryFactor } }; + var vlevels = GetVoltageLevelEntries(electricMachine.VoltageLevels, filename); + body.Add(JsonKeys.EM_DragCurve, GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))); + + body.Add(JsonKeys.EM_VoltageLevels, vlevels); + WriteFile(header, body, filename); + } + + public void SaveIHPC(IElectricMotorEngineeringInputData electricMachine, string filename, bool declMode) + { + var header = GetHeader(ElectricMotorFormatVersion); + + var body = new Dictionary<string, object> { + { JsonKeys.SavedInDeclMode, declMode }, + { JsonKeys.Component_Model, electricMachine.Model }, + { JsonKeys.EM_DragCurve, GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))}, + { JsonKeys.Engine_Inertia, electricMachine.Inertia.Value() }, + { JsonKeys.EM_ThermalOverloadRecoveryFactor, electricMachine.OverloadRecoveryFactor } + }; + + var vlevels = GetVoltageLevelEntries(electricMachine.VoltageLevels, filename); + body.Add(JsonKeys.EM_VoltageLevels, vlevels); + WriteFile(header, body, filename); + } + + private List<Dictionary<string, object>> GetVoltageLevelEntries(IList<IElectricMotorVoltageLevel> voltageLevels, string filename) + { var vlevels = new List<Dictionary<string, object>>(); - foreach (var entry in electricMachine.VoltageLevels) { + foreach (var entry in voltageLevels) + { var vlevel = new Dictionary<string, object> { - { "Voltage", entry.VoltageLevel.Value() }, - { "ContinuousTorque", entry.ContinuousTorque.Value() }, - { "ContinuousTorqueSpeed", entry.ContinuousTorqueSpeed.AsRPM }, - { "OverloadTorque", entry.OverloadTorque.Value() }, - { "OverloadTorqueSpeed", entry.OverloadTestSpeed.AsRPM }, - { "OverloadTime", entry.OverloadTime.Value() }, - { "FullLoadCurve", GetRelativePath(entry.FullLoadCurve.Source, Path.GetDirectoryName(filename)) } + { JsonKeys.EM_Voltage, entry.VoltageLevel.Value() }, + { JsonKeys.EM_ContinuousTorque, entry.ContinuousTorque.Value() }, + { JsonKeys.EM_ContinuousTorqueSpeed, entry.ContinuousTorqueSpeed.AsRPM }, + { JsonKeys.EM_OverloadTorque, entry.OverloadTorque.Value() }, + { JsonKeys.EM_OverloadTorqueSpeed, entry.OverloadTestSpeed.AsRPM }, + { JsonKeys.EM_OverloadTime, entry.OverloadTime.Value() }, + { JsonKeys.EM_FullLoadCurve, GetRelativePath(entry.FullLoadCurve.Source, Path.GetDirectoryName(filename)) } }; var powerMaps = new Dictionary<int, object>(); - foreach (var pMap in entry.PowerMap) { + foreach (var pMap in entry.PowerMap) + { powerMaps.Add(pMap.Gear, GetRelativePath(pMap.PowerMap.Source, Path.GetDirectoryName(filename))); } - vlevel.Add("EfficiencyMap", powerMaps); //PowerMap + vlevel.Add(JsonKeys.EM_EfficiencyMap, powerMaps); //PowerMap vlevels.Add(vlevel); } - body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))); - - body.Add("VoltageLevels", vlevels); - WriteFile(header, body, filename); + + return vlevels; } + public void SaveBattery(IBatteryPackEngineeringInputData battery, string filename, bool declMode) { var header = GetHeader(REESSFormatVersion); @@ -211,10 +238,10 @@ public class JSONFileWriter : IOutputFileWriter protected Dictionary<string, object> GetHeader(int fileVersion) => new Dictionary<string, object> { - { "CreatedBy", "" }, - { "Date", DateTime.Now.ToUniversalTime().ToString("o") }, - { "AppVersion", VECTOvers }, - { "FileVersion", fileVersion } + { JsonKeys.JsonHeader_CreatedBy, "" }, + { JsonKeys.JsonHeader_Date , DateTime.Now.ToUniversalTime().ToString("o") }, + { JsonKeys.AppVersion, VECTOvers }, + { JsonKeys.JsonHeader_FileVersion, fileVersion } }; public void SaveGearbox(IGearboxEngineeringInputData gbx, IAxleGearInputData axl, -- GitLab