Пример #1
0
    def test_estimate_modern_costs(self):

        print(_select_cost_estimator(2018, "CCGT", 1200))
        assert _select_cost_estimator(2018, "CCGT", 1200) == {'connection_cost_per_mw': 3300,
                                                             'construction_cost_per_mw': 500000,
                                                             'fixed_o_and_m_per_mw': 12200, 'infrastructure': 15100,
                                                             'insurance_cost_per_mw': 2100,
                                                             'pre_dev_cost_per_mw': 10000,
                                                              'variable_o_and_m_per_mwh': 3, 'pre_dev_period': 3,
                                                             'operating_period': 25, 'construction_period': 3,
                                                             'efficiency': 0.54, 'average_load_factor': 0.93,
                                                             'construction_spend_years': [0.4, 0.4, 0.2],
                                                             'pre_dev_spend_years': [0.44, 0.44, 0.12]}
 def test_parameter_estimator_for_historic_gas_turbine_with_capacity_matching_data(
         self):
     CAPACITY = 1200
     START_YEAR = 1990
     PLANT_TYPE = "CCGT"
     parameters = _select_cost_estimator(START_YEAR, PLANT_TYPE, CAPACITY)
     print(parameters)
     plant = FuelPlant(name="Modern Plant",
                       plant_type=PLANT_TYPE,
                       capacity_mw=CAPACITY,
                       construction_year=START_YEAR,
                       **parameters)
     assert plant.calculate_lcoe(0.05) == approx(82.55488)
     assert parameters['construction_cost_per_mw'] == approx(500 * 1000 *
                                                             4.7868450994)
     assert parameters['fixed_o_and_m_per_mw'] == approx(12200 *
                                                         4.7868450994)
     assert parameters['infrastructure'] == approx(15100 * 4.7868450994)
     assert parameters['insurance_cost_per_mw'] == approx(2100 *
                                                          4.7868450994)
     assert parameters['pre_dev_cost_per_mw'] == approx(10 * 1000 *
                                                        4.7868450994)
     assert parameters['variable_o_and_m_per_mwh'] == approx(3 *
                                                             4.7868450994)
     assert parameters['connection_cost_per_mw'] == approx(3300 *
                                                           4.7868450994)
     assert parameters['pre_dev_period'] == 3
     assert parameters['operating_period'] == 25
     assert parameters['construction_period'] == 3
     assert parameters['efficiency'] == 0.54
     assert parameters['average_load_factor'] == 0.93
     assert parameters['construction_spend_years'] == [0.4, 0.4, 0.2]
     assert parameters['pre_dev_spend_years'] == [0.44, 0.44, 0.12]
 def test_lcoe_calculations_for_fuel_plant(self, year, plant_type, capacity,
                                           discount_rate, expected_output):
     parameters = _select_cost_estimator(year, plant_type, capacity)
     plant = FuelPlant(name="TestPlant",
                       plant_type=plant_type,
                       capacity_mw=capacity,
                       construction_year=year,
                       **parameters)
     lcoe = plant.calculate_lcoe(discount_rate)
     assert lcoe == approx(expected_output)
 def test_parameter_estimator_for_small_old_hydro(self):
     parameters = _select_cost_estimator(2002, "Hydro", 5)
     plant = NonFuelPlant(name="Modern Plant",
                          plant_type="Hydro",
                          capacity_mw=5,
                          construction_year=2002,
                          **parameters)
     print("parameters: {}".format(parameters))
     assert parameters['construction_spend_years'] == approx([1.0])
     assert parameters['pre_dev_spend_years'] == []
     assert parameters['operating_period'] == 35
     assert plant.calculate_lcoe(0.075) == approx(103.82602365344589)
    def test_estimated_fuel_plant_parameters_scaled_equally(
            self, year, plant_type, capacity):
        parameters = _select_cost_estimator(start_year=year,
                                            plant_type=plant_type,
                                            capacity=capacity)
        fuel_plant_params_calc = FuelOldPlantCosts(year, plant_type, capacity)
        modern_parameters = fuel_plant_params_calc.estimate_modern_parameters()

        divided_params = {
            key: round(parameters[key] / modern_parameters[key], 4)
            for key in modern_parameters if key in parameters
        }
        assert len(set(divided_params.values())) == 1
 def test_parameter_estimator_for_5mw_modern_hydro(self):
     parameters = _select_cost_estimator(2018, "Hydro", 5)
     assert parameters['construction_cost_per_mw'] == approx(3180.831826 *
                                                             1000)
     assert parameters['fixed_o_and_m_per_mw'] == approx(28885.4129)
     assert parameters['infrastructure'] == approx(241.1091019)
     assert parameters['insurance_cost_per_mw'] == approx(0)
     assert parameters['pre_dev_cost_per_mw'] == 0
     assert parameters['variable_o_and_m_per_mwh'] == approx(2.383363472)
     assert parameters['pre_dev_period'] == 0
     assert parameters['operating_period'] == 35
     assert parameters['construction_period'] == 0
     assert parameters['efficiency'] == 1
     assert parameters['average_load_factor'] == 0.4
     assert parameters['construction_spend_years'] == [1]
     assert parameters['pre_dev_spend_years'] == []
 def test_parameter_estimator_for_15mw_modern_hydro(self):
     parameters = _select_cost_estimator(2018, "Hydro", 15)
     print("parameters: {}".format(parameters))
     assert parameters['construction_cost_per_mw'] == approx(3000 * 1000)
     assert parameters['fixed_o_and_m_per_mw'] == approx(45100)
     assert parameters['infrastructure'] == approx(0)
     assert parameters['insurance_cost_per_mw'] == approx(0)
     assert parameters['pre_dev_cost_per_mw'] == 60 * 1000
     assert parameters['variable_o_and_m_per_mwh'] == approx(6)
     assert parameters['pre_dev_period'] == 2
     assert parameters['operating_period'] == 41
     assert parameters['construction_period'] == 2
     assert parameters['efficiency'] == 1
     assert parameters['average_load_factor'] == 0.35
     assert parameters['construction_spend_years'] == [0.7, 0.3]
     assert parameters['pre_dev_spend_years'] == [0.77, 0.23]
 def test_parameter_estimator_for_modern_small_gas_turbine_with_capacity_matching_data(
         self):
     assert _select_cost_estimator(2018, "CCGT", 168.0) == {
         'connection_cost_per_mw': 3300.0,
         'construction_cost_per_mw': 700000.0,
         'fixed_o_and_m_per_mw': 28200.0,
         'infrastructure': 13600.0,
         'insurance_cost_per_mw': 2900.0,
         'pre_dev_cost_per_mw': 60000.0,
         'variable_o_and_m_per_mwh': 5.0,
         'pre_dev_period': 3,
         'operating_period': 25,
         'construction_period': 3,
         'efficiency': 0.34,
         'average_load_factor': 0.93,
         'construction_spend_years': [0.4, 0.4, 0.2],
         'pre_dev_spend_years': [0.435, 0.435, 0.13]
     }
    def test_estimated_non_fuel_plant_parameters_scaled_equally(
            self, year, plant_type, capacity):
        parameters = _select_cost_estimator(start_year=year,
                                            plant_type=plant_type,
                                            capacity=capacity)
        nonfuel_calculator = NonFuelOldPlantCosts(year=year,
                                                  plant_type=plant_type,
                                                  capacity=capacity)

        nonfuel_calculator.get_params_to_scale()

        modern_parameters = nonfuel_calculator.estimated_modern_plant_parameters

        divided_params = {
            key: round(parameters[key] / modern_parameters[key], 4)
            for key in modern_parameters
            if key not in nonfuel_calculator.dict_to_ignore
            and modern_parameters[key] != 0
        }
        assert len(set(divided_params.values())) == 1
Пример #10
0
 def test_estimate_old_power_plant(self):
     params_2011 = _select_cost_estimator(2011, "CCGT", 1200)
     assert FuelPlant(name="Test", plant_type="CCGT", construction_year=2011, capacity_mw=1200,
                      **params_2011).calculate_lcoe(0.1) == approx(114.61207558392651)
 def test_parameter_estimator_for_old_biomass(self):
     print(_select_cost_estimator(1974, "Biomass_wood", 100))
 def test_parameter_estimator_for_old_hydro(self):
     print(_select_cost_estimator(1980, "Hydro", 100))
 def test_parameter_estimator_for_old_recip_gas_with_540_capacity(self):
     print(_select_cost_estimator(1968, "Recip_gas", 540))
 def test_lcoe_calculations_value_error_raised(self, year, plant_type,
                                               capacity):
     with pytest.raises(ValueError):
         _select_cost_estimator(year, plant_type, capacity)