# dict(inputs_subdir='re_cost_trend', # wind_capital_cost_escalator=0.011, # pv_capital_cost_escalator=-0.064), # dict(inputs_subdir='triple_ph', # pumped_hydro_projects=[ # args["pumped_hydro_projects"][0], # standard Lake Wilson project # ['Project_2_(1.2x)', 'Oahu', 1.2*2800*1000+35e6/150, 50, 0.015, 0.77, 0, 100], # ['Project_3_(1.3x)', 'Oahu', 1.3*2800*1000+35e6/150, 50, 0.015, 0.77, 0, 100], # ] # ), # dict( # inputs_subdir='rps_2030', # time_sample = "rps_fast_mini", # rps_targets = {2020: 0.4, 2025: 0.7, 2030: 1.0, 2035: 1.0}, # ), ] # annual change in capital cost of new renewable projects: # solar cost projections: decline by 6.4%/year (based on residential PV systems from 1998 to 2014 in Fig. 7 of "Tracking the Sun VIII: The Installed Price of Residential and Non-Residential Photovoltaic Systems in the United States," https://emp.lbl.gov/reports (declines have been faster over more recent time period, and faster for non-residential systems). # wind cost projections: # increase by 1.1%/year (based on 1998-2014 in 2014 Wind Technologies Market Report, https://emp.lbl.gov/reports) for a in alt_args: # clone the arguments dictionary and update it with settings from the alt_args entry, if any active_args = dict(args.items() + a.items()) scenario_data.write_tables(**active_args)
# rather than assigning a cost per MW-km here. connect_cost_per_mw_km = 1000, base_financial_year = 2015, interest_rate = 0.06, discount_rate = 0.03, inflation_rate = 0.025, # used to convert nominal costs in the tables to real costs ) args.update( battery_capital_cost_per_mwh_capacity=363636.3636, battery_n_cycles=4500, battery_max_discharge=0.9, battery_min_discharge_time=6, battery_efficiency=0.75, ) args.update( pumped_hydro_capital_cost_per_mw=2800*1000+35e6/150, pumped_hydro_project_life=50, pumped_hydro_fixed_om_percent=0.015, # use the low-end O&M, because it always builds the big version pumped_hydro_efficiency=0.8, pumped_hydro_inflow_mw=10, pumped_hydro_max_capacity_mw=1000, ) if "skip_cf" in sys.argv: print "Skipping variable capacity factors..." args["skip_cf"] = True scenario_data.write_tables(**args)
}) # data definitions for alternative scenarios alt_args = [ dict(inputs_dir="inputs", time_sample="rps_mini"), dict(inputs_dir="inputs_tiny", time_sample="tiny"), dict(inputs_dir="inputs_tiny_tiny", time_sample="tiny", exclude_technologies=args["exclude_technologies"] + ('CentralTrackingPV', 'Wind')), ] for a in alt_args: # clone the arguments dictionary and update it with settings from the alt_args entry, if any active_args = dict(args.items() + a.items()) scenario_data.write_tables(**active_args) if cmd_line_args['write_rhos']: # calculate and store the per-variable rho values print "creating rho settings files (takes several minutes)..." import ReferenceModel inputs_dirs = set() inputs_dirs.add(args["inputs_dir"]) for a in alt_args: inputs_dirs.add(a["inputs_dir"]) for inputs_dir in inputs_dirs: ReferenceModel.inputs_dir = inputs_dir ReferenceModel.create_model() ReferenceModel.load_inputs() ReferenceModel.save_rho_file() else:
import sys, os path_to_core = os.path.abspath(os.path.join(os.path.dirname(__file__), 'switch-hawaii-core')) sys.path.append(path_to_core) import scenario_data ########################### # Scenario Definition # particular settings chosen for this case # (these will be passed as arguments when the queries are run) scenario_data.write_tables( load_scen_id = "med", # "hist"=pseudo-historical, "med"="Moved by Passion" fuel_scen_id = 3, # 1=low, 2=high, 3=reference time_sample = "rps_test", # could be '2007', '2016test', 'rps_test' or 'main' load_zones = ('Oahu',), # subset of load zones to model enable_must_run = 0, # should the must_run flag be converted to set minimum commitment for existing plants? # TODO: integrate the connect length into switch financial calculations, # rather than assigning a cost per MW-km here. connect_cost_per_mw_km = 1000000, base_financial_year = 2015, interest_rate = 0.06, discount_rate = 0.03 )