From b008bf4b7c651e4d470a9a63a680ac7705afa70f Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <quaritsch@ivt.tugraz.at>
Date: Mon, 15 May 2023 16:18:46 +0200
Subject: [PATCH] adding serialization methods for battery parameters
 (necessary for exporting JSON data to validate factor method params)

---
 .../ElectricComponents/Battery/BatteryData.cs | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/Battery/BatteryData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/Battery/BatteryData.cs
index 4a683a084a..a95ccf0c85 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/Battery/BatteryData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/Battery/BatteryData.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
@@ -71,6 +72,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.Ba
 		public WattSecond TotalStoredEnergy => _totaltoredEnergy ?? (_totaltoredEnergy = CalculateBatteryEnergy(0, 1));
 
         public WattSecond UseableStoredEnergy => _useableStoredEnergy ?? (_useableStoredEnergy = CalculateBatteryEnergy(MinSOC, MaxSOC));
+
+		[JsonIgnore]
 		public IElectricStorageDeclarationInputData InputData { get; internal set; }
 
 		protected WattSecond CalculateBatteryEnergy(double minSoc, double maxSoc)
@@ -118,6 +121,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.Ba
 			Entries = entries;
 		}
 
+		public string[] SerializedEntries
+		{
+			get
+			{
+				return Entries.Select(x => $"{x.SOC} - {x.BatteryVolts}").ToArray();
+			}
+		}
+
 		public Volt Lookup(double soc)
 		{
 			var idx = FindIndex(soc);
@@ -163,6 +174,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.Ba
 			Entries = entries;
 		}
 
+		public string[] SerializedEntries
+		{
+			get
+			{
+				return Entries.Select(x =>
+					$"{x.SoC}: " + x.Resistance.OrderBy(r => r.Item1.Value()).Select(r => $"{r.Item1}: {r.Item2}")
+						.Join(";")).ToArray();
+			}
+		}
+
 		public Ohm Lookup(double SoC, Second tPulse)
 		{
 			var idx = FindIndex(SoC);
@@ -242,6 +263,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.Ba
 			Entries = entries;
 		}
 
+		public string[] SerializedEntries
+		{
+			get
+			{
+				return Entries.Select(x => $"{x.SoC}: {x.MaxChargeCurrent} / {x.MaxDischargeCurrent}").ToArray();
+			}
+		}
+
 		public Ampere LookupMaxChargeCurrent(double soc)
 		{
 			var idx = FindIndex(soc);
-- 
GitLab