public void Calculate(HeatLosses heatLosses) { HeatPump.HeatPumpCalculations = new List <HeatPumpCalculation>(); var reports = HeatPump.HeatPumpCalculations; for (int i = 0; i < heatLosses.HeatConsumptions.Count; i++) { if (heatLosses.HeatConsumptions[i].Heat <= 0) { continue; } reports.Add(new HeatPumpCalculation { Temperature = heatLosses.HeatConsumptions[i].Temperature, Power = heatLosses.Characteristic[i].Heat, Duration = heatLosses.HeatConsumptions[i].Duration, HeatLoses = heatLosses.HeatConsumptions[i].Heat, HeatProductionCorrection = GetHeatProductionCorrection(heatLosses.HeatConsumptions[i].Temperature), HeatPowerCorrection = GetHeatPowerCorrection(heatLosses.HeatConsumptions[i].Temperature) }); } foreach (var report in reports) { report.HeatProduction = Math.Round(report.HeatProductionCorrection * HeatPump.NominalHeatProduction, 2); report.HeatPower = Math.Round(report.HeatPowerCorrection * HeatPump.NominalPower, 2); report.HeatPumpCount = GetHeatPumpCount(report.Power, report.HeatProduction); report.AdditionalHeatPower = Math.Round(report.Power - report.HeatProduction * report.HeatPumpCount, 2); report.AdditionalHeatPower = report.AdditionalHeatPower < 0 ? 0 : report.AdditionalHeatPower; report.Load = Math.Round((report.Power - report.AdditionalHeatPower) / report.HeatProduction / report.HeatPumpCount, 2); report.CirculationPumpPower = Math.Round(HeatPump.CirculationPower * HeatPump.CirculationPumpCount + HeatPump.FancoilPower * HeatPump.FancoilCount, 2); report.HeatPumpConsumption = Math.Round(report.HeatPower * report.HeatPumpCount * report.Load * report.Duration, 2); report.HeatSystemConsumption = Math.Round((report.HeatPower * report.HeatPumpCount * report.Load + report.CirculationPumpPower) * report.Duration, 2); report.QuantityHeatPumpProduction = Math.Round(report.HeatProduction * report.HeatPumpCount * report.Load * report.Duration, 2); report.QuantityHeatSystemProduction = Math.Round((report.HeatProduction * report.HeatPumpCount * report.Load + report.CirculationPumpPower + report.AdditionalHeatPower) * report.Duration, 2); report.QuantityAdditionalHeatProduction = Math.Round(report.AdditionalHeatPower * report.Duration, 2); } HeatPump.TotalHeatLosses = reports.Select(x => x.HeatLoses).Sum(); HeatPump.TotalHeatPumpConsumption = reports.Select(x => x.HeatPumpConsumption).Sum(); HeatPump.TotalHeatSystemConsumption = reports.Select(x => x.HeatSystemConsumption).Sum(); HeatPump.TotalQuantityHeatPumpProduction = reports.Select(x => x.QuantityHeatPumpProduction).Sum(); HeatPump.TotalQuantityAdditionalHeatProduction = reports.Select(x => x.QuantityAdditionalHeatProduction).Sum(); HeatPump.TotalQuantityHeatSystemProduction = reports.Select(x => x.QuantityHeatSystemProduction).Sum(); HeatPump.AverageEfficiencyHeatPump = Math.Round(HeatPump.TotalQuantityHeatPumpProduction / HeatPump.TotalHeatPumpConsumption, 2); HeatPump.AverageEfficiencyHeatSystem = Math.Round(HeatPump.TotalQuantityHeatSystemProduction / HeatPump.TotalHeatSystemConsumption, 2); HeatPump.TotalCost = Math.Round(HeatPump.TotalHeatSystemConsumption * HeatPump.PricePerKwht, 2); }
public void SetHeatTypes(HeatLosses heatLosses) { if (heatLosses.Heats != null) { return; } heatLosses.Heats = new List <TypeOfHeat> { new TypeOfHeat { Name = "централізоване мережа", CostPerFuelUnit = 1.11, FuelPerKWht = 1, Efficience = 1, Unit = "кВт" }, new TypeOfHeat { Name = "природний газ", CostPerFuelUnit = 6.95, FuelPerKWht = 0.1075, Efficience = 0.93, Unit = "м³" }, new TypeOfHeat { Name = "вугілля кам'яне", CostPerFuelUnit = 7, FuelPerKWht = 0.1792, Efficience = 0.86, Unit = "кг" }, new TypeOfHeat { Name = "паливні брикети", CostPerFuelUnit = 2.8, FuelPerKWht = 0.1953, Efficience = 0.92, Unit = "кг" }, new TypeOfHeat { Name = "дрова дубові", CostPerFuelUnit = 1.2, FuelPerKWht = 0.287, Efficience = 0.83, Unit = "кг" }, new TypeOfHeat { Name = "електрична енергія", CostPerFuelUnit = 1.68, FuelPerKWht = 1.01, Efficience = 0.98, Unit = "кВтˑгод" } }; }
public HouseController(string fileName) { _fileName = fileName; var houses = BinaryController.ReadDataFromBinary <House>(fileName); House = houses.Count == 0 ? new House() : houses[0]; CommonHeatLosses = new HeatLosses(); IndividualHeatLosses = new HeatLosses(); }
public void GetHeatPrices(HeatLosses heatLosses) { var heats = heatLosses.Heats; foreach (var heat in heats) { heat.FuelConsumption = Math.Round(heatLosses.TotalHeatHelConsumption * heat.FuelPerKWht / heat.Efficience, 2); heat.TotalPrice = Math.Round(heat.FuelConsumption * heat.CostPerFuelUnit, 2); } }
private void Calculate() { _houseController.Calculate(); if (_heatType == HeatType.Common) { _heatLosses = _houseController.CommonHeatLosses; } else { _heatLosses = _houseController.IndividualHeatLosses; } CharacteristicHeatConsumption(); HeatConsumption(); CalculateCost(); }
public void GetHeat(HeatLosses heatLosses) { heatLosses.HeatConsumptions = new List <HeatConsumption>(); var chs = heatLosses.Characteristic; foreach (var ch in chs) { double duration = Weathers.Count(x => x.Temperature == ch.Temperature) * 0.5; heatLosses.HeatConsumptions.Add(new HeatConsumption() { Temperature = ch.Temperature, Duration = duration, Heat = Math.Round(ch.Heat * duration, 2) }); } heatLosses.TotalHeatConsumption = heatLosses.HeatConsumptions.Select(x => x.Heat) .Where(x => x > 0).Sum(); heatLosses.TotalHeatHelConsumption = Math.Round(heatLosses.TotalHeatConsumption + House.Hel.Energy / 48 * Weathers.Count, 2); }
public void CalculatePrice(HeatLosses heatLosses) { SetHeatTypes(heatLosses); GetHeatPrices(heatLosses); }