diff --git a/.github/workflows/test_gridpath.yml b/.github/workflows/test_gridpath.yml index 7a919a49a..a9f62d083 100644 --- a/.github/workflows/test_gridpath.yml +++ b/.github/workflows/test_gridpath.yml @@ -9,18 +9,23 @@ on: branches: [ main, develop ] pull_request: branches: [ main, develop ] + schedule: + - cron: "0 17 * * *" jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8", "3.9", "3.10" ] steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.8 - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v3 with: - python-version: "3.8" + python-version: ${{ matrix.python-version }} - name: Install Cbc and check version run: | sudo apt-get install coinor-cbc diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 000000000..33b439da9 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,25 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-20.04 + tools: + python: "3.10" + +# Build documentation in the doc/ directory with Sphinx +sphinx: + configuration: doc/source/conf.py + +# Optionally declare the Python requirements required to build your docs +python: + install: + - method: pip + path: . + extra_requirements: + - doc +# - requirements: requirements.txt diff --git a/README.md b/README.md index 71921e42f..939cf6ff9 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ GridPath's documentation is hosted on [Read the Docs](https://gridpath.readthedo # Installation ## Python -GridPath is developed and tested on Python 3.8. Get Python 3.8 +GridPath is tested on Python 3.8, 3.9, and 3.10. Get Python [here](https://www.python.org/downloads/ "Python download"). ## Python Packages diff --git a/db/csvs_test_examples/csv_data_master copy.csv b/db/csvs_test_examples/csv_data_master copy.csv deleted file mode 100644 index 0448e1b55..000000000 --- a/db/csvs_test_examples/csv_data_master copy.csv +++ /dev/null @@ -1,120 +0,0 @@ -path,feature,subscenario,table,subscenario_type,custom_method,project_input,project_is_tx,filename,cols_to_exclude_str,base_table,base_subscenario -solver,core,solver_options_id,options_solver,simple,,0,0,,,, -temporal,core,temporal_scenario_id,temporal,dir_subsc_only,,0,0,,"ignore -",, -temporal,core,temporal_scenario_id,temporal_periods,dir_aux,,0,0,period_params.csv,,, -temporal,core,temporal_scenario_id,temporal_horizons,dir_aux,,0,0,horizon_params.csv,,, -temporal,core,temporal_scenario_id,temporal,dir_aux,,0,0,structure.csv,ignore,, -temporal,core,temporal_scenario_id,temporal_horizon_timepoints_start_end,dir_aux,temporal,0,0,horizon_timepoints.csv,,, -project/project_portfolios,core,project_portfolio_scenario_id,project_portfolios,simple,,0,0,,,, -system_load/system_load,core,load_scenario_id,system_load,simple,,0,0,,,, -system_load/load_zones,core,load_zone_scenario_id,geography_load_zones,simple,,0,0,,,, -project/project_load_zones,core,project_load_zone_scenario_id,project_load_zones,simple,,0,0,,,, -project/project_specified_capacity,data_dependent,project_specified_capacity_scenario_id,project_specified_capacity,simple,,0,0,,,, -project/project_specified_fixed_cost,data_dependent,project_specified_fixed_cost_scenario_id,project_specified_fixed_cost,simple,,0,0,,,, -project/project_new_cost,data_dependent,project_new_cost_scenario_id,project_new_cost,simple,,0,0,,,, -project/project_new_potential,data_dependent,project_new_potential_scenario_id,project_new_potential,simple,,0,0,,,, -project/project_new_binary_build_size,data_dependent,project_new_binary_build_size_scenario_id,project_new_binary_build_size,simple,,0,0,,,, -project/project_capacity_groups/requirements,data_dependent,project_capacity_group_requirement_scenario_id,project_capacity_group_requirements,simple,,0,0,,,, -project/project_capacity_groups/projects,data_dependent,project_capacity_group_scenario_id,project_capacity_groups,simple,,0,0,,,, -project/project_fuels,data_dependent,project_fuel_scenario_id,project_fuels,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_heat_rate_curves,data_dependent,heat_rate_curves_scenario_id,project_heat_rate_curves,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_variable_om_curves,data_dependent,variable_om_curves_scenario_id,project_variable_om_curves,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_startup_chars,data_dependent,startup_chars_scenario_id,project_startup_chars,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_hydro_operational_chars,data_dependent,hydro_operational_chars_scenario_id,project_hydro_operational_chars,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_variable_generator_profiles,data_dependent,variable_generator_profile_scenario_id,project_variable_generator_profiles,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_cycle_selection,data_dependent,cycle_selection_scenario_id,project_cycle_selection,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_cap_factor_limits,data_dependent,cap_factor_limits_scenario_id,project_cap_factor_limits,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id -project/project_operational_chars,core,project_operational_chars_scenario_id,project_operational_chars,simple,,0,0,,,, -,data_dependent,supply_curve_scenario_id,project_shiftable_load_supply_curve,simple,,0,0,,,, -project/project_availability/project_availability_types,data_dependent,project_availability_scenario_id,project_availability,simple,,0,0,,,, -project/project_availability/project_availability_endogenous,data_dependent,endogenous_availability_scenario_id,project_availability_endogenous,simple,,1,0,,,inputs_project_availability,project_availability_scenario_id -project/project_availability/project_availability_exogenous,data_dependent,exogenous_availability_scenario_id,project_availability_exogenous,simple,,1,0,,,inputs_project_availability,project_availability_scenario_id -fuels/fuel_chars,fuels,fuel_scenario_id,fuels,simple,,0,0,,,, -fuels/fuel_prices,fuels,fuel_price_scenario_id,fuel_prices,simple,,0,0,,,, -transmission/transmission_portfolios,transmission,transmission_portfolio_scenario_id,transmission_portfolios,simple,,0,0,,,, -transmission/transmission_load_zones,transmission,transmission_load_zone_scenario_id,transmission_load_zones,simple,,0,0,,,, -transmission/transmission_specified_capacity,transmission,transmission_specified_capacity_scenario_id,transmission_specified_capacity,simple,,0,0,,,, -transmission/transmission_operational_chars,transmission,transmission_operational_chars_scenario_id,transmission_operational_chars,simple,,0,0,,,, -transmission/transmission_new_cost,transmission,transmission_new_cost_scenario_id,transmission_new_cost,simple,,0,0,,,, -transmission/availability,transmission,transmission_availability_scenario_id,transmission_availability,simple,,0,0,,,, -transmission/availability/exogenous,transmission,exogenous_availability_scenario_id,transmission_availability_exogenous,simple,,1,1,,,inputs_transmission_availability,transmission_availability_scenario_id -transmission/transmission_hurdle_rates,transmission_hurdle_rates,transmission_hurdle_rate_scenario_id,transmission_hurdle_rates,simple,,0,0,,,, -transmission/transmission_new_potential,transmission,transmission_new_potential_scenario_id,transmission_new_potential,simple,,0,0,,,, -transmission/transmission_flow,transmission,transmission_flow_scenario_id,transmission_flow,simple,,0,0,,,, -transmission/simultaneous_flow_limits/limits,simultaneous_flow_limits,transmission_simultaneous_flow_limit_scenario_id,transmission_simultaneous_flow_limits,simple,,0,0,,,, -transmission/simultaneous_flow_limits/line_groups,simultaneous_flow_limits,transmission_simultaneous_flow_limit_line_group_scenario_id,transmission_simultaneous_flow_limit_line_groups,simple,,0,0,,,, -reserves/lf_reserves_up/geography_lf_reserves_up_bas,lf_reserves_up,lf_reserves_up_ba_scenario_id,geography_lf_reserves_up_bas,simple,,0,0,,,, -reserves/lf_reserves_up/project_lf_reserves_up_bas,lf_reserves_up,project_lf_reserves_up_ba_scenario_id,project_lf_reserves_up_bas,simple,,0,0,,,, -reserves/lf_reserves_up/req,lf_reserves_up,lf_reserves_up_scenario_id,system_lf_reserves_up,dir_main,,0,0,timepoint.csv,,, -reserves/lf_reserves_up/req,lf_reserves_up,lf_reserves_up_scenario_id,system_lf_reserves_up_percent,dir_aux,,0,0,percentage.csv,,, -reserves/lf_reserves_up/req,lf_reserves_up,lf_reserves_up_scenario_id,system_lf_reserves_up_percent_lz_map,dir_aux,,0,0,percentage_load_zone_map.csv,,, -reserves/lf_reserves_up/req,lf_reserves_up,lf_reserves_up_scenario_id,system_lf_reserves_up_project,dir_aux,,0,0,project.csv,,, -reserves/lf_reserves_down/geography_lf_reserves_down_bas,lf_reserves_down,lf_reserves_down_ba_scenario_id,geography_lf_reserves_down_bas,simple,,0,0,,,, -reserves/lf_reserves_down/project_lf_reserves_down_bas,lf_reserves_down,project_lf_reserves_down_ba_scenario_id,project_lf_reserves_down_bas,simple,,0,0,,,, -reserves/lf_reserves_down/req,lf_reserves_down,lf_reserves_down_scenario_id,system_lf_reserves_down,dir_main,,0,0,timepoint.csv,,, -reserves/lf_reserves_down/req,lf_reserves_down,lf_reserves_down_scenario_id,system_lf_reserves_down_percent,dir_aux,,0,0,percentage.csv,,, -reserves/lf_reserves_down/req,lf_reserves_down,lf_reserves_down_scenario_id,system_lf_reserves_down_percent_lz_map,dir_aux,,0,0,percentage_load_zone_map.csv,,, -reserves/lf_reserves_down/req,lf_reserves_down,lf_reserves_down_scenario_id,system_lf_reserves_down_project,dir_aux,,0,0,project.csv,,, -reserves/regulation_up/geography_regulation_up_bas,regulation_up,regulation_up_ba_scenario_id,geography_regulation_up_bas,simple,,0,0,,,, -reserves/regulation_up/project_regulation_up_bas,regulation_up,project_regulation_up_ba_scenario_id,project_regulation_up_bas,simple,,0,0,,,, -reserves/regulation_up/req,regulation_up,regulation_up_scenario_id,system_regulation_up,dir_main,,0,0,timepoint.csv,,, -reserves/regulation_up/req,regulation_up,regulation_up_scenario_id,system_regulation_up_percent,dir_aux,,0,0,percentage.csv,,, -reserves/regulation_up/req,regulation_up,regulation_up_scenario_id,system_regulation_up_percent_lz_map,dir_aux,,0,0,percentage_load_zone_map.csv,,, -reserves/regulation_up/req,regulation_up,regulation_up_scenario_id,system_regulation_up_project,dir_aux,,0,0,project.csv,,, -reserves/regulation_down/geography_regulation_down_bas,regulation_down,regulation_down_ba_scenario_id,geography_regulation_down_bas,simple,,0,0,,,, -reserves/regulation_down/project_regulation_down_bas,regulation_down,project_regulation_down_ba_scenario_id,project_regulation_down_bas,simple,,0,0,,,, -reserves/regulation_down/req,regulation_down,regulation_down_scenario_id,system_regulation_down,dir_main,,0,0,timepoint.csv,,, -reserves/regulation_down/req,regulation_down,regulation_down_scenario_id,system_regulation_down_percent,dir_aux,,0,0,percentage.csv,,, -reserves/regulation_down/req,regulation_down,regulation_down_scenario_id,system_regulation_down_percent_lz_map,dir_aux,,0,0,percentage_load_zone_map.csv,,, -reserves/regulation_down/req,regulation_down,regulation_down_scenario_id,system_regulation_down_project,dir_aux,,0,0,project.csv,,, -reserves/frequency_response/geography_frequency_response_bas,frequency_response,frequency_response_ba_scenario_id,geography_frequency_response_bas,simple,,0,0,,,, -reserves/frequency_response/project_frequency_response_bas,frequency_response,project_frequency_response_ba_scenario_id,project_frequency_response_bas,simple,,0,0,,,, -reserves/frequency_response/req,frequency_response,frequency_response_scenario_id,system_frequency_response,dir_main,,0,0,timepoint.csv,,, -reserves/frequency_response/req,frequency_response,frequency_response_scenario_id,system_frequency_response_percent,dir_aux,,0,0,percentage.csv,,, -reserves/frequency_response/req,frequency_response,frequency_response_scenario_id,system_frequency_response_percent_lz_map,dir_aux,,0,0,percentage_load_zone_map.csv,,, -reserves/frequency_response/req,frequency_response,frequency_response_scenario_id,system_frequency_response_project,dir_aux,,0,0,project.csv,,, -reserves/spinning_reserves/geography_spinning_reserves_bas,spinning_reserves,spinning_reserves_ba_scenario_id,geography_spinning_reserves_bas,simple,,0,0,,,, -reserves/spinning_reserves/project_spinning_reserves_bas,spinning_reserves,project_spinning_reserves_ba_scenario_id,project_spinning_reserves_bas,simple,,0,0,,,, -reserves/spinning_reserves/req,spinning_reserves,spinning_reserves_scenario_id,system_spinning_reserves,dir_main,,0,0,timepoint.csv,,, -reserves/spinning_reserves/req,spinning_reserves,spinning_reserves_scenario_id,system_spinning_reserves_percent,dir_aux,,0,0,percentage.csv,,, -reserves/spinning_reserves/req,spinning_reserves,spinning_reserves_scenario_id,system_spinning_reserves_percent_lz_map,dir_aux,,0,0,percentage_load_zone_map.csv,,, -reserves/spinning_reserves/req,spinning_reserves,spinning_reserves_scenario_id,system_spinning_reserves_project,dir_aux,,0,0,project.csv,,, -policy/energy_targets/zones,energy_target,energy_target_zone_scenario_id,geography_energy_target_zones,simple,,0,0,,,, -policy/energy_targets/project_zones,energy_target,project_energy_target_zone_scenario_id,project_energy_target_zones,simple,,0,0,,,, -policy/energy_targets/period_targets,energy_target,period_energy_target_scenario_id,system_period_energy_targets,dir_main,,0,0,targets.csv,,, -policy/energy_targets/period_targets,energy_target,period_energy_target_scenario_id,system_period_energy_target_load_zone_map,dir_aux,,0,0,load_zone_mapping.csv,,, -policy/energy_targets/horizon_targets,energy_target,horizon_energy_target_scenario_id,system_horizon_energy_targets,dir_main,,0,0,targets.csv,,, -policy/energy_targets/horizon_targets,energy_target,horizon_energy_target_scenario_id,system_horizon_energy_target_load_zone_map,dir_aux,,0,0,load_zone_mapping.csv,,, -policy/carbon_cap/geography_carbon_cap_zones,carbon_cap,carbon_cap_zone_scenario_id,geography_carbon_cap_zones,simple,,0,0,,,, -policy/carbon_cap/project_carbon_cap_zones,carbon_cap,project_carbon_cap_zone_scenario_id,project_carbon_cap_zones,simple,,0,0,,,, -policy/carbon_cap/system_carbon_cap_targets,carbon_cap,carbon_cap_target_scenario_id,system_carbon_cap_targets,simple,,0,0,,,, -policy/carbon_cap/track_carbon_imports/transmission_carbon_cap_zones,track_carbon_imports,transmission_carbon_cap_zone_scenario_id,transmission_carbon_cap_zones,simple,,0,0,,,, -policy/carbon_tax/geography_carbon_tax_zones,carbon_tax,carbon_tax_zone_scenario_id,geography_carbon_tax_zones,simple,,0,0,,,, -policy/carbon_tax/project_carbon_tax_zones,carbon_tax,project_carbon_tax_zone_scenario_id,project_carbon_tax_zones,simple,,0,0,,,, -policy/carbon_tax/system_carbon_tax,carbon_tax,carbon_tax_scenario_id,system_carbon_tax,simple,,0,0,,,, -policy/carbon_tax/project_carbon_tax_allowance,carbon_tax,project_carbon_tax_allowance_scenario_id,project_carbon_tax_allowance,simple,,0,0,,,, -policy/performance_standard/geography_performance_standard_zones,performance_standard,performance_standard_zone_scenario_id,geography_performance_standard_zones,simple,,0,0,,,, -policy/performance_standard/project_performance_standard_zones,performance_standard,project_performance_standard_zone_scenario_id,project_performance_standard_zones,simple,,0,0,,,, -policy/performance_standard/system_performance_standard,performance_standard,performance_standard_scenario_id,system_performance_standard,simple,,0,0,,,, -policy/fuel_burn_limits/bas,fuel_burn_limit,fuel_burn_limit_ba_scenario_id,geography_fuel_burn_limit_balancing_areas,simple,,0,0,,,, -policy/fuel_burn_limits/project_bas,fuel_burn_limit,project_fuel_burn_limit_ba_scenario_id,project_fuel_burn_limit_balancing_areas,simple,,0,0,,,, -policy/fuel_burn_limits/limits,fuel_burn_limit,fuel_burn_limit_scenario_id,system_fuel_burn_limits,simple,,0,0,,,, -reliability/prm/geography_prm_zones,prm,prm_zone_scenario_id,geography_prm_zones,simple,,0,0,,,, -reliability/prm/project_prm_zones,prm,project_prm_zone_scenario_id,project_prm_zones,simple,,0,0,,,, -reliability/prm/project_elcc_chars,prm,project_elcc_chars_scenario_id,project_elcc_chars,simple,,0,0,,,, -reliability/prm/project_prm_energy_only,prm,prm_energy_only_scenario_id,project_prm_energy_only,simple,,0,0,,,, -reliability/prm/system_prm_requirement,prm,prm_requirement_scenario_id,system_prm_requirement,simple,,0,0,,,, -reliability/prm/elcc_surface,elcc_surface,elcc_surface_scenario_id,system_prm_zone_elcc_surface,dir_main,,0,0,zone_intercepts.csv,,, -reliability/prm/elcc_surface,elcc_surface,elcc_surface_scenario_id,system_prm_zone_elcc_surface_prm_load,dir_aux,,0,0,zone_peak_and_annual_load.csv,,, -reliability/prm/elcc_surface,elcc_surface,elcc_surface_scenario_id,project_elcc_surface,dir_aux,,0,0,project_coefficients.csv,,, -reliability/prm/elcc_surface,elcc_surface,elcc_surface_scenario_id,project_elcc_surface_cap_factors,dir_aux,,0,0,project_cap_factors.csv,,, -reliability/local_capacity/geography_local_capacity_zones,local_capacity,local_capacity_zone_scenario_id,geography_local_capacity_zones,simple,,0,0,,,, -reliability/local_capacity/project_local_capacity_zones,local_capacity,project_local_capacity_zone_scenario_id,project_local_capacity_zones,simple,,0,0,,,, -reliability/local_capacity/project_local_capacity_chars,local_capacity,project_local_capacity_chars_scenario_id,project_local_capacity_chars,simple,,0,0,,,, -reliability/local_capacity/system_local_capacity_requirement,local_capacity,local_capacity_requirement_scenario_id,system_local_capacity_requirement,simple,,0,0,,,, -,tuning,tuning_scenario_id,tuning,simple,,0,0,,,, -markets/geography_markets,markets,market_scenario_id,geography_markets,simple,,0,0,,,, -markets/load_zone_markets,markets,load_zone_market_scenario_id,load_zone_markets,simple,,0,0,,,, -markets/prices,markets,market_price_scenario_id,market_prices,simple,,0,0,,,, -markets/volume,markets,market_volume_scenario_id,market_volume,simple,,0,0,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/csv_data_master.csv b/db/csvs_test_examples/csv_data_master.csv index 0448e1b55..42ba40667 100644 --- a/db/csvs_test_examples/csv_data_master.csv +++ b/db/csvs_test_examples/csv_data_master.csv @@ -24,6 +24,7 @@ project/project_startup_chars,data_dependent,startup_chars_scenario_id,project_s project/project_hydro_operational_chars,data_dependent,hydro_operational_chars_scenario_id,project_hydro_operational_chars,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id project/project_variable_generator_profiles,data_dependent,variable_generator_profile_scenario_id,project_variable_generator_profiles,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id project/project_cycle_selection,data_dependent,cycle_selection_scenario_id,project_cycle_selection,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id +project/project_supplemental_firing,data_dependent,supplemental_firing_scenario_id,project_supplemental_firing,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id project/project_cap_factor_limits,data_dependent,cap_factor_limits_scenario_id,project_cap_factor_limits,simple,,1,0,,,inputs_project_operational_chars,project_operational_chars_scenario_id project/project_operational_chars,core,project_operational_chars_scenario_id,project_operational_chars,simple,,0,0,,,, ,data_dependent,supply_curve_scenario_id,project_shiftable_load_supply_curve,simple,,0,0,,,, @@ -42,6 +43,8 @@ transmission/availability/exogenous,transmission,exogenous_availability_scenario transmission/transmission_hurdle_rates,transmission_hurdle_rates,transmission_hurdle_rate_scenario_id,transmission_hurdle_rates,simple,,0,0,,,, transmission/transmission_new_potential,transmission,transmission_new_potential_scenario_id,transmission_new_potential,simple,,0,0,,,, transmission/transmission_flow,transmission,transmission_flow_scenario_id,transmission_flow,simple,,0,0,,,, +transmission/transmission_capacity_groups/requirements,data_dependent,transmission_capacity_group_requirement_scenario_id,transmission_capacity_group_requirements,simple,,0,0,,,, +transmission/transmission_capacity_groups/transmission_lines,data_dependent,transmission_capacity_group_scenario_id,transmission_capacity_groups,simple,,0,0,,,, transmission/simultaneous_flow_limits/limits,simultaneous_flow_limits,transmission_simultaneous_flow_limit_scenario_id,transmission_simultaneous_flow_limits,simple,,0,0,,,, transmission/simultaneous_flow_limits/line_groups,simultaneous_flow_limits,transmission_simultaneous_flow_limit_line_group_scenario_id,transmission_simultaneous_flow_limit_line_groups,simple,,0,0,,,, reserves/lf_reserves_up/geography_lf_reserves_up_bas,lf_reserves_up,lf_reserves_up_ba_scenario_id,geography_lf_reserves_up_bas,simple,,0,0,,,, diff --git a/db/csvs_test_examples/project/project_availability/project_availability_exogenous/Coal_z1-1-base.csv b/db/csvs_test_examples/project/project_availability/project_availability_exogenous/Coal_z1-1-base.csv index a54638cf7..937fb2a21 100644 --- a/db/csvs_test_examples/project/project_availability/project_availability_exogenous/Coal_z1-1-base.csv +++ b/db/csvs_test_examples/project/project_availability/project_availability_exogenous/Coal_z1-1-base.csv @@ -1,97 +1,97 @@ -stage_id,timepoint,availability_derate -1,20200101,0.95 -1,20200102,0.95 -1,20200103,0.95 -1,20200104,0.95 -1,20200105,0.95 -1,20200106,0.95 -1,20200107,0.95 -1,20200108,0.95 -1,20200109,0.95 -1,20200110,0.95 -1,20200111,0.95 -1,20200112,0.95 -1,20200113,0.95 -1,20200114,0.95 -1,20200115,0.95 -1,20200116,0.95 -1,20200117,0.95 -1,20200118,0.95 -1,20200119,0.95 -1,20200120,0.95 -1,20200121,0.95 -1,20200122,0.95 -1,20200123,0.95 -1,20200124,0.95 -1,20200201,0.95 -1,20200202,0.95 -1,20200203,0.95 -1,20200204,0.95 -1,20200205,0.95 -1,20200206,0.95 -1,20200207,0.95 -1,20200208,0.95 -1,20200209,0.95 -1,20200210,0.95 -1,20200211,0.95 -1,20200212,0.95 -1,20200213,0.95 -1,20200214,0.95 -1,20200215,0.95 -1,20200216,0.95 -1,20200217,0.95 -1,20200218,0.95 -1,20200219,0.95 -1,20200220,0.95 -1,20200221,0.95 -1,20200222,0.95 -1,20200223,0.95 -1,20200224,0.95 -1,20250101,0.95 -1,20250102,0.95 -1,20250103,0.95 -1,20250104,0.95 -1,20250105,0.95 -1,20250106,0.95 -1,20250107,0.95 -1,20250108,0.95 -1,20250109,0.95 -1,20250110,0.95 -1,20250111,0.95 -1,20250112,0.95 -1,20250113,0.95 -1,20250114,0.95 -1,20250115,0.95 -1,20250116,0.95 -1,20250117,0.95 -1,20250118,0.95 -1,20250119,0.95 -1,20250120,0.95 -1,20250121,0.95 -1,20250122,0.95 -1,20250123,0.95 -1,20250124,0.95 -1,20250201,0.95 -1,20250202,0.95 -1,20250203,0.95 -1,20250204,0.95 -1,20250205,0.95 -1,20250206,0.95 -1,20250207,0.95 -1,20250208,0.95 -1,20250209,0.95 -1,20250210,0.95 -1,20250211,0.95 -1,20250212,0.95 -1,20250213,0.95 -1,20250214,0.95 -1,20250215,0.95 -1,20250216,0.95 -1,20250217,0.95 -1,20250218,0.95 -1,20250219,0.95 -1,20250220,0.95 -1,20250221,0.95 -1,20250222,0.95 -1,20250223,0.95 -1,20250224,0.95 +stage_id,timepoint,availability_derate,hyb_stor_cap_availability_derate +1,20200101,0.95, +1,20200102,0.95, +1,20200103,0.95, +1,20200104,0.95, +1,20200105,0.95, +1,20200106,0.95, +1,20200107,0.95, +1,20200108,0.95, +1,20200109,0.95, +1,20200110,0.95, +1,20200111,0.95, +1,20200112,0.95, +1,20200113,0.95, +1,20200114,0.95, +1,20200115,0.95, +1,20200116,0.95, +1,20200117,0.95, +1,20200118,0.95, +1,20200119,0.95, +1,20200120,0.95, +1,20200121,0.95, +1,20200122,0.95, +1,20200123,0.95, +1,20200124,0.95, +1,20200201,0.95, +1,20200202,0.95, +1,20200203,0.95, +1,20200204,0.95, +1,20200205,0.95, +1,20200206,0.95, +1,20200207,0.95, +1,20200208,0.95, +1,20200209,0.95, +1,20200210,0.95, +1,20200211,0.95, +1,20200212,0.95, +1,20200213,0.95, +1,20200214,0.95, +1,20200215,0.95, +1,20200216,0.95, +1,20200217,0.95, +1,20200218,0.95, +1,20200219,0.95, +1,20200220,0.95, +1,20200221,0.95, +1,20200222,0.95, +1,20200223,0.95, +1,20200224,0.95, +1,20250101,0.95, +1,20250102,0.95, +1,20250103,0.95, +1,20250104,0.95, +1,20250105,0.95, +1,20250106,0.95, +1,20250107,0.95, +1,20250108,0.95, +1,20250109,0.95, +1,20250110,0.95, +1,20250111,0.95, +1,20250112,0.95, +1,20250113,0.95, +1,20250114,0.95, +1,20250115,0.95, +1,20250116,0.95, +1,20250117,0.95, +1,20250118,0.95, +1,20250119,0.95, +1,20250120,0.95, +1,20250121,0.95, +1,20250122,0.95, +1,20250123,0.95, +1,20250124,0.95, +1,20250201,0.95, +1,20250202,0.95, +1,20250203,0.95, +1,20250204,0.95, +1,20250205,0.95, +1,20250206,0.95, +1,20250207,0.95, +1,20250208,0.95, +1,20250209,0.95, +1,20250210,0.95, +1,20250211,0.95, +1,20250212,0.95, +1,20250213,0.95, +1,20250214,0.95, +1,20250215,0.95, +1,20250216,0.95, +1,20250217,0.95, +1,20250218,0.95, +1,20250219,0.95, +1,20250220,0.95, +1,20250221,0.95, +1,20250222,0.95, +1,20250223,0.95, +1,20250224,0.95, diff --git a/db/csvs_test_examples/project/project_operational_chars/10_project_operational_chars_2zones_hydro_must_take2.csv b/db/csvs_test_examples/project/project_operational_chars/10_project_operational_chars_2zones_hydro_must_take2.csv index c9c1c5df4..65ea2b917 100644 --- a/db/csvs_test_examples/project/project_operational_chars/10_project_operational_chars_2zones_hydro_must_take2.csv +++ b/db/csvs_test_examples/project/project_operational_chars/10_project_operational_chars_2zones_hydro_must_take2.csv @@ -1,21 +1,21 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro_must_take,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro_must_take,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/11_project_operational_chars_2zones4.csv b/db/csvs_test_examples/project/project_operational_chars/11_project_operational_chars_2zones4.csv index b0c37698f..b512aebd4 100644 --- a/db/csvs_test_examples/project/project_operational_chars/11_project_operational_chars_2zones4.csv +++ b/db/csvs_test_examples/project/project_operational_chars/11_project_operational_chars_2zones4.csv @@ -1,22 +1,22 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_bin,day,2,1,1,,2,0.4,,,2,,,0.012,,,,,,,6,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_bin,day,2,1,1,,2,0.4,,,2,,,0.012,,,,,,,6,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/12_project_operational_chars_2zones_no_fuels.csv b/db/csvs_test_examples/project/project_operational_chars/12_project_operational_chars_2zones_no_fuels.csv index 7fb6db797..5ec2dc9cd 100644 --- a/db/csvs_test_examples/project/project_operational_chars/12_project_operational_chars_2zones_no_fuels.csv +++ b/db/csvs_test_examples/project/project_operational_chars/12_project_operational_chars_2zones_no_fuels.csv @@ -1,22 +1,22 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,,,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,,,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,,,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,,,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,,,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,,,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/13_project_operational_chars_2zones variable_om_curves.csv b/db/csvs_test_examples/project/project_operational_chars/13_project_operational_chars_2zones variable_om_curves.csv index 1dc0fdede..52fad98f8 100644 --- a/db/csvs_test_examples/project/project_operational_chars/13_project_operational_chars_2zones variable_om_curves.csv +++ b/db/csvs_test_examples/project/project_operational_chars/13_project_operational_chars_2zones variable_om_curves.csv @@ -1,22 +1,22 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_bin,day,2,1,1,1,,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_bin,day,2,1,1,1,,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/14_project_operational_chars_2zones_aux_cons.csv b/db/csvs_test_examples/project/project_operational_chars/14_project_operational_chars_2zones_aux_cons.csv index d718aa1cd..d5bc8b167 100644 --- a/db/csvs_test_examples/project/project_operational_chars/14_project_operational_chars_2zones_aux_cons.csv +++ b/db/csvs_test_examples/project/project_operational_chars/14_project_operational_chars_2zones_aux_cons.csv @@ -1,22 +1,22 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,0.01,0.05,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,0.01,0.05,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,0.01,0.05,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,0.01,0.05,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,0.01,0.05,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,0.01,0.05,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/15_ccgt_w_cheap_fuel_blend.csv b/db/csvs_test_examples/project/project_operational_chars/15_ccgt_w_cheap_fuel_blend.csv index d0079d61d..26f9e9e1b 100644 --- a/db/csvs_test_examples/project/project_operational_chars/15_ccgt_w_cheap_fuel_blend.csv +++ b/db/csvs_test_examples/project/project_operational_chars/15_ccgt_w_cheap_fuel_blend.csv @@ -1,23 +1,23 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,2,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,2,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/16_ccgt_w_low_carbon_fuel_blend.csv b/db/csvs_test_examples/project/project_operational_chars/16_ccgt_w_low_carbon_fuel_blend.csv index 92ca84bb0..d6cee37f8 100644 --- a/db/csvs_test_examples/project/project_operational_chars/16_ccgt_w_low_carbon_fuel_blend.csv +++ b/db/csvs_test_examples/project/project_operational_chars/16_ccgt_w_low_carbon_fuel_blend.csv @@ -1,23 +1,23 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,3,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,3,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/17_ccgt_w_cheap_fuel_blend_limited.csv b/db/csvs_test_examples/project/project_operational_chars/17_ccgt_w_cheap_fuel_blend_limited.csv index e4ed48521..3a5fe68eb 100644 --- a/db/csvs_test_examples/project/project_operational_chars/17_ccgt_w_cheap_fuel_blend_limited.csv +++ b/db/csvs_test_examples/project/project_operational_chars/17_ccgt_w_cheap_fuel_blend_limited.csv @@ -1,23 +1,23 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,4,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,4,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/18_opchar_scenario_id_7_but_force_gas_or_coal_cycle_selection.csv b/db/csvs_test_examples/project/project_operational_chars/18_opchar_scenario_id_7_but_force_gas_or_coal_cycle_selection.csv index c26dadd67..b74bfd693 100644 --- a/db/csvs_test_examples/project/project_operational_chars/18_opchar_scenario_id_7_but_force_gas_or_coal_cycle_selection.csv +++ b/db/csvs_test_examples/project/project_operational_chars/18_opchar_scenario_id_7_but_force_gas_or_coal_cycle_selection.csv @@ -1,21 +1,21 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,1,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,1,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/19_fuel_prod_no_wind_in_a_tmp.csv b/db/csvs_test_examples/project/project_operational_chars/19_fuel_prod_no_wind_in_a_tmp.csv index d82382533..cee383bea 100644 --- a/db/csvs_test_examples/project/project_operational_chars/19_fuel_prod_no_wind_in_a_tmp.csv +++ b/db/csvs_test_examples/project/project_operational_chars/19_fuel_prod_no_wind_in_a_tmp.csv @@ -1,25 +1,25 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, -Hydrogen_Prod,Hydrogen_Prod,fuel_prod,day,0.5,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.00E-02, -Hydrogen_Plant,Hydrogen,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, +Hydrogen_Prod,Hydrogen_Prod,fuel_prod,day,0.5,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.00E-02, +Hydrogen_Plant,Hydrogen,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/1_project_operational_chars_2zones.csv b/db/csvs_test_examples/project/project_operational_chars/1_project_operational_chars_2zones.csv index 1ccd95e18..752630d65 100644 --- a/db/csvs_test_examples/project/project_operational_chars/1_project_operational_chars_2zones.csv +++ b/db/csvs_test_examples/project/project_operational_chars/1_project_operational_chars_2zones.csv @@ -1,26 +1,26 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, -Hydrogen_Prod,Hydrogen_Prod,fuel_prod,day,0.5,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1, -Hydrogen_Plant,Hydrogen,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DAC,DAC,dac,day,0.01,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, +Hydrogen_Prod,Hydrogen_Prod,fuel_prod,day,0.5,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1, +Hydrogen_Plant,Hydrogen,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DAC,DAC,dac,day,0.01,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/20_1_with_cap_factor_limit.csv b/db/csvs_test_examples/project/project_operational_chars/20_1_with_cap_factor_limit.csv index ec6094582..5eff8705d 100644 --- a/db/csvs_test_examples/project/project_operational_chars/20_1_with_cap_factor_limit.csv +++ b/db/csvs_test_examples/project/project_operational_chars/20_1_with_cap_factor_limit.csv @@ -1,26 +1,26 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,1 -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, -Hydrogen_Prod,Hydrogen_Prod,fuel_prod,day,0.5,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1, -Hydrogen_Plant,Hydrogen,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DAC,DAC,dac,day,0.01,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,1 +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Gas_CCGT_z3,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Wind_Battery_Hybrid,Wind_Battery_Hybrid,gen_var_stor_hyb,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,,,,,,1,,,,,,,,,,,,,,,, +Hydrogen_Prod,Hydrogen_Prod,fuel_prod,day,0.5,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.1, +Hydrogen_Plant,Hydrogen,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +DAC,DAC,dac,day,0.01,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/21_opchar_scenario_id_7_but_ccgt_supplemental_to_ct.csv b/db/csvs_test_examples/project/project_operational_chars/21_opchar_scenario_id_7_but_ccgt_supplemental_to_ct.csv new file mode 100644 index 000000000..199a262d6 --- /dev/null +++ b/db/csvs_test_examples/project/project_operational_chars/21_opchar_scenario_id_7_but_ccgt_supplemental_to_ct.csv @@ -0,0 +1,21 @@ +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/2_project_operational_chars_2zones_var_reserves.csv b/db/csvs_test_examples/project/project_operational_chars/2_project_operational_chars_2zones_var_reserves.csv index bc0708ac7..03f3611e3 100644 --- a/db/csvs_test_examples/project/project_operational_chars/2_project_operational_chars_2zones_var_reserves.csv +++ b/db/csvs_test_examples/project/project_operational_chars/2_project_operational_chars_2zones_var_reserves.csv @@ -1,19 +1,19 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,0.5,0.5,0.5,0.5,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,0.5,0.5,0.5,0.5,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/3_project_operational_chars_2zones_ramp_up.csv b/db/csvs_test_examples/project/project_operational_chars/3_project_operational_chars_2zones_ramp_up.csv index feab1f0d0..dbd349379 100644 --- a/db/csvs_test_examples/project/project_operational_chars/3_project_operational_chars_2zones_ramp_up.csv +++ b/db/csvs_test_examples/project/project_operational_chars/3_project_operational_chars_2zones_ramp_up.csv @@ -1,19 +1,19 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,0.005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,0.005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/4_project_operational_chars_2zones_ramp_up_and_down.csv b/db/csvs_test_examples/project/project_operational_chars/4_project_operational_chars_2zones_ramp_up_and_down.csv index a364bdcab..40f94c188 100644 --- a/db/csvs_test_examples/project/project_operational_chars/4_project_operational_chars_2zones_ramp_up_and_down.csv +++ b/db/csvs_test_examples/project/project_operational_chars/4_project_operational_chars_2zones_ramp_up_and_down.csv @@ -1,19 +1,19 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,0.015,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,0.005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,0.015,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,0.005,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/5_project_operational_chars_2zones_hydro.csv b/db/csvs_test_examples/project/project_operational_chars/5_project_operational_chars_2zones_hydro.csv index afc27aa6e..602b2e1d0 100644 --- a/db/csvs_test_examples/project/project_operational_chars/5_project_operational_chars_2zones_hydro.csv +++ b/db/csvs_test_examples/project/project_operational_chars/5_project_operational_chars_2zones_hydro.csv @@ -1,19 +1,19 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/6_project_operational_chars_2zones_hydro2.csv b/db/csvs_test_examples/project/project_operational_chars/6_project_operational_chars_2zones_hydro2.csv index 4c05f368e..29f4ecf0a 100644 --- a/db/csvs_test_examples/project/project_operational_chars/6_project_operational_chars_2zones_hydro2.csv +++ b/db/csvs_test_examples/project/project_operational_chars/6_project_operational_chars_2zones_hydro2.csv @@ -1,19 +1,19 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,year,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,year,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/7_project_operational_chars_2zones2.csv b/db/csvs_test_examples/project/project_operational_chars/7_project_operational_chars_2zones2.csv index 599b24607..281fc2dcc 100644 --- a/db/csvs_test_examples/project/project_operational_chars/7_project_operational_chars_2zones2.csv +++ b/db/csvs_test_examples/project/project_operational_chars/7_project_operational_chars_2zones2.csv @@ -1,21 +1,21 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_lin,day,1,1,1,,1,0.4,,,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_lin,day,2,1,1,,1,0.4,,,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,0.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/8_project_operational_chars_2zones3.csv b/db/csvs_test_examples/project/project_operational_chars/8_project_operational_chars_2zones3.csv index 6ad2b885b..3138039dd 100644 --- a/db/csvs_test_examples/project/project_operational_chars/8_project_operational_chars_2zones3.csv +++ b/db/csvs_test_examples/project/project_operational_chars/8_project_operational_chars_2zones3.csv @@ -1,21 +1,21 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.9,0.9,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.9,0.9,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.9,0.9,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.9,0.9,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_operational_chars/9_project_operational_chars_2zones_hydro_must_take.csv b/db/csvs_test_examples/project/project_operational_chars/9_project_operational_chars_2zones_hydro_must_take.csv index f90c3687d..f794b1f81 100644 --- a/db/csvs_test_examples/project/project_operational_chars/9_project_operational_chars_2zones_hydro_must_take.csv +++ b/db/csvs_test_examples/project/project_operational_chars/9_project_operational_chars_2zones_hydro_must_take.csv @@ -1,21 +1,21 @@ -project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id -Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Hydro,Hydro,gen_hydro_must_take,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, -Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, -Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +project,technology,operational_type,balancing_type_project,variable_om_cost_per_mwh,project_fuel_scenario_id,heat_rate_curves_scenario_id,variable_om_curves_scenario_id,startup_chars_scenario_id,min_stable_level_fraction,unit_size_mw,startup_cost_per_mw,shutdown_cost_per_mw,startup_fuel_mmbtu_per_mw,startup_plus_ramp_up_rate,shutdown_plus_ramp_down_rate,ramp_up_when_on_rate,ramp_down_when_on_rate,ramp_up_violation_penalty,ramp_down_violation_penalty,min_up_time_hours,min_up_time_violation_penalty,min_down_time_hours,min_down_time_violation_penalty,cycle_selection_scenario_id,supplemental_firing_scenario_id,charging_efficiency,discharging_efficiency,charging_capacity_multiplier,discharging_capacity_multiplier,minimum_duration_hours,maximum_duration_hours,aux_consumption_frac_capacity,aux_consumption_frac_power,last_commitment_stage,variable_generator_profile_scenario_id,curtailment_cost_per_pwh,hydro_operational_chars_scenario_id,lf_reserves_up_derate,lf_reserves_down_derate,regulation_up_derate,regulation_down_derate,frequency_response_derate,spinning_reserves_derate,lf_reserves_up_ramp_rate,lf_reserves_down_ramp_rate,regulation_up_ramp_rate,regulation_down_ramp_rate,frequency_response_ramp_rate,spinning_reserves_ramp_rate,powerunithour_per_fuelunit,cap_factor_limits_scenario_id +Nuclear,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Gas_CCGT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Hydro,Hydro,gen_hydro_must_take,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +Gas_CCGT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Solar,Solar,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Nuclear_z2,Nuclear,gen_must_run,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Coal_z2,Coal,gen_commit_cap,day,1,1,1,,,0.4,6,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Wind_z2,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +Battery_z2,Storage,stor,day,0,,,,,,,,,,,,,,,,,,,,,,0.8,0.8,,,1,99,,,,,,,,,,,,,,,,,,,, +Gas_CCGT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,1,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +Gas_CT_new_z2,Gas,gen_commit_cap,day,2,1,1,,,0.4,6,0,1,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +Clunky_Old_Gen,Coal,gen_simple,day,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +Wind_new,Wind,gen_var,day,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_supplemental_firing/Gas_CT-1-base.csv b/db/csvs_test_examples/project/project_supplemental_firing/Gas_CT-1-base.csv new file mode 100644 index 000000000..59a32f8d7 --- /dev/null +++ b/db/csvs_test_examples/project/project_supplemental_firing/Gas_CT-1-base.csv @@ -0,0 +1,2 @@ +supplemental_firing_project +Gas_CCGT \ No newline at end of file diff --git a/db/csvs_test_examples/project/project_supplemental_firing/doc.py b/db/csvs_test_examples/project/project_supplemental_firing/doc.py new file mode 100644 index 000000000..f6c38616a --- /dev/null +++ b/db/csvs_test_examples/project/project_supplemental_firing/doc.py @@ -0,0 +1,5 @@ +# Copyright 2016-2022 Blue Marble Analytics LLC. All rights reserved. + +""" + +""" diff --git a/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/percentage.csv b/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/percentage.csv index 3789aee4a..8c1363f8c 100644 --- a/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/percentage.csv +++ b/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/percentage.csv @@ -1 +1 @@ -frequency_response_ba,percent_load_req \ No newline at end of file +frequency_response_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/project.csv b/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/project.csv index 8aa345fd0..2ce303bf2 100644 --- a/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/project.csv +++ b/db/csvs_test_examples/reserves/frequency_response/req/1_region_frequency_response/project.csv @@ -1 +1 @@ -frequency_response_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +frequency_response_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/percentage.csv b/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/percentage.csv index 35de87d99..d38335b84 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/percentage.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/percentage.csv @@ -1 +1 @@ -lf_reserves_down_ba,percent_load_req \ No newline at end of file +lf_reserves_down_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/project.csv b/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/project.csv index 4e8d5ea87..c887b6854 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/project.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_down/req/1_system_lf_reserves_down_1/project.csv @@ -1 +1 @@ -lf_reserves_down_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +lf_reserves_down_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/percentage.csv b/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/percentage.csv index 35de87d99..d38335b84 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/percentage.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/percentage.csv @@ -1 +1 @@ -lf_reserves_down_ba,percent_load_req \ No newline at end of file +lf_reserves_down_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/project.csv b/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/project.csv index 4e8d5ea87..c887b6854 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/project.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_down/req/2_system_lf_reserves_down_2/project.csv @@ -1 +1 @@ -lf_reserves_down_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +lf_reserves_down_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/percentage.csv b/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/percentage.csv index 6618db9c0..1c4568a34 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/percentage.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/percentage.csv @@ -1,2 +1,2 @@ -lf_reserves_down_ba,percent_load_req -Zone1,0.03 \ No newline at end of file +lf_reserves_down_ba,stage_id,percent_load_req +Zone1,1,0.03 \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/project.csv b/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/project.csv index 4e8d5ea87..c887b6854 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/project.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_down/req/3_base_tmp_plus_percent_req/project.csv @@ -1 +1 @@ -lf_reserves_down_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +lf_reserves_down_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/percentage.csv b/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/percentage.csv index fba5f7335..3bec35671 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/percentage.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/percentage.csv @@ -1 +1 @@ -lf_reserves_up_ba,percent_load_req \ No newline at end of file +lf_reserves_up_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/project.csv b/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/project.csv index 2bec55051..64d4c40bf 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/project.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_up/req/1_system_lf_reserves_up_1/project.csv @@ -1 +1 @@ -lf_reserves_up_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +lf_reserves_up_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/percentage.csv b/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/percentage.csv index fba5f7335..3bec35671 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/percentage.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/percentage.csv @@ -1 +1 @@ -lf_reserves_up_ba,percent_load_req \ No newline at end of file +lf_reserves_up_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/project.csv b/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/project.csv index 2bec55051..64d4c40bf 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/project.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_up/req/2_system_lf_reserves_up_2/project.csv @@ -1 +1 @@ -lf_reserves_up_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +lf_reserves_up_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/percentage.csv b/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/percentage.csv index fba5f7335..3bec35671 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/percentage.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/percentage.csv @@ -1 +1 @@ -lf_reserves_up_ba,percent_load_req \ No newline at end of file +lf_reserves_up_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/project.csv b/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/project.csv index c543fe6ae..79aa8fa17 100644 --- a/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/project.csv +++ b/db/csvs_test_examples/reserves/lf_reserves_up/req/3_lf_reserves_up_w_project_contribution/project.csv @@ -1,3 +1,3 @@ -lf_reserves_up_ba,project,percent_power_req,percent_capacity_req -Zone1,Wind,0.05, -Zone1,Solar,,0.03 \ No newline at end of file +lf_reserves_up_ba,stage_id,project,percent_power_req,percent_capacity_req +Zone1,1,Wind,0.05, +Zone1,1,Solar,,0.03 \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/percentage.csv b/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/percentage.csv index 17521d84e..5d5a24e22 100644 --- a/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/percentage.csv +++ b/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/percentage.csv @@ -1 +1 @@ -regulation_down_ba,percent_load_req \ No newline at end of file +regulation_down_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/project.csv b/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/project.csv index 4361cefa3..6adb77a4e 100644 --- a/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/project.csv +++ b/db/csvs_test_examples/reserves/regulation_down/req/1_system_regulation_down_1/project.csv @@ -1 +1 @@ -regulation_down_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +regulation_down_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/percentage.csv b/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/percentage.csv index 17521d84e..5d5a24e22 100644 --- a/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/percentage.csv +++ b/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/percentage.csv @@ -1 +1 @@ -regulation_down_ba,percent_load_req \ No newline at end of file +regulation_down_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/project.csv b/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/project.csv index 4361cefa3..6adb77a4e 100644 --- a/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/project.csv +++ b/db/csvs_test_examples/reserves/regulation_down/req/2_system_regulation_down_2/project.csv @@ -1 +1 @@ -regulation_down_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +regulation_down_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/percentage.csv b/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/percentage.csv index 21b183a65..e2e7ca9f0 100644 --- a/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/percentage.csv +++ b/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/percentage.csv @@ -1 +1 @@ -regulation_up_ba,percent_load_req \ No newline at end of file +regulation_up_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/project.csv b/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/project.csv index 7fa3a433b..5774c662b 100644 --- a/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/project.csv +++ b/db/csvs_test_examples/reserves/regulation_up/req/1_system_regulation_up_1/project.csv @@ -1 +1 @@ -regulation_up_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +regulation_up_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/percentage.csv b/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/percentage.csv index 21b183a65..e2e7ca9f0 100644 --- a/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/percentage.csv +++ b/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/percentage.csv @@ -1 +1 @@ -regulation_up_ba,percent_load_req \ No newline at end of file +regulation_up_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/project.csv b/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/project.csv index 7fa3a433b..5774c662b 100644 --- a/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/project.csv +++ b/db/csvs_test_examples/reserves/regulation_up/req/2_system_regulation_up_2/project.csv @@ -1 +1 @@ -regulation_up_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +regulation_up_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/percentage.csv b/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/percentage.csv index dcab74f42..c0e5743fd 100644 --- a/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/percentage.csv +++ b/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/percentage.csv @@ -1 +1 @@ -spinning_reserves_ba,percent_load_req \ No newline at end of file +spinning_reserves_ba,stage_id,percent_load_req \ No newline at end of file diff --git a/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/project.csv b/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/project.csv index d0f75a1e0..554ca38ea 100644 --- a/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/project.csv +++ b/db/csvs_test_examples/reserves/spinning_reserves/req/1_region_spinning_reserves/project.csv @@ -1 +1 @@ -spinning_reserves_ba,project,percent_power_req,percent_capacity_req \ No newline at end of file +spinning_reserves_ba,stage_id,project,percent_power_req,percent_capacity_req \ No newline at end of file diff --git a/db/csvs_test_examples/scenarios.csv b/db/csvs_test_examples/scenarios.csv index 29f42e25c..0576c7ad5 100644 --- a/db/csvs_test_examples/scenarios.csv +++ b/db/csvs_test_examples/scenarios.csv @@ -1,102 +1,104 @@ -optional_feature_or_subscenarios,test,test_w_storage,test_w_hydro,test_new_solar,test_new_binary_solar,test_new_build_storage,test_new_build_storage_cumulative_min_max,test_new_binary_build_storage,test_no_overgen_allowed,test_no_reserves,test_variable_gen_reserves,test_new_solar_carbon_cap,test_new_solar_carbon_tax,test_ramp_up_constraints,test_ramp_up_and_down_constraints,2horizons,2horizons_w_hydro,2horizons_w_hydro_and_nuclear_binary_availability,2horizons_w_hydro_w_balancing_types,2periods,2periods_gen_lin_econ_retirement,2periods_gen_bin_econ_retirement,2periods_new_build,2periods_new_build_2zones,2periods_new_build_2zones_singleBA,2periods_new_build_2zones_transmission,2periods_new_build_2zones_transmission_w_losses,2periods_new_build_2zones_transmission_w_losses_opp_dir,2periods_new_build_2zones_new_build_transmission,2periods_new_build_cumulative_min_max,2periods_new_build_rps,2periods_new_build_rps_variable_reserves,2periods_new_build_rps_variable_reserves_subhourly_adj,2periods_new_build_rps_w_rps_eligible_storage,2periods_new_build_rps_w_rps_ineligible_storage,2periods_new_build_simple_prm,test_new_solar_carbon_cap_2zones_dont_count_tx,test_new_solar_carbon_cap_2zones_tx,single_stage_prod_cost,multi_stage_prod_cost,multi_stage_prod_cost_w_hydro,single_stage_prod_cost_cycle_select,test_tx_simple,test_tx_dcopf,2periods_new_build_local_capacity,test_startup_shutdown_rates,test_no_fuels,test_variable_om_curves,test_aux_cons,2periods_new_build_rps_percent_target,single_stage_prod_cost_linked_subproblems,multi_stage_prod_cost_linked_subproblems,test_w_lf_down_percent_req,2periods_new_build_capgroups,test_markets,2periods_new_build_horizon_energy_target,2periods_new_build_period_and_horizon_energy_target,2periods_new_build_horizon_energy_target_halfyear,test_new_build_gen_var_stor_hyb,test_carbon_tax_allowance,test_min_max_build_trans,2periods_new_build_2zones_transmission_Tx1halfavail,2periods_new_build_2zones_transmission_Tx1halfavailmonthly,test_cheap_fuel_blend,test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend,test_cheap_fuel_blend_w_limit,test_new_solar_fuel_burn_limit,test_new_solar_fuel_burn_limit_relative,test_w_solver_options,test_carbon_tax_allowance_with_different_fuel_groups,test_performance_standard,test_tx_flow,test_new_solar_reserve_prj_contribution,test_new_solar_carbon_cap_2zones_tx_hydrogen_prod,test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new,test_new_solar_carbon_cap_dac,test_cap_factor_limits,multi_stage_prod_cost_w_markets -of_transmission,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,, -of_transmission_hurdle_rates,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_simultaneous_flow_limits,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +optional_feature_or_subscenarios,test,test_w_storage,test_w_hydro,test_new_solar,test_new_binary_solar,test_new_build_storage,test_new_build_storage_cumulative_min_max,test_new_binary_build_storage,test_no_overgen_allowed,test_no_reserves,test_variable_gen_reserves,test_new_solar_carbon_cap,test_new_solar_carbon_tax,test_ramp_up_constraints,test_ramp_up_and_down_constraints,2horizons,2horizons_w_hydro,2horizons_w_hydro_and_nuclear_binary_availability,2horizons_w_hydro_w_balancing_types,2periods,2periods_gen_lin_econ_retirement,2periods_gen_bin_econ_retirement,2periods_new_build,2periods_new_build_2zones,2periods_new_build_2zones_singleBA,2periods_new_build_2zones_transmission,2periods_new_build_2zones_transmission_w_losses,2periods_new_build_2zones_transmission_w_losses_opp_dir,2periods_new_build_2zones_new_build_transmission,2periods_new_build_cumulative_min_max,2periods_new_build_rps,2periods_new_build_rps_variable_reserves,2periods_new_build_rps_variable_reserves_subhourly_adj,2periods_new_build_rps_w_rps_eligible_storage,2periods_new_build_rps_w_rps_ineligible_storage,2periods_new_build_simple_prm,test_new_solar_carbon_cap_2zones_dont_count_tx,test_new_solar_carbon_cap_2zones_tx,single_stage_prod_cost,multi_stage_prod_cost,multi_stage_prod_cost_w_hydro,single_stage_prod_cost_cycle_select,test_tx_simple,test_tx_dcopf,2periods_new_build_local_capacity,test_startup_shutdown_rates,test_no_fuels,test_variable_om_curves,test_aux_cons,2periods_new_build_rps_percent_target,single_stage_prod_cost_linked_subproblems,multi_stage_prod_cost_linked_subproblems,test_w_lf_down_percent_req,2periods_new_build_capgroups,test_markets,2periods_new_build_horizon_energy_target,2periods_new_build_period_and_horizon_energy_target,2periods_new_build_horizon_energy_target_halfyear,test_new_build_gen_var_stor_hyb,test_carbon_tax_allowance,test_min_max_build_trans,2periods_new_build_2zones_transmission_Tx1halfavail,2periods_new_build_2zones_transmission_Tx1halfavailmonthly,test_cheap_fuel_blend,test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend,test_cheap_fuel_blend_w_limit,test_new_solar_fuel_burn_limit,test_new_solar_fuel_burn_limit_relative,test_w_solver_options,test_carbon_tax_allowance_with_different_fuel_groups,test_performance_standard,test_tx_flow,test_new_solar_reserve_prj_contribution,test_new_solar_carbon_cap_2zones_tx_hydrogen_prod,test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new,test_new_solar_carbon_cap_dac,test_cap_factor_limits,multi_stage_prod_cost_w_markets,test_supplemental_firing,test_tx_capacity_groups +of_transmission,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,,,,1 +of_transmission_hurdle_rates,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_simultaneous_flow_limits,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, of_lf_reserves_up,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,"1 -",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -of_lf_reserves_down,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -of_regulation_up,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -of_regulation_down,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -of_frequency_response,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_spinning_reserves,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_period_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,, -of_horizon_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,, -of_carbon_cap,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,, -of_track_carbon_imports,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,, -of_carbon_tax,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,, -of_performance_standard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, -of_fuel_burn_limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,, -of_prm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_local_capacity,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_elcc_surface,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_markets,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1 -of_tuning,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -temporal_scenario_id,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,4,5,5,4,1,1,6,7,1,1,1,6,8,9,1,6,1,6,6,6,3,1,6,6,6,1,1,1,1,1,1,1,1,1,1,10,10,1,1,5 -load_zone_scenario_id,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,1,1,1,1,1,2,4,1,2,2,1,1,1 -load_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,2,1,1,1,1,1,1,1,1,2,4,1,1,1,3,1,1,1,2,1,3,3,3,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -project_portfolio_scenario_id,1,2,3,4,5,6,6,7,1,1,1,4,4,1,1,1,3,3,3,1,8,9,10,11,11,12,12,12,12,10,13,13,13,14,14,10,15,15,1,1,3,1,16,16,10,17,1,1,1,13,1,1,1,10,1,13,13,13,18,4,12,12,12,1,15,1,4,4,1,4,15,16,4,19,20,21,1,1 -project_operational_chars_scenario_id,1,1,1,1,1,1,1,1,1,1,2,1,1,3,4,1,5,10,6,1,1,1,1,1,1,1,1,1,1,1,1,7,7,8,8,1,1,1,7,1,9,18,1,1,1,11,12,13,14,1,7,7,1,1,1,1,1,1,1,15,1,1,1,15,16,17,1,1,1,17,16,1,1,19,19,1,20,1 -project_availability_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -project_load_zone_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -project_elcc_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_specified_capacity_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,3,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,3,1,4,4,1,1,1 -project_specified_fixed_cost_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -fuel_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1 -fuel_price_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -project_new_cost_scenario_id,,,,1,1,1,1,1,,,,1,1,,,,,,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,1,1,1,,,,,1,,,,1,,1,1,1,1,1,1,1,1,,1,,1,1,,1,1,1,1,1,1,1,, -project_new_potential_scenario_id,,,,1,,,1,,,,,2,2,,,,,,,,,,,,,,,,,1,,,,,,,2,2,,,,,2,2,,,,,,,,,,,,,,,,2,,,,,2,,2,2,,2,2,2,1,2,2,2,, -project_new_binary_build_size_scenario_id,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -project_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -transmission_portfolio_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,2,,,,,,,,1,1,,,,,3,3,,,,,,,,,,,,,,,,,2,1,1,,1,,,,,,1,3,,1,1,,, -transmission_load_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,2,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,, -transmission_specified_capacity_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,, -transmission_availability_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,2,3,,1,,,,,,1,1,,1,1,,, -transmission_operational_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,3,3,1,,,,,,,,1,1,,,,,1,2,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,, -transmission_hurdle_rate_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_new_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -transmission_new_potential_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -transmission_flow_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,, -transmission_carbon_cap_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,, -transmission_simultaneous_flow_limit_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_simultaneous_flow_limit_line_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -lf_reserves_up_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,,,1,1,1 -lf_reserves_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -project_lf_reserves_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1 -lf_reserves_down_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -lf_reserves_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -project_lf_reserves_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1 -regulation_up_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -regulation_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -project_regulation_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1 -regulation_down_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -regulation_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1 -project_regulation_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1 -frequency_response_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -frequency_response_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_frequency_response_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -spinning_reserves_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -period_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,2,,,,,,,1,,,,,,,,,,,,,,,,,,,,, -horizon_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,3,,,,,,,,,,,,,,,,,,,, -energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,, -project_energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,2,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,, -carbon_cap_target_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,2,2,1,, -carbon_cap_zone_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,, -project_carbon_cap_zone_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,, -carbon_tax_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,, -carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,, -project_carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,, -project_carbon_tax_allowance_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,, -performance_standard_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, -performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, -project_performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, -fuel_burn_limit_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2,,,,,,3,3,,, -fuel_burn_limit_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,, -project_fuel_burn_limit_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,, -prm_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_energy_only_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -elcc_surface_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -local_capacity_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -local_capacity_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_local_capacity_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_local_capacity_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -tuning_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -solver_options_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, -market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2 -load_zone_market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2 -market_price_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1 -market_volume_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1 \ No newline at end of file +",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +of_lf_reserves_down,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +of_regulation_up,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +of_regulation_down,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +of_frequency_response,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_spinning_reserves,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_period_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, +of_horizon_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,, +of_carbon_cap,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,,,, +of_track_carbon_imports,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,,,, +of_carbon_tax,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,, +of_performance_standard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +of_fuel_burn_limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,, +of_prm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_local_capacity,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_elcc_surface,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_markets,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,, +of_tuning,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +temporal_scenario_id,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,4,5,5,4,1,1,6,7,1,1,1,6,8,9,1,6,1,6,6,6,3,1,6,6,6,1,1,1,1,1,1,1,1,1,1,10,10,1,1,5,1,6 +load_zone_scenario_id,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,1,1,1,1,1,2,4,1,2,2,1,1,1,1,2 +load_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,2,1,1,1,1,1,1,1,1,2,4,1,1,1,3,1,1,1,2,1,3,3,3,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 +project_portfolio_scenario_id,1,2,3,4,5,6,6,7,1,1,1,4,4,1,1,1,3,3,3,1,8,9,10,11,11,12,12,12,12,10,13,13,13,14,14,10,15,15,1,1,3,1,16,16,10,17,1,1,1,13,1,1,1,10,1,13,13,13,18,4,12,12,12,1,15,1,4,4,1,4,15,16,4,19,20,21,1,1,1,12 +project_operational_chars_scenario_id,1,1,1,1,1,1,1,1,1,1,2,1,1,3,4,1,5,10,6,1,1,1,1,1,1,1,1,1,1,1,1,7,7,8,8,1,1,1,7,1,9,18,1,1,1,11,12,13,14,1,7,7,1,1,1,1,1,1,1,15,1,1,1,15,16,17,1,1,1,17,16,1,1,19,19,1,20,1,21,1 +project_availability_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +project_load_zone_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +project_elcc_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_specified_capacity_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,3,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1 +project_specified_fixed_cost_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +fuel_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1 +fuel_price_scenario_id,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +project_new_cost_scenario_id,,,,1,1,1,1,1,,,,1,1,,,,,,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,1,1,1,,,,,1,,,,1,,1,1,1,1,1,1,1,1,,1,,1,1,,1,1,1,1,1,1,1,,,,1 +project_new_potential_scenario_id,,,,1,,,1,,,,,2,2,,,,,,,,,,,,,,,,,1,,,,,,,2,2,,,,,2,2,,,,,,,,,,,,,,,,2,,,,,2,,2,2,,2,2,2,1,2,2,2,,,, +project_new_binary_build_size_scenario_id,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +project_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_portfolio_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,2,,,,,,,,1,1,,,,,3,3,,,,,,,,,,,,,,,,,2,1,1,,1,,,,,,1,3,,1,1,,,,,4 +transmission_load_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,2,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,,,,1 +transmission_specified_capacity_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,,,,1 +transmission_availability_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,1,2,3,,1,,,,,,1,1,,1,1,,,,,1 +transmission_operational_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,3,3,1,,,,,,,,1,1,,,,,1,2,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,,,,1 +transmission_hurdle_rate_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_new_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1 +transmission_new_potential_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1 +transmission_flow_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,, +transmission_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +transmission_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +transmission_carbon_cap_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,,,, +transmission_simultaneous_flow_limit_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_simultaneous_flow_limit_line_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +lf_reserves_up_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,,,1,1,1,1,1 +lf_reserves_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,3 +project_lf_reserves_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1,1,1 +lf_reserves_down_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +lf_reserves_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,3 +project_lf_reserves_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1,1,1 +regulation_up_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +regulation_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,3 +project_regulation_up_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1,1,1 +regulation_down_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1 +regulation_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,3,3,3,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,3 +project_regulation_down_ba_scenario_id,1,1,1,1,1,1,1,1,1,,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,4,4,5,5,1,5,5,1,1,5,1,5,5,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,5,5,1,,,1,1,1,1,1 +frequency_response_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +frequency_response_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_frequency_response_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +spinning_reserves_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +period_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,2,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, +horizon_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,3,,,,,,,,,,,,,,,,,,,,,, +energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,, +project_energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,2,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,, +carbon_cap_target_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,2,2,1,,,, +carbon_cap_zone_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,,,, +project_carbon_cap_zone_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,,,, +carbon_tax_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,, +carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,, +project_carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,, +project_carbon_tax_allowance_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,, +performance_standard_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +project_performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +fuel_burn_limit_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2,,,,,,3,3,,,,, +fuel_burn_limit_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,, +project_fuel_burn_limit_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,, +prm_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_energy_only_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +elcc_surface_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +local_capacity_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +local_capacity_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_local_capacity_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_local_capacity_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +tuning_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +solver_options_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,, +load_zone_market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,, +market_price_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,, +market_volume_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,, \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/availability/1_base.csv b/db/csvs_test_examples/transmission/availability/1_base.csv index 7a0d25514..96de71fd5 100644 --- a/db/csvs_test_examples/transmission/availability/1_base.csv +++ b/db/csvs_test_examples/transmission/availability/1_base.csv @@ -2,4 +2,5 @@ transmission_line,availability_type,exogenous_availability_scenario_id,endogenou Tx1,exogenous,, Tx2,exogenous,, Tx3,exogenous,, -Tx_new,exogenous,, \ No newline at end of file +Tx_new,exogenous,, +Tx2_new,exogenous,, \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/transmission_capacity_groups/requirements/1_base_cap_group_reqs.csv b/db/csvs_test_examples/transmission/transmission_capacity_groups/requirements/1_base_cap_group_reqs.csv new file mode 100644 index 000000000..42dfcb1fd --- /dev/null +++ b/db/csvs_test_examples/transmission/transmission_capacity_groups/requirements/1_base_cap_group_reqs.csv @@ -0,0 +1,3 @@ +transmission_capacity_group,period,transmission_capacity_group_new_capacity_min,transmission_capacity_group_new_capacity_max +Tx_Capacity_Group1,2020,,25 +Tx_Capacity_Group1,2030,31, \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/transmission_capacity_groups/transmission_lines/1_base_cap_groups.csv b/db/csvs_test_examples/transmission/transmission_capacity_groups/transmission_lines/1_base_cap_groups.csv new file mode 100644 index 000000000..e5283f182 --- /dev/null +++ b/db/csvs_test_examples/transmission/transmission_capacity_groups/transmission_lines/1_base_cap_groups.csv @@ -0,0 +1,3 @@ +transmission_capacity_group,transmission_line +Tx_Capacity_Group1,Tx_new +Tx_Capacity_Group1,Tx2_new \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/transmission_load_zones/1_transmission_load_zones_1.csv b/db/csvs_test_examples/transmission/transmission_load_zones/1_transmission_load_zones_1.csv index 5f28110bc..9b225c164 100644 --- a/db/csvs_test_examples/transmission/transmission_load_zones/1_transmission_load_zones_1.csv +++ b/db/csvs_test_examples/transmission/transmission_load_zones/1_transmission_load_zones_1.csv @@ -2,4 +2,5 @@ transmission_line,load_zone_from,load_zone_to Tx1,Zone1,Zone2 Tx_new,Zone1,Zone2 Tx2,Zone2,Zone3 -Tx3,Zone1,Zone3 \ No newline at end of file +Tx3,Zone1,Zone3 +Tx2_new,Zone1,Zone2 \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/transmission_new_cost/1_transmission_new_cost_1.csv b/db/csvs_test_examples/transmission/transmission_new_cost/1_transmission_new_cost_1.csv index 8b7dfd6e3..8adaa2251 100644 --- a/db/csvs_test_examples/transmission/transmission_new_cost/1_transmission_new_cost_1.csv +++ b/db/csvs_test_examples/transmission/transmission_new_cost/1_transmission_new_cost_1.csv @@ -1,3 +1,5 @@ transmission_line,vintage,tx_lifetime_yrs,tx_annualized_real_cost_per_mw_yr Tx_new,2020,35,10 -Tx_new,2030,35,10 \ No newline at end of file +Tx_new,2030,35,10 +Tx2_new,2020,35,11 +Tx2_new,2030,35,11 \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/transmission_operational_chars/1_tx_simple.csv b/db/csvs_test_examples/transmission/transmission_operational_chars/1_tx_simple.csv index 6d91022e2..fc4fe9b15 100644 --- a/db/csvs_test_examples/transmission/transmission_operational_chars/1_tx_simple.csv +++ b/db/csvs_test_examples/transmission/transmission_operational_chars/1_tx_simple.csv @@ -2,4 +2,5 @@ transmission_line,operational_type,tx_simple_loss_factor,reactance_ohms Tx1,tx_simple,, Tx_new,tx_simple,, Tx2,tx_simple,, -Tx3,tx_simple,, \ No newline at end of file +Tx3,tx_simple,, +Tx2_new,tx_simple,, \ No newline at end of file diff --git a/db/csvs_test_examples/transmission/transmission_portfolios/4_transmission_portfolios_2new.csv b/db/csvs_test_examples/transmission/transmission_portfolios/4_transmission_portfolios_2new.csv new file mode 100644 index 000000000..f0c4e3471 --- /dev/null +++ b/db/csvs_test_examples/transmission/transmission_portfolios/4_transmission_portfolios_2new.csv @@ -0,0 +1,3 @@ +transmission_line,capacity_type +Tx_new,tx_new_lin +Tx2_new,tx_new_lin \ No newline at end of file diff --git a/db/data/viz_technologies.csv b/db/data/viz_technologies.csv index 73eda43b9..b2f4960b0 100644 --- a/db/data/viz_technologies.csv +++ b/db/data/viz_technologies.csv @@ -1 +1 @@ -technology,color,plotting_order Nuclear,purple,1 unspecified,ghostwhite,2 Coal,dimgrey,3 CHP,darkkhaki,4 Geothermal,yellowgreen,5 Biomass,olivedrab,6 Small_Hydro,mediumaquamarine,7 Steam,whitesmoke,8 CCGT,lightgrey,9 Hydro,darkblue,10 Peaker,grey,11 Wind,deepskyblue,13 Solar_BTM,orange,14 Solar,gold,15 Pumped_Storage,darkslategrey,16 Battery,teal,17 Curtailment_Variable,indianred,18 Curtailment_Hydro,firebrick,19 Imports,darkgrey,12 Unserved_Energy,red,20 \ No newline at end of file +technology,color,plotting_order Nuclear,purple,1 unspecified,ghostwhite,2 Coal,dimgrey,3 CHP,darkkhaki,4 Geothermal,yellowgreen,5 Biomass,olivedrab,6 Small_Hydro,mediumaquamarine,7 Steam,whitesmoke,8 CCGT,lightgrey,9 Hydro,darkblue,10 Peaker,grey,11 Wind,deepskyblue,14 Solar_BTM,orange,15 Solar,gold,16 Pumped_Storage,darkslategrey,17 Battery,teal,18 Curtailment_Variable,indianred,19 Curtailment_Hydro,firebrick,20 Imports,darkgrey,12 Market_Purchases,darkgrey,13 Unserved_Energy,red,22 \ No newline at end of file diff --git a/db/db_schema.sql b/db/db_schema.sql index 475a94102..2edc312f8 100644 --- a/db/db_schema.sql +++ b/db/db_schema.sql @@ -982,6 +982,7 @@ min_up_time_violation_penalty FLOAT, -- leave NULL for hard constraint min_down_time_hours INTEGER, min_down_time_violation_penalty FLOAT, -- leave NULL for hard constraint cycle_selection_scenario_id INTEGER, +supplemental_firing_scenario_id INTEGER, charging_efficiency FLOAT, discharging_efficiency FLOAT, charging_capacity_multiplier FLOAT, -- default 1 in model if not specified @@ -1024,6 +1025,9 @@ subscenarios_project_variable_om_curves FOREIGN KEY (project, cycle_selection_scenario_id) REFERENCES subscenarios_project_cycle_selection (project, cycle_selection_scenario_id), +FOREIGN KEY (project, supplemental_firing_scenario_id) REFERENCES +subscenarios_project_supplemental_firing +(project, supplemental_firing_scenario_id), FOREIGN KEY (project, variable_generator_profile_scenario_id) REFERENCES subscenarios_project_variable_generator_profiles (project, variable_generator_profile_scenario_id), @@ -1152,6 +1156,27 @@ subscenarios_project_cycle_selection (project, cycle_selection_scenario_id) ); +-- Supplemental firing +DROP TABLE IF EXISTS subscenarios_project_supplemental_firing; +CREATE TABLE subscenarios_project_supplemental_firing ( +project VARCHAR(32), +supplemental_firing_scenario_id INTEGER, +name VARCHAR(32), +description VARCHAR(128), +PRIMARY KEY (project, supplemental_firing_scenario_id) +); + +DROP TABLE IF EXISTS inputs_project_supplemental_firing; +CREATE TABLE inputs_project_supplemental_firing ( +project VARCHAR(64), +supplemental_firing_scenario_id INTEGER, +supplemental_firing_project VARCHAR(64), +PRIMARY KEY (project, supplemental_firing_scenario_id, supplemental_firing_project), +FOREIGN KEY (project, supplemental_firing_scenario_id) REFERENCES +subscenarios_project_supplemental_firing (project, supplemental_firing_scenario_id) +); + + -- Variable generator profiles -- TODO: this is not exactly a subscenario, as a variable profile will be @@ -1271,6 +1296,7 @@ exogenous_availability_scenario_id INTEGER, stage_id INTEGER, timepoint INTEGER, availability_derate FLOAT, +hyb_stor_cap_availability_derate FLOAT, PRIMARY KEY (project, exogenous_availability_scenario_id, stage_id, timepoint), FOREIGN KEY (project, exogenous_availability_scenario_id) REFERENCES subscenarios_project_availability_exogenous @@ -2029,6 +2055,49 @@ FOREIGN KEY (transmission_hurdle_rate_scenario_id) REFERENCES subscenarios_transmission_hurdle_rates (transmission_hurdle_rate_scenario_id) ); +-- Group capacity requirements +-- Requirements +DROP TABLE IF EXISTS subscenarios_transmission_capacity_group_requirements; +CREATE TABLE subscenarios_transmission_capacity_group_requirements ( +transmission_capacity_group_requirement_scenario_id INTEGER PRIMARY KEY + AUTOINCREMENT, +name VARCHAR(32), +description VARCHAR(128) +); + +DROP TABLE IF EXISTS inputs_transmission_capacity_group_requirements; +CREATE TABLE inputs_transmission_capacity_group_requirements ( +transmission_capacity_group_requirement_scenario_id INTEGER, +transmission_capacity_group VARCHAR(64), +period INTEGER, +transmission_capacity_group_new_capacity_min FLOAT, +transmission_capacity_group_new_capacity_max FLOAT, +PRIMARY KEY (transmission_capacity_group_requirement_scenario_id, + transmission_capacity_group, period), +FOREIGN KEY (transmission_capacity_group_requirement_scenario_id) REFERENCES +subscenarios_transmission_capacity_group_requirements + (transmission_capacity_group_requirement_scenario_id) +); + + +-- Group transmission lines mapping +DROP TABLE IF EXISTS subscenarios_transmission_capacity_groups; +CREATE TABLE subscenarios_transmission_capacity_groups ( +transmission_capacity_group_scenario_id INTEGER PRIMARY KEY AUTOINCREMENT, +name VARCHAR(32), +description VARCHAR(128) +); + +DROP TABLE IF EXISTS inputs_transmission_capacity_groups; +CREATE TABLE inputs_transmission_capacity_groups ( +transmission_capacity_group_scenario_id INTEGER, +transmission_capacity_group VARCHAR(64), +transmission_line VARCHAR(64), +PRIMARY KEY (transmission_capacity_group_scenario_id, transmission_capacity_group, transmission_line), +FOREIGN KEY (transmission_capacity_group_scenario_id) REFERENCES +subscenarios_transmission_capacity_groups (transmission_capacity_group_scenario_id) +); + -- Simultaneous flows -- Limits on net flows on groups of lines (e.g. all lines connected to a zone) DROP TABLE IF EXISTS subscenarios_transmission_simultaneous_flow_limits; @@ -2160,8 +2229,9 @@ DROP TABLE IF EXISTS inputs_system_lf_reserves_up_percent; CREATE TABLE inputs_system_lf_reserves_up_percent ( lf_reserves_up_scenario_id INTEGER, lf_reserves_up_ba VARCHAR(32), +stage_id INTEGER, percent_load_req FLOAT, -PRIMARY KEY (lf_reserves_up_scenario_id, lf_reserves_up_ba) +PRIMARY KEY (lf_reserves_up_scenario_id, lf_reserves_up_ba, stage_id) ); DROP TABLE IF EXISTS inputs_system_lf_reserves_up_percent_lz_map; @@ -2179,10 +2249,11 @@ DROP TABLE IF EXISTS inputs_system_lf_reserves_up_project; CREATE TABLE inputs_system_lf_reserves_up_project ( lf_reserves_up_scenario_id INTEGER, lf_reserves_up_ba VARCHAR(32), +stage_id INTEGER, project VARCHAR(64), percent_power_req FLOAT, percent_capacity_req FLOAT, -PRIMARY KEY (lf_reserves_up_scenario_id, lf_reserves_up_ba, project) +PRIMARY KEY (lf_reserves_up_scenario_id, lf_reserves_up_ba, stage_id, project) ); -- LF reserves down @@ -2217,8 +2288,9 @@ DROP TABLE IF EXISTS inputs_system_lf_reserves_down_percent; CREATE TABLE inputs_system_lf_reserves_down_percent ( lf_reserves_down_scenario_id INTEGER, lf_reserves_down_ba VARCHAR(32), +stage_id INTEGER, percent_load_req FLOAT, -PRIMARY KEY (lf_reserves_down_scenario_id, lf_reserves_down_ba) +PRIMARY KEY (lf_reserves_down_scenario_id, lf_reserves_down_ba, stage_id) ); DROP TABLE IF EXISTS inputs_system_lf_reserves_down_percent_lz_map; @@ -2236,10 +2308,11 @@ DROP TABLE IF EXISTS inputs_system_lf_reserves_down_project; CREATE TABLE inputs_system_lf_reserves_down_project ( lf_reserves_down_scenario_id INTEGER, lf_reserves_down_ba VARCHAR(32), +stage_id INTEGER, project VARCHAR(64), percent_power_req FLOAT, percent_capacity_req FLOAT, -PRIMARY KEY (lf_reserves_down_scenario_id, lf_reserves_down_ba, project) +PRIMARY KEY (lf_reserves_down_scenario_id, lf_reserves_down_ba, stage_id, project) ); -- Regulation up @@ -2273,8 +2346,9 @@ DROP TABLE IF EXISTS inputs_system_regulation_down_percent; CREATE TABLE inputs_system_regulation_down_percent ( regulation_down_scenario_id INTEGER, regulation_down_ba VARCHAR(32), +stage_id INTEGER, percent_load_req FLOAT, -PRIMARY KEY (regulation_down_scenario_id, regulation_down_ba) +PRIMARY KEY (regulation_down_scenario_id, regulation_down_ba, stage_id) ); DROP TABLE IF EXISTS inputs_system_regulation_down_percent_lz_map; @@ -2292,10 +2366,11 @@ DROP TABLE IF EXISTS inputs_system_regulation_down_project; CREATE TABLE inputs_system_regulation_down_project ( regulation_down_scenario_id INTEGER, regulation_down_ba VARCHAR(32), +stage_id INTEGER, project VARCHAR(64), percent_power_req FLOAT, percent_capacity_req FLOAT, -PRIMARY KEY (regulation_down_scenario_id, regulation_down_ba, project) +PRIMARY KEY (regulation_down_scenario_id, regulation_down_ba, stage_id, project) ); -- Regulation down @@ -2330,8 +2405,9 @@ DROP TABLE IF EXISTS inputs_system_regulation_up_percent; CREATE TABLE inputs_system_regulation_up_percent ( regulation_up_scenario_id INTEGER, regulation_up_ba VARCHAR(32), +stage_id INTEGER, percent_load_req FLOAT, -PRIMARY KEY (regulation_up_scenario_id, regulation_up_ba) +PRIMARY KEY (regulation_up_scenario_id, regulation_up_ba, stage_id) ); DROP TABLE IF EXISTS inputs_system_regulation_up_percent_lz_map; @@ -2349,10 +2425,11 @@ DROP TABLE IF EXISTS inputs_system_regulation_up_project; CREATE TABLE inputs_system_regulation_up_project ( regulation_up_scenario_id INTEGER, regulation_up_ba VARCHAR(32), +stage_id INTEGER, project VARCHAR(64), percent_power_req FLOAT, percent_capacity_req FLOAT, -PRIMARY KEY (regulation_up_scenario_id, regulation_up_ba, project) +PRIMARY KEY (regulation_up_scenario_id, regulation_up_ba, stage_id, project) ); @@ -2389,8 +2466,9 @@ DROP TABLE IF EXISTS inputs_system_frequency_response_percent; CREATE TABLE inputs_system_frequency_response_percent ( frequency_response_scenario_id INTEGER, frequency_response_ba VARCHAR(32), +stage_id INTEGER, percent_load_req FLOAT, -PRIMARY KEY (frequency_response_scenario_id, frequency_response_ba) +PRIMARY KEY (frequency_response_scenario_id, frequency_response_ba, stage_id) ); DROP TABLE IF EXISTS inputs_system_frequency_response_percent_lz_map; @@ -2408,10 +2486,11 @@ DROP TABLE IF EXISTS inputs_system_frequency_response_project; CREATE TABLE inputs_system_frequency_response_project ( frequency_response_scenario_id INTEGER, frequency_response_ba VARCHAR(32), +stage_id INTEGER, project VARCHAR(64), percent_power_req FLOAT, percent_capacity_req FLOAT, -PRIMARY KEY (frequency_response_scenario_id, frequency_response_ba, project) +PRIMARY KEY (frequency_response_scenario_id, frequency_response_ba, stage_id, project) ); -- Spinning reserves @@ -2446,8 +2525,9 @@ DROP TABLE IF EXISTS inputs_system_spinning_reserves_percent; CREATE TABLE inputs_system_spinning_reserves_percent ( spinning_reserves_scenario_id INTEGER, spinning_reserves_ba VARCHAR(32), +stage_id INTEGER, percent_load_req FLOAT, -PRIMARY KEY (spinning_reserves_scenario_id, spinning_reserves_ba) +PRIMARY KEY (spinning_reserves_scenario_id, spinning_reserves_ba, stage_id) ); DROP TABLE IF EXISTS inputs_system_spinning_reserves_percent_lz_map; @@ -2465,10 +2545,11 @@ DROP TABLE IF EXISTS inputs_system_spinning_reserves_project; CREATE TABLE inputs_system_spinning_reserves_project ( spinning_reserves_scenario_id INTEGER, spinning_reserves_ba VARCHAR(32), +stage_id INTEGER, project VARCHAR(64), percent_power_req FLOAT, percent_capacity_req FLOAT, -PRIMARY KEY (spinning_reserves_scenario_id, spinning_reserves_ba, project) +PRIMARY KEY (spinning_reserves_scenario_id, spinning_reserves_ba, stage_id, project) ); -- -- Policy -- -- @@ -2817,6 +2898,8 @@ transmission_operational_chars_scenario_id INTEGER, transmission_hurdle_rate_scenario_id INTEGER, transmission_new_potential_scenario_id INTEGER, transmission_flow_scenario_id INTEGER, +transmission_capacity_group_requirement_scenario_id INTEGER, +transmission_capacity_group_scenario_id INTEGER, transmission_carbon_cap_zone_scenario_id INTEGER, transmission_simultaneous_flow_limit_scenario_id INTEGER, transmission_simultaneous_flow_limit_line_group_scenario_id INTEGER, @@ -2982,6 +3065,12 @@ FOREIGN KEY (transmission_new_potential_scenario_id) REFERENCES subscenarios_transmission_new_potential (transmission_new_potential_scenario_id), FOREIGN KEY (transmission_flow_scenario_id) REFERENCES subscenarios_transmission_flow (transmission_flow_scenario_id), +FOREIGN KEY (transmission_capacity_group_scenario_id) REFERENCES + subscenarios_transmission_capacity_groups + (transmission_capacity_group_scenario_id), +FOREIGN KEY (transmission_capacity_group_requirement_scenario_id) REFERENCES + subscenarios_transmission_capacity_group_requirements + (transmission_capacity_group_requirement_scenario_id), FOREIGN KEY (transmission_carbon_cap_zone_scenario_id) REFERENCES subscenarios_transmission_carbon_cap_zones (transmission_carbon_cap_zone_scenario_id), @@ -3685,6 +3774,19 @@ new_build_transmission_capacity_mw FLOAT, PRIMARY KEY (scenario_id, transmission_line, period, subproblem_id, stage_id) ); +DROP TABLE IF EXISTS results_transmission_group_capacity; +CREATE TABLE results_transmission_group_capacity ( +scenario_id INTEGER, +subproblem_id INTEGER, +stage_id INTEGER, +transmission_capacity_group VARCHAR(64), +period INTEGER, +group_new_capacity FLOAT, +transmission_capacity_group_new_capacity_min FLOAT, +transmission_capacity_group_new_capacity_max FLOAT, +PRIMARY KEY (scenario_id, subproblem_id, stage_id, transmission_capacity_group, period) +); + -- TODO: add table for costs new build? DROP TABLE IF EXISTS results_transmission_costs_capacity; CREATE TABLE results_transmission_costs_capacity ( @@ -3871,6 +3973,10 @@ number_of_hours_in_timepoint FLOAT, spinup_or_lookahead INTEGER, sell_power FLOAT, buy_power FLOAT, +net_buy_power FLOAT, +final_sell_power FLOAT, +final_buy_power FLOAT, +final_net_buy_power FLOAT, PRIMARY KEY (scenario_id, load_zone, market, subproblem_id, stage_id, timepoint) ); diff --git a/doc/source/advanced_docs.rst b/doc/source/advanced_docs.rst index ea05cf313..1595d4486 100644 --- a/doc/source/advanced_docs.rst +++ b/doc/source/advanced_docs.rst @@ -163,9 +163,9 @@ gridpath.project.operations.fuel_burn .. automodule:: gridpath.project.operations.fuel_burn :members: add_model_components -gridpath.project.operations.recs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. automodule:: gridpath.project.operations.recs +gridpath.project.operations.energy_target_contributions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. automodule:: gridpath.project.operations.energy_target_contributions :members: add_model_components gridpath.project.operations.tuning_costs @@ -343,13 +343,13 @@ Transmission Hurdle Rates If the transmission hurdle rates feature is enabled, the following modules are also included: -gridpath.transmission.operations.costs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. automodule:: gridpath.transmission.operations.costs +gridpath.transmission.operations.hurdle_costs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. automodule:: gridpath.transmission.operations.hurdle_costs -gridpath.objective.transmission.aggregate_operational_costs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. automodule:: gridpath.objective.transmission.aggregate_operational_costs +gridpath.objective.transmission.aggregate_hurdle_costs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. automodule:: gridpath.objective.transmission.aggregate_hurdle_costs diff --git a/doc/source/architecture.rst b/doc/source/architecture.rst index 886b26a87..902b959f5 100644 --- a/doc/source/architecture.rst +++ b/doc/source/architecture.rst @@ -35,9 +35,8 @@ Running a Scenario gridpath.run_scenario ===================== .. automodule:: gridpath.run_scenario - :members: main, parse_arguments, ScenarioStructure, run_scenario, - run_optimization, create_and_solve_problem, - create_abstract_model, + :members: main, parse_arguments, run_scenario, run_optimization_for_subproblem, + create_and_solve_problem, create_abstract_model, load_scenario_data, create_problem_instance, fix_variables, solve diff --git a/doc/source/conf.py b/doc/source/conf.py index 65259cacf..971867acb 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -52,7 +52,7 @@ # General information about the project. project = "GridPath" -copyright = "2019, Blue Marble Analytics LLC" +copyright = "2016-2022, Blue Marble Analytics LLC" author = "Blue Marble Analytics LLC" # The version info for the project you're documenting, acts as replacement for diff --git a/doc/source/database.rst b/doc/source/database.rst index fef2ab15d..8c5590501 100644 --- a/doc/source/database.rst +++ b/doc/source/database.rst @@ -210,13 +210,13 @@ Fuel Inputs (OPTIONAL) Fuel Characteristics ******************** -.. automodule:: db.csvs_test_examples.fuels.project_fuels.doc +.. automodule:: db.csvs_test_examples.fuels.fuel_chars.doc Fuel Prices *********** -.. automodule:: db.csvs_test_examples.fuels.project_fuel_prices.doc +.. automodule:: db.csvs_test_examples.fuels.fuel_prices.doc ******************* Reserves (OPTIONAL) diff --git a/doc/temp/optional_features.rst b/doc/temp/optional_features.rst index 6605e20c8..97fffcd16 100644 --- a/doc/temp/optional_features.rst +++ b/doc/temp/optional_features.rst @@ -47,9 +47,9 @@ Transmission Hurdle Rates Whether or not to apply hurdle rates on transmission line flows. Feature modules include: -.. automodule:: gridpath.transmission.operations.costs +.. automodule:: gridpath.transmission.operations.hurdle_costs :members: -.. automodule:: gridpath.objective.transmission.aggregate_operational_costs +.. automodule:: gridpath.objective.transmission.aggregate_hurdle_costs :members: diff --git a/examples/2horizons/scenario_description.csv b/examples/2horizons/scenario_description.csv index dd1038995..0ba19d269 100644 --- a/examples/2horizons/scenario_description.csv +++ b/examples/2horizons/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2horizons_w_hydro/scenario_description.csv b/examples/2horizons_w_hydro/scenario_description.csv index faee238e1..8b8a971ad 100644 --- a/examples/2horizons_w_hydro/scenario_description.csv +++ b/examples/2horizons_w_hydro/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2horizons_w_hydro_and_nuclear_binary_availability/scenario_description.csv b/examples/2horizons_w_hydro_and_nuclear_binary_availability/scenario_description.csv index 6bb458827..1c30690ef 100644 --- a/examples/2horizons_w_hydro_and_nuclear_binary_availability/scenario_description.csv +++ b/examples/2horizons_w_hydro_and_nuclear_binary_availability/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2horizons_w_hydro_w_balancing_types/scenario_description.csv b/examples/2horizons_w_hydro_w_balancing_types/scenario_description.csv index a8aa37207..cc8d014de 100644 --- a/examples/2horizons_w_hydro_w_balancing_types/scenario_description.csv +++ b/examples/2horizons_w_hydro_w_balancing_types/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods/scenario_description.csv b/examples/2periods/scenario_description.csv index 4767887c2..17854f78e 100644 --- a/examples/2periods/scenario_description.csv +++ b/examples/2periods/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_gen_bin_econ_retirement/scenario_description.csv b/examples/2periods_gen_bin_econ_retirement/scenario_description.csv index 19efe37b3..4e71f5a7d 100644 --- a/examples/2periods_gen_bin_econ_retirement/scenario_description.csv +++ b/examples/2periods_gen_bin_econ_retirement/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_gen_lin_econ_retirement/scenario_description.csv b/examples/2periods_gen_lin_econ_retirement/scenario_description.csv index 55581ef21..eb1e5dda0 100644 --- a/examples/2periods_gen_lin_econ_retirement/scenario_description.csv +++ b/examples/2periods_gen_lin_econ_retirement/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build/scenario_description.csv b/examples/2periods_new_build/scenario_description.csv index 970fd42d7..58df812e0 100644 --- a/examples/2periods_new_build/scenario_description.csv +++ b/examples/2periods_new_build/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones/scenario_description.csv b/examples/2periods_new_build_2zones/scenario_description.csv index ff2e6c8b6..bd3035e63 100644 --- a/examples/2periods_new_build_2zones/scenario_description.csv +++ b/examples/2periods_new_build_2zones/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_new_build_transmission/inputs/transmission_flow.tab b/examples/2periods_new_build_2zones_new_build_transmission/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/2periods_new_build_2zones_new_build_transmission/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/2periods_new_build_2zones_new_build_transmission/scenario_description.csv b/examples/2periods_new_build_2zones_new_build_transmission/scenario_description.csv index b9df11613..a47143765 100644 --- a/examples/2periods_new_build_2zones_new_build_transmission/scenario_description.csv +++ b/examples/2periods_new_build_2zones_new_build_transmission/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_singleBA/scenario_description.csv b/examples/2periods_new_build_2zones_singleBA/scenario_description.csv index 37744bb4a..40375ba38 100644 --- a/examples/2periods_new_build_2zones_singleBA/scenario_description.csv +++ b/examples/2periods_new_build_2zones_singleBA/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_transmission/inputs/transmission_flow.tab b/examples/2periods_new_build_2zones_transmission/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/2periods_new_build_2zones_transmission/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/2periods_new_build_2zones_transmission/scenario_description.csv b/examples/2periods_new_build_2zones_transmission/scenario_description.csv index 6c9555c0d..fda1ef76c 100644 --- a/examples/2periods_new_build_2zones_transmission/scenario_description.csv +++ b/examples/2periods_new_build_2zones_transmission/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_transmission_Tx1halfavail/inputs/transmission_flow.tab b/examples/2periods_new_build_2zones_transmission_Tx1halfavail/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/2periods_new_build_2zones_transmission_Tx1halfavail/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/2periods_new_build_2zones_transmission_Tx1halfavail/scenario_description.csv b/examples/2periods_new_build_2zones_transmission_Tx1halfavail/scenario_description.csv index 191ae3a67..733b1cc11 100644 --- a/examples/2periods_new_build_2zones_transmission_Tx1halfavail/scenario_description.csv +++ b/examples/2periods_new_build_2zones_transmission_Tx1halfavail/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/inputs/transmission_flow.tab b/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/scenario_description.csv b/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/scenario_description.csv index 0407e0ec1..72e685210 100644 --- a/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/scenario_description.csv +++ b/examples/2periods_new_build_2zones_transmission_Tx1halfavailmonthly/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_transmission_w_losses/inputs/transmission_flow.tab b/examples/2periods_new_build_2zones_transmission_w_losses/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/2periods_new_build_2zones_transmission_w_losses/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/2periods_new_build_2zones_transmission_w_losses/scenario_description.csv b/examples/2periods_new_build_2zones_transmission_w_losses/scenario_description.csv index b3a62affb..33d2c07c2 100644 --- a/examples/2periods_new_build_2zones_transmission_w_losses/scenario_description.csv +++ b/examples/2periods_new_build_2zones_transmission_w_losses/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,3 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/inputs/transmission_flow.tab b/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/scenario_description.csv b/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/scenario_description.csv index 2204c5540..8ae7544cb 100644 --- a/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/scenario_description.csv +++ b/examples/2periods_new_build_2zones_transmission_w_losses_opp_dir/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,3 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_capgroups/scenario_description.csv b/examples/2periods_new_build_capgroups/scenario_description.csv index 7239c46da..beccd2434 100644 --- a/examples/2periods_new_build_capgroups/scenario_description.csv +++ b/examples/2periods_new_build_capgroups/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_cumulative_min_max/scenario_description.csv b/examples/2periods_new_build_cumulative_min_max/scenario_description.csv index ed9c8a90a..97e0abd78 100644 --- a/examples/2periods_new_build_cumulative_min_max/scenario_description.csv +++ b/examples/2periods_new_build_cumulative_min_max/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_horizon_energy_target/scenario_description.csv b/examples/2periods_new_build_horizon_energy_target/scenario_description.csv index eeda2da4d..521a53e56 100644 --- a/examples/2periods_new_build_horizon_energy_target/scenario_description.csv +++ b/examples/2periods_new_build_horizon_energy_target/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_horizon_energy_target_halfyear/scenario_description.csv b/examples/2periods_new_build_horizon_energy_target_halfyear/scenario_description.csv index eabb6fee5..8a862d043 100644 --- a/examples/2periods_new_build_horizon_energy_target_halfyear/scenario_description.csv +++ b/examples/2periods_new_build_horizon_energy_target_halfyear/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_local_capacity/scenario_description.csv b/examples/2periods_new_build_local_capacity/scenario_description.csv index 6ae7641e2..8dcf00aa9 100644 --- a/examples/2periods_new_build_local_capacity/scenario_description.csv +++ b/examples/2periods_new_build_local_capacity/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_rps/scenario_description.csv b/examples/2periods_new_build_rps/scenario_description.csv index 0e60ce63f..eb4092ca2 100644 --- a/examples/2periods_new_build_rps/scenario_description.csv +++ b/examples/2periods_new_build_rps/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_rps_percent_target/scenario_description.csv b/examples/2periods_new_build_rps_percent_target/scenario_description.csv index 4f5f7aec3..37ddf0dc1 100644 --- a/examples/2periods_new_build_rps_percent_target/scenario_description.csv +++ b/examples/2periods_new_build_rps_percent_target/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_rps_variable_reserves/scenario_description.csv b/examples/2periods_new_build_rps_variable_reserves/scenario_description.csv index 2e5cfbfd2..8b6593132 100644 --- a/examples/2periods_new_build_rps_variable_reserves/scenario_description.csv +++ b/examples/2periods_new_build_rps_variable_reserves/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_rps_variable_reserves_subhourly_adj/scenario_description.csv b/examples/2periods_new_build_rps_variable_reserves_subhourly_adj/scenario_description.csv index f6960c014..ec4023dc2 100644 --- a/examples/2periods_new_build_rps_variable_reserves_subhourly_adj/scenario_description.csv +++ b/examples/2periods_new_build_rps_variable_reserves_subhourly_adj/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_rps_w_rps_eligible_storage/scenario_description.csv b/examples/2periods_new_build_rps_w_rps_eligible_storage/scenario_description.csv index ba3e24618..7f03f2fe6 100644 --- a/examples/2periods_new_build_rps_w_rps_eligible_storage/scenario_description.csv +++ b/examples/2periods_new_build_rps_w_rps_eligible_storage/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_rps_w_rps_ineligible_storage/scenario_description.csv b/examples/2periods_new_build_rps_w_rps_ineligible_storage/scenario_description.csv index 2fc3e0710..3a2e2da46 100644 --- a/examples/2periods_new_build_rps_w_rps_ineligible_storage/scenario_description.csv +++ b/examples/2periods_new_build_rps_w_rps_ineligible_storage/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/2periods_new_build_simple_prm/scenario_description.csv b/examples/2periods_new_build_simple_prm/scenario_description.csv index 2006de08c..cdcbcf83a 100644 --- a/examples/2periods_new_build_simple_prm/scenario_description.csv +++ b/examples/2periods_new_build_simple_prm/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/multi_stage_prod_cost/scenario_description.csv b/examples/multi_stage_prod_cost/scenario_description.csv index d8b81568f..90ab463d4 100644 --- a/examples/multi_stage_prod_cost/scenario_description.csv +++ b/examples/multi_stage_prod_cost/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/multi_stage_prod_cost_linked_subproblems/scenario_description.csv b/examples/multi_stage_prod_cost_linked_subproblems/scenario_description.csv index 9c9e53c7d..82c1e55f2 100644 --- a/examples/multi_stage_prod_cost_linked_subproblems/scenario_description.csv +++ b/examples/multi_stage_prod_cost_linked_subproblems/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/multi_stage_prod_cost_w_hydro/scenario_description.csv b/examples/multi_stage_prod_cost_w_hydro/scenario_description.csv index 657f05499..3f609eb3c 100644 --- a/examples/multi_stage_prod_cost_w_hydro/scenario_description.csv +++ b/examples/multi_stage_prod_cost_w_hydro/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/multi_stage_prod_cost_w_markets/scenario_description.csv b/examples/multi_stage_prod_cost_w_markets/scenario_description.csv index 9b02e9bff..37e747f73 100644 --- a/examples/multi_stage_prod_cost_w_markets/scenario_description.csv +++ b/examples/multi_stage_prod_cost_w_markets/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/single_stage_prod_cost/scenario_description.csv b/examples/single_stage_prod_cost/scenario_description.csv index c87494b93..1cb045837 100644 --- a/examples/single_stage_prod_cost/scenario_description.csv +++ b/examples/single_stage_prod_cost/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/single_stage_prod_cost_cycle_select/1/results/objective_function_value.txt b/examples/single_stage_prod_cost_cycle_select/1/results/objective_function_value.txt index 71ed80a9c..69da4ccf8 100644 --- a/examples/single_stage_prod_cost_cycle_select/1/results/objective_function_value.txt +++ b/examples/single_stage_prod_cost_cycle_select/1/results/objective_function_value.txt @@ -1 +1 @@ -Objective function: -7154084662888.65 \ No newline at end of file +Objective function: -7008092000118.65 \ No newline at end of file diff --git a/examples/single_stage_prod_cost_cycle_select/1/results/summary_results.txt b/examples/single_stage_prod_cost_cycle_select/1/results/summary_results.txt index 33b691f9c..112e55908 100644 --- a/examples/single_stage_prod_cost_cycle_select/1/results/summary_results.txt +++ b/examples/single_stage_prod_cost_cycle_select/1/results/summary_results.txt @@ -7,7 +7,7 @@ --> Energy Production <-- Annual Energy (MWh) % Total Power load_zone period technology -Zone1 2020 Coal 0.00 0.00 - Gas 23,360.00 55.17 - Nuclear 17,520.00 41.38 - Wind 1,460.00 3.45 +Zone1 2020 Coal 3,650.00 8.33 + Gas 21,170.00 48.33 + Nuclear 17,520.00 40.00 + Wind 1,460.00 3.33 diff --git a/examples/single_stage_prod_cost_cycle_select/2/results/objective_function_value.txt b/examples/single_stage_prod_cost_cycle_select/2/results/objective_function_value.txt index 71ed80a9c..69da4ccf8 100644 --- a/examples/single_stage_prod_cost_cycle_select/2/results/objective_function_value.txt +++ b/examples/single_stage_prod_cost_cycle_select/2/results/objective_function_value.txt @@ -1 +1 @@ -Objective function: -7154084662888.65 \ No newline at end of file +Objective function: -7008092000118.65 \ No newline at end of file diff --git a/examples/single_stage_prod_cost_cycle_select/2/results/summary_results.txt b/examples/single_stage_prod_cost_cycle_select/2/results/summary_results.txt index 33b691f9c..112e55908 100644 --- a/examples/single_stage_prod_cost_cycle_select/2/results/summary_results.txt +++ b/examples/single_stage_prod_cost_cycle_select/2/results/summary_results.txt @@ -7,7 +7,7 @@ --> Energy Production <-- Annual Energy (MWh) % Total Power load_zone period technology -Zone1 2020 Coal 0.00 0.00 - Gas 23,360.00 55.17 - Nuclear 17,520.00 41.38 - Wind 1,460.00 3.45 +Zone1 2020 Coal 3,650.00 8.33 + Gas 21,170.00 48.33 + Nuclear 17,520.00 40.00 + Wind 1,460.00 3.33 diff --git a/examples/single_stage_prod_cost_cycle_select/3/results/objective_function_value.txt b/examples/single_stage_prod_cost_cycle_select/3/results/objective_function_value.txt index 71ed80a9c..69da4ccf8 100644 --- a/examples/single_stage_prod_cost_cycle_select/3/results/objective_function_value.txt +++ b/examples/single_stage_prod_cost_cycle_select/3/results/objective_function_value.txt @@ -1 +1 @@ -Objective function: -7154084662888.65 \ No newline at end of file +Objective function: -7008092000118.65 \ No newline at end of file diff --git a/examples/single_stage_prod_cost_cycle_select/3/results/summary_results.txt b/examples/single_stage_prod_cost_cycle_select/3/results/summary_results.txt index 33b691f9c..112e55908 100644 --- a/examples/single_stage_prod_cost_cycle_select/3/results/summary_results.txt +++ b/examples/single_stage_prod_cost_cycle_select/3/results/summary_results.txt @@ -7,7 +7,7 @@ --> Energy Production <-- Annual Energy (MWh) % Total Power load_zone period technology -Zone1 2020 Coal 0.00 0.00 - Gas 23,360.00 55.17 - Nuclear 17,520.00 41.38 - Wind 1,460.00 3.45 +Zone1 2020 Coal 3,650.00 8.33 + Gas 21,170.00 48.33 + Nuclear 17,520.00 40.00 + Wind 1,460.00 3.33 diff --git a/examples/single_stage_prod_cost_cycle_select/scenario_description.csv b/examples/single_stage_prod_cost_cycle_select/scenario_description.csv index 580bdc0ae..eb888e191 100644 --- a/examples/single_stage_prod_cost_cycle_select/scenario_description.csv +++ b/examples/single_stage_prod_cost_cycle_select/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/single_stage_prod_cost_linked_subproblems/scenario_description.csv b/examples/single_stage_prod_cost_linked_subproblems/scenario_description.csv index 368348f43..576fe9ad2 100644 --- a/examples/single_stage_prod_cost_linked_subproblems/scenario_description.csv +++ b/examples/single_stage_prod_cost_linked_subproblems/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test/scenario_description.csv b/examples/test/scenario_description.csv index c2534e84e..a30278e0c 100644 --- a/examples/test/scenario_description.csv +++ b/examples/test/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_aux_cons/scenario_description.csv b/examples/test_aux_cons/scenario_description.csv index 012bb244d..001a02699 100644 --- a/examples/test_aux_cons/scenario_description.csv +++ b/examples/test_aux_cons/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_cap_factor_limits/scenario_description.csv b/examples/test_cap_factor_limits/scenario_description.csv index adb5a4be5..1b0b0e6cd 100644 --- a/examples/test_cap_factor_limits/scenario_description.csv +++ b/examples/test_cap_factor_limits/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_carbon_tax_allowance/scenario_description.csv b/examples/test_carbon_tax_allowance/scenario_description.csv index 4f62f8cf4..74b89ff64 100644 --- a/examples/test_carbon_tax_allowance/scenario_description.csv +++ b/examples/test_carbon_tax_allowance/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_carbon_tax_allowance_with_different_fuel_groups/scenario_description.csv b/examples/test_carbon_tax_allowance_with_different_fuel_groups/scenario_description.csv index 88b4946c7..306bffec6 100644 --- a/examples/test_carbon_tax_allowance_with_different_fuel_groups/scenario_description.csv +++ b/examples/test_carbon_tax_allowance_with_different_fuel_groups/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_cheap_fuel_blend/scenario_description.csv b/examples/test_cheap_fuel_blend/scenario_description.csv index d28d4f16d..9d30e4616 100644 --- a/examples/test_cheap_fuel_blend/scenario_description.csv +++ b/examples/test_cheap_fuel_blend/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_cheap_fuel_blend_w_limit/scenario_description.csv b/examples/test_cheap_fuel_blend_w_limit/scenario_description.csv index 0cb718bb4..31ac940b6 100644 --- a/examples/test_cheap_fuel_blend_w_limit/scenario_description.csv +++ b/examples/test_cheap_fuel_blend_w_limit/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_markets/scenario_description.csv b/examples/test_markets/scenario_description.csv index 572143744..b764f8ced 100644 --- a/examples/test_markets/scenario_description.csv +++ b/examples/test_markets/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_min_max_build_trans/inputs/transmission_flow.tab b/examples/test_min_max_build_trans/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_min_max_build_trans/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_min_max_build_trans/scenario_description.csv b/examples/test_min_max_build_trans/scenario_description.csv index 66bc2c51f..807afd838 100644 --- a/examples/test_min_max_build_trans/scenario_description.csv +++ b/examples/test_min_max_build_trans/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,1 transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_binary_build_storage/scenario_description.csv b/examples/test_new_binary_build_storage/scenario_description.csv index 54783c1ba..33c5b7d9c 100644 --- a/examples/test_new_binary_build_storage/scenario_description.csv +++ b/examples/test_new_binary_build_storage/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_binary_solar/scenario_description.csv b/examples/test_new_binary_solar/scenario_description.csv index c8a6b6f01..13e0ff41b 100644 --- a/examples/test_new_binary_solar/scenario_description.csv +++ b/examples/test_new_binary_solar/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_build_gen_var_stor_hyb/scenario_description.csv b/examples/test_new_build_gen_var_stor_hyb/scenario_description.csv index 08ade905f..7f6671036 100644 --- a/examples/test_new_build_gen_var_stor_hyb/scenario_description.csv +++ b/examples/test_new_build_gen_var_stor_hyb/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_build_storage/scenario_description.csv b/examples/test_new_build_storage/scenario_description.csv index aba63e3e2..d5031129f 100644 --- a/examples/test_new_build_storage/scenario_description.csv +++ b/examples/test_new_build_storage/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_build_storage_cumulative_min_max/scenario_description.csv b/examples/test_new_build_storage_cumulative_min_max/scenario_description.csv index 5fffa006a..08497ce79 100644 --- a/examples/test_new_build_storage_cumulative_min_max/scenario_description.csv +++ b/examples/test_new_build_storage_cumulative_min_max/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar/scenario_description.csv b/examples/test_new_solar/scenario_description.csv index 94e160190..ad76862b4 100644 --- a/examples/test_new_solar/scenario_description.csv +++ b/examples/test_new_solar/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap/scenario_description.csv b/examples/test_new_solar_carbon_cap/scenario_description.csv index 0cd70a1df..ba0949998 100644 --- a/examples/test_new_solar_carbon_cap/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/inputs/transmission_flow.tab b/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/scenario_description.csv b/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/scenario_description.csv index ad5316c7b..6beac96cd 100644 --- a/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap_2zones_dont_count_tx/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap_2zones_tx/inputs/transmission_flow.tab b/examples/test_new_solar_carbon_cap_2zones_tx/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_new_solar_carbon_cap_2zones_tx/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_new_solar_carbon_cap_2zones_tx/scenario_description.csv b/examples/test_new_solar_carbon_cap_2zones_tx/scenario_description.csv index e194629a5..c6cea9356 100644 --- a/examples/test_new_solar_carbon_cap_2zones_tx/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap_2zones_tx/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/inputs/transmission_flow.tab b/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/scenario_description.csv b/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/scenario_description.csv index 41112dd80..6c2fd7ed2 100644 --- a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/inputs/transmission_flow.tab b/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/scenario_description.csv b/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/scenario_description.csv index 28eafb487..8b6895eb2 100644 --- a/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/inputs/transmission_flow.tab b/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/scenario_description.csv b/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/scenario_description.csv index c15ada11c..9ce710aae 100644 --- a/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap_2zones_tx_low_carbon_fuel_blend/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_cap_dac/scenario_description.csv b/examples/test_new_solar_carbon_cap_dac/scenario_description.csv index ec738e499..473e16bfe 100644 --- a/examples/test_new_solar_carbon_cap_dac/scenario_description.csv +++ b/examples/test_new_solar_carbon_cap_dac/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_carbon_tax/scenario_description.csv b/examples/test_new_solar_carbon_tax/scenario_description.csv index 56288cf1a..0daf9b2c8 100644 --- a/examples/test_new_solar_carbon_tax/scenario_description.csv +++ b/examples/test_new_solar_carbon_tax/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_fuel_burn_limit/scenario_description.csv b/examples/test_new_solar_fuel_burn_limit/scenario_description.csv index f00c30f38..44f677d68 100644 --- a/examples/test_new_solar_fuel_burn_limit/scenario_description.csv +++ b/examples/test_new_solar_fuel_burn_limit/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_fuel_burn_limit_relative/scenario_description.csv b/examples/test_new_solar_fuel_burn_limit_relative/scenario_description.csv index 1cec20f7d..cdd0aa411 100644 --- a/examples/test_new_solar_fuel_burn_limit_relative/scenario_description.csv +++ b/examples/test_new_solar_fuel_burn_limit_relative/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_new_solar_reserve_prj_contribution/scenario_description.csv b/examples/test_new_solar_reserve_prj_contribution/scenario_description.csv index 6b48922cd..ca7595754 100644 --- a/examples/test_new_solar_reserve_prj_contribution/scenario_description.csv +++ b/examples/test_new_solar_reserve_prj_contribution/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_no_fuels/scenario_description.csv b/examples/test_no_fuels/scenario_description.csv index 3fbc01d0d..53b2f5a70 100644 --- a/examples/test_no_fuels/scenario_description.csv +++ b/examples/test_no_fuels/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_no_overgen_allowed/scenario_description.csv b/examples/test_no_overgen_allowed/scenario_description.csv index 63e8bdfb7..2c80b4f41 100644 --- a/examples/test_no_overgen_allowed/scenario_description.csv +++ b/examples/test_no_overgen_allowed/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_no_reserves/scenario_description.csv b/examples/test_no_reserves/scenario_description.csv index b5c052cbd..e643a9962 100644 --- a/examples/test_no_reserves/scenario_description.csv +++ b/examples/test_no_reserves/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_performance_standard/inputs/transmission_flow.tab b/examples/test_performance_standard/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_performance_standard/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_performance_standard/scenario_description.csv b/examples/test_performance_standard/scenario_description.csv index 90c75590a..8e1d7ae01 100644 --- a/examples/test_performance_standard/scenario_description.csv +++ b/examples/test_performance_standard/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_ramp_up_and_down_constraints/scenario_description.csv b/examples/test_ramp_up_and_down_constraints/scenario_description.csv index 1ba076e11..e890964d6 100644 --- a/examples/test_ramp_up_and_down_constraints/scenario_description.csv +++ b/examples/test_ramp_up_and_down_constraints/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_ramp_up_constraints/scenario_description.csv b/examples/test_ramp_up_constraints/scenario_description.csv index 370933bfe..55805631c 100644 --- a/examples/test_ramp_up_constraints/scenario_description.csv +++ b/examples/test_ramp_up_constraints/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_startup_shutdown_rates/scenario_description.csv b/examples/test_startup_shutdown_rates/scenario_description.csv index 54f7c29de..9b01763a5 100644 --- a/examples/test_startup_shutdown_rates/scenario_description.csv +++ b/examples/test_startup_shutdown_rates/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_supplemental_firing/features.csv b/examples/test_supplemental_firing/features.csv new file mode 100644 index 000000000..7f1c75136 --- /dev/null +++ b/examples/test_supplemental_firing/features.csv @@ -0,0 +1,5 @@ +features +lf_reserves_up +lf_reserves_down +regulation_up +regulation_down diff --git a/examples/test_supplemental_firing/inputs/fuel_prices.tab b/examples/test_supplemental_firing/inputs/fuel_prices.tab new file mode 100644 index 000000000..d3925717d --- /dev/null +++ b/examples/test_supplemental_firing/inputs/fuel_prices.tab @@ -0,0 +1,7 @@ +fuel period month fuel_price_per_mmbtu +Coal 2020 1 4.0 +Coal 2020 2 4.0 +Gas 2020 1 5.0 +Gas 2020 2 5.0 +Uranium 2020 1 2.0 +Uranium 2020 2 2.0 diff --git a/examples/test_supplemental_firing/inputs/fuels.tab b/examples/test_supplemental_firing/inputs/fuels.tab new file mode 100644 index 000000000..28fb3cd64 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/fuels.tab @@ -0,0 +1,4 @@ +fuel co2_intensity_tons_per_mmbtu fuel_group +Coal 0.09552 Solid +Gas 0.05306 Gas +Uranium 0.0 Other diff --git a/examples/test_supplemental_firing/inputs/heat_rate_curves.tab b/examples/test_supplemental_firing/inputs/heat_rate_curves.tab new file mode 100644 index 000000000..070147c16 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/heat_rate_curves.tab @@ -0,0 +1,8 @@ +project period load_point_fraction average_heat_rate_mmbtu_per_mwh +Coal 0 0.4 1250.0 +Coal 0 1.0 506.0 +Gas_CCGT 0 0.5 506.0 +Gas_CCGT 0 1.0 256.0 +Gas_CT 0 0.4 208.33333 +Gas_CT 0 1.0 88.13333 +Nuclear 0 1.0 1666.67 diff --git a/examples/test_supplemental_firing/inputs/horizon_timepoints.tab b/examples/test_supplemental_firing/inputs/horizon_timepoints.tab new file mode 100644 index 000000000..ba1741348 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/horizon_timepoints.tab @@ -0,0 +1,3 @@ +horizon balancing_type_horizon timepoint +202001 day 20200101 +202001 day 20200102 diff --git a/examples/test_supplemental_firing/inputs/horizons.tab b/examples/test_supplemental_firing/inputs/horizons.tab new file mode 100644 index 000000000..169518ded --- /dev/null +++ b/examples/test_supplemental_firing/inputs/horizons.tab @@ -0,0 +1,2 @@ +horizon balancing_type_horizon boundary +202001 day circular diff --git a/examples/test_supplemental_firing/inputs/lf_reserves_down_tmp_requirement.tab b/examples/test_supplemental_firing/inputs/lf_reserves_down_tmp_requirement.tab new file mode 100644 index 000000000..891ff1859 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/lf_reserves_down_tmp_requirement.tab @@ -0,0 +1,3 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 diff --git a/examples/test_supplemental_firing/inputs/lf_reserves_up_tmp_requirement.tab b/examples/test_supplemental_firing/inputs/lf_reserves_up_tmp_requirement.tab new file mode 100644 index 000000000..891ff1859 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/lf_reserves_up_tmp_requirement.tab @@ -0,0 +1,3 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 diff --git a/examples/test_supplemental_firing/inputs/load_following_down_balancing_areas.tab b/examples/test_supplemental_firing/inputs/load_following_down_balancing_areas.tab new file mode 100644 index 000000000..7e4fdfbf2 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/load_following_down_balancing_areas.tab @@ -0,0 +1,2 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 999999999.0 . diff --git a/examples/test_supplemental_firing/inputs/load_following_up_balancing_areas.tab b/examples/test_supplemental_firing/inputs/load_following_up_balancing_areas.tab new file mode 100644 index 000000000..7e4fdfbf2 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/load_following_up_balancing_areas.tab @@ -0,0 +1,2 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 999999999.0 . diff --git a/examples/test_supplemental_firing/inputs/load_mw.tab b/examples/test_supplemental_firing/inputs/load_mw.tab new file mode 100644 index 000000000..ab0dfaed2 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/load_mw.tab @@ -0,0 +1,3 @@ +LOAD_ZONES timepoint load_mw +Zone1 20200101 10.0 +Zone1 20200102 20.0 diff --git a/examples/test_supplemental_firing/inputs/load_zones.tab b/examples/test_supplemental_firing/inputs/load_zones.tab new file mode 100644 index 000000000..9275b9448 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/load_zones.tab @@ -0,0 +1,2 @@ +load_zone allow_overgeneration overgeneration_penalty_per_mw allow_unserved_energy unserved_energy_penalty_per_mwh max_unserved_load_penalty_per_mw export_penalty_cost_per_mwh +Zone1 1 99999999.0 1 99999999.0 0.0 0.0 diff --git a/examples/test_supplemental_firing/inputs/periods.tab b/examples/test_supplemental_firing/inputs/periods.tab new file mode 100644 index 000000000..cd509b3ba --- /dev/null +++ b/examples/test_supplemental_firing/inputs/periods.tab @@ -0,0 +1,2 @@ +period discount_factor period_start_year period_end_year hours_in_period_timepoints +2020 1.0 2020.0 2021.0 8760.0 diff --git a/examples/test_supplemental_firing/inputs/project_fuels.tab b/examples/test_supplemental_firing/inputs/project_fuels.tab new file mode 100644 index 000000000..c4e98fbb5 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/project_fuels.tab @@ -0,0 +1,5 @@ +project fuel min_fraction_in_fuel_blend max_fraction_in_fuel_blend +Coal Coal . . +Gas_CCGT Gas . . +Gas_CT Gas . . +Nuclear Uranium . . diff --git a/examples/test_supplemental_firing/inputs/projects.tab b/examples/test_supplemental_firing/inputs/projects.tab new file mode 100644 index 000000000..a503c2626 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/projects.tab @@ -0,0 +1,6 @@ +project capacity_type availability_type operational_type balancing_type_project technology load_zone variable_om_cost_per_mwh min_stable_level_fraction unit_size_mw startup_cost_per_mw shutdown_cost_per_mw startup_fuel_mmbtu_per_mw startup_plus_ramp_up_rate shutdown_plus_ramp_down_rate ramp_up_when_on_rate ramp_down_when_on_rate ramp_up_violation_penalty ramp_down_violation_penalty min_up_time_hours min_up_time_violation_penalty min_down_time_hours min_down_time_violation_penalty charging_efficiency discharging_efficiency charging_capacity_multiplier discharging_capacity_multiplier minimum_duration_hours maximum_duration_hours aux_consumption_frac_capacity aux_consumption_frac_power last_commitment_stage curtailment_cost_per_pwh powerunithour_per_fuelunit lf_reserves_up_ba lf_reserves_up_derate lf_reserves_down_ba lf_reserves_down_derate regulation_up_ba regulation_up_derate regulation_down_ba regulation_down_derate lf_reserves_up_ramp_rate lf_reserves_down_ramp_rate regulation_up_ramp_rate regulation_down_ramp_rate +Coal gen_spec exogenous gen_commit_lin day Coal Zone1 1.0 0.4 . . 0.0 . . . . . . . . . . . . . . . . . . . 2 . . . . . . Zone1 . Zone1 . . . . . +Gas_CCGT gen_spec exogenous gen_commit_lin day Gas Zone1 2.0 0.4 . . 2.0 . . . . . . . . . . . . . . . . . . . 1 . . Zone1 . Zone1 . Zone1 . Zone1 . . . . . +Gas_CT gen_spec exogenous gen_commit_lin day Gas Zone1 2.0 0.4 . . 1.0 . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . +Nuclear gen_spec exogenous gen_must_run day Nuclear Zone1 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +Wind gen_spec exogenous gen_var day Wind Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diff --git a/examples/test_supplemental_firing/inputs/regulation_down_balancing_areas.tab b/examples/test_supplemental_firing/inputs/regulation_down_balancing_areas.tab new file mode 100644 index 000000000..7e4fdfbf2 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/regulation_down_balancing_areas.tab @@ -0,0 +1,2 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 999999999.0 . diff --git a/examples/test_supplemental_firing/inputs/regulation_down_tmp_requirement.tab b/examples/test_supplemental_firing/inputs/regulation_down_tmp_requirement.tab new file mode 100644 index 000000000..891ff1859 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/regulation_down_tmp_requirement.tab @@ -0,0 +1,3 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 diff --git a/examples/test_supplemental_firing/inputs/regulation_up_balancing_areas.tab b/examples/test_supplemental_firing/inputs/regulation_up_balancing_areas.tab new file mode 100644 index 000000000..7e4fdfbf2 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/regulation_up_balancing_areas.tab @@ -0,0 +1,2 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 999999999.0 . diff --git a/examples/test_supplemental_firing/inputs/regulation_up_tmp_requirement.tab b/examples/test_supplemental_firing/inputs/regulation_up_tmp_requirement.tab new file mode 100644 index 000000000..891ff1859 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/regulation_up_tmp_requirement.tab @@ -0,0 +1,3 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 diff --git a/examples/test_supplemental_firing/inputs/spec_capacity_period_params.tab b/examples/test_supplemental_firing/inputs/spec_capacity_period_params.tab new file mode 100644 index 000000000..871d0c6d2 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/spec_capacity_period_params.tab @@ -0,0 +1,6 @@ +project period specified_capacity_mw hyb_gen_specified_capacity_mw hyb_stor_specified_capacity_mw specified_capacity_mwh fuel_production_capacity_fuelunitperhour fuel_release_capacity_fuelunitperhour fuel_storage_capacity_fuelunit fixed_cost_per_mw_yr hyb_gen_fixed_cost_per_mw_yr hyb_stor_fixed_cost_per_mw_yr fixed_cost_per_mwh_yr fuel_production_capacity_fixed_cost_per_fuelunitperhour_yr fuel_release_capacity_fixed_cost_per_fuelunitperhour_yr fuel_storage_capacity_fixed_cost_per_fuelunit_yr +Coal 2020 6.0 0.0 +Gas_CCGT 2020 6.0 0.0 +Gas_CT 2020 6.0 0.0 +Nuclear 2020 6.0 0.0 +Wind 2020 2.0 0.0 diff --git a/examples/test_supplemental_firing/inputs/startup_chars.tab b/examples/test_supplemental_firing/inputs/startup_chars.tab new file mode 100644 index 000000000..228e71c12 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/startup_chars.tab @@ -0,0 +1,3 @@ +project down_time_cutoff_hours startup_plus_ramp_up_rate startup_cost_per_mw +Coal 0.0 1.0 1.0 +Gas_CCGT 0.0 1.0 1.0 diff --git a/examples/test_supplemental_firing/inputs/supplemental_firing.tab b/examples/test_supplemental_firing/inputs/supplemental_firing.tab new file mode 100644 index 000000000..c790aa8f8 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/supplemental_firing.tab @@ -0,0 +1,2 @@ +project supplemental_firing_project +Gas_CT Gas_CCGT diff --git a/examples/test_supplemental_firing/inputs/timepoints.tab b/examples/test_supplemental_firing/inputs/timepoints.tab new file mode 100644 index 000000000..d82db603e --- /dev/null +++ b/examples/test_supplemental_firing/inputs/timepoints.tab @@ -0,0 +1,3 @@ +timepoint period timepoint_weight number_of_hours_in_timepoint previous_stage_timepoint_map month +20200101 2020 4380.0 1 . 1 +20200102 2020 4380.0 1 . 1 diff --git a/examples/test_supplemental_firing/inputs/variable_generator_profiles.tab b/examples/test_supplemental_firing/inputs/variable_generator_profiles.tab new file mode 100644 index 000000000..7a69109c5 --- /dev/null +++ b/examples/test_supplemental_firing/inputs/variable_generator_profiles.tab @@ -0,0 +1,3 @@ +project timepoint cap_factor +Wind 20200101 0.9 +Wind 20200102 0.5 diff --git a/examples/test_supplemental_firing/results/objective_function_value.txt b/examples/test_supplemental_firing/results/objective_function_value.txt new file mode 100644 index 000000000..0894a14ab --- /dev/null +++ b/examples/test_supplemental_firing/results/objective_function_value.txt @@ -0,0 +1 @@ +Objective function: -4380327039279.85 \ No newline at end of file diff --git a/examples/test_supplemental_firing/results/solver_status.txt b/examples/test_supplemental_firing/results/solver_status.txt new file mode 100644 index 000000000..b5754e203 --- /dev/null +++ b/examples/test_supplemental_firing/results/solver_status.txt @@ -0,0 +1 @@ +ok \ No newline at end of file diff --git a/examples/test_supplemental_firing/results/summary_results.txt b/examples/test_supplemental_firing/results/summary_results.txt new file mode 100644 index 000000000..25678814a --- /dev/null +++ b/examples/test_supplemental_firing/results/summary_results.txt @@ -0,0 +1,13 @@ +##### SUMMARY RESULTS FOR SCENARIO *test_supplemental_firing* ##### + +### CAPACITY RESULTS ### + +### OPERATIONAL RESULTS ### + +--> Energy Production <-- + Annual Energy (MWh) % Total Power +load_zone period technology +Zone1 2020 Coal 27,740.00 19.79 + Gas 55,480.00 39.58 + Nuclear 52,560.00 37.50 + Wind 4,380.00 3.12 diff --git a/examples/test_supplemental_firing/results/termination_condition.txt b/examples/test_supplemental_firing/results/termination_condition.txt new file mode 100644 index 000000000..644457f4c --- /dev/null +++ b/examples/test_supplemental_firing/results/termination_condition.txt @@ -0,0 +1 @@ +optimal \ No newline at end of file diff --git a/examples/test_supplemental_firing/scenario_description.csv b/examples/test_supplemental_firing/scenario_description.csv new file mode 100644 index 000000000..3f899a8db --- /dev/null +++ b/examples/test_supplemental_firing/scenario_description.csv @@ -0,0 +1,103 @@ +scenario_id,79 +scenario_name,test_supplemental_firing +of_transmission, +of_transmission_hurdle_rates, +of_simultaneous_flow_limits, +of_lf_reserves_up,1 +of_lf_reserves_down,1 +of_regulation_up,1 +of_regulation_down,1 +of_frequency_response, +of_spinning_reserves, +of_period_energy_target, +of_horizon_energy_target, +of_carbon_cap, +of_track_carbon_imports, +of_carbon_tax, +of_performance_standard, +of_fuel_burn_limit, +of_prm, +of_elcc_surface, +of_local_capacity, +of_markets, +of_tuning, +temporal_scenario_id,1 +load_zone_scenario_id,1 +lf_reserves_up_ba_scenario_id,1 +lf_reserves_down_ba_scenario_id,1 +regulation_up_ba_scenario_id,1 +regulation_down_ba_scenario_id,1 +frequency_response_ba_scenario_id,NULL +spinning_reserves_ba_scenario_id,NULL +energy_target_zone_scenario_id,NULL +carbon_cap_zone_scenario_id,NULL +carbon_tax_zone_scenario_id,NULL +performance_standard_zone_scenario_id,NULL +fuel_burn_limit_ba_scenario_id,NULL +prm_zone_scenario_id,NULL +local_capacity_zone_scenario_id,NULL +market_scenario_id,NULL +project_portfolio_scenario_id,1 +project_operational_chars_scenario_id,21 +project_availability_scenario_id,1 +fuel_scenario_id,1 +project_load_zone_scenario_id,1 +project_lf_reserves_up_ba_scenario_id,1 +project_lf_reserves_down_ba_scenario_id,1 +project_regulation_up_ba_scenario_id,1 +project_regulation_down_ba_scenario_id,1 +project_frequency_response_ba_scenario_id,NULL +project_spinning_reserves_ba_scenario_id,NULL +project_energy_target_zone_scenario_id,NULL +project_carbon_cap_zone_scenario_id,NULL +project_carbon_tax_zone_scenario_id,NULL +project_carbon_tax_allowance_scenario_id,NULL +project_performance_standard_zone_scenario_id,NULL +project_fuel_burn_limit_ba_scenario_id,NULL +project_prm_zone_scenario_id,NULL +project_elcc_chars_scenario_id,NULL +prm_energy_only_scenario_id,NULL +project_local_capacity_zone_scenario_id,NULL +project_local_capacity_chars_scenario_id,NULL +load_zone_market_scenario_id,NULL +project_specified_capacity_scenario_id,1 +project_specified_fixed_cost_scenario_id,1 +fuel_price_scenario_id,1 +project_new_cost_scenario_id,NULL +project_new_potential_scenario_id,NULL +project_new_binary_build_size_scenario_id,NULL +project_capacity_group_requirement_scenario_id,NULL +project_capacity_group_scenario_id,NULL +transmission_portfolio_scenario_id,NULL +transmission_load_zone_scenario_id,NULL +transmission_specified_capacity_scenario_id,NULL +transmission_new_cost_scenario_id,NULL +transmission_availability_scenario_id,NULL +transmission_operational_chars_scenario_id,NULL +transmission_hurdle_rate_scenario_id,NULL +transmission_new_potential_scenario_id,NULL +transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL +transmission_carbon_cap_zone_scenario_id,NULL +transmission_simultaneous_flow_limit_scenario_id,NULL +transmission_simultaneous_flow_limit_line_group_scenario_id,NULL +load_scenario_id,1 +lf_reserves_up_scenario_id,1 +lf_reserves_down_scenario_id,1 +regulation_up_scenario_id,1 +regulation_down_scenario_id,1 +frequency_response_scenario_id,NULL +spinning_reserves_scenario_id,NULL +period_energy_target_scenario_id,NULL +horizon_energy_target_scenario_id,NULL +carbon_cap_target_scenario_id,NULL +carbon_tax_scenario_id,NULL +performance_standard_scenario_id,NULL +fuel_burn_limit_scenario_id,NULL +prm_requirement_scenario_id,NULL +local_capacity_requirement_scenario_id,NULL +elcc_surface_scenario_id,NULL +market_price_scenario_id,NULL +market_volume_scenario_id,NULL +tuning_scenario_id,NULL diff --git a/examples/test_supplemental_firing/units.csv b/examples/test_supplemental_firing/units.csv new file mode 100644 index 000000000..50a443355 --- /dev/null +++ b/examples/test_supplemental_firing/units.csv @@ -0,0 +1,15 @@ +metric,unit +power,MW +energy,MWh +fuel_energy,MMBtu +cost,USD +carbon_emissions,tonnes CO2 +time_for_cost,yr. +heat_rate,MMBtu/MWh +fuel_emission_intensity,tonnes CO2/MMBtu +fuel_price,USD/MMBtu +variable_om_cost,USD/MWh +fixed_om_cost,USD/MW-yr. +fixed_om_cost_energy,USD/MW-yr. +capacity_cost,USD/MW-yr. +energy_capacity_cost,USD/MWh-yr. diff --git a/examples/test_tx_capacity_groups/features.csv b/examples/test_tx_capacity_groups/features.csv new file mode 100644 index 000000000..9be2c1a70 --- /dev/null +++ b/examples/test_tx_capacity_groups/features.csv @@ -0,0 +1,6 @@ +features +transmission +lf_reserves_up +lf_reserves_down +regulation_up +regulation_down diff --git a/examples/test_tx_capacity_groups/inputs/fuel_prices.tab b/examples/test_tx_capacity_groups/inputs/fuel_prices.tab new file mode 100644 index 000000000..828c5d306 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/fuel_prices.tab @@ -0,0 +1,13 @@ +fuel period month fuel_price_per_mmbtu +Coal 2020 1 4.0 +Coal 2020 2 4.0 +Coal 2030 1 4.0 +Coal 2030 2 4.0 +Gas 2020 1 5.0 +Gas 2020 2 5.0 +Gas 2030 1 5.0 +Gas 2030 2 5.0 +Uranium 2020 1 2.0 +Uranium 2020 2 2.0 +Uranium 2030 1 2.0 +Uranium 2030 2 2.0 diff --git a/examples/test_tx_capacity_groups/inputs/fuels.tab b/examples/test_tx_capacity_groups/inputs/fuels.tab new file mode 100644 index 000000000..28fb3cd64 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/fuels.tab @@ -0,0 +1,4 @@ +fuel co2_intensity_tons_per_mmbtu fuel_group +Coal 0.09552 Solid +Gas 0.05306 Gas +Uranium 0.0 Other diff --git a/examples/test_tx_capacity_groups/inputs/heat_rate_curves.tab b/examples/test_tx_capacity_groups/inputs/heat_rate_curves.tab new file mode 100644 index 000000000..891883b14 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/heat_rate_curves.tab @@ -0,0 +1,19 @@ +project period load_point_fraction average_heat_rate_mmbtu_per_mwh +Coal 0 0.4 1250.0 +Coal 0 1.0 506.0 +Coal_z2 0 0.4 1250.0 +Coal_z2 0 1.0 506.0 +Gas_CCGT 0 0.5 506.0 +Gas_CCGT 0 1.0 256.0 +Gas_CCGT_new 0 0.5 506.0 +Gas_CCGT_new 0 1.0 256.0 +Gas_CCGT_z2 0 0.5 506.0 +Gas_CCGT_z2 0 1.0 256.0 +Gas_CT 0 0.4 208.33333 +Gas_CT 0 1.0 88.13333 +Gas_CT_new 0 0.4 208.33333 +Gas_CT_new 0 1.0 88.13333 +Gas_CT_z2 0 0.4 208.33333 +Gas_CT_z2 0 1.0 88.13333 +Nuclear 0 1.0 1666.67 +Nuclear_z2 0 1.0 1666.67 diff --git a/examples/test_tx_capacity_groups/inputs/horizon_timepoints.tab b/examples/test_tx_capacity_groups/inputs/horizon_timepoints.tab new file mode 100644 index 000000000..43e44a02e --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/horizon_timepoints.tab @@ -0,0 +1,13 @@ +horizon balancing_type_horizon timepoint +202001 day 20200101 +202001 day 20200102 +203001 day 20300101 +203001 day 20300102 +20201 halfyear 20200101 +20202 halfyear 20200102 +20301 halfyear 20300101 +20302 halfyear 20300102 +2020 year 20200101 +2020 year 20200102 +2030 year 20300101 +2030 year 20300102 diff --git a/examples/test_tx_capacity_groups/inputs/horizons.tab b/examples/test_tx_capacity_groups/inputs/horizons.tab new file mode 100644 index 000000000..ca129133f --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/horizons.tab @@ -0,0 +1,9 @@ +horizon balancing_type_horizon boundary +202001 day circular +203001 day circular +20201 halfyear circular +20202 halfyear circular +20301 halfyear circular +20302 halfyear circular +2020 year circular +2030 year circular diff --git a/examples/test_tx_capacity_groups/inputs/lf_reserves_down_tmp_requirement.tab b/examples/test_tx_capacity_groups/inputs/lf_reserves_down_tmp_requirement.tab new file mode 100644 index 000000000..d9ac453a5 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/lf_reserves_down_tmp_requirement.tab @@ -0,0 +1,9 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 +Zone1 20300101 1.0 +Zone1 20300102 2.0 +Zone2 20200101 1.0 +Zone2 20200102 2.0 +Zone2 20300101 1.0 +Zone2 20300102 2.0 diff --git a/examples/test_tx_capacity_groups/inputs/lf_reserves_up_tmp_requirement.tab b/examples/test_tx_capacity_groups/inputs/lf_reserves_up_tmp_requirement.tab new file mode 100644 index 000000000..d9ac453a5 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/lf_reserves_up_tmp_requirement.tab @@ -0,0 +1,9 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 +Zone1 20300101 1.0 +Zone1 20300102 2.0 +Zone2 20200101 1.0 +Zone2 20200102 2.0 +Zone2 20300101 1.0 +Zone2 20300102 2.0 diff --git a/examples/test_tx_capacity_groups/inputs/load_following_down_balancing_areas.tab b/examples/test_tx_capacity_groups/inputs/load_following_down_balancing_areas.tab new file mode 100644 index 000000000..b43b7e022 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/load_following_down_balancing_areas.tab @@ -0,0 +1,3 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 99999999.0 . +Zone2 1 99999999.0 . diff --git a/examples/test_tx_capacity_groups/inputs/load_following_up_balancing_areas.tab b/examples/test_tx_capacity_groups/inputs/load_following_up_balancing_areas.tab new file mode 100644 index 000000000..b43b7e022 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/load_following_up_balancing_areas.tab @@ -0,0 +1,3 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 99999999.0 . +Zone2 1 99999999.0 . diff --git a/examples/test_tx_capacity_groups/inputs/load_mw.tab b/examples/test_tx_capacity_groups/inputs/load_mw.tab new file mode 100644 index 000000000..4bae7baed --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/load_mw.tab @@ -0,0 +1,9 @@ +LOAD_ZONES timepoint load_mw +Zone1 20200101 50.0 +Zone1 20200102 40.0 +Zone1 20300101 40.0 +Zone1 20300102 50.0 +Zone2 20200101 50.0 +Zone2 20200102 40.0 +Zone2 20300101 40.0 +Zone2 20300102 50.0 diff --git a/examples/test_tx_capacity_groups/inputs/load_zones.tab b/examples/test_tx_capacity_groups/inputs/load_zones.tab new file mode 100644 index 000000000..f720ec9ed --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/load_zones.tab @@ -0,0 +1,3 @@ +load_zone allow_overgeneration overgeneration_penalty_per_mw allow_unserved_energy unserved_energy_penalty_per_mwh max_unserved_load_penalty_per_mw export_penalty_cost_per_mwh +Zone1 1 99999999.0 1 99999999.0 0.0 0.0 +Zone2 1 99999999.0 1 99999999.0 0.0 0.0 diff --git a/examples/test_tx_capacity_groups/inputs/new_build_generator_vintage_costs.tab b/examples/test_tx_capacity_groups/inputs/new_build_generator_vintage_costs.tab new file mode 100644 index 000000000..28f66789a --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/new_build_generator_vintage_costs.tab @@ -0,0 +1,4 @@ +project vintage lifetime_yrs annualized_real_cost_per_mw_yr min_cumulative_new_build_mw max_cumulative_new_build_mw +Gas_CCGT_new 2020 30 200000.0 . . +Gas_CCGT_new 2030 30 180000.0 . . +Gas_CT_new 2030 30 140000.0 . . diff --git a/examples/test_tx_capacity_groups/inputs/new_build_transmission_vintage_costs.tab b/examples/test_tx_capacity_groups/inputs/new_build_transmission_vintage_costs.tab new file mode 100644 index 000000000..6e0baaf47 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/new_build_transmission_vintage_costs.tab @@ -0,0 +1,5 @@ +transmission_line vintage tx_lifetime_yrs tx_annualized_real_cost_per_mw_yr min_cumulative_new_build_mw max_cumulative_new_build_mw +Tx2_new 2020 35.0 11.0 . . +Tx2_new 2030 35.0 11.0 . . +Tx_new 2020 35.0 10.0 0.0 30.0 +Tx_new 2030 35.0 10.0 0.0 30.0 diff --git a/examples/test_tx_capacity_groups/inputs/periods.tab b/examples/test_tx_capacity_groups/inputs/periods.tab new file mode 100644 index 000000000..d74a91810 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/periods.tab @@ -0,0 +1,3 @@ +period discount_factor period_start_year period_end_year hours_in_period_timepoints +2020 1.0 2020.0 2030.0 8760.0 +2030 1.0 2030.0 2040.0 8760.0 diff --git a/examples/test_tx_capacity_groups/inputs/project_fuels.tab b/examples/test_tx_capacity_groups/inputs/project_fuels.tab new file mode 100644 index 000000000..3b839f3b2 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/project_fuels.tab @@ -0,0 +1,11 @@ +project fuel min_fraction_in_fuel_blend max_fraction_in_fuel_blend +Coal Coal . . +Coal_z2 Coal . . +Gas_CCGT Gas . . +Gas_CCGT_new Gas . . +Gas_CCGT_z2 Gas . . +Gas_CT Gas . . +Gas_CT_new Gas . . +Gas_CT_z2 Gas . . +Nuclear Uranium . . +Nuclear_z2 Uranium . . diff --git a/examples/test_tx_capacity_groups/inputs/projects.tab b/examples/test_tx_capacity_groups/inputs/projects.tab new file mode 100644 index 000000000..f50b3534b --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/projects.tab @@ -0,0 +1,13 @@ +project capacity_type availability_type operational_type balancing_type_project technology load_zone variable_om_cost_per_mwh min_stable_level_fraction unit_size_mw startup_cost_per_mw shutdown_cost_per_mw startup_fuel_mmbtu_per_mw startup_plus_ramp_up_rate shutdown_plus_ramp_down_rate ramp_up_when_on_rate ramp_down_when_on_rate ramp_up_violation_penalty ramp_down_violation_penalty min_up_time_hours min_up_time_violation_penalty min_down_time_hours min_down_time_violation_penalty charging_efficiency discharging_efficiency charging_capacity_multiplier discharging_capacity_multiplier minimum_duration_hours maximum_duration_hours aux_consumption_frac_capacity aux_consumption_frac_power last_commitment_stage curtailment_cost_per_pwh powerunithour_per_fuelunit lf_reserves_up_ba lf_reserves_up_derate lf_reserves_down_ba lf_reserves_down_derate regulation_up_ba regulation_up_derate regulation_down_ba regulation_down_derate lf_reserves_up_ramp_rate lf_reserves_down_ramp_rate regulation_up_ramp_rate regulation_down_ramp_rate +Coal gen_spec exogenous gen_commit_cap day Coal Zone1 1.0 0.4 6.0 1.0 0.0 . . . . . . . . . . . . . . . . . . . 2 . . . . . . Zone1 . Zone1 . . . . . +Coal_z2 gen_spec exogenous gen_commit_cap day Coal Zone2 1.0 0.4 6.0 1.0 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . Zone2 . Zone2 . . . . . +Gas_CCGT gen_spec exogenous gen_commit_cap day Gas Zone1 2.0 0.4 6.0 1.0 2.0 . . . . . . . . . . . . . . . . . . . 1 . . Zone1 . Zone1 . Zone1 . Zone1 . . . . . +Gas_CCGT_new gen_new_lin exogenous gen_commit_cap day Gas Zone1 2.0 0.4 6.0 1.0 2.0 . . . . . . . . . . . . . . . . . . . 1 . . Zone1 . Zone1 . Zone1 . Zone1 . . . . . +Gas_CCGT_z2 gen_spec exogenous gen_commit_cap day Gas Zone2 2.0 0.4 6.0 1.0 2.0 . . . . . . . . . . . . . . . . . . . 1 . . Zone2 . Zone2 . Zone2 . Zone2 . . . . . +Gas_CT gen_spec exogenous gen_commit_cap day Gas Zone1 2.0 0.4 6.0 0.0 1.0 . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . +Gas_CT_new gen_new_lin exogenous gen_commit_cap day Gas Zone1 2.0 0.4 6.0 0.0 1.0 . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . +Gas_CT_z2 gen_spec exogenous gen_commit_cap day Gas Zone2 2.0 0.4 6.0 0.0 1.0 . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . +Nuclear gen_spec exogenous gen_must_run day Nuclear Zone1 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +Nuclear_z2 gen_spec exogenous gen_must_run day Nuclear Zone2 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +Wind gen_spec exogenous gen_var day Wind Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +Wind_z2 gen_spec exogenous gen_var day Wind Zone2 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diff --git a/examples/test_tx_capacity_groups/inputs/regulation_down_balancing_areas.tab b/examples/test_tx_capacity_groups/inputs/regulation_down_balancing_areas.tab new file mode 100644 index 000000000..b43b7e022 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/regulation_down_balancing_areas.tab @@ -0,0 +1,3 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 99999999.0 . +Zone2 1 99999999.0 . diff --git a/examples/test_tx_capacity_groups/inputs/regulation_down_tmp_requirement.tab b/examples/test_tx_capacity_groups/inputs/regulation_down_tmp_requirement.tab new file mode 100644 index 000000000..d9ac453a5 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/regulation_down_tmp_requirement.tab @@ -0,0 +1,9 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 +Zone1 20300101 1.0 +Zone1 20300102 2.0 +Zone2 20200101 1.0 +Zone2 20200102 2.0 +Zone2 20300101 1.0 +Zone2 20300102 2.0 diff --git a/examples/test_tx_capacity_groups/inputs/regulation_up_balancing_areas.tab b/examples/test_tx_capacity_groups/inputs/regulation_up_balancing_areas.tab new file mode 100644 index 000000000..b43b7e022 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/regulation_up_balancing_areas.tab @@ -0,0 +1,3 @@ +balancing_area allow_violation violation_penalty_per_mw reserve_to_energy_adjustment +Zone1 1 99999999.0 . +Zone2 1 99999999.0 . diff --git a/examples/test_tx_capacity_groups/inputs/regulation_up_tmp_requirement.tab b/examples/test_tx_capacity_groups/inputs/regulation_up_tmp_requirement.tab new file mode 100644 index 000000000..d9ac453a5 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/regulation_up_tmp_requirement.tab @@ -0,0 +1,9 @@ +ba timepoint requirement +Zone1 20200101 1.0 +Zone1 20200102 2.0 +Zone1 20300101 1.0 +Zone1 20300102 2.0 +Zone2 20200101 1.0 +Zone2 20200102 2.0 +Zone2 20300101 1.0 +Zone2 20300102 2.0 diff --git a/examples/test_tx_capacity_groups/inputs/spec_capacity_period_params.tab b/examples/test_tx_capacity_groups/inputs/spec_capacity_period_params.tab new file mode 100644 index 000000000..501c4d172 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/spec_capacity_period_params.tab @@ -0,0 +1,21 @@ +project period specified_capacity_mw hyb_gen_specified_capacity_mw hyb_stor_specified_capacity_mw specified_capacity_mwh fuel_production_capacity_fuelunitperhour fuel_release_capacity_fuelunitperhour fuel_storage_capacity_fuelunit fixed_cost_per_mw_yr hyb_gen_fixed_cost_per_mw_yr hyb_stor_fixed_cost_per_mw_yr fixed_cost_per_mwh_yr fuel_production_capacity_fixed_cost_per_fuelunitperhour_yr fuel_release_capacity_fixed_cost_per_fuelunitperhour_yr fuel_storage_capacity_fixed_cost_per_fuelunit_yr +Coal 2020 6.0 0.0 +Coal 2030 6.0 0.0 +Coal_z2 2020 6.0 0.0 +Coal_z2 2030 6.0 0.0 +Gas_CCGT 2020 6.0 0.0 +Gas_CCGT 2030 6.0 0.0 +Gas_CCGT_z2 2020 6.0 0.0 +Gas_CCGT_z2 2030 6.0 0.0 +Gas_CT 2020 6.0 0.0 +Gas_CT 2030 6.0 0.0 +Gas_CT_z2 2020 6.0 0.0 +Gas_CT_z2 2030 6.0 0.0 +Nuclear 2020 6.0 0.0 +Nuclear 2030 6.0 0.0 +Nuclear_z2 2020 6.0 0.0 +Nuclear_z2 2030 6.0 0.0 +Wind 2020 2.0 0.0 +Wind 2030 2.0 0.0 +Wind_z2 2020 2.0 0.0 +Wind_z2 2030 2.0 0.0 diff --git a/examples/test_tx_capacity_groups/inputs/timepoints.tab b/examples/test_tx_capacity_groups/inputs/timepoints.tab new file mode 100644 index 000000000..b5e04ab04 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/timepoints.tab @@ -0,0 +1,5 @@ +timepoint period timepoint_weight number_of_hours_in_timepoint previous_stage_timepoint_map month +20200101 2020 4380.0 1 . 1 +20200102 2020 4380.0 1 . 1 +20300101 2030 4380.0 1 . 1 +20300102 2030 4380.0 1 . 1 diff --git a/examples/test_tx_capacity_groups/inputs/transmission_capacity_group_requirements.tab b/examples/test_tx_capacity_groups/inputs/transmission_capacity_group_requirements.tab new file mode 100644 index 000000000..a90053207 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/transmission_capacity_group_requirements.tab @@ -0,0 +1,3 @@ +transmission_capacity_group period transmission_capacity_group_new_capacity_min transmission_capacity_group_new_capacity_max +Tx_Capacity_Group1 2020 . 25.0 +Tx_Capacity_Group1 2030 31.0 . diff --git a/examples/test_tx_capacity_groups/inputs/transmission_capacity_group_transmission_lines.tab b/examples/test_tx_capacity_groups/inputs/transmission_capacity_group_transmission_lines.tab new file mode 100644 index 000000000..fe2cd2992 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/transmission_capacity_group_transmission_lines.tab @@ -0,0 +1,3 @@ +transmission_capacity_group transmission_line +Tx_Capacity_Group1 Tx2_new +Tx_Capacity_Group1 Tx_new diff --git a/examples/test_tx_capacity_groups/inputs/transmission_lines.tab b/examples/test_tx_capacity_groups/inputs/transmission_lines.tab new file mode 100644 index 000000000..afad6d84f --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/transmission_lines.tab @@ -0,0 +1,3 @@ +transmission_line tx_capacity_type tx_availability_type tx_operational_type load_zone_from load_zone_to tx_simple_loss_factor reactance_ohms +Tx2_new tx_new_lin exogenous tx_simple Zone1 Zone2 . . +Tx_new tx_new_lin exogenous tx_simple Zone1 Zone2 . . diff --git a/examples/test_tx_capacity_groups/inputs/variable_generator_profiles.tab b/examples/test_tx_capacity_groups/inputs/variable_generator_profiles.tab new file mode 100644 index 000000000..7e7f2bd14 --- /dev/null +++ b/examples/test_tx_capacity_groups/inputs/variable_generator_profiles.tab @@ -0,0 +1,9 @@ +project timepoint cap_factor +Wind 20200101 0.9 +Wind 20200102 0.5 +Wind 20300101 0.9 +Wind 20300102 0.5 +Wind_z2 20200101 0.9 +Wind_z2 20200102 0.5 +Wind_z2 20300101 0.9 +Wind_z2 20300102 0.5 diff --git a/examples/test_tx_capacity_groups/results/objective_function_value.txt b/examples/test_tx_capacity_groups/results/objective_function_value.txt new file mode 100644 index 000000000..f6e2ef5b1 --- /dev/null +++ b/examples/test_tx_capacity_groups/results/objective_function_value.txt @@ -0,0 +1 @@ +Objective function: -12284573611936.52 \ No newline at end of file diff --git a/examples/test_tx_capacity_groups/results/solver_status.txt b/examples/test_tx_capacity_groups/results/solver_status.txt new file mode 100644 index 000000000..b5754e203 --- /dev/null +++ b/examples/test_tx_capacity_groups/results/solver_status.txt @@ -0,0 +1 @@ +ok \ No newline at end of file diff --git a/examples/test_tx_capacity_groups/results/summary_results.txt b/examples/test_tx_capacity_groups/results/summary_results.txt new file mode 100644 index 000000000..5337fb9fb --- /dev/null +++ b/examples/test_tx_capacity_groups/results/summary_results.txt @@ -0,0 +1,31 @@ +##### SUMMARY RESULTS FOR SCENARIO *test_tx_capacity_groups* ##### + +### CAPACITY RESULTS ### + +--> New Generation Capacity <-- + New Capacity (MW) +load_zone technology vintage +Zone1 Gas 2020 57.20 + 2030 55.87 + +### OPERATIONAL RESULTS ### + +--> Energy Production <-- + Annual Energy (MWh) % Total Power +load_zone period technology +Zone1 2020 Coal 0.00 0.00 + Gas 518,592.00 88.89 + Nuclear 52,560.00 9.01 + Wind 12,264.00 2.10 + 2030 Coal 0.00 0.00 + Gas 573,488.00 89.84 + Nuclear 52,560.00 8.23 + Wind 12,264.00 1.92 +Zone2 2020 Coal 39,420.00 19.74 + Gas 95,484.00 47.81 + Nuclear 52,560.00 26.32 + Wind 12,264.00 6.14 + 2030 Coal 18,688.00 12.45 + Gas 66,576.00 44.36 + Nuclear 52,560.00 35.02 + Wind 12,264.00 8.17 diff --git a/examples/test_tx_capacity_groups/results/termination_condition.txt b/examples/test_tx_capacity_groups/results/termination_condition.txt new file mode 100644 index 000000000..644457f4c --- /dev/null +++ b/examples/test_tx_capacity_groups/results/termination_condition.txt @@ -0,0 +1 @@ +optimal \ No newline at end of file diff --git a/examples/test_tx_capacity_groups/scenario_description.csv b/examples/test_tx_capacity_groups/scenario_description.csv new file mode 100644 index 000000000..41fb87ded --- /dev/null +++ b/examples/test_tx_capacity_groups/scenario_description.csv @@ -0,0 +1,103 @@ +scenario_id,80 +scenario_name,test_tx_capacity_groups +of_transmission,1 +of_transmission_hurdle_rates, +of_simultaneous_flow_limits, +of_lf_reserves_up,1 +of_lf_reserves_down,1 +of_regulation_up,1 +of_regulation_down,1 +of_frequency_response, +of_spinning_reserves, +of_period_energy_target, +of_horizon_energy_target, +of_carbon_cap, +of_track_carbon_imports, +of_carbon_tax, +of_performance_standard, +of_fuel_burn_limit, +of_prm, +of_elcc_surface, +of_local_capacity, +of_markets, +of_tuning, +temporal_scenario_id,6 +load_zone_scenario_id,2 +lf_reserves_up_ba_scenario_id,3 +lf_reserves_down_ba_scenario_id,3 +regulation_up_ba_scenario_id,3 +regulation_down_ba_scenario_id,3 +frequency_response_ba_scenario_id,NULL +spinning_reserves_ba_scenario_id,NULL +energy_target_zone_scenario_id,NULL +carbon_cap_zone_scenario_id,NULL +carbon_tax_zone_scenario_id,NULL +performance_standard_zone_scenario_id,NULL +fuel_burn_limit_ba_scenario_id,NULL +prm_zone_scenario_id,NULL +local_capacity_zone_scenario_id,NULL +market_scenario_id,NULL +project_portfolio_scenario_id,12 +project_operational_chars_scenario_id,1 +project_availability_scenario_id,1 +fuel_scenario_id,1 +project_load_zone_scenario_id,1 +project_lf_reserves_up_ba_scenario_id,1 +project_lf_reserves_down_ba_scenario_id,1 +project_regulation_up_ba_scenario_id,1 +project_regulation_down_ba_scenario_id,1 +project_frequency_response_ba_scenario_id,NULL +project_spinning_reserves_ba_scenario_id,NULL +project_energy_target_zone_scenario_id,NULL +project_carbon_cap_zone_scenario_id,NULL +project_carbon_tax_zone_scenario_id,NULL +project_carbon_tax_allowance_scenario_id,NULL +project_performance_standard_zone_scenario_id,NULL +project_fuel_burn_limit_ba_scenario_id,NULL +project_prm_zone_scenario_id,NULL +project_elcc_chars_scenario_id,NULL +prm_energy_only_scenario_id,NULL +project_local_capacity_zone_scenario_id,NULL +project_local_capacity_chars_scenario_id,NULL +load_zone_market_scenario_id,NULL +project_specified_capacity_scenario_id,1 +project_specified_fixed_cost_scenario_id,1 +fuel_price_scenario_id,1 +project_new_cost_scenario_id,1 +project_new_potential_scenario_id,NULL +project_new_binary_build_size_scenario_id,NULL +project_capacity_group_requirement_scenario_id,NULL +project_capacity_group_scenario_id,NULL +transmission_portfolio_scenario_id,4 +transmission_load_zone_scenario_id,1 +transmission_specified_capacity_scenario_id,1 +transmission_new_cost_scenario_id,1 +transmission_availability_scenario_id,1 +transmission_operational_chars_scenario_id,1 +transmission_hurdle_rate_scenario_id,NULL +transmission_new_potential_scenario_id,1 +transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,1 +transmission_capacity_group_scenario_id,1 +transmission_carbon_cap_zone_scenario_id,NULL +transmission_simultaneous_flow_limit_scenario_id,NULL +transmission_simultaneous_flow_limit_line_group_scenario_id,NULL +load_scenario_id,2 +lf_reserves_up_scenario_id,1 +lf_reserves_down_scenario_id,1 +regulation_up_scenario_id,1 +regulation_down_scenario_id,1 +frequency_response_scenario_id,NULL +spinning_reserves_scenario_id,NULL +period_energy_target_scenario_id,NULL +horizon_energy_target_scenario_id,NULL +carbon_cap_target_scenario_id,NULL +carbon_tax_scenario_id,NULL +performance_standard_scenario_id,NULL +fuel_burn_limit_scenario_id,NULL +prm_requirement_scenario_id,NULL +local_capacity_requirement_scenario_id,NULL +elcc_surface_scenario_id,NULL +market_price_scenario_id,NULL +market_volume_scenario_id,NULL +tuning_scenario_id,NULL diff --git a/examples/test_tx_capacity_groups/units.csv b/examples/test_tx_capacity_groups/units.csv new file mode 100644 index 000000000..50a443355 --- /dev/null +++ b/examples/test_tx_capacity_groups/units.csv @@ -0,0 +1,15 @@ +metric,unit +power,MW +energy,MWh +fuel_energy,MMBtu +cost,USD +carbon_emissions,tonnes CO2 +time_for_cost,yr. +heat_rate,MMBtu/MWh +fuel_emission_intensity,tonnes CO2/MMBtu +fuel_price,USD/MMBtu +variable_om_cost,USD/MWh +fixed_om_cost,USD/MW-yr. +fixed_om_cost_energy,USD/MW-yr. +capacity_cost,USD/MW-yr. +energy_capacity_cost,USD/MWh-yr. diff --git a/examples/test_tx_dcopf/scenario_description.csv b/examples/test_tx_dcopf/scenario_description.csv index 5b36c6752..4dc234e3d 100644 --- a/examples/test_tx_dcopf/scenario_description.csv +++ b/examples/test_tx_dcopf/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,2 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_tx_flow/inputs/transmission_flow.tab b/examples/test_tx_flow/inputs/transmission_flow_limits.tab similarity index 100% rename from examples/test_tx_flow/inputs/transmission_flow.tab rename to examples/test_tx_flow/inputs/transmission_flow_limits.tab diff --git a/examples/test_tx_flow/scenario_description.csv b/examples/test_tx_flow/scenario_description.csv index 82a70b6e9..970754028 100644 --- a/examples/test_tx_flow/scenario_description.csv +++ b/examples/test_tx_flow/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,1 +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_tx_simple/inputs/transmission_flow.tab b/examples/test_tx_simple/inputs/transmission_flow.tab deleted file mode 100644 index 902a4d380..000000000 --- a/examples/test_tx_simple/inputs/transmission_flow.tab +++ /dev/null @@ -1 +0,0 @@ -transmission_line timepoint min_flow_mw max_flow_mw diff --git a/examples/test_tx_simple/scenario_description.csv b/examples/test_tx_simple/scenario_description.csv index 07ececf10..73f1521a8 100644 --- a/examples/test_tx_simple/scenario_description.csv +++ b/examples/test_tx_simple/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,1 transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,1 transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_variable_gen_reserves/scenario_description.csv b/examples/test_variable_gen_reserves/scenario_description.csv index 580431340..ff3439966 100644 --- a/examples/test_variable_gen_reserves/scenario_description.csv +++ b/examples/test_variable_gen_reserves/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_variable_om_curves/scenario_description.csv b/examples/test_variable_om_curves/scenario_description.csv index fa55104f2..0a113b9df 100644 --- a/examples/test_variable_om_curves/scenario_description.csv +++ b/examples/test_variable_om_curves/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_w_hydro/scenario_description.csv b/examples/test_w_hydro/scenario_description.csv index 57df43acd..c21930743 100644 --- a/examples/test_w_hydro/scenario_description.csv +++ b/examples/test_w_hydro/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_w_lf_down_percent_req/scenario_description.csv b/examples/test_w_lf_down_percent_req/scenario_description.csv index 00e9032c1..22b77d921 100644 --- a/examples/test_w_lf_down_percent_req/scenario_description.csv +++ b/examples/test_w_lf_down_percent_req/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_w_solver_options/scenario_description.csv b/examples/test_w_solver_options/scenario_description.csv index 10c0744c9..5b6f1f3d3 100644 --- a/examples/test_w_solver_options/scenario_description.csv +++ b/examples/test_w_solver_options/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/examples/test_w_storage/scenario_description.csv b/examples/test_w_storage/scenario_description.csv index d5d159d4d..fb22cf16e 100644 --- a/examples/test_w_storage/scenario_description.csv +++ b/examples/test_w_storage/scenario_description.csv @@ -77,6 +77,8 @@ transmission_operational_chars_scenario_id,NULL transmission_hurdle_rate_scenario_id,NULL transmission_new_potential_scenario_id,NULL transmission_flow_scenario_id,NULL +transmission_capacity_group_requirement_scenario_id,NULL +transmission_capacity_group_scenario_id,NULL transmission_carbon_cap_zone_scenario_id,NULL transmission_simultaneous_flow_limit_scenario_id,NULL transmission_simultaneous_flow_limit_line_group_scenario_id,NULL diff --git a/gridpath/auxiliary/module_list.py b/gridpath/auxiliary/module_list.py index 3d530dc04..9ecbb50ce 100644 --- a/gridpath/auxiliary/module_list.py +++ b/gridpath/auxiliary/module_list.py @@ -94,6 +94,7 @@ def all_modules_list(): "project.operations.reserves.op_type_dependent.spinning_reserves", "project.operations.power", "project.operations.cycle_select", + "project.operations.supplemental_firing", "project.operations.cap_factor_limits", "project.operations.fix_commitment", "project.operations.fuel_burn", @@ -114,6 +115,7 @@ def all_modules_list(): "transmission", "transmission.capacity.capacity_types", "transmission.capacity.capacity", + "transmission.capacity.capacity_groups", "transmission.availability.availability", "transmission.operations.operational_types", "transmission.operations.operations", @@ -208,6 +210,7 @@ def optional_modules_list(): "transmission", "transmission.capacity.capacity_types", "transmission.capacity.capacity", + "transmission.capacity.capacity_groups", "transmission.availability.availability", "transmission.operations.operational_types", "transmission.operations.operations", diff --git a/gridpath/get_scenario_inputs.py b/gridpath/get_scenario_inputs.py index ee5616a17..e28b5b07d 100644 --- a/gridpath/get_scenario_inputs.py +++ b/gridpath/get_scenario_inputs.py @@ -23,7 +23,7 @@ from argparse import ArgumentParser import csv -from multiprocessing import Pool +from multiprocessing import get_context import os.path import pandas as pd import sys @@ -132,7 +132,8 @@ def write_model_inputs( ] ) - pool = Pool(n_parallel_subproblems) + # Pool must use spawn to work properly on Linux + pool = get_context("spawn").Pool(n_parallel_subproblems) pool.map(get_inputs_for_subproblem_pool, pool_data) pool.close() diff --git a/gridpath/objective/system/reliability/__init__.py b/gridpath/objective/system/reliability/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/gridpath/project/availability/availability.py b/gridpath/project/availability/availability.py index 4c5c20497..bd6c0075b 100644 --- a/gridpath/project/availability/availability.py +++ b/gridpath/project/availability/availability.py @@ -1,4 +1,4 @@ -# Copyright 2016-2020 Blue Marble Analytics LLC. +# Copyright 2016-2022 Blue Marble Analytics LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,7 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): if hasattr(imp_op_m, "add_model_components"): imp_op_m.add_model_components(m, d, scenario_directory, subproblem, stage) - def availability_derate_rule(mod, g, tmp): + def availability_derate_cap_rule(mod, g, tmp): """ :param mod: @@ -59,9 +59,33 @@ def availability_derate_rule(mod, g, tmp): availability_type = mod.availability_type[g] return imported_availability_modules[ availability_type - ].availability_derate_rule(mod, g, tmp) + ].availability_derate_cap_rule(mod, g, tmp) - m.Availability_Derate = Expression(m.PRJ_OPR_TMPS, rule=availability_derate_rule) + m.Availability_Derate = Expression( + m.PRJ_OPR_TMPS, rule=availability_derate_cap_rule + ) + + # TODO: can we define this only for hybrid projects, so defined over + # AVL_EXOG_OPR_TMPS, not PRJ_OPR_TMPS + def availability_derate_hyb_stor_cap_rule(mod, g, tmp): + """ + + :param mod: + :param g: + :param tmp: + :return: + """ + # TODO: make the no_availability type module, which will be the + # default for the availability type param (it will just return 1 as + # the derate) + availability_type = mod.availability_type[g] + return imported_availability_modules[ + availability_type + ].availability_derate_hyb_stor_cap_rule(mod, g, tmp) + + m.Availability_Hyb_Stor_Cap_Derate = Expression( + m.PRJ_OPR_TMPS, rule=availability_derate_hyb_stor_cap_rule + ) def write_model_inputs( @@ -245,7 +269,7 @@ def load_availability_type_modules(required_availability_types): return load_subtype_modules( required_subtype_modules=required_availability_types, package="gridpath.project.availability.availability_types", - required_attributes=["availability_derate_rule"], + required_attributes=["availability_derate_cap_rule"], ) diff --git a/gridpath/project/availability/availability_types/binary.py b/gridpath/project/availability/availability_types/binary.py index 7ff8fb743..da9250d13 100644 --- a/gridpath/project/availability/availability_types/binary.py +++ b/gridpath/project/availability/availability_types/binary.py @@ -1,4 +1,4 @@ -# Copyright 2016-2020 Blue Marble Analytics LLC. +# Copyright 2016-2022 Blue Marble Analytics LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -313,11 +313,16 @@ def min_time_between_events_rule(mod, g, tmp): ############################################################################### -def availability_derate_rule(mod, g, tmp): +def availability_derate_cap_rule(mod, g, tmp): """ """ return 1 - mod.AvlBin_Unavailable[g, tmp] +def availability_derate_hyb_stor_cap_rule(mod, g, tmp): + """ """ + return 1 + + # Input-Output ############################################################################### diff --git a/gridpath/project/availability/availability_types/continuous.py b/gridpath/project/availability/availability_types/continuous.py index 90da3eb46..7b6d564d2 100644 --- a/gridpath/project/availability/availability_types/continuous.py +++ b/gridpath/project/availability/availability_types/continuous.py @@ -1,4 +1,4 @@ -# Copyright 2016-2020 Blue Marble Analytics LLC. +# Copyright 2016-2022 Blue Marble Analytics LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -317,11 +317,16 @@ def min_time_between_events_rule(mod, g, tmp): ############################################################################### -def availability_derate_rule(mod, g, tmp): +def availability_derate_cap_rule(mod, g, tmp): """ """ return 1 - mod.AvlCont_Unavailable[g, tmp] +def availability_derate_hyb_stor_cap_rule(mod, g, tmp): + """ """ + return 1 + + # Input-Output ############################################################################### diff --git a/gridpath/project/availability/availability_types/exogenous.py b/gridpath/project/availability/availability_types/exogenous.py index de08cfa67..f2eca8edf 100644 --- a/gridpath/project/availability/availability_types/exogenous.py +++ b/gridpath/project/availability/availability_types/exogenous.py @@ -1,4 +1,4 @@ -# Copyright 2016-2020 Blue Marble Analytics LLC. +# Copyright 2016-2022 Blue Marble Analytics LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -59,7 +59,7 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): +-------------------------------------------------------------------------+ | Optional Input Params | +=========================================================================+ - | | :code:`avl_exog_derate` | + | | :code:`avl_exog_cap_derate` | | | *Defined over*: :code:`AVL_EXOG_OPR_TMPS` | | | *Within*: :code:`NonNegativeReals` | | | *Default*: :code:`1` | @@ -89,16 +89,31 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): # Required Params ########################################################################### - m.avl_exog_derate = Param(m.AVL_EXOG_OPR_TMPS, within=NonNegativeReals, default=1) + m.avl_exog_cap_derate = Param( + m.AVL_EXOG_OPR_TMPS, within=NonNegativeReals, default=1 + ) + + m.avl_exog_hyb_gen_cap_derate = Param( + m.AVL_EXOG_OPR_TMPS, within=NonNegativeReals, default=1 + ) + + m.avl_exog_hyb_stor_cap_derate = Param( + m.AVL_EXOG_OPR_TMPS, within=NonNegativeReals, default=1 + ) # Availability Type Methods ############################################################################### -def availability_derate_rule(mod, g, tmp): +def availability_derate_cap_rule(mod, g, tmp): """ """ - return mod.avl_exog_derate[g, tmp] + return mod.avl_exog_cap_derate[g, tmp] + + +def availability_derate_hyb_stor_cap_rule(mod, g, tmp): + """ """ + return mod.avl_exog_hyb_stor_cap_derate[g, tmp] # Input-Output @@ -142,7 +157,10 @@ def load_model_data(m, d, data_portal, scenario_directory, subproblem, stage): ) if os.path.exists(availability_file): - data_portal.load(filename=availability_file, param=m.avl_exog_derate) + data_portal.load( + filename=availability_file, + param=(m.avl_exog_cap_derate, m.avl_exog_hyb_stor_cap_derate), + ) else: pass @@ -163,7 +181,8 @@ def get_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn) stage = 1 if stage == "" else stage sql = """ - SELECT project, timepoint, availability_derate + SELECT project, timepoint, availability_derate, + hyb_stor_cap_availability_derate -- Select only projects, periods, timepoints from the relevant -- portfolio, relevant opchar scenario id, operational type, -- and temporal scenario id @@ -249,7 +268,14 @@ def write_model_inputs( availability_tab_file, delimiter="\t", lineterminator="\n" ) - writer.writerow(["project", "timepoint", "availability_derate"]) + writer.writerow( + [ + "project", + "timepoint", + "availability_derate", + "hyb_stor_cap_availability_derate", + ] + ) for row in availabilities: row = ["." if i is None else i for i in row] diff --git a/gridpath/project/operations/__init__.py b/gridpath/project/operations/__init__.py index 95849dc6c..118f6cece 100644 --- a/gridpath/project/operations/__init__.py +++ b/gridpath/project/operations/__init__.py @@ -862,6 +862,28 @@ def get_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn) ) ) + c8 = conn.cursor() + supplemental_firing = c8.execute( + """ + SELECT project, supplemental_firing_project + FROM inputs_project_portfolios + INNER JOIN + (SELECT project, supplemental_firing_scenario_id + FROM inputs_project_operational_chars + WHERE project_operational_chars_scenario_id = {project_opchar_scenario_id} + ) AS op_char + USING (project) + INNER JOIN + inputs_project_supplemental_firing + USING(project, supplemental_firing_scenario_id) + WHERE project_portfolio_scenario_id = {project_portfolio_scenario_id} + AND supplemental_firing_scenario_id IS NOT NULL + """.format( + project_opchar_scenario_id=subscenarios.PROJECT_OPERATIONAL_CHARS_SCENARIO_ID, + project_portfolio_scenario_id=subscenarios.PROJECT_PORTFOLIO_SCENARIO_ID, + ) + ) + return ( proj_opchar, fuels, @@ -870,6 +892,7 @@ def get_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn) startup_chars, cycle_selection, cap_factor_limits, + supplemental_firing, ) @@ -893,6 +916,7 @@ def write_model_inputs( startup_chars, cycle_selection, cap_factor_limits, + supplemental_firing, ) = get_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn) inputs_directory = os.path.join( @@ -983,6 +1007,14 @@ def write_model_inputs( filename="cap_factor_limits.tab", ) + # Write the supplemental firing file + sf_df = cursor_to_df(supplemental_firing) + write_additional_opchar_file( + opchar_df=sf_df, + inputs_directory=inputs_directory, + filename="supplemental_firing.tab", + ) + # Validation ############################################################################### @@ -1007,6 +1039,7 @@ def validate_inputs(scenario_id, subscenarios, subproblem, stage, conn): startup_chars, cycle_select, cap_factor_limits, + supplemental_firing, ) = get_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn) # Convert input data into DataFrame diff --git a/gridpath/project/operations/cycle_select.py b/gridpath/project/operations/cycle_select.py index a6d5d6274..da1ba6496 100644 --- a/gridpath/project/operations/cycle_select.py +++ b/gridpath/project/operations/cycle_select.py @@ -35,13 +35,6 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): +-------------------------------------------------------------------------+ | Sets | +=========================================================================+ - | | :code:`GEN_COMMIT_BINLIN` | - | | *Defined over*: :code:`GEN_COMMIT_BIN` | - | | - | Union of the GEN_COMMIT_BIN and GEN_COMMIT_LIN sets if they exist. We | - | use this set to limit membership in the GEN_W_CYCLE_SELECT set to these | - | operational types. | - +-------------------------------------------------------------------------+ | | :code:`GEN_W_CYCLE_SELECT` | | | *Within*: :code:`GEN_COMMIT_BINLIN` | | | @@ -77,17 +70,6 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): """ # Sets - def gen_commit_binlin_set_init(mod): - if hasattr(mod, "GEN_COMMIT_BIN") and hasattr(m, "GEN_COMMIT_LIN"): - return mod.GEN_COMMIT_BIN | mod.GEN_COMMIT_LIN - elif hasattr(mod, "GEN_COMMIT_BIN"): - return mod.GEN_COMMIT_BIN - elif hasattr(mod, "GEN_COMMIT_LIN"): - return mod.GEN_COMMIT_LIN - else: - return [] - - m.GEN_COMMIT_BINLIN = Set(initialize=gen_commit_binlin_set_init) m.GEN_W_CYCLE_SELECT = Set(within=m.GEN_COMMIT_BINLIN) @@ -137,8 +119,8 @@ def select_cycle_constraint_rule(mod, g, g_cycle_select, tmp): ) return ( - getattr(mod, "GenCommit{}_Synced".format(g_optype))[g, tmp] - + getattr(mod, "GenCommit{}_Synced".format(g_cycle_optype))[ + getattr(mod, "GenCommit{}_Commit".format(g_optype))[g, tmp] + + getattr(mod, "GenCommit{}_Commit".format(g_cycle_optype))[ g_cycle_select, tmp ] <= 1 diff --git a/gridpath/project/operations/operational_types/__init__.py b/gridpath/project/operations/operational_types/__init__.py index e523e0414..3767ba590 100644 --- a/gridpath/project/operations/operational_types/__init__.py +++ b/gridpath/project/operations/operational_types/__init__.py @@ -24,6 +24,7 @@ import csv import os.path +from pyomo.environ import Set from db.common_functions import spin_on_database_lock from gridpath.auxiliary.auxiliary import get_required_subtype_modules_from_projects_file @@ -33,10 +34,17 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): """ + +-------------------------------------------------------------------------+ + | Sets | + +=========================================================================+ + | | :code:`GEN_COMMIT_BINLIN` | + | | *Defined over*: :code:`GEN_COMMIT_BIN` | + | | + | Union of the GEN_COMMIT_BIN and GEN_COMMIT_LIN sets if they exist. We | + | use this set to limit membership in the GEN_W_CYCLE_SELECT set to these | + | operational types. | + +-------------------------------------------------------------------------+ - :param m: - :param d: - :return: """ # Import needed operational modules required_operational_modules = get_required_subtype_modules_from_projects_file( @@ -56,6 +64,20 @@ def add_model_components(m, d, scenario_directory, subproblem, stage): if hasattr(imp_op_m, "add_model_components"): imp_op_m.add_model_components(m, d, scenario_directory, subproblem, stage) + # Combined sets from operational type module sets (used to limit cycle select and + # supplemental firing projects) + def gen_commit_binlin_set_init(mod): + if hasattr(mod, "GEN_COMMIT_BIN") and hasattr(m, "GEN_COMMIT_LIN"): + return mod.GEN_COMMIT_BIN | mod.GEN_COMMIT_LIN + elif hasattr(mod, "GEN_COMMIT_BIN"): + return mod.GEN_COMMIT_BIN + elif hasattr(mod, "GEN_COMMIT_LIN"): + return mod.GEN_COMMIT_LIN + else: + return [] + + m.GEN_COMMIT_BINLIN = Set(initialize=gen_commit_binlin_set_init) + def load_model_data(m, d, data_portal, scenario_directory, subproblem, stage): """ diff --git a/gridpath/project/operations/operational_types/gen_commit_unit_common.py b/gridpath/project/operations/operational_types/gen_commit_unit_common.py index 0e75391c9..211a1e33e 100644 --- a/gridpath/project/operations/operational_types/gen_commit_unit_common.py +++ b/gridpath/project/operations/operational_types/gen_commit_unit_common.py @@ -1801,7 +1801,7 @@ def synced_constraint_rule(mod, g, tmp): ) or ( mod.availability_type[g] == "exogenous" - and mod.avl_exog_derate[g, tmp] == 0 + and mod.avl_exog_cap_derate[g, tmp] == 0 ) or getattr( mod, "gen_commit_{}_min_stable_level_fraction".format(bin_or_lin) diff --git a/gridpath/project/operations/operational_types/gen_var_stor_hyb.py b/gridpath/project/operations/operational_types/gen_var_stor_hyb.py index dfe62ae6e..27be413d8 100644 --- a/gridpath/project/operations/operational_types/gen_var_stor_hyb.py +++ b/gridpath/project/operations/operational_types/gen_var_stor_hyb.py @@ -538,7 +538,7 @@ def max_discharge_rule(mod, s, tmp): return ( mod.GenVarStorHyb_Discharge_MW[s, tmp] <= mod.Hyb_Stor_Capacity_MW[s, mod.period[tmp]] - * mod.Availability_Derate[s, tmp] + * mod.Availability_Hyb_Stor_Cap_Derate[s, tmp] ) @@ -553,7 +553,7 @@ def max_charge_rule(mod, s, tmp): return ( mod.GenVarStorHyb_Charge_MW[s, tmp] <= mod.Hyb_Stor_Capacity_MW[s, mod.period[tmp]] - * mod.Availability_Derate[s, tmp] + * mod.Availability_Hyb_Stor_Cap_Derate[s, tmp] ) diff --git a/gridpath/project/operations/reserves/op_type_dependent/reserve_limits_by_op_type.py b/gridpath/project/operations/reserves/op_type_dependent/reserve_limits_by_op_type.py index 85fc5d267..05f08ce37 100644 --- a/gridpath/project/operations/reserves/op_type_dependent/reserve_limits_by_op_type.py +++ b/gridpath/project/operations/reserves/op_type_dependent/reserve_limits_by_op_type.py @@ -79,10 +79,8 @@ def generic_add_model_components( def reserve_provision_ramp_rate_limit_rule(mod, g, tmp): """ - Don't create constraint if the project can ramp its full capacity in - the timepoint :param mod: - :param p: + :param g: :param tmp: :return: """ @@ -95,14 +93,11 @@ def reserve_provision_ramp_rate_limit_rule(mod, g, tmp): else op_type.online_capacity_rule(mod, g, tmp) ) - if getattr(m, reserve_provision_ramp_rate_limit_param) == 1: - return Constraint.Skip - else: - return ( - getattr(mod, reserve_provision_variable_name)[g, tmp] - <= getattr(mod, reserve_provision_ramp_rate_limit_param)[g] - * online_capacity - ) + return ( + getattr(mod, reserve_provision_variable_name)[g, tmp] + <= getattr(mod, reserve_provision_ramp_rate_limit_param)[g] + * online_capacity + ) setattr( m, diff --git a/gridpath/project/operations/supplemental_firing.py b/gridpath/project/operations/supplemental_firing.py new file mode 100644 index 000000000..fd3f1c74b --- /dev/null +++ b/gridpath/project/operations/supplemental_firing.py @@ -0,0 +1,175 @@ +# Copyright 2016-2022 Blue Marble Analytics LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +The **gridpath.project.operations.cycle_select** module is a project-level +module that adds to the formulation components that describe cycle selection +constraints, i.e. mutually exclusive syncing of projects. An example might be a plant +that can be operated in either simple cycle or combined cycle mode. This plant would +be described by multiple projects with mutually exclusive Sync variables, i.e. only +one of the projects can be synced at any time. +""" + +import csv +import os.path +from pyomo.environ import Set, Constraint + + +def add_model_components(m, d, scenario_directory, subproblem, stage): + """ + The tables below list the Pyomo model components defined in the + 'gen_commit_bin' module followed below by the respective components + defined in the 'gen_commit_lin" module. + + +-------------------------------------------------------------------------+ + | Sets | + +=========================================================================+ + | | :code:`GEN_W_SUPPLEMENTAL_FIRING` | + | | *Within*: :code:`GEN_COMMIT_BINLIN` | + | | + | Projects that have "cycle select" constraints. | + +-------------------------------------------------------------------------+ + | | :code:`GEN_SUPPLEMENTAL_FIRING_BY_GEN` | + | | *Defined over*: :code:`GEN_W_SUPPLEMENTAL_FIRING` | + | | *Within*: :code:`GEN_COMMIT_BINLIN` | + | | + | Indexed set that describes each project's list of "cycle select" -- | + | projects that cannot be 'synced' when this project is synced, e.g. when | + | choosing simple-cycle vs. combined cycle operational model. | + +-------------------------------------------------------------------------+ + | | :code:`GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPS` | + | | + | Three-dimensional set with generators of the respective operational | + | type, their "supplemental firing" projects, and their their operational | + | timepoints. Note that projects that don't have "supplemental firing" | + | projects are not included in this set. | + +-------------------------------------------------------------------------+ + + +-------------------------------------------------------------------------+ + | Constraints | + +-------------------------------------------------------------------------+ + | | :code:`Gen_Commit_BinLin_Select_Cycle_Constraint` | + | | *Defined over*: :code:`GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPS` | + | | + | This generator can only be synced if the "cycle select" generator is | + | not synced (the sum of the Sync variables of the two must be less than | + | or equal to 1. | + +-------------------------------------------------------------------------+ + + """ + + # Sets + + m.GEN_W_SUPPLEMENTAL_FIRING = Set(within=m.GEN_COMMIT_BINLIN) + + m.GEN_SUPPLEMENTAL_FIRING_BY_GEN = Set( + m.GEN_W_SUPPLEMENTAL_FIRING, within=m.GEN_COMMIT_BINLIN + ) + + m.GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPS = Set( + dimen=3, + initialize=lambda mod: [ + (g, g_supplemental, tmp) + for g in mod.GEN_W_SUPPLEMENTAL_FIRING + for p in mod.OPR_PRDS_BY_PRJ[g] + for tmp in mod.TMPS_IN_PRD[p] + for g_supplemental in mod.GEN_SUPPLEMENTAL_FIRING_BY_GEN[g] + ], + ) + + # Constraints + def supplemental_firing_constraint_rule(mod, g, g_supplemental_firing, tmp): + """ + The supplemental generator can only be on if the "main" generator is on. + """ + # Find the optype for g + bin_or_lin_optype = mod.operational_type[g] + if bin_or_lin_optype == "gen_commit_bin": + g_optype = "Bin" + elif bin_or_lin_optype == "gen_commit_lin": + g_optype = "Lin" + else: + raise ValueError( + """GridPath ERROR: + Allowed types are 'gen_commit_bin' or 'gen_commit_lin'. + You used {}.""".format( + bin_or_lin_optype + ) + ) + + # Find the optype for g_supplemental_firing (this may be different from g's + # optype) + if mod.operational_type[g_supplemental_firing] == "gen_commit_bin": + g_supplemental_optype = "Bin" + elif mod.operational_type[g_supplemental_firing] == "gen_commit_lin": + g_supplemental_optype = "Lin" + else: + raise ValueError( + "Supplemental firing can only apply to projects of the " + "gen_commit_bin and gen_commit_lin operational types. " + "The operational type of {} is {}.".format( + g_supplemental_firing, mod.operational_type[g_supplemental_firing] + ) + ) + + return ( + getattr(mod, "GenCommit{}_Commit".format(g_supplemental_optype))[ + g_supplemental_firing, tmp + ] + <= getattr(mod, "GenCommit{}_Commit".format(g_optype))[g, tmp] + ) + + m.Gen_Commit_BinLin_Supplemental_Firing_Constraint = Constraint( + m.GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPS, + rule=supplemental_firing_constraint_rule, + ) + + +def load_model_data(mod, d, data_portal, scenario_directory, subproblem, stage): + """ + :param mod: + :param data_portal: + :param scenario_directory: + :param subproblem: + :param stage: + :return: + """ + # Load any projects for cycle selection + supplemental_firing_tab_file = os.path.join( + scenario_directory, + str(subproblem), + str(stage), + "inputs", + "supplemental_firing.tab", + ) + + supplemental_firing_by_project = {} + if os.path.exists(supplemental_firing_tab_file): + with open(supplemental_firing_tab_file) as f: + reader = csv.reader(f, delimiter="\t") + next(reader) # skip header + for row in reader: + [g, supplemental_firing_g] = row + if g in supplemental_firing_by_project.keys(): + supplemental_firing_by_project[g].append(supplemental_firing_g) + else: + supplemental_firing_by_project[g] = [supplemental_firing_g] + + data_portal.data()["GEN_W_SUPPLEMENTAL_FIRING"] = list( + set(supplemental_firing_by_project.keys()) + ) + + data_portal.data()[ + "GEN_SUPPLEMENTAL_FIRING_BY_GEN" + ] = supplemental_firing_by_project diff --git a/gridpath/run_scenario.py b/gridpath/run_scenario.py index 998659f36..47d3ca6a0 100644 --- a/gridpath/run_scenario.py +++ b/gridpath/run_scenario.py @@ -23,7 +23,7 @@ import argparse from csv import reader, writer import datetime -from multiprocessing import Pool, Manager +from multiprocessing import get_context, Manager import os.path from pyomo.environ import ( AbstractModel, @@ -406,7 +406,8 @@ def run_scenario(scenario_directory, subproblem_structure, parsed_arguments): for subproblem in subproblem_structure.SUBPROBLEM_STAGES.keys(): objective_values[subproblem] = manager.dict() - pool = Pool(n_parallel_subproblems) + # Pool must use spawn to work properly on Linux + pool = get_context("spawn").Pool(n_parallel_subproblems) pool_data = tuple( [ [ diff --git a/gridpath/system/load_balance/market_participation.py b/gridpath/system/load_balance/market_participation.py index dba9bc48c..6f99c2718 100644 --- a/gridpath/system/load_balance/market_participation.py +++ b/gridpath/system/load_balance/market_participation.py @@ -349,6 +349,10 @@ def export_results(scenario_directory, subproblem, stage, m, d): "number_of_hours_in_timepoint", "sell_power", "buy_power", + "net_buy_power", + "final_sell_power_position", + "final_buy_power_position", + "final_net_buy_power_position", ] ) for (z, mrkt) in getattr(m, "LZ_MARKETS"): @@ -365,6 +369,12 @@ def export_results(scenario_directory, subproblem, stage, m, d): m.hrs_in_tmp[tmp], value(m.Sell_Power[z, mrkt, tmp]), value(m.Buy_Power[z, mrkt, tmp]), + value(m.Buy_Power[z, mrkt, tmp]) + - value(m.Sell_Power[z, mrkt, tmp]), + value(m.Final_Sell_Power_Position[z, mrkt, tmp]), + value(m.Final_Buy_Power_Position[z, mrkt, tmp]), + value(m.Final_Buy_Power_Position[z, mrkt, tmp]) + - value(m.Final_Sell_Power_Position[z, mrkt, tmp]), ] ) @@ -413,6 +423,10 @@ def import_results_into_database( number_of_hours_in_timepoint = row[7] sell_power = row[8] buy_power = row[9] + net_buy_power = row[10] + final_sell_power = row[11] + final_buy_power = row[12] + final_net_buy_power = row[13] results.append( ( @@ -429,6 +443,10 @@ def import_results_into_database( number_of_hours_in_timepoint, sell_power, buy_power, + net_buy_power, + final_sell_power, + final_buy_power, + final_net_buy_power, ) ) insert_temp_sql = """ @@ -437,8 +455,9 @@ def import_results_into_database( (scenario_id, load_zone, market, subproblem_id, stage_id, timepoint, period, discount_factor, number_years_represented, timepoint_weight, number_of_hours_in_timepoint, - sell_power, buy_power) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); + sell_power, buy_power, net_buy_power, final_sell_power, final_buy_power, + final_net_buy_power) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); """.format( scenario_id ) @@ -450,12 +469,14 @@ def import_results_into_database( (scenario_id, load_zone, market, subproblem_id, stage_id, timepoint, period, discount_factor, number_years_represented, timepoint_weight, number_of_hours_in_timepoint, - sell_power, buy_power) + sell_power, buy_power, net_buy_power, final_sell_power, final_buy_power, + final_net_buy_power) SELECT scenario_id, load_zone, market, subproblem_id, stage_id, timepoint, period, discount_factor, number_years_represented, timepoint_weight, number_of_hours_in_timepoint, - sell_power, buy_power + sell_power, buy_power, net_buy_power, final_sell_power, final_buy_power, + final_net_buy_power FROM temp_results_system_market_participation{} ORDER BY scenario_id, load_zone, market, subproblem_id, stage_id, timepoint; diff --git a/gridpath/system/reserves/requirement/reserve_requirements.py b/gridpath/system/reserves/requirement/reserve_requirements.py index a68a396ae..29d771ef2 100644 --- a/gridpath/system/reserves/requirement/reserve_requirements.py +++ b/gridpath/system/reserves/requirement/reserve_requirements.py @@ -264,38 +264,30 @@ def generic_get_inputs_from_database( ) tmp_req = c.execute( - """SELECT {}_ba, timepoint, {}_mw{} - FROM inputs_system_{} + """SELECT {reserve_type}_ba, timepoint, {reserve_type}_mw{partial_freq_resp_extra_column} + FROM inputs_system_{reserve_type} INNER JOIN - (SELECT timepoint + (SELECT stage_id, timepoint FROM inputs_temporal - WHERE temporal_scenario_id = {} - AND subproblem_id = {} - AND stage_id = {}) as relevant_timepoints - USING (timepoint) + WHERE temporal_scenario_id = {temporal_scenario_id} + AND subproblem_id = {subproblem} + AND stage_id = {stage}) as relevant_timepoints + USING (stage_id, timepoint) INNER JOIN - (SELECT {}_ba - FROM inputs_geography_{}_bas - WHERE {}_ba_scenario_id = {}) as relevant_bas - USING ({}_ba) - WHERE {}_scenario_id = {} - AND stage_id = {} + (SELECT {reserve_type}_ba + FROM inputs_geography_{reserve_type}_bas + WHERE {reserve_type}_ba_scenario_id = {reserve_type_ba_subscenario_id}) as relevant_bas + USING ({reserve_type}_ba) + WHERE {reserve_type}_scenario_id = {reserve_type_req_subscenario_id} + AND stage_id = {stage} """.format( - reserve_type, - reserve_type, - partial_freq_resp_extra_column, - reserve_type, - subscenarios.TEMPORAL_SCENARIO_ID, - subproblem, - stage, - reserve_type, - reserve_type, - reserve_type, - reserve_type_ba_subscenario_id, - reserve_type, - reserve_type, - reserve_type_req_subscenario_id, - stage, + reserve_type=reserve_type, + partial_freq_resp_extra_column=partial_freq_resp_extra_column, + temporal_scenario_id=subscenarios.TEMPORAL_SCENARIO_ID, + subproblem=subproblem, + stage=stage, + reserve_type_ba_subscenario_id=reserve_type_ba_subscenario_id, + reserve_type_req_subscenario_id=reserve_type_req_subscenario_id, ) ) @@ -303,11 +295,14 @@ def generic_get_inputs_from_database( # Get any percentage requirement percentage_req = c2.execute( """ - SELECT {}_ba, percent_load_req - FROM inputs_system_{}_percent - WHERE {}_scenario_id = {} + SELECT {reserve_type}_ba, percent_load_req + FROM inputs_system_{reserve_type}_percent + WHERE {reserve_type}_scenario_id = {reserve_type_req_subscenario_id} + AND stage_id = {stage} """.format( - reserve_type, reserve_type, reserve_type, reserve_type_req_subscenario_id + reserve_type=reserve_type, + reserve_type_req_subscenario_id=reserve_type_req_subscenario_id, + stage=stage, ) ) @@ -340,7 +335,8 @@ def generic_get_inputs_from_database( c4 = conn.cursor() project_contributions = c4.execute( """ - SELECT {reserve_type}_ba, project, percent_power_req, percent_capacity_req + SELECT {reserve_type}_ba, project, percent_power_req, + percent_capacity_req FROM inputs_system_{reserve_type}_project JOIN ( SELECT {reserve_type}_ba @@ -359,11 +355,13 @@ def generic_get_inputs_from_database( ) as relevant_prj USING (project) WHERE {reserve_type}_scenario_id = {reserve_type_req_subscenario_id} + AND stage_id = {stage} """.format( reserve_type=reserve_type, reserve_type_ba_subscenario_id=reserve_type_ba_subscenario_id, scenario_id=scenario_id, reserve_type_req_subscenario_id=reserve_type_req_subscenario_id, + stage=stage, ) ) diff --git a/gridpath/temporal/operations/timepoints.py b/gridpath/temporal/operations/timepoints.py index 1fd6ac7af..e13d28133 100644 --- a/gridpath/temporal/operations/timepoints.py +++ b/gridpath/temporal/operations/timepoints.py @@ -321,40 +321,54 @@ def process_results(db, c, scenario_id, subscenarios, quiet): :param quiet: :return: """ - if not quiet: - print("add spinup_or_lookahead flag") - - # Update tables with spinup_or_lookahead_flag - tables_to_update = determine_table_subset_by_start_and_column( - conn=db, tbl_start="results_", cols=["timepoint", "spinup_or_lookahead"] - ) - - for tbl in tables_to_update: + # Check if there are any spinup or lookahead timepoints + spinup_or_lookahead_sql = """ + SELECT spinup_or_lookahead + FROM inputs_temporal + WHERE spinup_or_lookahead = 1 + AND temporal_scenario_id = ( + SELECT temporal_scenario_id + FROM scenarios + WHERE scenario_id = ?) + """ + spinup_or_lookahead = c.execute(spinup_or_lookahead_sql, (scenario_id,)).fetchall() + if spinup_or_lookahead: if not quiet: - print("... {}".format(tbl)) - sql = """ - UPDATE {} - SET spinup_or_lookahead = ( - SELECT spinup_or_lookahead - FROM inputs_temporal - WHERE temporal_scenario_id = ( - SELECT temporal_scenario_id - FROM scenarios - WHERE scenario_id = ? - ) - AND {}.subproblem_id = - inputs_temporal.subproblem_id - AND {}.stage_id = inputs_temporal.stage_id - AND {}.timepoint = inputs_temporal.timepoint - ); - """.format( - tbl, tbl, tbl, tbl - ) + print("add spinup_or_lookahead flag") - spin_on_database_lock( - conn=db, cursor=c, sql=sql, data=(scenario_id,), many=False + # Update tables with spinup_or_lookahead_flag + tables_to_update = determine_table_subset_by_start_and_column( + conn=db, tbl_start="results_", cols=["timepoint", "spinup_or_lookahead"] ) + for tbl in tables_to_update: + if not quiet: + print("... {}".format(tbl)) + sql = """ + UPDATE {} + SET spinup_or_lookahead = ( + SELECT spinup_or_lookahead + FROM inputs_temporal + WHERE temporal_scenario_id = ( + SELECT temporal_scenario_id + FROM scenarios + WHERE scenario_id = ? + ) + AND {}.subproblem_id = + inputs_temporal.subproblem_id + AND {}.stage_id = inputs_temporal.stage_id + AND {}.timepoint = inputs_temporal.timepoint + ); + """.format( + tbl, tbl, tbl, tbl + ) + + spin_on_database_lock( + conn=db, cursor=c, sql=sql, data=(scenario_id,), many=False + ) + else: + pass + # Validation ############################################################################### diff --git a/gridpath/transmission/capacity/capacity_groups.py b/gridpath/transmission/capacity/capacity_groups.py new file mode 100644 index 000000000..c3d5d1c48 --- /dev/null +++ b/gridpath/transmission/capacity/capacity_groups.py @@ -0,0 +1,442 @@ +# Copyright 2022 (c) Crown Copyright, GC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Minimum and maximum new and total capacity by period and transmission line group. +""" + +import csv +import os.path +import pandas as pd +from pyomo.environ import Set, Param, Constraint, NonNegativeReals, Expression, value + +from db.common_functions import spin_on_database_lock +from gridpath.auxiliary.auxiliary import get_required_subtype_modules_from_projects_file +from gridpath.auxiliary.db_interface import setup_results_import +import gridpath.transmission.capacity.capacity_types as cap_type_init +from gridpath.transmission.capacity.common_functions import ( + load_tx_capacity_type_modules, +) + + +def add_model_components(m, d, scenario_directory, subproblem, stage): + """ + The following Pyomo model components are defined in this module: + + +-------------------------------------------------------------------------+ + | Sets | + +=========================================================================+ + | | :code:`TX_CAPACITY_GROUP_PERIODS` | + | | + | A two-dimensional set of group-period combinations for which there may | + | be group capacity requirements. | + +-------------------------------------------------------------------------+ + | | :code:`TX_CAPACITY_GROUPS` | + | | + | The groups of transmission lines for which there may be group capacity | + | requirements. | + +-------------------------------------------------------------------------+ + | | :code:`TX_IN_TX_CAPACITY_GROUP` | + | | + | The list of transmission lines by capacity group. | + +-------------------------------------------------------------------------+ + + +-------------------------------------------------------------------------+ + | Optional Input Params | + +=========================================================================+ + | | :code:`tx_capacity_group_new_capacity_min` | + | | *Defined over*: :code:`TX_CAPACITY_GROUP_PERIODS` | + | | *Within*: :code:`NonNegativeReals` | + | | *Default*: :code:`0` | + | | + | The minimum amount of capacity (in MW) that must be built at | + | transmission lines in this group in a given period. | + +-------------------------------------------------------------------------+ + | | :code:`tx_capacity_group_new_capacity_max` | + | | *Defined over*: :code:`TX_CAPACITY_GROUP_PERIODS` | + | | *Within*: :code:`NonNegativeReals` | + | | *Default*: :code:`inf` | + | | + | The maximum amount of capacity (in MW) that may be built at | + | transmission lines in this group in a given period. | + +-------------------------------------------------------------------------+ + + | + + +-------------------------------------------------------------------------+ + | Expressions | + +=========================================================================+ + | | :code:`Tx_Group_New_Capacity_in_Period` | + | | *Defined over*: :code:`TX_CAPACITY_GROUP_PERIODS` | + | | + | The new capacity built at transmission lines in this group in this | + | period. | + +-------------------------------------------------------------------------+ + + | + + +-------------------------------------------------------------------------+ + | Constraints | + +=========================================================================+ + | | :code:`Max_Tx_Group_Build_in_Period_Constraint` | + | | *Defined over*: :code:`TX_CAPACITY_GROUP_PERIODS` | + | | + | Limits the amount of new build in each group in each period. | + +-------------------------------------------------------------------------+ + | | :code:`Min_Tx_Group_Build_in_Period_Constraint` | + | | *Defined over*: :code:`TX_CAPACITY_GROUP_PERIODS` | + | | + | Requires a certain amount of new build in each group in each period. | + +-------------------------------------------------------------------------+ + + """ + + # Sets + m.TX_CAPACITY_GROUP_PERIODS = Set(dimen=2) + + m.TX_CAPACITY_GROUPS = Set( + initialize=lambda mod: list( + set([g for (g, p) in mod.TX_CAPACITY_GROUP_PERIODS]) + ) + ) + + m.TX_IN_TX_CAPACITY_GROUP = Set(m.TX_CAPACITY_GROUPS, within=m.TX_LINES) + + # Params + m.tx_capacity_group_new_capacity_min = Param( + m.TX_CAPACITY_GROUP_PERIODS, within=NonNegativeReals, default=0 + ) + m.tx_capacity_group_new_capacity_max = Param( + m.TX_CAPACITY_GROUP_PERIODS, within=NonNegativeReals, default=float("inf") + ) + + # Import needed capacity type modules + required_tx_capacity_modules = get_required_subtype_modules_from_projects_file( + scenario_directory=scenario_directory, + subproblem=subproblem, + stage=stage, + prj_or_tx="transmission_line", + which_type="tx_capacity_type", + ) + + imported_tx_capacity_modules = load_tx_capacity_type_modules( + required_tx_capacity_modules + ) + + # Get the new and total capacity in the group for the respective + # expressions + def new_capacity_rule(mod, tx, prd): + cap_type = mod.tx_capacity_type[tx] + # The tx capacity type modules check if this period is a "vintage" for + # this project and return 0 if not + if hasattr(imported_tx_capacity_modules[cap_type], "new_capacity_rule"): + return imported_tx_capacity_modules[cap_type].new_capacity_rule( + mod, tx, prd + ) + else: + return cap_type_init.new_capacity_rule(mod, tx, prd) + + # Expressions + def tx_group_new_capacity_rule(mod, grp, prd): + return sum( + new_capacity_rule(mod, tx, prd) for tx in mod.TX_IN_TX_CAPACITY_GROUP[grp] + ) + + m.Tx_Group_New_Capacity_in_Period = Expression( + m.TX_CAPACITY_GROUP_PERIODS, rule=tx_group_new_capacity_rule + ) + + # Constraints + # Limit the min and max amount of new build in a group-period + m.Max_Tx_Group_Build_in_Period_Constraint = Constraint( + m.TX_CAPACITY_GROUP_PERIODS, rule=new_capacity_max_rule + ) + + m.Min_Tx_Group_Build_in_Period_Constraint = Constraint( + m.TX_CAPACITY_GROUP_PERIODS, rule=new_capacity_min_rule + ) + + +# Constraint Formulation Rules +############################################################################### +def new_capacity_max_rule(mod, grp, prd): + return ( + mod.Tx_Group_New_Capacity_in_Period[grp, prd] + <= mod.tx_capacity_group_new_capacity_max[grp, prd] + ) + + +def new_capacity_min_rule(mod, grp, prd): + return ( + mod.Tx_Group_New_Capacity_in_Period[grp, prd] + >= mod.tx_capacity_group_new_capacity_min[grp, prd] + ) + + +# Input-Output +############################################################################### + + +def load_model_data(m, d, data_portal, scenario_directory, subproblem, stage): + """ """ + # Only load data if the input files were written; otherwise, we won't + # initialize the components in this module + + req_file = os.path.join( + scenario_directory, + subproblem, + stage, + "inputs", + "transmission_capacity_group_requirements.tab", + ) + if os.path.exists(req_file): + data_portal.load( + filename=req_file, + index=m.TX_CAPACITY_GROUP_PERIODS, + param=( + m.tx_capacity_group_new_capacity_min, + m.tx_capacity_group_new_capacity_max, + ), + ) + else: + pass + + tx_file = os.path.join( + scenario_directory, + subproblem, + stage, + "inputs", + "transmission_capacity_group_transmission_lines.tab", + ) + if os.path.exists(tx_file): + tx_groups_df = pd.read_csv(tx_file, delimiter="\t") + tx_groups_dict = { + g: v["transmission_line"].tolist() + for g, v in tx_groups_df.groupby("transmission_capacity_group") + } + data_portal.data()["TX_IN_TX_CAPACITY_GROUP"] = tx_groups_dict + else: + pass + + +def export_results(scenario_directory, subproblem, stage, m, d): + """ """ + req_file = os.path.join( + scenario_directory, + subproblem, + stage, + "inputs", + "transmission_capacity_group_requirements.tab", + ) + tx_file = os.path.join( + scenario_directory, + subproblem, + stage, + "inputs", + "transmission_capacity_group_transmission_lines.tab", + ) + + if os.path.exists(req_file) and os.path.exists(tx_file): + with open( + os.path.join( + scenario_directory, + str(subproblem), + str(stage), + "results", + "transmission_capacity_groups.csv", + ), + "w", + newline="", + ) as f: + writer = csv.writer(f) + writer.writerow( + [ + "transmission_capacity_group", + "period", + "new_capacity", + "transmission_capacity_group_new_capacity_min", + "transmission_capacity_group_new_capacity_max", + ] + ) + for (grp, prd) in m.TX_CAPACITY_GROUP_PERIODS: + writer.writerow( + [ + grp, + prd, + value(m.Tx_Group_New_Capacity_in_Period[grp, prd]), + m.tx_capacity_group_new_capacity_min[grp, prd], + m.tx_capacity_group_new_capacity_max[grp, prd], + ] + ) + + +# Database +############################################################################### + + +def get_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn): + """ + :param subscenarios: SubScenarios object with all subscenario info + :param subproblem: + :param stage: + :param conn: database connection + :return: + """ + + c1 = conn.cursor() + cap_grp_reqs = c1.execute( + """ + SELECT transmission_capacity_group, period, + transmission_capacity_group_new_capacity_min, transmission_capacity_group_new_capacity_max + FROM inputs_transmission_capacity_group_requirements + WHERE transmission_capacity_group_requirement_scenario_id = {} + """.format( + subscenarios.TRANSMISSION_CAPACITY_GROUP_REQUIREMENT_SCENARIO_ID + ) + ) + + c2 = conn.cursor() + cap_grp_tx = c2.execute( + """ + SELECT transmission_capacity_group, transmission_line + FROM inputs_transmission_capacity_groups + WHERE transmission_capacity_group_scenario_id = {} + """.format( + subscenarios.TRANSMISSION_CAPACITY_GROUP_SCENARIO_ID + ) + ) + + return cap_grp_reqs, cap_grp_tx + + +def write_model_inputs( + scenario_directory, scenario_id, subscenarios, subproblem, stage, conn +): + """ """ + cap_grp_reqs, cap_grp_tx = get_inputs_from_database( + scenario_id, subscenarios, subproblem, stage, conn + ) + + # Write the input files only if a subscenario is specified + if subscenarios.TRANSMISSION_CAPACITY_GROUP_REQUIREMENT_SCENARIO_ID != "NULL": + with open( + os.path.join( + scenario_directory, + str(subproblem), + str(stage), + "inputs", + "transmission_capacity_group_requirements.tab", + ), + "w", + newline="", + ) as req_file: + writer = csv.writer(req_file, delimiter="\t", lineterminator="\n") + + # Write header + writer.writerow( + [ + "transmission_capacity_group", + "period", + "transmission_capacity_group_new_capacity_min", + "transmission_capacity_group_new_capacity_max", + ] + ) + + for row in cap_grp_reqs: + replace_nulls = ["." if i is None else i for i in row] + writer.writerow(replace_nulls) + + if subscenarios.TRANSMISSION_CAPACITY_GROUP_SCENARIO_ID != "NULL": + with open( + os.path.join( + scenario_directory, + str(subproblem), + str(stage), + "inputs", + "transmission_capacity_group_transmission_lines.tab", + ), + "w", + newline="", + ) as prj_file: + writer = csv.writer(prj_file, delimiter="\t", lineterminator="\n") + + # Write header + writer.writerow(["transmission_capacity_group", "transmission_line"]) + + for row in cap_grp_tx: + writer.writerow(row) + + +def import_results_into_database( + scenario_id, subproblem, stage, c, db, results_directory, quiet +): + # Import only if a results-file was exported + results_file = os.path.join(results_directory, "transmission_capacity_groups.csv") + if os.path.exists(results_file): + if not quiet: + print("transmission group capacity") + + # Delete prior results and create temporary import table for ordering + setup_results_import( + conn=db, + cursor=c, + table="results_transmission_group_capacity", + scenario_id=scenario_id, + subproblem=subproblem, + stage=stage, + ) + + # Load results into the temporary table + results = [] + with open(results_file, "r") as f: + reader = csv.reader(f) + + next(reader) # skip header + for row in reader: + results.append((scenario_id, subproblem, stage) + tuple(row)) + + insert_temp_sql = """ + INSERT INTO temp_results_transmission_group_capacity{} + (scenario_id, subproblem_id, stage_id, + transmission_capacity_group, period, + group_new_capacity, + transmission_capacity_group_new_capacity_min, + transmission_capacity_group_new_capacity_max) + VALUES (?, ?, ?, ?, ?, ?, ?, ?); + """.format( + scenario_id + ) + spin_on_database_lock(conn=db, cursor=c, sql=insert_temp_sql, data=results) + + # Insert sorted results into permanent results table + insert_sql = """ + INSERT INTO results_transmission_group_capacity + (scenario_id, subproblem_id, stage_id, + transmission_capacity_group, period, + group_new_capacity, + transmission_capacity_group_new_capacity_min, + transmission_capacity_group_new_capacity_max) + SELECT + scenario_id, subproblem_id, stage_id, + transmission_capacity_group, period, + group_new_capacity, + transmission_capacity_group_new_capacity_min, + transmission_capacity_group_new_capacity_max + FROM temp_results_transmission_group_capacity{} + ORDER BY scenario_id, subproblem_id, stage_id, + transmission_capacity_group, period; + """.format( + scenario_id + ) + spin_on_database_lock(conn=db, cursor=c, sql=insert_sql, data=(), many=False) diff --git a/gridpath/transmission/capacity/capacity_types/__init__.py b/gridpath/transmission/capacity/capacity_types/__init__.py index 02d941093..7d24b49b0 100644 --- a/gridpath/transmission/capacity/capacity_types/__init__.py +++ b/gridpath/transmission/capacity/capacity_types/__init__.py @@ -129,3 +129,12 @@ def write_model_inputs( ) else: pass + + +# Capacity Type Module Method Defaults +############################################################################### +def new_capacity_rule(mod, prj, prd): + """ + New capacity built at project g in period p. + """ + return 0 diff --git a/gridpath/transmission/capacity/capacity_types/tx_new_lin.py b/gridpath/transmission/capacity/capacity_types/tx_new_lin.py index 917c97aa5..c4b9007b3 100644 --- a/gridpath/transmission/capacity/capacity_types/tx_new_lin.py +++ b/gridpath/transmission/capacity/capacity_types/tx_new_lin.py @@ -414,6 +414,13 @@ def tx_capacity_cost_rule(mod, g, p): ) +def new_capacity_rule(mod, g, p): + """ + New capacity built at transmission line tx in period p. + """ + return mod.TxNewLin_Build_MW[g, p] if (g, p) in mod.TX_NEW_LIN_VNTS else 0 + + # Input-Output ############################################################################### diff --git a/gridpath/transmission/operations/operational_types/tx_simple.py b/gridpath/transmission/operations/operational_types/tx_simple.py index 961a7bbec..4fd4c9485 100644 --- a/gridpath/transmission/operations/operational_types/tx_simple.py +++ b/gridpath/transmission/operations/operational_types/tx_simple.py @@ -504,117 +504,102 @@ def load_model_data(m, d, data_portal, scenario_directory, subproblem, stage): # Load data data_portal.data()["tx_simple_loss_factor"] = loss_factor - # Min Flow - transmission_tmps_with_min = list() - min_flow_mw = dict() - - header = pd.read_csv( - os.path.join( - scenario_directory, - str(subproblem), - str(stage), - "inputs", - "transmission_flow.tab", - ), - sep="\t", - header=None, - nrows=1, - ).values[0] - - optional_columns = ["min_flow_mw"] - used_columns = [c for c in optional_columns if c in header] - - df = pd.read_csv( - os.path.join( - scenario_directory, - str(subproblem), - str(stage), - "inputs", - "transmission_flow.tab", - ), - sep="\t", - usecols=["transmission_line", "timepoint"] + used_columns, + transmission_flow_limits_file = os.path.join( + scenario_directory, + str(subproblem), + str(stage), + "inputs", + "transmission_flow_limits.tab", ) - # min_flow_mw is optional, - # so TX_SIMPLE_OPR_TMPS_W_MIN_CONSTRAINT - # and min_flow_mw simply won't be initialized if - # min_flow_mw does not exist in the input file - if "min_flow_mw" in df.columns: - for row in zip(df["transmission_line"], df["timepoint"], df["min_flow_mw"]): - if row[2] != ".": - transmission_tmps_with_min.append((row[0], row[1])) - min_flow_mw[(row[0], row[1])] = float(row[2]) - else: - pass - else: - pass - - # Load min flow data - if not transmission_tmps_with_min: - pass # if the list is empty, don't initialize the set - else: - data_portal.data()["TX_SIMPLE_OPR_TMPS_W_MIN_CONSTRAINT"] = { - None: transmission_tmps_with_min - } - - data_portal.data()["tx_simple_min_flow_mw"] = min_flow_mw - - # Max Flow - transmission_tmps_with_max = list() - max_flow_mw = dict() - - header = pd.read_csv( - os.path.join( - scenario_directory, - str(subproblem), - str(stage), - "inputs", - "transmission_flow.tab", - ), - sep="\t", - header=None, - nrows=1, - ).values[0] - - optional_columns = ["max_flow_mw"] - used_columns = [c for c in optional_columns if c in header] - - df = pd.read_csv( - os.path.join( - scenario_directory, - str(subproblem), - str(stage), - "inputs", - "transmission_flow.tab", - ), - sep="\t", - usecols=["transmission_line", "timepoint"] + used_columns, - ) - - # max_flow_mw is optional, - # so TX_SIMPLE_OPR_TMPS_W_MAX_CONSTRAINT - # and max_flow_mw simply won't be initialized if - # max_flow_mw does not exist in the input file - if "max_flow_mw" in df.columns: - for row in zip(df["transmission_line"], df["timepoint"], df["max_flow_mw"]): - if row[2] != ".": - transmission_tmps_with_max.append((row[0], row[1])) - max_flow_mw[(row[0], row[1])] = float(row[2]) - else: - pass - else: - pass + if os.path.exists(transmission_flow_limits_file): + # Min Flow + transmission_tmps_with_min = list() + min_flow_mw = dict() + + header = pd.read_csv( + transmission_flow_limits_file, + sep="\t", + header=None, + nrows=1, + ).values[0] + + optional_columns = ["min_flow_mw"] + used_columns = [c for c in optional_columns if c in header] + + df = pd.read_csv( + transmission_flow_limits_file, + sep="\t", + usecols=["transmission_line", "timepoint"] + used_columns, + ) - # Load max flow data - if not transmission_tmps_with_max: - pass # if the list is empty, don't initialize the set - else: - data_portal.data()["TX_SIMPLE_OPR_TMPS_W_MAX_CONSTRAINT"] = { - None: transmission_tmps_with_max - } + # min_flow_mw is optional, + # so TX_SIMPLE_OPR_TMPS_W_MIN_CONSTRAINT + # and min_flow_mw simply won't be initialized if + # min_flow_mw does not exist in the input file + if "min_flow_mw" in df.columns: + for row in zip(df["transmission_line"], df["timepoint"], df["min_flow_mw"]): + if row[2] != ".": + transmission_tmps_with_min.append((row[0], row[1])) + min_flow_mw[(row[0], row[1])] = float(row[2]) + else: + pass + else: + pass + + # Load min flow data + if not transmission_tmps_with_min: + pass # if the list is empty, don't initialize the set + else: + data_portal.data()["TX_SIMPLE_OPR_TMPS_W_MIN_CONSTRAINT"] = { + None: transmission_tmps_with_min + } + + data_portal.data()["tx_simple_min_flow_mw"] = min_flow_mw + + # Max Flow + transmission_tmps_with_max = list() + max_flow_mw = dict() + + header = pd.read_csv( + transmission_flow_limits_file, + sep="\t", + header=None, + nrows=1, + ).values[0] + + optional_columns = ["max_flow_mw"] + used_columns = [c for c in optional_columns if c in header] + + df = pd.read_csv( + transmission_flow_limits_file, + sep="\t", + usecols=["transmission_line", "timepoint"] + used_columns, + ) - data_portal.data()["tx_simple_max_flow_mw"] = max_flow_mw + # max_flow_mw is optional, + # so TX_SIMPLE_OPR_TMPS_W_MAX_CONSTRAINT + # and max_flow_mw simply won't be initialized if + # max_flow_mw does not exist in the input file + if "max_flow_mw" in df.columns: + for row in zip(df["transmission_line"], df["timepoint"], df["max_flow_mw"]): + if row[2] != ".": + transmission_tmps_with_max.append((row[0], row[1])) + max_flow_mw[(row[0], row[1])] = float(row[2]) + else: + pass + else: + pass + + # Load max flow data + if not transmission_tmps_with_max: + pass # if the list is empty, don't initialize the set + else: + data_portal.data()["TX_SIMPLE_OPR_TMPS_W_MAX_CONSTRAINT"] = { + None: transmission_tmps_with_max + } + + data_portal.data()["tx_simple_max_flow_mw"] = max_flow_mw def get_model_inputs_from_database(scenario_id, subscenarios, subproblem, stage, conn): @@ -671,28 +656,32 @@ def write_model_inputs( tx_flow = get_model_inputs_from_database( scenario_id, subscenarios, subproblem, stage, conn - ) - - with open( - os.path.join( - scenario_directory, - str(subproblem), - str(stage), - "inputs", - "transmission_flow.tab", - ), - "w", - newline="", - ) as tx_flow_tab_file: - writer = csv.writer(tx_flow_tab_file, delimiter="\t", lineterminator="\n") - - # TODO: remove all_caps for TRANSMISSION_LINES and make columns - # same as database - # Write header - writer.writerow( - ["transmission_line", "timepoint", "min_flow_mw", "max_flow_mw"] - ) - - for row in tx_flow: - replace_nulls = ["." if i is None else i for i in row] - writer.writerow(replace_nulls) + ).fetchall() + + # Only write tab file if we have data to limit flows + if len(tx_flow) > 0: + with open( + os.path.join( + scenario_directory, + str(subproblem), + str(stage), + "inputs", + "transmission_flow_limits.tab", + ), + "w", + newline="", + ) as tx_flow_tab_file: + writer = csv.writer(tx_flow_tab_file, delimiter="\t", lineterminator="\n") + + # TODO: remove all_caps for TRANSMISSION_LINES and make columns + # same as database + # Write header + writer.writerow( + ["transmission_line", "timepoint", "min_flow_mw", "max_flow_mw"] + ) + + for row in tx_flow: + replace_nulls = ["." if i is None else i for i in row] + writer.writerow(replace_nulls) + else: + pass diff --git a/requirements.txt b/requirements.txt index 8201f9ad5..7ad6a1485 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,22 +1,23 @@ alabaster==0.7.12 aniso8601==9.0.1 -Babel==2.10.1 +Babel==2.10.2 black==22.3.0 bokeh==2.2.3 -certifi==2021.10.8 +certifi==2022.5.18.1 charset-normalizer==2.0.12 click==8.1.3 -coverage==6.3.2 +coverage==6.4.1 coveralls==3.3.1 decorator==4.4.2 dnspython==1.16.0 docopt==0.6.2 -docutils==0.17.1 -eventlet==0.31.0 +docutils==0.18.1 +eventlet==0.33.1 Flask==2.0.1 Flask-RESTful==0.3.9 Flask-SocketIO==4.3.2 greenlet==1.1.2 +GridPath==0.14.0 idna==3.3 imagesize==1.3.0 itsdangerous==2.1.2 @@ -25,29 +26,29 @@ MarkupSafe==2.1.1 mypy-extensions==0.4.3 networkx==2.5.1 nose==1.3.7 -numpy==1.21.5 +numpy==1.22.4 packaging==21.3 -pandas==1.2.5 +pandas==1.4.2 pathspec==0.9.0 -Pillow==9.1.0 +Pillow==9.1.1 platformdirs==2.5.2 ply==3.11 pscript==0.7.5 psutil==5.8.0 Pygments==2.12.0 Pyomo==6.3.0 -pyparsing==3.0.8 +pyparsing==3.0.9 python-dateutil==2.8.2 python-engineio==3.14.2 python-socketio==4.6.1 pytz==2022.1 PyUtilib==6.0.0 PyYAML==6.0 -requests==2.27.1 +requests==2.28.0 six==1.16.0 snowballstemmer==2.2.0 -Sphinx==4.0.2 -sphinx-argparse==0.2.5 +Sphinx==5.0.1 +sphinx-argparse==0.3.1 sphinxcontrib-applehelp==1.0.2 sphinxcontrib-devhelp==1.0.2 sphinxcontrib-htmlhelp==2.0.0 @@ -56,7 +57,7 @@ sphinxcontrib-qthelp==1.0.3 sphinxcontrib-serializinghtml==1.1.5 tomli==2.0.1 tornado==6.1 -typing-extensions==4.2.0 +typing_extensions==4.2.0 urllib3==1.26.9 websocket-client==1.3.2 Werkzeug==2.0.2 diff --git a/setup.py b/setup.py index c94533d1b..24dcbe39e 100644 --- a/setup.py +++ b/setup.py @@ -7,13 +7,11 @@ # Set up extras extras_doc = [ - "Sphinx==4.0.2", - "sphinx-argparse==0.2.5", - "numpy==1.21.5" # temporarily require v1.21.5 because v1.22 is not available on - # readthedocs and build fails otherwise + "Sphinx==5.0.1", + "sphinx-argparse==0.3.1", ] extras_ui = [ - "eventlet==0.31.0", # Async mode for SocketIO + "eventlet==0.33.1", # Async mode for SocketIO "Flask==2.0.1", # Local API server for UI "Flask-RESTful==0.3.9", # Flask extension for building REST APIs "Flask-SocketIO==4.3.2", # Flask client-server communication; see #772 @@ -43,7 +41,7 @@ packages=find_packages(), install_requires=[ "Pyomo==6.3.0", # Optimization modeling language - "pandas==1.2.5", # Data-processing + "pandas==1.4.2", # Data-processing "bokeh==2.2.3", # Visualization library (required - see #779) "pscript==0.7.5", # Python to JavaScript compiler (for viz) "networkx==2.5.1", # network package for DC OPF diff --git a/tests/project/availability/availability_types/test_exogenous.py b/tests/project/availability/availability_types/test_exogenous.py index e08e1d788..e8d48d616 100644 --- a/tests/project/availability/availability_types/test_exogenous.py +++ b/tests/project/availability/availability_types/test_exogenous.py @@ -169,7 +169,7 @@ def test_data_loaded_correctly(self): else: expected_availability_derate[p, tmp] = defaults[p, tmp] actual_availability_derate = { - (prj, tmp): instance.avl_exog_derate[prj, tmp] + (prj, tmp): instance.avl_exog_cap_derate[prj, tmp] for (prj, tmp) in instance.AVL_EXOG_OPR_TMPS } diff --git a/tests/project/operations/operational_types/test_init.py b/tests/project/operations/operational_types/test_init.py index d971e51ba..dbfe212a2 100644 --- a/tests/project/operations/operational_types/test_init.py +++ b/tests/project/operations/operational_types/test_init.py @@ -34,6 +34,7 @@ "geography.load_zones", "project", "project.capacity.capacity", + "project.availability.availability", "project.fuels", "project.operations", ] @@ -76,13 +77,27 @@ def test_load_model_data(self): Test that data are loaded with no errors :return: """ - add_components_and_load_data( + m, data = add_components_and_load_data( prereq_modules=IMPORTED_PREREQ_MODULES, module_to_test=MODULE_BEING_TESTED, test_data_dir=TEST_DATA_DIRECTORY, subproblem="", stage="", ) + instance = m.create_instance(data) + + # Set: GEN_COMMIT_BINLIN + expected_gen_commit_binlin = sorted( + [ + "Disp_Binary_Commit", + "Disp_Cont_Commit", + "Clunky_Old_Gen", + "Clunky_Old_Gen2", + ] + ) + actual_gen_commit_binlin = sorted([prj for prj in instance.GEN_COMMIT_BINLIN]) + + self.assertListEqual(expected_gen_commit_binlin, actual_gen_commit_binlin) if __name__ == "__main__": diff --git a/tests/project/operations/test_supplemental_firing.py b/tests/project/operations/test_supplemental_firing.py new file mode 100644 index 000000000..850002fae --- /dev/null +++ b/tests/project/operations/test_supplemental_firing.py @@ -0,0 +1,157 @@ +# Copyright 2016-2022 Blue Marble Analytics LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function + +from builtins import str +from importlib import import_module +import os.path +import sys +import unittest + +from tests.common_functions import create_abstract_model, add_components_and_load_data +from tests.project.operations.common_functions import get_project_operational_timepoints + +TEST_DATA_DIRECTORY = os.path.join(os.path.dirname(__file__), "..", "..", "test_data") + +# Import prerequisite modules +PREREQUISITE_MODULE_NAMES = [ + "temporal.operations.timepoints", + "temporal.operations.horizons", + "temporal.investment.periods", + "geography.load_zones", + "project", + "project.capacity.capacity", + "project.availability.availability", + "project.fuels", + "project.operations", + "project.operations.operational_types", +] +NAME_OF_MODULE_BEING_TESTED = "project.operations.supplemental_firing" +IMPORTED_PREREQ_MODULES = list() +for mdl in PREREQUISITE_MODULE_NAMES: + try: + imported_module = import_module("." + str(mdl), package="gridpath") + IMPORTED_PREREQ_MODULES.append(imported_module) + except ImportError: + print("ERROR! Module " + str(mdl) + " not found.") + sys.exit(1) +# Import the module we'll test +try: + MODULE_BEING_TESTED = import_module( + "." + NAME_OF_MODULE_BEING_TESTED, package="gridpath" + ) +except ImportError: + print("ERROR! Couldn't import module " + NAME_OF_MODULE_BEING_TESTED + " to test.") + + +class TestCycleSelect(unittest.TestCase): + """ """ + + def test_add_model_components(self): + """ + Test that there are no errors when adding model components + :return: + """ + create_abstract_model( + prereq_modules=IMPORTED_PREREQ_MODULES, + module_to_test=MODULE_BEING_TESTED, + test_data_dir=TEST_DATA_DIRECTORY, + subproblem="", + stage="", + ) + + def test_load_model_data(self): + """ + Test that data are loaded with no errors + :return: + """ + add_components_and_load_data( + prereq_modules=IMPORTED_PREREQ_MODULES, + module_to_test=MODULE_BEING_TESTED, + test_data_dir=TEST_DATA_DIRECTORY, + subproblem="", + stage="", + ) + + def test_data_loaded_correctly(self): + m, data = add_components_and_load_data( + prereq_modules=IMPORTED_PREREQ_MODULES, + module_to_test=MODULE_BEING_TESTED, + test_data_dir=TEST_DATA_DIRECTORY, + subproblem="", + stage="", + ) + instance = m.create_instance(data) + + # Set: GEN_W_SUPPLEMENTAL_FIRING + expected_gen_w_supplemental_firing = sorted( + ["Disp_Cont_Commit", "Clunky_Old_Gen2"] + ) + actual_gen_w_supplemental_firing = sorted( + [prj for prj in instance.GEN_W_SUPPLEMENTAL_FIRING] + ) + + self.assertListEqual( + expected_gen_w_supplemental_firing, actual_gen_w_supplemental_firing + ) + + # Set: GEN_SUPPLEMENTAL_FIRING_BY_GEN + expected_supplemental_firing_by_prj = { + "Disp_Cont_Commit": ["Disp_Binary_Commit"], + "Clunky_Old_Gen2": ["Clunky_Old_Gen"], + } + actual_supplemental_firing_by_prj = { + g: [g_c for g_c in instance.GEN_SUPPLEMENTAL_FIRING_BY_GEN[g]] + for g in instance.GEN_SUPPLEMENTAL_FIRING_BY_GEN + } + + self.assertDictEqual( + expected_supplemental_firing_by_prj, actual_supplemental_firing_by_prj + ) + + # Set: GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPS + expected_operational_timepoints_by_project = sorted( + get_project_operational_timepoints(expected_gen_w_supplemental_firing) + ) + expected_supplemental_firing_opr_tmps = list() + for (p, tmp) in expected_operational_timepoints_by_project: + supplemental_firing_prj_list = expected_supplemental_firing_by_prj[p] + # Only expecting the timepoints for projects that do have cycle-select + # projects + if supplemental_firing_prj_list: + for g_cycle in supplemental_firing_prj_list: + expected_supplemental_firing_opr_tmps.append((p, g_cycle, tmp)) + + expected_supplemental_firing_opr_tmps = sorted( + expected_supplemental_firing_opr_tmps + ) + + actual_supplemental_firing_opr_tmps = sorted( + [ + (g, g_cycle, tmp) + for ( + g, + g_cycle, + tmp, + ) in instance.GEN_W_GEN_SUPPLEMENTAL_FIRING_OPR_TMPS + ] + ) + self.assertListEqual( + expected_supplemental_firing_opr_tmps, actual_supplemental_firing_opr_tmps + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_data/inputs/project_availability_exogenous.tab b/tests/test_data/inputs/project_availability_exogenous.tab index 778776548..6a9770302 100644 --- a/tests/test_data/inputs/project_availability_exogenous.tab +++ b/tests/test_data/inputs/project_availability_exogenous.tab @@ -1,385 +1,385 @@ -project timepoint availability_derate -Coal 20200101 0.5 -Coal 20200102 0.5 -Coal 20200103 0.5 -Coal 20200104 0.5 -Coal 20200105 0.5 -Coal 20200106 0.5 -Coal 20200107 0.5 -Coal 20200108 0.5 -Coal 20200109 0.5 -Coal 20200110 0.5 -Coal 20200111 0.5 -Coal 20200112 0.5 -Coal 20200113 0.5 -Coal 20200114 0.5 -Coal 20200115 0.5 -Coal 20200116 0.5 -Coal 20200117 0.5 -Coal 20200118 0.5 -Coal 20200119 0.5 -Coal 20200120 0.5 -Coal 20200121 0.5 -Coal 20200122 0.5 -Coal 20200123 0.5 -Coal 20200124 0.5 -Coal 20200201 1 -Coal 20200202 1 -Coal 20200203 1 -Coal 20200204 1 -Coal 20200205 1 -Coal 20200206 1 -Coal 20200207 1 -Coal 20200208 1 -Coal 20200209 1 -Coal 20200210 1 -Coal 20200211 1 -Coal 20200212 1 -Coal 20200213 1 -Coal 20200214 1 -Coal 20200215 1 -Coal 20200216 1 -Coal 20200217 1 -Coal 20200218 1 -Coal 20200219 1 -Coal 20200220 1 -Coal 20200221 1 -Coal 20200222 1 -Coal 20200223 1 -Coal 20200224 1 -Coal 20300101 0.75 -Coal 20300102 0.75 -Coal 20300103 0.75 -Coal 20300104 0.75 -Coal 20300105 0.75 -Coal 20300106 0.75 -Coal 20300107 0.75 -Coal 20300108 0.75 -Coal 20300109 0.75 -Coal 20300110 0.75 -Coal 20300111 0.75 -Coal 20300112 0.75 -Coal 20300113 0.75 -Coal 20300114 0.75 -Coal 20300115 0.75 -Coal 20300116 0.75 -Coal 20300117 0.75 -Coal 20300118 0.75 -Coal 20300119 0.75 -Coal 20300120 0.75 -Coal 20300121 0.75 -Coal 20300122 0.75 -Coal 20300123 0.75 -Coal 20300124 0.75 -Coal 20300201 1 -Coal 20300202 1 -Coal 20300203 1 -Coal 20300204 1 -Coal 20300205 1 -Coal 20300206 1 -Coal 20300207 1 -Coal 20300208 1 -Coal 20300209 1 -Coal 20300210 1 -Coal 20300211 1 -Coal 20300212 1 -Coal 20300213 1 -Coal 20300214 1 -Coal 20300215 1 -Coal 20300216 1 -Coal 20300217 1 -Coal 20300218 1 -Coal 20300219 1 -Coal 20300220 1 -Coal 20300221 1 -Coal 20300222 1 -Coal 20300223 1 -Coal 20300224 1 -Coal_z2 20200101 0.5 -Coal_z2 20200102 0.5 -Coal_z2 20200103 0.5 -Coal_z2 20200104 0.5 -Coal_z2 20200105 0.5 -Coal_z2 20200106 0.5 -Coal_z2 20200107 0.5 -Coal_z2 20200108 0.5 -Coal_z2 20200109 0.5 -Coal_z2 20200110 0.5 -Coal_z2 20200111 0.5 -Coal_z2 20200112 0.5 -Coal_z2 20200113 0.5 -Coal_z2 20200114 0.5 -Coal_z2 20200115 0.5 -Coal_z2 20200116 0.5 -Coal_z2 20200117 0.5 -Coal_z2 20200118 0.5 -Coal_z2 20200119 0.5 -Coal_z2 20200120 0.5 -Coal_z2 20200121 0.5 -Coal_z2 20200122 0.5 -Coal_z2 20200123 0.5 -Coal_z2 20200124 0.5 -Coal_z2 20200201 1 -Coal_z2 20200202 1 -Coal_z2 20200203 1 -Coal_z2 20200204 1 -Coal_z2 20200205 1 -Coal_z2 20200206 1 -Coal_z2 20200207 1 -Coal_z2 20200208 1 -Coal_z2 20200209 1 -Coal_z2 20200210 1 -Coal_z2 20200211 1 -Coal_z2 20200212 1 -Coal_z2 20200213 1 -Coal_z2 20200214 1 -Coal_z2 20200215 1 -Coal_z2 20200216 1 -Coal_z2 20200217 1 -Coal_z2 20200218 1 -Coal_z2 20200219 1 -Coal_z2 20200220 1 -Coal_z2 20200221 1 -Coal_z2 20200222 1 -Coal_z2 20200223 1 -Coal_z2 20200224 1 -Coal_z2 20300101 0.75 -Coal_z2 20300102 0.75 -Coal_z2 20300103 0.75 -Coal_z2 20300104 0.75 -Coal_z2 20300105 0.75 -Coal_z2 20300106 0.75 -Coal_z2 20300107 0.75 -Coal_z2 20300108 0.75 -Coal_z2 20300109 0.75 -Coal_z2 20300110 0.75 -Coal_z2 20300111 0.75 -Coal_z2 20300112 0.75 -Coal_z2 20300113 0.75 -Coal_z2 20300114 0.75 -Coal_z2 20300115 0.75 -Coal_z2 20300116 0.75 -Coal_z2 20300117 0.75 -Coal_z2 20300118 0.75 -Coal_z2 20300119 0.75 -Coal_z2 20300120 0.75 -Coal_z2 20300121 0.75 -Coal_z2 20300122 0.75 -Coal_z2 20300123 0.75 -Coal_z2 20300124 0.75 -Coal_z2 20300201 1 -Coal_z2 20300202 1 -Coal_z2 20300203 1 -Coal_z2 20300204 1 -Coal_z2 20300205 1 -Coal_z2 20300206 1 -Coal_z2 20300207 1 -Coal_z2 20300208 1 -Coal_z2 20300209 1 -Coal_z2 20300210 1 -Coal_z2 20300211 1 -Coal_z2 20300212 1 -Coal_z2 20300213 1 -Coal_z2 20300214 1 -Coal_z2 20300215 1 -Coal_z2 20300216 1 -Coal_z2 20300217 1 -Coal_z2 20300218 1 -Coal_z2 20300219 1 -Coal_z2 20300220 1 -Coal_z2 20300221 1 -Coal_z2 20300222 1 -Coal_z2 20300223 1 -Coal_z2 20300224 1 -Nuclear 20200101 1 -Nuclear 20200102 1 -Nuclear 20200103 1 -Nuclear 20200104 1 -Nuclear 20200105 1 -Nuclear 20200106 1 -Nuclear 20200107 1 -Nuclear 20200108 1 -Nuclear 20200109 1 -Nuclear 20200110 1 -Nuclear 20200111 1 -Nuclear 20200112 1 -Nuclear 20200113 1 -Nuclear 20200114 1 -Nuclear 20200115 1 -Nuclear 20200116 1 -Nuclear 20200117 1 -Nuclear 20200118 1 -Nuclear 20200119 1 -Nuclear 20200120 1 -Nuclear 20200121 1 -Nuclear 20200122 1 -Nuclear 20200123 1 -Nuclear 20200124 1 -Nuclear 20200201 0.5 -Nuclear 20200202 0.5 -Nuclear 20200203 0.5 -Nuclear 20200204 0.5 -Nuclear 20200205 0.5 -Nuclear 20200206 0.5 -Nuclear 20200207 0.5 -Nuclear 20200208 0.5 -Nuclear 20200209 0.5 -Nuclear 20200210 0.5 -Nuclear 20200211 0.5 -Nuclear 20200212 0.5 -Nuclear 20200213 0.5 -Nuclear 20200214 0.5 -Nuclear 20200215 0.5 -Nuclear 20200216 0.5 -Nuclear 20200217 0.5 -Nuclear 20200218 0.5 -Nuclear 20200219 0.5 -Nuclear 20200220 0.5 -Nuclear 20200221 0.5 -Nuclear 20200222 0.5 -Nuclear 20200223 0.5 -Nuclear 20200224 0.5 -Nuclear 20300101 0.75 -Nuclear 20300102 0.75 -Nuclear 20300103 0.75 -Nuclear 20300104 0.75 -Nuclear 20300105 0.75 -Nuclear 20300106 0.75 -Nuclear 20300107 0.75 -Nuclear 20300108 0.75 -Nuclear 20300109 0.75 -Nuclear 20300110 0.75 -Nuclear 20300111 0.75 -Nuclear 20300112 0.75 -Nuclear 20300113 0.75 -Nuclear 20300114 0.75 -Nuclear 20300115 0.75 -Nuclear 20300116 0.75 -Nuclear 20300117 0.75 -Nuclear 20300118 0.75 -Nuclear 20300119 0.75 -Nuclear 20300120 0.75 -Nuclear 20300121 0.75 -Nuclear 20300122 0.75 -Nuclear 20300123 0.75 -Nuclear 20300124 0.75 -Nuclear 20300201 1 -Nuclear 20300202 1 -Nuclear 20300203 1 -Nuclear 20300204 1 -Nuclear 20300205 1 -Nuclear 20300206 1 -Nuclear 20300207 1 -Nuclear 20300208 1 -Nuclear 20300209 1 -Nuclear 20300210 1 -Nuclear 20300211 1 -Nuclear 20300212 1 -Nuclear 20300213 1 -Nuclear 20300214 1 -Nuclear 20300215 1 -Nuclear 20300216 1 -Nuclear 20300217 1 -Nuclear 20300218 1 -Nuclear 20300219 1 -Nuclear 20300220 1 -Nuclear 20300221 1 -Nuclear 20300222 1 -Nuclear 20300223 1 -Nuclear 20300224 1 -Nuclear_z2 20200101 1 -Nuclear_z2 20200102 1 -Nuclear_z2 20200103 1 -Nuclear_z2 20200104 1 -Nuclear_z2 20200105 1 -Nuclear_z2 20200106 1 -Nuclear_z2 20200107 1 -Nuclear_z2 20200108 1 -Nuclear_z2 20200109 1 -Nuclear_z2 20200110 1 -Nuclear_z2 20200111 1 -Nuclear_z2 20200112 1 -Nuclear_z2 20200113 1 -Nuclear_z2 20200114 1 -Nuclear_z2 20200115 1 -Nuclear_z2 20200116 1 -Nuclear_z2 20200117 1 -Nuclear_z2 20200118 1 -Nuclear_z2 20200119 1 -Nuclear_z2 20200120 1 -Nuclear_z2 20200121 1 -Nuclear_z2 20200122 1 -Nuclear_z2 20200123 1 -Nuclear_z2 20200124 1 -Nuclear_z2 20200201 0.5 -Nuclear_z2 20200202 0.5 -Nuclear_z2 20200203 0.5 -Nuclear_z2 20200204 0.5 -Nuclear_z2 20200205 0.5 -Nuclear_z2 20200206 0.5 -Nuclear_z2 20200207 0.5 -Nuclear_z2 20200208 0.5 -Nuclear_z2 20200209 0.5 -Nuclear_z2 20200210 0.5 -Nuclear_z2 20200211 0.5 -Nuclear_z2 20200212 0.5 -Nuclear_z2 20200213 0.5 -Nuclear_z2 20200214 0.5 -Nuclear_z2 20200215 0.5 -Nuclear_z2 20200216 0.5 -Nuclear_z2 20200217 0.5 -Nuclear_z2 20200218 0.5 -Nuclear_z2 20200219 0.5 -Nuclear_z2 20200220 0.5 -Nuclear_z2 20200221 0.5 -Nuclear_z2 20200222 0.5 -Nuclear_z2 20200223 0.5 -Nuclear_z2 20200224 0.5 -Nuclear_z2 20300101 0.75 -Nuclear_z2 20300102 0.75 -Nuclear_z2 20300103 0.75 -Nuclear_z2 20300104 0.75 -Nuclear_z2 20300105 0.75 -Nuclear_z2 20300106 0.75 -Nuclear_z2 20300107 0.75 -Nuclear_z2 20300108 0.75 -Nuclear_z2 20300109 0.75 -Nuclear_z2 20300110 0.75 -Nuclear_z2 20300111 0.75 -Nuclear_z2 20300112 0.75 -Nuclear_z2 20300113 0.75 -Nuclear_z2 20300114 0.75 -Nuclear_z2 20300115 0.75 -Nuclear_z2 20300116 0.75 -Nuclear_z2 20300117 0.75 -Nuclear_z2 20300118 0.75 -Nuclear_z2 20300119 0.75 -Nuclear_z2 20300120 0.75 -Nuclear_z2 20300121 0.75 -Nuclear_z2 20300122 0.75 -Nuclear_z2 20300123 0.75 -Nuclear_z2 20300124 0.75 -Nuclear_z2 20300201 1 -Nuclear_z2 20300202 1 -Nuclear_z2 20300203 1 -Nuclear_z2 20300204 1 -Nuclear_z2 20300205 1 -Nuclear_z2 20300206 1 -Nuclear_z2 20300207 1 -Nuclear_z2 20300208 1 -Nuclear_z2 20300209 1 -Nuclear_z2 20300210 1 -Nuclear_z2 20300211 1 -Nuclear_z2 20300212 1 -Nuclear_z2 20300213 1 -Nuclear_z2 20300214 1 -Nuclear_z2 20300215 1 -Nuclear_z2 20300216 1 -Nuclear_z2 20300217 1 -Nuclear_z2 20300218 1 -Nuclear_z2 20300219 1 -Nuclear_z2 20300220 1 -Nuclear_z2 20300221 1 -Nuclear_z2 20300222 1 -Nuclear_z2 20300223 1 -Nuclear_z2 20300224 1 \ No newline at end of file +project timepoint availability_derate hyb_stor_cap_availability_derate +Coal 20200101 0.5 . +Coal 20200102 0.5 . +Coal 20200103 0.5 . +Coal 20200104 0.5 . +Coal 20200105 0.5 . +Coal 20200106 0.5 . +Coal 20200107 0.5 . +Coal 20200108 0.5 . +Coal 20200109 0.5 . +Coal 20200110 0.5 . +Coal 20200111 0.5 . +Coal 20200112 0.5 . +Coal 20200113 0.5 . +Coal 20200114 0.5 . +Coal 20200115 0.5 . +Coal 20200116 0.5 . +Coal 20200117 0.5 . +Coal 20200118 0.5 . +Coal 20200119 0.5 . +Coal 20200120 0.5 . +Coal 20200121 0.5 . +Coal 20200122 0.5 . +Coal 20200123 0.5 . +Coal 20200124 0.5 . +Coal 20200201 1 . +Coal 20200202 1 . +Coal 20200203 1 . +Coal 20200204 1 . +Coal 20200205 1 . +Coal 20200206 1 . +Coal 20200207 1 . +Coal 20200208 1 . +Coal 20200209 1 . +Coal 20200210 1 . +Coal 20200211 1 . +Coal 20200212 1 . +Coal 20200213 1 . +Coal 20200214 1 . +Coal 20200215 1 . +Coal 20200216 1 . +Coal 20200217 1 . +Coal 20200218 1 . +Coal 20200219 1 . +Coal 20200220 1 . +Coal 20200221 1 . +Coal 20200222 1 . +Coal 20200223 1 . +Coal 20200224 1 . +Coal 20300101 0.75 . +Coal 20300102 0.75 . +Coal 20300103 0.75 . +Coal 20300104 0.75 . +Coal 20300105 0.75 . +Coal 20300106 0.75 . +Coal 20300107 0.75 . +Coal 20300108 0.75 . +Coal 20300109 0.75 . +Coal 20300110 0.75 . +Coal 20300111 0.75 . +Coal 20300112 0.75 . +Coal 20300113 0.75 . +Coal 20300114 0.75 . +Coal 20300115 0.75 . +Coal 20300116 0.75 . +Coal 20300117 0.75 . +Coal 20300118 0.75 . +Coal 20300119 0.75 . +Coal 20300120 0.75 . +Coal 20300121 0.75 . +Coal 20300122 0.75 . +Coal 20300123 0.75 . +Coal 20300124 0.75 . +Coal 20300201 1 . +Coal 20300202 1 . +Coal 20300203 1 . +Coal 20300204 1 . +Coal 20300205 1 . +Coal 20300206 1 . +Coal 20300207 1 . +Coal 20300208 1 . +Coal 20300209 1 . +Coal 20300210 1 . +Coal 20300211 1 . +Coal 20300212 1 . +Coal 20300213 1 . +Coal 20300214 1 . +Coal 20300215 1 . +Coal 20300216 1 . +Coal 20300217 1 . +Coal 20300218 1 . +Coal 20300219 1 . +Coal 20300220 1 . +Coal 20300221 1 . +Coal 20300222 1 . +Coal 20300223 1 . +Coal 20300224 1 . +Coal_z2 20200101 0.5 . +Coal_z2 20200102 0.5 . +Coal_z2 20200103 0.5 . +Coal_z2 20200104 0.5 . +Coal_z2 20200105 0.5 . +Coal_z2 20200106 0.5 . +Coal_z2 20200107 0.5 . +Coal_z2 20200108 0.5 . +Coal_z2 20200109 0.5 . +Coal_z2 20200110 0.5 . +Coal_z2 20200111 0.5 . +Coal_z2 20200112 0.5 . +Coal_z2 20200113 0.5 . +Coal_z2 20200114 0.5 . +Coal_z2 20200115 0.5 . +Coal_z2 20200116 0.5 . +Coal_z2 20200117 0.5 . +Coal_z2 20200118 0.5 . +Coal_z2 20200119 0.5 . +Coal_z2 20200120 0.5 . +Coal_z2 20200121 0.5 . +Coal_z2 20200122 0.5 . +Coal_z2 20200123 0.5 . +Coal_z2 20200124 0.5 . +Coal_z2 20200201 1 . +Coal_z2 20200202 1 . +Coal_z2 20200203 1 . +Coal_z2 20200204 1 . +Coal_z2 20200205 1 . +Coal_z2 20200206 1 . +Coal_z2 20200207 1 . +Coal_z2 20200208 1 . +Coal_z2 20200209 1 . +Coal_z2 20200210 1 . +Coal_z2 20200211 1 . +Coal_z2 20200212 1 . +Coal_z2 20200213 1 . +Coal_z2 20200214 1 . +Coal_z2 20200215 1 . +Coal_z2 20200216 1 . +Coal_z2 20200217 1 . +Coal_z2 20200218 1 . +Coal_z2 20200219 1 . +Coal_z2 20200220 1 . +Coal_z2 20200221 1 . +Coal_z2 20200222 1 . +Coal_z2 20200223 1 . +Coal_z2 20200224 1 . +Coal_z2 20300101 0.75 . +Coal_z2 20300102 0.75 . +Coal_z2 20300103 0.75 . +Coal_z2 20300104 0.75 . +Coal_z2 20300105 0.75 . +Coal_z2 20300106 0.75 . +Coal_z2 20300107 0.75 . +Coal_z2 20300108 0.75 . +Coal_z2 20300109 0.75 . +Coal_z2 20300110 0.75 . +Coal_z2 20300111 0.75 . +Coal_z2 20300112 0.75 . +Coal_z2 20300113 0.75 . +Coal_z2 20300114 0.75 . +Coal_z2 20300115 0.75 . +Coal_z2 20300116 0.75 . +Coal_z2 20300117 0.75 . +Coal_z2 20300118 0.75 . +Coal_z2 20300119 0.75 . +Coal_z2 20300120 0.75 . +Coal_z2 20300121 0.75 . +Coal_z2 20300122 0.75 . +Coal_z2 20300123 0.75 . +Coal_z2 20300124 0.75 . +Coal_z2 20300201 1 . +Coal_z2 20300202 1 . +Coal_z2 20300203 1 . +Coal_z2 20300204 1 . +Coal_z2 20300205 1 . +Coal_z2 20300206 1 . +Coal_z2 20300207 1 . +Coal_z2 20300208 1 . +Coal_z2 20300209 1 . +Coal_z2 20300210 1 . +Coal_z2 20300211 1 . +Coal_z2 20300212 1 . +Coal_z2 20300213 1 . +Coal_z2 20300214 1 . +Coal_z2 20300215 1 . +Coal_z2 20300216 1 . +Coal_z2 20300217 1 . +Coal_z2 20300218 1 . +Coal_z2 20300219 1 . +Coal_z2 20300220 1 . +Coal_z2 20300221 1 . +Coal_z2 20300222 1 . +Coal_z2 20300223 1 . +Coal_z2 20300224 1 . +Nuclear 20200101 1 . +Nuclear 20200102 1 . +Nuclear 20200103 1 . +Nuclear 20200104 1 . +Nuclear 20200105 1 . +Nuclear 20200106 1 . +Nuclear 20200107 1 . +Nuclear 20200108 1 . +Nuclear 20200109 1 . +Nuclear 20200110 1 . +Nuclear 20200111 1 . +Nuclear 20200112 1 . +Nuclear 20200113 1 . +Nuclear 20200114 1 . +Nuclear 20200115 1 . +Nuclear 20200116 1 . +Nuclear 20200117 1 . +Nuclear 20200118 1 . +Nuclear 20200119 1 . +Nuclear 20200120 1 . +Nuclear 20200121 1 . +Nuclear 20200122 1 . +Nuclear 20200123 1 . +Nuclear 20200124 1 . +Nuclear 20200201 0.5 . +Nuclear 20200202 0.5 . +Nuclear 20200203 0.5 . +Nuclear 20200204 0.5 . +Nuclear 20200205 0.5 . +Nuclear 20200206 0.5 . +Nuclear 20200207 0.5 . +Nuclear 20200208 0.5 . +Nuclear 20200209 0.5 . +Nuclear 20200210 0.5 . +Nuclear 20200211 0.5 . +Nuclear 20200212 0.5 . +Nuclear 20200213 0.5 . +Nuclear 20200214 0.5 . +Nuclear 20200215 0.5 . +Nuclear 20200216 0.5 . +Nuclear 20200217 0.5 . +Nuclear 20200218 0.5 . +Nuclear 20200219 0.5 . +Nuclear 20200220 0.5 . +Nuclear 20200221 0.5 . +Nuclear 20200222 0.5 . +Nuclear 20200223 0.5 . +Nuclear 20200224 0.5 . +Nuclear 20300101 0.75 . +Nuclear 20300102 0.75 . +Nuclear 20300103 0.75 . +Nuclear 20300104 0.75 . +Nuclear 20300105 0.75 . +Nuclear 20300106 0.75 . +Nuclear 20300107 0.75 . +Nuclear 20300108 0.75 . +Nuclear 20300109 0.75 . +Nuclear 20300110 0.75 . +Nuclear 20300111 0.75 . +Nuclear 20300112 0.75 . +Nuclear 20300113 0.75 . +Nuclear 20300114 0.75 . +Nuclear 20300115 0.75 . +Nuclear 20300116 0.75 . +Nuclear 20300117 0.75 . +Nuclear 20300118 0.75 . +Nuclear 20300119 0.75 . +Nuclear 20300120 0.75 . +Nuclear 20300121 0.75 . +Nuclear 20300122 0.75 . +Nuclear 20300123 0.75 . +Nuclear 20300124 0.75 . +Nuclear 20300201 1 . +Nuclear 20300202 1 . +Nuclear 20300203 1 . +Nuclear 20300204 1 . +Nuclear 20300205 1 . +Nuclear 20300206 1 . +Nuclear 20300207 1 . +Nuclear 20300208 1 . +Nuclear 20300209 1 . +Nuclear 20300210 1 . +Nuclear 20300211 1 . +Nuclear 20300212 1 . +Nuclear 20300213 1 . +Nuclear 20300214 1 . +Nuclear 20300215 1 . +Nuclear 20300216 1 . +Nuclear 20300217 1 . +Nuclear 20300218 1 . +Nuclear 20300219 1 . +Nuclear 20300220 1 . +Nuclear 20300221 1 . +Nuclear 20300222 1 . +Nuclear 20300223 1 . +Nuclear 20300224 1 . +Nuclear_z2 20200101 1 . +Nuclear_z2 20200102 1 . +Nuclear_z2 20200103 1 . +Nuclear_z2 20200104 1 . +Nuclear_z2 20200105 1 . +Nuclear_z2 20200106 1 . +Nuclear_z2 20200107 1 . +Nuclear_z2 20200108 1 . +Nuclear_z2 20200109 1 . +Nuclear_z2 20200110 1 . +Nuclear_z2 20200111 1 . +Nuclear_z2 20200112 1 . +Nuclear_z2 20200113 1 . +Nuclear_z2 20200114 1 . +Nuclear_z2 20200115 1 . +Nuclear_z2 20200116 1 . +Nuclear_z2 20200117 1 . +Nuclear_z2 20200118 1 . +Nuclear_z2 20200119 1 . +Nuclear_z2 20200120 1 . +Nuclear_z2 20200121 1 . +Nuclear_z2 20200122 1 . +Nuclear_z2 20200123 1 . +Nuclear_z2 20200124 1 . +Nuclear_z2 20200201 0.5 . +Nuclear_z2 20200202 0.5 . +Nuclear_z2 20200203 0.5 . +Nuclear_z2 20200204 0.5 . +Nuclear_z2 20200205 0.5 . +Nuclear_z2 20200206 0.5 . +Nuclear_z2 20200207 0.5 . +Nuclear_z2 20200208 0.5 . +Nuclear_z2 20200209 0.5 . +Nuclear_z2 20200210 0.5 . +Nuclear_z2 20200211 0.5 . +Nuclear_z2 20200212 0.5 . +Nuclear_z2 20200213 0.5 . +Nuclear_z2 20200214 0.5 . +Nuclear_z2 20200215 0.5 . +Nuclear_z2 20200216 0.5 . +Nuclear_z2 20200217 0.5 . +Nuclear_z2 20200218 0.5 . +Nuclear_z2 20200219 0.5 . +Nuclear_z2 20200220 0.5 . +Nuclear_z2 20200221 0.5 . +Nuclear_z2 20200222 0.5 . +Nuclear_z2 20200223 0.5 . +Nuclear_z2 20200224 0.5 . +Nuclear_z2 20300101 0.75 . +Nuclear_z2 20300102 0.75 . +Nuclear_z2 20300103 0.75 . +Nuclear_z2 20300104 0.75 . +Nuclear_z2 20300105 0.75 . +Nuclear_z2 20300106 0.75 . +Nuclear_z2 20300107 0.75 . +Nuclear_z2 20300108 0.75 . +Nuclear_z2 20300109 0.75 . +Nuclear_z2 20300110 0.75 . +Nuclear_z2 20300111 0.75 . +Nuclear_z2 20300112 0.75 . +Nuclear_z2 20300113 0.75 . +Nuclear_z2 20300114 0.75 . +Nuclear_z2 20300115 0.75 . +Nuclear_z2 20300116 0.75 . +Nuclear_z2 20300117 0.75 . +Nuclear_z2 20300118 0.75 . +Nuclear_z2 20300119 0.75 . +Nuclear_z2 20300120 0.75 . +Nuclear_z2 20300121 0.75 . +Nuclear_z2 20300122 0.75 . +Nuclear_z2 20300123 0.75 . +Nuclear_z2 20300124 0.75 . +Nuclear_z2 20300201 1 . +Nuclear_z2 20300202 1 . +Nuclear_z2 20300203 1 . +Nuclear_z2 20300204 1 . +Nuclear_z2 20300205 1 . +Nuclear_z2 20300206 1 . +Nuclear_z2 20300207 1 . +Nuclear_z2 20300208 1 . +Nuclear_z2 20300209 1 . +Nuclear_z2 20300210 1 . +Nuclear_z2 20300211 1 . +Nuclear_z2 20300212 1 . +Nuclear_z2 20300213 1 . +Nuclear_z2 20300214 1 . +Nuclear_z2 20300215 1 . +Nuclear_z2 20300216 1 . +Nuclear_z2 20300217 1 . +Nuclear_z2 20300218 1 . +Nuclear_z2 20300219 1 . +Nuclear_z2 20300220 1 . +Nuclear_z2 20300221 1 . +Nuclear_z2 20300222 1 . +Nuclear_z2 20300223 1 . +Nuclear_z2 20300224 1 . \ No newline at end of file diff --git a/tests/test_data/inputs/supplemental_firing.tab b/tests/test_data/inputs/supplemental_firing.tab new file mode 100644 index 000000000..cfcff5e1b --- /dev/null +++ b/tests/test_data/inputs/supplemental_firing.tab @@ -0,0 +1,3 @@ +project supplemental_firing_project +Clunky_Old_Gen2 Clunky_Old_Gen +Disp_Cont_Commit Disp_Binary_Commit \ No newline at end of file diff --git a/tests/test_data/inputs/transmission_capacity_group_requirements.tab b/tests/test_data/inputs/transmission_capacity_group_requirements.tab new file mode 100644 index 000000000..fc7a749a8 --- /dev/null +++ b/tests/test_data/inputs/transmission_capacity_group_requirements.tab @@ -0,0 +1,3 @@ +transmission_capacity_group period transmission_capacity_group_new_capacity_min transmission_capacity_group_new_capacity_max +Tx_Capacity_Group1 2020 1 10 +Tx_Capacity_Group1 2030 1 10 \ No newline at end of file diff --git a/tests/test_data/inputs/transmission_capacity_group_transmission_lines.tab b/tests/test_data/inputs/transmission_capacity_group_transmission_lines.tab new file mode 100644 index 000000000..63456c29a --- /dev/null +++ b/tests/test_data/inputs/transmission_capacity_group_transmission_lines.tab @@ -0,0 +1,3 @@ +transmission_capacity_group transmission_line +Tx_Capacity_Group1 Tx_New +Tx_Capacity_Group1 Tx1 \ No newline at end of file diff --git a/tests/test_data/inputs/transmission_flow.tab b/tests/test_data/inputs/transmission_flow_limits.tab similarity index 100% rename from tests/test_data/inputs/transmission_flow.tab rename to tests/test_data/inputs/transmission_flow_limits.tab diff --git a/tests/test_examples.py b/tests/test_examples.py index 014df672f..1ab76286f 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -43,6 +43,9 @@ else False ) +# Windows check +WINDOWS = True if os.name == "nt" else False + class TestExamples(unittest.TestCase): """ """ @@ -524,44 +527,36 @@ def test_example_single_stage_prod_cost_cycle_select(self): self.check_validation("single_stage_prod_cost_cycle_select") self.run_and_check_objective( "single_stage_prod_cost_cycle_select", - {1: -7154084662888.654, 2: -7154084662888.654, 3: -7154084662888.654}, + {1: -7008092000118.654, 2: -7008092000118.654, 3: -7008092000118.654}, ) def test_example_multi_stage_prod_cost_parallel(self): """ Check validation and objective function values of - "multi_stage_prod_cost" example + "multi_stage_prod_cost" example running subproblems in parallel :return: """ - # TODO: figure why run_e2e processed gets terminated on linux when - # using parallel processing; skip test on linux for the time being - if platform.system() == "Linux": - print( - "Skipping test_example_multi_stage_prod_cost_parallel on ", - platform.system(), - ) - else: - self.run_and_check_objective( - "multi_stage_prod_cost", - { - 1: { - 1: -1265436373826.0408, - 2: -1265436373826.0408, - 3: -1265436373826.099, - }, - 2: { - 1: -1265436373826.0408, - 2: -1265436373826.0408, - 3: -1265436373826.099, - }, - 3: { - 1: -1265436373826.0408, - 2: -1265436373826.0408, - 3: -1265436373826.099, - }, + self.run_and_check_objective( + "multi_stage_prod_cost", + { + 1: { + 1: -1265436373826.0408, + 2: -1265436373826.0408, + 3: -1265436373826.099, }, - parallel=3, - ) + 2: { + 1: -1265436373826.0408, + 2: -1265436373826.0408, + 3: -1265436373826.099, + }, + 3: { + 1: -1265436373826.0408, + 2: -1265436373826.0408, + 3: -1265436373826.099, + }, + }, + parallel=3, + ) def test_example_multi_stage_prod_cost_w_hydro(self): """ @@ -1146,13 +1141,17 @@ def test_test_new_solar_carbon_cap_2zones_tx_hydrogen_prod_new(self): def test_example_test_new_solar_carbon_cap_dac(self): """ Check validation and objective function value of - "test_new_solar_carbon_cap_dac" example + "test_new_solar_carbon_cap_dac" example. + + Note that the same version of Cbc (v2.10.5) produces a slightly different + objective function for this problem on Windows than on Mac. :return: """ self.check_validation("test_new_solar_carbon_cap_dac") self.run_and_check_objective( - "test_new_solar_carbon_cap_dac", -3504434601570.9893 + "test_new_solar_carbon_cap_dac", + -3504434601571.8643 if WINDOWS else -3504434601570.9893, ) def test_example_test_cap_factor_limits(self): @@ -1193,6 +1192,25 @@ def test_example_multi_stage_prod_cost_w_markets(self): }, ) + def test_example_test_supplemental_firing(self): + """ + Check validation and objective function value of "test_supplemental_firing" example + :return: + """ + + self.check_validation("test_supplemental_firing") + self.run_and_check_objective("test_supplemental_firing", -4380327039279.8545) + + def test_example_test_tx_capacity_groups(self): + """ + Check validation and objective function value of + "test_tx_capacity_groups" example + :return: + """ + + self.check_validation("test_tx_capacity_groups") + self.run_and_check_objective("test_tx_capacity_groups", -12284573611936.518) + @classmethod def tearDownClass(cls): os.remove(DB_PATH) diff --git a/tests/test_viz.py b/tests/test_viz.py new file mode 100644 index 000000000..704116f4f --- /dev/null +++ b/tests/test_viz.py @@ -0,0 +1,359 @@ +# Copyright 2016-2022 Blue Marble Analytics LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import os +import unittest + +from gridpath import run_end_to_end +from db import create_database +from db.utilities import port_csvs_to_db, scenario +from viz import ( + capacity_factor_plot, + capacity_new_plot, + capacity_retired_plot, + capacity_total_loadzone_comparison_plot, + capacity_total_plot, + capacity_total_scenario_comparison_plot, + carbon_plot, + cost_plot, + curtailment_hydro_heatmap_plot, + curtailment_variable_heatmap_plot, + dispatch_plot, + energy_plot, + energy_target_plot, + project_operations_plot, +) + + +# Change directory to 'gridpath' directory, as that's what run_scenario.py +# expects; the rest of the global variables are relative paths from there +os.chdir(os.path.join(os.path.dirname(__file__), "..", "gridpath")) +EXAMPLES_DIRECTORY = os.path.join("..", "examples") +DB_NAME = "unittest_examples" +DB_PATH = os.path.join("../db", "{}.db".format(DB_NAME)) +CSV_PATH = "../db//csvs_test_examples" +SCENARIOS_CSV = os.path.join(CSV_PATH, "scenarios.csv") + + +class TestExamples(unittest.TestCase): + @classmethod + def setUpClass(cls): + """ + Set up the testing database + :return: + """ + + if os.path.exists(DB_PATH): + os.remove(DB_PATH) + + create_database.main(["--database", DB_PATH]) + + try: + port_csvs_to_db.main( + ["--database", DB_PATH, "--csv_location", CSV_PATH, "--quiet"] + ) + except Exception as e: + print( + "Error encountered during population of testing database " + "{}.db. Deleting database ...".format(DB_NAME) + ) + logging.exception(e) + os.remove(DB_PATH) + + try: + scenario.main( + ["--database", DB_PATH, "--csv_path", SCENARIOS_CSV, "--quiet"] + ) + # Run a few scenarios to populate results + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "test", + "--scenario_location", + EXAMPLES_DIRECTORY, + "--quiet", + "--mute_solver_output", + ] + ) + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "test_new_solar_carbon_cap", + "--scenario_location", + EXAMPLES_DIRECTORY, + "--quiet", + "--mute_solver_output", + ] + ) + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_new_build_rps_percent_target", + "--scenario_location", + EXAMPLES_DIRECTORY, + "--quiet", + "--mute_solver_output", + ] + ) + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_gen_lin_econ_retirement", + "--scenario_location", + EXAMPLES_DIRECTORY, + "--quiet", + "--mute_solver_output", + ] + ) + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_new_build_2zones", + "--scenario_location", + EXAMPLES_DIRECTORY, + "--quiet", + "--mute_solver_output", + ] + ) + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "2horizons_w_hydro", + "--scenario_location", + EXAMPLES_DIRECTORY, + "--quiet", + "--mute_solver_output", + ] + ) + except Exception as e: + print( + "Error encountered during population of testing database " + "{}.db. Deleting database ...".format(DB_NAME) + ) + logging.exception(e) + os.remove(DB_PATH) + + def test_capacity_factor_plot(self): + capacity_factor_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "test", + "--load_zone", + "Zone1", + # "--show", + ] + ) + + def test_capacity_new_plot(self): + capacity_new_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "test_new_solar_carbon_cap", + "--load_zone", + "Zone1", + # "--show", + ] + ) + + def test_capacity_retired_plot(self): + capacity_retired_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_gen_lin_econ_retirement", + "--load_zone", + "Zone1", + # "--show", + ] + ) + + def test_capacity_total_loadzone_comparison_plot(self): + capacity_total_loadzone_comparison_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_new_build_2zones", + "--period", + "2020", + # "--show", + ] + ) + + def test_capacity_total_plot(self): + capacity_total_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "test_new_solar_carbon_cap", + "--load_zone", + "Zone1", + # "--show", + ] + ) + + # def test_capacity_total_scenario_comparison_plot(self): + # """This plot does not work""" + # capacity_total_scenario_comparison_plot.main( + # [ + # "--database", + # DB_PATH, + # "--period", + # "2020", + # "--load_zone", + # "Zone1", + # "--show", + # ] + # ) + + def test_carbon_plot(self): + carbon_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "test_new_solar_carbon_cap", + "--carbon_cap_zone", + "Zone1", + # "--show", + ] + ) + + def test_cost_plot(self): + cost_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "test_new_solar_carbon_cap", + "--load_zone", + "Zone1", + # "--show", + ] + ) + + def test_curtailment_hydro_heatmap_plot(self): + curtailment_hydro_heatmap_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2horizons_w_hydro", + "--load_zone", + "Zone1", + "--period", + "2020", + # "--show", + ] + ) + + def test_curtailment_variable_heatmap_plot(self): + curtailment_variable_heatmap_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2horizons_w_hydro", + "--load_zone", + "Zone1", + "--period", + "2020", + # "--show", + ] + ) + + def test_dispatch_plot(self): + dispatch_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "test", + "--load_zone", + "Zone1", + "--starting_tmp", + "20200101", + "--ending_tmp", + "20200102", + # "--show", + ] + ) + + def test_energy_plot(self): + energy_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_gen_lin_econ_retirement", + "--load_zone", + "Zone1", + # "--show", + ] + ) + + def test_energy_target_plot(self): + energy_target_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_new_build_rps_percent_target", + "--energy_target_zone", + "RPSZone1", + # "--show", + ] + ) + + def test_project_operations_plot(self): + project_operations_plot.main( + [ + "--database", + DB_PATH, + "--scenario", + "2periods_new_build_rps_percent_target", + "--period", + "2030", + "--project", + "Gas_CCGT", + # "--show", + ] + ) + + @classmethod + def tearDownClass(cls): + os.remove(DB_PATH) + for temp_file_ext in ["-shm", "-wal"]: + temp_file = "{}{}".format(DB_PATH, temp_file_ext) + if os.path.exists(temp_file): + os.remove(temp_file) diff --git a/tests/transmission/capacity/test_capacity_groups.py b/tests/transmission/capacity/test_capacity_groups.py new file mode 100644 index 000000000..a81a8c656 --- /dev/null +++ b/tests/transmission/capacity/test_capacity_groups.py @@ -0,0 +1,143 @@ +# Copyright 2022 (c) Crown Copyright, GC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function + +from builtins import str +from collections import OrderedDict +from importlib import import_module +import os.path +import pandas as pd +import sys +import unittest + +from tests.common_functions import create_abstract_model, add_components_and_load_data + +TEST_DATA_DIRECTORY = os.path.join(os.path.dirname(__file__), "..", "..", "test_data") + +# Import prerequisite modules +PREREQUISITE_MODULE_NAMES = [ + "temporal.operations.timepoints", + "temporal.operations.horizons", + "temporal.investment.periods", + "geography.load_zones", + "transmission", + "transmission.capacity", + "transmission.capacity.capacity", +] +NAME_OF_MODULE_BEING_TESTED = "transmission.capacity.capacity_groups" +IMPORTED_PREREQ_MODULES = list() +for mdl in PREREQUISITE_MODULE_NAMES: + try: + imported_module = import_module("." + str(mdl), package="gridpath") + IMPORTED_PREREQ_MODULES.append(imported_module) + except ImportError: + print("ERROR! Module " + str(mdl) + " not found.") + sys.exit(1) +# Import the module we'll test +try: + MODULE_BEING_TESTED = import_module( + "." + NAME_OF_MODULE_BEING_TESTED, package="gridpath" + ) +except ImportError: + print("ERROR! Couldn't import module " + NAME_OF_MODULE_BEING_TESTED + " to test.") + + +class TestCapacityGroups(unittest.TestCase): + """ """ + + def test_add_model_components(self): + """ + Test that there are no errors when adding model components + :return: + """ + create_abstract_model( + prereq_modules=IMPORTED_PREREQ_MODULES, + module_to_test=MODULE_BEING_TESTED, + test_data_dir=TEST_DATA_DIRECTORY, + subproblem="", + stage="", + ) + + def test_load_model_data(self): + """ + Test that data are loaded with no errors + :return: + """ + add_components_and_load_data( + prereq_modules=IMPORTED_PREREQ_MODULES, + module_to_test=MODULE_BEING_TESTED, + test_data_dir=TEST_DATA_DIRECTORY, + subproblem="", + stage="", + ) + + def test_initialized_components(self): + """ + Create components; check they are initialized with data as expected. + Capacity-type modules should have added appropriate data; + make sure it is all as expected. + """ + m, data = add_components_and_load_data( + prereq_modules=IMPORTED_PREREQ_MODULES, + module_to_test=MODULE_BEING_TESTED, + test_data_dir=TEST_DATA_DIRECTORY, + subproblem="", + stage="", + ) + instance = m.create_instance(data) + + # Set: TX_CAPACITY_GROUP_PERIODS + expected_cap_group_periods = sorted( + [("Tx_Capacity_Group1", 2020), ("Tx_Capacity_Group1", 2030)] + ) + actual_cap_group_periods = sorted( + [(tx, period) for (tx, period) in instance.TX_CAPACITY_GROUP_PERIODS] + ) + self.assertListEqual(expected_cap_group_periods, actual_cap_group_periods) + + # Set: TX_CAPACITY_GROUPS + expected_cap_group_periods = sorted(["Tx_Capacity_Group1"]) + actual_cap_group_periods = sorted([g for g in instance.TX_CAPACITY_GROUPS]) + self.assertListEqual(expected_cap_group_periods, actual_cap_group_periods) + + # Set: TX_IN_TX_CAPACITY_GROUP + expected_prj_in_cap_group = {"Tx_Capacity_Group1": ["Tx_New", "Tx1"]} + actual_prj_in_cap_group = { + g: [p for p in instance.TX_IN_TX_CAPACITY_GROUP[g]] + for g in instance.TX_CAPACITY_GROUPS + } + self.assertDictEqual(expected_prj_in_cap_group, actual_prj_in_cap_group) + + # Params: tx_capacity_group_new_capacity_min + expected_new_min = { + ("Tx_Capacity_Group1", 2020): 1, + ("Tx_Capacity_Group1", 2030): 1, + } + actual_new_min = { + (g, p): instance.tx_capacity_group_new_capacity_min[g, p] + for (g, p) in instance.TX_CAPACITY_GROUP_PERIODS + } + self.assertDictEqual(expected_new_min, actual_new_min) + + # Params: tx_capacity_group_new_capacity_max + expected_new_max = { + ("Tx_Capacity_Group1", 2020): 10, + ("Tx_Capacity_Group1", 2030): 10, + } + actual_new_max = { + (g, p): instance.tx_capacity_group_new_capacity_max[g, p] + for (g, p) in instance.TX_CAPACITY_GROUP_PERIODS + } + self.assertDictEqual(expected_new_max, actual_new_max) diff --git a/ui/README.md b/ui/README.md index bd65a21fc..e154f1afe 100644 --- a/ui/README.md +++ b/ui/README.md @@ -7,7 +7,9 @@ Welcome to the GridPath user interface! ## Python See the `README.md` file in the root GridPath directory for Python installation instructions. Python is required for the GridPath UI server and - core engine that builds the optimization problems. + core engine that builds the optimization problems. The UI will not work +with Python 3.10, as some libraries it uses are not fully compatible with +Python 3.10 yet. ## Python packages You will also need to install the required Python packages to run GridPath @@ -19,10 +21,11 @@ pip install -e .[ui] ## NodeJS To edit the UI code, or build and compile the app from source, you will -need NodeJS. Install [here](https://nodejs.org/en/). +need NodeJS v14.15. Install [here](https://nodejs.org/en/). ## Node packages To install the required node packages, run the following from this directory. +We use v7.6.3 of npm. ```bash npm install ``` @@ -47,3 +50,6 @@ To compile the project for distribution, run: ```bash npm run dist ``` + +# Support +We do not currently have resources to provide support for the UI. diff --git a/ui/package-lock.json b/ui/package-lock.json index ec518f56e..216e19a12 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "gridpath-ui", - "version": "0.13.0", + "version": "0.14.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "gridpath-ui", - "version": "0.13.0", + "version": "0.14.0", "hasInstallScript": true, "dependencies": { "@angular/animations": "~7.2.0", @@ -39,7 +39,7 @@ "@types/node": "~8.9.4", "codelyzer": "~4.5.0", "electron": "^5.0.4", - "electron-builder": "^22.14.5", + "electron-builder": "^23.0.2", "jasmine-core": "~2.99.1", "jasmine-spec-reporter": "~4.2.1", "jquery": "^3.4.1", @@ -868,25 +868,27 @@ "dev": true }, "node_modules/@electron/universal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", - "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.0.tgz", + "integrity": "sha512-eu20BwNsrMPKoe2bZ3/l9c78LclDvxg3PlVXrQf3L50NaUuW5M59gbPytI+V4z7/QMrohUHetQaU0ou+p1UG9Q==", "dev": true, "dependencies": { "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.0.3", + "asar": "^3.1.0", "debug": "^4.3.1", "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1" + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" }, "engines": { "node": ">=8.6" } }, "node_modules/@electron/universal/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1039,9 +1041,9 @@ } }, "node_modules/@malept/flatpak-bundler/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1178,6 +1180,15 @@ "node": ">=6" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -1765,30 +1776,30 @@ } }, "node_modules/app-builder-bin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.7.1.tgz", - "integrity": "sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", "dev": true }, "node_modules/app-builder-lib": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", - "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.0.2.tgz", + "integrity": "sha512-2ytlOKavGQVvVujsGajJURtyrXHRXWIqHTzzZKUtYNrJUbDG2HcPZN7aktf+SDBeoXX0Lp/QA6dBpBpSRuG6rQ==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.0.5", + "@electron/universal": "1.2.0", "@malept/flatpak-bundler": "^0.4.0", "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.2", "ejs": "^3.1.6", - "electron-osx-sign": "^0.5.0", - "electron-publish": "22.14.5", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.0.2", "form-data": "^4.0.0", "fs-extra": "^10.0.0", "hosted-git-info": "^4.0.2", @@ -1813,9 +1824,9 @@ "dev": true }, "node_modules/app-builder-lib/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1844,9 +1855,9 @@ } }, "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -1858,9 +1869,9 @@ } }, "node_modules/app-builder-lib/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1870,9 +1881,9 @@ } }, "node_modules/app-builder-lib/node_modules/isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, "engines": { "node": ">= 8.0.0" @@ -1924,9 +1935,9 @@ "dev": true }, "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2124,15 +2135,15 @@ } }, "node_modules/asar/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -2143,6 +2154,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -3066,7 +3089,7 @@ "node_modules/buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -3097,21 +3120,23 @@ "dev": true }, "node_modules/builder-util": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", - "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.0.2.tgz", + "integrity": "sha512-HaNHL3axNW/Ms8O1mDx3I07G+ZnZ/TKSWWvorOAPau128cdt9S+lNx5ocbx8deSaHHX4WFXSZVHh3mxlaKJNgg==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", "@types/fs-extra": "^9.0.11", "7zip-bin": "~5.1.1", - "app-builder-bin": "3.7.1", + "app-builder-bin": "4.0.0", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.9.1", + "builder-util-runtime": "9.0.0", "chalk": "^4.1.1", "cross-spawn": "^7.0.3", "debug": "^4.3.2", "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", "is-ci": "^3.0.0", "js-yaml": "^4.1.0", "source-map-support": "^0.5.19", @@ -3120,9 +3145,9 @@ } }, "node_modules/builder-util-runtime": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", - "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz", + "integrity": "sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA==", "dev": true, "dependencies": { "debug": "^4.3.2", @@ -3133,9 +3158,9 @@ } }, "node_modules/builder-util-runtime/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -3161,6 +3186,18 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "node_modules/builder-util/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/builder-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -3231,9 +3268,9 @@ } }, "node_modules/builder-util/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -3248,9 +3285,9 @@ } }, "node_modules/builder-util/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -3270,6 +3307,33 @@ "node": ">=8" } }, + "node_modules/builder-util/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/builder-util/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/builder-util/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3681,13 +3745,13 @@ "node_modules/chromium-pickle-js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true }, "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", "dev": true }, "node_modules/cipher-base": { @@ -4008,7 +4072,7 @@ "node_modules/compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4837,7 +4901,7 @@ "node_modules/dir-compare/node_modules/colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, "engines": { "node": ">=0.1.90" @@ -4846,7 +4910,7 @@ "node_modules/dir-compare/node_modules/commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, "dependencies": { "graceful-readlink": ">= 1.0.0" @@ -4868,14 +4932,14 @@ } }, "node_modules/dmg-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", - "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.0.2.tgz", + "integrity": "sha512-kfJZRKbIN6kM/Vuzrme8SGSA+M/F0VvNrSGa6idWXbqtxIbGZZMF1QxVrXJbxSayf0Jh4hPy6NUNZAfbX9/m3g==", "dev": true, "dependencies": { - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "23.0.2", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" @@ -4891,9 +4955,9 @@ "dev": true }, "node_modules/dmg-builder/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -4950,9 +5014,10 @@ } }, "node_modules/dmg-license": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.10.tgz", - "integrity": "sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "deprecated": "Disk image license agreements are deprecated by Apple and will probably be removed in a future macOS release. Discussion at: https://github.com/argv-minus-one/dmg-license/issues/11", "dev": true, "optional": true, "os": [ @@ -5108,12 +5173,12 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "dependencies": { - "jake": "^10.6.1" + "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" @@ -5141,17 +5206,17 @@ } }, "node_modules/electron-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", - "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.0.2.tgz", + "integrity": "sha512-NG8ywuoHZpq6uk/2fEo9XVKBnjyGwNCnCyPxgGLdEk6xLAXr6nkF54+kqdhrDw4E8alwxc/TPHxUY3G0B8k/Dw==", "dev": true, "dependencies": { "@types/yargs": "^17.0.1", - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "23.0.2", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "chalk": "^4.1.1", - "dmg-builder": "22.14.5", + "dmg-builder": "23.0.2", "fs-extra": "^10.0.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -5452,9 +5517,9 @@ } }, "node_modules/electron-osx-sign": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz", - "integrity": "sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", "dev": true, "dependencies": { "bluebird": "^3.5.0", @@ -5473,14 +5538,14 @@ } }, "node_modules/electron-publish": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", - "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.0.2.tgz", + "integrity": "sha512-8gMYgWqv96lc83FCm85wd+tEyxNTJQK7WKyPkNkO8GxModZqt1GO8S+/vAnFGxilS/7vsrVRXFfqiCDUCSuxEg==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "chalk": "^4.1.1", "fs-extra": "^10.0.0", "lazy-val": "^1.0.5", @@ -5537,9 +5602,9 @@ "dev": true }, "node_modules/electron-publish/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -6408,12 +6473,33 @@ } }, "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/fileset": { @@ -7583,7 +7669,7 @@ "node_modules/graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, "node_modules/hammerjs": { @@ -9057,13 +9143,13 @@ } }, "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", + "async": "^3.2.3", + "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" }, @@ -9071,15 +9157,85 @@ "jake": "bin/cli.js" }, "engines": { - "node": "*" + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jake/node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jasmine": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", @@ -11502,9 +11658,9 @@ } }, "node_modules/plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", "dev": true, "dependencies": { "base64-js": "^1.5.1", @@ -12186,13 +12342,10 @@ } }, "node_modules/read-config-file/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -14088,9 +14241,9 @@ } }, "node_modules/temp-file/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -14618,7 +14771,7 @@ "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "dependencies": { "utf8-byte-length": "^1.0.1" @@ -15151,7 +15304,7 @@ "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", "dev": true }, "node_modules/util": { @@ -16829,22 +16982,24 @@ } }, "@electron/universal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", - "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.0.tgz", + "integrity": "sha512-eu20BwNsrMPKoe2bZ3/l9c78LclDvxg3PlVXrQf3L50NaUuW5M59gbPytI+V4z7/QMrohUHetQaU0ou+p1UG9Q==", "dev": true, "requires": { "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.0.3", + "asar": "^3.1.0", "debug": "^4.3.1", "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1" + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" }, "dependencies": { "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -16951,9 +17106,9 @@ }, "dependencies": { "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -17058,6 +17213,12 @@ "defer-to-connect": "^1.0.1" } }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, "@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -17592,30 +17753,30 @@ } }, "app-builder-bin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.7.1.tgz", - "integrity": "sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", "dev": true }, "app-builder-lib": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", - "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.0.2.tgz", + "integrity": "sha512-2ytlOKavGQVvVujsGajJURtyrXHRXWIqHTzzZKUtYNrJUbDG2HcPZN7aktf+SDBeoXX0Lp/QA6dBpBpSRuG6rQ==", "dev": true, "requires": { "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.0.5", + "@electron/universal": "1.2.0", "@malept/flatpak-bundler": "^0.4.0", "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.2", "ejs": "^3.1.6", - "electron-osx-sign": "^0.5.0", - "electron-publish": "22.14.5", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.0.2", "form-data": "^4.0.0", "fs-extra": "^10.0.0", "hosted-git-info": "^4.0.2", @@ -17637,9 +17798,9 @@ "dev": true }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -17657,9 +17818,9 @@ } }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -17668,18 +17829,18 @@ } }, "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true }, "js-yaml": { @@ -17717,9 +17878,9 @@ "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -17869,18 +18030,27 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } } } }, @@ -18648,7 +18818,7 @@ "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", "dev": true }, "buffer-fill": { @@ -18676,21 +18846,23 @@ "dev": true }, "builder-util": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", - "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.0.2.tgz", + "integrity": "sha512-HaNHL3axNW/Ms8O1mDx3I07G+ZnZ/TKSWWvorOAPau128cdt9S+lNx5ocbx8deSaHHX4WFXSZVHh3mxlaKJNgg==", "dev": true, "requires": { "@types/debug": "^4.1.6", "@types/fs-extra": "^9.0.11", "7zip-bin": "~5.1.1", - "app-builder-bin": "3.7.1", + "app-builder-bin": "4.0.0", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.9.1", + "builder-util-runtime": "9.0.0", "chalk": "^4.1.1", "cross-spawn": "^7.0.3", "debug": "^4.3.2", "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", "is-ci": "^3.0.0", "js-yaml": "^4.1.0", "source-map-support": "^0.5.19", @@ -18698,6 +18870,15 @@ "temp-file": "^3.4.0" }, "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -18750,18 +18931,18 @@ } }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -18775,6 +18956,27 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -18864,9 +19066,9 @@ } }, "builder-util-runtime": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", - "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz", + "integrity": "sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA==", "dev": true, "requires": { "debug": "^4.3.2", @@ -18874,9 +19076,9 @@ }, "dependencies": { "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -19146,13 +19348,13 @@ "chromium-pickle-js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", "dev": true }, "cipher-base": { @@ -19414,7 +19616,7 @@ "compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true }, "compare-versions": { @@ -20101,13 +20303,13 @@ "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, "requires": { "graceful-readlink": ">= 1.0.0" @@ -20125,14 +20327,14 @@ } }, "dmg-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", - "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.0.2.tgz", + "integrity": "sha512-kfJZRKbIN6kM/Vuzrme8SGSA+M/F0VvNrSGa6idWXbqtxIbGZZMF1QxVrXJbxSayf0Jh4hPy6NUNZAfbX9/m3g==", "dev": true, "requires": { - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "23.0.2", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "dmg-license": "^1.0.9", "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", @@ -20146,9 +20348,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -20193,9 +20395,9 @@ } }, "dmg-license": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.10.tgz", - "integrity": "sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "dev": true, "optional": true, "requires": { @@ -20330,12 +20532,12 @@ "dev": true }, "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" } }, "electron": { @@ -20358,17 +20560,17 @@ } }, "electron-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", - "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.0.2.tgz", + "integrity": "sha512-NG8ywuoHZpq6uk/2fEo9XVKBnjyGwNCnCyPxgGLdEk6xLAXr6nkF54+kqdhrDw4E8alwxc/TPHxUY3G0B8k/Dw==", "dev": true, "requires": { "@types/yargs": "^17.0.1", - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "23.0.2", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "chalk": "^4.1.1", - "dmg-builder": "22.14.5", + "dmg-builder": "23.0.2", "fs-extra": "^10.0.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -20601,9 +20803,9 @@ } }, "electron-osx-sign": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz", - "integrity": "sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", "dev": true, "requires": { "bluebird": "^3.5.0", @@ -20615,14 +20817,14 @@ } }, "electron-publish": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", - "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.0.2.tgz", + "integrity": "sha512-8gMYgWqv96lc83FCm85wd+tEyxNTJQK7WKyPkNkO8GxModZqt1GO8S+/vAnFGxilS/7vsrVRXFfqiCDUCSuxEg==", "dev": true, "requires": { "@types/fs-extra": "^9.0.11", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "23.0.2", + "builder-util-runtime": "9.0.0", "chalk": "^4.1.1", "fs-extra": "^10.0.0", "lazy-val": "^1.0.5", @@ -20664,9 +20866,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -21408,12 +21610,32 @@ } }, "filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "fileset": { @@ -22416,7 +22638,7 @@ "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, "hammerjs": { @@ -23601,22 +23823,71 @@ } }, "jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", + "async": "^3.2.3", + "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -25710,9 +25981,9 @@ } }, "plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", "dev": true, "requires": { "base64-js": "^1.5.1", @@ -26281,13 +26552,10 @@ } }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true } } }, @@ -27923,9 +28191,9 @@ }, "dependencies": { "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -28361,7 +28629,7 @@ "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "requires": { "utf8-byte-length": "^1.0.1" @@ -28791,7 +29059,7 @@ "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", "dev": true }, "util": { diff --git a/ui/package.json b/ui/package.json index 2dd432792..b40de59a5 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,6 +1,6 @@ { "name": "gridpath-ui", - "version": "0.13.0", + "version": "0.14.0", "main": "src/electron-main.js", "scripts": { "ng": "ng", @@ -47,7 +47,7 @@ "@types/node": "~8.9.4", "codelyzer": "~4.5.0", "electron": "^5.0.4", - "electron-builder": "^22.14.5", + "electron-builder": "^23.0.2", "jasmine-core": "~2.99.1", "jasmine-spec-reporter": "~4.2.1", "jquery": "^3.4.1", diff --git a/ui/src/index.html b/ui/src/index.html index c8f43e2e0..3df5a3179 100644 --- a/ui/src/index.html +++ b/ui/src/index.html @@ -2,7 +2,7 @@ - GridPath v0.13.0 + GridPath v0.14.0 diff --git a/version.py b/version.py index f23a6b39d..b45f46458 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "0.13.0" +__version__ = "v0.14.0" diff --git a/viz/dispatch_plot.py b/viz/dispatch_plot.py index 18747e4d5..96d657014 100644 --- a/viz/dispatch_plot.py +++ b/viz/dispatch_plot.py @@ -134,13 +134,14 @@ def get_timepoints(conn, scenario_id, starting_tmp=None, ending_tmp=None, stage_ return tmps -def get_power_by_tech_results(conn, scenario_id, load_zone, timepoints): +def get_power_by_tech_results(conn, scenario_id, load_zone, stage, timepoints): """ Get results for power by technology for a given load_zone and set of points. :param conn: :param scenario_id: :param load_zone: + :param stage: :param timepoints :return: """ @@ -150,9 +151,10 @@ def get_power_by_tech_results(conn, scenario_id, load_zone, timepoints): FROM results_project_dispatch_by_technology WHERE scenario_id = {} AND load_zone = '{}' + AND stage_id = {} AND timepoint IN ({}) ;""".format( - scenario_id, load_zone, ",".join(["?"] * len(timepoints)) + scenario_id, load_zone, stage, ",".join(["?"] * len(timepoints)) ) df = pd.read_sql(query, conn, params=timepoints) @@ -166,13 +168,14 @@ def get_power_by_tech_results(conn, scenario_id, load_zone, timepoints): return index_only_df -def get_variable_curtailment_results(c, scenario_id, load_zone, timepoints): +def get_variable_curtailment_results(c, scenario_id, load_zone, stage, timepoints): """ Get variable generator curtailment for a given load_zone and set of timepoints. :param c: :param scenario_id: :param load_zone: + :param stage: :param timepoints: :return: """ @@ -180,9 +183,10 @@ def get_variable_curtailment_results(c, scenario_id, load_zone, timepoints): FROM results_project_curtailment_variable WHERE scenario_id = {} AND load_zone = '{}' + AND stage_id = {} AND timepoint IN ({}) ;""".format( - scenario_id, load_zone, ",".join(["?"] * len(timepoints)) + scenario_id, load_zone, stage, ",".join(["?"] * len(timepoints)) ) curtailment = [i[0] for i in c.execute(query, timepoints).fetchall()] @@ -190,12 +194,13 @@ def get_variable_curtailment_results(c, scenario_id, load_zone, timepoints): return curtailment -def get_hydro_curtailment_results(c, scenario_id, load_zone, timepoints): +def get_hydro_curtailment_results(c, scenario_id, load_zone, stage, timepoints): """ Get conventional hydro curtailment for a given load_zone and set of timepoints. :param scenario_id: :param load_zone: + :param stage: :param timepoints: :return: """ @@ -203,8 +208,9 @@ def get_hydro_curtailment_results(c, scenario_id, load_zone, timepoints): FROM results_project_curtailment_hydro WHERE scenario_id = {} AND load_zone = '{}' + AND stage_id = {} AND timepoint IN ({});""".format( - scenario_id, load_zone, ",".join(["?"] * len(timepoints)) + scenario_id, load_zone, stage, ",".join(["?"] * len(timepoints)) ) curtailment = [i[0] for i in c.execute(query, timepoints).fetchall()] @@ -212,12 +218,13 @@ def get_hydro_curtailment_results(c, scenario_id, load_zone, timepoints): return curtailment -def get_imports_exports_results(c, scenario_id, load_zone, timepoints): +def get_imports_exports_results(c, scenario_id, load_zone, stage, timepoints): """ Get imports/exports results for a given load_zone and set of timepoints. :param c: :param scenario_id: :param load_zone: + :param stage: :param timepoints: :return: """ @@ -225,9 +232,10 @@ def get_imports_exports_results(c, scenario_id, load_zone, timepoints): FROM results_transmission_imports_exports WHERE scenario_id = {} AND load_zone = '{}' + AND stage_id = {} AND timepoint IN ({}) ;""".format( - scenario_id, load_zone, ",".join(["?"] * len(timepoints)) + scenario_id, load_zone, stage, ",".join(["?"] * len(timepoints)) ) net_imports = c.execute(query, timepoints).fetchall() @@ -238,12 +246,52 @@ def get_imports_exports_results(c, scenario_id, load_zone, timepoints): return imports, exports -def get_load(c, scenario_id, load_zone, timepoints): +def get_market_participation_results(c, scenario_id, load_zone, stage, timepoints): + """ + Get market participation results for a given load_zone and set of timepoints. + :param c: + :param scenario_id: + :param load_zone: + :param stage: + :param timepoints: + :return: + """ + query = """SELECT sum(final_net_buy_power) as buy_power + FROM results_system_market_participation + WHERE scenario_id = {} + AND load_zone = '{}' + AND stage_id = {} + AND timepoint IN ({}) + GROUP BY load_zone, stage_id, timepoint + ;""".format( + scenario_id, load_zone, stage, ",".join(["?"] * len(timepoints)) + ) + + market_participation = c.execute(query, timepoints).fetchall() + + sales = [] + purchases = [] + for i in market_participation: + if i[0] < 0: + sales.append(-i[0]) + purchases.append(0) + elif i[0] > 0: + sales.append(0) + purchases.append(i[0]) + else: + sales.append(0) + purchases.append(0) + + return sales, purchases + + +def get_load(c, scenario_id, load_zone, stage, timepoints): """ :param c: :param scenario_id: :param load_zone: + :param stage: :param timepoints :return: """ @@ -252,8 +300,9 @@ def get_load(c, scenario_id, load_zone, timepoints): FROM results_system_load_balance WHERE scenario_id = {} AND load_zone = '{}' + AND stage_id = {} AND timepoint IN ({});""".format( - scenario_id, load_zone, ",".join(["?"] * len(timepoints)) + scenario_id, load_zone, stage, ",".join(["?"] * len(timepoints)) ) load_balance = c.execute(query, timepoints).fetchall() @@ -279,6 +328,7 @@ def get_plotting_data( :param load_zone: :param starting_tmp: :param ending_tmp: + :param stage: :return: """ @@ -291,7 +341,11 @@ def get_plotting_data( # TODO: Let tech order depend on specified order in database table. # Storage might be tricky because we manipulate it! df = get_power_by_tech_results( - conn=conn, scenario_id=scenario_id, load_zone=load_zone, timepoints=timepoints + conn=conn, + scenario_id=scenario_id, + load_zone=load_zone, + stage=stage, + timepoints=timepoints, ) # Add x axis @@ -308,30 +362,59 @@ def get_plotting_data( # Add variable curtailment (if any) curtailment_variable = get_variable_curtailment_results( - c=c, scenario_id=scenario_id, load_zone=load_zone, timepoints=timepoints + c=c, + scenario_id=scenario_id, + load_zone=load_zone, + stage=stage, + timepoints=timepoints, ) if curtailment_variable: df["Curtailment_Variable"] = curtailment_variable # Add hydro curtailment (if any) curtailment_hydro = get_hydro_curtailment_results( - c=c, scenario_id=scenario_id, load_zone=load_zone, timepoints=timepoints + c=c, + scenario_id=scenario_id, + load_zone=load_zone, + stage=stage, + timepoints=timepoints, ) if curtailment_hydro: df["Curtailment_Hydro"] = curtailment_hydro # Add imports and exports (if any) imports, exports = get_imports_exports_results( - c=c, scenario_id=scenario_id, load_zone=load_zone, timepoints=timepoints + c=c, + scenario_id=scenario_id, + load_zone=load_zone, + stage=stage, + timepoints=timepoints, ) if imports: df["Imports"] = imports if exports: df["Exports"] = exports + # Add market participation (if any) + market_sales, market_purchases = get_market_participation_results( + c=c, + scenario_id=scenario_id, + load_zone=load_zone, + stage=stage, + timepoints=timepoints, + ) + if market_sales: + df["Market_Sales"] = market_sales + if market_purchases: + df["Market_Purchases"] = market_purchases + # Add load load_balance = get_load( - c=c, scenario_id=scenario_id, load_zone=load_zone, timepoints=timepoints + c=c, + scenario_id=scenario_id, + load_zone=load_zone, + stage=stage, + timepoints=timepoints, ) df["Load"] = load_balance[0] df["Unserved_Energy"] = load_balance[1] @@ -399,8 +482,15 @@ def create_plot( all_cols = list(df.columns) x_col = "x" # TODO: remove hard-coding? - line_cols = ["Load", "Exports", "Storage_Charging"] - stacked_cols = [c for c in all_cols if c not in line_cols + [x_col]] + line_cols_storage_sum_track = [ + "Load", + "Exports", + "Storage_Charging", + "Market_Sales", + ] + stacked_cols = [ + c for c in all_cols if c not in line_cols_storage_sum_track + [x_col] + ] # Set up color scheme. Use cividis palette for unspecified colors unspecified_columns = [c for c in stacked_cols if c not in tech_colors.keys()] @@ -437,7 +527,7 @@ def create_plot( # Add load line chart to plot load_renderer = plot.line( - x=df[x_col], y=df[line_cols[0]], line_color="black", line_width=2, name="Load" + x=df[x_col], y=df["Load"], line_color="black", line_width=2, name="Load" ) # Keep track of legend items and load renderers @@ -447,20 +537,60 @@ def create_plot( load_renderers = [load_renderer] # Add 'Load + ...' lines - if line_cols[1] not in df.columns: + if "Exports" not in df.columns: inactive_exports = True else: - inactive_exports = (df[line_cols[1]] == 0).all() - inactive_storage = (df[line_cols[2]] == 0).all() + inactive_exports = (df["Exports"] == 0).all() - if inactive_exports: - line_cols = [line_cols[0], line_cols[2]] + if "Market_Sales" not in df.columns: + inactive_markets = True else: + inactive_markets = (df["Market_Sales"] == 0).all() + + inactive_storage = (df["Storage_Charging"] == 0).all() + + if inactive_exports and inactive_markets: + line_cols_storage_sum_track = ["Load", "Storage_Charging"] + if not inactive_exports and inactive_markets: + line_cols_storage_sum_track = ["Load", "Exports", "Storage_Charging"] # Add export line to plot label = "Load + Exports" exports_renderer = plot.line( x=df[x_col], - y=df[line_cols[0:2]].sum(axis=1), + y=df[["Load", "Exports"]].sum(axis=1), + line_color="black", + line_width=2, + line_dash="dashed", + name=label, + ) + legend_items.append((label, [exports_renderer])) + load_renderers.append(exports_renderer) + if not inactive_exports and not inactive_markets: + line_cols_storage_sum_track = [ + "Load", + "Exports", + "Market_Sales", + "Storage_Charging", + ] + # Add export and market lines to plot + label = "Load + Exports + Market Sales" + exports_renderer = plot.line( + x=df[x_col], + y=df[["Load", "Exports", "Market_Sales"]].sum(axis=1), + line_color="black", + line_width=3, + line_dash="dashed", + name=label, + ) + legend_items.append((label, [exports_renderer])) + load_renderers.append(exports_renderer) + if inactive_exports and not inactive_markets: + line_cols_storage_sum_track = ["Load", "Storage_Charging", "Market_Sales"] + # Add export line to plot + label = "Load + Market Sales" + exports_renderer = plot.line( + x=df[x_col], + y=df[["Load", "Market_Sales"]].sum(axis=1), line_color="black", line_width=2, line_dash="dashed", @@ -474,7 +604,7 @@ def create_plot( label = legend_items[-1][0] + " + Storage Charging" stor_renderer = plot.line( x=df[x_col], - y=df[line_cols].sum(axis=1), + y=df[line_cols_storage_sum_track].sum(axis=1), line_color="black", line_width=2, line_dash="dotted",