private static GenerationOutput CalculateGenerationData(GenerationReport generationReport, ReferenceData referenceData)
        {
            Totals totals = new Totals();
            List <ActualHeatRates> actualHeatRates       = new List <ActualHeatRates>();
            MaxEmissionGenerators  maxEmissionGenerators = new MaxEmissionGenerators();

            foreach (var windGenerator in generationReport.Wind.WindGenerator)
            {
                var generator = new Generator
                {
                    Name  = windGenerator.Name,
                    Total = CalculateTotalGenerationValue(windGenerator.Generation, windGenerator.Name, referenceData, null)
                };

                totals.Generator.Add(generator);
            }

            foreach (var coalGenerator in generationReport.Coal.CoalGenerator)
            {
                var generator = new Generator
                {
                    Name  = coalGenerator.Name,
                    Total = CalculateTotalGenerationValue(coalGenerator.Generation, coalGenerator.Name, referenceData, coalGenerator.EmissionsRating)
                };

                var actualHeatRate = new ActualHeatRates
                {
                    Name     = coalGenerator.Name,
                    HeatRate = coalGenerator.TotalHeatInput / coalGenerator.ActualNetGeneration
                };

                totals.Generator.Add(generator);
                actualHeatRates.Add(actualHeatRate);
            }

            foreach (var gasGenerator in generationReport.Gas.GasGenerator)
            {
                var generator = new Generator
                {
                    Name  = gasGenerator.Name,
                    Total = CalculateTotalGenerationValue(gasGenerator.Generation, gasGenerator.Name, referenceData, gasGenerator.EmissionsRating)
                };

                totals.Generator.Add(generator);
            }

            maxEmissionGenerators.Day = MaxEmissionsDays.OrderByDescending(x => x.Emission).GroupBy(x => x.Date).Select(b => b.First()).ToList();

            return(new GenerationOutput()
            {
                Totals = totals, ActualHeatRates = actualHeatRates, MaxEmissionGenerators = maxEmissionGenerators
            });
        }
예제 #2
0
        public IList <ActualHeatRates> GetActualHeatRates(Coal coal)
        {
            var actualHeatRates = new List <ActualHeatRates>();

            foreach (var coalGenerator in coal.CoalGenerator)
            {
                var actualHeatRate = new ActualHeatRates();
                actualHeatRate.HeatRate = coalGenerator.TotalHeatInput / coalGenerator.ActualNetGeneration;
                actualHeatRate.Name     = coalGenerator.Name;
                actualHeatRates.Add(actualHeatRate);
            }
            return(actualHeatRates);
        }