Example #1
0
 def test_calculate_yearly_capital_costs(self):
     plant_cost_calculation = FuelPlantCostCalculations(plant_type = "CCGT", capacity_mw = 1200, construction_year = 2018, average_load_factor = 0.93, efficiency = 0.54, pre_dev_period = 3,
              construction_period = 3, operating_period = 25, pre_dev_spend_years = [0.44, 0.44, 0.12], construction_spend_years = [0.4, 0.4, 0.2],
              pre_dev_cost_per_mw = 10000, construction_cost_per_mw = 500000, infrastructure = 15100, fixed_o_and_m_per_mw = 12200,
              variable_o_and_m_per_mwh = 3, insurance_cost_per_mw = 2100, connection_cost_per_mw = 3300)
     yearly_capital_costs = plant_cost_calculation.calculate_yearly_outflow()
     assert yearly_capital_costs == 46204000
Example #2
0
    def short_run_marginal_cost(self,
                                model,
                                genco,
                                fuel_price=None,
                                co2_price=None):
        plant_cost_calculations = FuelPlantCostCalculations(
            plant_type=self.plant_type,
            capacity_mw=self.capacity_mw,
            construction_year=self.construction_year,
            average_load_factor=self.average_load_factor,
            efficiency=self.efficiency,
            pre_dev_period=self.pre_dev_period,
            construction_period=self.construction_period,
            operating_period=self.operating_period,
            pre_dev_spend_years=self.pre_dev_spend_years,
            construction_spend_years=self.construction_spend_years,
            pre_dev_cost_per_mw=self.pre_dev_cost_per_mw,
            construction_cost_per_mw=self.construction_cost_per_mw,
            infrastructure=self.infrastructure,
            fixed_o_and_m_per_mw=self.fixed_o_and_m_per_mw,
            variable_o_and_m_per_mwh=self.variable_o_and_m_per_mwh,
            insurance_cost_per_mw=self.insurance_cost_per_mw,
            connection_cost_per_mw=self.connection_cost_per_mw)
        marginal_cost = plant_cost_calculations.calculate_short_run_marginal_cost(
            model, genco, fuel_price, co2_price)

        return marginal_cost
Example #3
0
 def test_short_run_marginal_cost_nuclear(self, mock_model):
     mock_model.year_number=2018
     plant_cost_calculation = FuelPlantCostCalculations(plant_type = "Nuclear", capacity_mw = 1200, construction_year = 2018, average_load_factor = 0.93, efficiency = 0.54, pre_dev_period = 3,
              construction_period = 3, operating_period = 25, pre_dev_spend_years = [0.44, 0.44, 0.12], construction_spend_years = [0.4, 0.4, 0.2],
              pre_dev_cost_per_mw = 10000, construction_cost_per_mw = 500000, infrastructure = 15100000, fixed_o_and_m_per_mw = 12200,
              variable_o_and_m_per_mwh = 3, insurance_cost_per_mw = 2100, connection_cost_per_mw = 3300)
     logger.debug(plant_cost_calculation.calculate_short_run_marginal_cost(mock_model))
     short_run_marginal_cost = plant_cost_calculation.calculate_short_run_marginal_cost(mock_model)
     assert short_run_marginal_cost == pytest.approx(10.22222222)
Example #4
0
 def create_ccgt_2018_power_plant_object(self):
     fuelLCOECalculationObj = FuelPlantCostCalculations(plant_type="CCGT", capacity_mw=1200, construction_year=2010,
                                                        average_load_factor=0.93, efficiency=0.54, pre_dev_period=3, construction_period=3,
                                                        operating_period=25, pre_dev_spend_years=[0.44, 0.44, 0.12],
                                                        construction_spend_years=[0.4, 0.4, 0.2], pre_dev_cost_per_mw=10000,
                                                        construction_cost_per_mw=500000, infrastructure=15100, fixed_o_and_m_per_mw=12200,
                                                        variable_o_and_m_per_mwh=3, insurance_cost_per_mw=2100, connection_cost_per_mw=3300)
     return fuelLCOECalculationObj
Example #5
0
 def calculate_lcoe(self, discount_rate):
     plant_cost_calculations = FuelPlantCostCalculations(
         plant_type=self.plant_type,
         capacity_mw=self.capacity_mw,
         construction_year=self.construction_year,
         average_load_factor=self.average_load_factor,
         efficiency=self.efficiency,
         pre_dev_period=self.pre_dev_period,
         construction_period=self.construction_period,
         operating_period=self.operating_period,
         pre_dev_spend_years=self.pre_dev_spend_years,
         construction_spend_years=self.construction_spend_years,
         pre_dev_cost_per_mw=self.pre_dev_cost_per_mw,
         construction_cost_per_mw=self.construction_cost_per_mw,
         infrastructure=self.infrastructure,
         fixed_o_and_m_per_mw=self.fixed_o_and_m_per_mw,
         variable_o_and_m_per_mwh=self.variable_o_and_m_per_mwh,
         insurance_cost_per_mw=self.insurance_cost_per_mw,
         connection_cost_per_mw=self.connection_cost_per_mw)
     lcoe = plant_cost_calculations.calculate_lcoe(discount_rate)
     return lcoe
Example #6
0
    def _get_capital_outflow(self, power_plant):
        power_plant_vars = vars(power_plant)
        logger.debug("power_plant_vars: {}".format(power_plant_vars))
        func = FuelPlantCostCalculations
        vars_required = signature(func)._parameters
        logger.debug("vars_required: {}".format(vars_required))
        power_plant_vars = {key: value for key, value in power_plant_vars.items() if key in vars_required}
        # yearly_outflow = FuelPlantCostCalculations(**power_plant_vars).calculate_yearly_outflow()

        capital_costs = FuelPlantCostCalculations(**power_plant_vars)._capex()
        logger.debug("capital_cost_outflow: {}".format(capital_costs))
        capital_costs_outflow = [-x for x in capital_costs]
        return capital_costs_outflow
Example #7
0
with PyCallGraph(output=GraphvizOutput()):

    mock_model = Mock(spec=World)
    genco = Mock(spec=GenCo)

    genco.gas_price_modifier = 1
    mock_model.year_number = 2020
    plant_cost_calculation = FuelPlantCostCalculations(
        plant_type="CCGT",
        capacity_mw=1200,
        construction_year=2018,
        average_load_factor=0.93,
        efficiency=0.54,
        pre_dev_period=3,
        construction_period=3,
        operating_period=25,
        pre_dev_spend_years=[0.44, 0.44, 0.12],
        construction_spend_years=[0.4, 0.4, 0.2],
        pre_dev_cost_per_mw=10000,
        construction_cost_per_mw=500000,
        infrastructure=15100000,
        fixed_o_and_m_per_mw=12200,
        variable_o_and_m_per_mwh=3,
        insurance_cost_per_mw=2100,
        connection_cost_per_mw=3300)
    # logger.info(plant_cost_calculation.calculate_short_run_marginal_cost(mock_model, genco))

    for _ in range(5000):
        short_run_marginal_cost = plant_cost_calculation.calculate_short_run_marginal_cost(
            mock_model, genco)
    assert short_run_marginal_cost == pytest.approx(39.23609592592592)