Files
douwco_thuisbatterij_simulator/Services/BatterySimulator.cs
2026-03-27 13:51:58 +01:00

45 lines
1.8 KiB
C#

using System.Collections.Generic;
using BatteryCostAnalysis.Models;
namespace BatteryCostAnalysis.Services
{
public class BatterySimulator
{
public static List<BatteryDayResult> SimulateBattery(List<EnergyData> data, double batteryCapacity)
{
var results = new List<BatteryDayResult>();
double remainingEnergy = 0;
foreach (var day in data)
{
// Charge battery from production
var totalProduction = day.DayProduction + day.NightProduction;
var chargedEnergy = System.Math.Min(totalProduction, batteryCapacity);
var excessProduction = totalProduction - chargedEnergy;
// Use battery for consumption
var totalConsumption = day.DayConsumption + day.NightConsumption;
var usedEnergy = System.Math.Min(chargedEnergy + remainingEnergy, totalConsumption);
var remainingAfterUse = chargedEnergy + remainingEnergy - usedEnergy;
// Calculate reduced values
var reducedConsumption = System.Math.Min(usedEnergy, totalConsumption);
var reducedProduction = totalProduction - chargedEnergy;
results.Add(new BatteryDayResult
{
Date = day.Date,
ChargedEnergy = chargedEnergy,
UsedEnergy = usedEnergy,
RemainingEnergy = remainingAfterUse,
ReducedConsumption = reducedConsumption,
ReducedProduction = reducedProduction
});
remainingEnergy = remainingAfterUse;
}
return results;
}
}
}