Improved chart visual
This commit is contained in:
@@ -6,14 +6,14 @@ namespace BattSim.Services
|
||||
{
|
||||
public static class BatterySimulator
|
||||
{
|
||||
public static SimulatedBatteryEnergyData[] SimulateBattery(EnergyData[] energyData, double batteryCapacity, double efficiency)
|
||||
public static EnergyData[] SimulateBattery(EnergyData[] energyData, double batteryCapacity, double efficiency)
|
||||
{
|
||||
var results = new List<SimulatedBatteryEnergyData>();
|
||||
var results = new List<EnergyData>();
|
||||
double batteryCharge = 0;
|
||||
|
||||
foreach (var e in energyData)
|
||||
{
|
||||
var simulatedBatteryEnergyData = new SimulatedBatteryEnergyData(e);
|
||||
var simulatedBatteryEnergyData = new EnergyData(e);
|
||||
// Simulate charging the battery based on production
|
||||
double excessProduction = batteryCharge + e.Production - batteryCapacity;
|
||||
batteryCharge = double.Min(batteryCharge + e.Production, batteryCapacity);
|
||||
@@ -33,30 +33,5 @@ namespace BattSim.Services
|
||||
|
||||
return results.ToArray();
|
||||
}
|
||||
|
||||
public static SimulatedBatteryEnergyData[] GenerateDailyData(SimulatedBatteryEnergyData[] simulationData)
|
||||
{
|
||||
var simulationDataCopy = (SimulatedBatteryEnergyData[]) simulationData.Clone();
|
||||
var dailySimulationData = new ConcurrentDictionary<DateOnly, SimulatedBatteryEnergyData>();
|
||||
Parallel.ForEach(simulationDataCopy, simulationPoint =>
|
||||
{
|
||||
var date = DateOnly.FromDateTime(simulationPoint.Time);
|
||||
|
||||
// Use AddOrUpdate to avoid double lookup
|
||||
dailySimulationData.AddOrUpdate(
|
||||
date,
|
||||
new SimulatedBatteryEnergyData(simulationPoint), // If key doesn't exist, add this value
|
||||
(_, existing) =>
|
||||
{
|
||||
// If key exists, aggregate the values
|
||||
existing.Consumption += simulationPoint.Consumption;
|
||||
existing.Production += simulationPoint.Production;
|
||||
existing.BatteryCharge = double.Max(existing.BatteryCharge, simulationPoint.BatteryCharge);
|
||||
return existing;
|
||||
}
|
||||
);
|
||||
});
|
||||
return dailySimulationData.Values.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user