Blazor webassembly with radzen setup
This commit is contained in:
45
Services/BatterySimulator.cs
Normal file
45
Services/BatterySimulator.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user