示例#1
0
        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);
 }