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
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)